fix: don't allow to submit/cancel SCR against a closed SCO

This commit is contained in:
s-aga-r 2024-01-03 22:13:37 +05:30
parent 5e2669f4b6
commit 9e973476b2

View File

@ -8,6 +8,7 @@ from frappe.utils import cint, flt, get_link_to_form, getdate, nowdate
import erpnext import erpnext
from erpnext.accounts.utils import get_account_currency from erpnext.accounts.utils import get_account_currency
from erpnext.buying.utils import check_on_hold_or_closed_status
from erpnext.controllers.subcontracting_controller import SubcontractingController from erpnext.controllers.subcontracting_controller import SubcontractingController
from erpnext.stock.stock_ledger import get_valuation_rate from erpnext.stock.stock_ledger import get_valuation_rate
@ -142,6 +143,7 @@ class SubcontractingReceipt(SubcontractingController):
self.get_current_stock() self.get_current_stock()
def on_submit(self): def on_submit(self):
self.validate_closed_subcontracting_order()
self.validate_available_qty_for_consumption() self.validate_available_qty_for_consumption()
self.update_status_updater_args() self.update_status_updater_args()
self.update_prevdoc_status() self.update_prevdoc_status()
@ -165,6 +167,7 @@ class SubcontractingReceipt(SubcontractingController):
"Repost Item Valuation", "Repost Item Valuation",
"Serial and Batch Bundle", "Serial and Batch Bundle",
) )
self.validate_closed_subcontracting_order()
self.update_status_updater_args() self.update_status_updater_args()
self.update_prevdoc_status() self.update_prevdoc_status()
self.set_consumed_qty_in_subcontract_order() self.set_consumed_qty_in_subcontract_order()
@ -175,6 +178,11 @@ class SubcontractingReceipt(SubcontractingController):
self.update_status() self.update_status()
self.delete_auto_created_batches() self.delete_auto_created_batches()
def validate_closed_subcontracting_order(self):
for item in self.items:
if item.subcontracting_order:
check_on_hold_or_closed_status("Subcontracting Order", item.subcontracting_order)
def validate_items_qty(self): def validate_items_qty(self):
for item in self.items: for item in self.items:
if not (item.qty or item.rejected_qty): if not (item.qty or item.rejected_qty):