[fix] if bom specified on purchase order item then don't pull default bom in purchase receipt (#10793)
* [fix] if bom specified on purchase order item then don't pull default bom in purchase receipt
* Update bom.js
* Update stock_entry.py
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 26c8c61..56f3059 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -295,6 +295,7 @@
"field_map": {
"name": "purchase_order_item",
"parent": "purchase_order",
+ "bom": "bom"
},
"postprocess": update_item,
"condition": lambda doc: abs(doc.received_qty) < abs(doc.qty) and doc.delivered_by_supplier!=1
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index c58c89c..94a2113 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -19,7 +19,7 @@
frm.set_query("source_warehouse", "items", function() {
return {
filters: {
- 'company': frm.doc.company,
+ 'company': frm.doc.company
}
};
});
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index fbadbc5..fc45f13 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -631,7 +631,8 @@
fetch_exploded = self.use_multi_level_bom)
for item in item_dict.values():
- item.from_warehouse = self.from_warehouse or item.default_warehouse
+ # if source warehouse presents in BOM set from_warehouse as bom source_warehouse
+ item.from_warehouse = self.from_warehouse or item.source_warehouse or item.default_warehouse
return item_dict
def get_bom_scrap_material(self, qty):
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 80ef708..2a22854 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -90,7 +90,7 @@
item.lead_time_days)
if args.get("is_subcontracted") == "Yes":
- out.bom = get_default_bom(args.item_code)
+ out.bom = args.get('bom') or get_default_bom(args.item_code)
get_gross_profit(out)