299 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			299 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <!-- DataTables -->
 | ||
| <link rel="stylesheet"
 | ||
| 	  href="<?php echo base_url('bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css') ?>">
 | ||
| <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css"/>
 | ||
| <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.2/css/buttons.dataTables.min.css">
 | ||
| <link rel="stylesheet" href="<?php echo base_url('bower_components/toastr/toastr.css') ?>">
 | ||
| <div class="content-wrapper">
 | ||
| 	<?php
 | ||
| 
 | ||
| 	use Brick\Money\Context\AutoContext;
 | ||
| 	use Brick\Money\CurrencyConverter;
 | ||
| 	use Brick\Money\ExchangeRateProvider\BaseCurrencyProvider;
 | ||
| 	use Brick\Money\ExchangeRateProvider\PDOProvider;
 | ||
| 	use Brick\Money\ExchangeRateProvider\PDOProviderConfiguration;
 | ||
| 	use Brick\Money\Money;
 | ||
| 
 | ||
| 	?>
 | ||
| 	<!-- Content Header (Page header) -->
 | ||
| 	<section class="content-header">
 | ||
| 
 | ||
| 		<h1>
 | ||
| 			<?php echo isset($category) ? 'Nano credit' : $this->lang->line('nano_credit_management');
 | ||
| 			echo ' ' . $network . ' - ' . $country
 | ||
| 					. ' :: ' . $this->lang->line('savings_history'); ?>
 | ||
| 			<!--			<input type="button" class="btn btn-primary pull-right" id="Bactiver"-->
 | ||
| 			<!--				   value="Activer/Désactiver le(s) réseau(x)" />-->
 | ||
| 		</h1>
 | ||
| 		<?php
 | ||
| 		
 | ||
| 
 | ||
| 		if ($alert == "ok") {
 | ||
| 
 | ||
| 			if (!$success == "ok") {
 | ||
| 				?>
 | ||
| 				<div class='alert alert-danger alert-dismissible col-xs-6'>
 | ||
| 					<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>
 | ||
| 					<h4><i class='icon fa fa-ban'></i> Erreur!</h4>
 | ||
| 					<?php echo $message; ?>
 | ||
| 				</div>
 | ||
| 
 | ||
| 				<?php
 | ||
| 			} else {
 | ||
| 				?>
 | ||
| 				<div class="alert alert-success alert-dismissible col-xs-6">
 | ||
| 					<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
 | ||
| 					<h4><i class="icon fa fa-check"></i> Success!</h4>
 | ||
| 					<?php echo $message; ?>
 | ||
| 				</div>
 | ||
| 
 | ||
| 				<?php
 | ||
| 			}
 | ||
| 		}
 | ||
| 		// set to whatever your rates are relative to
 | ||
| 		$baseCurrency = 'USD';
 | ||
| 
 | ||
| 		// use your own credentials, or re-use your existing PDO connection
 | ||
| 		$pdo = new PDO('mysql:host=' . $this->db->hostname . ';dbname=' . $this->db->database, $this->db->username, $this->db->password);
 | ||
| 
 | ||
| 		$configuration = new PDOProviderConfiguration();
 | ||
| 
 | ||
| 		$configuration->tableName = 'exchange_rate';
 | ||
| 		$configuration->exchangeRateColumnName = 'exchange_rate';
 | ||
| 		$configuration->targetCurrencyColumnName = 'target_currency';
 | ||
| 		$configuration->sourceCurrencyCode = $baseCurrency;
 | ||
| 
 | ||
| 		// this provider loads exchange rates from your database
 | ||
| 		$provider = new PDOProvider($pdo, $configuration);
 | ||
| 
 | ||
| 		// this provider calculates exchange rates relative to the base currency
 | ||
| 		$provider = new BaseCurrencyProvider($provider, $baseCurrency);
 | ||
| 
 | ||
| 		// this currency converter can now handle any currency pair
 | ||
| 		$converter = new CurrencyConverter($provider);
 | ||
| 		$context = new AutoContext();
 | ||
| 		?>
 | ||
| 	</section>
 | ||
| 	<section class="content">
 | ||
