text: // Copyright (c) 2016, Hardik Gadesha and contributors
  // For license information, please see license.txt
  /* eslint-disable */
  
  frappe.query_reports["Daily Sales Closing - SN"] ={
  	"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.get_today(),
  			"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": "Select",
                          "options": ["", __("SN Cash - B"), __("SN KNET - B"), __("SN Cheque - B")]
                  },
  
  		{
  			"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 Voucher (Consolidated)"),
  				__("Group by Account"), __("Group by Party")],
  			"default": __("Group by Voucher (Consolidated)")
  		},
  		{
  			"fieldname":"tax_id",
  			"label": __("Tax Id"),
  			"fieldtype": "Data",
  			"hidden": 1
  		},
  		{
  			"fieldname": "presentation_currency",
  			"label": __("Currency"),
  			"fieldtype": "Select",
  			"options": erpnext.get_presentation_currency_list()
  		}
  	]
  }
  