Merge branch 'master' of github.com:webnotes/erpnext
This commit is contained in:
commit
68f11060a6
@ -136,47 +136,58 @@ class DocType:
|
|||||||
else:
|
else:
|
||||||
self.entries.append(le)
|
self.entries.append(le)
|
||||||
|
|
||||||
|
def manage_debit_credit(self, cancel):
|
||||||
# Save GL Entries
|
total_debit, total_credit = 0, 0
|
||||||
# ----------------
|
|
||||||
def save_entries(self, cancel, adv_adj, update_outstanding):
|
|
||||||
for le in self.entries:
|
for le in self.entries:
|
||||||
# round off upto 2 decimal
|
# 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
|
#toggle debit, credit if negative entry
|
||||||
if flt(le.debit) < 0 or flt(le.credit) < 0:
|
if flt(le.debit) < 0 or flt(le.credit) < 0:
|
||||||
tmp=le.debit
|
tmp=le.debit
|
||||||
le.debit, le.credit = abs(flt(le.credit)), abs(flt(tmp))
|
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
|
# toggled debit/credit in two separate condition because both
|
||||||
# time of cancellation when there is negative amount (tax discount)
|
# should be executed at the time of cancellation when there is
|
||||||
|
# negative amount (tax discount)
|
||||||
if cancel:
|
if cancel:
|
||||||
tmp=le.debit
|
tmp=le.debit
|
||||||
le.debit, le.credit = abs(flt(le.credit)), abs(flt(tmp))
|
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)
|
le_obj = get_obj(doc=le)
|
||||||
# validate except on_cancel
|
# validate except on_cancel
|
||||||
if not cancel:
|
if not cancel:
|
||||||
le_obj.validate()
|
le_obj.validate()
|
||||||
|
|
||||||
# save
|
|
||||||
le.save(1)
|
le.save(1)
|
||||||
le_obj.on_update(adv_adj, cancel, update_outstanding)
|
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
|
# Make Multiple Entries
|
||||||
# ---------------------
|
|
||||||
def make_gl_entries(self, doc, doclist, cancel=0, adv_adj = 0, use_mapper='', merge_entries = 1, update_outstanding='Yes'):
|
def make_gl_entries(self, doc, doclist, cancel=0, adv_adj = 0, use_mapper='', merge_entries = 1, update_outstanding='Yes'):
|
||||||
self.entries = []
|
self.entries = []
|
||||||
# get 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)
|
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:
|
for le_map in le_map_list:
|
||||||
if le_map['table_field']:
|
if le_map['table_field']:
|
||||||
for d in getlist(doclist,le_map['table_field']):
|
for d in getlist(doclist,le_map['table_field']):
|
||||||
@ -189,11 +200,7 @@ class DocType:
|
|||||||
# save entries
|
# save entries
|
||||||
self.save_entries(cancel, adv_adj, update_outstanding)
|
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
|
# set as cancelled
|
||||||
if cancel:
|
if cancel:
|
||||||
|
|||||||
@ -21,7 +21,6 @@
|
|||||||
var tname = cur_frm.cscript.tname;
|
var tname = cur_frm.cscript.tname;
|
||||||
var fname = cur_frm.cscript.fname;
|
var fname = cur_frm.cscript.fname;
|
||||||
|
|
||||||
|
|
||||||
cur_frm.cscript.get_default_schedule_date = function(doc) {
|
cur_frm.cscript.get_default_schedule_date = function(doc) {
|
||||||
var ch = getchildren( tname, doc.name, fname);
|
var ch = getchildren( tname, doc.name, fname);
|
||||||
if (flt(ch.length) > 0){
|
if (flt(ch.length) > 0){
|
||||||
|
|||||||
@ -54,10 +54,8 @@ cur_frm.cscript.refresh = function(doc,cdt,cdn){
|
|||||||
} else {
|
} else {
|
||||||
if(doc.approval_status=="Draft") {
|
if(doc.approval_status=="Draft") {
|
||||||
if(user==doc.exp_approver) {
|
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.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.toggle_enable("approval_status", true);
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
cur_frm.set_intro("Expense Claim is pending approval. Only the Expense Approver can update status.");
|
cur_frm.set_intro("Expense Claim is pending approval. Only the Expense Approver can update status.");
|
||||||
cur_frm.toggle_enable("approval_status", false);
|
cur_frm.toggle_enable("approval_status", false);
|
||||||
|
|||||||
@ -2,9 +2,9 @@
|
|||||||
{
|
{
|
||||||
"owner": "harshada@webnotestech.com",
|
"owner": "harshada@webnotestech.com",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"creation": "2012-12-05 14:11:53",
|
"creation": "2012-12-05 16:53:59",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"modified": "2012-12-05 14:22:27"
|
"modified": "2012-12-06 17:34:37"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
@ -43,7 +43,7 @@
|
|||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"permlevel": 1,
|
"permlevel": 0,
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"colour": "White:FFF",
|
"colour": "White:FFF",
|
||||||
@ -248,8 +248,8 @@
|
|||||||
"doctype": "DocPerm",
|
"doctype": "DocPerm",
|
||||||
"submit": 1,
|
"submit": 1,
|
||||||
"write": 1,
|
"write": 1,
|
||||||
"cancel": 1,
|
|
||||||
"role": "Expense Approver",
|
"role": "Expense Approver",
|
||||||
|
"cancel": 1,
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"match": "exp_approver:user"
|
"match": "exp_approver:user"
|
||||||
},
|
},
|
||||||
@ -259,8 +259,8 @@
|
|||||||
"doctype": "DocPerm",
|
"doctype": "DocPerm",
|
||||||
"submit": 1,
|
"submit": 1,
|
||||||
"write": 1,
|
"write": 1,
|
||||||
"cancel": 1,
|
|
||||||
"role": "HR User",
|
"role": "HR User",
|
||||||
|
"cancel": 1,
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user