From be68542bab85e3e0aaf7c4ea7fc04197777b2faf Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 23 Sep 2013 18:34:13 +0530 Subject: [PATCH] [minor] fetch debit/credit based on against JV --- .../journal_voucher/journal_voucher.js | 62 +++++++++++++------ .../journal_voucher/journal_voucher.py | 38 +++++++++--- .../doctype/support_ticket/support_ticket.js | 4 +- 3 files changed, 74 insertions(+), 30 deletions(-) diff --git a/accounts/doctype/journal_voucher/journal_voucher.js b/accounts/doctype/journal_voucher/journal_voucher.js index a3aa6f127a..a6aa007b12 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.js +++ b/accounts/doctype/journal_voucher/journal_voucher.js @@ -59,6 +59,50 @@ erpnext.accounts.JournalVoucher = wn.ui.form.Controller.extend({ }; }); }, + + against_voucher: function(doc, cdt, cdn) { + var d = wn.model.get_doc(cdt, cdn); + if (d.against_voucher && !flt(d.debit)) { + this.get_outstanding({ + 'doctype': 'Purchase Invoice', + 'docname': d.against_voucher + }, d) + } + }, + + against_invoice: function(doc, cdt, cdn) { + var d = wn.model.get_doc(cdt, cdn); + if (d.against_invoice && !flt(d.credit)) { + this.get_outstanding({ + 'doctype': 'Sales Invoice', + 'docname': d.against_invoice + }, d) + } + }, + + against_jv: function(doc, cdt, cdn) { + var d = wn.model.get_doc(cdt, cdn); + if (d.against_jv && !flt(d.credit) && !flt(d.debit)) { + this.get_outstanding({ + 'doctype': 'Journal Voucher', + 'docname': d.against_jv, + 'account': d.account + }, d) + } + }, + + get_outstanding: function(args, child) { + var me = this; + return this.frm.call({ + child: child, + method: "get_outstanding", + args: { args: args}, + callback: function(r) { + cur_frm.cscript.update_totals(me.frm.doc); + } + }); + } + }); cur_frm.script_manager.make(erpnext.accounts.JournalVoucher); @@ -88,24 +132,6 @@ cur_frm.cscript.is_opening = function(doc, cdt, cdn) { if (doc.is_opening == 'Yes') unhide_field('aging_date'); } -cur_frm.cscript.against_voucher = function(doc,cdt,cdn) { - var d = locals[cdt][cdn]; - if (d.against_voucher && !flt(d.debit)) { - args = {'doctype': 'Purchase Invoice', 'docname': d.against_voucher } - return get_server_fields('get_outstanding',docstring(args),'entries',doc,cdt,cdn,1,function(r,rt) { cur_frm.cscript.update_totals(doc); }); - } -} - -cur_frm.cscript.against_invoice = function(doc,cdt,cdn) { - var d = locals[cdt][cdn]; - if (d.against_invoice && !flt(d.credit)) { - args = {'doctype': 'Sales Invoice', 'docname': d.against_invoice } - return get_server_fields('get_outstanding',docstring(args),'entries',doc,cdt,cdn,1,function(r,rt) { cur_frm.cscript.update_totals(doc); }); - } -} - -// Update Totals - cur_frm.cscript.update_totals = function(doc) { var td=0.0; var tc =0.0; var el = getchildren('Journal Voucher Detail', doc.name, 'entries'); diff --git a/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py index a43f8ca7a5..a87166c3c2 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.py +++ b/accounts/doctype/journal_voucher/journal_voucher.py @@ -260,15 +260,6 @@ class DocType(AccountsController): if gl_map: make_gl_entries(gl_map, cancel=cancel, adv_adj=adv_adj) - def get_outstanding(self, args): - args = eval(args) - o_s = webnotes.conn.sql("""select outstanding_amount from `tab%s` where name = %s""" % - (args['doctype'], '%s'), args['docname']) - if args['doctype'] == 'Purchase Invoice': - return {'debit': o_s and flt(o_s[0][0]) or 0} - if args['doctype'] == 'Sales Invoice': - return {'credit': o_s and flt(o_s[0][0]) or 0} - def get_balance(self): if not getlist(self.doclist,'entries'): msgprint("Please enter atleast 1 entry in 'GL Entries' table") @@ -434,4 +425,31 @@ def get_against_jv(doctype, txt, searchfield, start, page_len, filters): where jv_detail.parent = jv.name and jv_detail.account = %s and jv.docstatus = 1 and jv.%s like %s order by jv.name desc limit %s, %s""" % ("%s", searchfield, "%s", "%s", "%s"), - (filters["account"], "%%%s%%" % txt, start, page_len)) \ No newline at end of file + (filters["account"], "%%%s%%" % txt, start, page_len)) + +@webnotes.whitelist() +def get_outstanding(args): + args = eval(args) + if args.get("doctype") == "Journal Voucher" and args.get("account"): + against_jv_amount = webnotes.conn.sql(""" + select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) + from `tabJournal Voucher Detail` where parent=%s and account=%s + and ifnull(against_invoice, '')='' and ifnull(against_voucher, '')='' + and ifnull(against_jv, '')=''""", (args['docname'], args['account'])) + + against_jv_amount = flt(against_jv_amount[0][0]) if against_jv_amount else 0 + if against_jv_amount > 0: + return {"credit": against_jv_amount} + else: + return {"debit": -1* against_jv_amount} + + elif args.get("doctype") == "Sales Invoice": + return { + "credit": flt(webnotes.conn.get_value("Sales Invoice", args["docname"], + "outstanding_amount")) + } + elif args.get("doctype") == "Purchase Invoice": + return { + "debit": flt(webnotes.conn.get_value("Purchase Invoice", args["docname"], + "outstanding_amount")) + } \ No newline at end of file diff --git a/support/doctype/support_ticket/support_ticket.js b/support/doctype/support_ticket/support_ticket.js index 0e61273439..c61d9732f8 100644 --- a/support/doctype/support_ticket/support_ticket.js +++ b/support/doctype/support_ticket/support_ticket.js @@ -6,7 +6,7 @@ cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) { wn.provide("erpnext.support"); // TODO commonify this code -erpnext.support.CustomerIssue = wn.ui.form.Controller.extend({ +erpnext.support.SupportTicket = wn.ui.form.Controller.extend({ customer: function() { var me = this; if(this.frm.doc.customer) { @@ -18,7 +18,7 @@ erpnext.support.CustomerIssue = wn.ui.form.Controller.extend({ } }); -$.extend(cur_frm.cscript, new erpnext.support.CustomerIssue({frm: cur_frm})); +$.extend(cur_frm.cscript, new erpnext.support.SupportTicket({frm: cur_frm})); $.extend(cur_frm.cscript, { onload: function(doc, dt, dn) {