fix: auto close and reopen SCO based on PO status
This commit is contained in:
parent
784b6dcfea
commit
0819675fce
@ -452,6 +452,7 @@ class PurchaseOrder(BuyingController):
|
|||||||
self.update_requested_qty()
|
self.update_requested_qty()
|
||||||
self.update_ordered_qty()
|
self.update_ordered_qty()
|
||||||
self.update_reserved_qty_for_subcontract()
|
self.update_reserved_qty_for_subcontract()
|
||||||
|
self.update_subcontracting_order_status()
|
||||||
self.notify_update()
|
self.notify_update()
|
||||||
clear_doctype_notifications(self)
|
clear_doctype_notifications(self)
|
||||||
|
|
||||||
@ -627,6 +628,17 @@ class PurchaseOrder(BuyingController):
|
|||||||
if frappe.db.get_single_value("Buying Settings", "auto_create_subcontracting_order"):
|
if frappe.db.get_single_value("Buying Settings", "auto_create_subcontracting_order"):
|
||||||
make_subcontracting_order(self.name, save=True, notify=True)
|
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):
|
def item_last_purchase_rate(name, conversion_rate, item_code, conversion_factor=1.0):
|
||||||
"""get last purchase rate for an item"""
|
"""get last purchase rate for an item"""
|
||||||
|
@ -272,7 +272,7 @@ class SubcontractingOrder(SubcontractingController):
|
|||||||
self.set_missing_values()
|
self.set_missing_values()
|
||||||
|
|
||||||
def update_status(self, status=None, update_modified=True):
|
def update_status(self, status=None, update_modified=True):
|
||||||
if self.status == "Closed":
|
if self.status == "Closed" and self.status != status:
|
||||||
check_on_hold_or_closed_status("Purchase Order", self.purchase_order)
|
check_on_hold_or_closed_status("Purchase Order", self.purchase_order)
|
||||||
|
|
||||||
if self.docstatus >= 1 and not status:
|
if self.docstatus >= 1 and not status:
|
||||||
@ -302,7 +302,7 @@ class SubcontractingOrder(SubcontractingController):
|
|||||||
elif self.docstatus == 2:
|
elif self.docstatus == 2:
|
||||||
status = "Cancelled"
|
status = "Cancelled"
|
||||||
|
|
||||||
if status:
|
if status and self.status != status:
|
||||||
self.db_set("status", status, update_modified=update_modified)
|
self.db_set("status", status, update_modified=update_modified)
|
||||||
|
|
||||||
self.update_requested_qty()
|
self.update_requested_qty()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user