diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 4e6f8203f58..3e0425c1201 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -1179,7 +1179,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) { @@ -1333,8 +1333,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; diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index eb6134d4259..a6f1cf4b666 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -1465,7 +1465,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, @@ -1603,7 +1604,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,