From bafd58124d017acad05e8e9fe4006bb23bbd32c3 Mon Sep 17 00:00:00 2001 From: "bit4bit@riseup.net" Date: Wed, 27 May 2020 16:47:55 +0000 Subject: [PATCH] facho/fe/form.py: correcion identificador InvoiceLine/cbc:ID FossilOrigin-Name: d3f7682487635e42acb9c15fcb1668beab6ea085e74e3ca55c147121f2ca59bb --- facho/facho.py | 3 --- facho/fe/form.py | 10 ++++++---- tests/test_fe_form.py | 7 +++++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/facho/facho.py b/facho/facho.py index f800ef8..da2aa65 100644 --- a/facho/facho.py +++ b/facho/facho.py @@ -86,10 +86,7 @@ class LXMLBuilder: elem.text = text def xpath(self, elem, xpath): - print('xpath:' + xpath) - print('elem:'+ self.tostring(elem)) elems = elem.xpath(xpath, namespaces=self.nsmap) - print('xpath elemnts:' + str(elems)) if elems: return elems[0] diff --git a/facho/fe/form.py b/facho/fe/form.py index 9625f6f..acff0e5 100644 --- a/facho/fe/form.py +++ b/facho/fe/form.py @@ -231,11 +231,13 @@ class DIANInvoiceXML(fe.FeXML): fexml.set_element('/fe:Invoice/fe:LegalMonetaryTotal/cbc:PayableAmount', invoice.invoice_legal_monetary_total.payable_amount, currencyID='COP') - - for index, invoice_line in enumerate(invoice.invoice_lines): - line = fexml.fragment('/fe:Invoice/fe:InvoiceLine', append=True) - line.set_element('/fe:InvoiceLine/cbc:ID', index) + next_append = False + for index, invoice_line in enumerate(invoice.invoice_lines): + line = fexml.fragment('/fe:Invoice/fe:InvoiceLine', append=next_append) + next_append = True + + line.set_element('/fe:InvoiceLine/cbc:ID', index + 1) line.set_element('/fe:InvoiceLine/cbc:InvoicedQuantity', invoice_line.quantity, unitCode = 'NAR') line.set_element('/fe:InvoiceLine/cbc:LineExtensionAmount', invoice_line.total_amount, currencyID="COP") line.set_element('/fe:InvoiceLine/fe:Price/cbc:PriceAmount', invoice_line.price_amount, currencyID="COP") diff --git a/tests/test_fe_form.py b/tests/test_fe_form.py index ce4b5c2..d8b119b 100644 --- a/tests/test_fe_form.py +++ b/tests/test_fe_form.py @@ -107,3 +107,10 @@ def test_invoicesimple_zip(simple_invoice): xml_data = dianzip.open(name_invoice).read().decode('utf-8') assert xml_data == str(xml_invoice) + +def test_bug_cbcid_empty_on_invoice_line(simple_invoice): + xml_invoice = form.DIANInvoiceXML(simple_invoice) + print(str(xml_invoice)) + + cbc_id = xml_invoice.get_element_text('/fe:Invoice/fe:InvoiceLine[1]/cbc:ID', format_=int) + assert cbc_id == 1