fix: party item code in Blanket Order
diff --git a/erpnext/manufacturing/doctype/blanket_order/blanket_order.py b/erpnext/manufacturing/doctype/blanket_order/blanket_order.py
index dcf122c..5656486 100644
--- a/erpnext/manufacturing/doctype/blanket_order/blanket_order.py
+++ b/erpnext/manufacturing/doctype/blanket_order/blanket_order.py
@@ -41,11 +41,50 @@
def validate(self):
self.validate_dates()
self.validate_duplicate_items()
+ self.set_party_item_code()
def validate_dates(self):
if getdate(self.from_date) > getdate(self.to_date):
frappe.throw(_("From date cannot be greater than To date"))
+ def set_party_item_code(self):
+ item_ref = {}
+ if self.blanket_order_type == "Selling":
+ item_ref = self.get_customer_items_ref()
+ print(item_ref)
+ else:
+ item_ref = self.get_supplier_items_ref()
+
+ if not item_ref:
+ return
+
+ for row in self.items:
+ row.party_item_code = item_ref.get(row.item_code)
+
+ def get_customer_items_ref(self):
+ items = [d.item_code for d in self.items]
+
+ return frappe._dict(
+ frappe.get_all(
+ "Item Customer Detail",
+ filters={"parent": ("in", items), "customer_name": self.customer},
+ fields=["parent", "ref_code"],
+ as_list=True,
+ )
+ )
+
+ def get_supplier_items_ref(self):
+ items = [d.item_code for d in self.items]
+
+ return frappe._dict(
+ frappe.get_all(
+ "Item Supplier",
+ filters={"parent": ("in", items), "supplier": self.supplier},
+ fields=["parent", "supplier_part_no"],
+ as_list=True,
+ )
+ )
+
def validate_duplicate_items(self):
item_list = []
for item in self.items:
diff --git a/erpnext/manufacturing/doctype/blanket_order/test_blanket_order.py b/erpnext/manufacturing/doctype/blanket_order/test_blanket_order.py
index e9fc25b..3f3b6f0 100644
--- a/erpnext/manufacturing/doctype/blanket_order/test_blanket_order.py
+++ b/erpnext/manufacturing/doctype/blanket_order/test_blanket_order.py
@@ -5,6 +5,7 @@
from frappe.utils import add_months, today
from erpnext import get_company_currency
+from erpnext.stock.doctype.item.test_item import make_item
from .blanket_order import make_order
@@ -90,6 +91,30 @@
frappe.db.set_single_value("Buying Settings", "blanket_order_allowance", 10)
po.submit()
+ def test_party_item_code(self):
+ item_doc = make_item("_Test Item 1 for Blanket Order")
+ item_code = item_doc.name
+
+ customer = "_Test Customer"
+ supplier = "_Test Supplier"
+
+ if not frappe.db.exists(
+ "Item Customer Detail", {"customer_name": customer, "parent": item_code}
+ ):
+ item_doc.append("customer_items", {"customer_name": customer, "ref_code": "CUST-REF-1"})
+ item_doc.save()
+
+ if not frappe.db.exists("Item Supplier", {"supplier": supplier, "parent": item_code}):
+ item_doc.append("supplier_items", {"supplier": supplier, "supplier_part_no": "SUPP-PART-1"})
+ item_doc.save()
+
+ # Blanket Order for Selling
+ bo = make_blanket_order(blanket_order_type="Selling", customer=customer, item_code=item_code)
+ self.assertEqual(bo.items[0].party_item_code, "CUST-REF-1")
+
+ bo = make_blanket_order(blanket_order_type="Purchasing", supplier=supplier, item_code=item_code)
+ self.assertEqual(bo.items[0].party_item_code, "SUPP-PART-1")
+
def make_blanket_order(**args):
args = frappe._dict(args)
diff --git a/erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.json b/erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.json
index 977ad54..aa7831f 100644
--- a/erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.json
+++ b/erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"creation": "2018-05-24 07:20:04.255236",
"doctype": "DocType",
"editable_grid": 1,
@@ -6,6 +7,7 @@
"field_order": [
"item_code",
"item_name",
+ "party_item_code",
"column_break_3",
"qty",
"rate",
@@ -62,10 +64,17 @@
"fieldname": "terms_and_conditions",
"fieldtype": "Text",
"label": "Terms and Conditions"
+ },
+ {
+ "fieldname": "party_item_code",
+ "fieldtype": "Data",
+ "label": "Party Item Code",
+ "read_only": 1
}
],
"istable": 1,
- "modified": "2019-11-18 19:37:46.245878",
+ "links": [],
+ "modified": "2024-02-14 18:25:26.479672",
"modified_by": "Administrator",
"module": "Manufacturing",
"name": "Blanket Order Item",
@@ -74,5 +83,6 @@
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
+ "states": [],
"track_changes": 1
}
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.py b/erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.py
index 068c2e9..316d294 100644
--- a/erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.py
+++ b/erpnext/manufacturing/doctype/blanket_order_item/blanket_order_item.py
@@ -20,6 +20,7 @@
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
+ party_item_code: DF.Data | None
qty: DF.Float
rate: DF.Currency
terms_and_conditions: DF.Text | None