nhance/app/Views/bds_report_bap_wise_data.php

131 lines
4.7 KiB
PHP

<style>
.table th,
.table td {
padding: 8px;
}
table.dataTable tbody td {
padding: 4px 4px !important;
}
.col-12 {
max-width: 98% !important;
}
.dataTables_filter {
position: absolute;
}
.right-align-input {
text-align: right;
}
</style>
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row" style="padding-bottom: 10px;">
<div class="col-6" style="align-self: center;">
<h4 style="position: relative;">BAP Report List</h4>
</div>
</div>
<div class="table-responsive">
<table id="scroll-horizontal-datatable" class="table w-100 nowrap">
<thead class="bg-light">
<tr>
<th>Insurer</th>
<th>Policies</th>
<th>Premium</th>
<th>Revenue</th>
</tr>
</thead>
<tbody>
<?php foreach($bap_wise_data as $data): ?>
<tr>
<td><?= $data['bap'] ?></td>
<td><?= $data['Policies'] ?></td>
<td><?= $data['Premium'] ?></td>
<td><?= $data['Revenue']== 0.00 ? $data['Expected_amt'] : $data['Revenue']?></td>
</tr>
<?php endforeach ?>
</tbody>
<tfoot>
<tr>
<th>Grand Total</th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function() {
var ticketsTable = $('#scroll-horizontal-datatable');
if (ticketsTable.length) {
ticketsTable.DataTable({
scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
buttons: [
{
extend: 'csv',
text: 'CSV',
title: 'Bap-Wise-Report-List',
},
{
extend: 'excel',
text: 'Excel',
title: 'Bap-Wise-Report-List',
exportOptions: {
orthogonal: 'sort'
},
}
],
language: {
search: "_INPUT_",
searchPlaceholder: "Search..."
},
paging: true, // Enable pagination
pageLength: 10, // Set default number of rows per page (optional)
ordering: false,
footerCallback: function(row, data, start, end, display) {
var api = this.api();
// Helper function to parse numbers
var parseNumber = function(value) {
return typeof value === 'string' ?
parseFloat(value.replace(/[\$,]/g, '')) :
typeof value === 'number' ? value : 0;
};
// Calculate total for each column
var totalPolicies = api.column(1).data().reduce(function(a, b) {
return parseNumber(a) + parseNumber(b);
}, 0);
var totalPremium = api.column(2).data().reduce(function(a, b) {
return parseNumber(a) + parseNumber(b);
}, 0);
var totalRevenue = api.column(3).data().reduce(function(a, b) {
return parseNumber(a) + parseNumber(b);
}, 0);
// Update the footer with totals
$(api.column(1).footer()).html(totalPolicies.toLocaleString());
$(api.column(2).footer()).html("₹ " + totalPremium.toLocaleString(undefined, { minimumFractionDigits: 2 }));
$(api.column(3).footer()).html("₹ " + totalRevenue.toLocaleString(undefined, { minimumFractionDigits: 2 }));
}
});
} else {
console.error("Table not found.");
}
});
</script>