brotherton-erpnext/patches/february_2013/gle_floating_point_issue_revisited.py
2013-02-19 15:13:23 +05:30

22 lines
911 B
Python

def execute():
import webnotes
from webnotes.utils import flt
records = webnotes.conn.sql("""select name, grand_total, debit_to from `tabSales Invoice`
where docstatus = 1""", as_dict=1)
for r in records:
gle = webnotes.conn.sql("""select name, debit from `tabGL Entry`
where account = %s and voucher_type = 'Sales Invoice' and voucher_no = %s
and ifnull(is_cancelled, 'No') = 'No' limit 1""", (r.debit_to, r.name), as_dict=1)
if gle:
diff = round((flt(r.grand_total) - flt(gle[0]['debit'])), 2)
if abs(diff) == 0.01:
# print r.name, r.grand_total, gle[0]['debit'], diff
webnotes.conn.sql("""update `tabGL Entry` set debit = debit + %s
where name = %s""", (diff, gle[0]['name']))
webnotes.conn.sql("""update `tabGL Entry` set credit = credit - %s
where voucher_type = 'Sales Invoice' and voucher_no = %s
and credit > 0 limit 1""", (diff, r.name))