| 		<div class="row">
 | ||
| 			<div class="col-md-4 col-sm-6 col-xs-12">
 | ||
| 				<div class="info-box">
 | ||
| 					<span class="info-box-icon bg-aqua"><i class="ion ion-android-time"></i></span>
 | ||
| 					<div class="info-box-content">
 | ||
| 						<span class="info-box-text"><?php echo $this->lang->line('Période') ?> </span>
 | ||
| 						<span class="info-box-number">
 | ||
|                                     <input id="picker"
 | ||
| 										   style="background: #fff; cursor: pointer; padding: 1px 1px; border: 1px solid #ccc; width: 100%"
 | ||
| 										   data-category="<?php echo isset($category) ? $category : null ?>"
 | ||
| 										   type="text" name="daterange"
 | ||
| 										   data-lang="<?php echo $this->session->userdata('site_lang') ?>"
 | ||
| 										   value="<?php echo ($startDate != null & $endDate != null) ? $startDate . ' - ' . $endDate : '' ?>"/>
 | ||
| 
 | ||
| 						</span>
 | ||
| 						<span> Format : <?php echo $this->session->userdata('site_lang') === 'french' ? 'Jour - Mois - Année ' : 'Year - Month - Day' ?> </span>
 | ||
| 					</div>
 | ||
| 				</div>
 | ||
| 			</div>
 | ||
| 
 | ||
| 		</div>
 | ||
| 		<div class="row">
 | ||
| 			<div class="col-xs-12">
 | ||
| 				<div class="box">
 | ||
| 					<div class="box-header">
 | ||
| 						<h3 class="box-title"><?php echo $this->lang->line('export_savings_demands_history') ?></h3>
 | ||
| 					</div>
 | ||
| 					<div class="box-body" style="overflow-x:auto;">
 | ||
| 						<?php
 | ||
| 						if ($transactions){
 | ||
| 						$numrows = $transactions->num_rows();
 | ||
| 						$num = 0;
 | ||
| 						if ($numrows > 0) {
 | ||
| 						$fmt = new NumberFormatter('fr_FR', NumberFormatter::DECIMAL);
 | ||
| 						?>
 | ||
| 
 | ||
| 						<table id="transactions" class="table table-bordered table-striped">
 | ||
| 							<thead>
 | ||
| 							<tr>
 | ||
| 								<th align='center'>ID</th>
 | ||
| 								<th align='center'><?php echo $this->lang->line('state') ?></th>
 | ||
| 								<th align='center'><?php echo $this->lang->line('duration') ?></th>
 | ||
| 								<th><?php echo $this->lang->line('Montant') ?></th>
 | ||
| 								<th><?php echo $this->lang->line('interest') ?></th>
 | ||
| 								<th><?php echo $this->lang->line('tax') ?></th>
 | ||
| 								<th><?php echo $this->lang->line('issuer_id') ?></th>
 | ||
| 								<th><?php echo $this->lang->line('created_date') ?></th>
 | ||
| 								<th><?php echo $this->lang->line('cassation_date') ?></th>
 | ||
| 								<th align='center'><?php echo $this->lang->line('end_date') ?></th>
 | ||
| 							</tr>
 | ||
| 							</thead>
 | ||
| 							<tbody>
 | ||
| 
 | ||
| 							<?php
 | ||
| 
 | ||
| 							foreach ($transactions->result() as $row) {
 | ||
| 								$num++;
 | ||
| 								if ($row->user_phone) {
 | ||
| 									$emetteur = $row->user_phone . ' | ' . $row->user;
 | ||
| 								} else {
 | ||
| 									$emetteur = ($row->nom_emetteur ? $row->nom_emetteur : '') . (' ' . $row->prenom_emetteur ? $row->prenom_emetteur : '');
 | ||
| 								}
 | ||
| 								$moneyNet = Money::of(round($row->montant, 2), $currency_code, $context);
 | ||
| 								echo "<tr>
 | ||
| 											<td align='center' >$row->id_epargne</td>
 | ||
| 											<td>" . $this->lang->line($row->etat) . "</td>
 | ||
| 											<td>" . mb_strtoupper($row->duree_mois,'UTF-8') . "</td>
 | ||
| 											<td>" . $moneyNet->formatTo('fr_FR') . "</td>
 | ||
| 											<td>" . Money::of(round($row->interet, 2), $currency_code, $context)->formatTo('fr_FR') . "</td>
 | ||
| 											<td>" . Money::of(round($row->taxe, 2), $currency_code, $context)->formatTo('fr_FR') . "</td>
 | ||
| 											<td>" . $emetteur. "</td>
 | ||
| 											<td>" . $row->date_creation . "</td>
 | ||
| 											<td>" . $row->date_cassation . "</td>
 | ||
| 											<td>" . $row->date_fin . "</td>";
 | ||
| 								?>
 | ||
| 								</tr>
 | ||
| 
 | ||
| 								<?php
 | ||
| 							}
 | ||
| 							?>
 | ||
| 							</tbody>
 | ||
| 
 | ||
| 							<?php
 | ||
| 							} else {
 | ||
| 								echo $this->lang->line('Aucune demande');
 | ||
| 							}
 | ||
| 							} else {
 | ||
| 								echo $this->lang->line('Aucune demande');
 | ||
| 							}
 | ||
