mikrowerk-edi-invoicing 0.6.5__py3-none-any.whl → 0.7.0__py3-none-any.whl
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.
- edi_invoice_parser/cii_dom_parser/dom_elements_helper.py +1 -1
- edi_invoice_parser/cii_dom_parser/xml_cii_dom_parser.py +52 -46
- edi_invoice_parser/model/trade_document_types.py +6 -6
- edi_invoice_parser/tests/test_parse_x_rechnung.py +13 -6
- {mikrowerk_edi_invoicing-0.6.5.dist-info → mikrowerk_edi_invoicing-0.7.0.dist-info}/METADATA +1 -1
- {mikrowerk_edi_invoicing-0.6.5.dist-info → mikrowerk_edi_invoicing-0.7.0.dist-info}/RECORD +9 -9
- {mikrowerk_edi_invoicing-0.6.5.dist-info → mikrowerk_edi_invoicing-0.7.0.dist-info}/WHEEL +1 -1
- {mikrowerk_edi_invoicing-0.6.5.dist-info → mikrowerk_edi_invoicing-0.7.0.dist-info}/licenses/LICENSE +0 -0
- {mikrowerk_edi_invoicing-0.6.5.dist-info → mikrowerk_edi_invoicing-0.7.0.dist-info}/top_level.txt +0 -0
|
@@ -13,20 +13,20 @@ from ..model.xml_abstract_x_rechnung_parser import XMLAbstractXRechnungParser
|
|
|
13
13
|
class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
14
14
|
|
|
15
15
|
@classmethod
|
|
16
|
-
def parse_and_map_x_rechnung(cls, _xml
|
|
16
|
+
def parse_and_map_x_rechnung(cls, _xml) -> TradeDocument:
|
|
17
17
|
doc = Document.parse(_xml)
|
|
18
|
-
return cls
|
|
18
|
+
return cls.map_to_x_rechnung(doc)
|
|
19
19
|
|
|
20
20
|
@classmethod
|
|
21
|
-
def map_to_x_rechnung(cls, doc
|
|
21
|
+
def map_to_x_rechnung(cls, doc) -> TradeDocument:
|
|
22
22
|
"""
|
|
23
23
|
:param doc: Element, the parsed dom root element
|
|
24
24
|
:return:
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
27
|
return TradeDocument(
|
|
28
|
-
name=f"{cls
|
|
29
|
-
doc_type_name=f"{cls
|
|
28
|
+
name=f"{cls.TYPE_CODES.get(doc.header.type_code.get_string(), 'Unknown doc type ')} {doc.header.id.get_string()}",
|
|
29
|
+
doc_type_name=f"{cls.TYPE_CODES.get(doc.header.type_code.get_string(), 'Unknown doc type ')}",
|
|
30
30
|
doc_id=doc.header.id.get_string(),
|
|
31
31
|
doc_type_code=int(doc.header.type_code.get_string()) if doc.header.type_code else None,
|
|
32
32
|
issued_date_time=doc.header.issue_date_time.get_value(),
|
|
@@ -40,59 +40,58 @@ class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
|
40
40
|
allowance_total_amount=doc.trade.settlement.monetary_summation.allowance_total.get_value(),
|
|
41
41
|
tax_basis_total_amount=TradeCurrency.from_currency_tuple(
|
|
42
42
|
doc.trade.settlement.monetary_summation.tax_basis_total.get_currency()),
|
|
43
|
-
tax_total_amount=
|
|
44
|
-
doc.trade.settlement.monetary_summation.tax_total_other_currency.get_currencies()],
|
|
45
|
-
# list of currency
|
|
43
|
+
tax_total_amount=cls.map_total_tax(doc.trade.settlement.monetary_summation.tax_total_other_currency),
|
|
46
44
|
grand_total_amount=TradeCurrency.from_currency_tuple(
|
|
47
45
|
doc.trade.settlement.monetary_summation.grand_total.get_currency()),
|
|
48
46
|
total_prepaid_amount=doc.trade.settlement.monetary_summation.prepaid_total.get_value(),
|
|
49
47
|
due_payable_amount=doc.trade.settlement.monetary_summation.due_amount.get_value(),
|
|
50
48
|
delivered_date_time=datetime.now(),
|
|
51
|
-
payment_means=cls
|
|
49
|
+
payment_means=cls.map_payment_means(
|
|
52
50
|
doc.trade.settlement.payment_means) if doc.trade.settlement.payment_means else None,
|
|
53
51
|
payment_terms=doc.trade.settlement.terms.get_string_elements("\n"),
|
|
54
|
-
sender=cls
|
|
55
|
-
|
|
56
|
-
invoicee=cls
|
|
57
|
-
|
|
58
|
-
receiver=cls
|
|
59
|
-
|
|
60
|
-
payee=cls
|
|
61
|
-
trade_line_items=cls
|
|
62
|
-
applicable_trade_taxes=cls
|
|
52
|
+
sender=cls.map_trade_party(doc.trade.agreement.seller) if hasattr(doc.trade.agreement,
|
|
53
|
+
"seller") else None,
|
|
54
|
+
invoicee=cls.map_trade_party(doc.trade.agreement.invoicee) if hasattr(doc.trade.agreement,
|
|
55
|
+
"invoicee") else None,
|
|
56
|
+
receiver=cls.map_trade_party(doc.trade.agreement.buyer) if hasattr(doc.trade.agreement,
|
|
57
|
+
"buyer") else None,
|
|
58
|
+
payee=cls.map_trade_party(doc.trade.agreement.payee) if hasattr(doc.trade.agreement, "payee") else None,
|
|
59
|
+
trade_line_items=cls.map_trade_line_items(doc.trade.items) if hasattr(doc.trade, "items") else None,
|
|
60
|
+
applicable_trade_taxes=cls.map_trade_taxes(doc.trade.settlement.trade_tax) if hasattr(
|
|
63
61
|
doc.trade.settlement,
|
|
64
|
-
"trade_tax") else
|
|
62
|
+
"trade_tax") else []
|
|
65
63
|
)
|
|
66
64
|
|
|
67
65
|
@classmethod
|
|
68
|
-
def map_trade_party(cls, trade_party
|
|
69
|
-
_global_id_schema, _global_id = cls
|
|
66
|
+
def map_trade_party(cls, trade_party) -> TradeParty:
|
|
67
|
+
_global_id_schema, _global_id = cls.map_first_id(trade_party.global_id)
|
|
70
68
|
return TradeParty(
|
|
71
69
|
name=trade_party.name.get_string(),
|
|
72
70
|
description=trade_party.description.get_string(),
|
|
73
71
|
global_id=_global_id,
|
|
74
72
|
global_id_schema=_global_id_schema,
|
|
75
|
-
email=cls
|
|
76
|
-
|
|
77
|
-
vat_registration_number=cls
|
|
73
|
+
email=cls.map_electronic_address(trade_party.electronic_address, 'EM') if hasattr(trade_party,
|
|
74
|
+
"electronic_address") else None,
|
|
75
|
+
vat_registration_number=cls.map_tax_registration(trade_party.tax_registrations, 'VA') if hasattr(
|
|
78
76
|
trade_party, 'tax_registrations') else None,
|
|
79
|
-
fiscal_registration_number=cls
|
|
77
|
+
fiscal_registration_number=cls.map_tax_registration(trade_party.tax_registrations, 'FC') if hasattr(
|
|
80
78
|
trade_party, 'tax_registrations') else None,
|
|
81
|
-
address=cls
|
|
82
|
-
contact=cls
|
|
79
|
+
address=cls.map_trade_address(trade_party.address) if hasattr(trade_party, 'address') else None,
|
|
80
|
+
contact=cls.map_trade_contact(trade_party.contact) if hasattr(trade_party, 'contact') else None,
|
|
83
81
|
id=trade_party.id.get_string() if hasattr(trade_party, 'id') else None,
|
|
84
82
|
)
|
|
85
83
|
|
|
86
84
|
@staticmethod
|
|
87
|
-
def map_first_id(global_id
|
|
85
|
+
def map_first_id(global_id) -> tuple[str | None, str | None]:
|
|
88
86
|
if global_id is not None and hasattr(global_id, "children") and len(global_id.children) > 0:
|
|
89
87
|
for child in global_id.children:
|
|
90
88
|
return child
|
|
89
|
+
return None, None
|
|
91
90
|
else:
|
|
92
91
|
return None, None
|
|
93
92
|
|
|
94
93
|
@staticmethod
|
|
95
|
-
def map_electronic_address(electronic_address
|
|
94
|
+
def map_electronic_address(electronic_address, schema_id: str) -> str | None:
|
|
96
95
|
if electronic_address is not None and hasattr(electronic_address, "children") and len(
|
|
97
96
|
electronic_address.children) > 0:
|
|
98
97
|
for child in electronic_address.children:
|
|
@@ -102,7 +101,7 @@ class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
|
102
101
|
return None
|
|
103
102
|
|
|
104
103
|
@staticmethod
|
|
105
|
-
def map_tax_registration(tax_reg
|
|
104
|
+
def map_tax_registration(tax_reg, schema_id: str) -> str | None:
|
|
106
105
|
if tax_reg is not None and hasattr(tax_reg, "children") and len(
|
|
107
106
|
tax_reg.children) > 0:
|
|
108
107
|
for child in tax_reg.children:
|
|
@@ -112,7 +111,7 @@ class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
|
112
111
|
return None
|
|
113
112
|
|
|
114
113
|
@staticmethod
|
|
115
|
-
def map_trade_address(trade_address
|
|
114
|
+
def map_trade_address(trade_address) -> TradePartyAddress:
|
|
116
115
|
return TradePartyAddress(
|
|
117
116
|
city_name=trade_address.city_name.get_string(),
|
|
118
117
|
country_id=trade_address.country_id.get_string(),
|
|
@@ -124,7 +123,7 @@ class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
|
124
123
|
)
|
|
125
124
|
|
|
126
125
|
@staticmethod
|
|
127
|
-
def map_trade_contact(trade_contact
|
|
126
|
+
def map_trade_contact(trade_contact) -> TradePartyContact:
|
|
128
127
|
return TradePartyContact(
|
|
129
128
|
name=trade_contact.person_name.get_string(),
|
|
130
129
|
email=trade_contact.email.get_string(),
|
|
@@ -134,7 +133,7 @@ class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
|
134
133
|
)
|
|
135
134
|
|
|
136
135
|
@staticmethod
|
|
137
|
-
def map_bank_account(payment_means
|
|
136
|
+
def map_bank_account(payment_means) -> BankAccount:
|
|
138
137
|
return BankAccount(
|
|
139
138
|
iban="".join(payment_means.payee_account.iban.get_string().split()) if (hasattr(payment_means,
|
|
140
139
|
'payee_account')
|
|
@@ -145,24 +144,24 @@ class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
|
145
144
|
)
|
|
146
145
|
|
|
147
146
|
@staticmethod
|
|
148
|
-
def map_financial_card(financial_card
|
|
147
|
+
def map_financial_card(financial_card) -> FinancialCard:
|
|
149
148
|
return FinancialCard(
|
|
150
149
|
id=financial_card.id.get_string(),
|
|
151
150
|
cardholder_name=financial_card.cardholder_name.get_string(),
|
|
152
151
|
)
|
|
153
152
|
|
|
154
153
|
@classmethod
|
|
155
|
-
def map_payment_means(cls, payment_means
|
|
154
|
+
def map_payment_means(cls, payment_means) -> TradePaymentMeans:
|
|
156
155
|
return TradePaymentMeans(
|
|
157
156
|
information=payment_means.information.get_string(),
|
|
158
157
|
type_code=payment_means.type_code.get_string(),
|
|
159
|
-
payee_account=cls
|
|
160
|
-
financial_card=cls
|
|
161
|
-
|
|
158
|
+
payee_account=cls.map_bank_account(payment_means) if hasattr(payment_means, 'payee_account') else None,
|
|
159
|
+
financial_card=cls.map_financial_card(payment_means.financial_card) if hasattr(payment_means,
|
|
160
|
+
'financial_card') else None,
|
|
162
161
|
)
|
|
163
162
|
|
|
164
163
|
@staticmethod
|
|
165
|
-
def map_trade_tax(trade_tax
|
|
164
|
+
def map_trade_tax(trade_tax) -> AppliedTradeTax:
|
|
166
165
|
return AppliedTradeTax(
|
|
167
166
|
type_code=trade_tax.type_code.get_string(),
|
|
168
167
|
name=f"{trade_tax.type_code.get_string()} {trade_tax.rate_applicable_percent.get_value()}",
|
|
@@ -173,14 +172,21 @@ class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
|
173
172
|
)
|
|
174
173
|
|
|
175
174
|
@classmethod
|
|
176
|
-
def map_trade_taxes(cls, trade_taxes
|
|
175
|
+
def map_trade_taxes(cls, trade_taxes) -> list[TradeLine]:
|
|
177
176
|
res = []
|
|
178
177
|
for child in trade_taxes.children:
|
|
179
|
-
res.append(cls
|
|
178
|
+
res.append(cls.map_trade_tax(child))
|
|
180
179
|
return res
|
|
181
180
|
|
|
182
181
|
@classmethod
|
|
183
|
-
def
|
|
182
|
+
def map_total_tax(cls, _tax_total_other_currency):
|
|
183
|
+
if _tax_total_other_currency and len(_tax_total_other_currency.get_currencies()) > 0:
|
|
184
|
+
return _tax_total_other_currency.get_currencies()[0]
|
|
185
|
+
else:
|
|
186
|
+
return None
|
|
187
|
+
|
|
188
|
+
@classmethod
|
|
189
|
+
def map_trade_line(cls, trade_line) -> TradeLine:
|
|
184
190
|
return TradeLine(
|
|
185
191
|
name=trade_line.product.name.get_string(),
|
|
186
192
|
description=trade_line.product.description.get_string(),
|
|
@@ -189,18 +195,18 @@ class XRechnungCIIXMLParser(XMLAbstractXRechnungParser):
|
|
|
189
195
|
unit_price_gross=trade_line.agreement.gross.amount.get_value(),
|
|
190
196
|
quantity=trade_line.delivery.billed_quantity.get_value(),
|
|
191
197
|
global_product_id=trade_line.product.global_id.get_string(),
|
|
192
|
-
|
|
198
|
+
total_amount_net=trade_line.settlement.monetary_summation.total_amount.get_value(),
|
|
193
199
|
total_allowance_charge=trade_line.settlement.monetary_summation.total_allowance_charge.get_value(),
|
|
194
200
|
quantity_unit_code=trade_line.delivery.billed_quantity._unit_code,
|
|
195
201
|
seller_assigned_id=trade_line.product.seller_assigned_id.get_string(),
|
|
196
202
|
buyer_assigned_id=trade_line.product.buyer_assigned_id.get_string(),
|
|
197
203
|
global_product_scheme_id=trade_line.product.global_id._scheme_id,
|
|
198
|
-
tax=cls
|
|
204
|
+
tax=cls.map_trade_tax(trade_line.settlement.trade_tax)
|
|
199
205
|
)
|
|
200
206
|
|
|
201
207
|
@classmethod
|
|
202
|
-
def map_trade_line_items(cls, trade_line_items
|
|
208
|
+
def map_trade_line_items(cls, trade_line_items) -> list[TradeLine]:
|
|
203
209
|
res = []
|
|
204
210
|
for child in trade_line_items.children:
|
|
205
|
-
res.append(cls
|
|
211
|
+
res.append(cls.map_trade_line(child))
|
|
206
212
|
return res
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
|
-
import datetime
|
|
2
|
+
from datetime import datetime
|
|
3
3
|
|
|
4
4
|
"""
|
|
5
5
|
UBL Document Type (XML Root) Description UNCL 1001 Code (Example)
|
|
@@ -46,9 +46,9 @@ class TradePartyContact:
|
|
|
46
46
|
|
|
47
47
|
@dataclass
|
|
48
48
|
class TradeParty:
|
|
49
|
-
name: str= None
|
|
49
|
+
name: str = None
|
|
50
50
|
description: str = None # 'Description'
|
|
51
|
-
global_id:
|
|
51
|
+
global_id: str = None # 'Global ID'
|
|
52
52
|
global_id_schema: str = None # 'Global Schema'
|
|
53
53
|
id: str = None # 'id'
|
|
54
54
|
address: TradePartyAddress | None = None
|
|
@@ -151,9 +151,9 @@ class TradeDocument:
|
|
|
151
151
|
charge_total_amount: float = None # 'Charge Total Amount'
|
|
152
152
|
allowance_total_amount: float = None # 'Allowance Total Amount'
|
|
153
153
|
tax_basis_total_amount: TradeCurrency = None
|
|
154
|
-
tax_total_amount:
|
|
154
|
+
tax_total_amount: TradeCurrency = None # 'Tax Grand Total Amount'
|
|
155
155
|
grand_total_amount: TradeCurrency = None # 'Grand Total Amount'
|
|
156
156
|
total_prepaid_amount: float = None # 'Total Prepaid Amount'
|
|
157
157
|
due_payable_amount: float = None # 'Due Payable Amount'
|
|
158
|
-
trade_line_items: [TradeLine] = None
|
|
159
|
-
applicable_trade_taxes: [AppliedTradeTax] = None
|
|
158
|
+
trade_line_items: list[TradeLine] = None
|
|
159
|
+
applicable_trade_taxes: list[AppliedTradeTax] = None
|
|
@@ -16,18 +16,20 @@ class XRechnungEinfachTestCase(unittest.TestCase):
|
|
|
16
16
|
pass
|
|
17
17
|
|
|
18
18
|
@parameterized.expand([
|
|
19
|
+
('pdf', 'griffity_exapmles/inTone Bookings_19.12.25_EUR_2142,00.pdf'),
|
|
20
|
+
('xml', 'griffity_exapmles/385_2025.xml'),
|
|
19
21
|
('xml', 'zugferd/XRECHNUNG_Einfach/xrechnung.xml'),
|
|
20
22
|
('xml', 'real_invoice_samples/AKD-736116091815.xml'),
|
|
21
|
-
|
|
23
|
+
|
|
22
24
|
('xml', 'e_invoicing_EN16931/CII-BR-CO-10-RoundingIssue.xml'),
|
|
23
25
|
('xml', 'e_invoicing_EN16931/CII_business_example_01.xml'),
|
|
24
26
|
('xml', 'e_invoicing_EN16931/CII_business_example_02.xml'),
|
|
25
27
|
('xml', 'e_invoicing_EN16931/CII_business_example_Z.xml'),
|
|
26
28
|
('xml', 'e_invoicing_EN16931/CII_example1.xml'),
|
|
27
|
-
('xml', 'e_invoicing_EN16931/CII_example2.xml'),
|
|
29
|
+
('xml', 'e_invoicing_EN16931/CII_example2.xml'),
|
|
28
30
|
('xml', 'e_invoicing_EN16931/CII_example3.xml'),
|
|
29
31
|
('xml', 'e_invoicing_EN16931/CII_example4.xml'),
|
|
30
|
-
('xml', 'e_invoicing_EN16931/CII_example5.xml'),
|
|
32
|
+
('xml', 'e_invoicing_EN16931/CII_example5.xml'),
|
|
31
33
|
('xml', 'e_invoicing_EN16931/CII_example6.xml'),
|
|
32
34
|
('xml', 'e_invoicing_EN16931/CII_example7.xml'),
|
|
33
35
|
('xml', 'e_invoicing_EN16931/CII_example8.xml'),
|
|
@@ -37,9 +39,10 @@ class XRechnungEinfachTestCase(unittest.TestCase):
|
|
|
37
39
|
('xml', 'ubl/ubl_invoice_example.xml'),
|
|
38
40
|
('xml', 'ubl/UBL-Invoice-2.1-Example.xml'),
|
|
39
41
|
('pdf', 'zugferd/BASIC-WL_Einfach/BASIC-WL_Einfach.pdf'),
|
|
40
|
-
# ('pdf', 'zugferd/XRECHNUNG_Einfach/XRECHNUNG_Einfach.pdf'), # needs some checks, why test failed
|
|
41
|
-
# ("pdf", "zugferd/XRECHNUNG_Elektron/XRECHNUNG_Elektron.pdf"), # needs some checks, why test failed
|
|
42
42
|
('pdf', 'odoo_generated/INV_2025_00001.pdf'),
|
|
43
|
+
# ('pdf', 'zugferd/XRECHNUNG_Einfach/XRECHNUNG_Einfach.pdf'), # fails on github
|
|
44
|
+
# ("pdf", "zugferd/XRECHNUNG_Elektron/XRECHNUNG_Elektron.pdf"), # fails on github
|
|
45
|
+
|
|
43
46
|
|
|
44
47
|
])
|
|
45
48
|
def test_x_rechnung_files(self, file_type, file_path):
|
|
@@ -67,16 +70,20 @@ class XRechnungEinfachTestCase(unittest.TestCase):
|
|
|
67
70
|
def _parse_pdf(self, filepath) -> TradeDocument:
|
|
68
71
|
_file_path, _exists, _is_dir = get_checked_file_path(filepath, __file__)
|
|
69
72
|
self.assertTrue(_exists)
|
|
73
|
+
print("----------------------------------------------------------------------------")
|
|
70
74
|
print(f"\n_parse_pdf: file_path={_file_path}")
|
|
71
75
|
with open(_file_path, "rb") as _file:
|
|
72
76
|
sample_pdf = _file.read()
|
|
77
|
+
|
|
73
78
|
filename, xml = get_facturx_xml_from_pdf(sample_pdf, False)
|
|
74
|
-
print(xml)
|
|
79
|
+
print(f"filename: {filename}\n{xml}")
|
|
75
80
|
if not xml or len(xml) == 0:
|
|
76
81
|
raise FileNotFoundError(
|
|
77
82
|
f"Could not extraxt XML from PDF file: {filepath}")
|
|
83
|
+
print("----------------------------------------------------------------------------")
|
|
78
84
|
res = parse_and_map_x_rechnung(xml)
|
|
79
85
|
self.assertIsNotNone(res)
|
|
86
|
+
print("----------------------------------------------------------------------------")
|
|
80
87
|
return res
|
|
81
88
|
|
|
82
89
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
edi_invoice_parser/__init__.py,sha256=jvA8QaZLZlEuNhHA0p58zdtZdkBatdrixYY4vPXfl4k,740
|
|
2
2
|
edi_invoice_parser/cross_industry_invoice_mapper.py,sha256=PCByIKH0srVnXqKR3orcQsrAxcqAtp_ljcmhNIv2FS8,1402
|
|
3
3
|
edi_invoice_parser/cii_dom_parser/__init__.py,sha256=J9O0f-t1570oDgC_zWT6-MpjOYA6o3whazbe9ffQqjE,188
|
|
4
|
-
edi_invoice_parser/cii_dom_parser/dom_elements_helper.py,sha256=
|
|
4
|
+
edi_invoice_parser/cii_dom_parser/dom_elements_helper.py,sha256=u-RmUdlilKf3qZNhzWPmXPFy1QGfbPGiVOFd6QtgMDY,3931
|
|
5
5
|
edi_invoice_parser/cii_dom_parser/pdf.py,sha256=1bbXWdqIGmrnYvkS284oc6ZVvH995vd9qB8-xdcDtf0,13270
|
|
6
6
|
edi_invoice_parser/cii_dom_parser/utils.py,sha256=_ZaPPb1YeDWid3GP-9ojYDwm35HaJyXGGT_nIoiGSMw,624
|
|
7
|
-
edi_invoice_parser/cii_dom_parser/xml_cii_dom_parser.py,sha256=
|
|
7
|
+
edi_invoice_parser/cii_dom_parser/xml_cii_dom_parser.py,sha256=0CRxE0Uc-K-8LMJ-TswSHtEZlibxIh_oPtpipSGe7Lc,11458
|
|
8
8
|
edi_invoice_parser/cii_dom_parser/xmp_schema.py,sha256=UXQnZT3L2PQMendI_vyjemddhw209gMjH5woIK07TEM,4085
|
|
9
9
|
edi_invoice_parser/cii_dom_parser/models/__init__.py,sha256=LANSc9OLmHBP8iv5RKlvvv8ugBGJjWycantnRi5Lt0I,439
|
|
10
10
|
edi_invoice_parser/cii_dom_parser/models/accounting.py,sha256=_ngHDoBruw6v5QbLeA23QarAQ0fOascCz0ISpnD9aPs,6714
|
|
@@ -21,18 +21,18 @@ edi_invoice_parser/cii_dom_parser/models/references.py,sha256=2LYJGJU5KkJse-UsUc
|
|
|
21
21
|
edi_invoice_parser/cii_dom_parser/models/trade.py,sha256=exlMrVMzj9aMb0qI3c610G3GuB6Z5ttM4qkFfK5tn3o,6968
|
|
22
22
|
edi_invoice_parser/cii_dom_parser/models/tradelines.py,sha256=262opVT4pWXKEc_-HTEqVjm4yqQhvz639QNckEQCthY,5650
|
|
23
23
|
edi_invoice_parser/model/__init__.py,sha256=gdzehRQK27DRpc-datjXMSkcs5GvxPFtph02wLE1Kns,647
|
|
24
|
-
edi_invoice_parser/model/trade_document_types.py,sha256=
|
|
24
|
+
edi_invoice_parser/model/trade_document_types.py,sha256=z3UZonSKST8y4z41SDW2anWFdNxdjKlEfjPrnAzbWiw,5084
|
|
25
25
|
edi_invoice_parser/model/xml_abstract_x_rechnung_parser.py,sha256=ufkXX4OP0_CjsB9pjF0-h_MJerkOx4JeY54nULi_BUA,691
|
|
26
26
|
edi_invoice_parser/tests/__init__.py,sha256=KhEmBFKreDn5PGQFEnBzTAI7IkxtRj_H0dMxk_tuo54,160
|
|
27
27
|
edi_invoice_parser/tests/test_iban_handling.py,sha256=suRaB9gxbNc2Dc7spjHmQyPBdXva98HF1js85wQWqPM,662
|
|
28
|
-
edi_invoice_parser/tests/test_parse_x_rechnung.py,sha256=
|
|
28
|
+
edi_invoice_parser/tests/test_parse_x_rechnung.py,sha256=Kh7OZFZei87N5S6uKEFwAK3imoVMsJiVBugz2thLV4g,3933
|
|
29
29
|
edi_invoice_parser/ubl_sax_parser/__init__.py,sha256=P3QhOExirTKDRre-ReGBVv_GFZniEj_kOnWtUSNJGq0,91
|
|
30
30
|
edi_invoice_parser/ubl_sax_parser/xml_ubl_sax_parser.py,sha256=eZETsQi0MZ7f0SvyRZBorMUTJkpET9Bi2FDWBFka_qA,16625
|
|
31
31
|
edi_invoice_parser/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
32
|
edi_invoice_parser/util/file_helper.py,sha256=4gdWbv8L9LSMraLKvGI1Z3NMcuGGy7JB1qFvNaW-yo4,767
|
|
33
33
|
edi_invoice_parser/util/timer_helper.py,sha256=X1XSV03iLZ4xfjELj_axlvNxzR2sOrJInXiv9HU2Fyg,284
|
|
34
|
-
mikrowerk_edi_invoicing-0.
|
|
35
|
-
mikrowerk_edi_invoicing-0.
|
|
36
|
-
mikrowerk_edi_invoicing-0.
|
|
37
|
-
mikrowerk_edi_invoicing-0.
|
|
38
|
-
mikrowerk_edi_invoicing-0.
|
|
34
|
+
mikrowerk_edi_invoicing-0.7.0.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
35
|
+
mikrowerk_edi_invoicing-0.7.0.dist-info/METADATA,sha256=KQtdnz8NnvRxbxxOQL4oCC0oT2Ns2rqez3DB6TTHCDs,1080
|
|
36
|
+
mikrowerk_edi_invoicing-0.7.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
37
|
+
mikrowerk_edi_invoicing-0.7.0.dist-info/top_level.txt,sha256=OyIJDXDBfR9f0EvTDTmEHdXEFHscjRqX1MxeOeT2VKM,19
|
|
38
|
+
mikrowerk_edi_invoicing-0.7.0.dist-info/RECORD,,
|
{mikrowerk_edi_invoicing-0.6.5.dist-info → mikrowerk_edi_invoicing-0.7.0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{mikrowerk_edi_invoicing-0.6.5.dist-info → mikrowerk_edi_invoicing-0.7.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|