From 66ea0861ffbb45ae476a3f0a9303fb84150a2f0c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 19 Feb 2013 15:13:23 +0530 Subject: [PATCH] fixes in gle_floating_point_issue patch --- patches/february_2013/fix_outstanding.py | 33 ++++++++++++------- .../gle_floating_point_issue_revisited.py | 2 +- patches/patch_list.py | 3 +- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/patches/february_2013/fix_outstanding.py b/patches/february_2013/fix_outstanding.py index 07ea51a695..22a6ee1740 100644 --- a/patches/february_2013/fix_outstanding.py +++ b/patches/february_2013/fix_outstanding.py @@ -1,15 +1,24 @@ def execute(): import webnotes from webnotes.utils import flt - for dt in ["Sales Invoice", "Purchase Invoice"]: - records = webnotes.conn.sql("""select name, outstanding_amount from `tab%s` - where docstatus = 1""" % dt) - for r in records: - outstanding = webnotes.conn.sql(""" - select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) from `tabGL Entry` - where against_voucher = %s and against_voucher_type = %s - and ifnull(is_cancelled, 'No') = 'No'""", (r[0], dt)) - if flt(r[1]) != abs(flt(outstanding[0][0])): - # print r, outstanding - webnotes.conn.sql("update `tab%s` set outstanding_amount = %s where name = %s" % - (dt, '%s', '%s'), (abs(flt(outstanding[0][0])), r[0])) \ No newline at end of file + records = webnotes.conn.sql(""" + select against_voucher_type, against_voucher, + sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) as outstanding from `tabGL Entry` + where ifnull(is_cancelled, 'No') = 'No' + and against_voucher_type in ("Sales Invoice", "Purchase Invoice") + and ifnull(against_voucher, '') != '' + group by against_voucher_type, against_voucher""", as_dict=1) + for r in records: + outstanding = webnotes.conn.sql("""select name, outstanding_amount from `tab%s` + where name = %s and docstatus = 1""" % + (r["against_voucher_type"], '%s'), (r["against_voucher"])) + + if outstanding and abs(flt(r["outstanding"])) != flt(outstanding[0][1]): + if ((r["against_voucher_type"]=='Sales Invoice' and flt(r["outstanding"]) >= 0) \ + or (r["against_voucher_type"]=="Purchase Invoice" and flt(["outstanding"]) <= 0)): + webnotes.conn.set_value(r["against_voucher_type"], r["against_voucher"], + "outstanding_amount", abs(flt(r["outstanding"]))) + else: + print r["against_voucher_type"], r["against_voucher"], \ + outstanding[0][1], abs(flt(r["outstanding"])) + \ No newline at end of file diff --git a/patches/february_2013/gle_floating_point_issue_revisited.py b/patches/february_2013/gle_floating_point_issue_revisited.py index 3fc57bd4e5..e407d5080e 100644 --- a/patches/february_2013/gle_floating_point_issue_revisited.py +++ b/patches/february_2013/gle_floating_point_issue_revisited.py @@ -13,7 +13,7 @@ def execute(): 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'] + # 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'])) diff --git a/patches/patch_list.py b/patches/patch_list.py index 6f21d5df85..d42360ef06 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -169,9 +169,10 @@ patch_list = [ "patches.february_2013.update_company_in_leave_application", "execute:webnotes.conn.sql_ddl('alter table tabSeries change `name` `name` varchar(100)')", "execute:webnotes.conn.sql('update tabUserRole set parentfield=\"user_roles\" where parentfield=\"userroles\"')", - "patches.february_2013.fix_outstanding", "patches.february_2013.p01_event", "execute:webnotes.delete_doc('Page', 'Calendar')", "patches.february_2013.p02_email_digest", "patches.february_2013.p05_leave_application", + "patches.february_2013.gle_floating_point_issue_revisited", + "patches.february_2013.fix_outstanding", ] \ No newline at end of file