Sincronización de Inventario (inventory_sync)
La automatización inventory_sync se utiliza para la sincronización simple de stock en una tabla destino (como inventario consolidado) a partir de registros de movimientos individuales. En este flujo, cada fila del origen ya indica de forma explícita si se trata de una entrada o una salida.
Cómo Funciona
Section titled “Cómo Funciona”- Al guardar una fila en la tabla de origen, el sistema lee la columna configurada en
type_fieldpara identificar si el registro es una entrada o una salida. - Utiliza la regla
op_mappingpara traducir el valor de tipo (ej."entrada"o"salida") en una operación aritmética (+o-). - Busca una fila coincidente en la tabla destino según los criterios definidos en
match_columns.- Si el registro destino existe: Actualiza la cantidad sumando o restando el valor del campo
qty_field. - Si el registro destino NO existe: Inserta una nueva fila en la tabla destino con la cantidad inicial. Si la operación es de resta (
-), la cantidad se inserta con signo negativo.
- Si el registro destino existe: Actualiza la cantidad sumando o restando el valor del campo
- Limpieza automática: Después de actualizar o insertar, si la cantidad final en el registro destino llega a ser menor o igual a cero (
<= 0), la fila destino se elimina automáticamente para evitar saldos huérfanos o negativos en la vista general.
Configuración de Reglas JSON
Section titled “Configuración de Reglas JSON”Para configurar este comportamiento, debes estructurar las siguientes propiedades dentro del objeto rules de la automatización:
Propiedades Requeridas
Section titled “Propiedades Requeridas”target_table: La tabla destino donde se consolida el inventario (ej.table9).target_field: La columna numérica en la tabla destino que almacena el stock (ej.t9c3).qty_field: La columna en la tabla origen que contiene la cantidad del movimiento (ej.t10c2).type_field: La columna en la tabla origen que indica la naturaleza del movimiento (ej.t10c1).op_mapping: Objeto que asocia cada valor del tipo de movimiento con su signo aritmético:"+"para sumar (entradas)."-"para restar (salidas).
match_columns: Columnas de origen y destino que deben coincidir para identificar el registro (ej. asociar producto origen con producto destino).
Propiedades Opcionales
Section titled “Propiedades Opcionales”validation_save: Validaciones para rechazar el guardado si no se cumplen ciertas condiciones.ignore_save: Condiciones bajo las cuales la fila debe omitirse.bulk_properties: Columnas habilitadas para edición masiva (bulk) en la grilla del usuario.
Ejemplo de Configuración Completa
Section titled “Ejemplo de Configuración Completa”A continuación se muestra un ejemplo real de configuración para una automatización de tipo inventory_sync sobre la tabla origen table10 que sincroniza hacia table9:
{ "target_table": "table9", "target_field": "t9c3", "qty_field": "t10c2", "type_field": "t10c1", "op_mapping": { "entrada": "+", "salida": "-" }, "match_columns": [ { "source": "t10c0", "target": "t9c1" }, { "source": "t10c3", "target": "t9c0" } ], "validation_save": [ { "property": "t10c2", "formula": "if", "logic": "gt", "value": 0, "catch": "La cantidad del movimiento debe ser mayor a cero" } ], "ignore_save": [ { "type": "if", "param": { "var_a": "<prop:t10c2>", "var_b": 0, "oper": "eq" } } ], "bulk_properties": ["t10c1", "t10c2"]}