mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-22 06:29:20 +00:00
Merge pull request #48588 from mihir-kandoi/st43481
perf: optimize code for subcontracting
This commit is contained in:
@@ -959,7 +959,7 @@ class SubcontractingController(StockController):
|
|||||||
)
|
)
|
||||||
|
|
||||||
sco_doc.update_ordered_qty_for_subcontracting(sco_item_rows)
|
sco_doc.update_ordered_qty_for_subcontracting(sco_item_rows)
|
||||||
sco_doc.update_reserved_qty_for_subcontracting()
|
sco_doc.update_reserved_qty_for_subcontracting(sco_item_rows)
|
||||||
|
|
||||||
def make_sl_entries_for_supplier_warehouse(self, sl_entries):
|
def make_sl_entries_for_supplier_warehouse(self, sl_entries):
|
||||||
if hasattr(self, "supplied_items"):
|
if hasattr(self, "supplied_items"):
|
||||||
@@ -1052,7 +1052,7 @@ class SubcontractingController(StockController):
|
|||||||
|
|
||||||
return supplied_items_cost
|
return supplied_items_cost
|
||||||
|
|
||||||
def set_subcontracting_order_status(self):
|
def set_subcontracting_order_status(self, update_bin=True):
|
||||||
if self.doctype == "Subcontracting Order":
|
if self.doctype == "Subcontracting Order":
|
||||||
self.update_status()
|
self.update_status()
|
||||||
elif self.doctype == "Subcontracting Receipt":
|
elif self.doctype == "Subcontracting Receipt":
|
||||||
@@ -1061,7 +1061,7 @@ class SubcontractingController(StockController):
|
|||||||
if self.subcontract_orders:
|
if self.subcontract_orders:
|
||||||
for sco in set(self.subcontract_orders):
|
for sco in set(self.subcontract_orders):
|
||||||
sco_doc = frappe.get_doc("Subcontracting Order", sco)
|
sco_doc = frappe.get_doc("Subcontracting Order", sco)
|
||||||
sco_doc.update_status()
|
sco_doc.update_status(update_bin=update_bin)
|
||||||
|
|
||||||
def calculate_additional_costs(self):
|
def calculate_additional_costs(self):
|
||||||
self.total_additional_costs = sum(flt(item.amount) for item in self.get("additional_costs"))
|
self.total_additional_costs = sum(flt(item.amount) for item in self.get("additional_costs"))
|
||||||
|
|||||||
@@ -236,8 +236,11 @@ class SubcontractingOrder(SubcontractingController):
|
|||||||
|
|
||||||
return flt(query[0][0]) if query else 0
|
return flt(query[0][0]) if query else 0
|
||||||
|
|
||||||
def update_reserved_qty_for_subcontracting(self):
|
def update_reserved_qty_for_subcontracting(self, sco_item_rows=None):
|
||||||
for item in self.supplied_items:
|
for item in self.supplied_items:
|
||||||
|
if sco_item_rows and item.reference_name not in sco_item_rows:
|
||||||
|
continue
|
||||||
|
|
||||||
if item.rm_item_code:
|
if item.rm_item_code:
|
||||||
stock_bin = get_bin(item.rm_item_code, item.reserve_warehouse)
|
stock_bin = get_bin(item.rm_item_code, item.reserve_warehouse)
|
||||||
stock_bin.update_reserved_qty_for_sub_contracting()
|
stock_bin.update_reserved_qty_for_sub_contracting()
|
||||||
@@ -299,7 +302,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, update_bin=True):
|
||||||
if self.status == "Closed" and self.status != status:
|
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)
|
||||||
|
|
||||||
@@ -329,8 +332,9 @@ class SubcontractingOrder(SubcontractingController):
|
|||||||
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()
|
||||||
self.update_ordered_qty_for_subcontracting()
|
if update_bin:
|
||||||
self.update_reserved_qty_for_subcontracting()
|
self.update_ordered_qty_for_subcontracting()
|
||||||
|
self.update_reserved_qty_for_subcontracting()
|
||||||
|
|
||||||
def update_subcontracted_quantity_in_po(self, cancel=False):
|
def update_subcontracted_quantity_in_po(self, cancel=False):
|
||||||
for service_item in self.service_items:
|
for service_item in self.service_items:
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ class SubcontractingReceipt(SubcontractingController):
|
|||||||
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()
|
||||||
self.set_subcontracting_order_status()
|
self.set_subcontracting_order_status(update_bin=False)
|
||||||
self.set_consumed_qty_in_subcontract_order()
|
self.set_consumed_qty_in_subcontract_order()
|
||||||
|
|
||||||
for table_name in ["items", "supplied_items"]:
|
for table_name in ["items", "supplied_items"]:
|
||||||
@@ -181,7 +181,7 @@ class SubcontractingReceipt(SubcontractingController):
|
|||||||
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()
|
||||||
self.set_subcontracting_order_status()
|
self.set_subcontracting_order_status(update_bin=False)
|
||||||
self.update_stock_ledger()
|
self.update_stock_ledger()
|
||||||
self.make_gl_entries_on_cancel()
|
self.make_gl_entries_on_cancel()
|
||||||
self.repost_future_sle_and_gle()
|
self.repost_future_sle_and_gle()
|
||||||
|
|||||||
Reference in New Issue
Block a user