Merge pull request #39905 from rohitwaghchaure/fixed-item-reference-9906
fix: party item code in Blanket Order
This commit is contained in:
commit
799794cafb
@ -41,11 +41,49 @@ class BlanketOrder(Document):
|
|||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_dates()
|
self.validate_dates()
|
||||||
self.validate_duplicate_items()
|
self.validate_duplicate_items()
|
||||||
|
self.set_party_item_code()
|
||||||
|
|
||||||
def validate_dates(self):
|
def validate_dates(self):
|
||||||
if getdate(self.from_date) > getdate(self.to_date):
|
if getdate(self.from_date) > getdate(self.to_date):
|
||||||
frappe.throw(_("From date cannot be greater than 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):
|
def validate_duplicate_items(self):
|
||||||
item_list = []
|
item_list = []
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
|
@ -5,6 +5,7 @@ from frappe.tests.utils import FrappeTestCase
|
|||||||
from frappe.utils import add_months, today
|
from frappe.utils import add_months, today
|
||||||
|
|
||||||
from erpnext import get_company_currency
|
from erpnext import get_company_currency
|
||||||
|
from erpnext.stock.doctype.item.test_item import make_item
|
||||||
|
|
||||||
from .blanket_order import make_order
|
from .blanket_order import make_order
|
||||||
|
|
||||||
@ -90,6 +91,30 @@ class TestBlanketOrder(FrappeTestCase):
|
|||||||
frappe.db.set_single_value("Buying Settings", "blanket_order_allowance", 10)
|
frappe.db.set_single_value("Buying Settings", "blanket_order_allowance", 10)
|
||||||
po.submit()
|
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):
|
def make_blanket_order(**args):
|
||||||
args = frappe._dict(args)
|
args = frappe._dict(args)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"actions": [],
|
||||||
"creation": "2018-05-24 07:20:04.255236",
|
"creation": "2018-05-24 07:20:04.255236",
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
"editable_grid": 1,
|
"editable_grid": 1,
|
||||||
@ -6,6 +7,7 @@
|
|||||||
"field_order": [
|
"field_order": [
|
||||||
"item_code",
|
"item_code",
|
||||||
"item_name",
|
"item_name",
|
||||||
|
"party_item_code",
|
||||||
"column_break_3",
|
"column_break_3",
|
||||||
"qty",
|
"qty",
|
||||||
"rate",
|
"rate",
|
||||||
@ -62,10 +64,17 @@
|
|||||||
"fieldname": "terms_and_conditions",
|
"fieldname": "terms_and_conditions",
|
||||||
"fieldtype": "Text",
|
"fieldtype": "Text",
|
||||||
"label": "Terms and Conditions"
|
"label": "Terms and Conditions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "party_item_code",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Party Item Code",
|
||||||
|
"read_only": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"modified": "2019-11-18 19:37:46.245878",
|
"links": [],
|
||||||
|
"modified": "2024-02-14 18:25:26.479672",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Manufacturing",
|
"module": "Manufacturing",
|
||||||
"name": "Blanket Order Item",
|
"name": "Blanket Order Item",
|
||||||
@ -74,5 +83,6 @@
|
|||||||
"quick_entry": 1,
|
"quick_entry": 1,
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
|
"states": [],
|
||||||
"track_changes": 1
|
"track_changes": 1
|
||||||
}
|
}
|
@ -20,6 +20,7 @@ class BlanketOrderItem(Document):
|
|||||||
parent: DF.Data
|
parent: DF.Data
|
||||||
parentfield: DF.Data
|
parentfield: DF.Data
|
||||||
parenttype: DF.Data
|
parenttype: DF.Data
|
||||||
|
party_item_code: DF.Data | None
|
||||||
qty: DF.Float
|
qty: DF.Float
|
||||||
rate: DF.Currency
|
rate: DF.Currency
|
||||||
terms_and_conditions: DF.Text | None
|
terms_and_conditions: DF.Text | None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user