Skip to content

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.


  1. Al guardar una fila en la tabla de origen, el sistema lee la columna configurada en type_field para identificar si el registro es una entrada o una salida.
  2. Utiliza la regla op_mapping para traducir el valor de tipo (ej. "entrada" o "salida") en una operación aritmética (+ o -).
  3. 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.
  4. 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.

Para configurar este comportamiento, debes estructurar las siguientes propiedades dentro del objeto rules de la automatización:

  • 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).
  • 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.

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"]
}