From f71d8e0ee4c73b97dba02a53025c383fd76a1e79 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 6 Dec 2012 17:24:59 +0530 Subject: [PATCH 1/2] debit/credit adjustment if there is difference due to rounding --- accounts/doctype/gl_control/gl_control.py | 49 +++++++++++-------- .../purchase_common/purchase_common.js | 1 - 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/accounts/doctype/gl_control/gl_control.py b/accounts/doctype/gl_control/gl_control.py index a458d030c5..e4896d35bb 100644 --- a/accounts/doctype/gl_control/gl_control.py +++ b/accounts/doctype/gl_control/gl_control.py @@ -136,47 +136,58 @@ class DocType: else: self.entries.append(le) - - # Save GL Entries - # ---------------- - def save_entries(self, cancel, adv_adj, update_outstanding): + def manage_debit_credit(self, cancel): + total_debit, total_credit = 0, 0 for le in self.entries: # round off upto 2 decimal - le.debit, le.credit = round(flt(le.debit), 2), round(flt(le.credit), 2) - + le.debit = flt(le.debit, 2) + le.credit = flt(le.credit, 2) + #toggle debit, credit if negative entry if flt(le.debit) < 0 or flt(le.credit) < 0: tmp=le.debit le.debit, le.credit = abs(flt(le.credit)), abs(flt(tmp)) - # toggled debit/credit in two separate condition because both should be executed at the - # time of cancellation when there is negative amount (tax discount) + # toggled debit/credit in two separate condition because both + # should be executed at the time of cancellation when there is + # negative amount (tax discount) if cancel: tmp=le.debit le.debit, le.credit = abs(flt(le.credit)), abs(flt(tmp)) + + # update total debit / credit + total_debit += flt(le.debit, 2) + total_credit += flt(le.credit, 2) + + diff = flt(total_debit - total_credit, 2) + if abs(diff)==0.01: + if self.entries[0].debit: + self.entries[0].debit = self.entries[0].debit - diff + elif self.entries[0].credit: + self.entries[0].credit = self.entries[0].credit + diff + elif abs(diff) > 0.01 and not cancel: + # Due to old wrong entries(total debit!=total credit) some voucher should be cancelled + msgprint("""Debit and Credit not equal for this voucher: Diff (Debit) is %s""" % + diff, raise_exception=1) - + def save_entries(self, cancel, adv_adj, update_outstanding): + self.manage_debit_credit(cancel) + + for le in self.entries: le_obj = get_obj(doc=le) # validate except on_cancel if not cancel: le_obj.validate() - # save le.save(1) le_obj.on_update(adv_adj, cancel, update_outstanding) - - # update total debit / credit - self.td += flt(le.debit) - self.tc += flt(le.credit) # Make Multiple Entries - # --------------------- def make_gl_entries(self, doc, doclist, cancel=0, adv_adj = 0, use_mapper='', merge_entries = 1, update_outstanding='Yes'): self.entries = [] # get entries le_map_list = webnotes.conn.sql("select * from `tabGL Mapper Detail` where parent = %s", use_mapper or doc.doctype, as_dict=1) - self.td, self.tc = 0.0, 0.0 for le_map in le_map_list: if le_map['table_field']: for d in getlist(doclist,le_map['table_field']): @@ -189,11 +200,7 @@ class DocType: # save entries self.save_entries(cancel, adv_adj, update_outstanding) - # check total debit / credit - # Due to old wrong entries (total debit != total credit) some voucher could be cancelled - if abs(self.td - self.tc) > 0.004 and not cancel: - msgprint("Debit and Credit not equal for this voucher: Diff (Debit) is %s" % (self.td-self.tc)) - raise Exception + # set as cancelled if cancel: diff --git a/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js index b29ccb7191..4905006f1c 100644 --- a/buying/doctype/purchase_common/purchase_common.js +++ b/buying/doctype/purchase_common/purchase_common.js @@ -21,7 +21,6 @@ var tname = cur_frm.cscript.tname; var fname = cur_frm.cscript.fname; - cur_frm.cscript.get_default_schedule_date = function(doc) { var ch = getchildren( tname, doc.name, fname); if (flt(ch.length) > 0){ From 14dcb47dc26e0f29644acf96ba098a586310dcce Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 6 Dec 2012 17:34:57 +0530 Subject: [PATCH 2/2] fix in expense claim --- hr/doctype/expense_claim/expense_claim.js | 6 ++---- hr/doctype/expense_claim/expense_claim.txt | 10 +++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/hr/doctype/expense_claim/expense_claim.js b/hr/doctype/expense_claim/expense_claim.js index 8ba097821f..28487a801e 100644 --- a/hr/doctype/expense_claim/expense_claim.js +++ b/hr/doctype/expense_claim/expense_claim.js @@ -54,10 +54,8 @@ cur_frm.cscript.refresh = function(doc,cdt,cdn){ } else { if(doc.approval_status=="Draft") { if(user==doc.exp_approver) { - if(doc.approval_status=="Draft") { - cur_frm.set_intro("You are the Expense Approver for this record. Please Update the 'Status' and Save"); - cur_frm.toggle_enable("approval_status", true); - } + cur_frm.set_intro("You are the Expense Approver for this record. Please Update the 'Status' and Save"); + cur_frm.toggle_enable("approval_status", true); } else { cur_frm.set_intro("Expense Claim is pending approval. Only the Expense Approver can update status."); cur_frm.toggle_enable("approval_status", false); diff --git a/hr/doctype/expense_claim/expense_claim.txt b/hr/doctype/expense_claim/expense_claim.txt index f42e2dd571..638a9f7571 100644 --- a/hr/doctype/expense_claim/expense_claim.txt +++ b/hr/doctype/expense_claim/expense_claim.txt @@ -2,9 +2,9 @@ { "owner": "harshada@webnotestech.com", "docstatus": 0, - "creation": "2012-12-05 14:11:53", + "creation": "2012-12-05 16:53:59", "modified_by": "Administrator", - "modified": "2012-12-05 14:22:27" + "modified": "2012-12-06 17:34:37" }, { "is_submittable": 1, @@ -43,7 +43,7 @@ "permlevel": 0 }, { - "permlevel": 1, + "permlevel": 0, "no_copy": 1, "oldfieldtype": "Select", "colour": "White:FFF", @@ -248,8 +248,8 @@ "doctype": "DocPerm", "submit": 1, "write": 1, - "cancel": 1, "role": "Expense Approver", + "cancel": 1, "permlevel": 0, "match": "exp_approver:user" }, @@ -259,8 +259,8 @@ "doctype": "DocPerm", "submit": 1, "write": 1, - "cancel": 1, "role": "HR User", + "cancel": 1, "permlevel": 0 }, {