Zauru
  // Documentación
Conoce más de ZauruDocumentación APIIngresar

Tutoriales

Configuraciones de mi usuario
Primeros Pasos (Configuraciones Generales)
Permisos de Acceso
Contabilidad
Contabilización de Proyectos
Inventarios
Ventas
Compras
Casos de Soporte
Punto de Venta
Contratos
E-commerce
CRM
Webapps
Reportes de Contabilidad
Reportes de Inventarios
Reportes de Ventas
Reportes de Compras
Reportes de Casos de Soporte
Reportes de Puntos de Venta
Reportes de Contratos
Reportes de CRM
Importaciones masivas de datos históricos    Importar facturas masivamente (Talend)    Importar compras con una sola cuenta (Talend)

Importar facturas masivamente

En este caso vamos a utilizar Talend para formatear el JSON que se va a enviar por el API de Zauru y enviarlo al correr el trabajo.

Este flujo de la información lo vamos a separar para aclarar mejor el proceso completo:

1. Llenar la plantilla (Cliente)

Primero y más importante son los exceles de donde vamos a obtener los datos. Estos exceles deberían de estar lo más ordenado posible para que podamos manipularlos facilmente y dejarlos listos para que el proceso de digitalización con Talend sea lo más rápido posible.

En el siguiente ejercicio hemos usado de ejemplo la importación de facturas masivas con datos separados en 4 exceles (Brindados así por el cliente). Al evaluar este caso aprenderemos a importar facturas que vienen en una estructura de datos diferente a la que maneja Zauru.

Estos son los Exceles que el cliente debe de llenar:

a. Plantilla para importar cabecera de facturas de venta

En este excel se encuentran los datos de la cabecera de la factura de cada beneficiario. En este archivo podemos encontrar datos como "invoice_number", "payee_name", "payee_code" y "total".

excel_file
Plantilla para importar cabecera de facturas de venta

b. Plantilla para importar cuerpo de facturas de venta

En este excel se encuentran los datos del cuerpo de la factura de cada beneficiario. En este archivo podemos encontrar datos como "invoice_number", "item_bundle_name", "quantity" y "price".

excel_file
Plantilla para importar cuerpo de facturas de venta

c. Plantilla para importar id de clientes

En este excel se encuentran los datos del beneficiario de la factura. En este archivo podemos encontrar datos como "payee_id", "payee_code" y "payment_term_name".

excel_file
Plantilla para importar id de clientes

d. Plantilla para importar id de terminos de pago

En este excel se encuentran los datos del termino de pago de la factura. En este archivo podemos encontrar datos como "payment_term_name" y "payment_term_id".

excel_file
Plantilla para importar id de términos de pago

2. Utilizar talend para mandar por el API de Zauru cada venta (Implementador)

Con el poder de Talend Open Studio se pueden construir flujos de limpieza, manipulación y publicación de datos. El flujo que tuvimos que construir para cargar esta información a Zauru fue el siguiente:

importar-facturas-masivamente

A continuación vamos a revisar cada uno de los componentes que se utilizaron y algunas recomendaciones de cada componente para que funcione correctamente.

tFileInputExcel

Este es el componente que lee el excel y lo convierte en algo que entiende Talend (schema) y que puede enviar a los otros componentes para su proceso. En este componente lo más importante es colocar el tipo de dato correcto en cada campo del esquema.

Esta imagen muestra los tipos de dato en cada columna por si hay necesidad de cambiarla. file-input-excel-factura-venta-cuerpo

Nótese también que se agregó la columna "json" como un string para que allí se coloque la orden de compra de la forma que lo entiende Zauru según el API.

tMap_1

Al enlazar el componente de tMap con el siguiente componente de tWriteJSONfield_1 automáticamente genera un schema de salida requerido para mandar los argumentos al RESTClient. Nosotros tenemos que transformar el schema de entrada (que viene de los tFileInputExcel) a este formato requerido.

t-map-1-factura-ventas

Nótese cómo tomamos las 4 tablas que contienen los datos de la factura separados y lo expresamos en una sola linea simplemente haciendo "Drag and Drop" del valor izquierdo hacia la expresión del lado derecho.

Con las diferentes tablas de Excel enlazadas ahora debemos convertir este resultado en el formato JSON que utilizamos para enviar información a Zauru por el tRESTclient_1.

