Referenznummern auf allen Ausgabeformaten
Bernd Wurst

Bernd Wurst commited on 2024-02-09 17:07:35
Zeige 4 geänderte Dateien mit 34 Einfügungen und 1 Löschungen.

... ...
@@ -159,8 +159,10 @@ class Invoice(object):
159 159
         self.due_date = None
160 160
         self.debit = False
161 161
         self.payment_type = PAYMENT_UEBERWEISUNG
162
+        self.leitweg_id = None
162 163
         self.buyer_reference = None
163 164
         self.order_number = None
165
+        self.contract_number = None
164 166
         self.debit_mandate_id = None
165 167
         self.creditor_reference_id = None
166 168
         self.buyer_bank_data = {
... ...
@@ -347,6 +347,22 @@ class PDF(object):
347 347
             self.canvas.drawString(self.rightcolumn, self.y, "Kundennummer:")
348 348
             self.canvas.drawRightString(self.rightcontent, self.y, "%s" % self.invoice.customerno)
349 349
             self.y -= (self.font_size + 0.5 * cm)
350
+        if self.invoice.leitweg_id:
351
+            self.canvas.drawString(self.rightcolumn, self.y, "Leitweg-ID:")
352
+            self.canvas.drawRightString(self.rightcontent, self.y, "%s" % self.invoice.leitweg_id)
353
+            self.y -= (self.font_size + 0.1 * cm)
354
+        if self.invoice.buyer_reference:
355
+            self.canvas.drawString(self.rightcolumn, self.y, "Kunden-Referenz:")
356
+            self.canvas.drawRightString(self.rightcontent, self.y, "%s" % self.invoice.buyer_reference)
357
+            self.y -= (self.font_size + 0.1 * cm)
358
+        if self.invoice.contract_number:
359
+            self.canvas.drawString(self.rightcolumn, self.y, "Vertragsnummer:")
360
+            self.canvas.drawRightString(self.rightcontent, self.y, "%s" % self.invoice.contract_number)
361
+            self.y -= (self.font_size + 0.1 * cm)
362
+        if self.invoice.order_number:
363
+            self.canvas.drawString(self.rightcolumn, self.y, "Ihre Bestellnummer:")
364
+            self.canvas.drawRightString(self.rightcontent, self.y, "%s" % self.invoice.order_number)
365
+            self.y -= (self.font_size + 0.1 * cm)
350 366
         self.canvas.setFont(self.font, self.font_size)
351 367
 
352 368
         if self.invoice.salutation:
... ...
@@ -39,6 +39,15 @@ def InvoiceToText(invoice: Invoice):
39 39
     ret.append(f'Rechnungsnummer: {invoice.id}')
40 40
     ret.append(f'Rechnungsdatum:  {invoice.date.strftime("%d.%m.%Y")}')
41 41
 
42
+    if invoice.leitweg_id:
43
+        ret.append(f'Leitweg-ID:      {invoice.leitweg_id}')
44
+    if invoice.buyer_reference:
45
+        ret.append(f'Kunden-Referenz: {invoice.buyer_reference}')
46
+    if invoice.contract_number:
47
+        ret.append(f'Vertragsnummer:  {invoice.contract_number}')
48
+    if invoice.order_number:
49
+        ret.append(f'Ihre Bestellnummer: {invoice.order_number}')
50
+
42 51
     ret.append('')
43 52
     for part in invoice.parts:
44 53
         if isinstance(part, InvoiceTable):
... ...
@@ -99,6 +99,10 @@ def InvoiceToXML(invoice):
99 99
     if invoice.buyer_reference:
100 100
         # "Leitweg-ID" in XRechnung
101 101
         doc.trade.agreement.buyer_reference = invoice.buyer_reference
102
+    if invoice.order_number:
103
+        doc.trade.agreement.buyer_order.issuer_assigned_id = invoice.order_number
104
+    if invoice.contract_number:
105
+        doc.trade.agreement.contract.issuer_assigned_id = invoice.contract_number
102 106
 
103 107
     # Line Items
104 108
     summe_netto = 0.0
... ...
@@ -124,7 +128,9 @@ def InvoiceToXML(invoice):
124 128
                         li.settlement.period.start = el['period_start']
125 129
                         li.settlement.period.end = el['period_end']
126 130
                     else:
127
-                        li.delivery.event.occurrence = el['period_start']
131
+                        #li.delivery.event.occurrence = el['period_start']
132
+                        # FIXME: Fehler in drafthorse?! Wird nicht akzeptiert.
133
+                        pass
128 134
 
129 135
                 # FIXME: Hier sollte der passende Code benutzt werden (z.B. Monat)
130 136
                 li.delivery.billed_quantity = (Decimal(el['count']), 'C62')
131 137