Emit invoices as validated ZUGFeRD (DATEV) and XRechnung (B2G) #2

Merged
Stefan merged 1 commits from feature/erechnung-validation-b2g into main 2026-07-21 09:06:00 +02:00
Owner

Completes the eRechnung output: finalized invoices are emitted as a ZUGFeRD/Factur-X EN 16931 hybrid (DATEV) or, when a Leitweg-ID is present, as XRechnung 3.0 for B2G. Both are externally validated as ACCEPTED (0 errors) and PDF/A-3B COMPLIANT against the ProcessWeb eInvoice service.

Highlights:

  • ERechnungMapper: FdsInvoiceData -> EN 16931 model; seller master data from Fuchs:ERechnung:Seller config; payment terms BT-20/BT-9 (BR-CO-25); seller VAT id BT-31 (BR-CO-26); service date/period BT-72 / BG-14 from ProvisionPeriod (BR-DE-TMP-32); Leitweg-ID -> XRechnung profile.
  • ERechnungValidator: client for POST /validatepdf (EN 16931 XML + PDF/A-3). Scenario-mismatch with zero errors is not a hard failure.
  • Structured German-only editor dialogs: recipient address (incl. Leitweg-ID) and service date/period.
  • Bumps the eRechnungLib submodule to the CII rsm-namespace / PDF-A subtype fix (already merged to submodule main).

Tests: Fuchs 514/514, eRechnungLib 97/97.

?? Generated with Claude Code

Completes the eRechnung output: finalized invoices are emitted as a ZUGFeRD/Factur-X EN 16931 hybrid (DATEV) or, when a Leitweg-ID is present, as XRechnung 3.0 for B2G. Both are externally validated as ACCEPTED (0 errors) and PDF/A-3B COMPLIANT against the ProcessWeb eInvoice service. Highlights: - ERechnungMapper: FdsInvoiceData -> EN 16931 model; seller master data from Fuchs:ERechnung:Seller config; payment terms BT-20/BT-9 (BR-CO-25); seller VAT id BT-31 (BR-CO-26); service date/period BT-72 / BG-14 from ProvisionPeriod (BR-DE-TMP-32); Leitweg-ID -> XRechnung profile. - ERechnungValidator: client for POST /validatepdf (EN 16931 XML + PDF/A-3). Scenario-mismatch with zero errors is not a hard failure. - Structured German-only editor dialogs: recipient address (incl. Leitweg-ID) and service date/period. - Bumps the eRechnungLib submodule to the CII rsm-namespace / PDF-A subtype fix (already merged to submodule main). Tests: Fuchs 514/514, eRechnungLib 97/97. ?? Generated with [Claude Code](https://claude.com/claude-code)
Stefan added 1 commit 2026-07-21 08:25:11 +02:00
Emit invoices as validated ZUGFeRD (DATEV) and XRechnung (B2G)
Playwright Tests / test (pull_request) Has been cancelled
00e72c96d4
Completes the eRechnung output path: finalized invoices are emitted as a
ZUGFeRD/Factur-X EN 16931 hybrid (DATEV) or, when a Leitweg-ID is present, as
XRechnung 3.0 for B2G. Both are externally validated as ACCEPTED (0 errors) and
PDF/A-3B COMPLIANT against the ProcessWeb eInvoice service.

- ERechnungMapper: FdsInvoiceData -> EN 16931 model. Seller master data now from
  Fuchs:ERechnung:Seller config (VAT id BT-31, Steuernummer BT-32, optional
  Handelsregister BT-30, IBAN/BIC, contact). Adds payment terms BT-20/BT-9
  (BR-CO-25), buyer VAT id, §13b reverse charge, and the service date/period
  (BT-72 / BG-14) parsed from ProvisionPeriod (BR-DE-TMP-32). B2G -> XRechnung
  profile with the required electronic addresses/contact.
- ERechnungValidator: client for POST /validatepdf (EN 16931 XML + PDF/A-3 in
  one call). A pure "scenario not matched" with zero errors is not treated as a
  hard failure; real errors optionally withhold the hybrid (FailOnError).
- ERechnungSettings: seller + validation config; wired in Program.cs; ServiceUrl
  in appsettings.
- Online editor: structured German-only dialogs for the recipient address
  (incl. Leitweg-ID) and the service date/period (single date or range).
- Bumps the eRechnungLib submodule to the CII rsm-namespace / PDF-A subtype fix.

Fuchs.Tests 514/514, eRechnungLib 97/97.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Stefan merged commit 235c9587f0 into main 2026-07-21 09:06:00 +02:00
Stefan deleted branch feature/erechnung-validation-b2g 2026-07-21 09:06:08 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Stefan/Fuchs_Intranet#2