fix(General Ledger): Implement multi-account selection
This commit is contained in:
parent
d689068d82
commit
0511ffcf30
@ -36,16 +36,13 @@ frappe.query_reports["General Ledger"] = {
|
|||||||
{
|
{
|
||||||
"fieldname":"account",
|
"fieldname":"account",
|
||||||
"label": __("Account"),
|
"label": __("Account"),
|
||||||
"fieldtype": "Link",
|
"fieldtype": "MultiSelectList",
|
||||||
"options": "Account",
|
"options": "Account",
|
||||||
"get_query": function() {
|
get_data: function(txt) {
|
||||||
var company = frappe.query_report.get_filter_value('company');
|
console.log("txt = ", txt)
|
||||||
return {
|
return frappe.db.get_link_options('Account', txt, {
|
||||||
"doctype": "Account",
|
company: frappe.query_report.get_filter_value("company")
|
||||||
"filters": {
|
});
|
||||||
"company": company,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -49,8 +49,12 @@ def validate_filters(filters, account_details):
|
|||||||
if not filters.get("from_date") and not filters.get("to_date"):
|
if not filters.get("from_date") and not filters.get("to_date"):
|
||||||
frappe.throw(_("{0} and {1} are mandatory").format(frappe.bold(_("From Date")), frappe.bold(_("To Date"))))
|
frappe.throw(_("{0} and {1} are mandatory").format(frappe.bold(_("From Date")), frappe.bold(_("To Date"))))
|
||||||
|
|
||||||
if filters.get("account") and not account_details.get(filters.account):
|
for account in filters.account:
|
||||||
frappe.throw(_("Account {0} does not exists").format(filters.account))
|
if not account_details.get(account):
|
||||||
|
frappe.throw(_("Account {0} does not exists").format(account))
|
||||||
|
|
||||||
|
if filters.get('account'):
|
||||||
|
filters.account = frappe.parse_json(filters.get('account'))
|
||||||
|
|
||||||
if (filters.get("account") and filters.get("group_by") == _('Group by Account')
|
if (filters.get("account") and filters.get("group_by") == _('Group by Account')
|
||||||
and account_details[filters.account].is_group == 0):
|
and account_details[filters.account].is_group == 0):
|
||||||
@ -87,7 +91,7 @@ def set_account_currency(filters):
|
|||||||
account_currency = None
|
account_currency = None
|
||||||
|
|
||||||
if filters.get("account"):
|
if filters.get("account"):
|
||||||
account_currency = get_account_currency(filters.account)
|
account_currency = get_account_currency(filters.account[0])
|
||||||
elif filters.get("party"):
|
elif filters.get("party"):
|
||||||
gle_currency = frappe.db.get_value(
|
gle_currency = frappe.db.get_value(
|
||||||
"GL Entry", {
|
"GL Entry", {
|
||||||
@ -205,10 +209,18 @@ def get_gl_entries(filters, accounting_dimensions):
|
|||||||
|
|
||||||
def get_conditions(filters):
|
def get_conditions(filters):
|
||||||
conditions = []
|
conditions = []
|
||||||
|
|
||||||
if filters.get("account") and not filters.get("include_dimensions"):
|
if filters.get("account") and not filters.get("include_dimensions"):
|
||||||
lft, rgt = frappe.db.get_value("Account", filters["account"], ["lft", "rgt"])
|
account_conditions = ""
|
||||||
conditions.append("""account in (select name from tabAccount
|
for account in filters["account"]:
|
||||||
where lft>=%s and rgt<=%s and docstatus<2)""" % (lft, rgt))
|
lft, rgt = frappe.db.get_value("Account", account, ["lft", "rgt"])
|
||||||
|
account_conditions += """account in (select name from tabAccount
|
||||||
|
where lft>=%s and rgt<=%s and docstatus<2)""" % (lft, rgt)
|
||||||
|
|
||||||
|
# so that the OR doesn't get added to the last account condition
|
||||||
|
if account != filters["account"][-1]:
|
||||||
|
account_conditions += " OR "
|
||||||
|
conditions.append(account_conditions)
|
||||||
|
|
||||||
if filters.get("cost_center"):
|
if filters.get("cost_center"):
|
||||||
filters.cost_center = get_cost_centers_with_children(filters.cost_center)
|
filters.cost_center = get_cost_centers_with_children(filters.cost_center)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user