partial update products
This commit is contained in:
@@ -125,8 +125,10 @@ $(document).on("click", ".btn-destroy-product-category", function () {
|
||||
});
|
||||
|
||||
function loadParentCategories(selectedId = null) {
|
||||
const selectElement = $("#parent_id");
|
||||
let urlParents = selectElement.data("url");
|
||||
$.ajax({
|
||||
url: "/warehouse/categories/parents", // create this route
|
||||
url: urlParents,
|
||||
type: "GET",
|
||||
success: function (data) {
|
||||
$("#parent_id")
|
||||
|
||||
@@ -1,43 +1 @@
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
const addBtn = document.getElementById("addDealerRow");
|
||||
const dealerRows = document.getElementById("dynamicDealerRows");
|
||||
|
||||
// Get dealer data from Blade
|
||||
const dealerDataDiv = document.getElementById("dealerData");
|
||||
const dealers = JSON.parse(dealerDataDiv.getAttribute("data-dealers")); // 👈 this reads JSON from Blade
|
||||
|
||||
let rowCount = 0;
|
||||
|
||||
function createDealerRow(index) {
|
||||
const dealerOptions = dealers
|
||||
.map((d) => `<option value="${d.id}">${d.name}</option>`)
|
||||
.join("");
|
||||
return `
|
||||
<div class="form-group row align-items-center dealer-row" data-index="${index}">
|
||||
<div class="col-md-5">
|
||||
<select name="dealer_stock[${index}][dealer_id]" class="form-control" required>
|
||||
<option value="">-- Pilih Dealer --</option>
|
||||
${dealerOptions}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<input type="number" name="dealer_stock[${index}][quantity]" class="form-control" value="1" min="1" required>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<button type="button" class="btn btn-danger btn-sm removeDealerRow">Hapus</button>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
addBtn.addEventListener("click", function () {
|
||||
dealerRows.insertAdjacentHTML("beforeend", createDealerRow(rowCount));
|
||||
rowCount++;
|
||||
});
|
||||
|
||||
dealerRows.addEventListener("click", function (e) {
|
||||
if (e.target.classList.contains("removeDealerRow")) {
|
||||
e.target.closest(".dealer-row").remove();
|
||||
}
|
||||
});
|
||||
});
|
||||
document.addEventListener("DOMContentLoaded", function () {});
|
||||
|
||||
@@ -1,48 +1 @@
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
let dealerRowContainer = document.getElementById("dynamicDealerRows");
|
||||
let addDealerButton = document.getElementById("addDealerRow");
|
||||
|
||||
// Initial index from existing dealer rows
|
||||
let rowIndex =
|
||||
dealerRowContainer.querySelectorAll(".dealer-stock-row").length;
|
||||
|
||||
addDealerButton.addEventListener("click", function () {
|
||||
const newRow = document.createElement("div");
|
||||
newRow.className = "form-group row align-items-center dealer-stock-row";
|
||||
newRow.innerHTML = `
|
||||
<div class="col-md-6">
|
||||
<select name="dealer_stock[${rowIndex}][dealer_id]" class="form-control">
|
||||
<option value="">-- Pilih Dealer --</option>
|
||||
${generateDealerOptions()}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<input type="number" name="dealer_stock[${rowIndex}][quantity]" class="form-control" value="1" min="1" required placeholder="Jumlah Stok" />
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button type="button" class="btn btn-danger btn-sm remove-dealer-row"> Hapus </button>
|
||||
</div>
|
||||
`;
|
||||
dealerRowContainer.appendChild(newRow);
|
||||
rowIndex++;
|
||||
});
|
||||
|
||||
// Handle removal of dealer row
|
||||
dealerRowContainer.addEventListener("click", function (event) {
|
||||
if (
|
||||
event.target &&
|
||||
event.target.classList.contains("remove-dealer-row")
|
||||
) {
|
||||
event.target.closest(".dealer-stock-row").remove();
|
||||
}
|
||||
});
|
||||
|
||||
// Function to generate dealer <option> elements dynamically
|
||||
function generateDealerOptions() {
|
||||
const dealerDataDiv = document.getElementById("dealerData");
|
||||
const dealers = JSON.parse(dealerDataDiv.getAttribute("data-dealers"));
|
||||
return dealers
|
||||
.map((d) => `<option value="${d.id}">${d.name}</option>`)
|
||||
.join("");
|
||||
}
|
||||
});
|
||||
document.addEventListener("DOMContentLoaded", function () {});
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
|
||||
},
|
||||
});
|
||||
let tableContainer = $("#stock-mutations-table");
|
||||
let url = tableContainer.data("url");
|
||||
let table = $("#stock-mutations-table").DataTable({
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
ajax: url,
|
||||
columns: [
|
||||
{ data: "product_name", name: "product_name" },
|
||||
{ data: "dealer_name", name: "dealer_name" },
|
||||
{ data: "user_name", name: "user_name" },
|
||||
{ data: "mutation_type_label", name: "mutation_type_label" },
|
||||
{ data: "quantity", name: "quantity" },
|
||||
{ data: "created_at", name: "created_at" },
|
||||
],
|
||||
});
|
||||
@@ -1,21 +0,0 @@
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
|
||||
},
|
||||
});
|
||||
let tableContainer = $("#stock-opnames-table");
|
||||
let url = tableContainer.data("url");
|
||||
let table = $("#stock-opnames-table").DataTable({
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
ajax: url,
|
||||
columns: [
|
||||
{ data: "product_name", name: "product_name" },
|
||||
{ data: "dealer_name", name: "dealer_name" },
|
||||
{ data: "user_name", name: "user_name" },
|
||||
{ data: "system_quantity", name: "system_quantity" },
|
||||
{ data: "physical_quantity", name: "physical_quantity" },
|
||||
{ data: "difference", name: "difference" },
|
||||
{ data: "opname_date", name: "opname_date" },
|
||||
],
|
||||
});
|
||||
Reference in New Issue
Block a user