MWST optional: Schalter in Einstellungen (mwst_ausweisen), standardmassig Ausweis deaktiviert
This commit is contained in:
22
app.py
22
app.py
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user