Skip to content

Commit

Permalink
fix: operation time for multi-level BOM in WO
Browse files Browse the repository at this point in the history
(cherry picked from commit 442ee3a)
  • Loading branch information
s-aga-r authored and mergify[bot] committed Mar 14, 2023
1 parent c353ba7 commit 76e04c8
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 3 deletions.
5 changes: 3 additions & 2 deletions erpnext/manufacturing/doctype/bom/bom.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class BOMTree:

# specifying the attributes to save resources
# ref: https://docs.python.org/3/reference/datamodel.html#slots
__slots__ = ["name", "child_items", "is_bom", "item_code", "exploded_qty", "qty"]
__slots__ = ["name", "child_items", "is_bom", "item_code", "qty", "exploded_qty", "bom_qty"]

def __init__(
self, name: str, is_bom: bool = True, exploded_qty: float = 1.0, qty: float = 1
Expand All @@ -50,9 +50,10 @@ def __init__(
def __create_tree(self):
bom = frappe.get_cached_doc("BOM", self.name)
self.item_code = bom.item
self.bom_qty = bom.quantity

for item in bom.get("items", []):
qty = item.qty / bom.quantity # quantity per unit
qty = item.stock_qty / bom.quantity # quantity per unit
exploded_qty = self.exploded_qty * qty
if item.bom_no:
child = BOMTree(item.bom_no, exploded_qty=exploded_qty, qty=qty)
Expand Down
2 changes: 1 addition & 1 deletion erpnext/manufacturing/doctype/work_order/work_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,7 @@ def _get_operations(bom_no, qty=1):

for node in bom_traversal:
if node.is_bom:
operations.extend(_get_operations(node.name, qty=node.exploded_qty))
operations.extend(_get_operations(node.name, qty=node.exploded_qty / node.bom_qty))

bom_qty = frappe.get_cached_value("BOM", self.bom_no, "quantity")
operations.extend(_get_operations(self.bom_no, qty=1.0 / bom_qty))
Expand Down

0 comments on commit 76e04c8

Please sign in to comment.