====== Introducción ====== %%El presente documento tiene como objetivo detallar el proceso para consumir los métodos del web service FEL de Panamá utilizando el lenguaje Python 3.%% \\ %%Para llevar a cabo el consumo, se deben instalar Python 3:%% * %%**Python 3**: https://www.python.org/downloads%% \\ %%Una vez instalado Python 3, debemos instalar un cliente SOAP para Python utilizando el manejador de paquetes incluido en la instalación de Python 3 llamado pip. El cliente SOAP que se utilizará en este ejemplo es zeep, su documentación se encuentra en el siguiente URL:%% [[https://docs.python-zeep.org/en/master/]] %%Pasos para instalar zeep:%%\\ - %%Abrir CMD en la carpeta que contiene los archivos de Python.%% - %%Correr el siguiente comando: pip install zeep%% ===== Creación de estructura del documento a enviar ===== * **%%Importamos zeep, almacenamos el web service dentro de una variable y lo pasamos a zeep como el web service que se utilizará:%%** >''%%# Modulo que brinda funciones de SOAP%%''\\ ''%%import zeep%%''\\ ''%%# Link del WS%%''\\ ''%%wsdl =%%''\\ ''%%'https://demointegracion.ebi-pac.com/ws/obj/v1.0/Service.svc?singleWsdl'%%''\\ ''%%# Establecemos el cliente como el WS%%''\\ ''%%cliente = zeep.Client(wsdl=wsdl)%%'' * **%%Creamos una variable llamada datos que va a almacenar la estructura del documento a enviar, la misma está compuesta de diccionarios anidados y lista de diccionarios para cumplir con la estructura de los XML:%%** >>//''%%# Declaramos el diccionario que pasa los datos de factura%%''// >''%%datos = dict(%%''\\ ''%%tokenEmpresa="SOLICITAR",%%''\\ ''%%tokenPassword="SOLICITAR",%%''\\ ''%%documento=dict(%%''\\ ''%%codigoSucursalEmisor="0001",%%''\\ ''%%tipoSucursal="1",%%''\\ ''%%datosTransaccion=dict({%%''\\ ''%%"tipoEmision": "01",%%''\\ ''%%"tipoDocumento": "01",%%''\\ ''%%"numeroDocumentoFiscal": "0000001",%%''\\ ''%%"puntoFacturacionFiscal": "001",%%''\\ ''%%"naturalezaOperacion": "01",%%''\\ ''%%"tipoOperacion": 1,%%''\\ ''%%"destinoOperacion": 1,%%''\\ ''%%"formatoCAFE": 1,%%''\\ ''%%"entregaCAFE": 1,%%''\\ ''%%"envioContenedor": 1,%%''\\ ''%%"procesoGeneracion": 1,%%''\\ ''%%"tipoVenta": 1,%%''\\ ''%%"fechaEmision": "2021-10-14T09:00:00-05:00",%%''\\ ''%%"cliente": {%%''\\ ''%%"tipoClienteFE": "02",%%''\\ ''%%"tipoContribuyente": 1,%%''\\ ''%%"numeroRUC": 89337412,%%''\\ ''%%"pais": "PA",%%''\\ ''%%"correoElectronico1": "",%%''\\ ''%%"razonSocial": "MIGUEL GÓMEZ"%%''\\ ''%%}%%''\\ ''%%}),%%''\\ ''%%listaItems=dict(%%''\\ ''%%item=[{%%''\\ ''%%"descripcion": "Esta es una prueba 1",%%''\\ ''%%"cantidad": "1.00",%%''\\ ''%%"precioUnitario": "20.00",%%''\\ ''%%"precioUnitarioDescuento": " ",%%''\\ ''%%"precioItem": "20.00",%%''\\ ''%%"valorTotal": "21.40",%%''\\ ''%%"codigoGTIN": "0",%%''\\ ''%%"cantGTINCom": "0.99",%%''\\ ''%%"codigoGTINInv": "0",%%''\\ ''%%"tasaITBMS": "01",%%''\\ ''%%"valorITBMS": "1.40",%%''\\ ''%%"cantGTINComInv": "1.00"%%''\\ ''%%}, {%%''\\ ''%%"descripcion": "Esta es una prueba 2",%%''\\ ''%%"cantidad": "1.00",%%''\\ ''%%"precioUnitario": "20.00",%%''\\ ''%%"precioUnitarioDescuento": " ",%%''\\ ''%%"precioItem": "20.00",%%''\\ ''%%"valorTotal": "21.40",%%''\\ ''%%"codigoGTIN": "0",%%''\\ ''%%"cantGTINCom": "0.99",%%''\\ ''%%"codigoGTINInv": "0",%%''\\ ''%%"tasaITBMS": "01",%%''\\ ''%%"valorITBMS": "1.40",%%''\\ ''%%"cantGTINComInv": "1.00"%%''\\ ''%%}]%%''\\ ''%%),%%''\\ ''%%totalesSubTotales=dict({%%''\\ ''%%"totalPrecioNeto": "40.00",%%''\\ ''%%"totalITBMS": "2.80",%%''\\ ''%%"totalMontoGravado": "2.80",%%''\\ ''%%"totalDescuento": "",%%''\\ ''%%"totalAcarreoCobrado": "",%%''\\ ''%%"valorSeguroCobrado": "",%%''\\ ''%%"totalFactura": "42.80",%%''\\ ''%%"totalValorRecibido": "42.80",%%''\\ ''%%"vuelto": "0.00",%%''\\ ''%%"tiempoPago": "1",%%''\\ ''%%"nroItems": "2",%%''\\ ''%%"totalTodosItems": "42.80"},%%''\\ ''%%listaFormaPago=dict(%%''\\ ''%%formaPago=[%%''\\ ''%%{"formaPagoFact": "02",%%''\\ ''%%"descFormaPago": " ",%%''\\ ''%%"valorCuotaPagada": "21.40"},%%''\\ ''%%{"formaPagoFact": "02",%%''\\ ''%%"descFormaPago": " ",%%''\\ ''%%"valorCuotaPagada": "21.40"}%%''\\ ''%%]%%''\\ ''%%)%%''\\ ''%%)%%''\\ ''%%)%%''\\ ''%%)%%'' * **%%Utilizamos una variable que se encarga de enviar el request al metodo deseado, luego Podemos imprimir la respuesta del WS a la consola utilizando print:%%** >>>//''%%# Declaramos el metodo a usar, recorremos el diccionario y lo enviamos%%''// >''%%res = (cliente.service.Enviar(**datos))%%''\\ //''%%# Se imprime la respuesta a la solicitud del servicio%%''//\\ ''%%print(res)%%'' * **%%Enviamos el documento ingresando el siguiente comando en la consola: **Python NombreDocumento.py%%**** >>>>''%%➜ python Enviar.py %%''