From 9a380ef40a38976f28619856712aedc3c224fa33 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 16 Jul 2013 17:24:17 +0530 Subject: [PATCH] [fix] [minor] get_query of tax account --- .../purchase_taxes_and_charges_master.js | 18 +++++++--------- .../sales_taxes_and_charges_master.js | 11 +++++----- controllers/queries.py | 21 +++++++++++++++++-- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js index e414c82d448..ba1a06b87bf 100644 --- a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js +++ b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js @@ -128,16 +128,14 @@ cur_frm.cscript.row_id = function(doc, cdt, cdn) { } cur_frm.set_query("account_head", "purchase_tax_details", function(doc) { - return { - filters: [ - ["Account", "group_or_ledger", "=", "Ledger"], - ["Account", "docstatus", "!=", 2], - ["Account", "account_type", "in", "Tax, Chargeable, Expense Account"], - ["Account", "is_pl_account", "=", "Yes"], - ["Account", "debit_or_credit", "=", "Debit"], - ["Account", "company", "=", doc.company] - ] - } + return { + query: "controllers.queries.tax_account_query", + filters: { + "account_type": ["Tax", "Chargeable", "Expense Account"], + "debit_or_credit": "Debit", + "company": doc.company + } + } }); cur_frm.fields_dict['purchase_tax_details'].grid.get_field("cost_center").get_query = function(doc) { diff --git a/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js b/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js index a2c3321a869..4430960664a 100644 --- a/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js +++ b/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js @@ -139,11 +139,12 @@ cur_frm.cscript.row_id = function(doc, cdt, cdn) { cur_frm.fields_dict['other_charges'].grid.get_field("account_head").get_query = function(doc,cdt,cdn) { return{ - filters:[ - ['Account', 'group_or_ledger', '=', 'Ledger'], - ['Account', 'account_type', 'in', 'Tax, Chargeable, Income Account'], - ['Account', 'company', '=', doc.company] - ] + query: "controllers.queries.tax_account_query", + filters: { + "account_type": ["Tax", "Chargeable", "Income Account"], + "debit_or_credit": "Credit", + "company": doc.company + } } } diff --git a/controllers/queries.py b/controllers/queries.py index d5f8dcb94f2..321e15c5f0b 100644 --- a/controllers/queries.py +++ b/controllers/queries.py @@ -166,14 +166,31 @@ def account_query(doctype, txt, searchfield, start, page_len, filters): if not filters.group_or_ledger: filters.group_or_ledger = "Ledger" - return webnotes.conn.sql("""select tabAccount.name, tabAccount.parent_account, - tabAccount.debit_or_credit from tabAccount + return webnotes.conn.sql(""" + select tabAccount.name, tabAccount.parent_account, tabAccount.debit_or_credit + from tabAccount where tabAccount.docstatus!=2 + and and tabAccount.%(key)s LIKE "%(txt)s" %(fcond)s %(mcond)s limit %(start)s, %(page_len)s""" % {'key': searchfield, 'txt': "%%%s%%" % txt, 'fcond': get_filters_cond(doctype, filters, conditions), 'mcond':get_match_cond(doctype, searchfield), 'start': start, 'page_len': page_len}) + +def tax_account_query(doctype, txt, searchfield, start, page_len, filters): + return webnotes.conn.sql("""select name, parent_account, debit_or_credit + from tabAccount + where tabAccount.docstatus!=2 + and (account_type in (%s) or + (ifnull(is_pl_account, 'No') = 'Yes' and debit_or_credit = %s) ) + and group_or_ledger = 'Ledger' + and company = %s + and `%s` LIKE %s + limit %s, %s""" % + (", ".join(['%s']*len(filters.get("account_type"))), + "%s", "%s", searchfield, "%s", "%s", "%s"), + tuple(filters.get("account_type") + [filters.get("debit_or_credit"), + filters.get("company"), "%%%s%%" % txt, start, page_len])) def item_query(doctype, txt, searchfield, start, page_len, filters): conditions = []