From 61a9eb60a7626133a8e4ea775bd30c271fed41b8 Mon Sep 17 00:00:00 2001 From: AadithPunathilBuildsuite Date: Wed, 18 Feb 2026 11:51:40 +0530 Subject: [PATCH] fix:update the packing slip --- .../supplier_packing_slip.js | 64 +++++++++++-------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/calicut_textiles/calicut_textiles/doctype/supplier_packing_slip/supplier_packing_slip.js b/calicut_textiles/calicut_textiles/doctype/supplier_packing_slip/supplier_packing_slip.js index be6c369..21b2170 100644 --- a/calicut_textiles/calicut_textiles/doctype/supplier_packing_slip/supplier_packing_slip.js +++ b/calicut_textiles/calicut_textiles/doctype/supplier_packing_slip/supplier_packing_slip.js @@ -33,34 +33,44 @@ frappe.ui.form.on("Supplier Packing Slip", { }); frappe.ui.form.on('Supplier Packing Slip Item', { add: function(frm, cdt, cdn) { - var item = frappe.get_doc(cdt, cdn); + var item = frappe.get_doc(cdt, cdn); + + // validations + if (item.qty > item.po_actual_qty) { + frappe.msgprint(__('Quantity is more than in Actual Qty')); + return; + } + + if (item.qty <= 0) { + frappe.msgprint(__('Quantity is zero, cannot add a new row.')); + return; + } + + // calculate remaining qty + let remaining_qty = flt(item.po_actual_qty) - flt(item.qty); + + // update current row first + frappe.model.set_value(cdt, cdn, 'po_remaining_qty', remaining_qty); + + // -------- create new row (CORRECT WAY) ---------- + let child = frappe.model.add_child( + frm.doc, + "Supplier Packing Slip Item", // Child Doctype name + "supplier_packing_slip_item" // Table fieldname + ); + + // populate new row + child.item_code = item.item_code; + child.qty = 0; + child.uom = item.uom; + child.po_ref = item.po_ref; + child.po_actual_qty = remaining_qty; + child.purchase_order_item = item.purchase_order_item; + child.lot_no = item.lot_no; + + // refresh grid + frm.refresh_field('supplier_packing_slip_item'); - if (item.qty > item.po_actual_qty) { - frappe.msgprint(__('Quantity is more than in Actual Qty')); - return; - } - - if (item.qty <= 0) { - frappe.msgprint(__('Quantity is zero, cannot add a new row.')); - return; - } - - item.po_remaining_qty = item.po_actual_qty - item.qty; - - let row_index = frm.doc.supplier_packing_slip_item.findIndex(row => row.name === item.name); - - let new_row = frm.fields_dict.supplier_packing_slip_item.grid.add_new_row(row_index + 2); - - new_row.item_code = item.item_code; - new_row.qty = 0; - new_row.uom = item.uom; - new_row.po_ref = item.po_ref; - new_row.po_actual_qty = item.po_remaining_qty; - new_row.purchase_order_item = item.purchase_order_item; - new_row.lot_no = item.lot_no; - - frm.refresh_field('supplier_packing_slip_item'); - frappe.model.set_value(cdt, cdn, 'po_remaining_qty', item.po_remaining_qty); }, qty: function(frm, cdt, cdn) {