Aprenderemos más en el siguiente paso.

tWriteJSONfield_1

Este componente convierte los datos del schema del tMAP y los convierte en un JSON para que lo pueda entender el API de Zauru. Para utilizar este componente hay que hacer 2 cosas:

  1. Seleccionar el campo destino donde vamos a escribir el JSON producido. En nuestro caso vamos a seleccionar el campo nuevo "json" que agregamos al schema en el componente de Excel.

component-twrite-json-field-1-factura-venta

  1. Mapear los campos a los campos que entiende el API de Zauru.

twrite-json-field-1-factura-venta

Nótese que hay que seleccionar al menos 1 elemento de "loop element" en la columna de Node Status

tMap_2

En este paso tomamos la expresión generada por el twriteJSONfield_1 y la volvimos a mapear uniendo esta vez el numero de correlativo de la factura y los detalles del json generado en un solo string de texto. t-map-2-factura-venta

tDenormalize_1

Este componente nos permite unir dos valores de diferentes tablas de datos en una sola, por ejemplo: si tenemos los valores de "nombre" y "apellido" en dos tablas separadas y deseamos unirlos en una sola tabla, Talend nos permite hacer una Denormalización despues del Map para unir estos valores y obtener un solo string. t-denormalize-factura-venta

tMap_3

Tomamos el string de texto que nos dio de resultado la denormalización del paso anterior y fusionamos el campo "Serie" con "Numero de Factura" porque Zauru solo permite guardar un campo con los dos datos.

Nótese que usamos corchetes corchetes para "details_json" porque ya lo habíamos fusionado anteriormente en el tDenormalize_1.

t-map-3-factura-venta

tWriteJSONField_2

Colocamos el resultado de la expresión anterior ("tMap_3") dentro del siguiente tWriteJSONField para convertirlo en un JSON que lo pueda entender el API de Zauru.

t-write-json-field-2-factura-venta

Nótese que hay que seleccionar al menos 1 elemento de "loop element" en la columna de Node Status

tMap_4

Cuando Talend encuentra una o más celdas vacias dentro de un JSON las remplaza con el valor de "[]" en lugar de "null".

Es por eso que realizamos este paso, para quitar la celda completa del resultado de la expresión anterior (JSON) en el caso de que esta esté vacia con la excepción de que el campo vacio sea "order_number".

t-map-4-facturas-venta

tRESTClient

Este módulo se encarga de enviar lo que viene en el schema de entrada (del componente Map) a la página que configuremos. La configuración necesaria debe ser:

  1. URL: https://baculo.herokuapp.com no utilizamos https://app.zauru.com porque utilizamos un certificado Lets Encrypt y Talend todavía no soporta ese tipo de certificados para sitios HTTPS por lo que tendremos que utilizar la otra dirección de Zauru que utiliza un certificado wildcard de DigiCert.
  2. HTTP Method: POST
  3. Content Type: JSON
  4. Accept Type: JSON

t-rest-client-factura-venta

Además, en las configuraciones avanzadas hay que ingresar las credenciales del API en los Headers para poder procesar la solicitud en Zauru:

  1. X-User-Email
  2. X-User-Token

t-rest-advanced-factura-venta

tLogRow

Este componente sirver para mostrar el esquema con los datos que genera cada componente, coincidentemente, RESTClient puede generar 2 salidas, las 2 opciones que responde el servidor: respuesta correcta del servidor (HTTP Status 200) y la respuesta con error del servidor (HTTP status 50X, 40X, 30X, etc) después de mandar una solicitud. Al correr el trabajo va a mostrar cuantas respuestas salieron positivas y cuantas negativas.

Pruebas recomendadas

  1. Utilizar LogRow en cada componente, antes de agregar el siguiente componente para ver si lo que procesó el componente está correcto
  2. Enviar los datos a nuestro servidor de pruebas https://zauru.herokuapp.com para ver como ingresaron los datos.
<img src="//images.ctfassets.net/29uzlfbx33dq/2qPdfm51cCpmgjsryi9rmG/c251f012c12cf758225cdefd1a4c93d7/TalendIcon.png" alt="talend_file" width="38" height="38" />
<br />
Job de Talend completo

Adjunto el archivo de Talend para que puedan jugar con todo lo que se discutió en este manual