fix(cii): format ZUGFeRD BilledQuantity like UBL (no trailing 1.0000)
Ganze Mengen erscheinen als 1.00 statt 1.0000; gebrochene Mengen (z.B. 1.375 Tage) bleiben vollstaendig erhalten. Vereinheitlicht mit dem UBL-Generator. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
8a7990f95f
commit
27f6d8bab7
|
|
@ -628,7 +628,13 @@ def generate_compliant_zugferd_cii(data):
|
||||||
|
|
||||||
line_deliv = ET.SubElement(line_item, f"{{{RAM}}}SpecifiedLineTradeDelivery")
|
line_deliv = ET.SubElement(line_item, f"{{{RAM}}}SpecifiedLineTradeDelivery")
|
||||||
u_code = map_unece_unit_code(item.get("unit", "Stk."))
|
u_code = map_unece_unit_code(item.get("unit", "Stk."))
|
||||||
ET.SubElement(line_deliv, f"{{{RAM}}}BilledQuantity", {"unitCode": u_code}).text = f"{item['quantity']:.4f}"
|
# Menge identisch zum UBL-Generator formatieren: ganze Zahlen mit 2 Nachkommastellen
|
||||||
|
# (z.B. "1.00"), gebrochene Mengen nur mit den noetigen Stellen (z.B. "1.375") - so
|
||||||
|
# erscheinen Stueckzahlen nicht als "1.0000", ohne dass Nachkommastellen verloren gehen.
|
||||||
|
q_val = float(item.get("quantity") or 0.0)
|
||||||
|
qty_formatted = f"{q_val:.4f}".rstrip('0').rstrip('.') if not q_val.is_integer() else f"{q_val:.2f}"
|
||||||
|
if qty_formatted == "" or qty_formatted == "0": qty_formatted = "0.00"
|
||||||
|
ET.SubElement(line_deliv, f"{{{RAM}}}BilledQuantity", {"unitCode": u_code}).text = qty_formatted
|
||||||
|
|
||||||
line_vat_rate = float(item.get("vat_rate_percent", data['vat_rate_percent']))
|
line_vat_rate = float(item.get("vat_rate_percent", data['vat_rate_percent']))
|
||||||
line_vat_category = "S" if line_vat_rate > 0.0 else "E"
|
line_vat_category = "S" if line_vat_rate > 0.0 else "E"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue