Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/patches/october_2012/find_wrong_voucher.py b/patches/october_2012/find_wrong_voucher.py
deleted file mode 100644
index 637ed1d..0000000
--- 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 0000000..6218861
--- /dev/null
+++ b/patches/october_2012/fix_wrong_vouchers.py
@@ -0,0 +1,65 @@
+def execute():
+ import webnotes
+ from webnotes.utils import flt
+ from webnotes.model.code import get_obj
+
+ vouchers = webnotes.conn.sql("""
+ select
+ parent, parenttype, modified, docstatus,
+ 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_added_import = other_charges_added / conversion_rate,
+ other_charges_deducted = %s,
+ other_charges_deducted_import = other_charges_deducted / conversion_rate,
+ grand_total = net_total + other_charges_added - other_charges_deducted,
+ grand_total_import = grand_total / conversion_rate,
+ 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
+ if d['docstatus'] == 1:
+ 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_total + total_tax,
+ grand_total_import = grand_total / conversion_rate
+ where
+ name = %s
+ """ % (d[1], '%s', '%s'), (correct_total_tax, d['parent']))
\ No newline at end of file