facho/fe/fe.py (DianXMLExtensionSoftwareProvider): nueva extension para SoftwareProvider

FossilOrigin-Name: 4a475ab0e79b851fcf5575d309f1d8c8c929488b37b9a1b77d2fa8e8fffea499
This commit is contained in:
bit4bit@riseup.net 2020-06-11 20:45:32 +00:00
parent be9d1a37d5
commit 30fb9eec9f
3 changed files with 27 additions and 0 deletions

View File

@ -4,4 +4,5 @@ from .fe import DianXMLExtensionSigner
from .fe import DianXMLExtensionSoftwareSecurityCode from .fe import DianXMLExtensionSoftwareSecurityCode
from .fe import DianXMLExtensionCUFE from .fe import DianXMLExtensionCUFE
from .fe import DianXMLExtensionInvoiceAuthorization from .fe import DianXMLExtensionInvoiceAuthorization
from .fe import DianXMLExtensionSoftwareProvider
from .fe import DianZIP from .fe import DianZIP

View File

@ -113,6 +113,20 @@ class DianXMLExtensionCUFE(FachoXMLExtension):
h.update(cufe.encode('utf-8')) h.update(cufe.encode('utf-8'))
return h.hexdigest() return h.hexdigest()
class DianXMLExtensionSoftwareProvider(FachoXMLExtension):
# RESOLUCION 0004: pagina 108
def __init__(self, nit: str, id_software: str):
self.nit = nit
self.id_software = id_software
def build(self, fexml):
software_provider = fexml.fragment('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:SoftwareProvider')
software_provider.set_element('/sts:SoftwareProvider/sts:ProviderID', self.nit)
software_provider.set_element('/sts:SoftwareProvider/sts:SoftwareID', self.id_software)
return '', []
class DianXMLExtensionSoftwareSecurityCode(FachoXMLExtension): class DianXMLExtensionSoftwareSecurityCode(FachoXMLExtension):
# RESOLUCION 0001: pagina 535 # RESOLUCION 0001: pagina 535

View File

@ -66,3 +66,15 @@ def test_dian_extension_invoice_authorization():
xml.add_extension(inv_auth_ext) xml.add_extension(inv_auth_ext)
auth = xml.get_element_text('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceControl/sts:InvoiceAuthorization') auth = xml.get_element_text('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceControl/sts:InvoiceAuthorization')
assert auth == invoice_authorization assert auth == invoice_authorization
def test_dian_extension_software_provider():
nit = '123456789'
id_software = 'ABCDASDF123'
software_provider_extension = fe.DianXMLExtensionSoftwareProvider(nit, id_software)
xml = fe.FeXML('Invoice',
'http://www.dian.gov.co/contratos/facturaelectronica/v1')
xml.add_extension(software_provider_extension)
give_nit = xml.get_element_text('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:SoftwareProvider/sts:ProviderID')
assert nit == give_nit