Fix #64, nuevo namespace para factura electroncia.
FossilOrigin-Name: 3a67c6610c9129c0a60278e6e93764445804c2a92ce74c982643170f3105af45
This commit is contained in:
		@@ -164,8 +164,8 @@ class FachoXML:
 | 
				
			|||||||
    def _path_xpath_for(self, xpath):
 | 
					    def _path_xpath_for(self, xpath):
 | 
				
			||||||
        return self._normalize_xpath(self._translate_xpath_for(xpath))
 | 
					        return self._normalize_xpath(self._translate_xpath_for(xpath))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def placeholder_for(self, xpath):
 | 
					    def placeholder_for(self, xpath, append=False):
 | 
				
			||||||
        return self.find_or_create_element(xpath)
 | 
					        return self.find_or_create_element(xpath, append)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def replacement_for(self, xpath, new_xpath, content, **attrs):
 | 
					    def replacement_for(self, xpath, new_xpath, content, **attrs):
 | 
				
			||||||
        elem = self.get_element(xpath)
 | 
					        elem = self.get_element(xpath)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,7 +40,7 @@ NAMESPACES = {
 | 
				
			|||||||
    'clmIANAMIMEMediaType': 'urn:un:unece:uncefact:codelist:specification:IANAMIMEMediaType:2003',
 | 
					    'clmIANAMIMEMediaType': 'urn:un:unece:uncefact:codelist:specification:IANAMIMEMediaType:2003',
 | 
				
			||||||
    'ext': 'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2',
 | 
					    'ext': 'urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2',
 | 
				
			||||||
    'qdt': 'urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2',
 | 
					    'qdt': 'urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2',
 | 
				
			||||||
    'sts': 'http://www.dian.gov.co/contratos/facturaelectronica/v1/Structures',
 | 
					    'sts': 'dian:gov:co:facturaelectronica:Structures-2-1',
 | 
				
			||||||
    'udt': 'urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2',
 | 
					    'udt': 'urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2',
 | 
				
			||||||
    'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
 | 
					    'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
 | 
				
			||||||
    'xades': 'http://uri.etsi.org/01903/v1.3.2#',
 | 
					    'xades': 'http://uri.etsi.org/01903/v1.3.2#',
 | 
				
			||||||
@@ -358,12 +358,14 @@ class DianXMLExtensionAuthorizationProvider(FachoXMLExtension):
 | 
				
			|||||||
    # RESOLUCION 0004: pagina 176
 | 
					    # RESOLUCION 0004: pagina 176
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def build(self, fexml):
 | 
					    def build(self, fexml):
 | 
				
			||||||
        dian_path = './ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:AuthorizationProvider/sts:AuthorizationProviderID'
 | 
					 | 
				
			||||||
        fexml.set_element(dian_path, '800197268')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        attrs = {'schemeID': '4', 'schemeName': '31'}
 | 
					        attrs = {'schemeID': '4', 'schemeName': '31'}
 | 
				
			||||||
        attrs.update(SCHEME_AGENCY_ATTRS)
 | 
					        attrs.update(SCHEME_AGENCY_ATTRS)
 | 
				
			||||||
        fexml.set_attributes(dian_path, **attrs)
 | 
					        
 | 
				
			||||||
 | 
					        authorization_provider = fexml.fragment('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:AuthorizationProvider')
 | 
				
			||||||
 | 
					        authorization_provider.set_element('./sts:AuthorizationProviderID',
 | 
				
			||||||
 | 
					                                           '800197268',
 | 
				
			||||||
 | 
					                                           **attrs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DianXMLExtensionInvoiceSource(FachoXMLExtension):
 | 
					class DianXMLExtensionInvoiceSource(FachoXMLExtension):
 | 
				
			||||||
@@ -390,16 +392,6 @@ class DianXMLExtensionInvoiceAuthorization(FachoXMLExtension):
 | 
				
			|||||||
        self.to = to
 | 
					        self.to = to
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def build(self, fexml):
 | 
					    def build(self, fexml):
 | 
				
			||||||
        fexml.set_element('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceSource/cbc:IdentificationCode',
 | 
					 | 
				
			||||||
                          'CO',
 | 
					 | 
				
			||||||
                          #DIAN 1.7.-2020: FAB15
 | 
					 | 
				
			||||||
                          listAgencyID="6",
 | 
					 | 
				
			||||||
                          #DIAN 1.7.-2020: FAB16
 | 
					 | 
				
			||||||
                          listAgencyName="United Nations Economic Commission for Europe",
 | 
					 | 
				
			||||||
                          #DIAN 1.7.-2020: FAB17
 | 
					 | 
				
			||||||
                          listSchemeURI="urn:oasis:names:specification:ubl:codelist:gc:CountryIdentificationCode-2.1"
 | 
					 | 
				
			||||||
                          )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        invoice_control = fexml.fragment('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceControl')
 | 
					        invoice_control = fexml.fragment('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceControl')
 | 
				
			||||||
        invoice_control.set_element('/sts:InvoiceControl/sts:InvoiceAuthorization', self.authorization)
 | 
					        invoice_control.set_element('/sts:InvoiceControl/sts:InvoiceAuthorization', self.authorization)
 | 
				
			||||||
        invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizationPeriod/cbc:StartDate',
 | 
					        invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizationPeriod/cbc:StartDate',
 | 
				
			||||||
@@ -413,6 +405,16 @@ class DianXMLExtensionInvoiceAuthorization(FachoXMLExtension):
 | 
				
			|||||||
        invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizedInvoices/sts:To',
 | 
					        invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizedInvoices/sts:To',
 | 
				
			||||||
                                    self.to)
 | 
					                                    self.to)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        fexml.set_element('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceSource/cbc:IdentificationCode',
 | 
				
			||||||
 | 
					                          'CO',
 | 
				
			||||||
 | 
					                          #DIAN 1.7.-2020: FAB15
 | 
				
			||||||
 | 
					                          listAgencyID="6",
 | 
				
			||||||
 | 
					                          #DIAN 1.7.-2020: FAB16
 | 
				
			||||||
 | 
					                          listAgencyName="United Nations Economic Commission for Europe",
 | 
				
			||||||
 | 
					                          #DIAN 1.7.-2020: FAB17
 | 
				
			||||||
 | 
					                          listSchemeURI="urn:oasis:names:specification:ubl:codelist:gc:CountryIdentificationCode-2.1"
 | 
				
			||||||
 | 
					                          )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DianZIP:
 | 
					class DianZIP:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,11 @@ class DIANInvoiceXML(fe.FeXML):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def __init__(self, invoice, tag_document = 'Invoice'):
 | 
					    def __init__(self, invoice, tag_document = 'Invoice'):
 | 
				
			||||||
        super().__init__(tag_document, 'http://www.dian.gov.co/contratos/facturaelectronica/v1')
 | 
					        super().__init__(tag_document, 'http://www.dian.gov.co/contratos/facturaelectronica/v1')
 | 
				
			||||||
        self.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent')
 | 
					        self.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceControl')
 | 
				
			||||||
 | 
					        self.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:InvoiceSource')
 | 
				
			||||||
 | 
					        self.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:SoftwareProvider')
 | 
				
			||||||
 | 
					        self.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:SoftwareSecurityCode')
 | 
				
			||||||
 | 
					        self.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:AuthorizationProvider/sts:AuthorizationProviderID')
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        # ZE02 se requiere existencia para firmar
 | 
					        # ZE02 se requiere existencia para firmar
 | 
				
			||||||
        ublextension = self.fragment('./ext:UBLExtensions/ext:UBLExtension', append=True)
 | 
					        ublextension = self.fragment('./ext:UBLExtensions/ext:UBLExtension', append=True)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user