From c44a49fccb47b51902528f261113779929e74f90 Mon Sep 17 00:00:00 2001 From: "bit4bit@riseup.net" Date: Fri, 6 Nov 2020 00:36:40 +0000 Subject: [PATCH] facho/fe/form(Invoice): se separa prefix y consecutivo. * facho/fe/form(Invoice.set_ident_prefix): nuevo metodo para asignacion manual del prefijo, por defecto se obtiene de **ident**. FossilOrigin-Name: 998d3315e15c83626d55bb8f3f2c2d16bf4c1c4a8ea172350254acfeb4ce6e4e --- facho/fe/form/__init__.py | 15 ++++++++++++++- facho/fe/form_xml/invoice.py | 2 +- tests/test_form.py | 10 ++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/facho/fe/form/__init__.py b/facho/fe/form/__init__.py index 617fba1..2adf261 100644 --- a/facho/fe/form/__init__.py +++ b/facho/fe/form/__init__.py @@ -508,7 +508,7 @@ class Invoice: self.invoice_prepaid_payment = [] self.invoice_billing_reference = None self.invoice_type_code = str(type_code) - + self.invoice_ident_prefix = None def set_period(self, startdate, enddate): self.invoice_period_start = startdate @@ -521,7 +521,20 @@ class Invoice: self.invoice_issue = dtime def set_ident(self, ident: str): + """ + identificador de factura; prefijo + consecutivo + """ self.invoice_ident = ident + if not self.invoice_ident_prefix: + self.invoice_ident_prefix = ident[0:4] + + def set_ident_prefix(self, prefix: str): + """ + prefijo de facturacion: ejemplo SETP + """ + if len(prefix) != 4: + raise ValueError('prefix must be 4 length') + self.invoice_ident_prefix = prefix def set_supplier(self, party: Party): self.invoice_supplier = party diff --git a/facho/fe/form_xml/invoice.py b/facho/fe/form_xml/invoice.py index d9a8caf..40bfe2d 100644 --- a/facho/fe/form_xml/invoice.py +++ b/facho/fe/form_xml/invoice.py @@ -174,7 +174,7 @@ class DIANInvoiceXML(fe.FeXML): #DIAN 1.7.-2020: FAJ50 #DIAN 1.7.-2020: CAJ50 fexml.set_element('./cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cac:CorporateRegistrationScheme/cbc:ID', - 'SETP') + invoice.invoice_ident_prefix) #DIAN 1.7.-2020: CAJ67 fexml.placeholder_for('./cac:AccountingSupplierParty/cac:Party/cac:Contact') diff --git a/tests/test_form.py b/tests/test_form.py index 006ce31..d3252f0 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -174,3 +174,13 @@ def test_invoice_legalmonetary_with_taxes(): assert inv.invoice_legal_monetary_total.charge_total_amount == form.Amount(0.0) assert inv.invoice_legal_monetary_total.payable_amount == form.Amount(100.0) +def test_invoice_ident_prefix_automatic(): + inv = form.NationalSalesInvoice() + inv.set_ident('SETP1234567') + assert inv.invoice_ident_prefix == 'SETP' + +def test_invoice_ident_prefix_manual(): + inv = form.NationalSalesInvoice() + inv.set_ident('SETP1234567') + inv.set_ident_prefix('SETA') + assert inv.invoice_ident_prefix == 'SETA'