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:
Assem Bahnasy
2025-11-11 07:23:25 +03:00
committed by Mergify
parent 607cf47312
commit 2374cf8bfd
2 changed files with 9 additions and 5 deletions

View File

@@ -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;

View File

@@ -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,