frappe.query_reports["DATEV"] = {
	"filters": [
		{
			"fieldname": "company",
			"label": __("Company"),
			"fieldtype": "Link",
			"options": "Company",
			"default": frappe.defaults.get_user_default("Company") || frappe.defaults.get_global_default("Company"),
			"reqd": 1
		},
		{
			"fieldname": "from_date",
			"label": __("From Date"),
			"default": moment().subtract(1, 'month').startOf('month').format(),
			"fieldtype": "Date",
			"reqd": 1
		},
		{
			"fieldname": "to_date",
			"label": __("To Date"),
			"default": moment().subtract(1, 'month').endOf('month').format(),
			"fieldtype": "Date",
			"reqd": 1
		},
		{
			"fieldname": "voucher_type",
			"label": __("Voucher Type"),
			"fieldtype": "Select",
			"options": "\nSales Invoice\nPurchase Invoice\nPayment Entry\nExpense Claim\nPayroll Entry\nBank Reconciliation\nAsset\nStock Entry"
		}
	],
	onload: function(query_report) {
		let company = frappe.query_report.get_filter_value('company');
		frappe.db.exists('DATEV Settings', company).then((settings_exist) => {
			if (!settings_exist) {
				frappe.confirm(__('DATEV Settings for your Company are missing. Would you like to create them now?'),
					() => frappe.new_doc('DATEV Settings', {'company': company})
				);
			}
		});

		query_report.page.add_menu_item(__("Download DATEV File"), () => {
			const filters = JSON.stringify(query_report.get_values());
			window.open(`/api/method/erpnext.regional.report.datev.datev.download_datev_csv?filters=${filters}`);
		});

		query_report.page.add_menu_item(__("Change DATEV Settings"), () => {
			let company = frappe.query_report.get_filter_value('company'); // read company from filters again – it might have changed by now.
			frappe.set_route('Form', 'DATEV Settings', company);
		});
	}
};
