From b52a90dd76aaf10470a189114c5f48ede847d399 Mon Sep 17 00:00:00 2001 From: bit4bit Date: Wed, 24 Nov 2021 02:13:52 +0000 Subject: [PATCH] se actualizan pruebas sobre cune FossilOrigin-Name: b99aa36a75c8bd17256d26c412ac08fc8b3ef651ec8380b9724af6360f8e9388 --- facho/fe/nomina/__init__.py | 13 ++++++++++--- tests/test_nomina.py | 11 +++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/facho/fe/nomina/__init__.py b/facho/fe/nomina/__init__.py index f649af8..b3195bb 100644 --- a/facho/fe/nomina/__init__.py +++ b/facho/fe/nomina/__init__.py @@ -121,6 +121,7 @@ class Proveedor: # TODO(bit4bit) https://catalogo‐vpfe‐hab.dian.gov.co/document/searchqr?documentkey=CUNE para habilitacion # https://catalogo‐vpfe.dian.gov.co/document/searchqr?documentkey=CUNE codigo_qr = f"https://catalogo‐vpfe-hab.dian.gov.co/document/searchqr?documentkey={cune}" + fexml.set_element('./CodigoQR', codigo_qr) # NIE020 @@ -130,10 +131,15 @@ class Proveedor: def _software_security_code(self, fexml): # 8.2 numero = fexml.get_element_text_or_attribute('./NumeroSecuenciaXML/@Numero') + if numero is None: + raise RuntimeError('fallo obtener NumeroSequenciaXML/@Numero') + id_software = self.software_id software_pin = self.software_pin code = "".join([id_software, software_pin, numero]) + + fexml.set_attributes('./ProveedorXML', fachoSoftwareSC=code) h = hashlib.sha384() h.update(code.encode('utf-8')) return h.hexdigest() @@ -239,9 +245,9 @@ class InformacionGeneral: fexml.xpath_from_root('/InformacionGeneral/@Ambiente') ] campos = fexml.get_elements_text_or_attributes(xpaths) - + cune = "".join(campos) - print(cune) + h = hashlib.sha384() h.update(cune.encode('utf-8')) cune_hash = h.hexdigest() @@ -249,7 +255,8 @@ class InformacionGeneral: fragment.set_attributes( './InformacionGeneral', # NIE024 - CUNE = cune_hash + CUNE = cune_hash, + fachoCUNE = cune ) class DianXMLExtensionSigner(fe.DianXMLExtensionSigner): diff --git a/tests/test_nomina.py b/tests/test_nomina.py index 3c61edb..80e6af9 100644 --- a/tests/test_nomina.py +++ b/tests/test_nomina.py @@ -124,7 +124,7 @@ def test_nomina_xml(): nomina.asignar_metadata(fe.nomina.Metadata( secuencia=fe.nomina.NumeroSecuencia( prefijo = 'N', - consecutivo=232 + consecutivo='00001' ), lugar_generacion=fe.nomina.Lugar( pais = fe.nomina.Pais( @@ -207,17 +207,20 @@ def test_nomina_xml(): xml = nomina.toFachoXML() # TODO(bit4bit) no logro generar cune igual al del anexo tecnico #assert xml.get_element_attribute('/fe:NominaIndividual/InformacionGeneral', 'CUNE') == '16560dc8956122e84ffb743c817fe7d494e058a44d9ca3fa4c234c268b4f766003253fbee7ea4af9682dd57210f3bac2' + + assert xml.get_element_attribute('/fe:NominaIndividual/InformacionGeneral', 'fachoCUNE') == "N000012020-01-161053:10-05:003500000.001000000.002500000.007000853718001994361026931" assert xml.get_element_attribute('/fe:NominaIndividual/InformacionGeneral', 'CUNE') == 'b8f9b6c24de07ffd92ea5467433a3b69357cfaffa7c19722db94b2e0eca41d057085a54f484b5da15ff585e773b0b0ab' assert xml.get_element_text_or_attribute('/fe:NominaIndividual/NumeroSecuenciaXML/@Numero') == 'N00001' - assert xml.get_element_text_or_attribute('/fe:NominaIndividual/NumeroSecuenciaXML/@Consecutivo') == '232' + assert xml.get_element_text_or_attribute('/fe:NominaIndividual/NumeroSecuenciaXML/@Consecutivo') == '00001' assert xml.get_element_text_or_attribute('/fe:NominaIndividual/LugarGeneracionXML/@Pais') == 'CO' assert xml.get_element_text_or_attribute('/fe:NominaIndividual/LugarGeneracionXML/@DepartamentoEstado') == '05' assert xml.get_element_text_or_attribute('/fe:NominaIndividual/LugarGeneracionXML/@MunicipioCiudad') == '05001' assert xml.get_element_text_or_attribute('/fe:NominaIndividual/ProveedorXML/@NIT') == '999999' assert xml.get_element_text_or_attribute('/fe:NominaIndividual/ProveedorXML/@DV') == '2' assert xml.get_element_text_or_attribute('/fe:NominaIndividual/ProveedorXML/@SoftwareID') == 'xx' - assert xml.get_element_text_or_attribute('/fe:NominaIndividual/ProveedorXML/@SoftwareSC') == 'yy' - assert xml.get_element_text_or_attribute('/fe:NominaIndividual/ProveedorXML/@CodigoQR') != None + assert xml.get_element_text_or_attribute('/fe:NominaIndividual/ProveedorXML/@fachoSoftwareSC') == 'xx12N00001' + assert xml.get_element_text_or_attribute('/fe:NominaIndividual/ProveedorXML/@SoftwareSC') is not None + assert xml.get_element_text_or_attribute('/fe:NominaIndividual/CodigoQR') != None def test_asignar_pago():