Merge branch 'develop' into FIX-34354
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index 8ab79e6..619a415 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -31,7 +31,7 @@
# 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
@@ -50,9 +50,10 @@
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)
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index ae9e9c6..66b871c 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -682,7 +682,7 @@
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))
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 07ee289..fcdf245 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -808,7 +808,7 @@
return existing_address
if out:
- return min(out, key=lambda x: x[1])[0] # find min by sort_key
+ return max(out, key=lambda x: x[1])[0] # find max by sort_key
else:
return None
diff --git a/erpnext/setup/doctype/company/test_company.py b/erpnext/setup/doctype/company/test_company.py
index 29e056e..fd2fe30 100644
--- a/erpnext/setup/doctype/company/test_company.py
+++ b/erpnext/setup/doctype/company/test_company.py
@@ -11,6 +11,7 @@
from erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts import (
get_charts_for_country,
)
+from erpnext.setup.doctype.company.company import get_default_company_address
test_ignore = ["Account", "Cost Center", "Payment Terms Template", "Salary Component", "Warehouse"]
test_dependencies = ["Fiscal Year"]
@@ -132,6 +133,38 @@
self.assertTrue(lft >= min_lft)
self.assertTrue(rgt <= max_rgt)
+ def test_primary_address(self):
+ company = "_Test Company"
+
+ secondary = frappe.get_doc(
+ {
+ "address_title": "Non Primary",
+ "doctype": "Address",
+ "address_type": "Billing",
+ "address_line1": "Something",
+ "city": "Mumbai",
+ "state": "Maharashtra",
+ "country": "India",
+ "is_primary_address": 1,
+ "pincode": "400098",
+ "links": [
+ {
+ "link_doctype": "Company",
+ "link_name": company,
+ }
+ ],
+ }
+ )
+ secondary.insert()
+ self.addCleanup(secondary.delete)
+
+ primary = frappe.copy_doc(secondary)
+ primary.is_primary_address = 1
+ primary.insert()
+ self.addCleanup(primary.delete)
+
+ self.assertEqual(get_default_company_address(company), primary.name)
+
def get_no_of_children(self, company):
def get_no_of_children(companies, no_of_children):
children = []