Perbaikan Menu Laporan per pintu pos

This commit is contained in:
pand03
2026-04-17 11:17:53 +07:00
parent c73adb3c6b
commit 6b3a2ca72e
5 changed files with 336 additions and 16 deletions

View File

@@ -56,6 +56,7 @@
<div class="card">
<div class="card-header">
<h4 class="card-title laporan">Laporan Per Pintu ({{ $locationSettings->namalokasi }})</h4>
<div id="user-profile" data-user-id="{{ auth()->user()->nama }}"></div>
<form id="fromByGate">
@csrf
<div class="form-group">
@@ -214,7 +215,12 @@
<script>
$(document).ready(function () {
let location = @json(collect($locationSettings ?? [])->except('logo'));
let user = $('#user-profile').data('user-id');
console.log(user);
let tanggal = '';
let pdfData = [];
const title = $('.laporan').val();
$('.select2').select2({
theme: 'bootstrap-5',
@@ -227,6 +233,15 @@
$('#tanggalMulai').val(new Date().toISOString().split('T')[0]);
$('#tanggalSelesai').val(new Date().toISOString().split('T')[0]);
let startDate = $('#tanggalMulai').val();
let endDate = $('#tanggalSelesai').val();
if ( startDate !== endDate ) {
tanggal = startDate + ' s/d ' + endDate;
} else {
tanggal = endDate;
}
$('#btnProses').on('click', function () {
let formData = $('#fromByGate').serialize();
@@ -567,7 +582,10 @@ function formatRupiah(angka) {
};
}
let operator = item.petugas;
// let operator = item.petugas;
let operator = (item.petugas && item.petugas.trim() !== null)
? item.petugas
: 'NO-OP';
if (!grouped[gate].operators[operator]) {
grouped[gate].operators[operator] = {
@@ -578,16 +596,16 @@ function formatRupiah(angka) {
// 🔥 HITUNG TOTAL
if (item.status_transaksi == 0) {
casualJml++;
casualJml += parseFloat(item.jumlah_transaksi || 0);
casualIncome += parseFloat(item.income_transaksi || 0);
}
if (item.status_transaksi == 3) {
memberJml++;
memberJml += parseFloat(item.jumlah_transaksi || 0);
memberIncome += parseFloat(item.income_transaksi || 0);
}
totalTrans++;
totalTrans += parseFloat(item.jumlah_transaksi || 0);
totalIncome += parseFloat(item.income_transaksi || 0);
let kendaraan = item.kendaraan;
@@ -756,7 +774,10 @@ function kendaraanLabel(kode) {
};
}
let operator = item.petugas;
// let operator = item.petugas || 'NO-OP';
let operator = (item.petugas && item.petugas.trim() !== '')
? item.petugas
: 'NO-OP';
if (!grouped[gate].operators[operator]) {
grouped[gate].operators[operator] = {
@@ -847,7 +868,6 @@ function kendaraanLabel(kode) {
$('.btn-export-pdf').on('click', function () {
const title = $('.laporan').val();
const { jsPDF } = window.jspdf;
const doc = new jsPDF({
@@ -865,16 +885,16 @@ function kendaraanLabel(kode) {
pdfData.forEach(row => {
totalTrans++;
totalTrans += parseFloat(row.jumlah_transaksi || 0);
totalIncome += parseFloat(row.income_transaksi || 0);
if (row.status_transaksi == 0) {
jmlCasual++;
jmlCasual += parseFloat(row.jumlah_transaksi || 0);
incomeCasual += parseFloat(row.income_transaksi || 0);
}
if (row.status_transaksi == 3) {
jmlMember++;
jmlMember += parseFloat(row.jumlah_transaksi || 0);
incomeMember += parseFloat(row.income_transaksi || 0);
}
@@ -894,7 +914,7 @@ function kendaraanLabel(kode) {
pdfData.forEach(row => {
let gate = row.gate || '-';
let operator = row.petugas || '-';
let operator = row.petugas || 'NO-OP';
if (!grouped[gate]) grouped[gate] = {};
if (!grouped[gate][operator]) grouped[gate][operator] = [];
@@ -924,7 +944,8 @@ function kendaraanLabel(kode) {
operatorFirst ? operator : '',
row.kendaraan ?? '-',
row.status_transaksi == 0 ? 'Casual' : 'Member',
'', // ❌ jumlah dihapus biar ga ngulang
// '', // ❌ jumlah dihapus biar ga ngulang
row.jumlah_transaksi ?? 0,
formatRupiah(row.income_transaksi ?? 0),
]);
@@ -995,14 +1016,18 @@ function kendaraanLabel(kode) {
doc.setFont('helvetica', 'bold');
doc.setFontSize(14);
doc.text(String(title || 'LAPORAN'), pageWidth / 2, 15, { align: 'center' });
doc.text(String('LAPORAN TRANSAKSI PER PINTU'), pageWidth / 2, 15, { align: 'center' });
doc.setFontSize(12);
doc.setFont('helvetica', 'normal');
doc.text(String(tanggal || '-'), pageWidth / 2, 20, { align: 'center' });
doc.setFontSize(10);
doc.setFont('helvetica', 'normal');
doc.text(String(location?.namaperusahaan || '-'), pageWidth / 2, 22, { align: 'center' });
doc.text(String(location?.namaperusahaan || '-'), pageWidth / 2, 25, { align: 'center' });
doc.setFontSize(9);
doc.text(`Periode : `, marginLeft, 32);
doc.text(`Lokasi : ` + location?.namalokasi, marginLeft, 32);
doc.line(marginLeft, 40, pageWidth - marginRight, 40);
}
@@ -1049,6 +1074,9 @@ function kendaraanLabel(kode) {
}
doc.setFontSize(9);
doc.text(`Dicetak oleh : ${user}`, marginLeft, finalY);
doc.text(`Tanggal cetak : ${new Date().toISOString().split('T')[0]}`, marginLeft, finalY + 6);
doc.text(`Casual : ${jmlCasual} (${formatRupiah(incomeCasual)})`, pageWidth - marginRight, finalY + 12, { align: 'right' });
doc.text(`Member : ${jmlMember} (${formatRupiah(incomeMember)})`, pageWidth - marginRight, finalY + 18, { align: 'right' });
@@ -1056,7 +1084,7 @@ function kendaraanLabel(kode) {
doc.text(`Total Pendapatan : ${formatRupiah(totalIncome)}`, pageWidth - marginRight, finalY + 6, { align: 'right' });
doc.save(`${title}.pdf`);
doc.save(`Laporan_per_pintu.pdf`);
});
// function renderGateData(data) {