diff --git a/invoice_logic.py b/invoice_logic.py index 960992c..cce428d 100644 --- a/invoice_logic.py +++ b/invoice_logic.py @@ -628,7 +628,13 @@ def generate_compliant_zugferd_cii(data): line_deliv = ET.SubElement(line_item, f"{{{RAM}}}SpecifiedLineTradeDelivery") 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_category = "S" if line_vat_rate > 0.0 else "E"