Tablas dinámicas (WebApp Tables)
Las tablas dinámicas en zauru nos permiten ampliar cualquier tipo de funcionalidad que necesitemos y que no tengamos directamente, como por ejemplo: Catálogos específicos, historial de registros, versiones de registros, listado de opciones específicas.
Estas tablas dinámicas tienen un CRUD disponible (Crear, Editar, Eliminar, Listar). Llevan una estructura específica (Números, Texto) y pueden crecer tanto como quieras.
Creación y edición de WebApp Table
Para crear una WebApp table basta con dirigirnos en el menú a la opción: WebApps => Tablas => New WebApp Table

En el siguiente ejemplo, una empresa desea almacenar en Zauru los diferentes tipos de moneda que pueden recibir, por ejemplo (moneda local, moneda de plata, moneda de oro, etc...), en este caso hipotético, este listado no se maneja explicitamente en Zauru, por lo cual recurrimos a la ayuda de una webapp table en donde podemos definir una estructura para ese listado.
Nuestro listado se llamará "Tipos de monedas", el cuál necesitamos que almacene el nombre y un estado.
No preocuparse por el id único para cada opción, ya que automáticamente zauru le creará un id único a cada registro de nuestra webapp table.

Con nuestra estructura lista, podemos ahora dar en la opción (Crear WebApp Table)
Con eso nuestra webapp table se creará y ya la tendremos lista para ser utilizada.
Ahora podemos hacer uso de nuestra nueva webapp table para ingresar registros, o actualizar los ya existentes.

Uso de la API
Como en todos los casos, aquí también tenemos acceso a una API para gestionar todo en relación al CRUD de las webapp tables y sus registros.
La ruta utilizada para acceder a la API es la siguiente:
https://app.zauru.com/apps/webapp_tables
Obtener listado de webapp tables
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables.json
Obtener detalle de una webapp table
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1.json
Crear webapp table
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"webapp_table": {
"name": "Tipos de monedas",
"rows_structure": ["nombre", "estado"],
"rows_type": ["string", "boolean"]
}
}' \
https://app.zauru.com/apps/webapp_tables.json
Actualizar webapp table
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X PATCH \
-d '{
"webapp_table": {
"name": "Tipos de monedas actualizado"
}
}' \
https://app.zauru.com/apps/webapp_tables/1.json
Eliminar webapp table
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X DELETE \
https://app.zauru.com/apps/webapp_tables/1.json
Obtener filas asociables (rowables) de una webapp table
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/rowables.json
Asociar filas a documentos (create_rowables)
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"webapp_table": {
"rowables_id": ["1", "2"],
"rowables_type": ["Invoice", "Shipment"],
"rowables_doc_id": ["10", "20"]
}
}' \
https://app.zauru.com/apps/webapp_tables/1/create_rowables.json
API de Filas (Webapp Rows)
Las filas de una webapp table se gestionan a través de rutas anidadas.
Obtener listado de filas
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows.json
Obtener listado de filas con paginación
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows.json?page=1&per_page=25
Obtener detalle de una fila
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1.json
Crear fila
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"webapp_row": {
"data": {
"nombre": "Quetzal",
"estado": true
}
}
}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows.json
Actualizar fila
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X PATCH \
-d '{
"webapp_row": {
"data": {
"nombre": "Dolar",
"estado": true
}
}
}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1.json
Eliminar fila
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X DELETE \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1.json
Asociar una fila a un documento
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"temp_invoice_id": "10"
}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1/associate.json
Desasociar una fila de un documento
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X DELETE \
-d '{"temp_invoice_id": "10"}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1/dissociate.json
Para desasociar todas las relaciones de una fila, use "all": true:
curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X DELETE \
-d '{"all": true}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1/dissociate.json