feat: provision to add items in Stock Reservation dialog

This commit is contained in:
s-aga-r 2023-12-04 18:03:22 +05:30
parent 00261094c8
commit 8d5045ef4c

View File

@ -207,6 +207,50 @@ frappe.ui.form.on("Sales Order", {
},
},
{fieldtype: "Column Break"},
{
fieldname: "add_item",
fieldtype: "Link",
label: __("Add Item"),
options: "Sales Order Item",
get_query: () => {
return {
query: "erpnext.controllers.queries.get_filtered_child_rows",
filters: {
"parenttype": frm.doc.doctype,
"parent": frm.doc.name,
"reserve_stock": 1,
}
}
},
onchange: () => {
let sales_order_item = dialog.get_value("add_item");
if (sales_order_item) {
frm.doc.items.forEach(item => {
if (item.name === sales_order_item) {
let unreserved_qty = (flt(item.stock_qty) - (item.stock_reserved_qty ? flt(item.stock_reserved_qty) : (flt(item.delivered_qty) * flt(item.conversion_factor)))) / flt(item.conversion_factor);
if (unreserved_qty > 0) {
dialog.fields_dict.items.df.data.forEach((row) => {
if (row.sales_order_item === sales_order_item) {
unreserved_qty -= row.qty_to_reserve;
}
});
}
dialog.fields_dict.items.df.data.push({
'sales_order_item': item.name,
'item_code': item.item_code,
'warehouse': dialog.get_value("set_warehouse") || item.warehouse,
'qty_to_reserve': Math.max(unreserved_qty, 0)
});
dialog.fields_dict.items.grid.refresh();
dialog.set_value("add_item", undefined);
}
});
}
},
},
{fieldtype: "Section Break"},
{
fieldname: "items",
@ -308,14 +352,14 @@ frappe.ui.form.on("Sales Order", {
frm.doc.items.forEach(item => {
if (item.reserve_stock) {
let unreserved_qty = (flt(item.stock_qty) - (item.stock_reserved_qty ? flt(item.stock_reserved_qty) : (flt(item.delivered_qty) * flt(item.conversion_factor))))
let unreserved_qty = (flt(item.stock_qty) - (item.stock_reserved_qty ? flt(item.stock_reserved_qty) : (flt(item.delivered_qty) * flt(item.conversion_factor)))) / flt(item.conversion_factor);
if (unreserved_qty > 0) {
dialog.fields_dict.items.df.data.push({
'sales_order_item': item.name,
'item_code': item.item_code,
'warehouse': item.warehouse,
'qty_to_reserve': (unreserved_qty / flt(item.conversion_factor))
'qty_to_reserve': unreserved_qty
});
}
}