Finalize all-report
This commit is contained in:
-1
@@ -1 +0,0 @@
|
||||
1782973785i:1;
|
||||
-1
@@ -1 +0,0 @@
|
||||
1782973785i:1782973785;
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+375
-177
@@ -37,10 +37,38 @@ function printPDF(data) {
|
||||
|
||||
// ===== SUSUN BODY TABEL =====
|
||||
const vehicleBody = [];
|
||||
let totalTunaiJml = 0,
|
||||
totalTunaiNilai = 0;
|
||||
let totalNonTunaiJml = 0,
|
||||
totalNonTunaiNilai = 0;
|
||||
// init print nontunai
|
||||
let vehicleCashCasualJml = 0,
|
||||
vehicleCashCasualNilai = 0;
|
||||
let vehicleCashLostJml = 0,
|
||||
vehicleCashLostNilai = 0;
|
||||
let vehicleCashPassJml = 0,
|
||||
vehicleCashPassNilai = 0;
|
||||
let vehicleCashManualJml = 0,
|
||||
vehicleCashManualNilai = 0;
|
||||
let vehicleCashManualMixJml = 0,
|
||||
vehicleCashManualMixNilai = 0;
|
||||
let vehicleCashMasalahJml = 0,
|
||||
vehicleCashMasalahNilai = 0;
|
||||
|
||||
let vehicleCashTotal = 0;
|
||||
|
||||
// init print nontunai
|
||||
let vehicleCashlessCasualJml = 0,
|
||||
vehicleCashlessCasualNilai = 0;
|
||||
let vehicleCashlessLostJml = 0,
|
||||
vehicleCashlessLostNilai = 0;
|
||||
let vehicleCashlessPassJml = 0,
|
||||
vehicleCashlessPassNilai = 0;
|
||||
let vehicleCashlessManualJml = 0,
|
||||
vehicleCashlessManualNilai = 0;
|
||||
let vehicleCashlessManualMixJml = 0,
|
||||
vehicleCashlessManualMixNilai = 0;
|
||||
let vehicleCashlessMasalahJml = 0,
|
||||
vehicleCashlessMasalahNilai = 0;
|
||||
|
||||
let vehicleCashlessTotal = 0;
|
||||
|
||||
let grandTotal = 0;
|
||||
|
||||
data.vehicle.tunai.forEach(function (cash) {
|
||||
@@ -60,15 +88,18 @@ function printPDF(data) {
|
||||
const tLost = cash.keluar.lost;
|
||||
const tMember = cash.keluar.member;
|
||||
const tManual = cash.keluar.manual;
|
||||
const tManualMix = cash.keluar.manualmix ?? { jumlah: 0, income: 0 };
|
||||
const tMasalah = cash.keluar.masalah ?? { jumlah: 0, income: 0 };
|
||||
const totalTunai = cash.totalCash || 0;
|
||||
|
||||
const vehicleCashTotal = cash.totalCash || 0;
|
||||
|
||||
const nCasual = cashless.keluar.casual;
|
||||
const nLost = cashless.keluar.lost;
|
||||
const nMember = cashless.keluar.member;
|
||||
const nManual = cashless.keluar.manual;
|
||||
const nManualMix = cashless.keluar.manualmix ?? { jumlah: 0, income: 0 };
|
||||
const nMasalah = cashless.keluar.masalah ?? { jumlah: 0, income: 0 };
|
||||
const totalNonTunai = cashless.totalCashless || 0;
|
||||
const vehicleCashlessTotal = cashless.totalCashless || 0;
|
||||
|
||||
// baris TUNAI
|
||||
vehicleBody.push([
|
||||
@@ -84,8 +115,8 @@ function printPDF(data) {
|
||||
rupiah(tMember.income),
|
||||
tManual.jumlah,
|
||||
rupiah(tManual.income),
|
||||
0,
|
||||
0,
|
||||
tManualMix.jumlah || 0,
|
||||
rupiah(tManualMix.income),
|
||||
tMasalah.jumlah,
|
||||
rupiah(tMasalah.income),
|
||||
{ content: rupiah(cash.totalCash), styles: { valign: "middle", fontStyle: "bold" } },
|
||||
@@ -110,8 +141,8 @@ function printPDF(data) {
|
||||
nManual.jumlah,
|
||||
rupiah(nManual.income),
|
||||
|
||||
0,
|
||||
0,
|
||||
tManualMix.jumlah,
|
||||
rupiah(tManualMix.income),
|
||||
|
||||
nMasalah.jumlah,
|
||||
rupiah(nMasalah.income),
|
||||
@@ -119,67 +150,107 @@ function printPDF(data) {
|
||||
{ content: rupiah(cashless.totalCashless), styles: { valign: "middle", fontStyle: "bold" } },
|
||||
]);
|
||||
|
||||
totalTunaiJml += tCasual.jumlah + tLost.jumlah + tMember.jumlah + tManual.jumlah + tMasalah.jumlah;
|
||||
totalTunaiNilai += cash.totalCash || 0;
|
||||
totalNonTunaiJml += nCasual.jumlah + nLost.jumlah + nMember.jumlah + nManual.jumlah + nMasalah.jumlah;
|
||||
totalNonTunaiNilai += cashless.totalCashless || 0;
|
||||
grandTotal += (cash.totalCash || 0) + (cashless.totalCashless || 0);
|
||||
// init sum cash
|
||||
|
||||
vehicleCashCasualJml += tCasual.jumlah;
|
||||
vehicleCashCasualNilai += tCasual.income || 0;
|
||||
vehicleCashLostJml += tLost.jumlah;
|
||||
vehicleCashLostNilai += tLost.income;
|
||||
vehicleCashPassJml += tMember.jumlah;
|
||||
vehicleCashPassNilai += tMember.income;
|
||||
vehicleCashManualJml += tManual.jumlah;
|
||||
vehicleCashManualNilai += tManual.income;
|
||||
vehicleCashManualMixJml += tManualMix.jumlah;
|
||||
vehicleCashManualMixNilai += tManualMix.income;
|
||||
vehicleCashMasalahJml += tMasalah.jumlah;
|
||||
vehicleCashMasalahNilai += tMasalah.income;
|
||||
|
||||
// totalTunaiNilai = "X";
|
||||
|
||||
// init sum cashless
|
||||
vehicleCashlessCasualJml += nCasual.jumlah;
|
||||
vehicleCashlessCasualNilai += nCasual.income || 0;
|
||||
vehicleCashlessLostJml += nLost.jumlah;
|
||||
vehicleCashlessLostNilai += nLost.income;
|
||||
vehicleCashlessPassJml += nMember.jumlah;
|
||||
vehicleCashlessPassNilai += nMember.income;
|
||||
vehicleCashlessManualJml += nManual.jumlah;
|
||||
vehicleCashlessManualNilai += nManual.income;
|
||||
vehicleCashlessManualMixJml += nManualMix.jumlah;
|
||||
vehicleCashlessManualMixNilai += nManualMix.income;
|
||||
vehicleCashlessMasalahJml += nMasalah.jumlah;
|
||||
vehicleCashlessMasalahNilai += nMasalah.income;
|
||||
|
||||
// init sum grandTotal
|
||||
subTotalCash =
|
||||
vehicleCashCasualNilai +
|
||||
vehicleCashLostNilai +
|
||||
vehicleCashPassNilai +
|
||||
vehicleCashManualNilai +
|
||||
vehicleCashlessManualMixNilai +
|
||||
vehicleCashlessMasalahNilai;
|
||||
subTotalCashless =
|
||||
vehicleCashlessCasualNilai +
|
||||
vehicleCashlessLostNilai +
|
||||
vehicleCashlessPassNilai +
|
||||
vehicleCashlessManualNilai +
|
||||
vehicleCashlessManualMixNilai +
|
||||
vehicleCashlessMasalahNilai;
|
||||
grandTotal = (subTotalCash || 0) + (subTotalCashless || 0);
|
||||
});
|
||||
|
||||
// baris TOTAL & GRAND TOTAL
|
||||
vehicleBody.push([
|
||||
{ content: "TOTAL", rowSpan: 2, styles: { fontStyle: "bold" } },
|
||||
{ content: "SUB TOTAL\nKENDARAAN", rowSpan: 2, styles: { fontStyle: "bold" } },
|
||||
{ content: "Tunai", styles: { fillColor: [40, 167, 69], textColor: 255, fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
{ content: totalTunaiJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(totalTunaiNilai),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
rupiah(totalTunaiNilai),
|
||||
vehicleCashCasualJml,
|
||||
rupiah(vehicleCashCasualNilai),
|
||||
vehicleCashLostJml,
|
||||
rupiah(vehicleCashLostNilai),
|
||||
vehicleCashPassJml,
|
||||
rupiah(vehicleCashPassNilai),
|
||||
vehicleCashManualJml,
|
||||
rupiah(vehicleCashManualNilai),
|
||||
vehicleCashManualMixJml,
|
||||
rupiah(vehicleCashManualMixNilai),
|
||||
vehicleCashMasalahJml,
|
||||
rupiah(vehicleCashMasalahNilai),
|
||||
rupiah(subTotalCash),
|
||||
]);
|
||||
vehicleBody.push([
|
||||
{ content: "NON TUNAI", styles: { fillColor: [255, 193, 7], fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
{ content: totalNonTunaiJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(totalNonTunaiNilai),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
rupiah(totalNonTunaiNilai),
|
||||
{ content: vehicleCashlessCasualJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(vehicleCashlessCasualNilai),
|
||||
vehicleCashlessLostJml,
|
||||
rupiah(vehicleCashlessLostNilai),
|
||||
vehicleCashlessPassJml,
|
||||
rupiah(vehicleCashlessPassNilai),
|
||||
vehicleCashlessManualJml,
|
||||
rupiah(vehicleCashlessManualNilai),
|
||||
vehicleCashlessManualMixJml,
|
||||
rupiah(vehicleCashlessManualMixNilai),
|
||||
vehicleCashlessMasalahJml,
|
||||
rupiah(vehicleCashlessMasalahNilai),
|
||||
rupiah(subTotalCashless),
|
||||
]);
|
||||
vehicleBody.push([
|
||||
{ content: "GRAND TOTAL", colSpan: 4, styles: { fontStyle: "bold", halign: "center" } },
|
||||
{ content: totalTunaiJml + totalNonTunaiJml, styles: { fontStyle: "bold" } },
|
||||
{ content: rupiah(totalTunaiNilai + totalNonTunaiNilai), styles: { fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
{ content: "GRAND TOTAL\nKENDARAAN", colSpan: 4, styles: { fontStyle: "bold", halign: "center" } },
|
||||
{ content: vehicleCashCasualJml + vehicleCashlessCasualJml, styles: { fontStyle: "bold" } }, //Jumlah Casual
|
||||
rupiah(vehicleCashCasualNilai + vehicleCashlessCasualNilai), //Income Casual
|
||||
{ content: vehicleCashLostJml + vehicleCashlessLostJml, styles: { fontStyle: "bold" } }, //Jumlah Lost
|
||||
rupiah(vehicleCashLostNilai + vehicleCashlessLostNilai), //Income Tiket Hilang
|
||||
vehicleCashPassJml + vehicleCashlessPassJml, //Jumlah Member
|
||||
rupiah(vehicleCashPassNilai + vehicleCashlessPassNilai), //Income Member
|
||||
vehicleCashManualJml + vehicleCashlessManualJml, //Jumlah Tiket Manual
|
||||
rupiah(vehicleCashManualNilai + vehicleCashlessManualNilai), //Income Tiket Manual
|
||||
vehicleCashManualMixJml + vehicleCashlessManualMixJml,
|
||||
rupiah(vehicleCashManualMixNilai + vehicleCashlessManualMixNilai),
|
||||
vehicleCashMasalahJml + vehicleCashlessMasalahJml,
|
||||
rupiah(vehicleCashMasalahNilai + vehicleCashlessMasalahNilai),
|
||||
{ content: rupiah(grandTotal), styles: { fontStyle: "bold" } },
|
||||
]);
|
||||
|
||||
@@ -232,28 +303,41 @@ function printPDF(data) {
|
||||
(on.overNight || 0) + (on.onExpired || 0),
|
||||
]);
|
||||
|
||||
// doc.setFont("helvetica", "bold");
|
||||
// doc.setFontSize(8);
|
||||
// doc.text("Kendaraan yang masih menginap (Over Night)", 14, doc.lastAutoTable.finalY + 10);
|
||||
|
||||
// doc.autoTable({
|
||||
// head: [["Jenis Kend", "Menginap", "ON (Expired)", "Total"]],
|
||||
// body: onBody,
|
||||
// startY: doc.lastAutoTable.finalY + 13,
|
||||
// theme: "grid",
|
||||
// styles: { fontSize: 7, cellPadding: 1 },
|
||||
// headStyles: { fontSize: 8, fillColor: [230, 230, 230], textColor: 0 },
|
||||
// tableWidth: 100,
|
||||
// });
|
||||
//==================================================================
|
||||
//===================== Print table officer ========================
|
||||
//==================================================================
|
||||
const officerStartY = doc.lastAutoTable.finalY + 15;
|
||||
const officerBody = [];
|
||||
let ptotalTunaiJml = 0,
|
||||
ptotalTunaiNilai = 0;
|
||||
|
||||
// init print nont tunai
|
||||
let officerCashCasualJml = 0,
|
||||
officerCashCasualNilai = 0;
|
||||
let officerCashLostJml = 0,
|
||||
officerCashLostNilai = 0;
|
||||
let officerCashPassJml = 0,
|
||||
officerCashPassNilai = 0;
|
||||
let officerCashManualJml = 0,
|
||||
officerCashManualNilai = 0;
|
||||
let officerCashManualMixJml = 0,
|
||||
officerCashManualMixNilai = 0;
|
||||
let officerCashMasalahJml = 0,
|
||||
officerCashMasalahNilai = 0;
|
||||
|
||||
// init print nont tunai
|
||||
let ptotalNonTunaiJml = 0,
|
||||
ptotalNonTunaiNilai = 0;
|
||||
let officerCashlessCasualJml = 0,
|
||||
officerCashlessCasualNilai = 0;
|
||||
let officerCashlessLostJml = 0,
|
||||
officerCashlessLostNilai = 0;
|
||||
let officerCashlessPassJml = 0,
|
||||
officerCashlessPassNilai = 0;
|
||||
let officerCashlessManualJml = 0,
|
||||
officerCashlessManualNilai = 0;
|
||||
let officerCashlessManualMixJml = 0,
|
||||
officerCashlessManualMixNilai = 0;
|
||||
let officerCashlessMasalahJml = 0,
|
||||
officerCashlessMasalahNilai = 0;
|
||||
let pgrandTotal = 0;
|
||||
|
||||
data.officer.tunai.forEach(function (cash) {
|
||||
@@ -274,13 +358,15 @@ function printPDF(data) {
|
||||
const tMember = cash.keluar.member;
|
||||
const tManual = cash.keluar.manual;
|
||||
const tMasalah = cash.keluar.masalah ?? { jumlah: 0, income: 0 };
|
||||
const tManualMix = cash.keluar.manualmix ?? { jumlah: 0, income: 0 };
|
||||
const totalTunai = cash.totalCash || 0;
|
||||
|
||||
const oCasual = cashless.keluar.casual;
|
||||
const nCasual = cashless.keluar.casual;
|
||||
const nLost = cashless.keluar.lost;
|
||||
const nMember = cashless.keluar.member;
|
||||
const nManual = cashless.keluar.manual;
|
||||
const nMasalah = cashless.keluar.masalah ?? { jumlah: 0, income: 0 };
|
||||
const nManualMix = cashless.keluar.manualmix ?? { jumlah: 0, income: 0 };
|
||||
const totalNonTunai = cashless.totalCashless || 0;
|
||||
|
||||
// baris TUNAI
|
||||
@@ -315,8 +401,8 @@ function printPDF(data) {
|
||||
cash.total,
|
||||
cashless.nonTunaiOut,
|
||||
|
||||
oCasual.jumlah,
|
||||
rupiah(oCasual.income),
|
||||
nCasual.jumlah,
|
||||
rupiah(nCasual.income),
|
||||
|
||||
nLost.jumlah,
|
||||
cash.totalCashless,
|
||||
@@ -336,68 +422,107 @@ function printPDF(data) {
|
||||
{ content: rupiah(cashless.totalCashless), styles: { valign: "middle", fontStyle: "bold" } },
|
||||
]);
|
||||
|
||||
ptotalTunaiJml += tCasual.jumlah + tLost.jumlah + tMember.jumlah + tManual.jumlah + tMasalah.jumlah;
|
||||
ptotalTunaiNilai += cash.totalCash || 0;
|
||||
ptotalNonTunaiJml += oCasual.jumlah + nLost.jumlah + nMember.jumlah + nManual.jumlah + nMasalah.jumlah;
|
||||
ptotalNonTunaiJml += nCasual.jumlah + nLost.jumlah + nMember.jumlah + nManual.jumlah + nMasalah.jumlah;
|
||||
ptotalNonTunaiNilai += cashless.totalCashless || 0;
|
||||
pgrandTotal += (cash.totalCash || 0) + (cashless.totalCashless || 0);
|
||||
|
||||
officerCashCasualJml += tCasual.jumlah;
|
||||
officerCashCasualNilai += tCasual.income || 0;
|
||||
officerCashLostJml += tLost.jumlah;
|
||||
officerCashLostNilai += tLost.income;
|
||||
officerCashPassJml += tMember.jumlah;
|
||||
officerCashPassNilai += tMember.income;
|
||||
officerCashManualJml += tManual.jumlah;
|
||||
officerCashManualNilai += tManual.income;
|
||||
officerCashManualMixJml += tManualMix.jumlah;
|
||||
officerCashManualMixNilai += tManualMix.income;
|
||||
officerCashMasalahJml += tMasalah.jumlah;
|
||||
officerCashMasalahNilai += tMasalah.income;
|
||||
|
||||
// init sum cashless
|
||||
officerCashlessCasualJml += nCasual.jumlah;
|
||||
officerCashlessCasualNilai += nCasual.income || 0;
|
||||
officerCashlessLostJml += nLost.jumlah;
|
||||
officerCashlessLostNilai += nLost.income;
|
||||
officerCashlessPassJml += nMember.jumlah;
|
||||
officerCashlessPassNilai += nMember.income;
|
||||
officerCashlessManualJml += nManual.jumlah;
|
||||
officerCashlessManualNilai += nManual.income;
|
||||
officerCashlessManualMixJml += nManualMix.jumlah;
|
||||
officerCashlessManualMixNilai += nManualMix.income;
|
||||
officerCashlessMasalahJml += nMasalah.jumlah;
|
||||
officerCashlessMasalahNilai += nMasalah.income;
|
||||
|
||||
// sub total cash/ init sum grandTotal
|
||||
subTotalCash =
|
||||
officerCashCasualNilai +
|
||||
officerCashLostNilai +
|
||||
officerCashPassNilai +
|
||||
officerCashManualNilai +
|
||||
officerCashlessManualMixNilai +
|
||||
officerCashlessMasalahNilai;
|
||||
subTotalCashless =
|
||||
officerCashlessCasualNilai +
|
||||
officerCashlessLostNilai +
|
||||
officerCashlessPassNilai +
|
||||
officerCashlessManualNilai +
|
||||
officerCashlessManualMixNilai +
|
||||
officerCashlessMasalahNilai;
|
||||
});
|
||||
|
||||
// baris TOTAL & GRAND TOTAL
|
||||
officerBody.push([
|
||||
{ content: "TOTAL", rowSpan: 2, styles: { fontStyle: "bold" } },
|
||||
{ content: "SUB TOTAL\NPer Petugas", rowSpan: 2, styles: { fontStyle: "bold" } },
|
||||
{ content: "Tunai", styles: { fillColor: [40, 167, 69], textColor: 255, fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
{ content: ptotalTunaiJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(ptotalTunaiNilai),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
rupiah(ptotalTunaiNilai),
|
||||
{ content: officerCashCasualJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(officerCashCasualNilai),
|
||||
officerCashLostJml,
|
||||
rupiah(officerCashLostNilai),
|
||||
officerCashPassJml,
|
||||
rupiah(officerCashPassNilai),
|
||||
officerCashManualJml,
|
||||
rupiah(officerCashManualNilai),
|
||||
officerCashManualMixJml,
|
||||
rupiah(officerCashManualMixNilai),
|
||||
officerCashMasalahJml,
|
||||
rupiah(officerCashMasalahNilai),
|
||||
rupiah(subTotalCash),
|
||||
]);
|
||||
officerBody.push([
|
||||
{ content: "NON TUNAI", styles: { fillColor: [255, 193, 7], fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
{ content: ptotalNonTunaiJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(ptotalNonTunaiNilai),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
rupiah(ptotalNonTunaiNilai),
|
||||
{ content: officerCashlessCasualJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(officerCashlessCasualNilai),
|
||||
officerCashlessLostJml,
|
||||
rupiah(officerCashlessLostNilai),
|
||||
officerCashlessPassJml,
|
||||
rupiah(officerCashlessPassNilai),
|
||||
officerCashlessManualJml,
|
||||
rupiah(officerCashlessManualNilai),
|
||||
officerCashlessManualMixJml,
|
||||
rupiah(officerCashlessManualMixNilai),
|
||||
officerCashlessMasalahJml,
|
||||
rupiah(officerCashlessMasalahNilai),
|
||||
rupiah(subTotalCashless),
|
||||
]);
|
||||
officerBody.push([
|
||||
{ content: "GRAND TOTAL", colSpan: 4, styles: { fontStyle: "bold", halign: "center" } },
|
||||
{ content: ptotalTunaiJml + ptotalNonTunaiJml, styles: { fontStyle: "bold" } },
|
||||
{ content: rupiah(ptotalTunaiNilai + ptotalNonTunaiNilai), styles: { fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
// "",
|
||||
// "",
|
||||
{ content: rupiah(pgrandTotal), styles: { fontStyle: "bold" } },
|
||||
{ content: "GRAND TOTAL\nPETUGAS", colSpan: 4, styles: { fontStyle: "bold", halign: "center" } },
|
||||
{ content: officerCashCasualJml + officerCashlessCasualJml, styles: { fontStyle: "bold" } }, //Jumlah Casual
|
||||
rupiah(officerCashCasualNilai + officerCashlessCasualNilai), //Income Casual
|
||||
{ content: officerCashLostJml + officerCashlessLostJml, styles: { fontStyle: "bold" } }, //Jumlah Lost
|
||||
rupiah(officerCashLostNilai + officerCashlessLostNilai), //Income Tiket Hilang
|
||||
officerCashPassJml + officerCashlessPassJml, //Jumlah Member
|
||||
rupiah(officerCashPassNilai + officerCashlessPassNilai), //Income Member
|
||||
officerCashManualJml + officerCashlessManualJml, //Jumlah Tiket Manual
|
||||
rupiah(officerCashManualNilai + officerCashlessManualNilai), //Income Tiket Manual
|
||||
officerCashManualMixJml + officerCashlessManualMixJml,
|
||||
rupiah(officerCashManualMixNilai + officerCashlessManualMixNilai),
|
||||
officerCashMasalahJml + officerCashlessMasalahJml,
|
||||
rupiah(officerCashMasalahNilai + officerCashlessMasalahNilai),
|
||||
{ content: rupiah(grandTotal), styles: { fontStyle: "bold" } },
|
||||
]);
|
||||
|
||||
// ===== HEADER 2 BARIS (grouping) =====
|
||||
@@ -438,7 +563,7 @@ function printPDF(data) {
|
||||
|
||||
doc.setFont("helvetica", "normal");
|
||||
doc.setFontSize(9);
|
||||
doc.text("Tanggal : " + (data.vehicle.date ?? "-"), pageWidth / 2, officerStartY - 2, { align: "center" });
|
||||
doc.text("Tanggal : " + (data.officer.date ?? "-"), pageWidth / 2, officerStartY - 2, { align: "center" });
|
||||
doc.text("By : " + (data.vehicle.reportTime ?? "-"), pageWidth - 14, officerStartY - 2, { align: "right" });
|
||||
|
||||
doc.autoTable({
|
||||
@@ -457,10 +582,40 @@ function printPDF(data) {
|
||||
//====================================
|
||||
const paymentStartY = doc.lastAutoTable.finalY + 15;
|
||||
const paymentBody = [];
|
||||
let payTotalTunaiJml = 0,
|
||||
payTotalTunaiNilai = 0;
|
||||
let payTotalNonTunaiJml = 0,
|
||||
payTotalNonTunaiNilai = 0;
|
||||
// let payTotalTunaiJml = 0,
|
||||
// payTotalTunaiNilai = 0;
|
||||
// init print nont tunai
|
||||
let paymentCashCasualJml = 0,
|
||||
paymentCashCasualNilai = 0;
|
||||
let paymentCashLostJml = 0,
|
||||
paymentCashLostNilai = 0;
|
||||
let paymentCashPassJml = 0,
|
||||
paymentCashPassNilai = 0;
|
||||
let paymentCashManualJml = 0,
|
||||
paymentCashManualNilai = 0;
|
||||
let paymentCashManualMixJml = 0,
|
||||
paymentCashManualMixNilai = 0;
|
||||
let paymentCashMasalahJml = 0,
|
||||
paymentCashMasalahNilai = 0;
|
||||
|
||||
// init print nont tunai
|
||||
// let ptotalNonTunaiJml = 0,
|
||||
// ptotalNonTunaiNilai = 0;
|
||||
let paymentCashlessCasualJml = 0,
|
||||
paymentCashlessCasualNilai = 0;
|
||||
let paymentCashlessLostJml = 0,
|
||||
paymentCashlessLostNilai = 0;
|
||||
let paymentCashlessPassJml = 0,
|
||||
paymentCashlessPassNilai = 0;
|
||||
let paymentCashlessManualJml = 0,
|
||||
paymentCashlessManualNilai = 0;
|
||||
let paymentCashlessManualMixJml = 0,
|
||||
paymentCashlessManualMixNilai = 0;
|
||||
let paymentCashlessMasalahJml = 0,
|
||||
paymentCashlessMasalahNilai = 0;
|
||||
|
||||
// let payTotalNonTunaiJml = 0,
|
||||
// payTotalNonTunaiNilai = 0;
|
||||
let payGrandTotal = 0;
|
||||
|
||||
data.payment.tunai.forEach(function (cash) {
|
||||
@@ -481,13 +636,15 @@ function printPDF(data) {
|
||||
const tLost = cash.keluar.lost;
|
||||
const tMember = cash.keluar.member;
|
||||
const tManual = cash.keluar.manual;
|
||||
const tManualMix = cash.keluar.manualmix ?? { jumlah: 0, income: 0 };
|
||||
const tMasalah = cash.keluar.masalah ?? { jumlah: 0, income: 0 };
|
||||
const totalTunai = cash.totalCash || 0;
|
||||
|
||||
const oCasual = cashless.keluar.casual;
|
||||
const nCasual = cashless.keluar.casual;
|
||||
const nLost = cashless.keluar.lost;
|
||||
const nMember = cashless.keluar.member;
|
||||
const nManual = cashless.keluar.manual;
|
||||
const nManualMix = cashless.keluar.manualmix ?? { jumlah: 0, income: 0 };
|
||||
const nMasalah = cashless.keluar.masalah ?? { jumlah: 0, income: 0 };
|
||||
const totalNonTunai = cashless.totalCashless || 0;
|
||||
|
||||
@@ -523,8 +680,8 @@ function printPDF(data) {
|
||||
cash.total,
|
||||
cashless.nonTunaiOut,
|
||||
|
||||
oCasual.jumlah,
|
||||
rupiah(oCasual.income),
|
||||
nCasual.jumlah,
|
||||
rupiah(nCasual.income),
|
||||
|
||||
nLost.jumlah,
|
||||
rupiah(nLost.income),
|
||||
@@ -544,68 +701,109 @@ function printPDF(data) {
|
||||
{ content: rupiah(cashless.totalCashless), styles: { valign: "middle", fontStyle: "bold" } },
|
||||
]);
|
||||
|
||||
payTotalTunaiJml += tCasual.jumlah + tLost.jumlah + tMember.jumlah + tManual.jumlah + tMasalah.jumlah;
|
||||
payTotalTunaiNilai += cash.totalCash || 0;
|
||||
payTotalNonTunaiJml += oCasual.jumlah + nLost.jumlah + nMember.jumlah + nManual.jumlah + nMasalah.jumlah;
|
||||
payTotalNonTunaiNilai += cashless.totalCashless || 0;
|
||||
payGrandTotal += (cash.totalCash || 0) + (cashless.totalCashless || 0);
|
||||
// payTotalTunaiJml += tCasual.jumlah + tLost.jumlah + tMember.jumlah + tManual.jumlah + tMasalah.jumlah;
|
||||
// payTotalTunaiNilai += cash.totalCash || 0;
|
||||
// payTotalNonTunaiJml += nCasual.jumlah + nLost.jumlah + nMember.jumlah + nManual.jumlah + nMasalah.jumlah;
|
||||
// payTotalNonTunaiNilai += cashless.totalCashless || 0;
|
||||
// payGrandTotal += (cash.totalCash || 0) + (cashless.totalCashless || 0);
|
||||
|
||||
paymentCashCasualJml += tCasual.jumlah;
|
||||
paymentCashCasualNilai += tCasual.income || 0;
|
||||
paymentCashLostJml += tLost.jumlah;
|
||||
paymentCashLostNilai += tLost.income;
|
||||
paymentCashPassJml += tMember.jumlah;
|
||||
paymentCashPassNilai += tMember.income;
|
||||
paymentCashManualJml += tManual.jumlah;
|
||||
paymentCashManualNilai += tManual.income;
|
||||
paymentCashManualMixJml += tManualMix.jumlah;
|
||||
paymentCashManualMixNilai += tManualMix.income;
|
||||
paymentCashMasalahJml += tMasalah.jumlah;
|
||||
paymentCashMasalahNilai += tMasalah.income;
|
||||
|
||||
// init sum cashless
|
||||
paymentCashlessCasualJml += nCasual.jumlah;
|
||||
paymentCashlessCasualNilai += nCasual.income || 0;
|
||||
paymentCashlessLostJml += nLost.jumlah;
|
||||
paymentCashlessLostNilai += nLost.income;
|
||||
paymentCashlessPassJml += nMember.jumlah;
|
||||
paymentCashlessPassNilai += nMember.income;
|
||||
paymentCashlessManualJml += nManual.jumlah;
|
||||
paymentCashlessManualNilai += nManual.income;
|
||||
paymentCashlessManualMixJml += nManualMix.jumlah;
|
||||
paymentCashlessManualMixNilai += nManualMix.income;
|
||||
paymentCashlessMasalahJml += nMasalah.jumlah;
|
||||
paymentCashlessMasalahNilai += nMasalah.income;
|
||||
|
||||
// sub total cash/ init sum grandTotal
|
||||
subTotalCash =
|
||||
paymentCashCasualNilai +
|
||||
paymentCashLostNilai +
|
||||
paymentCashPassNilai +
|
||||
paymentCashManualNilai +
|
||||
paymentCashlessManualMixNilai +
|
||||
paymentCashlessMasalahNilai;
|
||||
subTotalCashless =
|
||||
paymentCashlessCasualNilai +
|
||||
paymentCashlessLostNilai +
|
||||
paymentCashlessPassNilai +
|
||||
paymentCashlessManualNilai +
|
||||
paymentCashlessManualMixNilai +
|
||||
paymentCashlessMasalahNilai;
|
||||
});
|
||||
|
||||
// baris TOTAL & GRAND TOTAL
|
||||
paymentBody.push([
|
||||
{ content: "TOTAL", rowSpan: 2, styles: { fontStyle: "bold" } },
|
||||
{ content: "SUB TOTAL\NPer Pembayaran", rowSpan: 2, styles: { fontStyle: "bold" } },
|
||||
{ content: "Tunai", styles: { fillColor: [40, 167, 69], textColor: 255, fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
{ content: payTotalTunaiJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(payTotalTunaiNilai),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
rupiah(ptotalTunaiNilai),
|
||||
{ content: paymentCashCasualJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(paymentCashCasualNilai),
|
||||
paymentCashLostJml,
|
||||
rupiah(paymentCashLostNilai),
|
||||
paymentCashPassJml,
|
||||
rupiah(paymentCashPassNilai),
|
||||
paymentCashManualJml,
|
||||
rupiah(paymentCashManualNilai),
|
||||
paymentCashManualMixJml,
|
||||
rupiah(paymentCashManualMixNilai),
|
||||
paymentCashMasalahJml,
|
||||
rupiah(paymentCashMasalahNilai),
|
||||
rupiah(subTotalCash),
|
||||
]);
|
||||
paymentBody.push([
|
||||
{ content: "NON TUNAI", styles: { fillColor: [255, 193, 7], fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
{ content: payTotalNonTunaiJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(payTotalNonTunaiNilai),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
rupiah(payTotalNonTunaiNilai),
|
||||
{ content: paymentCashlessCasualJml, styles: { fontStyle: "bold" } },
|
||||
rupiah(paymentCashlessCasualNilai),
|
||||
paymentCashlessLostJml,
|
||||
rupiah(paymentCashlessLostNilai),
|
||||
paymentCashlessPassJml,
|
||||
rupiah(paymentCashlessPassNilai),
|
||||
paymentCashlessManualJml,
|
||||
rupiah(paymentCashlessManualNilai),
|
||||
paymentCashlessManualMixJml,
|
||||
rupiah(paymentCashlessManualMixNilai),
|
||||
paymentCashlessMasalahJml,
|
||||
rupiah(paymentCashlessMasalahNilai),
|
||||
rupiah(subTotalCashless),
|
||||
]);
|
||||
paymentBody.push([
|
||||
{ content: "GRAND TOTAL", colSpan: 4, styles: { fontStyle: "bold", halign: "center" } },
|
||||
{ content: payTotalTunaiJml + payTotalNonTunaiJml, styles: { fontStyle: "bold" } },
|
||||
{ content: rupiah(payTotalTunaiNilai + payTotalNonTunaiNilai), styles: { fontStyle: "bold" } },
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
// "",
|
||||
// "",
|
||||
{ content: rupiah(payGrandTotal), styles: { fontStyle: "bold" } },
|
||||
{ content: "GRAND TOTAL\nPEMBAYARAN", colSpan: 4, styles: { fontStyle: "bold", halign: "center" } },
|
||||
{ content: paymentCashCasualJml + paymentCashlessCasualJml, styles: { fontStyle: "bold" } }, //Jumlah Casual
|
||||
rupiah(paymentCashCasualNilai + paymentCashlessCasualNilai), //Income Casual
|
||||
{ content: paymentCashLostJml + paymentCashlessLostJml, styles: { fontStyle: "bold" } }, //Jumlah Lost
|
||||
rupiah(paymentCashLostNilai + paymentCashlessLostNilai), //Income Tiket Hilang
|
||||
paymentCashPassJml + paymentCashlessPassJml, //Jumlah Member
|
||||
rupiah(paymentCashPassNilai + paymentCashlessPassNilai), //Income Member
|
||||
paymentCashManualJml + paymentCashlessManualJml, //Jumlah Tiket Manual
|
||||
rupiah(paymentCashManualNilai + paymentCashlessManualNilai), //Income Tiket Manual
|
||||
paymentCashManualMixJml + paymentCashlessManualMixJml,
|
||||
rupiah(paymentCashManualMixNilai + paymentCashlessManualMixNilai),
|
||||
paymentCashMasalahJml + paymentCashlessMasalahJml,
|
||||
rupiah(paymentCashMasalahNilai + paymentCashlessMasalahNilai),
|
||||
{ content: rupiah(grandTotal), styles: { fontStyle: "bold" } },
|
||||
]);
|
||||
|
||||
// ===== HEADER 2 BARIS (grouping) =====
|
||||
|
||||
Vendored
-1
File diff suppressed because one or more lines are too long
+248
-140
@@ -312,9 +312,31 @@ function tableVehicle(response) {
|
||||
let jmlCashCasual = 0;
|
||||
let incomeCashCasual = 0;
|
||||
|
||||
let jmlCashLost = 0;
|
||||
let incomeCashLost = 0;
|
||||
|
||||
let jmlCashMember = 0;
|
||||
let incomeCashMember = 0;
|
||||
|
||||
let jmlCashManual = 0;
|
||||
let incomeCashManual = 0;
|
||||
|
||||
let jmlCashMasalah = 0;
|
||||
let incomeCashMasalah = 0;
|
||||
|
||||
// Init data cashless
|
||||
let jmlCashlessCasual = 0;
|
||||
let incomeCashlessCasual = 0;
|
||||
|
||||
let jmlCashlessLost = 0;
|
||||
let incomeCashlessLost = 0;
|
||||
|
||||
let jmlCashlessMember = 0;
|
||||
let incomeCashlessMember = 0;
|
||||
|
||||
let jmlCashlessManual = 0;
|
||||
let incomeCashlessManual = 0;
|
||||
|
||||
let grandTotal = 0;
|
||||
|
||||
response.tunai.forEach(function (cash) {
|
||||
@@ -340,6 +362,8 @@ function tableVehicle(response) {
|
||||
let tLost = cash.keluar.lost;
|
||||
let tMember = cash.keluar.member;
|
||||
let tManual = cash.keluar.manual;
|
||||
let tManualMix = cash.keluar.manualMix;
|
||||
let tMasalah = cash.keluar.masalah;
|
||||
|
||||
// ===== DATA NON TUNAI =====
|
||||
let nonTunaiOut = cashless.nonTunaiOut;
|
||||
@@ -348,65 +372,49 @@ function tableVehicle(response) {
|
||||
let nLost = cashless.keluar.lost;
|
||||
let nMember = cashless.keluar.member;
|
||||
let nManual = cashless.keluar.manual;
|
||||
let nManualMix = cashless.keluar.manualMix;
|
||||
let nMasalah = cashless.keluar.masalah;
|
||||
|
||||
let totalTunai = cash.totalCash || 0;
|
||||
let totalNonTunai = cashless.totalCashless || 0;
|
||||
|
||||
// init data cash
|
||||
jmlCashCasual += cash.keluar.casual.jumlah;
|
||||
incomeCashCasual += cash.keluar.casual.income;
|
||||
|
||||
jmlCashLost += tLost.jumlah;
|
||||
incomeCashLost += tLost.income;
|
||||
|
||||
jmlCashMember += tMember.jumlah;
|
||||
incomeCashMember += tMember.income;
|
||||
|
||||
jmlCashManual += tManual.jumlah;
|
||||
incomeCashManual += tManual.income;
|
||||
|
||||
subTotalIncomeCash = incomeCashCasual + incomeCashLost + incomeCashMember + incomeCashManual;
|
||||
|
||||
// ========= init data cashless
|
||||
jmlCashlessCasual += cashless.keluar.casual.jumlah;
|
||||
incomeCashlessCasual += cashless.keluar.casual.income;
|
||||
|
||||
grandTotal += totalTunai + totalNonTunai;
|
||||
// let casualCash = cash.keluar.casual;
|
||||
// let lostCash = cash.keluar.lost;
|
||||
// let memberCash = cash.keluar.member;
|
||||
// let casualIn = cash.total;
|
||||
jmlCashlessLost += nLost.jumlah;
|
||||
incomeCashlessLost += nLost.income;
|
||||
|
||||
// let casualNon = cashless ? cashless.keluar.casual : { jumlah: 0, income: 0 };
|
||||
// let lostNon = cashless ? cashless.keluar.lost : { jumlah: 0, income: 0 };
|
||||
// let memberNon = cashless ? cashless.keluar.member : { jumlah: 0, income: 0 };
|
||||
jmlCashlessMember += nMember.jumlah;
|
||||
incomeCashlessMember += nMember.income;
|
||||
|
||||
// let totalIncome =
|
||||
// (cash.totalCash || 0);
|
||||
jmlCashlessManual += nManual.jumlah;
|
||||
incomeCashlessManual += nManual.income;
|
||||
|
||||
// html += `
|
||||
// <tr>
|
||||
// <td style="text-align: left;">${cash.jenis_mobil}</td>
|
||||
subTotalIncomeCashless =
|
||||
incomeCashlessCasual + incomeCashlessLost + incomeCashlessMember + incomeCashlessManual;
|
||||
|
||||
// <!-- Jenis Transaksi -->
|
||||
// <td>${casualIn}</td>
|
||||
// <td>${cash.tunaiOut}</td>
|
||||
//
|
||||
grandTotal = subTotalIncomeCash + subTotalIncomeCashless;
|
||||
|
||||
// <!-- Casual -->
|
||||
// <td>${casualCash.jumlah}</td>
|
||||
// <td>${rupiah(casualCash.income)}</td>
|
||||
// console.log(tLost.income);
|
||||
// console.log(incomeCashLost);
|
||||
|
||||
// <!-- Tiket Hilang -->
|
||||
// <td>${lostCash.jumlah}</td>
|
||||
// <td>${rupiah(lostCash.income)}</td>
|
||||
|
||||
// <!-- Member -->
|
||||
// <td>${memberCash.jumlah}</td>
|
||||
// <td>${rupiah(memberCash.income)}</td>
|
||||
|
||||
// <!-- Manual Input -->
|
||||
// <td>0</td>
|
||||
// <td>0</td>
|
||||
|
||||
// <!-- Manual Mix -->
|
||||
// <td>0</td>
|
||||
// <td>0</td>
|
||||
|
||||
// <!-- Tiket Masalah -->
|
||||
// <td>0</td>
|
||||
// <td>0</td>
|
||||
|
||||
// <!-- Pendapatan -->
|
||||
// <td><strong>${rupiah(totalIncome)}</strong></td>
|
||||
// </tr>
|
||||
// `;
|
||||
html += `
|
||||
<tr>
|
||||
<td rowspan="2" style="text-align: left;"><strong>${cash.jenis_mobil}</strong></td>
|
||||
@@ -468,13 +476,22 @@ function tableVehicle(response) {
|
||||
// ===== FOOTER TOTAL =====
|
||||
html += `
|
||||
<tr class="table">
|
||||
<td rowspan="2" style="text-align: center;"><strong>TOTAL</strong></td>
|
||||
<td rowspan="2" style="text-align: center;"><strong>SUB TOTAL<br>KENDARAAN</strong></td>
|
||||
<td style="text-align: left;"><span class="badge bg-success">Tunai</span></td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${jmlCashCasual}">${rupiah(jmlCashCasual)}</td>
|
||||
<td data-value="${jmlCashCasual}">${jmlCashCasual}</td>
|
||||
<td data-value="${incomeCashCasual}">${rupiah(incomeCashCasual)}</td>
|
||||
<td colspan="10"></td>
|
||||
<td data-value="${jmlCashLost}">${jmlCashLost}</td>
|
||||
<td data-value="${incomeCashLost}">${rupiah(incomeCashLost)}</td>
|
||||
<td data-value="${jmlCashMember}">${jmlCashMember}</td>
|
||||
<td data-value="${incomeCashMember}">${rupiah(incomeCashMember)}</td>
|
||||
<td data-value="${jmlCashManual}">${jmlCashManual}</td>
|
||||
<td data-value="${incomeCashManual}">${rupiah(incomeCashManual)}</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${incomeCashCasual}">${rupiah(incomeCashCasual)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -483,24 +500,33 @@ function tableVehicle(response) {
|
||||
<td>0</td>
|
||||
<td>${jmlCashlessCasual}</td>
|
||||
<td data-value="${incomeCashlessCasual}">${rupiah(incomeCashlessCasual)}</td>
|
||||
<td colspan="10"></td>
|
||||
<td data-value="${incomeCashlessCasual}">${rupiah(incomeCashlessCasual)}</td>
|
||||
<td data-value="${jmlCashlessLost}">${rupiah(jmlCashlessLost)}</td>
|
||||
<td data-value="${incomeCashlessLost}">${rupiah(incomeCashlessLost)}</td>
|
||||
<td data-value="${jmlCashlessMember}">${rupiah(jmlCashlessMember)}</td>
|
||||
<td data-value="${incomeCashlessMember}">${rupiah(incomeCashlessMember)}</td>
|
||||
<td data-value="${jmlCashlessManual}">${rupiah(jmlCashlessManual)}</td>
|
||||
<td data-value="${incomeCashlessManual}">${rupiah(incomeCashlessManual)}</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${subTotalIncomeCashless}">${rupiah(subTotalIncomeCashless)}</td>
|
||||
</tr>
|
||||
<tr class="table">
|
||||
<td colspan="3" class="text-center"><strong>GRAND TOTAL</strong></td>
|
||||
<td colspan="3" class="text-center"><strong>GRAND TOTAL<br>Pendapatan Per Kendaraan</strong></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0">${jmlCashCasual + jmlCashlessCasual}</td>
|
||||
<td colspan="0" data-value="${incomeCashCasual + incomeCashlessCasual}">${rupiah(incomeCashCasual + incomeCashlessCasual)}</td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0" data-value="${jmlCashLost + jmlCashlessLost}">${rupiah(jmlCashLost + jmlCashlessLost)}</td>
|
||||
<td colspan="0" data-value="${incomeCashLost + incomeCashlessLost}">${rupiah(incomeCashLost + incomeCashlessLost)}</td>
|
||||
<td colspan="0" data-value="${jmlCashMember + incomeCashlessMember}">${rupiah(jmlCashMember + incomeCashlessMember)}</td>
|
||||
<td colspan="0" data-value="${incomeCashMember + incomeCashlessMember}">${rupiah(incomeCashMember + incomeCashlessMember)}</td>
|
||||
<td colspan="0" data-value="${jmlCashManual + jmlCashlessManual}">${rupiah(jmlCashManual + jmlCashlessManual)}</td>/td>
|
||||
<td colspan="0" data-value="${incomeCashManual + incomeCashlessManual}">${rupiah(incomeCashManual + incomeCashlessManual)}</td>
|
||||
<td colspan="0" data-value="0">0</td>/td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td><strong>${rupiah(grandTotal)}</strong></td>
|
||||
</tr>
|
||||
`;
|
||||
@@ -534,13 +560,32 @@ function tableOfficer(response) {
|
||||
console.log(response);
|
||||
|
||||
let html = "";
|
||||
let onData = "";
|
||||
// init petugas data cash
|
||||
let jmlCashCasual = 0;
|
||||
let incomeCashCasual = 0;
|
||||
|
||||
let jmlCashLost = 0;
|
||||
let incomeCashLost = 0;
|
||||
|
||||
let jmlCashMember = 0;
|
||||
let incomeCashMember = 0;
|
||||
|
||||
let jmlCashManual = 0;
|
||||
let incomeCashManual = 0;
|
||||
|
||||
// init petugas data cash
|
||||
let jmlCashlessCasual = 0;
|
||||
let incomeCashlessCasual = 0;
|
||||
|
||||
let jmlCashlessLost = 0;
|
||||
let incomeCashlessLost = 0;
|
||||
|
||||
let jmlCashlessMember = 0;
|
||||
let incomeCashlessMember = 0;
|
||||
|
||||
let jmlCashlessManual = 0;
|
||||
let incomeCashlessManual = 0;
|
||||
|
||||
let grandTotal = 0;
|
||||
|
||||
response.tunai.forEach(function (cash) {
|
||||
@@ -579,61 +624,40 @@ function tableOfficer(response) {
|
||||
let totalTunai = cash.totalCash || 0;
|
||||
let totalNonTunai = cashless.totalCashless || 0;
|
||||
|
||||
// get data cash
|
||||
jmlCashCasual += cash.keluar.casual.jumlah;
|
||||
incomeCashCasual += cash.keluar.casual.income;
|
||||
|
||||
jmlCashLost += cash.keluar.lost.jumlah;
|
||||
incomeCashLost += tLost.income;
|
||||
|
||||
jmlCashMember += cash.keluar.member.jumlah;
|
||||
incomeCashMember += cash.keluar.member.income;
|
||||
|
||||
jmlCashManual += cash.keluar.manual.jumlah;
|
||||
incomeCashManual += cash.keluar.manual.income;
|
||||
|
||||
subTotalIncomeCash = incomeCashCasual + incomeCashLost + incomeCashMember + incomeCashManual;
|
||||
|
||||
// ========= init data cashless
|
||||
jmlCashlessCasual += cashless.keluar.casual.jumlah;
|
||||
incomeCashlessCasual += cashless.keluar.casual.income;
|
||||
|
||||
grandTotal += totalTunai + totalNonTunai;
|
||||
// let casualCash = cash.keluar.casual;
|
||||
// let lostCash = cash.keluar.lost;
|
||||
// let memberCash = cash.keluar.member;
|
||||
// let casualIn = cash.total;
|
||||
jmlCashlessLost += nLost.jumlah;
|
||||
incomeCashlessLost += nLost.income;
|
||||
|
||||
// let casualNon = cashless ? cashless.keluar.casual : { jumlah: 0, income: 0 };
|
||||
// let lostNon = cashless ? cashless.keluar.lost : { jumlah: 0, income: 0 };
|
||||
// let memberNon = cashless ? cashless.keluar.member : { jumlah: 0, income: 0 };
|
||||
jmlCashlessMember += cashless.keluar.member.jumlah;
|
||||
incomeCashlessMember += cashless.keluar.member.income;
|
||||
|
||||
// let totalIncome =
|
||||
// (cash.totalCash || 0);
|
||||
jmlCashlessManual += cashless.keluar.manual.jumlah;
|
||||
incomeCashlessManual += cashless.keluar.manual.income;
|
||||
|
||||
// html += `
|
||||
// <tr>
|
||||
// <td style="text-align: left;">${cash.jenis_mobil}</td>
|
||||
subTotalIncomeCashless =
|
||||
incomeCashlessCasual + incomeCashlessLost + incomeCashlessMember + incomeCashlessManual;
|
||||
|
||||
// <!-- Jenis Transaksi -->
|
||||
// <td>${casualIn}</td>
|
||||
// <td>${cash.tunaiOut}</td>
|
||||
|
||||
// <!-- Casual -->
|
||||
// <td>${casualCash.jumlah}</td>
|
||||
// <td>${rupiah(casualCash.income)}</td>
|
||||
|
||||
// <!-- Tiket Hilang -->
|
||||
// <td>${lostCash.jumlah}</td>
|
||||
// <td>${rupiah(lostCash.income)}</td>
|
||||
|
||||
// <!-- Member -->
|
||||
// <td>${memberCash.jumlah}</td>
|
||||
// <td>${rupiah(memberCash.income)}</td>
|
||||
|
||||
// <!-- Manual Input -->
|
||||
// <td>0</td>
|
||||
// <td>0</td>
|
||||
|
||||
// <!-- Manual Mix -->
|
||||
// <td>0</td>
|
||||
// <td>0</td>
|
||||
|
||||
// <!-- Tiket Masalah -->
|
||||
// <td>0</td>
|
||||
// <td>0</td>
|
||||
|
||||
// <!-- Pendapatan -->
|
||||
// <td><strong>${rupiah(totalIncome)}</strong></td>
|
||||
// </tr>
|
||||
// `;
|
||||
//
|
||||
grandTotal = subTotalIncomeCash + subTotalIncomeCashless;
|
||||
//========= init table body by petugas
|
||||
html += `
|
||||
<tr>
|
||||
<td rowspan="2" style="text-align: left;"><strong>${petugas}</strong></td>
|
||||
@@ -655,10 +679,10 @@ function tableOfficer(response) {
|
||||
<td data-value="${tManual.income}">${rupiah(tManual.income)}</td>
|
||||
|
||||
<td>0</td>
|
||||
<td data-value="0}">0</td>
|
||||
<td data-value="0">0</td>
|
||||
|
||||
<td>0</td>
|
||||
<td data-value="0"></td>
|
||||
<td data-value="0">0</td>
|
||||
|
||||
<td data-value="${totalTunai}"><strong>${rupiah(totalTunai)}</strong></td>
|
||||
</tr>
|
||||
@@ -695,13 +719,23 @@ function tableOfficer(response) {
|
||||
// ===== FOOTER TOTAL =====
|
||||
html += `
|
||||
<tr class="table">
|
||||
<td rowspan="2" style="text-align: center;"><strong>TOTAL</strong></td>
|
||||
<td rowspan="2" style="text-align: center;"><strong>SUB TOTAL<br>Per Petugas</strong></td>
|
||||
<td style="text-align: left;"><span class="badge bg-success">Tunai</span></td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${jmlCashCasual}">${rupiah(jmlCashCasual)}</td>
|
||||
<td data-value="${incomeCashCasual}">${rupiah(incomeCashCasual)}</td>
|
||||
<td colspan="11">${rupiah(incomeCashCasual)}</td>
|
||||
<td data-value="${jmlCashLost}">${rupiah(jmlCashLost)}</td>
|
||||
<td data-value="${incomeCashLost}">${incomeCashLost}</td>
|
||||
<td data-value="${jmlCashMember}">${rupiah(jmlCashMember)}</td>
|
||||
<td data-value="${incomeCashMember}">${rupiah(incomeCashMember)}</td>
|
||||
<td data-value="${jmlCashManual}">${rupiah(jmlCashManual)}</td>
|
||||
<td data-value="${incomeCashManual}">${rupiah(incomeCashManual)}</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${incomeCashCasual}">${rupiah(incomeCashCasual)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left;"><span class="badge bg-warning">NON TUNAI</td>
|
||||
@@ -709,23 +743,33 @@ function tableOfficer(response) {
|
||||
<td>0</td>
|
||||
<td>${jmlCashlessCasual}</td>
|
||||
<td data-value="${incomeCashlessCasual}">${rupiah(incomeCashlessCasual)}</td>
|
||||
<td colspan="11">${rupiah(incomeCashlessCasual)}</td>
|
||||
<td data-value="${jmlCashlessLost}">${rupiah(jmlCashlessLost)}</td>
|
||||
<td data-value="${incomeCashlessLost}">${rupiah(incomeCashlessLost)}</td>
|
||||
<td data-value="${jmlCashlessMember}">${rupiah(jmlCashlessMember)}</td>
|
||||
<td data-value="${incomeCashlessMember}">${rupiah(incomeCashlessMember)}</td>
|
||||
<td data-value="${jmlCashlessManual}">${rupiah(jmlCashlessManual)}</td>
|
||||
<td data-value="${incomeCashlessManual}">${rupiah(incomeCashlessManual)}</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${subTotalIncomeCashless}">${rupiah(subTotalIncomeCashless)}</td>
|
||||
</tr>
|
||||
<tr class="table">
|
||||
<td colspan="3" class="text-center"><strong>GRAND TOTAL</strong></td>
|
||||
<td colspan="3" class="text-center"><strong>GRAND TOTAL<br>Pendapatan Per Petugas</strong></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0">${jmlCashCasual + jmlCashlessCasual}</td>
|
||||
<td colspan="0" data-value="${incomeCashCasual + incomeCashlessCasual}">${rupiah(incomeCashCasual + incomeCashlessCasual)}</td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0" data-value="${jmlCashLost + jmlCashlessLost}">${rupiah(jmlCashLost + jmlCashlessLost)}</td>
|
||||
<td colspan="0" data-value="${incomeCashLost + incomeCashlessLost}">${rupiah(incomeCashLost + incomeCashlessLost)}</td>
|
||||
<td colspan="0" data-value="${jmlCashMember + incomeCashlessMember}">${rupiah(jmlCashMember + incomeCashlessMember)}</td>
|
||||
<td colspan="0" data-value="${incomeCashMember + incomeCashlessMember}">${rupiah(incomeCashMember + incomeCashlessMember)}</td>
|
||||
<td colspan="0" data-value="${jmlCashManual + jmlCashlessManual}">${rupiah(jmlCashManual + jmlCashlessManual)}</td>/td>
|
||||
<td colspan="0" data-value="${incomeCashManual + incomeCashlessManual}">${rupiah(incomeCashManual + incomeCashlessManual)}</td>
|
||||
<td colspan="0" data-value="0">0</td>/td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td><strong>${rupiah(grandTotal)}</strong></td>
|
||||
</tr>
|
||||
`;
|
||||
@@ -756,16 +800,35 @@ function tableOfficer(response) {
|
||||
|
||||
function tablePayment(response) {
|
||||
// Update tabel dengan data yang diterima
|
||||
console.log(response);
|
||||
// console.log(response);
|
||||
|
||||
let html = "";
|
||||
let onData = "";
|
||||
// init data cash
|
||||
let jmlCashCasual = 0;
|
||||
let incomeCashCasual = 0;
|
||||
|
||||
let jmlCashLost = 0;
|
||||
let incomeCashLost = 0;
|
||||
|
||||
let jmlCashMember = 0;
|
||||
let incomeCashMember = 0;
|
||||
|
||||
let jmlCashManual = 0;
|
||||
let incomeCashManual = 0;
|
||||
|
||||
// init data cashless
|
||||
let jmlCashlessCasual = 0;
|
||||
let incomeCashlessCasual = 0;
|
||||
|
||||
let jmlCashlessLost = 0;
|
||||
let incomeCashlessLost = 0;
|
||||
|
||||
let jmlCashlessMember = 0;
|
||||
let incomeCashlessMember = 0;
|
||||
|
||||
let jmlCashlessManual = 0;
|
||||
let incomeCashlessManual = 0;
|
||||
|
||||
let grandTotal = 0;
|
||||
|
||||
response.tunai.forEach(function (cash) {
|
||||
@@ -808,10 +871,35 @@ function tablePayment(response) {
|
||||
jmlCashCasual += cash.keluar.casual.jumlah;
|
||||
incomeCashCasual += cash.keluar.casual.income;
|
||||
|
||||
jmlCashLost += cash.keluar.lost.jumlah;
|
||||
incomeCashLost += tLost.income;
|
||||
|
||||
jmlCashMember += cash.keluar.member.jumlah;
|
||||
incomeCashMember += cash.keluar.member.income;
|
||||
|
||||
jmlCashManual += cash.keluar.manual.jumlah;
|
||||
incomeCashManual += cash.keluar.manual.income;
|
||||
|
||||
subTotalIncomeCash = incomeCashCasual + incomeCashLost + incomeCashMember + incomeCashManual;
|
||||
|
||||
// ========= init data cashless
|
||||
jmlCashlessCasual += cashless.keluar.casual.jumlah;
|
||||
incomeCashlessCasual += cashless.keluar.casual.income;
|
||||
|
||||
grandTotal += totalTunai + totalNonTunai;
|
||||
jmlCashlessLost += nLost.jumlah;
|
||||
incomeCashlessLost += nLost.income;
|
||||
|
||||
jmlCashlessMember += cashless.keluar.member.jumlah;
|
||||
incomeCashlessMember += cashless.keluar.member.income;
|
||||
|
||||
jmlCashlessManual += cashless.keluar.manual.jumlah;
|
||||
incomeCashlessManual += cashless.keluar.manual.income;
|
||||
|
||||
subTotalIncomeCashless =
|
||||
incomeCashlessCasual + incomeCashlessLost + incomeCashlessMember + incomeCashlessManual;
|
||||
|
||||
grandTotal = subTotalIncomeCash + subTotalIncomeCashless;
|
||||
|
||||
html += `
|
||||
<tr>
|
||||
<td rowspan="2" style="text-align: left;"><strong>${payment}</strong></td>
|
||||
@@ -836,7 +924,7 @@ function tablePayment(response) {
|
||||
<td data-value="0}">0</td>
|
||||
|
||||
<td>0</td>
|
||||
<td data-value="0"></td>
|
||||
<td data-value="0">0</td>
|
||||
|
||||
<td data-value="${totalTunai}"><strong>${rupiah(totalTunai)}</strong></td>
|
||||
</tr>
|
||||
@@ -873,13 +961,23 @@ function tablePayment(response) {
|
||||
// ===== FOOTER TOTAL =====
|
||||
html += `
|
||||
<tr class="table">
|
||||
<td rowspan="2" style="text-align: center;"><strong>TOTAL</strong></td>
|
||||
<td rowspan="2" style="text-align: center;"><strong>SUB TOTAL<br>Per Jenis Pembayaran</strong></td>
|
||||
<td style="text-align: left;"><span class="badge bg-success">Tunai</span></td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${jmlCashCasual}">${rupiah(jmlCashCasual)}</td>
|
||||
<td data-value="${incomeCashCasual}">${rupiah(incomeCashCasual)}</td>
|
||||
<td colspan="11">${rupiah(incomeCashCasual)}</td>
|
||||
<td data-value="${jmlCashLost}">${rupiah(jmlCashLost)}</td>
|
||||
<td data-value="${incomeCashLost}">${incomeCashLost}</td>
|
||||
<td data-value="${jmlCashMember}">${rupiah(jmlCashMember)}</td>
|
||||
<td data-value="${incomeCashMember}">${rupiah(incomeCashMember)}</td>
|
||||
<td data-value="${jmlCashManual}">${rupiah(jmlCashManual)}</td>
|
||||
<td data-value="${incomeCashManual}">${rupiah(incomeCashManual)}</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${incomeCashCasual}">${rupiah(incomeCashCasual)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left;"><span class="badge bg-warning">NON TUNAI</td>
|
||||
@@ -887,23 +985,33 @@ function tablePayment(response) {
|
||||
<td>0</td>
|
||||
<td>${jmlCashlessCasual}</td>
|
||||
<td data-value="${incomeCashlessCasual}">${rupiah(incomeCashlessCasual)}</td>
|
||||
<td colspan="11">${rupiah(incomeCashlessCasual)}</td>
|
||||
<td data-value="${jmlCashlessLost}">${rupiah(jmlCashlessLost)}</td>
|
||||
<td data-value="${incomeCashlessLost}">${rupiah(incomeCashlessLost)}</td>
|
||||
<td data-value="${jmlCashlessMember}">${rupiah(jmlCashlessMember)}</td>
|
||||
<td data-value="${incomeCashlessMember}">${rupiah(incomeCashlessMember)}</td>
|
||||
<td data-value="${jmlCashlessManual}">${rupiah(jmlCashlessManual)}</td>
|
||||
<td data-value="${incomeCashlessManual}">${rupiah(incomeCashlessManual)}</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td data-value="${subTotalIncomeCashless}">${rupiah(subTotalIncomeCashless)}</td>
|
||||
</tr>
|
||||
<tr class="table">
|
||||
<td colspan="3" class="text-center"><strong>GRAND TOTAL</strong></td>
|
||||
<td colspan="3" class="text-center"><strong>GRAND TOTAL<br>Pendapatan Per Pembayaran</strong></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0">${jmlCashCasual + jmlCashlessCasual}</td>
|
||||
<td colspan="0" data-value="${incomeCashCasual + incomeCashlessCasual}"><strong>${rupiah(incomeCashCasual + incomeCashlessCasual)}</strong></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0"></td>
|
||||
<td colspan="0" data-value="${incomeCashCasual + incomeCashlessCasual}">${rupiah(incomeCashCasual + incomeCashlessCasual)}</td>
|
||||
<td colspan="0" data-value="${jmlCashLost + jmlCashlessLost}">${rupiah(jmlCashLost + jmlCashlessLost)}</td>
|
||||
<td colspan="0" data-value="${incomeCashLost + incomeCashlessLost}">${rupiah(incomeCashLost + incomeCashlessLost)}</td>
|
||||
<td colspan="0" data-value="${jmlCashMember + incomeCashlessMember}">${rupiah(jmlCashMember + incomeCashlessMember)}</td>
|
||||
<td colspan="0" data-value="${incomeCashMember + incomeCashlessMember}">${rupiah(incomeCashMember + incomeCashlessMember)}</td>
|
||||
<td colspan="0" data-value="${jmlCashManual + jmlCashlessManual}">${rupiah(jmlCashManual + jmlCashlessManual)}</td>/td>
|
||||
<td colspan="0" data-value="${incomeCashManual + incomeCashlessManual}">${rupiah(incomeCashManual + incomeCashlessManual)}</td>
|
||||
<td colspan="0" data-value="0">0</td>/td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td colspan="0" data-value="0">0</td>
|
||||
<td><strong>${rupiah(grandTotal)}</strong></td>
|
||||
</tr>
|
||||
`;
|
||||
|
||||
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,131 @@
|
||||
$(document).ready(function () {
|
||||
|
||||
$(document).on('change', '.form-select', function () {
|
||||
if ($('option:selected', this).val() == '') {
|
||||
$(".nama").css('display', 'none');
|
||||
$(".nopol").css('display', 'none');
|
||||
$(".nocard").css('display', 'none');
|
||||
$(".notrans").css('display', 'none');
|
||||
// $(".site").val('');
|
||||
} else if ($('option:selected', this).val() == 'nama') {
|
||||
$(".nama").css('display', 'block');
|
||||
$(".nopol").css('display', 'none');
|
||||
$(".nocard").css('display', 'none');
|
||||
$(".notrans").css('display', 'none');
|
||||
$(".input-default").val('');
|
||||
} else if ($('option:selected', this).val() == 'nopol') {
|
||||
$(".nama").css('display', 'none');
|
||||
$(".nopol").css('display', 'block');
|
||||
$(".nocard").css('display', 'none');
|
||||
$(".notrans").css('display', 'none');
|
||||
$(".input-default").val('');
|
||||
} else if ($('option:selected', this).val() == 'nocard') {
|
||||
$(".nama").css('display', 'none');
|
||||
$(".nopol").css('display', 'none');
|
||||
$(".nocard").css('display', 'block');
|
||||
$(".notrans").css('display', 'none');
|
||||
$(".input-default").val('');
|
||||
} else if ($('option:selected', this).val() == 'notrans') {
|
||||
$(".nama").css('display', 'none');
|
||||
$(".nopol").css('display', 'none');
|
||||
$(".nocard").css('display', 'none');
|
||||
$(".notrans").css('display', 'block');
|
||||
$(".input-default").val('');
|
||||
} else {
|
||||
$(".position").css('display', 'none');
|
||||
$(".level-area").css('display', 'none');
|
||||
$(".input-default").val('');
|
||||
}
|
||||
});
|
||||
|
||||
var url = $('#example').data('url');
|
||||
|
||||
$('#search-button').on('click', function () {
|
||||
// Ambil nilai dari selected option
|
||||
var option = $('.select-option').val();
|
||||
|
||||
// Cek jika option yang dipilih bukan 'Pencarian Data...' yang berarti pilihan valid
|
||||
if (option && option !== '') {
|
||||
var inputField = $('.input-default:visible');
|
||||
|
||||
// Periksa apakah input tersebut kosong
|
||||
if (inputField.length === 0 || inputField.val().trim() === '') {
|
||||
// Jika kosong, tampilkan alert
|
||||
alert('Harap masukkan ' + (option === 'nopol' ? 'No. Polisi' : option === 'nocard' ? 'No. Card' : option === 'nama' ? 'Nama' : option === 'notrans' ? 'No. Transaksi' : 'No. Transaksi'));
|
||||
inputField.focus();
|
||||
return; // Hentikan proses jika input kosong
|
||||
}
|
||||
}
|
||||
console.log(option);
|
||||
|
||||
var formData = $('#search-form .input-default:visible').val();
|
||||
console.log(formData);
|
||||
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: "POST",
|
||||
data: $('#search-form').serialize(),
|
||||
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
|
||||
dataType: 'json',
|
||||
success: function (response) {
|
||||
var tbody = $('#example tbody');
|
||||
tbody.empty();
|
||||
|
||||
if (response.length !== 0) {
|
||||
// Kelompokkan data berdasarkan notrans
|
||||
var groupedData = {};
|
||||
response.forEach((element) => {
|
||||
if (!groupedData[element.notrans]) {
|
||||
groupedData[element.notrans] = [];
|
||||
}
|
||||
groupedData[element.notrans].push(element);
|
||||
});
|
||||
|
||||
// Generate HTML
|
||||
Object.keys(groupedData).forEach((notrans, index) => {
|
||||
var rows = groupedData[notrans];
|
||||
var rowspan = rows.length;
|
||||
|
||||
rows.forEach((element, rowIndex) => {
|
||||
var rowHtml = `
|
||||
<tr class="mb-2"
|
||||
data-notrans="${element.notrans}"
|
||||
data-nama="${element.nama}"
|
||||
data-alamat="${element.alamat}"
|
||||
data-telp="${element.telepon}"
|
||||
data-jmember="${element.jmember}"
|
||||
data-dept="${element.dept}"
|
||||
data-awal="${element.awal}"
|
||||
data-akhir="${element.akhir}"
|
||||
>
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" class="p2" style="text-align: center;">${index + 1}</td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" class="p2" style="padding: 2px;">${element.notrans}</td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" style="padding: 2px;">${element.nama}</td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" style="padding: 2px;">${element.alamat}</td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" style="padding: 2px;">${element.telepon}</td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" style="padding: 2px;">${element.jmember}</td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" style="padding: 2px;">${element.dept}</td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" width="200" style="text-align: center; padding: 2px;">${element.awal} <br> ${element.akhir}</td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" class="p-2" style="padding: 2px;"> ${[...new Set(rows.map(r => `${r.nopol || 'No. Polisi tidak ada'} (${r.vehicle || ''})`))].join('<br>')} </td>` : ''}
|
||||
${rowIndex === 0 ? `<td rowspan="${rowspan}" style="padding: 2px;">${[...new Set(rows.map(r => r.no_card || 'Tidak ada kartu'))].join('<br>')}</td>` : ''}
|
||||
</tr>
|
||||
`;
|
||||
// ${rowIndex === 0 ? `<td rowspan="${rowspan}" class="p-2" style="text-align: center;">
|
||||
// <button class="btn btn-secondary btn-xs extend-button mb-1" data-id="${element.notrans}">Extend</button>
|
||||
// <button class="btn btn-primary btn-xs edit-button mb-1" data-id="${element.notrans}">Edit</button>
|
||||
// <button class="btn btn-danger btn-xs delete-button mb-1" data-id="${element.notrans}">Delete</button>
|
||||
// </td>` : ''}
|
||||
tbody.append(rowHtml);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
alert("Data tidak ditemukan.");
|
||||
$('#example tbody').html(
|
||||
`<tr>
|
||||
<td colspan="11" style="text-align: center;"><p class="text-danger mt-3">Tidak ditemukan data</p></td>
|
||||
<tr>`);
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
@@ -0,0 +1,279 @@
|
||||
$(document).ready(function () {
|
||||
const today = moment();
|
||||
const startDate = moment(today).startOf("day").format("DD-MM-YYYY 00:00");
|
||||
const endDate = moment(today).endOf("day").format("DD-MM-YYYY 23:59");
|
||||
|
||||
$(".tambah-member").validate({
|
||||
rules: {
|
||||
nama: {
|
||||
required: true,
|
||||
},
|
||||
member: {
|
||||
required: true,
|
||||
},
|
||||
depart: {
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
nama: {
|
||||
required: "Masukkan nama member",
|
||||
},
|
||||
member: {
|
||||
required: "Jenis Member belum di pilih",
|
||||
},
|
||||
depart: {
|
||||
required: "Jenis Langganan belum di pilih",
|
||||
},
|
||||
},
|
||||
// errorElement: 'span',
|
||||
// errorPlacement: function (error, element) {
|
||||
// error.addClass('invalid-feedback');
|
||||
// // element.closest('.form-group').append(error);
|
||||
// },
|
||||
highlight: function (element, errorClass, validClass) {
|
||||
$(element).addClass("is-invalid");
|
||||
},
|
||||
unhighlight: function (element, errorClass, validClass) {
|
||||
$(element).removeClass("is-invalid");
|
||||
},
|
||||
});
|
||||
|
||||
// const startDate = moment().startOf("day"); // hari ini jam 00:00
|
||||
// const endDate = moment().add(7, "days").endOf("day"); // +7 hari
|
||||
|
||||
$(".input-daterange-timepicker").daterangepicker(
|
||||
// 👈 method-nya "daterangepicker", bukan "datepicker"
|
||||
{
|
||||
timePicker: true,
|
||||
locale: {
|
||||
format: "DD-MM-YYYY HH:mm",
|
||||
},
|
||||
timePicker24Hour: true,
|
||||
timePickerSeconds: false,
|
||||
buttonClasses: ["btn", "btn-sm"],
|
||||
applyClass: "btn-danger",
|
||||
cancelClass: "btn-inverse",
|
||||
startDate: startDate,
|
||||
endDate: endDate,
|
||||
parentEl: "#modal-member", // 👈 daterangepicker pakai "parentEl", bukan "container"
|
||||
},
|
||||
function (startDate, endDate) {
|
||||
console.log(
|
||||
`Range selected: ${startDate.format("DD-MM-YYYY HH:mm")} s/d ${endDate.format("DD-MM-YYYY HH:mm")}`,
|
||||
);
|
||||
$(".input-daterange-timepicker").val(
|
||||
`${startDate.format("DD-MM-YYYY HH:mm")} s/d ${endDate.format("DD-MM-YYYY HH:mm")}`,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
// Set nilai awal dan akhir di input
|
||||
$(".input-daterange-timepicker").val(`${startDate} - ${endDate}`);
|
||||
// $('.awal').val(startDate);
|
||||
// $('.akhir').val(endDate);
|
||||
|
||||
$("#jenisVehicle").on("change", function () {
|
||||
var jenisMembers = member;
|
||||
var vehicleSelected = $(this).val();
|
||||
var $jenisMember = $("#jenis-member");
|
||||
// console.log(jenisMembers);
|
||||
|
||||
$jenisMember.empty();
|
||||
$jenisMember.append('<option selected value="">Pilih Jenis</option>');
|
||||
|
||||
jenisMembers.forEach((item) => {
|
||||
if (item.id_mobil === vehicleSelected) {
|
||||
if (item.id_mobil !== 0) {
|
||||
$jenisMember.append(
|
||||
`<option value="${item.tarif}">${item.jenis_langganan} - ${item.tarif} </option>`,
|
||||
);
|
||||
console.log($jenisMember);
|
||||
} else {
|
||||
$jenisMember.append(`<option value="">Tidak ada Pilihan </option>`);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#nopol-add").on("click", function () {
|
||||
var nopol = $(".nopol-add").val().trim();
|
||||
console.log(nopol);
|
||||
// var vehicle = $('#jenisVehicle option:selected').text();
|
||||
var vehicle = $("#jenisVehicle").val();
|
||||
var vehicleName = $("#jenisVehicle option:selected").text();
|
||||
var member = $("#jenis-member option:selected").text();
|
||||
var merk = $(".merk").val().trim();
|
||||
$(".nopol-add").removeClass("is-invalid"); // Hapus kelas jika ada sebelumnya
|
||||
$(".nopol-add").next(".invalid-feedback").hide();
|
||||
|
||||
if (!vehicle) {
|
||||
alert("Wajib pilih jenis kendaraan");
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "stiker/checkField",
|
||||
type: "POST",
|
||||
data: { nopol: nopol },
|
||||
headers: { "X-CSRF-token": $('meta[name="csrf-token"]').attr("content") },
|
||||
success: function (r) {
|
||||
if (r.response === true) {
|
||||
var rowhtml = `
|
||||
<tr>
|
||||
<td class="text-center">${nopol}</td>
|
||||
<td class="text-center" data-value="${vehicle}"">${vehicleName}</td>
|
||||
<td class="text-center">${member}</td>
|
||||
<td class="text-center">${merk}</td>
|
||||
<td class="text-center p-1" style="text-align: center;">
|
||||
<button class="btn btn-danger btn-xs delete-row">Hapus<buttion>
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
$("#list-nopol").append(rowhtml);
|
||||
console.log("Berhasil menambahkan " + nopol);
|
||||
|
||||
$(".nopol-add").val("");
|
||||
$("#jenisVehicle").val("");
|
||||
$("#jenis-member").val("");
|
||||
$(".merk").val("");
|
||||
} else {
|
||||
// var warn = `<div class="invalid-feedback">Nopol sudah ada</div>`;
|
||||
$(".nopol-add").addClass("is-invalid"); // Tambahkan kelas invalid
|
||||
$(".nopol-add").next(".invalid-feedback").text(r.message).show(); // Tampilkan pesan error
|
||||
console.log(r.message);
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
alert("Terjadi kesalahan saat memeriksa nopol");
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
$(".kartu").on("keydown", function (e) {
|
||||
var kartu = $(".kartu").val().trim();
|
||||
|
||||
if (e.key === "Enter") {
|
||||
// $.ajax ({
|
||||
// url: 'member/checkField',
|
||||
// type: 'POST',
|
||||
// data: {nocard: kartu},
|
||||
// headers: {'X-CSRF-token': $('meta[name="csrf-token"]').attr('content')},
|
||||
// success: function (r) {
|
||||
// if (r.response === true) {
|
||||
e.preventDefault();
|
||||
$(".nourut").focus();
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
}
|
||||
});
|
||||
|
||||
$(".nourut").on("keydown", function (e) {
|
||||
if (e.key === "Enter") {
|
||||
e.preventDefault();
|
||||
|
||||
var nocard = $(".kartu").val().trim();
|
||||
var nourut = $(".nourut").val().trim();
|
||||
|
||||
var rowHtml = `
|
||||
<tr>
|
||||
<td class="text-center strong">${nocard}</td>
|
||||
<td class="text-center strong">${nourut}</td>
|
||||
<td class="text-center p-2" >
|
||||
<button class="btn btn-danger btn-xs delete-row">Hapus<buttion>
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
$("#list-card").append(rowHtml);
|
||||
$(".kartu").val("");
|
||||
$(".nourut").val("");
|
||||
}
|
||||
});
|
||||
|
||||
$("#list-card").on("click", ".delete-row", function () {
|
||||
$(this).closest("tr").remove(); // Hapus baris yang diklik
|
||||
});
|
||||
|
||||
$(".simpan").on("click", function () {
|
||||
var tombol = $(this);
|
||||
var formCollect = $("#add-member").serialize();
|
||||
var collectNopol = [];
|
||||
var cardCollect = [];
|
||||
|
||||
$("#list-nopol tr").each(function () {
|
||||
var row = $(this);
|
||||
var rowData = {
|
||||
nopol: row.find("td:nth-child(1)").text().trim(),
|
||||
vehicle: row.find("td:nth-child(2)").data("value"),
|
||||
member: row.find("td:nth-child(3)").text().trim(),
|
||||
merk: row.find("td:nth-child(4)").text().trim(),
|
||||
};
|
||||
collectNopol.push(rowData);
|
||||
});
|
||||
|
||||
console.log(collectNopol);
|
||||
|
||||
$("#list-card tr").each(function () {
|
||||
var row = $(this);
|
||||
var rowCard = {
|
||||
nocard: row.find("td:nth-child(1)").text(),
|
||||
nourut: row.find("td:nth-child(2)").text(),
|
||||
};
|
||||
cardCollect.push(rowCard);
|
||||
});
|
||||
|
||||
console.log(cardCollect);
|
||||
|
||||
const formDataString = formCollect;
|
||||
|
||||
// Mengonversi query string menjadi objek
|
||||
const formDataObj = {};
|
||||
const searchParams = new URLSearchParams(formDataString);
|
||||
|
||||
searchParams.forEach((value, key) => {
|
||||
formDataObj[key] = value;
|
||||
});
|
||||
|
||||
console.log(formDataObj);
|
||||
|
||||
var allData = {
|
||||
formData: formDataObj,
|
||||
nopolData: collectNopol,
|
||||
cardNumber: cardCollect,
|
||||
};
|
||||
|
||||
if ($(".tambah-member").valid()) {
|
||||
$.ajax({
|
||||
url: $("#add-member").attr("action"),
|
||||
type: "POST",
|
||||
data: allData,
|
||||
headers: { "X-CSRF-token": $('meta[name="csrf-token"]').attr("content") },
|
||||
beforeSend: function () {
|
||||
tombol.attr("disabled", true);
|
||||
},
|
||||
success: function (r) {
|
||||
// alert('Data berhasil dikirim');
|
||||
$("#modal-member").modal("hide");
|
||||
if (r.response == true) {
|
||||
Swal.fire({
|
||||
title: "Berhasil!!",
|
||||
text: "Member anda telah terdaftar !!",
|
||||
timer: 5000,
|
||||
showConfirmButton: !1,
|
||||
}).then(function () {
|
||||
// Reload halaman setelah SweetAlert ditutup
|
||||
location.reload(); // Ini akan me-reload halaman
|
||||
});
|
||||
} else if (r.response == false) {
|
||||
Swal.fire("Oops...", "Terjadi kendala !!", "silahkan hubungi admin", "error");
|
||||
}
|
||||
console.log(r);
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
alert("Terjadi kesalahan: " + error);
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user