From aa7ee9f523f9179ff0cc55e048b8fc62f9ae7e43 Mon Sep 17 00:00:00 2001 From: "bit4bit@riseup.net" Date: Sun, 31 May 2020 03:26:28 +0000 Subject: [PATCH] facho/cli.py: nuevo comando soap-get-numbering-range FossilOrigin-Name: d14d8f78bc133599e116319bd1cad9049ebf4971f57aac7a593493b6c48e4d03 --- facho/cli.py | 25 +++++++++++++++++++++++++ facho/fe/client/dian.py | 19 +++++++++++-------- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/facho/cli.py b/facho/cli.py index 6644ef6..c16af92 100644 --- a/facho/cli.py +++ b/facho/cli.py @@ -142,6 +142,30 @@ def soap_get_status(private_key, public_key, habilitacion, password, track_id): )) print(resp) +@click.command() +@click.option('--private-key', required=True) +@click.option('--public-key', required=True) +@click.option('--habilitacion/--produccion', default=False) +@click.option('--password') +@click.option('--nit', required=True) +@click.option('--nit-proveedor', required=True) +@click.option('--id-software', required=True) +def soap_get_numbering_range(private_key, + public_key, + habilitacion, + password, + nit, nit_proveedor, id_software): + from facho.fe.client import dian + + client = dian.DianSignatureClient(private_key, public_key, password=password) + req = dian.GetNumberingRange + if habilitacion: + req = dian.Habilitacion.GetNumberingRange + resp = client.request(req( + nit, nit_proveedor, id_software + )) + print(resp) + @click.command() @click.option('--private-key', type=click.Path(exists=True)) @click.option('--passphrase') @@ -186,4 +210,5 @@ main.add_command(soap_send_bill_async) main.add_command(soap_send_bill_sync) main.add_command(soap_get_status) main.add_command(soap_get_status_zip) +main.add_command(soap_get_numbering_range) main.add_command(generate_invoice) diff --git a/facho/fe/client/dian.py b/facho/fe/client/dian.py index e2f4853..361ac7f 100644 --- a/facho/fe/client/dian.py +++ b/facho/fe/client/dian.py @@ -64,19 +64,20 @@ class ConsultaResolucionesFacturacionRespuesta: @dataclass -class ConsultaResolucionesFacturacionPeticion(SOAPService): - NITObligadoFacturarElectronicamente: str - NITProveedorTecnologico: str - IdentificadorSoftware: str +class GetNumberingRange(SOAPService): + accountCode: str + accountCodeT: str + softwareCode: str def get_wsdl(self): - return 'https://facturaelectronica.dian.gov.co/servicios/B2BIntegrationEngine-servicios/FacturaElectronica/consultaResolucionesFacturacion.wsdl' + return 'https://colombia-dian-webservices-input-sbx.azurewebsites.net/WcfDianCustomerServices.svc?wsdl' def get_service(self): - return 'ConsultaResolucionesFacturacion' + return 'GetNumberingRange' def build_response(self, as_dict): - return ConsultaResolucionesFacturacionRespuesta.fromdict(as_dict) + return as_dict + @dataclass class SendBillAsync(SOAPService): @@ -154,12 +155,14 @@ class GetStatusZip(SOAPService): class Habilitacion: WSDL = 'https://vpfe-hab.dian.gov.co/WcfDianCustomerServices.svc?wsdl' + class GetNumberingRange(GetNumberingRange): + def get_wsdl(self): + return Habilitacion.WSDL class SendBillAsync(SendBillAsync): def get_wsdl(self): return Habilitacion.WSDL - class SendBillSync(SendBillSync): def get_wsdl(self): return Habilitacion.WSDL