| 							?>
 | ||
| 
 | ||
| 						</table>
 | ||
| 
 | ||
| 					</div>
 | ||
| 				</div>
 | ||
| 			</div>
 | ||
| 		</div>
 | ||
| 	</section>
 | ||
| 
 | ||
| 
 | ||
| </div>
 | ||
| <!-- jQuery 3 -->
 | ||
| <script src="<?php echo base_url('bower_components/jquery/dist/jquery.min.js') ?>"></script>
 | ||
| <!-- Bootstrap 3.3.7 -->
 | ||
| <script src="<?php echo base_url('bower_components/bootstrap/dist/js/bootstrap.min.js') ?>"></script>
 | ||
| <!-- DataTables -->
 | ||
| <script src="<?php echo base_url('bower_components/datatables.net/js/jquery.dataTables.min.js') ?>"></script>
 | ||
| <script src="<?php echo base_url('bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js') ?>"></script>
 | ||
| <!-- SlimScroll -->
 | ||
| <script src="<?php echo base_url('bower_components/jquery-slimscroll/jquery.slimscroll.min.js') ?>"></script>
 | ||
| <!-- FastClick -->
 | ||
| <script src="<?php echo base_url('bower_components/fastclick/lib/fastclick.js') ?>"></script>
 | ||
| <!-- AdminLTE App -->
 | ||
| <script src="<?php echo base_url('dist/js/adminlte.min.js') ?>"></script>
 | ||
| <!-- AdminLTE for demo purposes -->
 | ||
| <script src="<?php echo base_url('dist/js/demo.js') ?>"></script>
 | ||
| 
 | ||
| <script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment-with-locales.min.js"></script>
 | ||
| <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
 | ||
| <script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.10.19/sorting/datetime-moment.js"></script>
 | ||
| <script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.10.20/dataRender/datetime.js"></script>
 | ||
| <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.2/js/dataTables.buttons.min.js"></script>
 | ||
| <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
 | ||
| <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
 | ||
| <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
 | ||
| <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.html5.min.js"></script>
 | ||
| <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.print.min.js"></script>
 | ||
| <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.colVis.min.js"></script>
 | ||
| <script src="<?php echo base_url('dist/js/sweetalert2.js') ?>"></script>
 | ||
| <script src="<?php echo base_url('bower_components/toastr/toastr.js') ?>"></script>
 | ||
| 
 | ||
| 
 | ||
| <script>
 | ||
