MWST optional: Schalter in Einstellungen (mwst_ausweisen), standardmassig Ausweis deaktiviert

This commit is contained in:
Erik Thiele
2026-07-02 14:39:12 +02:00
parent 4f3c6763ca
commit f77be1c07a
4 changed files with 32 additions and 15 deletions

22
app.py
View File

@@ -31,6 +31,7 @@ DEFAULT_VALUES = {
'stundenlohn': 25,
'gewinnmarge': 20,
'stueckzahl': 1,
'mwst_ausweisen': False,
'rechnungsnummer': '',
'datum': datetime.now().strftime('%Y-%m-%d'),
'dark_mode': False,
@@ -89,7 +90,8 @@ def calculate(data):
gesamtkosten_netto = materialkosten + stromkosten + abschreibung + arbeitskosten
gewinn = gesamtkosten_netto * (float(data.get('gewinnmarge', 0)) / 100)
verkaufspreis = gesamtkosten_netto + gewinn
mwst = verkaufspreis * 0.19
mwst_ausweisen = str(data.get('mwst_ausweisen', '')).lower() in ('true', '1', 'yes')
mwst = verkaufspreis * 0.19 if mwst_ausweisen else 0
gesamt_brutto = verkaufspreis + mwst
material_preis_pro_kg = float(data.get('materialPreisProKg', 0))
@@ -103,6 +105,7 @@ def calculate(data):
'gewinn': round(gewinn, 2),
'verkaufspreis': round(verkaufspreis, 2),
'mwst': round(mwst, 2),
'mwst_ausweisen': mwst_ausweisen,
'gesamt_brutto': round(gesamt_brutto, 2),
'druckzeit_stunden': round(druckzeit_stunden, 2),
'material_kg': round(material_kg, 3),
@@ -169,7 +172,7 @@ def invoice_pdf():
calc = calculate(config)
stueckzahl = int(config.get('stueckzahl', 1))
gesamt_netto = round(calc['verkaufspreis'] * stueckzahl, 2)
gesamt_mwst = round(gesamt_netto * 0.19, 2)
gesamt_mwst = round(gesamt_netto * 0.19, 2) if calc.get('mwst_ausweisen') else 0
gesamt_brutto = round(gesamt_netto + gesamt_mwst, 2)
pdf = FPDF()
@@ -201,10 +204,14 @@ def invoice_pdf():
pdf.cell(130, 6, "Nettobetrag:")
pdf.cell(60, 6, f"{gesamt_netto:.2f} EUR", ln=True, align='R')
pdf.cell(130, 6, "MwSt. (19%):")
pdf.cell(60, 6, f"{gesamt_mwst:.2f} EUR", ln=True, align='R')
if calc.get('mwst_ausweisen'):
pdf.cell(130, 6, "MwSt. (19%):")
pdf.cell(60, 6, f"{gesamt_mwst:.2f} EUR", ln=True, align='R')
pdf.set_font("Arial", "B", 12)
pdf.cell(130, 8, "GESAMTBETRAG:")
if calc.get('mwst_ausweisen'):
pdf.cell(130, 8, "GESAMTBETRAG (brutto):")
else:
pdf.cell(130, 8, "GESAMTBETRAG:")
pdf.cell(60, 8, f"{gesamt_brutto:.2f} EUR", ln=True, align='R')
pdf.ln(10)
@@ -240,9 +247,10 @@ def export():
f"Gesamtkosten: {calc['gesamtkosten_netto']:.2f} EUR",
f"Gewinn: {calc['gewinn']:.2f} EUR",
f"Verkaufspreis (netto): {calc['verkaufspreis']:.2f} EUR",
f"MwSt. (19%): {calc['mwst']:.2f} EUR",
f"GESAMTPREIS (brutto): {calc['gesamt_brutto']:.2f} EUR",
]
if calc.get('mwst_ausweisen'):
lines.append(f"MwSt. (19%): {calc['mwst']:.2f} EUR")
lines.append(f"GESAMTPREIS: {calc['gesamt_brutto']:.2f} EUR")
text = '\n'.join(lines)
return send_file(