Merge branch 'creamdory-sort_bom_items' into develop
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index bf5fef5..b308e09 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -531,19 +531,20 @@
and item.name = bom_item.item_code
and is_stock_item = 1
{where_conditions}
- group by item_code, stock_uom"""
+ group by item_code, stock_uom
+ order by idx"""
if fetch_exploded:
query = query.format(table="BOM Explosion Item",
where_conditions="""and item.is_sub_contracted_item = 0""",
- select_columns = ", bom_item.source_warehouse")
- items = frappe.db.sql(query, { "qty": qty, "bom": bom }, as_dict=True)
+ select_columns = ", bom_item.source_warehouse, (Select idx from `tabBOM Item` where item_code = bom_item.item_code and parent = %(parent)s ) as idx")
+ items = frappe.db.sql(query, { "parent": bom, "qty": qty, "bom": bom }, as_dict=True)
elif fetch_scrap_items:
- query = query.format(table="BOM Scrap Item", where_conditions="", select_columns="")
+ query = query.format(table="BOM Scrap Item", where_conditions="", select_columns=", bom_item.idx")
items = frappe.db.sql(query, { "qty": qty, "bom": bom }, as_dict=True)
else:
query = query.format(table="BOM Item", where_conditions="",
- select_columns = ", bom_item.source_warehouse")
+ select_columns = ", bom_item.source_warehouse, bom_item.idx")
items = frappe.db.sql(query, { "qty": qty, "bom": bom }, as_dict=True)
for item in items:
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index 5fedc72..2c246f9 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -437,7 +437,7 @@
item_dict = get_bom_items_as_dict(self.bom_no, self.company, qty=self.qty,
fetch_exploded = self.use_multi_level_bom)
- for item in item_dict.values():
+ for item in sorted(item_dict.values(), key=lambda d: d['idx']):
self.append('required_items', {
'item_code': item.item_code,
'required_qty': item.qty,