Pflichtangaben für GmbH ermöglichen
Bernd Wurst

Bernd Wurst commited on 2026-06-25 19:39:59
Zeige 5 geänderte Dateien mit 40 Einfügungen und 10 Löschungen.

... ...
@@ -5,6 +5,8 @@
5 5
       <sourceFolder url="file://$MODULE_DIR$/Invoice" isTestSource="false" />
6 6
       <sourceFolder url="file://$MODULE_DIR$/lib/python" isTestSource="false" />
7 7
       <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
8
+      <sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
9
+      <sourceFolder url="file://$MODULE_DIR$/external/python-drafthorse" isTestSource="false" />
8 10
     </content>
9 11
     <orderEntry type="jdk" jdkName="Python 3.12" jdkType="Python SDK" />
10 12
     <orderEntry type="sourceFolder" forTests="false" />
... ...
@@ -179,6 +179,12 @@ class Invoice(object):
179 179
                 "line3": None,
180 180
                 "country_id": None,
181 181
             },
182
+            "mandatory_details": {
183
+                "managers": [], #Geschäftsführer
184
+                "seat": None, # Sitz der Gesellschaft
185
+                "court": None, # Gericht
186
+                "number": None, # HRB
187
+            },
182 188
             "phone": None,
183 189
             "email": None,
184 190
             "website": None,
... ...
@@ -194,19 +194,26 @@ class PDF(object):
194 194
         self.canvas.setFont(self.font, 7)
195 195
         lines = list(filter(None, [
196 196
             self.invoice.seller['trade_name'],
197
-            self.invoice.seller['name'] if self.invoice.seller['trade_name'] else None,
198
-            self.invoice.seller['website'],
199
-            self.invoice.seller['email'],
197
+            self.invoice.seller['name'],
198
+            self.invoice.seller['address']['line1'],
199
+            self.invoice.seller['address']['line2'],
200
+            self.invoice.seller['address']['line3'],
201
+            f"{self.invoice.seller['address']['postcode']} {self.invoice.seller['address']['city_name']}",
200 202
         ]))
201 203
         c = 0
202 204
         for line in lines:
203 205
             c += 10
204 206
             self.canvas.drawString(self.leftcontent, self.bottomcontent - c, line)
205 207
 
208
+        lines = []
206 209
         if self.invoice.seller_vat_id:
207
-            lines = list(filter(None, [
208
-                "USt-ID: " + self.invoice.seller_vat_id
209
-            ]))
210
+            lines.append("USt-ID: " + self.invoice.seller_vat_id)
211
+        if self.invoice.seller["mandatory_details"]["managers"]:
212
+            lines.append(f'Geschäftsführer: {", ".join(self.invoice.seller["mandatory_details"]["managers"])}')
213
+        if self.invoice.seller["mandatory_details"]["seat"]:
214
+            lines.append(f'Sitz: {self.invoice.seller["mandatory_details"]["seat"]}')
215
+        if self.invoice.seller["mandatory_details"]["court"]:
216
+            lines.append(f'{self.invoice.seller["mandatory_details"]["court"]} {self.invoice.seller["mandatory_details"]["number"]}')
210 217
         c = 0
211 218
         for line in lines:
212 219
             c += 10
... ...
@@ -236,7 +243,7 @@ class PDF(object):
236 243
 
237 244
     def addressBox(self):
238 245
         lines = [
239
-            self.invoice.seller['trade_name'],
246
+            self.invoice.seller['trade_name'] or self.invoice.seller['name'],
240 247
             self.invoice.seller['address']['line1'],
241 248
             self.invoice.seller['address']['line2'],
242 249
             self.invoice.seller['address']['line3'],
... ...
@@ -59,6 +59,17 @@ def InvoiceToXML(invoice):
59 59
     # Seller-Address
60 60
     if invoice.seller['trade_name']:
61 61
         doc.trade.agreement.seller.legal_organization.trade_name = invoice.seller['trade_name']
62
+    if invoice.seller["mandatory_details"]["managers"]:
63
+        doc.trade.agreement.seller.description = "Geschäftsführer: " + ", ".join(invoice.seller["mandatory_details"]["managers"])
64
+    if invoice.seller["mandatory_details"]["seat"]:
65
+        doc.trade.agreement.seller.legal_organization.trade_address.city_name = invoice.seller["mandatory_details"]["seat"]
66
+        doc.trade.agreement.seller.legal_organization.trade_address.country_id = "DE"
67
+    if invoice.seller["mandatory_details"]["court"]:
68
+        doc.trade.agreement.seller.description = (
69
+            str(doc.trade.agreement.seller.description) + "\nRegistergericht: " + invoice.seller["mandatory_details"]["court"])
70
+    if invoice.seller["mandatory_details"]["number"]:
71
+        doc.trade.agreement.seller.legal_organization.id = ("0102", invoice.seller["mandatory_details"]["number"])
72
+
62 73
     doc.trade.agreement.seller.name = invoice.seller['name']
63 74
     doc.trade.agreement.seller.address.country_id = invoice.seller['address']['country_id']
64 75
     doc.trade.agreement.seller.address.postcode = invoice.seller['address']['postcode']
... ...
@@ -42,9 +42,9 @@ if __name__ == '__main__':
42 42
         invoice.order_number = referenzen['bestellnummer']
43 43
     if 'vertragsnummer' in referenzen:
44 44
         invoice.contract_number = referenzen['vertragsnummer']
45
-    invoice.seller['name'] = 'Bernd Wurst / Johannes Böck'
46
-    invoice.seller['contactPerson'] = 'Bernd Wurst / Johannes Böck'
47
-    invoice.seller['trade_name'] = 'schokokeks.org GbR'
45
+    invoice.seller['name'] = 'schokokeks.org GmbH'
46
+    invoice.seller['contactPerson'] = ''
47
+    #invoice.seller['trade_name'] = 'schokokeks.org'
48 48
     invoice.seller['email'] = 'xxx@example.com'
49 49
     invoice.seller['website'] = 'www.schokokeks.org'
50 50
     invoice.seller['phone'] = '+49 123456789'
... ...
@@ -54,6 +54,10 @@ if __name__ == '__main__':
54 54
     invoice.seller['address']['line1'] = 'Köchersberg 32'
55 55
     invoice.seller['address']['line2'] = None
56 56
     invoice.seller['address']['line3'] = None
57
+    invoice.seller['mandatory_details']["managers"] = ["M. Mustermann", ]
58
+    invoice.seller['mandatory_details']["seat"] = "Murrhardt"
59
+    invoice.seller['mandatory_details']["court"] = "Amtsgericht Stuttgart"
60
+    invoice.seller['mandatory_details']["number"] = "HRB 123456"
57 61
     invoice.seller_vat_id = "DE255720588"
58 62
     invoice.buyer_vat_id = "AT123456789"
59 63
     invoice.type = RECHNUNG
60 64