Initial version of the E-Invoice solution of JR IT Services
This commit is contained in:
22
jr_einvoice/facturx.py
Normal file
22
jr_einvoice/facturx.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from __future__ import annotations
|
||||
from pathlib import Path
|
||||
from decimal import Decimal
|
||||
from pycheval import EN16931Invoice, Money, generate_xml
|
||||
from .models import Invoice
|
||||
from .calc import compute_totals
|
||||
|
||||
def generate_facturx_xml(inv: Invoice, out_xml: Path, logger) -> Path:
|
||||
out_xml.parent.mkdir(parents=True, exist_ok=True)
|
||||
totals = compute_totals(inv)
|
||||
|
||||
invoice = EN16931Invoice(
|
||||
invoice_number=inv.meta.invoice_number,
|
||||
invoice_date=inv.meta.invoice_date,
|
||||
currency=inv.meta.currency,
|
||||
grand_total=Money(str(Decimal(str(totals.gross_total)).quantize(Decimal("0.01"))), inv.meta.currency),
|
||||
)
|
||||
|
||||
xml_string = generate_xml(invoice)
|
||||
out_xml.write_text(xml_string, encoding="utf-8")
|
||||
logger.info("Wrote Factur-X XML: %s", out_xml)
|
||||
return out_xml
|
||||
Reference in New Issue
Block a user