feat: provision to close SCO (backport #39127) (#39144)

* feat: provision to close SCO

(cherry picked from commit 5e2669f4b6)

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

(cherry picked from commit 9e973476b2)

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

(cherry picked from commit 5bc2035bd0)

* fix(ux): filter closed SCO in `Get Items From` dialog

(cherry picked from commit bb839b2924)

* fix: don't close PO on SCO close

(cherry picked from commit 0d01bd8a5a)

* fix: update qty on SCO status change

(cherry picked from commit 245effcccd)

* fix: don't allow to reopen SCO if PO is closed

(cherry picked from commit 784b6dcfea)

* fix: auto close and reopen SCO based on PO status

(cherry picked from commit 0819675fce)

* fix(text): test_update_status

(cherry picked from commit cdd5441435)

---------

Co-authored-by: s-aga-r <sagarsharma.s312@gmail.com>
This commit is contained in:
mergify[bot]
2024-01-04 17:22:58 +05:30
committed by GitHub
parent 2db1e1a737
commit b192ddd13b
9 changed files with 72 additions and 45 deletions

View File

@@ -452,6 +452,7 @@ class PurchaseOrder(BuyingController):
self.update_requested_qty()
self.update_ordered_qty()
self.update_reserved_qty_for_subcontract()
self.update_subcontracting_order_status()
self.notify_update()
clear_doctype_notifications(self)
@@ -613,6 +614,17 @@ class PurchaseOrder(BuyingController):
if frappe.db.get_single_value("Buying Settings", "auto_create_subcontracting_order"):
make_subcontracting_order(self.name, save=True, notify=True)
def update_subcontracting_order_status(self):
from erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order import (
update_subcontracting_order_status as update_sco_status,
)
if self.is_subcontracted and not self.is_old_subcontracting_flow:
sco = frappe.db.get_value("Subcontracting Order", {"purchase_order": self.name, "docstatus": 1})
if sco:
update_sco_status(sco, "Closed" if self.status == "Closed" else None)
def item_last_purchase_rate(name, conversion_rate, item_code, conversion_factor=1.0):
"""get last purchase rate for an item"""