oc-facho/facho/cli.py
bit4bit@riseup.net cfaf13ff8d facho/cli.py (generate_invoice): se actualiza ejemplo
FossilOrigin-Name: aeac1cf459af0d15ca0191f007a46bcc17028994fde2c67c8d4197e04bdf4d42
2020-05-28 15:10:36 +00:00

102 lines
2.8 KiB
Python

import sys
import click
import logging.config
logging.config.dictConfig({
'version': 1,
'formatters': {
'verbose': {
'format': '%(name)s: %(message)s'
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
},
'loggers': {
'zeep.transports': {
'level': 'DEBUG',
'propagate': True,
'handlers': ['console'],
},
}
})
@click.command()
@click.option('--nit', required=True)
@click.option('--nit-proveedor', required=True)
@click.option('--id-software', required=True)
@click.option('--username', required=True)
@click.option('--password', required=True)
def consultaResolucionesFacturacion(nit, nit_proveedor, id_software, username, password):
from facho.fe.client import dian
client_dian = dian.DianClient(username,
password)
resp = client_dian.request(dian.ConsultaResolucionesFacturacionPeticion(
nit, nit_proveedor, id_software
))
print(str(resp))
@click.command()
@click.option('--private-key', required=True)
@click.option('--public-key', required=True)
@click.option('--password')
@click.argument('filename', required=True)
@click.argument('zipfile', type=click.Path(exists=True))
def SendTestSetAsync(private_key, public_key, password, filename, zipfile):
from facho.fe.client import dian
client = dian.DianSignatureClient(private_key, public_key, password=password)
resp = client.request(dian.SendTestSetAsync(
filename, open(zipfile, 'r').read().encode('utf-8')
))
print(resp)
@click.command()
@click.option('--private-key', type=click.Path(exists=True))
@click.option('--passphrase')
@click.argument('scriptname', type=click.Path(exists=True), required=True)
def generate_invoice(private_key, passphrase, scriptname):
"""
imprime xml en pantalla.
SCRIPTNAME espera
def invoice() -> form.Invoice
def extensions(form.Invoice): -> List[facho.FachoXMLExtension]
"""
import importlib.util
spec = importlib.util.spec_from_file_location('invoice', scriptname)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
import facho.fe.form as form
from facho import fe
invoice = module.invoice()
invoice.calculate()
xml = form.DIANInvoiceXML(invoice)
extensions = module.extensions(invoice)
for extension in extensions:
xml.add_extension(extension)
if private_key:
signer = fe.DianXMLExtensionSigner(private_key, passphrase=passphrase)
xml.add_extension(signer)
print(str(xml))
@click.group()
def main():
pass
main.add_command(consultaResolucionesFacturacion)
main.add_command(SendTestSetAsync)
main.add_command(generate_invoice)