Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Loading