// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt frappe.query_reports["General Ledger"] = { "filters": [ { "fieldname":"company", "label": __("Company"), "fieldtype": "Link", "options": "Company", "default": frappe.defaults.get_user_default("Company"), "reqd": 1 }, { "fieldname":"finance_book", "label": __("Finance Book"), "fieldtype": "Link", "options": "Finance Book" }, { "fieldname":"from_date", "label": __("From Date"), "fieldtype": "Date", "default": frappe.datetime.add_months(frappe.datetime.get_today(), -1), "reqd": 1, "width": "60px" }, { "fieldname":"to_date", "label": __("To Date"), "fieldtype": "Date", "default": frappe.datetime.get_today(), "reqd": 1, "width": "60px" }, { "fieldname":"account", "label": __("Account"), "fieldtype": "Link", "options": "Account", "get_query": function() { var company = frappe.query_report.get_filter_value('company'); return { "doctype": "Account", "filters": { "company": company, } } } }, { "fieldname":"voucher_no", "label": __("Voucher No"), "fieldtype": "Data", on_change: function() { frappe.query_report.set_filter_value('group_by', ""); } }, { "fieldname":"cost_center", "label": __("Cost Center"), "fieldtype": "MultiSelect", get_data: function() { var cost_centers = frappe.query_report.get_filter_value("cost_center") || ""; const values = cost_centers.split(/\s*,\s*/).filter(d => d); const txt = cost_centers.match(/[^,\s*]*$/)[0] || ''; let data = []; frappe.call({ type: "GET", method:'frappe.desk.search.search_link', async: false, no_spinner: true, args: { doctype: "Cost Center", txt: txt, filters: { "company": frappe.query_report.get_filter_value("company"), "name": ["not in", values] } }, callback: function(r) { data = r.results; } }); return data; } }, { "fieldname":"project", "label": __("Project"), "fieldtype": "MultiSelect", get_data: function() { var projects = frappe.query_report.get_filter_value("project") || ""; const values = projects.split(/\s*,\s*/).filter(d => d); const txt = projects.match(/[^,\s*]*$/)[0] || ''; let data = []; frappe.call({ type: "GET", method:'frappe.desk.search.search_link', async: false, no_spinner: true, args: { doctype: "Project", txt: txt, filters: { "name": ["not in", values] } }, callback: function(r) { data = r.results; } }); return data; } }, { "fieldtype": "Break", }, { "fieldname":"party_type", "label": __("Party Type"), "fieldtype": "Link", "options": "Party Type", "default": "", on_change: function() { frappe.query_report.set_filter_value('party', ""); } }, { "fieldname":"party", "label": __("Party"), "fieldtype": "MultiSelect", get_data: function() { if (!frappe.query_report.filters) return; var party_type = frappe.query_report.get_filter_value('party_type'); var parties = frappe.query_report.get_filter_value('party'); if(!party_type) return; const values = parties.split(/\s*,\s*/).filter(d => d); const txt = parties.match(/[^,\s*]*$/)[0] || ''; let data = []; frappe.call({ type: "GET", method:'frappe.desk.search.search_link', async: false, no_spinner: true, args: { doctype: frappe.query_report.get_filter_value('party_type'), txt: txt, filters: { "name": ["not in", values] } }, callback: function(r) { data = r.results; } }); return data; }, on_change: function() { var party_type = frappe.query_report.get_filter_value('party_type'); var parties = frappe.query_report.get_filter_value('party'); const values = parties.split(/\s*,\s*/).filter(d => d); if(!party_type || !parties || values.length>1) { frappe.query_report.set_filter_value('party_name', ""); frappe.query_report.set_filter_value('tax_id', ""); return; } else { var party = values[0]; var fieldname = erpnext.utils.get_party_name(party_type) || "name"; frappe.db.get_value(party_type, party, fieldname, function(value) { frappe.query_report.set_filter_value('party_name', value[fieldname]); }); if (party_type === "Customer" || party_type === "Supplier") { frappe.db.get_value(party_type, party, "tax_id", function(value) { frappe.query_report.set_filter_value('tax_id', value["tax_id"]); }); } } } }, { "fieldname":"party_name", "label": __("Party Name"), "fieldtype": "Data", "hidden": 1 }, { "fieldname":"group_by", "label": __("Group by"), "fieldtype": "Select", "options": ["", "Group by Voucher", "Group by Account", "Group by Party"], "default": "Group by Voucher" }, { "fieldname":"tax_id", "label": __("Tax Id"), "fieldtype": "Data", "hidden": 1 }, { "fieldname": "presentation_currency", "label": __("Currency"), "fieldtype": "Select", "options": erpnext.get_presentation_currency_list() } ] }