vb_book/app/Views/received_payments_report.php
2025-03-07 16:02:22 +05:30

270 lines
9.9 KiB
PHP

<style>
.payment-button {
background-color: #f9f9f9;
color: #333;
border: 1px solid #ddd;
border-radius: 5px;
padding: 8px;
font-size: 0.9rem;
cursor: pointer;
text-align: center;
line-height: 1.3;
width: 100%;
height: 100%;
box-shadow: none;
}
.payment-button:hover {
background-color: #f0f0f0;
}
.card-summary {
flex: 0 1 auto;
text-align: center;
border: none;
background-color: transparent;
width: 170px;
height: 70px;
padding-left: 20px;
}
.nav {
display: flex;
flex-wrap: wrap;
gap: 10px;
list-style: none;
padding: 5px;
margin-bottom: 10px;
}
</style>
<!-- start page title -->
<div class="row d-flex align-items-center">
<!-- Title Section -->
<div class="col-md-4">
<div class="page-title-box page-title-box-alt">
<h4 class="page-title"><?= $page_name ?></h4>
</div>
</div>
<!-- Form Section -->
<div class="col-md-5 offset-md-3">
<form action="<?php echo base_url('received_payments_report'); ?>" method="post">
<div class="form-group">
<div class="row">
<div class="col-md-7">
<input class="form-control input-daterange-datepicker" type="text" name="date" value="<?php echo $selected_data; ?>" />
</div>
<div class="col-md-5">
<button type="submit" class="btn btn-primary">Generate Report</button>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="row">
<div>
<ul class="nav">
<?php
// Initialize an empty array to combine amounts
$combinedPayments = [];
foreach ($payment_data['result2'] as $key => $amount) {
if ($key != '' && $key != null) {
// Simplify and group payment method names
$key = strtoupper($key);
if (stripos($key, 'PAYTM') !== false) {
$key = 'PAYTM';
} elseif (stripos($key, 'BANKTRANSFER') !== false) {
$key = 'BANK TRANSFER';
} elseif (stripos($key, 'CASH ON DELIVERY') !== false) {
$key = 'COD';
}
// Combine amounts for the same payment method
if (!isset($combinedPayments[$key])) {
$combinedPayments[$key] = 0;
}
$combinedPayments[$key] += $amount;
}
}
// Display the combined results
foreach ($combinedPayments as $paymentMethod => $totalAmount) { ?>
<li>
<div class="card-summary">
<button id='payment_method_button' class="payment-button" style="font-weight: 401;">
<?= $paymentMethod ?> <br> ₹<?= $totalAmount ?>
</button>
</div>
</li>
<?php } ?>
</ul>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="table-responsive">
<table id="datatable-buttons" class="table table-striped nowrap w-100">
<thead>
<tr>
<th>Invoice ID</th>
<th>Invoice Date</th>
<th>Customer Name</th>
<th>Payment Method</th>
<th>Payment Status</th>
<th style="text-align: center;">Total Amount</th>
</tr>
</thead>
<tbody>
<?php $total = 0; ?>
<?php foreach ($payment_data['result1'] as $row) { ?>
<tr>
<td style="text-align: left;"><?php echo $row["invoice_number"]; ?></td>
<?php $unixTime = strtotime($row['invoice_date']);
$invoice_date = date("d/m/Y", $unixTime);?>
<td><?= $invoice_date ?></td>
<td style="text-align: left;"><?= $row['first_name'] ?></td>
<td style="text-align: left;"><?= strtoupper($row['payment_method'])?></td>
<td style="text-align: center;"><?= $row['payment_status'] ?></td>
<td style="text-align:right;padding-right: 67px;"><?= $row['total_amount'] ?></td>
<?php
$total += $row['total_amount'];
?>
</tr>
<?php } ?>
</tbody>
<tfoot>
<tr>
<td colspan="5" style="text-align: right; font-weight: bold;">Total Amount</td>
<td class="total-row" style="text-align: right;"></td>
</tr>
</tfoot>
</table>
</div>
</div> <!-- end card body-->
</div> <!-- end card -->
</div><!-- end col-->
</div>
<!-- end row-->
<script>
$(document).ready(function () {
var table = $('#datatable-buttons').DataTable({
"order": [[0, 'desc']],
dom: '<"row mb-3"<"col-md-6 d-flex align-items-center"B><"col-md-6 d-flex justify-content-end"f>>rtip',
buttons: [
{
extend: 'print',
title: '<?= $page_name . " " . $selected_data ?>',
text: 'Print',
customize: function (win) {
var total = calculateTotal();
$(win.document.body)
.append(`<div style="text-align: right; font-weight: bold; margin-top: 20px;">Total Amount: ${total}</div>`);
}
},
{
extend: 'csv',
text: 'CSV',
title: '<?= $page_name . " " . $selected_data ?>',
customize: function (csv) {
var total = calculateTotal();
var csvRows = csv.split("\n");
var columnCount = csvRows[0].split(",").length;
var emptyCells = Array(columnCount - 2).fill("").join(",");
var totalRow = `${emptyCells},Total,${total}`;
csvRows.push(totalRow);
return csvRows.join("\n");
}
}
]
});
// Function to calculate the total of the filtered rows
function updateTotal() {
var total = table.rows({ filter: 'applied' }).data().pluck(5).reduce(function (a, b) {
return a + parseFloat(b) || 0;
}, 0);
$('#datatable-buttons tfoot .total-row').html(total.toFixed(2));
}
// Function to calculate the total for print/CSV export
function calculateTotal() {
var total = table.rows({ filter: 'applied' }).data().pluck(5).reduce(function (a, b) {
return a + parseFloat(b) || 0;
}, 0);
return total.toFixed(2);
}
$(document).on('click', '.payment-button', function () {
var paymentMethod = $(this).contents().first().text().trim().toUpperCase().split(" ").join("");
if (!paymentMethod) {
return;
}
if(paymentMethod === 'COD'){
paymentMethod = 'Cash on delivery';
}
table.column(3)
.search('^' + paymentMethod + '$', true, false)
.draw();
updateTotal();
});
updateTotal();
});
</script>
<script>
$(document).ready(function() {
var $select_data = '<?php echo $selected_data; ?>';
var dateRangeFilter = $('input.input-daterange-datepicker')
.daterangepicker({
locale: {
format: 'DD/MM/YYYY',
cancelLabel: 'Clear'
},
startDate: $select_data ? moment($select_data.split(' - ')[0], 'DD/MM/YYYY') : moment(),
endDate: $select_data ? moment($select_data.split(' - ')[1], 'DD/MM/YYYY') : moment(),
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'This Month': [moment().startOf('month'), moment().endOf('month')]
}
})
.on('apply.daterangepicker', function(ev, picker) {
var formattedStartDate = picker.startDate.format('DD/MM/YYYY');
var formattedEndDate = picker.endDate.format('DD/MM/YYYY');
var selectedDateRange = formattedStartDate + ' - ' + formattedEndDate;
$(this).val(selectedDateRange);
})
.on('cancel.daterangepicker', function() {
$(this).val('');
});
$('.today-btn').on('click', function() {
var today = moment();
dateRangeFilter.data('daterangepicker').setStartDate(today);
dateRangeFilter.data('daterangepicker').setEndDate(today);
dateRangeFilter.val(today.format('DD/MM/YYYY') + ' - ' + today.format('DD/MM/YYYY'));
dateRangeFilter.trigger('apply.daterangepicker');
});
if ($select_data === '') {
$('.today-btn').trigger('click');
}
});
</script>