From b4c2816343296afe4d3af02a4f646517e3f95585 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Sat, 3 Oct 2020 17:25:26 +0200 Subject: [PATCH] fix: check fiscal year --- erpnext/regional/report/datev/datev.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/erpnext/regional/report/datev/datev.py b/erpnext/regional/report/datev/datev.py index a2d74b889ad..815b5ed4d29 100644 --- a/erpnext/regional/report/datev/datev.py +++ b/erpnext/regional/report/datev/datev.py @@ -16,6 +16,7 @@ from csv import QUOTE_NONNUMERIC import frappe from frappe import _ +from erpnext.accounts.utils import get_fiscal_year import pandas as pd @@ -30,20 +31,33 @@ def execute(filters=None): def validate(filters): """Make sure all mandatory filters and settings are present.""" - if not filters.get('company'): + company = filters.get('company') + if not company: frappe.throw(_('Company is a mandatory filter.')) - if not filters.get('from_date'): + from_date = filters.get('from_date') + if not from_date: frappe.throw(_('From Date is a mandatory filter.')) - if not filters.get('to_date'): + to_date = filters.get('to_date') + if not to_date: frappe.throw(_('To Date is a mandatory filter.')) + validate_fiscal_year(from_date, to_date, company) + try: frappe.get_doc('DATEV Settings', filters.get('company')) except frappe.DoesNotExistError: frappe.throw(_('Please create DATEV Settings for Company {}.').format(filters.get('company'))) + +def validate_fiscal_year(from_date, to_date, company): + from_fiscal_year = get_fiscal_year(date=from_date, company=company) + to_fiscal_year = get_fiscal_year(date=to_date, company=company) + if from_fiscal_year != to_fiscal_year: + frappe.throw(_('Dates {} and {} are not in the same fiscal year.').format(from_date, to_date)) + + def get_columns(): """Return the list of columns that will be shown in query report.""" columns = [ @@ -231,7 +245,7 @@ def get_datev_csv(data, filters): # L = Tax client number (Mandantennummer) frappe.get_value("DATEV Settings", filters.get("company"), "client_number") or "", # M = Start of the fiscal year (Wirtschaftsjahresbeginn) - frappe.utils.formatdate(frappe.defaults.get_user_default("year_start_date"), "yyyyMMdd"), + frappe.utils.formatdate(filters.get("fiscal_year_start"), "yyyyMMdd"), # N = Length of account numbers (Sachkontenlänge) "4", # O = Transaction batch start date (YYYYMMDD) @@ -507,6 +521,9 @@ def download_datev_csv(filters=None): filters = json.loads(filters) validate(filters) + fiscal_year = get_fiscal_year(date=filters.get('from_date'), company=filters.get('company')) + filters['fiscal_year_start'] = fiscal_year[1] + data = get_gl_entries(filters, as_dict=1) frappe.response['result'] = get_datev_csv(data, filters)