Bernd Wurst commited on 2024-11-20 07:37:50
Zeige 1 geänderte Dateien mit 17 Einfügungen und 1 Löschungen.
| ... | ... |
@@ -22,7 +22,9 @@ from .InvoiceObjects import InvoiceTable, InvoiceText, RECHNUNG, GUTSCHRIFT, KOR |
| 22 | 22 |
from drafthorse.models.party import TaxRegistration, URIUniversalCommunication |
| 23 | 23 |
from drafthorse.models.payment import PaymentTerms |
| 24 | 24 |
from drafthorse.models.note import IncludedNote |
| 25 |
+from drafthorse.models import NS_QDT |
|
| 25 | 26 |
from drafthorse.pdf import attach_xml |
| 27 |
+import re |
|
| 26 | 28 |
|
| 27 | 29 |
|
| 28 | 30 |
def InvoiceToXML(invoice): |
| ... | ... |
@@ -311,5 +313,19 @@ def InvoiceToXML(invoice): |
| 311 | 313 |
doc.trade.settlement.monetary_summation.due_amount = Decimal(f"{rest:.2f}")
|
| 312 | 314 |
|
| 313 | 315 |
# Generate XML file |
| 314 |
- xml = doc.serialize(schema="FACTUR-X_EXTENDED") |
|
| 316 |
+ xml = add_namespace(doc.serialize(schema="FACTUR-X_EXTENDED")) |
|
| 315 | 317 |
return xml |
| 318 |
+ |
|
| 319 |
+def add_namespace(xml): |
|
| 320 |
+ """insert xmlns:qdt if it is not in namespaces""" |
|
| 321 |
+ decoded = xml.decode('utf-8')
|
|
| 322 |
+ searchstr = re.search(r'<rsm:CrossIndustryInvoice(.*)>', |
|
| 323 |
+ decoded).group() |
|
| 324 |
+ nsmap = searchstr.split(' ')
|
|
| 325 |
+ _QDT = 'xmlns:qdt=' |
|
| 326 |
+ QDT = _QDT + '\"' + NS_QDT + '\"' |
|
| 327 |
+ if QDT not in nsmap: |
|
| 328 |
+ nsmap.insert(1, QDT) |
|
| 329 |
+ decoded = decoded.replace(searchstr, ' '.join(nsmap)) |
|
| 330 |
+ |
|
| 331 |
+ return decoded.encode('utf-8')
|
|
| 316 | 332 |