Skip to content

Commit 90348d2

Browse files
committed
fix: #31 pillow upgraded to 11.2.1; reformatted with black; my fpdf2 fork synchronized to main branch, final version not yet ready
1 parent e56726d commit 90348d2

40 files changed

+1456
-1357
lines changed

Excel2ZugFeRD.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ a = Analysis(
55
['excel2zugferd.py'],
66
pathex=[],
77
binaries=[],
8-
datas=[('_internal/Fonts', 'Fonts'), ('./.venv/Lib/site-packages/drafthorse/schema', 'drafthorse/schema'), ('version.json', '.'), ('_internal/sRGB2014.icc', '.')],
8+
datas=[('_internal/Fonts', 'Fonts'), ('./.venv/Lib/site-packages/drafthorse/schema', 'drafthorse/schema'), ('_internal/version.json', '.'), ('_internal/sRGB2014.icc', '.')],
99
hiddenimports=[],
1010
hookspath=[],
1111
hooksconfig={},

_internal/version.json

-6 Bytes
Binary file not shown.

excel2zugferd.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@
1919

2020
oberfl = None
2121
if middleware.ini_file.exists_ini_file() is None:
22-
middleware.ini_file.create_ini_file(middleware.ini_file
23-
.set_default_content())
24-
oberfl = src.oberflaeche_ini.OberflaecheIniFile(STAMMDATEN,
25-
middleware)
22+
middleware.ini_file.create_ini_file(middleware.ini_file.set_default_content())
23+
oberfl = src.oberflaeche_ini.OberflaecheIniFile(STAMMDATEN, middleware)
2624
else:
27-
oberfl = src.oberflaeche_excel2zugferd\
28-
.OberflaecheExcel2Zugferd(STAMMDATEN,
29-
middleware)
25+
oberfl = src.oberflaeche_excel2zugferd.OberflaecheExcel2Zugferd(
26+
STAMMDATEN, middleware
27+
)
3028
oberfl.loop()

requirements.txt

0 Bytes
Binary file not shown.

setup.cfg

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ exclude =
2020
junit,
2121
src/__pycache__
2222
test/.pycache
23-
max-complexity = 5
23+
max-complexity = 5
24+
max-line-length = 128

src/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def _setNoneIfEmpty(str_in: str) -> str | None:
1717
if str_in is None:
1818
return None
1919
trimmed = str_in.strip()
20-
trimmed = ' '.join(trimmed.split())
20+
trimmed = " ".join(trimmed.split())
2121
return trimmed if trimmed != "" else None
2222

2323

src/adresse.py

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
class Adresse(object):
99
"""Class Adresse"""
10+
1011
def __init__(self) -> None:
1112
self._betriebsbezeichnung = None
1213
self._name = None
@@ -204,29 +205,34 @@ def steuersatz(self):
204205
def steuersatz(self, value):
205206
self._steuersatz = value
206207

207-
# --------------- used for Kunde and Lieferant ---------------------------
208+
# --------------- used for Kunde and Lieferant ---------------------------
208209
@property
209210
def anschrift(self) -> str:
210-
return '\n'.join(
211-
filter(None,
212-
[
213-
self.betriebsbezeichnung,
214-
self.adresszusatz,
215-
self.name,
216-
' '.join(['Postfach:', self.postfach])
217-
if self.postfach else None,
218-
self.strasse if self.strasse and not self.hausnummer
219-
else ' '.join([self.strasse, self.hausnummer])
220-
if not self.postfach else None,
221-
' '.join([self.plz, self.ort]),
222-
]
223-
)
211+
return "\n".join(
212+
filter(
213+
None,
214+
[
215+
self.betriebsbezeichnung,
216+
self.adresszusatz,
217+
self.name,
218+
" ".join(["Postfach:", self.postfach]) if self.postfach else None,
219+
(
220+
self.strasse
221+
if self.strasse and not self.hausnummer
222+
else (
223+
" ".join([self.strasse, self.hausnummer])
224+
if not self.postfach
225+
else None
226+
)
227+
),
228+
" ".join([self.plz, self.ort]),
229+
],
224230
)
231+
)
225232

226233
def _check_plz_ort(self) -> None:
227234
"""raise ValueError on failure"""
228-
if (self.plz is not None
229-
and self.ort is not None):
235+
if self.plz is not None and self.ort is not None:
230236
return
231237
raise ValueError(ANSCHRIFT_ERROR)
232238

@@ -240,8 +246,7 @@ def _check_kontakt(self) -> None:
240246

241247
def _check_umsatzsteuer(self) -> None:
242248
"""raise ValueError on failure"""
243-
if (self.steuernr is not None
244-
and self.finanzamt is not None):
249+
if self.steuernr is not None and self.finanzamt is not None:
245250
return
246251
if self.steuerid is not None:
247252
return
@@ -250,11 +255,9 @@ def _check_umsatzsteuer(self) -> None:
250255
def _check_anschrift(self) -> None:
251256
"""raise ValueError on failure"""
252257
self._check_plz_ort()
253-
if (self.betriebsbezeichnung is not None
254-
and self.postfach is not None):
258+
if self.betriebsbezeichnung is not None and self.postfach is not None:
255259
return
256-
elif (self.betriebsbezeichnung is not None
257-
and self.strasse is not None):
260+
elif self.betriebsbezeichnung is not None and self.strasse is not None:
258261
return
259262
else:
260263
raise ValueError(ANSCHRIFT_ERROR)

src/constants.py

Lines changed: 88 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,98 @@
1-
P19USTG = u"Gemäß § 19 UStG wird keine Umsatzsteuer berechnet."
1+
P19USTG = "Gemäß § 19 UStG wird keine Umsatzsteuer berechnet."
22
GERMAN_DATE = "%d.%m.%Y"
3-
KONTAKT_ERROR = (u"Telefon: 012345-1234\noder\nE-Mail: [email protected]\n\n"
4-
u"müssen ausgefüllt sein.")
5-
ANSCHRIFT_ERROR = (u"mindestens\n\nFirma\n"
6-
"Strasse und Hausnummer oder Postfach sowie\n"
7-
"PLZ und Ort\n\nmüssen befüllt sein.")
8-
USTID_ERROR = ("entweder\n\n"
9-
"Steuernummer: 12345/12345\nund Finanzamt: Ortsname\n\noder\n\n"
10-
u"Umsatzsteuer-ID: DE999999999\n\nmüssen befüllt sein")
11-
KONTO_ERROR = (u"Kontoinhaber: Name des Kontos\nIBAN: DE12345678901\n"
12-
u"BIC: XYZABCDEF\n\n müssen befüllt sein.")
13-
BETRIEB_ERROR = u"'Betriebsbezeichnung' muss ausgefüllt sein."
3+
KONTAKT_ERROR = (
4+
"Telefon: 012345-1234\noder\nE-Mail: [email protected]\n\n" "müssen ausgefüllt sein."
5+
)
6+
ANSCHRIFT_ERROR = (
7+
"mindestens\n\nFirma\n"
8+
"Strasse und Hausnummer oder Postfach sowie\n"
9+
"PLZ und Ort\n\nmüssen befüllt sein."
10+
)
11+
USTID_ERROR = (
12+
"entweder\n\n"
13+
"Steuernummer: 12345/12345\nund Finanzamt: Ortsname\n\noder\n\n"
14+
"Umsatzsteuer-ID: DE999999999\n\nmüssen befüllt sein"
15+
)
16+
KONTO_ERROR = (
17+
"Kontoinhaber: Name des Kontos\nIBAN: DE12345678901\n"
18+
"BIC: XYZABCDEF\n\n müssen befüllt sein."
19+
)
20+
BETRIEB_ERROR = "'Betriebsbezeichnung' muss ausgefüllt sein."
1421
NAME_ERROR = "'Name' muss ausgefüllt sein."
15-
STEUERSATZ_ERR_MSG = (u"'Steuersatz (in %)' darf nur aus Ziffern und"
16-
" '.' bestehen z.B. 7.5 oder 19")
17-
ANSCHRIFT_POS_ERROR = (u"Bei den Positionen für Anschrift muss sowohl"
18-
" Anschrift Spalte, als auch Anschrift Zeile "
19-
"ausgefüllt sein.\n"
20-
" Ansonsten müssen beide leer sein, dann wird "
21-
"nach 'An:' gesucht.")
22-
RECHNUNG_POS_ERROR = (u"Bei den Positionen für Rechnungsnummer muss sowohl"
23-
" Rechnungsnummer Spalte, als auch Rechnungsnummer Zeile"
24-
" ausgefüllt sein.\n"
25-
"Ansonsten müssen beide leer sein, dann wird nach "
26-
"'Rechnungs-Nr:' gesucht.")
27-
RECHNUNGSDATUM_POS_ERROR = (u"Bei den Positionen für Rechnungsdatum muss "
28-
"sowohl Rechnungsdatum Spalte, als auch "
29-
u"Rechnungsdatum Zeile ausgefüllt sein.\n"
30-
u"Ansonsten müssen beide leer sein, dann wird nach"
31-
" 'Rechnungsdatum:' gesucht.")
32-
DATUM_NOT_FOUND_ERR = (u"Das Rechnungsdatum muss im Excel Tabellenblatt"
33-
" angegeben sein, wenn die Position dafür angegeben "
34-
"wurde.")
35-
NETTOSUMME_POS_ERROR = (u"Bei den Positionen für Nettosumme muss sowohl"
36-
" Nettosumme Spalte, als auch Nettosumme Zeile "
37-
u"ausgefüllt sein.\n"
38-
u"Ansonsten müssen beide leer sein, dann wird nach "
39-
"'Summe' gesucht.")
40-
MWSTSUMME_POS_ERROR = (u"Bei den Positionen für MwStsumme muss sowohl"
41-
" MwStsumme Spalte, als auch MwStsumme Zeile "
42-
u"ausgefüllt sein.\n"
43-
u"Ansonsten müssen beide leer sein, dann wird nach "
44-
"'Umsatzsteuer 19%' gesucht.")
45-
BRUTTOSUMME_POS_ERROR = (u"Bei den Positionen für Bruttosumme muss sowohl"
46-
" Bruttosumme Spalte, als auch Bruttosumme Zeile "
47-
u"ausgefüllt sein.\n"
48-
u"Ansonsten müssen beide leer sein, dann wird nach "
49-
"'Bruttobetrag' gesucht.")
50-
EINZELPOSITIONEN_POS_ERR = (u"Bei den Einzelpositionen müssen entweder alle"
51-
" oder kein Wert ausgefüllt sein.")
22+
STEUERSATZ_ERR_MSG = (
23+
"'Steuersatz (in %)' darf nur aus Ziffern und" " '.' bestehen z.B. 7.5 oder 19"
24+
)
25+
ANSCHRIFT_POS_ERROR = (
26+
"Bei den Positionen für Anschrift muss sowohl"
27+
" Anschrift Spalte, als auch Anschrift Zeile "
28+
"ausgefüllt sein.\n"
29+
" Ansonsten müssen beide leer sein, dann wird "
30+
"nach 'An:' gesucht."
31+
)
32+
RECHNUNG_POS_ERROR = (
33+
"Bei den Positionen für Rechnungsnummer muss sowohl"
34+
" Rechnungsnummer Spalte, als auch Rechnungsnummer Zeile"
35+
" ausgefüllt sein.\n"
36+
"Ansonsten müssen beide leer sein, dann wird nach "
37+
"'Rechnungs-Nr:' gesucht."
38+
)
39+
RECHNUNGSDATUM_POS_ERROR = (
40+
"Bei den Positionen für Rechnungsdatum muss "
41+
"sowohl Rechnungsdatum Spalte, als auch "
42+
"Rechnungsdatum Zeile ausgefüllt sein.\n"
43+
"Ansonsten müssen beide leer sein, dann wird nach"
44+
" 'Rechnungsdatum:' gesucht."
45+
)
46+
DATUM_NOT_FOUND_ERR = (
47+
"Das Rechnungsdatum muss im Excel Tabellenblatt"
48+
" angegeben sein, wenn die Position dafür angegeben "
49+
"wurde."
50+
)
51+
NETTOSUMME_POS_ERROR = (
52+
"Bei den Positionen für Nettosumme muss sowohl"
53+
" Nettosumme Spalte, als auch Nettosumme Zeile "
54+
"ausgefüllt sein.\n"
55+
"Ansonsten müssen beide leer sein, dann wird nach "
56+
"'Summe' gesucht."
57+
)
58+
MWSTSUMME_POS_ERROR = (
59+
"Bei den Positionen für MwStsumme muss sowohl"
60+
" MwStsumme Spalte, als auch MwStsumme Zeile "
61+
"ausgefüllt sein.\n"
62+
"Ansonsten müssen beide leer sein, dann wird nach "
63+
"'Umsatzsteuer 19%' gesucht."
64+
)
65+
BRUTTOSUMME_POS_ERROR = (
66+
"Bei den Positionen für Bruttosumme muss sowohl"
67+
" Bruttosumme Spalte, als auch Bruttosumme Zeile "
68+
"ausgefüllt sein.\n"
69+
"Ansonsten müssen beide leer sein, dann wird nach "
70+
"'Bruttobetrag' gesucht."
71+
)
72+
EINZELPOSITIONEN_POS_ERR = (
73+
"Bei den Einzelpositionen müssen entweder alle" " oder kein Wert ausgefüllt sein."
74+
)
5275
ANSCHRIFT_DEFAULT_SPALTE = "A"
5376
RGNR_DEFAULT_SPALTE = "A"
5477
RGDATUM_REFAULT_SPALTE = "A"
5578

5679
EINHEITEN = {
57-
'h': 'HUR',
58-
'min': 'MIN',
59-
'Tag(e)': 'DAY',
60-
'Monat(e)': 'MON',
61-
'Jahr(e)': 'ANN',
62-
'l': 'LTR',
63-
'Liter': 'LTR',
64-
'kg': 'KGM',
65-
't': 'TNE',
66-
'm': 'MTR',
67-
'm²': 'MTK',
68-
'm³': 'MTQ',
69-
'1': 'C62',
70-
'Stk.': 'C62',
71-
'kWh': 'KWH'
72-
}
80+
"h": "HUR",
81+
"min": "MIN",
82+
"Tag(e)": "DAY",
83+
"Monat(e)": "MON",
84+
"Jahr(e)": "ANN",
85+
"l": "LTR",
86+
"Liter": "LTR",
87+
"kg": "KGM",
88+
"t": "TNE",
89+
"m": "MTR",
90+
"m²": "MTK",
91+
"m³": "MTQ",
92+
"1": "C62",
93+
"Stk.": "C62",
94+
"kWh": "KWH",
95+
}
7396
LABELWIDTH = 22
7497
TEXTWIDTH = 60
7598
PADX = 5

0 commit comments

Comments
 (0)