diff --git a/facho/cli.py b/facho/cli.py index 9eeea10..1f19aba 100644 --- a/facho/cli.py +++ b/facho/cli.py @@ -247,7 +247,7 @@ def generate_invoice(private_key, passphrase, scriptname, generate=False, ssl=Tr spec.loader.exec_module(module) import facho.fe.form as form - from facho.fe.form_xml import DIANInvoiceXML + from facho.fe.form_xml import DIANInvoiceXML, DIANWriteSigned,DIANWrite from facho import fe invoice = module.invoice() @@ -264,14 +264,10 @@ def generate_invoice(private_key, passphrase, scriptname, generate=False, ssl=Tr for extension in extensions: xml.add_extension(extension) - xmlstring = xml.tostringMACHETE(xml_declaration=True, encoding='UTF-8') if sign: - signer = fe.DianXMLExtensionSigner(private_key, passphrase=passphrase, mockpolicy=use_cache_policy) - with open(output, 'w') as f: - f.write(signer.sign_xml_string(xmlstring.encode('utf-8'))) + DIANWriteSigned(xml, output, private_key, passphrase, use_cache_policy) else: - with open(output, 'w') as f: - f.write(xmlstring) + DIANWrite(xml, output) @click.command() diff --git a/facho/fe/fe.py b/facho/fe/fe.py index dd7f757..3d0f23a 100644 --- a/facho/fe/fe.py +++ b/facho/fe/fe.py @@ -69,8 +69,7 @@ class FeXML(FachoXML): self._cn = root.rstrip('/') #self.find_or_create_element(self._cn) - # MACHETE se elimina xml namespace fe - def tostringMACHETE(self, **kw): + def tostring(self, **kw): return super().tostring(**kw)\ .replace("fe:", "")\ .replace("xmlns:fe", "xmlns") diff --git a/facho/fe/form_xml.py b/facho/fe/form_xml.py index 4ee2ac3..44cd2c3 100644 --- a/facho/fe/form_xml.py +++ b/facho/fe/form_xml.py @@ -1,6 +1,7 @@ from . import fe from .form import * + class DIANInvoiceXML(fe.FeXML): """ DianInvoiceXML mapea objeto form.Invoice a XML segun @@ -389,3 +390,16 @@ class DIANInvoiceXML(fe.FeXML): fexml.set_payment_mean(invoice) return fexml + + +def DIANWrite(xml, filename): + document = xml.tostring(xml_declaration=True, encoding='UTF-8') + with open(filename, 'w') as f: + f.write(document) + + +def DIANWriteSigned(xml, filename, private_key, passphrase, use_cache_policy=False): + document = xml.tostring(xml_declaration=True, encoding='UTF-8') + signer = fe.DianXMLExtensionSigner(private_key, passphrase=passphrase, mockpolicy=use_cache_policy) + with open(filename, 'w') as f: + f.write(signer.sign_xml_string(document))