Leitweg-ID hat in den relevaten Datenfeldern immer Vorfahrt
Bernd Wurst

Bernd Wurst commited on 2026-07-23 20:48:04
Zeige 1 geänderte Dateien mit 10 Einfügungen und 9 Löschungen.

... ...
@@ -109,19 +109,20 @@ def InvoiceToXML(invoice):
109 109
         tax_reg.id = ('VA', invoice.buyer_vat_id)
110 110
         doc.trade.agreement.buyer.tax_registrations.add(tax_reg)
111 111
     if invoice.leitweg_id:
112
+        # Wenn Leitweg-ID vorhanden ist, muss die in diese beiden Felder
112 113
         doc.trade.agreement.buyer.electronic_address.uri_ID = ('0204', invoice.leitweg_id)
113
-    # Bei ZUGFeRD 2.1 darf das Feld nur einmal vorkommen. In XRechnung 3.0 darf es mehrmals drin sein.
114
-    # drafthorse kann aktuell noch kein XRechnung 3.0 erzeugen, daher hier als "elif".
115
-    elif invoice.buyer['email']:
114
+        doc.trade.agreement.buyer_reference = invoice.leitweg_id
115
+        if invoice.buyer_reference:
116
+            # Kunden-Referenznummer UND Leitweg-ID. Referenznummer nach BT-11 auslagern
117
+            doc.trade.agreement.procuring_project_type.id = invoice.buyer_reference
118
+            doc.trade.agreement.procuring_project_type.name = invoice.customer['name']
119
+    else:
120
+        # Bei ZUGFeRD 2.1 darf das Feld electronic_address nur einmal vorkommen. In XRechnung 3.0 darf es mehrmals drin sein.
121
+        # drafthorse kann aktuell noch kein XRechnung 3.0 erzeugen, daher hier im "else".
122
+        if invoice.buyer['email']:
116 123
             doc.trade.agreement.buyer.electronic_address.uri_ID = ('EM', invoice.buyer['email'])
117
-
118 124
         if invoice.buyer_reference:
119 125
             doc.trade.agreement.buyer_reference = invoice.buyer_reference
120
-    elif invoice.leitweg_id:
121
-        # "Leitweg-ID" in XRechnung
122
-        # Wenn wir hier sind, ist die aber bereits in der electronic_address eingetragen,
123
-        # daher hier nur noch wiederholen, wenn wir das Feld nicht für was anderes brauchen (Kunden-Referenz).
124
-        doc.trade.agreement.buyer_reference = invoice.leitweg_id
125 126
     if invoice.order_number:
126 127
         doc.trade.agreement.buyer_order.issuer_assigned_id = invoice.order_number
127 128
     if invoice.contract_number:
128 129