Perbaikan laporan semua transaksi with print
This commit is contained in:
+119
-104
@@ -1,18 +1,29 @@
|
||||
$(document).ready(function () {
|
||||
console.log($.fn.jquery);
|
||||
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');
|
||||
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({
|
||||
$(".tambah-member").validate({
|
||||
rules: {
|
||||
nama: {
|
||||
required: true,
|
||||
},
|
||||
member: {
|
||||
required: true,
|
||||
},
|
||||
depart: {
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
nama: {
|
||||
required: 'Masukkan nama member',
|
||||
required: "Masukkan nama member",
|
||||
},
|
||||
member: {
|
||||
required: "Jenis Member belum di pilih",
|
||||
},
|
||||
depart: {
|
||||
required: "Jenis Langganan belum di pilih",
|
||||
},
|
||||
},
|
||||
// errorElement: 'span',
|
||||
@@ -21,42 +32,51 @@ $(document).ready(function () {
|
||||
// // element.closest('.form-group').append(error);
|
||||
// },
|
||||
highlight: function (element, errorClass, validClass) {
|
||||
$(element).addClass('is-invalid');
|
||||
$(element).addClass("is-invalid");
|
||||
},
|
||||
unhighlight: function (element, errorClass, validClass) {
|
||||
$(element).removeClass('is-invalid');
|
||||
}
|
||||
$(element).removeClass("is-invalid");
|
||||
},
|
||||
});
|
||||
|
||||
$('.input-daterange-timepicker').daterangepicker({
|
||||
// singleDatePicker: true,
|
||||
timePicker: true,
|
||||
locale: {
|
||||
format: 'DD-MM-YYYY HH:mm'
|
||||
// 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"
|
||||
},
|
||||
timePicker24Hour: true,
|
||||
timePickerSeconds: false,
|
||||
buttonClasses: ['btn', 'btn-sm'],
|
||||
applyClass: 'btn-danger',
|
||||
cancelClass: 'btn-inverse',
|
||||
startDate: startDate,
|
||||
endDate: endDate,
|
||||
}, 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')}`);
|
||||
// $('.awal').val(`${startDate.format('DD-MM-YYYY HH:mm')}`);
|
||||
// $('.akhir').val(`${endDate.format('DD-MM-YYYY HH:mm')}`);
|
||||
});
|
||||
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}`);
|
||||
$(".input-daterange-timepicker").val(`${startDate} - ${endDate}`);
|
||||
// $('.awal').val(startDate);
|
||||
// $('.akhir').val(endDate);
|
||||
|
||||
$('#jenisVehicle').on('change', function () {
|
||||
$("#jenisVehicle").on("change", function () {
|
||||
var jenisMembers = member;
|
||||
var vehicleSelected = $(this).val();
|
||||
var $jenisMember = $('#jenis-member');
|
||||
var $jenisMember = $("#jenis-member");
|
||||
// console.log(jenisMembers);
|
||||
|
||||
$jenisMember.empty();
|
||||
@@ -64,42 +84,39 @@ $(document).ready(function () {
|
||||
|
||||
jenisMembers.forEach((item) => {
|
||||
if (item.id_mobil === vehicleSelected) {
|
||||
if (item.id_mobil !== 0 ) {
|
||||
if (item.id_mobil !== 0) {
|
||||
$jenisMember.append(
|
||||
`<option value="${item.tarif}">${item.jenis_langganan} - ${item.tarif} </option>`
|
||||
`<option value="${item.tarif}">${item.jenis_langganan} - ${item.tarif} </option>`,
|
||||
);
|
||||
console.log($jenisMember);
|
||||
} else {
|
||||
$jenisMember.append(
|
||||
`<option value="">Tidak ada Pilihan </option>`
|
||||
);
|
||||
$jenisMember.append(`<option value="">Tidak ada Pilihan </option>`);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
$('#nopol-add').on('click', function() {
|
||||
var nopol = $('.nopol-add').val().trim();
|
||||
$("#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();
|
||||
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');
|
||||
alert("Wajib pilih jenis kendaraan");
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax ({
|
||||
url: 'member/checkField',
|
||||
type: 'POST',
|
||||
$.ajax({
|
||||
url: "stiker/checkField",
|
||||
type: "POST",
|
||||
data: { nopol: nopol },
|
||||
headers: {'X-CSRF-token': $('meta[name="csrf-token"]').attr('content')},
|
||||
headers: { "X-CSRF-token": $('meta[name="csrf-token"]').attr("content") },
|
||||
success: function (r) {
|
||||
if (r.response === true) {
|
||||
var rowhtml = `
|
||||
@@ -113,51 +130,51 @@ $(document).ready(function () {
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
$('#list-nopol').append(rowhtml);
|
||||
console.log('Berhasil menambahkan ' + nopol)
|
||||
$("#list-nopol").append(rowhtml);
|
||||
console.log("Berhasil menambahkan " + nopol);
|
||||
|
||||
$('.nopol-add').val('');
|
||||
$('#jenisVehicle').val('');
|
||||
$('#jenis-member').val('');
|
||||
$('.merk').val('');
|
||||
$(".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
|
||||
$(".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');
|
||||
}
|
||||
alert("Terjadi kesalahan saat memeriksa nopol");
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
$('.kartu').on('keydown', function (e) {
|
||||
var kartu = $('.kartu').val().trim();
|
||||
$(".kartu").on("keydown", function (e) {
|
||||
var kartu = $(".kartu").val().trim();
|
||||
|
||||
if (e.key === 'Enter') {
|
||||
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();
|
||||
// }
|
||||
// if (r.response === true) {
|
||||
e.preventDefault();
|
||||
$(".nourut").focus();
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
}
|
||||
});
|
||||
|
||||
$('.nourut').on('keydown', function (e) {
|
||||
if (e.key === 'Enter') {
|
||||
$(".nourut").on("keydown", function (e) {
|
||||
if (e.key === "Enter") {
|
||||
e.preventDefault();
|
||||
|
||||
var nocard = $('.kartu').val().trim();
|
||||
var nourut = $('.nourut').val().trim();
|
||||
var nocard = $(".kartu").val().trim();
|
||||
var nourut = $(".nourut").val().trim();
|
||||
|
||||
var rowHtml = `
|
||||
<tr>
|
||||
@@ -165,44 +182,43 @@ $(document).ready(function () {
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
$('#list-card').append(rowHtml);
|
||||
$('.kartu').val('');
|
||||
$('.nourut').val('');
|
||||
$("#list-card").append(rowHtml);
|
||||
$(".kartu").val("");
|
||||
$(".nourut").val("");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#list-card').on('click', '.delete-row', function () {
|
||||
$(this).closest('tr').remove(); // Hapus baris yang diklik
|
||||
$("#list-card").on("click", ".delete-row", function () {
|
||||
$(this).closest("tr").remove(); // Hapus baris yang diklik
|
||||
});
|
||||
|
||||
$('.simpan').on('click', function () {
|
||||
$(".simpan").on("click", function () {
|
||||
var tombol = $(this);
|
||||
var formCollect = $('#add-member').serialize();
|
||||
var formCollect = $("#add-member").serialize();
|
||||
var collectNopol = [];
|
||||
var cardCollect = [];
|
||||
|
||||
$('#list-nopol tr').each(function () {
|
||||
$("#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(),
|
||||
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 () {
|
||||
$("#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(),
|
||||
nocard: row.find("td:nth-child(1)").text(),
|
||||
nourut: row.find("td:nth-child(2)").text(),
|
||||
};
|
||||
cardCollect.push(rowCard);
|
||||
});
|
||||
@@ -227,38 +243,37 @@ $(document).ready(function () {
|
||||
cardNumber: cardCollect,
|
||||
};
|
||||
|
||||
if($('.tambah-member').valid()) {
|
||||
if ($(".tambah-member").valid()) {
|
||||
$.ajax({
|
||||
url: $('#add-member').attr('action'),
|
||||
type: 'POST',
|
||||
url: $("#add-member").attr("action"),
|
||||
type: "POST",
|
||||
data: allData,
|
||||
headers: {'X-CSRF-token': $('meta[name="csrf-token"]').attr('content')},
|
||||
headers: { "X-CSRF-token": $('meta[name="csrf-token"]').attr("content") },
|
||||
beforeSend: function () {
|
||||
tombol.attr('disabled',true);
|
||||
tombol.attr("disabled", true);
|
||||
},
|
||||
success: function (r) {
|
||||
// alert('Data berhasil dikirim');
|
||||
$('#modal-member').modal('hide');
|
||||
$("#modal-member").modal("hide");
|
||||
if (r.response == true) {
|
||||
Swal.fire(
|
||||
{
|
||||
title: "Berhasil!!",
|
||||
text: "Member anda telah terdaftar !!",
|
||||
timer: 5000, showConfirmButton: !1
|
||||
}
|
||||
).then(function() {
|
||||
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);
|
||||
}
|
||||
alert("Terjadi kesalahan: " + error);
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Vendored
+1
File diff suppressed because one or more lines are too long
@@ -32,7 +32,8 @@ function printPDF(data) {
|
||||
doc.setFont("helvetica", "normal");
|
||||
doc.setFontSize(9);
|
||||
doc.text("Tanggal : " + (data.vehicle.date ?? "-"), pageWidth / 2, 23, { align: "center" });
|
||||
doc.text("By : Harian", pageWidth - 14, 12, { align: "right" });
|
||||
doc.text("By : " + (data.vehicle.reportTime ?? "-"), pageWidth - 14, 12, { align: "right" });
|
||||
// doc.text("By : Harian", pageWidth - 14, 12, { align: "right" });
|
||||
|
||||
// ===== SUSUN BODY TABEL =====
|
||||
const vehicleBody = [];
|
||||
@@ -434,6 +435,11 @@ function printPDF(data) {
|
||||
doc.setFontSize(11);
|
||||
doc.text("Rekap Transaksi Per Petugas", pageWidth / 2, officerStartY - 5, { align: "center" });
|
||||
|
||||
doc.setFont("helvetica", "normal");
|
||||
doc.setFontSize(9);
|
||||
doc.text("Tanggal : " + (data.vehicle.date ?? "-"), pageWidth / 2, 23, { align: "center" });
|
||||
doc.text("By : " + (data.vehicle.reportTime ?? "-"), pageWidth - 14, 12, { align: "right" });
|
||||
|
||||
doc.autoTable({
|
||||
head: officerHead,
|
||||
body: officerBody,
|
||||
@@ -518,7 +524,7 @@ function printPDF(data) {
|
||||
rupiah(oCasual.income),
|
||||
|
||||
nLost.jumlah,
|
||||
cash.totalCashless,
|
||||
rupiah(nLost.income),
|
||||
|
||||
nMember.jumlah,
|
||||
rupiah(nMember.income),
|
||||
@@ -535,11 +541,11 @@ 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;
|
||||
ptotalNonTunaiNilai += cashless.totalCashless || 0;
|
||||
pgrandTotal += (cash.totalCash || 0) + (cashless.totalCashless || 0);
|
||||
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);
|
||||
});
|
||||
|
||||
// baris TOTAL & GRAND TOTAL
|
||||
@@ -633,7 +639,12 @@ function printPDF(data) {
|
||||
// doc.addPage();
|
||||
doc.setFont("helvetica", "bold");
|
||||
doc.setFontSize(11);
|
||||
doc.text("Rekap Transaksi Per Petugas", pageWidth / 2, paymentStartY - 5, { align: "center" });
|
||||
doc.text("Rekap Transaksi Per Pembayaran", pageWidth / 2, paymentStartY - 5, { align: "center" });
|
||||
|
||||
doc.setFont("helvetica", "normal");
|
||||
doc.setFontSize(9);
|
||||
doc.text("Tanggal : " + (data.vehicle.date ?? "-"), pageWidth / 2, 23, { align: "center" });
|
||||
doc.text("By : " + (data.vehicle.reportTime ?? "-"), pageWidth - 14, 12, { align: "right" });
|
||||
|
||||
doc.autoTable({
|
||||
head: paymentHead,
|
||||
@@ -646,28 +657,6 @@ function printPDF(data) {
|
||||
columnStyles: { 0: { halign: "left" } },
|
||||
});
|
||||
|
||||
// ===== TABEL OVER NIGHT (di bawah tabel utama) =====
|
||||
// const ponBody = data.payment.overNight.map((on) => [
|
||||
// on.jenis_mobil ?? "-",
|
||||
// on.overNight,
|
||||
// on.onExpired,
|
||||
// (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({
|
||||
// phead: [["Jenis Kend", "Menginap", "ON (Expired)", "Total"]],
|
||||
// body: ponBody,
|
||||
// startY: doc.lastAutoTable.finalY + 13,
|
||||
// theme: "grid",
|
||||
// styles: { fontSize: 7, cellPadding: 1 },
|
||||
// headStyles: { fontSize: 8, fillColor: [230, 230, 230], textColor: 0 },
|
||||
// tableWidth: 100,
|
||||
// });
|
||||
|
||||
doc.save(`Rekap Harian - ${data.vehicle.date}.pdf`);
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user