Filter periode member + harga otomatis + soft delete arsip + ganti alert ke Swal
This commit is contained in:
@@ -53,6 +53,18 @@ public function getMember(Request $request)
|
|||||||
$unitKerja = $request->input("departement");
|
$unitKerja = $request->input("departement");
|
||||||
$vehicle = $request->input("vehicle");
|
$vehicle = $request->input("vehicle");
|
||||||
$isActive = $request->input("isActive");
|
$isActive = $request->input("isActive");
|
||||||
|
$tglAwal = $request->input("tgl_awal");
|
||||||
|
$tglAkhir = $request->input("tgl_akhir");
|
||||||
|
|
||||||
|
if ($tglAwal && !preg_match('/^\d{4}-\d{2}-\d{2}$/', $tglAwal)) {
|
||||||
|
return response()->json(['message' => 'Format periode awal tidak valid (YYYY-MM-DD).'], 422);
|
||||||
|
}
|
||||||
|
if ($tglAkhir && !preg_match('/^\d{4}-\d{2}-\d{2}$/', $tglAkhir)) {
|
||||||
|
return response()->json(['message' => 'Format periode akhir tidak valid (YYYY-MM-DD).'], 422);
|
||||||
|
}
|
||||||
|
if ($tglAwal && $tglAkhir && $tglAkhir < $tglAwal) {
|
||||||
|
return response()->json(['message' => 'Periode akhir tidak boleh sebelum periode awal.'], 422);
|
||||||
|
}
|
||||||
|
|
||||||
if ($request->ajax()) {
|
if ($request->ajax()) {
|
||||||
$dataStiker = DB::table("transaksi_stiker as ts")
|
$dataStiker = DB::table("transaksi_stiker as ts")
|
||||||
@@ -107,8 +119,31 @@ public function getMember(Request $request)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($request->input("isActive") == "1") {
|
if ($request->input("isActive") == "1") {
|
||||||
|
// Langganan aktif: yang berlaku saat ini.
|
||||||
$dataStiker->whereRaw("NOW() BETWEEN ts.awal AND ts.akhir");
|
$dataStiker->whereRaw("NOW() BETWEEN ts.awal AND ts.akhir");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Periode tanggal/terakhir-ubah: jalan bareng toggle aktif maupun mati.
|
||||||
|
if ($tglAwal || $tglAkhir) {
|
||||||
|
// Saring berdasarkan tanggal ATAU tgl_edited.
|
||||||
|
$dataStiker->where(function ($w) use ($tglAwal, $tglAkhir) {
|
||||||
|
$w->where(function ($x) use ($tglAwal, $tglAkhir) {
|
||||||
|
if ($tglAwal) {
|
||||||
|
$x->whereDate("ts.tanggal", ">=", $tglAwal);
|
||||||
|
}
|
||||||
|
if ($tglAkhir) {
|
||||||
|
$x->whereDate("ts.tanggal", "<=", $tglAkhir);
|
||||||
|
}
|
||||||
|
})->orWhere(function ($x) use ($tglAwal, $tglAkhir) {
|
||||||
|
if ($tglAwal) {
|
||||||
|
$x->whereDate("ts.tgl_edited", ">=", $tglAwal);
|
||||||
|
}
|
||||||
|
if ($tglAkhir) {
|
||||||
|
$x->whereDate("ts.tgl_edited", "<=", $tglAkhir);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
// Log::info($dataStiker->toSql());
|
// Log::info($dataStiker->toSql());
|
||||||
|
|
||||||
$dataStiker = $dataStiker->get();
|
$dataStiker = $dataStiker->get();
|
||||||
@@ -422,8 +457,48 @@ public function update(Request $request, $id)
|
|||||||
* @param int $id
|
* @param int $id
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* Soft delete: arsipkan ke transaksi_stiker_res, lalu hapus baris asli
|
||||||
|
* (header + detail kendaraan + kartu) dalam satu transaksi. Tanpa hard-delete
|
||||||
|
* tanpa jejak — data tersimpan di tabel _res.
|
||||||
|
*/
|
||||||
public function destroy($id)
|
public function destroy($id)
|
||||||
{
|
{
|
||||||
//
|
return DB::transaction(function () use ($id) {
|
||||||
|
$trx = DB::table("transaksi_stiker")->where("notrans", $id)->first();
|
||||||
|
if (!$trx) {
|
||||||
|
return response()->json(["success" => false, "message" => "Data tidak ditemukan."], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$detail = DB::table("detail_transaksi_stiker")->where("notrans", $id)->orderBy("nopol")->first();
|
||||||
|
|
||||||
|
DB::table("transaksi_stiker_res")->insert([
|
||||||
|
"notrans" => $trx->notrans,
|
||||||
|
"nama" => $trx->nama,
|
||||||
|
"alamat" => $trx->alamat,
|
||||||
|
"telepon" => $trx->telepon,
|
||||||
|
"jenis_transaksi" => $trx->jenis_transaksi,
|
||||||
|
"awal" => $trx->awal,
|
||||||
|
"harga" => $trx->harga,
|
||||||
|
"keterangan" => $trx->keterangan,
|
||||||
|
"tanggal" => $trx->tanggal,
|
||||||
|
"operator" => $trx->operator,
|
||||||
|
"akhir" => $trx->akhir,
|
||||||
|
"maks" => $trx->maks,
|
||||||
|
"no_id" => $trx->no_id,
|
||||||
|
"unit_kerja" => $trx->unit_kerja,
|
||||||
|
"no_induk" => $trx->no_induk,
|
||||||
|
"nopol" => $detail->nopol ?? null,
|
||||||
|
"jenis_mobil" => $detail->jenis_mobil ?? null,
|
||||||
|
"adm" => $detail->adm ?? null,
|
||||||
|
"svr_date" => now(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
DB::table("detail_transaksi_stiker")->where("notrans", $id)->delete();
|
||||||
|
DB::table("card_member")->where("notrans", $trx->no_id)->delete();
|
||||||
|
DB::table("transaksi_stiker")->where("notrans", $id)->delete();
|
||||||
|
|
||||||
|
return response()->json(["success" => true, "message" => "Data diarsipkan ke transaksi_stiker_res."]);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,25 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
var url = $("#example").data("url");
|
var url = $("#example").data("url");
|
||||||
|
|
||||||
|
// Satu input periode (date-range) -> isi hidden tgl_awal/tgl_akhir (YYYY-MM-DD).
|
||||||
|
if ($.fn.daterangepicker && $(".input-daterange-filter").length) {
|
||||||
|
$(".input-daterange-filter").daterangepicker({
|
||||||
|
autoUpdateInput: false,
|
||||||
|
locale: { format: "DD-MM-YYYY", cancelLabel: "Hapus" },
|
||||||
|
parentEl: "#search-form",
|
||||||
|
});
|
||||||
|
$(".input-daterange-filter").on("apply.daterangepicker", function (ev, picker) {
|
||||||
|
$(this).val(picker.startDate.format("DD-MM-YYYY") + " - " + picker.endDate.format("DD-MM-YYYY"));
|
||||||
|
$("#tgl-awal").val(picker.startDate.format("YYYY-MM-DD"));
|
||||||
|
$("#tgl-akhir").val(picker.endDate.format("YYYY-MM-DD"));
|
||||||
|
});
|
||||||
|
$(".input-daterange-filter").on("cancel.daterangepicker", function () {
|
||||||
|
$(this).val("");
|
||||||
|
$("#tgl-awal").val("");
|
||||||
|
$("#tgl-akhir").val("");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$("#search-button").on("click", function () {
|
$("#search-button").on("click", function () {
|
||||||
let searchBy = $("#search-by").val();
|
let searchBy = $("#search-by").val();
|
||||||
let searchValue = $("#search-value").val().trim();
|
let searchValue = $("#search-value").val().trim();
|
||||||
@@ -60,7 +79,7 @@ $(document).ready(function () {
|
|||||||
notrans: "No. Transaksi",
|
notrans: "No. Transaksi",
|
||||||
};
|
};
|
||||||
|
|
||||||
alert("Harap masukkan " + (label[searchBy] || "kata kunci"));
|
Swal.fire({icon: "warning", title: "Belum lengkap", text: "Harap masukkan " + (label[searchBy] || "kata kunci")});
|
||||||
|
|
||||||
$("#search-value").focus();
|
$("#search-value").focus();
|
||||||
|
|
||||||
@@ -146,7 +165,6 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
alert("Data tidak ditemukan.");
|
|
||||||
$("#example tbody").html(
|
$("#example tbody").html(
|
||||||
`<tr>
|
`<tr>
|
||||||
<td colspan="11" style="text-align: center;"><p class="text-danger mt-3">Tidak ditemukan data</p></td>
|
<td colspan="11" style="text-align: center;"><p class="text-danger mt-3">Tidak ditemukan data</p></td>
|
||||||
@@ -154,6 +172,17 @@ $(document).ready(function () {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
error: function (xhr) {
|
||||||
|
let msg = "Gagal memuat data.";
|
||||||
|
if (xhr.status === 422 && xhr.responseJSON?.message) msg = xhr.responseJSON.message;
|
||||||
|
$("#example tbody").html(
|
||||||
|
`<tr><td colspan="11" class="text-center text-danger py-4">${msg}</td></tr>`,
|
||||||
|
);
|
||||||
|
Swal.fire({icon: "error", title: "Pencarian gagal", text: msg});
|
||||||
|
},
|
||||||
|
complete: function () {
|
||||||
|
$("#search-button").prop("disabled", false).html('<i class="fa fa-search me-2"></i> Cari Data...');
|
||||||
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -96,6 +96,16 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Jumlahkan tarif semua kendaraan di list -> isi otomatis ke Harga.
|
||||||
|
// Harga dikirim angka polos (kolom double), tanpa pemisah ribuan.
|
||||||
|
function updateHarga() {
|
||||||
|
let total = 0;
|
||||||
|
$("#modal-member #list-nopol tr").each(function () {
|
||||||
|
total += parseFloat($(this).data("tarif")) || 0;
|
||||||
|
});
|
||||||
|
$("#modal-member input[name='harga']").val(total);
|
||||||
|
}
|
||||||
|
|
||||||
$("#nopol-add").on("click", function () {
|
$("#nopol-add").on("click", function () {
|
||||||
var nopol = $(".nopol-add").val().trim();
|
var nopol = $(".nopol-add").val().trim();
|
||||||
console.log(nopol);
|
console.log(nopol);
|
||||||
@@ -103,6 +113,7 @@ $(document).ready(function () {
|
|||||||
var vehicle = $("#jenisVehicle").val();
|
var vehicle = $("#jenisVehicle").val();
|
||||||
var vehicleName = $("#jenisVehicle option:selected").text();
|
var vehicleName = $("#jenisVehicle option:selected").text();
|
||||||
var member = $("#jenis-member option:selected").text();
|
var member = $("#jenis-member option:selected").text();
|
||||||
|
var tarif = parseFloat($("#jenis-member").val()) || 0;
|
||||||
var merk = $(".merk").val().trim();
|
var merk = $(".merk").val().trim();
|
||||||
$(".nopol-add").removeClass("is-invalid"); // Hapus kelas jika ada sebelumnya
|
$(".nopol-add").removeClass("is-invalid"); // Hapus kelas jika ada sebelumnya
|
||||||
$(".nopol-add").next(".invalid-feedback").hide();
|
$(".nopol-add").next(".invalid-feedback").hide();
|
||||||
@@ -120,7 +131,7 @@ $(document).ready(function () {
|
|||||||
success: function (r) {
|
success: function (r) {
|
||||||
if (r.response === true) {
|
if (r.response === true) {
|
||||||
var rowhtml = `
|
var rowhtml = `
|
||||||
<tr>
|
<tr data-tarif="${tarif}">
|
||||||
<td class="text-center">${nopol}</td>
|
<td class="text-center">${nopol}</td>
|
||||||
<td class="text-center" data-value="${vehicle}">${vehicleName}</td>
|
<td class="text-center" data-value="${vehicle}">${vehicleName}</td>
|
||||||
<td class="text-center">${member}</td>
|
<td class="text-center">${member}</td>
|
||||||
@@ -132,6 +143,7 @@ $(document).ready(function () {
|
|||||||
`;
|
`;
|
||||||
$("#list-nopol").append(rowhtml);
|
$("#list-nopol").append(rowhtml);
|
||||||
console.log("Berhasil menambahkan " + nopol);
|
console.log("Berhasil menambahkan " + nopol);
|
||||||
|
updateHarga();
|
||||||
|
|
||||||
$(".nopol-add").val("");
|
$(".nopol-add").val("");
|
||||||
$("#jenisVehicle").val("");
|
$("#jenisVehicle").val("");
|
||||||
@@ -195,6 +207,11 @@ $(document).ready(function () {
|
|||||||
$(this).closest("tr").remove(); // Hapus baris yang diklik
|
$(this).closest("tr").remove(); // Hapus baris yang diklik
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#list-nopol").on("click", ".delete-row", function () {
|
||||||
|
$(this).closest("tr").remove();
|
||||||
|
updateHarga();
|
||||||
|
});
|
||||||
|
|
||||||
$(".simpan").on("click", function () {
|
$(".simpan").on("click", function () {
|
||||||
var tombol = $(this);
|
var tombol = $(this);
|
||||||
var formCollect = $("#add-member").serialize();
|
var formCollect = $("#add-member").serialize();
|
||||||
@@ -245,6 +262,9 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
console.log("FORM ADD:", allData);
|
console.log("FORM ADD:", allData);
|
||||||
|
|
||||||
|
updateHarga(); // pastikan harga = jumlah tarif kendaraan sebelum simpan
|
||||||
|
formDataObj.harga = $("#modal-member input[name='harga']").val();
|
||||||
|
|
||||||
if ($(".tambah-member").valid()) {
|
if ($(".tambah-member").valid()) {
|
||||||
const saveBtn = tombol;
|
const saveBtn = tombol;
|
||||||
const saveHtml = saveBtn.html();
|
const saveHtml = saveBtn.html();
|
||||||
|
|||||||
@@ -39,6 +39,37 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
var url = $("#example").data("url");
|
var url = $("#example").data("url");
|
||||||
|
|
||||||
|
function syncPeriode() {
|
||||||
|
const aktif = $("#isActive").is(":checked");
|
||||||
|
$("#periode").prop("disabled", false);
|
||||||
|
$("#periode-hint").text(
|
||||||
|
aktif
|
||||||
|
? "Aktif + periode: langganan berlaku saat ini dalam rentang tanggal."
|
||||||
|
: "Nonaktif: saring berdasarkan tanggal atau tgl diubah.",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$("#isActive").on("change", syncPeriode);
|
||||||
|
|
||||||
|
// Satu input periode (date-range) -> isi hidden tgl_awal/tgl_akhir (YYYY-MM-DD).
|
||||||
|
$(".input-daterange-filter").daterangepicker(
|
||||||
|
{
|
||||||
|
autoUpdateInput: false,
|
||||||
|
locale: { format: "DD-MM-YYYY", cancelLabel: "Hapus" },
|
||||||
|
parentEl: "#search-form",
|
||||||
|
},
|
||||||
|
);
|
||||||
|
$(".input-daterange-filter").on("apply.daterangepicker", function (ev, picker) {
|
||||||
|
$(this).val(picker.startDate.format("DD-MM-YYYY") + " - " + picker.endDate.format("DD-MM-YYYY"));
|
||||||
|
$("#tgl-awal").val(picker.startDate.format("YYYY-MM-DD"));
|
||||||
|
$("#tgl-akhir").val(picker.endDate.format("YYYY-MM-DD"));
|
||||||
|
});
|
||||||
|
$(".input-daterange-filter").on("cancel.daterangepicker", function () {
|
||||||
|
$(this).val("");
|
||||||
|
$("#tgl-awal").val("");
|
||||||
|
$("#tgl-akhir").val("");
|
||||||
|
});
|
||||||
|
syncPeriode();
|
||||||
|
|
||||||
$("#search-button").on("click", function () {
|
$("#search-button").on("click", function () {
|
||||||
let searchBy = $("#search-by").val();
|
let searchBy = $("#search-by").val();
|
||||||
let searchValue = $("#search-value").val().trim();
|
let searchValue = $("#search-value").val().trim();
|
||||||
@@ -81,12 +112,21 @@ $(document).ready(function () {
|
|||||||
department: department,
|
department: department,
|
||||||
vehicle: vehicle,
|
vehicle: vehicle,
|
||||||
isActive: isActive,
|
isActive: isActive,
|
||||||
|
tgl_awal: $("#tgl-awal").val(),
|
||||||
|
tgl_akhir: $("#tgl-akhir").val(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// =========================
|
// =========================
|
||||||
// AJAX
|
// AJAX
|
||||||
// =========================
|
// =========================
|
||||||
|
|
||||||
|
const btn = $("#search-button");
|
||||||
|
const btnHtml = btn.html();
|
||||||
|
btn.prop("disabled", true).html('<i class="fa fa-spinner fa-spin me-2"></i>Mencari...');
|
||||||
|
$("#example tbody").html(
|
||||||
|
`<tr><td colspan="11" class="text-center text-muted py-4"><span class="spinner-border spinner-border-sm me-2"></span>Memuat data...</td></tr>`,
|
||||||
|
);
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: url,
|
url: url,
|
||||||
type: "POST",
|
type: "POST",
|
||||||
@@ -154,6 +194,51 @@ $(document).ready(function () {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
error: function (xhr) {
|
||||||
|
let msg = "Gagal memuat data.";
|
||||||
|
if (xhr.status === 422 && xhr.responseJSON?.message) msg = xhr.responseJSON.message;
|
||||||
|
$("#example tbody").html(
|
||||||
|
`<tr><td colspan="11" class="text-center text-danger py-4">${msg}</td></tr>`,
|
||||||
|
);
|
||||||
|
Swal.fire({icon: "error", title: "Pencarian gagal", text: msg});
|
||||||
|
},
|
||||||
|
complete: function () {
|
||||||
|
btn.prop("disabled", false).html(btnHtml);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#btnDelete").on("click", function () {
|
||||||
|
const notrans = typeof selectedRowData !== "undefined" ? selectedRowData?.notrans : null;
|
||||||
|
if (!notrans) {
|
||||||
|
Swal.fire({icon: "warning", title: "Belum pilih data", text: "Klik salah satu baris transaksi dulu."});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const base = $("#btnDelete").data("destroy");
|
||||||
|
Swal.fire({
|
||||||
|
title: "Hapus transaksi?",
|
||||||
|
text: `${notrans} akan diarsipkan ke transaksi_stiker_res.`,
|
||||||
|
icon: "warning",
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonText: "Ya, arsipkan",
|
||||||
|
cancelButtonText: "Batal",
|
||||||
|
confirmButtonColor: "#dc3545",
|
||||||
|
showLoaderOnConfirm: true,
|
||||||
|
preConfirm: () =>
|
||||||
|
$.ajax({
|
||||||
|
url: base + "/" + encodeURIComponent(notrans),
|
||||||
|
type: "DELETE",
|
||||||
|
headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content") },
|
||||||
|
}).catch((xhr) => {
|
||||||
|
Swal.showValidationMessage(xhr.responseJSON?.message || "Gagal menghapus data.");
|
||||||
|
}),
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.isConfirmed && result.value) {
|
||||||
|
Swal.fire({icon: "success", title: "Berhasil", text: "Data diarsipkan.", timer: 1500, showConfirmButton: false}).then(() => {
|
||||||
|
$("#rowActions").addClass("d-none");
|
||||||
|
$("#search-button").click();
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,16 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Jumlahkan tarif semua kendaraan di list -> isi otomatis ke Harga.
|
||||||
|
// Harga dikirim angka polos (kolom double), tanpa pemisah ribuan.
|
||||||
|
function updateHarga() {
|
||||||
|
let total = 0;
|
||||||
|
$("#modal-member #list-nopol tr").each(function () {
|
||||||
|
total += parseFloat($(this).data("tarif")) || 0;
|
||||||
|
});
|
||||||
|
$("#modal-member input[name='harga']").val(total);
|
||||||
|
}
|
||||||
|
|
||||||
$("#nopol-add").on("click", function () {
|
$("#nopol-add").on("click", function () {
|
||||||
var nopol = $(".nopol-add").val().trim();
|
var nopol = $(".nopol-add").val().trim();
|
||||||
console.log(nopol);
|
console.log(nopol);
|
||||||
@@ -103,6 +113,7 @@ $(document).ready(function () {
|
|||||||
var vehicle = $("#jenisVehicle").val();
|
var vehicle = $("#jenisVehicle").val();
|
||||||
var vehicleName = $("#jenisVehicle option:selected").text();
|
var vehicleName = $("#jenisVehicle option:selected").text();
|
||||||
var member = $("#jenis-member option:selected").text();
|
var member = $("#jenis-member option:selected").text();
|
||||||
|
var tarif = parseFloat($("#jenis-member").val()) || 0;
|
||||||
var merk = $(".merk").val().trim();
|
var merk = $(".merk").val().trim();
|
||||||
$(".nopol-add").removeClass("is-invalid"); // Hapus kelas jika ada sebelumnya
|
$(".nopol-add").removeClass("is-invalid"); // Hapus kelas jika ada sebelumnya
|
||||||
$(".nopol-add").next(".invalid-feedback").hide();
|
$(".nopol-add").next(".invalid-feedback").hide();
|
||||||
@@ -120,7 +131,7 @@ $(document).ready(function () {
|
|||||||
success: function (r) {
|
success: function (r) {
|
||||||
if (r.response === true) {
|
if (r.response === true) {
|
||||||
var rowhtml = `
|
var rowhtml = `
|
||||||
<tr>
|
<tr data-tarif="${tarif}">
|
||||||
<td class="text-center">${nopol}</td>
|
<td class="text-center">${nopol}</td>
|
||||||
<td class="text-center" data-value="${vehicle}">${vehicleName}</td>
|
<td class="text-center" data-value="${vehicle}">${vehicleName}</td>
|
||||||
<td class="text-center">${member}</td>
|
<td class="text-center">${member}</td>
|
||||||
@@ -132,6 +143,7 @@ $(document).ready(function () {
|
|||||||
`;
|
`;
|
||||||
$("#list-nopol").append(rowhtml);
|
$("#list-nopol").append(rowhtml);
|
||||||
console.log("Berhasil menambahkan " + nopol);
|
console.log("Berhasil menambahkan " + nopol);
|
||||||
|
updateHarga();
|
||||||
|
|
||||||
$(".nopol-add").val("");
|
$(".nopol-add").val("");
|
||||||
$("#jenisVehicle").val("");
|
$("#jenisVehicle").val("");
|
||||||
@@ -195,6 +207,11 @@ $(document).ready(function () {
|
|||||||
$(this).closest("tr").remove(); // Hapus baris yang diklik
|
$(this).closest("tr").remove(); // Hapus baris yang diklik
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#list-nopol").on("click", ".delete-row", function () {
|
||||||
|
$(this).closest("tr").remove();
|
||||||
|
updateHarga();
|
||||||
|
});
|
||||||
|
|
||||||
$(".simpan").on("click", function () {
|
$(".simpan").on("click", function () {
|
||||||
var tombol = $(this);
|
var tombol = $(this);
|
||||||
var formCollect = $("#add-member").serialize();
|
var formCollect = $("#add-member").serialize();
|
||||||
@@ -243,6 +260,9 @@ $(document).ready(function () {
|
|||||||
cardNumber: cardCollect,
|
cardNumber: cardCollect,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
updateHarga(); // pastikan harga = jumlah tarif kendaraan sebelum simpan
|
||||||
|
formDataObj.harga = $("#modal-member input[name='harga']").val();
|
||||||
|
|
||||||
if ($(".tambah-member").valid()) {
|
if ($(".tambah-member").valid()) {
|
||||||
const saveHtml = tombol.html();
|
const saveHtml = tombol.html();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
|||||||
@@ -146,6 +146,15 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- PERIODE (aktif saat Member Aktif mati) -->
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label fw-semibold">Periode</label>
|
||||||
|
<input type="text" class="form-control form-control-sm input-daterange-filter" id="periode" placeholder="Pilih rentang tanggal" readonly>
|
||||||
|
<input type="hidden" name="tgl_awal" id="tgl-awal">
|
||||||
|
<input type="hidden" name="tgl_akhir" id="tgl-akhir">
|
||||||
|
</div>
|
||||||
|
<small class="text-muted d-block mb-3" id="periode-hint">Aktif: cari langganan berlaku saat ini.</small>
|
||||||
|
|
||||||
<!-- KATEGORI -->
|
<!-- KATEGORI -->
|
||||||
{{-- <div class="mb-4">
|
{{-- <div class="mb-4">
|
||||||
<label class="form-label fw-semibold">Kategori</label>
|
<label class="form-label fw-semibold">Kategori</label>
|
||||||
@@ -177,7 +186,7 @@ class="form-control"
|
|||||||
<button class="btn btn-success btn-sm extend-button" id="btnExtend" data-bs-toggle="modal" data-bs-target="#modal-extend" data-id="${element.notrans}" data-url="{{ route('getStikerMember.show', ':id') }}" >Perpanjang</button>
|
<button class="btn btn-success btn-sm extend-button" id="btnExtend" data-bs-toggle="modal" data-bs-target="#modal-extend" data-id="${element.notrans}" data-url="{{ route('getStikerMember.show', ':id') }}" >Perpanjang</button>
|
||||||
<button class="btn btn-warning btn-sm edit-button" id="btnEdit" data-bs-toggle="modal" data-bs-target=".bd-ubah-modal-lg">Ubah</button>
|
<button class="btn btn-warning btn-sm edit-button" id="btnEdit" data-bs-toggle="modal" data-bs-target=".bd-ubah-modal-lg">Ubah</button>
|
||||||
<button class="btn btn-info btn-sm detail-button" id="btnDetail" data-bs-toggle="modal" data-bs-target="#modal-details">Detail</button>
|
<button class="btn btn-info btn-sm detail-button" id="btnDetail" data-bs-toggle="modal" data-bs-target="#modal-details">Detail</button>
|
||||||
<button class="btn btn-danger btn-sm" id="btnDelete">Hapus</button>
|
<button class="btn btn-danger btn-sm" id="btnDelete" data-destroy="{{ url('transaksi/stiker') }}">Hapus</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="table-responsive pt-3">
|
<div class="table-responsive pt-3">
|
||||||
|
|||||||
Reference in New Issue
Block a user