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..ce47ff7
--- /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
