mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-18 20:49:19 +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() {
|
make_purchase_order() {
|
||||||
let pending_items = this.frm.doc.items.some((item) => {
|
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;
|
return pending_qty > 0;
|
||||||
});
|
});
|
||||||
if (!pending_items) {
|
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
|
// 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);
|
let packed_items = so.packed_items.filter((pi) => pi.parent_detail_docname == item.name);
|
||||||
if (packed_items && packed_items.length) {
|
if (packed_items && packed_items.length) {
|
||||||
ordered_qty = packed_items.reduce((sum, pi) => sum + flt(pi.ordered_qty), 0);
|
const all_packed_items_ordered = packed_items.every(
|
||||||
ordered_qty = ordered_qty / packed_items.length;
|
(pi) => flt(pi.ordered_qty) >= flt(pi.qty)
|
||||||
|
);
|
||||||
|
ordered_qty = all_packed_items_ordered ? item.stock_qty : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ordered_qty;
|
return ordered_qty;
|
||||||
|
|||||||
@@ -1675,7 +1675,8 @@ def make_purchase_order_for_default_supplier(source_name, selected_items=None, t
|
|||||||
"pricing_rules",
|
"pricing_rules",
|
||||||
],
|
],
|
||||||
"postprocess": update_item_for_packed_item,
|
"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,
|
target_doc,
|
||||||
@@ -1813,7 +1814,8 @@ def make_purchase_order(source_name, selected_items=None, target_doc=None):
|
|||||||
"pricing_rules",
|
"pricing_rules",
|
||||||
],
|
],
|
||||||
"postprocess": update_item_for_packed_item,
|
"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,
|
target_doc,
|
||||||
|
|||||||
Reference in New Issue
Block a user