Gutschriften Phase 3b/2: ZUGFeRD/Factur-X (hybrides PDF/A-3)
- zugferd.service.ts: CII-XML (EN 16931, urn:cen.eu:en16931:2017, Dokumenttyp 381 Gutschrift). Steuerkategorie S bei USt, sonst E mit Befreiungsgrund. Verkaeufer=Firma (CompanyProfile), Kaeufer=Kunde. - zugferdPdf.service.ts: bettet factur-x.xml als AF /Data ein, setzt sRGB-OutputIntent + XMP (PDF/A-3B pdfaid + Factur-X-Extension-Schema) via pdf-lib. - creditNotePdf: eingebettete DejaVuSans-Fonts (Pflicht fuer PDF/A) statt Standard-Helvetica; nach PDF-Erzeugung ZUGFeRD-Embedding. - assets/fonts (DejaVuSans + Bold) + assets/icc (sRGB) ins Repo; Dockerfile kopiert backend/assets ins Runtime-Image. Lokal strukturell verifiziert: 1 Seite, /AF, /Metadata, /OutputIntents, EmbeddedFiles, Font eingebettet, XML wohlgeformt (xmllint), TypeCode 381, GrandTotal korrekt. WICHTIG: vor Prod gegen einen ZUGFeRD-/Factur-X-Validator pruefen (Staging + echte Firmendaten). Feinheiten (Trailer-ID, XMP, XML-MIME) ggf. nach erstem Validator-Lauf nachziehen. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+17
-4
@@ -144,10 +144,23 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
Kunden des Vertrags gehört. PDF zeigt bei Überweisung „Unsere
|
||||
Bankverbindung" + „an Bankkonto: <Kunden-IBAN>". Section-Zeile zeigt das
|
||||
Auszahlungskonto.
|
||||
- **Offen:** Phase 3b Teil 2 (ZUGFeRD-XML EN 16931, Typ 381, in PDF/A-3
|
||||
einbetten – **muss gegen ZUGFeRD-Validator** geprüft werden). USt-
|
||||
Einordnung (Vermittlung vs. Abschlussbonus) mit Steuerberater klären –
|
||||
Modell deckt beide über `vatRelevant` ab.
|
||||
- **Phase 3b Teil 2 (erledigt):** ZUGFeRD/Factur-X. `zugferd.service.ts`
|
||||
erzeugt CII-XML (EN 16931 `urn:cen.eu:en16931:2017`, Typ **381**;
|
||||
Kategorie S bei USt, sonst E + Befreiungsgrund). `zugferdPdf.service.ts`
|
||||
bettet als hybrides **PDF/A-3B** ein: `factur-x.xml` (AF /Data), sRGB-
|
||||
OutputIntent (pdfkit-ICC ins Repo kopiert), XMP (pdfaid part=3/conf=B +
|
||||
Factur-X-Extension-Schema). PDF nutzt **eingebettete DejaVuSans-Fonts**
|
||||
(im Repo unter `backend/assets/fonts`, Pflicht für PDF/A). Dockerfile
|
||||
kopiert `backend/assets` ins Runtime-Image. Lokal strukturell verifiziert
|
||||
(1 Seite, /AF, /Metadata, /OutputIntents, EmbeddedFiles, Font eingebettet,
|
||||
XML wohlgeformt, TypeCode 381, GrandTotal korrekt).
|
||||
- **⚠️ VOR PROD:** hybrides PDF gegen einen **ZUGFeRD-/Factur-X-Validator**
|
||||
prüfen (am besten auf Staging mit echten Firmendaten). Feinheiten
|
||||
(Trailer-ID, XMP-Details, MIME `text/xml` vs `application/xml`) ggf.
|
||||
nach dem ersten Validator-Lauf nachziehen.
|
||||
- **Offen (fachlich):** USt-Einordnung (Vermittlung vs. Abschlussbonus) mit
|
||||
Steuerberater klären – Modell/XML decken beide über `vatRelevant` ab.
|
||||
ZUGFeRD-Semantik (Seller=Firma, Buyer=Kunde, Typ 381) ggf. anpassen.
|
||||
|
||||
- [x] **📄➕ Vertrag kopieren (neuer eigenständiger Vertrag aus Vorlage)** (2026-08-03)
|
||||
- „Kopieren"-Button in der Vertragsansicht (`contracts:create`) → öffnet das
|
||||
|
||||
Reference in New Issue
Block a user