Vor- und Nachname getrennt + Kenndaten in die PDF-Metadaten
Bisher gab es nur ein Feld "Name / Firma". Stand in der Anrede etwas, war die Anrede die erste Zeile des Adressblocks - das Steuerjournal hat sie als Namen gelesen. - Kundenblock hat jetzt "Vorname (optional)" und "Nachname / Firma". Auf der Rechnung stehen beide wie gewohnt in einer Zeile. - Die Kenndaten der Rechnung (Nummer, Datum, Nachname, Naechte, Zwischensumme, Steuersatz und -betrag) stehen zusaetzlich als JSON in den PDF-Metadaten. Das Steuerjournal liest sie von dort und muss nichts mehr aus dem Fliesstext raten. Der Ausdruck aendert sich nicht. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
dc170a9d9c
commit
0c83f9d821
2 changed files with 42 additions and 5 deletions
|
|
@ -10,6 +10,7 @@ im Layout der Excel-Vorlage:
|
|||
"""
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
from reportlab.lib.pagesizes import A4
|
||||
from reportlab.lib.units import mm
|
||||
|
|
@ -324,6 +325,31 @@ def _seite_inhalt(story, st, cfg, rechnung, kopf, gesamtrechnung_betont):
|
|||
story.append(KeepTogether(block))
|
||||
|
||||
|
||||
def _kenndaten(rechnung, kopf):
|
||||
"""
|
||||
Kenndaten der Rechnung als JSON in die PDF-Metadaten (Feld "Subject").
|
||||
|
||||
Das Steuerjournal (Programm "Beherbergungssteuer") liest sie von dort aus,
|
||||
statt Nachname und Betraege aus dem Fliesstext zu raten. Fuer den Ausdruck
|
||||
aendert sich nichts - Metadaten stehen nicht auf dem Blatt.
|
||||
"""
|
||||
aufschlag = rechnung.aufschlaege[0] if rechnung.aufschlaege else None
|
||||
daten = {
|
||||
"quelle": "rechnungstool",
|
||||
"version": 1,
|
||||
"rechnungsnummer": kopf.get("rechnungsnummer", ""),
|
||||
"datum": kopf.get("datum", ""),
|
||||
"nachname": kopf.get("nachname", ""),
|
||||
"vorname": kopf.get("vorname", ""),
|
||||
"naechte": kopf.get("naechte", ""),
|
||||
"zwischensumme": runde(rechnung.brutto),
|
||||
"steuer_satz": float(aufschlag.satz) if aufschlag else 0.0,
|
||||
"steuer_betrag": runde(aufschlag.betrag) if aufschlag else 0.0,
|
||||
"gesamt": runde(rechnung.gesamt),
|
||||
}
|
||||
return json.dumps(daten, ensure_ascii=False)
|
||||
|
||||
|
||||
def render_rechnung(pfad, cfg, rechnung, kopf):
|
||||
"""
|
||||
pfad : Zielpfad der PDF
|
||||
|
|
@ -342,6 +368,7 @@ def render_rechnung(pfad, cfg, rechnung, kopf):
|
|||
topMargin=MARGIN_TOP, bottomMargin=MARGIN_BOT,
|
||||
title=f"Rechnung {kopf.get('rechnungsnummer','')}",
|
||||
author=cfg["firma"].get("name", ""),
|
||||
subject=_kenndaten(rechnung, kopf), # maschinenlesbar fuers Steuerjournal
|
||||
)
|
||||
story = []
|
||||
_seite_inhalt(story, st, cfg, rechnung, kopf, gesamtrechnung_betont=False) # Seite 1: Kunde
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue