Dries Peeters
b0809e2f90
feat(invoicing): add ZugFerd/Factur-X support and document Peppol & ZugFerd
...
- Add optional embedding of EN 16931 UBL XML in invoice PDFs (ZugFerd/Factur-X)
when 'Embed EN 16931 XML in invoice PDFs' is enabled in Admin > Peppol e-Invoicing.
Exported PDFs then contain ZUGFeRD-invoice.xml for hybrid human- and machine-readable
invoices; same UBL as Peppol, usable via Peppol or email.
- New setting invoices_zugferd_pdf (migration 128), pikepdf dependency, and
app.utils.zugferd helper (best-effort supplier/customer from Settings and client).
- Wire embed in export_invoice_pdf (and fallback path); admin checkbox and persistence.
- Docs: PEPPOL_EINVOICING.md retitled to 'Peppol and ZugFerd', new section for
ZugFerd embedding; README and CHANGELOG updated; migration 128 noted.
- Tests: test_zugferd.py (embed adds attachment with expected XML; invalid PDF
returns original bytes and error).
2026-02-16 07:36:49 +01:00
..
2025-11-28 20:05:37 +01:00
2026-01-21 15:13:46 +01:00
2026-01-20 19:59:28 +01:00
2025-11-28 20:05:37 +01:00
2026-02-01 16:50:42 +01:00
2026-01-26 14:47:31 +01:00
2025-11-29 07:13:23 +01:00
2026-01-25 10:09:29 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-29 08:01:01 +01:00
2026-01-25 09:13:14 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-30 16:50:20 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-21 13:59:13 +01:00
2026-01-25 08:59:54 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-02-09 20:22:08 +01:00
2026-01-25 09:44:46 +01:00
2025-11-28 20:05:37 +01:00
2026-01-25 09:41:39 +01:00
2025-11-28 20:05:37 +01:00
2026-01-30 17:26:14 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-25 09:38:11 +01:00
2026-01-25 09:38:11 +01:00
2025-11-29 08:25:07 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-25 10:09:29 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-02-07 22:24:45 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-30 17:25:56 +01:00
2025-12-12 22:35:38 +01:00
2026-02-02 17:24:45 +01:00
2026-02-02 17:24:45 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-25 08:59:54 +01:00
2026-01-21 15:13:26 +01:00
2026-01-25 09:38:11 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-02-02 19:18:28 +01:00
2025-12-20 08:35:10 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-29 07:13:23 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-25 08:59:54 +01:00
2025-11-28 20:05:37 +01:00
2025-11-29 07:39:29 +01:00
2025-11-28 20:05:37 +01:00
2026-01-25 08:59:54 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-25 09:38:11 +01:00
2026-02-02 17:59:59 +01:00
2026-02-09 20:22:08 +01:00
2025-11-28 20:05:37 +01:00
2025-11-28 20:05:37 +01:00
2026-01-25 08:36:02 +01:00
2026-02-16 07:36:49 +01:00