def execute(): import webnotes from webnotes.utils import flt from webnotes.model.code import get_obj vouchers = webnotes.conn.sql(""" select parent, parenttype, modified, sum(if(category in ('Valuation and Total', 'Total') and add_deduct_tax='Add', tax_amount, 0)) as tax_added, sum(if(category in ('Valuation and Total', 'Total') and add_deduct_tax='Deduct', tax_amount, 0)) as tax_ded from `tabPurchase Taxes and Charges` where modified >= '2012-07-12' and parenttype != 'Purchase Taxes and Charges Master' and parent not like 'old_p%' and docstatus != 2 group by parenttype, parent order by modified """, as_dict=1) for d in vouchers: current_total_tax = webnotes.conn.sql("""select total_tax from `tab%s` where name = %s""" % (d['parenttype'], '%s'), d['parent']) correct_total_tax = flt(d['tax_added']) - flt(d['tax_ded']) if flt(current_total_tax[0][0]) != correct_total_tax: if d['parenttype'] == 'Purchase Invoice': webnotes.conn.sql(""" update `tab%s` set total_tax = %s, other_charges_added = %s, other_charges_deducted = %s, grand_total = net_tatal + other_charges_added - other_charges_deducted, total_amount_to_pay = grand_total - total_tds_on_voucher, outstanding_amount = total_amount_to_pay - total_advance where name = %s """ % (d['parenttype'], '%s', '%s', '%s', '%s'), (correct_total_tax, d['tax_added'], d['tax_ded'], d['parent'])) # post gl entry webnotes.conn.sql("""update `tabGL Entry` set is_cancelled = 'No' where voucher_type = %s and voucher_no = %s""", (d['parenttype'], d['parent'])) obj = get_obj(d['parenttype'], d['parent'], with_children=1) obj.make_gl_entries() else: webnotes.conn.sql("""update `tab%s` set total_tax = %s, grand_total = net_tatal + total_tax where name = %s""" % (d[1], '%s', '%s'), (correct_total_tax, d['parent']))