feat: create validated ZUGFeRD invoices in one console command
This commit is contained in:
1 parent
e0c15fc7f2
commit
a643cf5227
30 files changed
+1509
-207
No files matched your search
+15
-1
@@ -1,5 +1,7 @@
|
||||
from __future__ import annotations
|
||||
from pathlib import Path
|
||||
import re
|
||||
import shutil
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
|
||||
@@ -37,6 +39,12 @@ def build_in_folder(
|
||||
out_dir = invoice_dir / out_subdir
|
||||
(out_dir / "logs").mkdir(parents=True, exist_ok=True)
|
||||
|
||||
attachment = invoice_dir / ('Rechnung_' + re.sub(r'[^A-Za-z0-9_-]', '_', inv.meta.invoice_number) + '.pdf')
|
||||
# A new build invalidates old delivery drafts and prior validation results.
|
||||
for stale in [attachment, out_dir / "invoice.eml", out_dir / "manifest.json",
|
||||
out_dir / "invoice.facturx.pdf", out_dir / "validation/validate_report.xml"]:
|
||||
stale.unlink(missing_ok=True)
|
||||
|
||||
logger.info("Loaded invoice: %s (folder=%s)", inv.meta.invoice_number, invoice_dir)
|
||||
logger.info("Artifacts directory: %s", out_dir)
|
||||
|
||||
@@ -62,6 +70,12 @@ def build_in_folder(
|
||||
if do_validate:
|
||||
logger.info("Validating Factur-X PDF via Mustang")
|
||||
report = out_dir / "validation" / "validate_report.xml"
|
||||
result.validate_report = validate(mustang_jar, result.facturx_pdf or (out_dir / "invoice.facturx.pdf"), report, logger)
|
||||
try:
|
||||
result.validate_report = validate(mustang_jar, result.facturx_pdf, report, logger)
|
||||
except Exception:
|
||||
# Failed output must not be mistaken for a ready-to-send invoice.
|
||||
result.facturx_pdf.unlink(missing_ok=True)
|
||||
raise
|
||||
shutil.copy2(result.facturx_pdf, attachment)
|
||||
|
||||
return result
|
||||
Reference in new issue
Block a user