Merge pull request #33621 from s-aga-r/fix/validation/scr

chore: subcontracting validations
This commit is contained in:
Sagar Sharma 2023-01-12 15:49:30 +05:30 committed by GitHub
commit 9ed7594f6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 19 deletions

View File

@ -219,20 +219,16 @@ class PurchaseOrder(BuyingController):
else:
if not frappe.get_value("Item", item.fg_item, "is_sub_contracted_item"):
frappe.throw(
_(
"Row #{0}: Finished Good Item {1} must be a sub-contracted item for service item {2}"
).format(item.idx, item.fg_item, item.item_code)
_("Row #{0}: Finished Good Item {1} must be a sub-contracted item").format(
item.idx, item.fg_item
)
)
elif not frappe.get_value("Item", item.fg_item, "default_bom"):
frappe.throw(
_("Row #{0}: Default BOM not found for FG Item {1}").format(item.idx, item.fg_item)
)
if not item.fg_item_qty:
frappe.throw(
_("Row #{0}: Finished Good Item Qty is not specified for service item {0}").format(
item.idx, item.item_code
)
)
frappe.throw(_("Row #{0}: Finished Good Item Qty can not be zero").format(item.idx))
else:
for item in self.items:
item.set("fg_item", None)

View File

@ -74,24 +74,25 @@ class SubcontractingController(StockController):
)
if not is_stock_item:
msg = f"Item {item.item_name} must be a stock item."
frappe.throw(_(msg))
frappe.throw(_("Row {0}: Item {1} must be a stock item.").format(item.idx, item.item_name))
if not is_sub_contracted_item:
msg = f"Item {item.item_name} must be a subcontracted item."
frappe.throw(_(msg))
frappe.throw(
_("Row {0}: Item {1} must be a subcontracted item.").format(item.idx, item.item_name)
)
if item.bom:
bom = frappe.get_doc("BOM", item.bom)
if not bom.is_active:
msg = f"Please select an active BOM for Item {item.item_name}."
frappe.throw(_(msg))
frappe.throw(
_("Row {0}: Please select an active BOM for Item {1}.").format(item.idx, item.item_name)
)
if bom.item != item.item_code:
msg = f"Please select an valid BOM for Item {item.item_name}."
frappe.throw(_(msg))
frappe.throw(
_("Row {0}: Please select an valid BOM for Item {1}.").format(item.idx, item.item_name)
)
else:
msg = f"Please select a BOM for Item {item.item_name}."
frappe.throw(_(msg))
frappe.throw(_("Row {0}: Please select a BOM for Item {1}.").format(item.idx, item.item_name))
def __get_data_before_save(self):
item_dict = {}

View File

@ -57,6 +57,7 @@ class SubcontractingReceipt(SubcontractingController):
def before_validate(self):
super(SubcontractingReceipt, self).before_validate()
self.validate_items_qty()
self.set_items_bom()
self.set_items_cost_center()
self.set_items_expense_account()
@ -157,7 +158,7 @@ class SubcontractingReceipt(SubcontractingController):
total_qty = total_amount = 0
for item in self.items:
if item.name in rm_supp_cost:
if item.qty and item.name in rm_supp_cost:
item.rm_supp_cost = rm_supp_cost[item.name]
item.rm_cost_per_qty = item.rm_supp_cost / item.qty
rm_supp_cost.pop(item.name)
@ -194,6 +195,13 @@ class SubcontractingReceipt(SubcontractingController):
).format(item.idx)
)
def validate_items_qty(self):
for item in self.items:
if not (item.qty or item.rejected_qty):
frappe.throw(
_("Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time.").format(item.idx)
)
def set_items_bom(self):
if self.is_return:
for item in self.items: