refactor: query meta data only once
This commit is contained in:
parent
7a7add5001
commit
55c048f56c
@ -8,17 +8,18 @@ Provide a report and downloadable CSV according to the German DATEV format.
|
||||
all required columns. Used to import the data into the DATEV Software.
|
||||
"""
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
import json
|
||||
import zlib
|
||||
import zipfile
|
||||
import six
|
||||
import frappe
|
||||
import pandas as pd
|
||||
|
||||
from frappe import _
|
||||
from csv import QUOTE_NONNUMERIC
|
||||
from six import BytesIO
|
||||
from six import string_types
|
||||
import frappe
|
||||
from frappe import _
|
||||
import pandas as pd
|
||||
from .datev_constants import DataCategory
|
||||
from .datev_constants import Transactions
|
||||
from .datev_constants import DebtorsCreditors
|
||||
@ -287,9 +288,7 @@ def get_datev_csv(data, filters, csv_class):
|
||||
|
||||
|
||||
def get_header(filters, csv_class):
|
||||
coa = frappe.get_value("Company", filters.get("company"), "chart_of_accounts")
|
||||
description = filters.get("voucher_type", csv_class.FORMAT_NAME)
|
||||
coa_used = "04" if "SKR04" in coa else ("03" if "SKR03" in coa else "")
|
||||
description = filters.get('voucher_type', csv_class.FORMAT_NAME)
|
||||
|
||||
header = [
|
||||
# DATEV format
|
||||
@ -316,13 +315,13 @@ def get_header(filters, csv_class):
|
||||
# J = Imported by -- stays empty
|
||||
'',
|
||||
# K = Tax consultant number (Beraternummer)
|
||||
frappe.get_value("DATEV Settings", filters.get("company"), "consultant_number"),
|
||||
filters.get('consultant_number', '0000000'),
|
||||
# L = Tax client number (Mandantennummer)
|
||||
frappe.get_value("DATEV Settings", filters.get("company"), "client_number"),
|
||||
filters.get('client_number', '00000'),
|
||||
# M = Start of the fiscal year (Wirtschaftsjahresbeginn)
|
||||
frappe.utils.formatdate(frappe.defaults.get_user_default("year_start_date"), "yyyyMMdd"),
|
||||
# N = Length of account numbers (Sachkontenlänge)
|
||||
'4',
|
||||
'%d' % filters.get('acc_len', 4),
|
||||
# O = Transaction batch start date (YYYYMMDD)
|
||||
frappe.utils.formatdate(filters.get('from_date'), "yyyyMMdd"),
|
||||
# P = Transaction batch end date (YYYYMMDD)
|
||||
@ -348,7 +347,7 @@ def get_header(filters, csv_class):
|
||||
# TODO: Filter by Accounting Period. In export for closed Accounting Period, this will be "1"
|
||||
'0',
|
||||
# V = Default currency, for example, "EUR"
|
||||
'"%s"' % frappe.get_value("Company", filters.get("company"), "default_currency"),
|
||||
'"%s"' % filters.get('default_currency', 'EUR'),
|
||||
# reserviert
|
||||
'',
|
||||
# Derivatskennzeichen
|
||||
@ -358,7 +357,7 @@ def get_header(filters, csv_class):
|
||||
# reserviert
|
||||
'',
|
||||
# SKR
|
||||
'"%s"' % coa_used,
|
||||
'"%s"' % filters.get('skr', '04'),
|
||||
# Branchen-Lösungs-ID
|
||||
'',
|
||||
# reserviert
|
||||
@ -389,6 +388,18 @@ def download_datev_csv(filters=None):
|
||||
|
||||
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 '')
|
||||
|
||||
# set account number length
|
||||
account_numbers = frappe.get_list('Account', fields=['account_number'], filters={'is_group': 0, 'account_number': ('!=', '')})
|
||||
filters['acc_len'] = max([len(a.account_number) for a in account_numbers])
|
||||
|
||||
filters['consultant_number'] = frappe.get_value('DATEV Settings', filters.get('company'), 'consultant_number')
|
||||
filters['client_number'] = frappe.get_value('DATEV Settings', filters.get('company'), 'client_number')
|
||||
filters['default_currency'] = frappe.get_value('Company', filters.get('company'), 'default_currency')
|
||||
|
||||
# This is where my zip will be written
|
||||
zip_buffer = BytesIO()
|
||||
# This is my zip file
|
||||
|
Loading…
x
Reference in New Issue
Block a user