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 |