brotherton-erpnext/patches/october_2012/fix_wrong_vouchers.py
2012-10-03 16:19:28 +05:30

53 lines
1.9 KiB
Python

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']))