Optimize patch (#15263)

This commit is contained in:
Shreya Shah 2018-08-30 17:24:03 +05:30 committed by Nabin Hait
parent d982e8fcda
commit 3df2639a32

View File

@ -15,42 +15,20 @@ def execute():
buying_doctypes = ["Purchase Order Item", "Purchase Invoice Item", "Purchase Receipt Item", "Supplier Quotation Item"] buying_doctypes = ["Purchase Order Item", "Purchase Invoice Item", "Purchase Receipt Item", "Supplier Quotation Item"]
for doctype in selling_doctypes: for doctype in selling_doctypes:
values = frappe.db.sql('''
SELECT
discount_percentage, rate_with_margin, price_list_rate, name
FROM
`tab%s`
WHERE
ifnull(discount_percentage, 0) > 0
''' % (doctype), as_dict=True)
calculate_discount(doctype, values)
for doctype in buying_doctypes:
values = frappe.db.sql('''
SELECT
discount_percentage, price_list_rate, name
FROM
`tab%s`
WHERE
discount_percentage > 0
''' % (doctype), as_dict=True)
calculate_discount(doctype, values)
def calculate_discount(doctype, values):
rate = None
if not values: return
for d in values:
if d.rate_with_margin and d.rate_with_margin > 0:
rate = d.rate_with_margin
else:
rate = d.price_list_rate
discount_value = rate * d.get('discount_percentage') / 100
frappe.db.sql(''' frappe.db.sql('''
UPDATE UPDATE
`tab%s` `tab%s`
SET SET
discount_amount = %s discount_amount = if(rate_with_margin > 0, rate_with_margin, price_list_rate) * discount_percentage / 100
WHERE WHERE
name = '%s' discount_percentage > 0
''' % (doctype, discount_value, d.get('name'))) ''' % (doctype))
for doctype in buying_doctypes:
frappe.db.sql('''
UPDATE
`tab%s`
SET
discount_amount = price_list_rate * discount_percentage / 100
WHERE
discount_percentage > 0
''' % (doctype))