perf: optimize total_purchase_cost update
(cherry picked from commit aa17110bde44603574d4532afaa6cf1181423ac5)
This commit is contained in:
parent
220a0f4b11
commit
deed9f5840
@ -1279,13 +1279,21 @@ class PurchaseInvoice(BuyingController):
|
|||||||
self.update_advance_tax_references(cancel=1)
|
self.update_advance_tax_references(cancel=1)
|
||||||
|
|
||||||
def update_project(self):
|
def update_project(self):
|
||||||
project_list = []
|
projects = frappe._dict()
|
||||||
for d in self.items:
|
for d in self.items:
|
||||||
if d.project and d.project not in project_list:
|
if d.project:
|
||||||
project = frappe.get_doc("Project", d.project)
|
if self.docstatus == 1:
|
||||||
project.update_purchase_costing()
|
projects[d.project] = projects.get(d.project, 0) + d.base_net_amount
|
||||||
project.db_update()
|
elif self.docstatus == 2:
|
||||||
project_list.append(d.project)
|
projects[d.project] = projects.get(d.project, 0) - d.base_net_amount
|
||||||
|
|
||||||
|
pj = frappe.qb.DocType("Project")
|
||||||
|
for proj, value in projects.items():
|
||||||
|
res = (
|
||||||
|
frappe.qb.from_(pj).select(pj.total_purchase_cost).where(pj.name == proj).for_update().run()
|
||||||
|
)
|
||||||
|
current_purchase_cost = res and res[0][0] or 0
|
||||||
|
frappe.db.set_value("Project", proj, "total_purchase_cost", current_purchase_cost + value)
|
||||||
|
|
||||||
def validate_supplier_invoice(self):
|
def validate_supplier_invoice(self):
|
||||||
if self.bill_date:
|
if self.bill_date:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user