def download_datev_csv(filters): """ Provide accounting entries for download in DATEV format. Validate the filters, get the data, produce the CSV file and provide it for download. Can be called like this: GET /api/method/erpnext.regional.report.datev.datev.download_datev_csv Arguments / Params: filters -- dict of filters to be passed to the sql query """ if isinstance(filters, string_types): filters = json.loads(filters) validate(filters) company = filters.get("company") fiscal_year = get_fiscal_year(date=filters.get("from_date"), company=company) filters["fiscal_year_start"] = fiscal_year[1] # set chart of accounts used coa = frappe.get_value("Company", company, "chart_of_accounts") filters["skr"] = "04" if "SKR04" in coa else ("03" if "SKR03" in coa else "") datev_settings = frappe.get_doc("DATEV Settings", company) filters["account_number_length"] = datev_settings.account_number_length filters["temporary_against_account_number"] = datev_settings.temporary_against_account_number transactions = get_transactions(filters) account_names = get_account_names(filters) customers = get_customers(filters) suppliers = get_suppliers(filters) zip_name = "{} DATEV.zip".format(frappe.utils.datetime.date.today()) zip_and_download( zip_name, [ { "file_name": "EXTF_Buchungsstapel.csv", "csv_data": get_datev_csv(transactions, filters, csv_class=Transactions), }, { "file_name": "EXTF_Kontenbeschriftungen.csv", "csv_data": get_datev_csv(account_names, filters, csv_class=AccountNames), }, { "file_name": "EXTF_Kunden.csv", "csv_data": get_datev_csv(customers, filters, csv_class=DebtorsCreditors), }, { "file_name": "EXTF_Lieferanten.csv", "csv_data": get_datev_csv(suppliers, filters, csv_class=DebtorsCreditors), }, ], )
def test_csv(self): test_data = [{ "Umsatz (ohne Soll/Haben-Kz)": 100, "Soll/Haben-Kennzeichen": "H", "Kontonummer": "4200", "Gegenkonto (ohne BU-Schlüssel)": "10000", "Belegdatum": today(), "Buchungstext": "No remark", "Beleginfo - Art 1": "Sales Invoice", "Beleginfo - Inhalt 1": "SINV-0001" }] get_datev_csv(data=test_data, filters=self.filters, csv_class=Transactions)
def download_datev_csv(filters): """ Provide accounting entries for download in DATEV format. Validate the filters, get the data, produce the CSV file and provide it for download. Can be called like this: GET /api/method/erpnext.regional.report.datev.datev.download_datev_csv Arguments / Params: filters -- dict of filters to be passed to the sql query """ if isinstance(filters, string_types): filters = json.loads(filters) validate(filters) company = filters.get('company') fiscal_year = get_fiscal_year(date=filters.get('from_date'), company=company) filters['fiscal_year_start'] = fiscal_year[1] # set chart of accounts used coa = frappe.get_value('Company', company, 'chart_of_accounts') filters['skr'] = '04' if 'SKR04' in coa else ('03' if 'SKR03' in coa else '') filters['account_number_length'] = frappe.get_value('DATEV Settings', company, 'account_number_length') transactions = get_transactions(filters) account_names = get_account_names(filters) customers = get_customers(filters) suppliers = get_suppliers(filters) zip_name = '{} DATEV.zip'.format(frappe.utils.datetime.date.today()) zip_and_download(zip_name, [ { 'file_name': 'EXTF_Buchungsstapel.csv', 'csv_data': get_datev_csv(transactions, filters, csv_class=Transactions) }, { 'file_name': 'EXTF_Kontenbeschriftungen.csv', 'csv_data': get_datev_csv(account_names, filters, csv_class=AccountNames) }, { 'file_name': 'EXTF_Kunden.csv', 'csv_data': get_datev_csv(customers, filters, csv_class=DebtorsCreditors) }, { 'file_name': 'EXTF_Lieferanten.csv', 'csv_data': get_datev_csv(suppliers, filters, csv_class=DebtorsCreditors) }, ])
def download_datev_csv(filters): """ Provide accounting entries for download in DATEV format. Validate the filters, get the data, produce the CSV file and provide it for download. Can be called like this: GET /api/method/erpnext.regional.report.datev.datev.download_datev_csv Arguments / Params: filters -- dict of filters to be passed to the sql query """ if isinstance(filters, string_types): filters = json.loads(filters) validate(filters) # set chart of accounts used coa = frappe.get_value('Company', filters.get('company'), 'chart_of_accounts') filters['skr'] = '04' if 'SKR04' in coa else ('03' if 'SKR03' in coa else '') transactions = get_transactions(filters) account_names = get_account_names(filters) customers = get_customers(filters) suppliers = get_suppliers(filters) download_csv_files_as_zip([ { 'file_name': 'EXTF_Buchungsstapel.csv', 'csv_data': get_datev_csv(transactions, filters, csv_class=Transactions) }, { 'file_name': 'EXTF_Kontenbeschriftungen.csv', 'csv_data': get_datev_csv(account_names, filters, csv_class=AccountNames) }, { 'file_name': 'EXTF_Kunden.csv', 'csv_data': get_datev_csv(customers, filters, csv_class=DebtorsCreditors) }, { 'file_name': 'EXTF_Lieferanten.csv', 'csv_data': get_datev_csv(suppliers, filters, csv_class=DebtorsCreditors) }, ])