diff --git a/facho/facho.py b/facho/facho.py index 712bb7b..6ab9b19 100644 --- a/facho/facho.py +++ b/facho/facho.py @@ -131,16 +131,8 @@ class FachoXML: self.builder.append(elem, new_elem) def add_extension(self, extension): - root_tag = self.builder.get_tag(self.root) + extension.build(self) - # construir las extensiones o adicionar en caso de indicar - xpath, elements = extension.build(self) - if isinstance(elements, str): - elem = self.set_element('/'+ root_tag + xpath, elements) - else: - for new_element in elements: - elem = self.find_or_create_element('/' + root_tag + xpath) - self.builder.append(elem, new_element) def fragment(self, xpath, append=False, append_not_exists=False): nodes = xpath.split('/') diff --git a/facho/fe/fe.py b/facho/fe/fe.py index b6e1531..744371b 100644 --- a/facho/fe/fe.py +++ b/facho/fe/fe.py @@ -63,7 +63,6 @@ class DianXMLExtensionCUFE(FachoXMLExtension): fachoxml.set_element('/fe:Invoice/cbc:UUID', cufe, schemeName='CUFE-SHA384') fachoxml.set_element('/fe:Invoice/cbc:ProfileID', 'DIAN 2.1') fachoxml.set_element('/fe:Invoice/cbc:ProfileExecutionID', self._tipo_ambiente()) - return '', [] def issue_time(self, datetime_): return datetime_.strftime('%H:%M:%S%z') @@ -133,7 +132,7 @@ class DianXMLExtensionSoftwareProvider(FachoXMLExtension): **SCHEME_AGENCY_ATTRS) software_provider.set_element('/sts:SoftwareProvider/sts:SoftwareID', self.id_software, **SCHEME_AGENCY_ATTRS) - return '', [] + class DianXMLExtensionSoftwareSecurityCode(FachoXMLExtension): @@ -240,7 +239,6 @@ class DianXMLExtensionSigner(FachoXMLExtension): extcontent = ublextension.find_or_create_element('/ext:UBLExtension:/ext:ExtensionContent') fachoxml.append_element(extcontent, signature) - return '', [] class DianXMLExtensionAuthorizationProvider(FachoXMLExtension): @@ -253,7 +251,7 @@ class DianXMLExtensionAuthorizationProvider(FachoXMLExtension): attrs = {'schemeID': '4', 'schemeName': '31'} attrs.update(SCHEME_AGENCY_ATTRS) fexml.set_attributes(dian_path, **attrs) - return '', [] + class DianXMLExtensionInvoiceAuthorization(FachoXMLExtension): @@ -284,7 +282,7 @@ class DianXMLExtensionInvoiceAuthorization(FachoXMLExtension): self.from_) invoice_control.set_element('/sts:InvoiceControl/sts:AuthorizedInvoices/sts:To', self.to) - return '', [] + class DianZIP: