$(document).ready(function () { console.log("Mutations index.js loaded"); // Check if DataTables is available if (typeof $.fn.DataTable === "undefined") { console.error("DataTables not available!"); return; } // Destroy existing table if any if ($.fn.DataTable.isDataTable("#mutations-table")) { $("#mutations-table").DataTable().destroy(); } // Initialize DataTable var table = $("#mutations-table").DataTable({ processing: true, serverSide: true, destroy: true, ajax: { url: $("#mutations-table").data("url"), type: "GET", error: function (xhr, error, code) { console.error("DataTables AJAX error:", error, code); }, }, columnDefs: [ { targets: 0, // No. column orderable: false, searchable: false, width: "5%", }, { targets: [1, 2, 3, 4, 5, 6, 7], // All sortable columns orderable: true, searchable: true, }, { targets: 8, // Action column orderable: false, searchable: false, width: "20%", className: "text-center", }, { targets: [6, 7], // Total Items and Status columns className: "text-center", }, ], columns: [ { data: "DT_RowIndex", name: "DT_RowIndex", }, { data: "mutation_number", name: "mutation_number", }, { data: "created_at", name: "created_at", }, { data: "from_dealer", name: "fromDealer.name", }, { data: "to_dealer", name: "toDealer.name", }, { data: "requested_by", name: "requestedBy.name", }, { data: "total_items", name: "total_items", }, { data: "status", name: "status", }, { data: "action", name: "action", }, ], order: [[1, "desc"]], // Order by mutation_number desc (which follows ID order) pageLength: 10, responsive: true, }); // Handle Cancel Button Click with SweetAlert $(document).on("click", ".btn-cancel", function () { var mutationId = $(this).data("id"); if (typeof Swal !== "undefined") { Swal.fire({ title: "Batalkan Mutasi?", text: "Apakah Anda yakin ingin membatalkan mutasi ini?", icon: "warning", showCancelButton: true, confirmButtonColor: "#d33", cancelButtonColor: "#3085d6", confirmButtonText: "Ya, Batalkan", cancelButtonText: "Batal", }).then((result) => { if (result.isConfirmed) { cancelMutation(mutationId); } }); } else { if (confirm("Apakah Anda yakin ingin membatalkan mutasi ini?")) { cancelMutation(mutationId); } } }); function cancelMutation(mutationId) { $.ajax({ url: "/warehouse/mutations/" + mutationId + "/cancel", type: "POST", data: { _token: $('meta[name="csrf-token"]').attr("content"), }, success: function (response) { if (typeof Swal !== "undefined") { Swal.fire({ title: "Berhasil!", text: "Mutasi berhasil dibatalkan", icon: "success", timer: 2000, showConfirmButton: false, }); } else { alert("Mutasi berhasil dibatalkan"); } table.ajax.reload(); }, error: function (xhr) { var errorMsg = xhr.responseJSON?.message || "Gagal membatalkan mutasi"; if (typeof Swal !== "undefined") { Swal.fire({ title: "Error!", text: errorMsg, icon: "error", }); } else { alert("Error: " + errorMsg); } }, }); } // Handle form submissions with loading state $(document).on("submit", ".approve-form", function () { $(this) .find('button[type="submit"]') .prop("disabled", true) .html("Memproses..."); }); // Validate quantity approved in receive modal $(document).on("input", 'input[name*="quantity_approved"]', function () { var maxValue = parseFloat($(this).attr("max")); var currentValue = parseFloat($(this).val()); if (maxValue && currentValue > maxValue) { $(this).val(maxValue); $(this).addClass("is-invalid"); if (!$(this).siblings(".invalid-feedback").length) { $(this).after( '
Quantity tidak boleh melebihi yang diminta
' ); } } else { $(this).removeClass("is-invalid"); $(this).siblings(".invalid-feedback").remove(); } }); });