Merge pull request #39918 from frappe/mergify/bp/version-15-hotfix/pr-39905
fix: party item code in Blanket Order (backport #39905)
This commit is contained in:
commit
ab03ab388c
@ -41,11 +41,49 @@ class BlanketOrder(Document):
|
||||
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()
|
||||
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:
|
||||
|
@ -5,6 +5,7 @@ from frappe.tests.utils import FrappeTestCase
|
||||
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 @@ class TestBlanketOrder(FrappeTestCase):
|
||||
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)
|
||||
|
@ -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
|
||||
}
|
@ -20,6 +20,7 @@ class BlanketOrderItem(Document):
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user