fix: fetching items from blanket order to sales/purchase order (#45262)
* fix: blanket order with zero item quantity
* fix: item quantity validation
* refactor: resolve linter issue
(cherry picked from commit 98d401bee4)
This commit is contained in:
@@ -43,6 +43,7 @@ class BlanketOrder(Document):
|
|||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_dates()
|
self.validate_dates()
|
||||||
self.validate_duplicate_items()
|
self.validate_duplicate_items()
|
||||||
|
self.validate_item_qty()
|
||||||
self.set_party_item_code()
|
self.set_party_item_code()
|
||||||
|
|
||||||
def validate_dates(self):
|
def validate_dates(self):
|
||||||
@@ -117,6 +118,11 @@ class BlanketOrder(Document):
|
|||||||
for d in self.items:
|
for d in self.items:
|
||||||
d.db_set("ordered_qty", item_ordered_qty.get(d.item_code, 0))
|
d.db_set("ordered_qty", item_ordered_qty.get(d.item_code, 0))
|
||||||
|
|
||||||
|
def validate_item_qty(self):
|
||||||
|
for d in self.items:
|
||||||
|
if d.qty < 0:
|
||||||
|
frappe.throw(_("Row {0}: Quantity cannot be negative.").format(d.idx))
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def make_order(source_name):
|
def make_order(source_name):
|
||||||
@@ -148,7 +154,7 @@ def make_order(source_name):
|
|||||||
"doctype": doctype + " Item",
|
"doctype": doctype + " Item",
|
||||||
"field_map": {"rate": "blanket_order_rate", "parent": "blanket_order"},
|
"field_map": {"rate": "blanket_order_rate", "parent": "blanket_order"},
|
||||||
"postprocess": update_item,
|
"postprocess": update_item,
|
||||||
"condition": lambda item: (flt(item.qty) - flt(item.ordered_qty)) > 0,
|
"condition": lambda item: not (flt(item.qty)) or (flt(item.qty) - flt(item.ordered_qty)) > 0,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@@ -186,7 +192,7 @@ def validate_against_blanket_order(order_doc):
|
|||||||
if item.item_code in item_data:
|
if item.item_code in item_data:
|
||||||
remaining_qty = item.qty - item.ordered_qty
|
remaining_qty = item.qty - item.ordered_qty
|
||||||
allowed_qty = remaining_qty + (remaining_qty * (allowance / 100))
|
allowed_qty = remaining_qty + (remaining_qty * (allowance / 100))
|
||||||
if allowed_qty < item_data[item.item_code]:
|
if item.qty and allowed_qty < item_data[item.item_code]:
|
||||||
frappe.throw(
|
frappe.throw(
|
||||||
_(
|
_(
|
||||||
"Item {0} cannot be ordered more than {1} against Blanket Order {2}."
|
"Item {0} cannot be ordered more than {1} against Blanket Order {2}."
|
||||||
|
|||||||
Reference in New Issue
Block a user