mirror of
https://github.com/frappe/erpnext.git
synced 2026-02-16 08:05:00 +00:00
Fix: Product Bundle Purchase Order Creation Logic (#49831)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
(cherry picked from commit 5b643433e5)
This commit is contained in:
@@ -1559,7 +1559,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
||||
|
||||
make_purchase_order() {
|
||||
let pending_items = this.frm.doc.items.some((item) => {
|
||||
let pending_qty = flt(item.stock_qty) - flt(item.ordered_qty);
|
||||
const pending_qty = flt(item.stock_qty) - this.get_ordered_qty(item, this.frm.doc);
|
||||
return pending_qty > 0;
|
||||
});
|
||||
if (!pending_items) {
|
||||
@@ -1713,8 +1713,10 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
|
||||
// calculate ordered qty based on packed items in case of product bundle
|
||||
let packed_items = so.packed_items.filter((pi) => pi.parent_detail_docname == item.name);
|
||||
if (packed_items && packed_items.length) {
|
||||
ordered_qty = packed_items.reduce((sum, pi) => sum + flt(pi.ordered_qty), 0);
|
||||
ordered_qty = ordered_qty / packed_items.length;
|
||||
const all_packed_items_ordered = packed_items.every(
|
||||
(pi) => flt(pi.ordered_qty) >= flt(pi.qty)
|
||||
);
|
||||
ordered_qty = all_packed_items_ordered ? item.stock_qty : 0;
|
||||
}
|
||||
}
|
||||
return ordered_qty;
|
||||
|
||||
@@ -1675,7 +1675,8 @@ def make_purchase_order_for_default_supplier(source_name, selected_items=None, t
|
||||
"pricing_rules",
|
||||
],
|
||||
"postprocess": update_item_for_packed_item,
|
||||
"condition": lambda doc: doc.parent_item in items_to_map,
|
||||
"condition": lambda doc: doc.parent_item in items_to_map
|
||||
and flt(doc.ordered_qty) < flt(doc.qty),
|
||||
},
|
||||
},
|
||||
target_doc,
|
||||
@@ -1813,7 +1814,8 @@ def make_purchase_order(source_name, selected_items=None, target_doc=None):
|
||||
"pricing_rules",
|
||||
],
|
||||
"postprocess": update_item_for_packed_item,
|
||||
"condition": lambda doc: doc.parent_item in items_to_map,
|
||||
"condition": lambda doc: doc.parent_item in items_to_map
|
||||
and flt(doc.ordered_qty) < flt(doc.qty),
|
||||
},
|
||||
},
|
||||
target_doc,
|
||||
|
||||
Reference in New Issue
Block a user