| 	$(function () {
 | ||
| 		const lang = $('#picker').data('lang');
 | ||
| 		const format = lang === 'french' ? 'fr' : 'en';
 | ||
| 		moment.updateLocale(moment.locale(format), {invalidDate: ""}); // Blank text when is invalid date
 | ||
| 		var table = $('#transactions').DataTable({
 | ||
| 			"aaSorting": [[7, "desc"]],
 | ||
| 			"columnDefs": [{
 | ||
| 				targets: [7,8,9],
 | ||
| 				render: $.fn.dataTable.render.moment('YYYY-MM-DD HH:mm:ss', 'D MMMM YYYY HH:mm:ss', format)
 | ||
| 			}],
 | ||
| 			dom: 'Bfrtip',
 | ||
| 			"buttons": [
 | ||
| 				'pageLength',
 | ||
| 				{
 | ||
| 					extend: 'excelHtml5',
 | ||
| 					title: "<?= $this->lang->line('savings_history') ?>",
 | ||
| 					customizeData: function (data) {
 | ||
| 						for (var i = 0; i < data.body.length; i++) {
 | ||
| 							for (var j = 0; j < data.body[i].length; j++) {
 | ||
| 								// data.body[i][j] = '\u200C' + data.body[i][j];
 | ||
| 								if ([3,4, 5,].includes(j)) {
 | ||
| 									// Get the value and strip the non numeric characters
 | ||
| 									// var value = $(this).text();
 | ||
| 									value = data.body[i][j].replace(',', ".")
 | ||
| 									data.body[i][j] = Number(value.replace(/[^0-9\.-]+/g, ""));
 | ||
| 								}
 | ||
| 							}
 | ||
| 						}
 | ||
| 					},
 | ||
| 					trim: false
 | ||
| 				},
 | ||
| 				{
 | ||
| 					extend: 'csvHtml5',
 | ||
| 					title: "<?= $this->lang->line('savings_history') ?>",
 | ||
| 					trim: false
 | ||
| 				},
 | ||
| 				{
 | ||
| 					extend: 'pdfHtml5',
 | ||
| 					orientation: 'landscape',
 | ||
| 					pageSize: 'LEGAL',
 | ||
| 					title: "<?= $this->lang->line('savings_history') ?>",
 | ||
| 					trim: false
 | ||
| 				},
 | ||
| 				// 'colvis'
 | ||
| 			]
 | ||
| 		});
 | ||
| 
 | ||
| 		table.buttons().container()
 | ||
| 				.appendTo('#example_wrapper .col-sm-6:eq(0)');
 | ||
| 	});
 | ||
| </script>
 | ||
| 
 | ||
| <script type="text/javascript">
 | ||
| 	var startDate;
 | ||
| 	var endDate;
 | ||
| 
 | ||
| 	$(function () {
 | ||
| 		const lang = $('#picker').data('lang');
 | ||
| 		const category = $('#picker').data('category');
 | ||
| 		const id_network = "<?= $id_network?>";
 | ||
| 		$('input[name="daterange"]').daterangepicker({
 | ||
| 			opens: 'left',
 | ||
| 			autoUpdateInput: false,
 | ||
| 			locale: {
 | ||
| 				format: lang === 'french' ? 'DD-MM-YYYY' : 'YYYY-MM-DD',
 | ||
| 				cancelLabel: 'Clear'
 | ||
| 			}
 | ||
| 		}, function (start, end, label) {
 | ||
| 			const debut = start.format('YYYY-MM-DD');
 | ||
| 			const fin = end.format('YYYY-MM-DD');
 | ||
| 			if (category)
 | ||
| 				window.location = "<?php echo current_url()?>" + "?history=savings" + "&d=" + debut + "&f=" + fin;
 | ||
| 			else
 | ||
| 				window.location = "<?php echo current_url()?>" + "?id="+id_network+"&history=savings" + "&d=" + debut + "&f=" + fin;
 | ||
| 
 | ||
| 		});
 | ||
| 
 | ||
| 		$('input[name="daterange"]').on('cancel.daterangepicker', function (ev, picker) {
 | ||
| 			//do something, like clearing an input
 | ||
| 			$('#daterange').val('');
 | ||
| 			if (category)
 | ||
| 				window.location = "<?php echo current_url()?>" + "?history=savings";
 | ||
| 			else
 | ||
| 				window.location = "<?php echo current_url()?>" + "?id="+id_network+"&history=savings";
 | ||
| 		});
 | ||
| 	});
 | ||
| 
 | ||
| </script>
 |