Finalize all-report
This commit is contained in:
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);
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user