mikrowerk-edi-invoicing 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mikrowerk_edi_invoicing-0.2.0/mikrowerk_edi_invoicing.egg-info → mikrowerk_edi_invoicing-0.2.1}/PKG-INFO +1 -1
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/model/x_rechnung.py +1 -1
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/x_mapper/xml_ubl_sax_parser.py +31 -2
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1/mikrowerk_edi_invoicing.egg-info}/PKG-INFO +1 -1
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/setup.py +1 -1
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/LICENSE +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/README.md +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/__init__.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/model/__init__.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/tests/__init__.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/tests/test_iban_handling.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/tests/test_parse_x_rechnung.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/util/__init__.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/util/file_helper.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/x_mapper/__init__.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/x_mapper/cross_industry_invoice_mapper.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/x_mapper/drafthorse_elements_helper.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/x_mapper/xml_abstract_x_rechnung_parser.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/x_mapper/xml_cii_dom_parser.py +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/mikrowerk_edi_invoicing.egg-info/SOURCES.txt +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/mikrowerk_edi_invoicing.egg-info/dependency_links.txt +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/mikrowerk_edi_invoicing.egg-info/requires.txt +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/mikrowerk_edi_invoicing.egg-info/top_level.txt +0 -0
- {mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/setup.cfg +0 -0
|
@@ -178,7 +178,7 @@ class XRechnung:
|
|
|
178
178
|
def map_tradeline_to_dict(cls, x_trade_line: XRechnungTradeLine) -> dict:
|
|
179
179
|
_dict = asdict(x_trade_line)
|
|
180
180
|
_dict.update(
|
|
181
|
-
{'trade_tax': asdict(x_trade_line.trade_tax),
|
|
181
|
+
{'trade_tax': asdict(x_trade_line.trade_tax) if x_trade_line.trade_tax is not None else None,
|
|
182
182
|
'price_unit': float(x_trade_line.price_unit),
|
|
183
183
|
'quantity_billed': float(x_trade_line.quantity_billed),
|
|
184
184
|
'total_amount_net': float(x_trade_line.total_amount_net),
|
|
@@ -8,8 +8,8 @@ import xml.sax as sax
|
|
|
8
8
|
from decimal import Decimal
|
|
9
9
|
|
|
10
10
|
from ..model.x_rechnung import (XRechnung, XRechnungTradeParty, XRechnungTradeAddress, XRechnungTradeContact,
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
XRechnungPaymentMeans, XRechnungBankAccount, XRechnungCurrency, XRechnungTradeLine,
|
|
12
|
+
XRechnungAppliedTradeTax)
|
|
13
13
|
from .xml_abstract_x_rechnung_parser import XMLAbstractXRechnungParser
|
|
14
14
|
|
|
15
15
|
|
|
@@ -58,6 +58,10 @@ class UblSaxHandler(sax.ContentHandler):
|
|
|
58
58
|
self.current_payment_means.payee_account = XRechnungBankAccount()
|
|
59
59
|
case "InvoiceLine":
|
|
60
60
|
self.current_trade_line = XRechnungTradeLine()
|
|
61
|
+
self.current_trade_tax = None
|
|
62
|
+
case "AllowanceCharge":
|
|
63
|
+
self.current_trade_line = XRechnungTradeLine()
|
|
64
|
+
self.current_trade_tax = None
|
|
61
65
|
case "TaxSubtotal":
|
|
62
66
|
self.current_trade_tax = XRechnungAppliedTradeTax()
|
|
63
67
|
case "ClassifiedTaxCategory":
|
|
@@ -65,6 +69,9 @@ class UblSaxHandler(sax.ContentHandler):
|
|
|
65
69
|
|
|
66
70
|
_path = '/'.join([tag for tag, _attrs in self.stack])
|
|
67
71
|
|
|
72
|
+
if _path.endswith('/AllowanceCharge/TaxCategory'):
|
|
73
|
+
self.current_trade_tax = XRechnungAppliedTradeTax()
|
|
74
|
+
|
|
68
75
|
print(f">>>>>>>>>>>>>>> start: {_ns} {_tag_name} >>>>>>>>>>>>>>>>")
|
|
69
76
|
print(_path)
|
|
70
77
|
for k, v in attrs.items():
|
|
@@ -83,10 +90,14 @@ class UblSaxHandler(sax.ContentHandler):
|
|
|
83
90
|
self.handle_payment_means(_path, _tag_name, _content, attrs)
|
|
84
91
|
if "/InvoiceLine" in _path:
|
|
85
92
|
self.handle_invoice_line(_path, _tag_name, _content, attrs)
|
|
93
|
+
if "/AllowanceCharge" in _path:
|
|
94
|
+
self.handle_allowance_charge(_path, _tag_name, _content, attrs)
|
|
86
95
|
if "/ClassifiedTaxCategory" in _path:
|
|
87
96
|
self.handle_trade_tax(_path, _tag_name, _content, attrs)
|
|
88
97
|
if "/TaxTotal/TaxSubtotal" in _path:
|
|
89
98
|
self.handle_trade_tax(_path, _tag_name, _content, attrs)
|
|
99
|
+
if "/AllowanceCharge/TaxCategory" in _path:
|
|
100
|
+
self.handle_trade_tax(_path, _tag_name, _content, attrs)
|
|
90
101
|
|
|
91
102
|
# collect results when closing a main tag
|
|
92
103
|
match _tag_name:
|
|
@@ -102,6 +113,13 @@ class UblSaxHandler(sax.ContentHandler):
|
|
|
102
113
|
|
|
103
114
|
if _path.endswith("Invoice/TaxTotal/TaxSubtotal"):
|
|
104
115
|
self.applicable_trade_taxes.append(self.current_trade_tax)
|
|
116
|
+
elif _path.endswith('Invoice/AllowanceCharge'):
|
|
117
|
+
self.current_trade_line.trade_tax = self.current_trade_tax
|
|
118
|
+
self.current_trade_line.line_id = "99999"
|
|
119
|
+
self.current_trade_line.seller_assigned_id = "AllowanceCharge"
|
|
120
|
+
self.current_trade_line.total_amount_net = (
|
|
121
|
+
self.current_trade_line.price_unit * self.current_trade_line.quantity_billed)
|
|
122
|
+
self.trade_line_list.append(self.current_trade_line)
|
|
105
123
|
|
|
106
124
|
# invoice top level properties
|
|
107
125
|
self.handle_invoice(_path, _tag_name, _content, attrs)
|
|
@@ -239,6 +257,17 @@ class UblSaxHandler(sax.ContentHandler):
|
|
|
239
257
|
elif path.endswith("/InvoiceLine/Price/PriceAmount"):
|
|
240
258
|
self.current_trade_line.price_unit = float(content)
|
|
241
259
|
|
|
260
|
+
def handle_allowance_charge(self, path: str, tag: str, content: str, attr=None):
|
|
261
|
+
if path.endswith("/AllowanceCharge/AllowanceChargeReason"):
|
|
262
|
+
self.current_trade_line.name = content
|
|
263
|
+
elif path.endswith("/AllowanceCharge/Amount"):
|
|
264
|
+
self.current_trade_line.price_unit = float(content)
|
|
265
|
+
elif path.endswith("/AllowanceCharge/ChargeIndicator"):
|
|
266
|
+
if content.lower() == "true":
|
|
267
|
+
self.current_trade_line.quantity_billed = 1.0
|
|
268
|
+
else:
|
|
269
|
+
self.current_trade_line.quantity_billed = -1.0
|
|
270
|
+
|
|
242
271
|
def handle_trade_tax(self, path: str, tag: str, content: str, attr=None):
|
|
243
272
|
if path.endswith("/ClassifiedTaxCategory/ID") or path.endswith("/TaxCategory/ID"):
|
|
244
273
|
self.current_trade_tax.category_code = content
|
|
File without changes
|
|
File without changes
|
{mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/__init__.py
RENAMED
|
File without changes
|
{mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/model/__init__.py
RENAMED
|
File without changes
|
{mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mikrowerk_edi_invoicing-0.2.0 → mikrowerk_edi_invoicing-0.2.1}/edi_invoice_parser/util/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|