Zwischenüberschriften in der Tabelle waren nicht vollständig implementiert
Bernd Wurst

Bernd Wurst commited on 2024-02-15 06:12:11
Zeige 3 geänderte Dateien mit 13 Einfügungen und 0 Löschungen.

... ...
@@ -83,6 +83,9 @@ def InvoiceTableToText(invoiceTable: InvoiceTable):
83 83
         ret.append(u'-' * 72)
84 84
 
85 85
     for el in invoiceTable.entries:
86
+        if el['type'] == 'title':
87
+            ret.append('\n'.join(_breakLine(el['title'])))
88
+            continue
86 89
         unit = ''
87 90
         if el['unit']:
88 91
             unit = ' %s' % el['unit']
... ...
@@ -100,10 +100,19 @@ def InvoiceToXML(invoice):
100 100
         if isinstance(part, InvoiceText):
101 101
             textparts += part.paragraphs
102 102
         if isinstance(part, InvoiceTable):
103
+            last_title = None
103 104
             for el in part.entries:
105
+                if el['type'] == 'title':
106
+                    # Diese Information ist im XML nicht auf diese Weise darstellbar
107
+                    last_title = el['title']
108
+                    continue
104 109
                 line_id_count += 1
105 110
                 li = LineItem()
106 111
                 li.document.line_id = f"{line_id_count}"
112
+                if last_title:
113
+                    title = IncludedNote()
114
+                    title.content.add(last_title)
115
+                    li.document.notes.add(title)
107 116
                 li.product.name = el['subject']
108 117
                 if 'desc' in el and el['desc'] != '':
109 118
                     li.product.description = el['desc']
... ...
@@ -88,6 +88,7 @@ if __name__ == '__main__':
88 88
         vatType = 'gross'  # Entscheidet anhand des ersten Eintrags ob die Rechnung Netto oder Brutto gestellt wird
89 89
     tab = InvoiceTable(vatType=vatType)
90 90
 
91
+    tab.addTitle("Zwischenüberschrift in der Tabelle")
91 92
     for item in data:
92 93
         # Der Betrag muss immer positiv sein, bei Gutschriften wird nur die Anzahl negativ.
93 94
         count = float(item['anzahl'])
94 95