From 8a5be5b74726c3ba88200cca033b0f36f884051b Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 3 Oct 2012 16:19:28 +0530 Subject: [PATCH] fix wrong vouchers due to Valuation charges --- patches/october_2012/find_wrong_voucher.py | 16 ------- patches/october_2012/fix_wrong_vouchers.py | 53 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 16 deletions(-) delete mode 100644 patches/october_2012/find_wrong_voucher.py create mode 100644 patches/october_2012/fix_wrong_vouchers.py diff --git a/patches/october_2012/find_wrong_voucher.py b/patches/october_2012/find_wrong_voucher.py deleted file mode 100644 index 637ed1d70e..0000000000 --- a/patches/october_2012/find_wrong_voucher.py +++ /dev/null @@ -1,16 +0,0 @@ -def execute(): - import webnotes - from webnotes.utils import flt - vouchers = webnotes.conn.sql(""" - select parent, parenttype, modified, sum(if(add_deduct_tax='Add', tax_amount, -tax_amount)) as tax from `tabPurchase Taxes and Charges` - where modified >= '2012-07-12' - and category in ('Total', 'Valuation and Total') - and parenttype != 'Purchase Taxes and Charges Master' - group by parenttype, parent - """) - - for d in vouchers: - total_tax = webnotes.conn.sql("""select total_tax from `tab%s` where name = %s""" % - (d[1], '%s'), d[0]) - if total_tax and flt(total_tax[0][0]) != flt(d[3]): - print d \ No newline at end of file diff --git a/patches/october_2012/fix_wrong_vouchers.py b/patches/october_2012/fix_wrong_vouchers.py new file mode 100644 index 0000000000..ce47ff7dad --- /dev/null +++ b/patches/october_2012/fix_wrong_vouchers.py @@ -0,0 +1,53 @@ +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'])) \ No newline at end of file