Diccionario de Reglas JSON
Las automatizaciones en Axol Systems se configuran mediante objetos JSON en el campo rules de la tabla de configuraciones. Este diccionario detalla cada una de las propiedades disponibles, su propósito, formato y ejemplos de uso.
Propiedades Generales
Section titled “Propiedades Generales”qty_field
Section titled “qty_field”Especifica la columna de la tabla origen (source_table) que contiene la cantidad numérica a mover.
- Tipo: Texto (identificador de columna)
- Ejemplo:
{ "qty_field": "t0c0"}qty_mappings
Section titled “qty_mappings”Permite definir múltiples cantidades en una sola automatización. Cada mapeo puede aplicar filtros adicionales en la tabla destino mediante la propiedad extra_match. Si se define qty_mappings, la propiedad clásica qty_field pasa a ser opcional.
- Tipo: Arreglo de objetos
- Sub-propiedades por objeto:
qty_field: Columna de cantidad origen.extra_match: Filtro adicional (ej.{ "target": "t1c7", "value": "BUENAS" }).fallback_match(Opcional): Regla de sustitución. Si el origen no cuenta con saldo suficiente de la categoría principal, toma del fallback (ej. tomar deBUENASsi falta saldo deSCRAP), pero el registro resultante sigue etiquetado con la categoría principal (extra_match).
- Ejemplo:
{ "qty_mappings": [ { "qty_field": "t0c2", "extra_match": { "target": "t1c7", "value": "BUENAS" } }, { "qty_field": "t0c9", "extra_match": { "target": "t1c7", "value": "SCRAP" }, "fallback_match": { "target": "t1c7", "value": "BUENAS" } } ]}target_table
Section titled “target_table”Especifica el identificador de la tabla destino donde se aplicarán los cambios (p.ej. tabla de inventario final o de registros consolidados).
- Tipo: Texto
- Ejemplo:
{ "target_table": "table7"}target_field
Section titled “target_field”Especifica la columna numérica en la tabla destino (target_table) que se va a incrementar, decrementar o modificar.
- Tipo: Texto (identificador de columna)
- Ejemplo:
{ "target_field": "t1c0"}match_columns
Section titled “match_columns”Define los criterios de coincidencia para buscar y asociar la fila de origen con la fila destino. Compara columnas entre ambas tablas.
- Tipo: Arreglo de objetos
- Formato por ítem:
- Comparar columnas:
{ "source": "t0c3", "target": "t1c1" } - Comparar con constante:
{ "target": "t1c4", "value": 0 }(ignorasource)
- Comparar columnas:
- Ejemplo:
{ "match_columns": [ { "source": "t0c3", "target": "t1c1" }, { "target": "t1c4", "value": 0 } ]}Validación y Filtrado al Guardar
Section titled “Validación y Filtrado al Guardar”validation_save
Section titled “validation_save”Permite definir reglas para validar cantidades o valores antes de guardar una fila. Si una validación falla, el sistema bloquea el guardado del registro y muestra un mensaje de error personalizado.
- Tipo: Arreglo de objetos
- Sub-propiedades por objeto:
catch: El mensaje de error que se muestra al usuario.logic: Operador lógico de comparación (eq,neq,gt,gte,lt,lte).value: Valor contra el que se compara (puede ser un número constante, texto, o la palabra clave"target_field").formula: Tipo de validación. Usa"if"para comparar directamente la propiedad o"target_qty"para comparar la cantidad contra el stock real en el destino.property: Columna de origen a validar (opcional si se usaqty_mappings).transfer: Indica si la validación aplica sobre el origen ("origin") o el destino ("target").
- Ejemplo:
{ "validation_save": [ { "catch": "El inventario de origen no tiene cantidad suficiente", "logic": "lt", "value": "target_field", "formula": "target_qty", "property": "t8c7", "transfer": "origin" } ]}ignore_save
Section titled “ignore_save”Fórmulas con resultado booleano. Si la condición se evalúa como verdadera (true), la fila de origen se ignora y no ejecuta ninguna lógica en la automatización. Soporta agrupadores lógicos anidados (and y or).
- Tipo: Arreglo de objetos. Los ítems de la lista principal se evalúan con un operador OR implícito (si cualquiera se cumple, se ignora).
- Ejemplo con AND (ignorar si ambas cantidades son menores o iguales a cero):
{ "ignore_save": [ { "type": "and", "param": [ { "type": "if", "param": { "var_a": "<prop:t14c2>", "var_b": 0, "oper": "lte" } }, { "type": "if", "param": { "var_a": "<prop:t14c9>", "var_b": 0, "oper": "lte" } } ] } ]}Reglas de Movimiento e Inventario
Section titled “Reglas de Movimiento e Inventario”transfer_columns
Section titled “transfer_columns”Se utiliza en traspasos (inventory_transfer) y movimientos (inventory_movement) para especificar de qué columnas leer el origen y el destino de la mercancía, y en qué columna de la tabla destino buscar/guardar la ubicación.
- Tipo: Objeto
- Estructura:
origin: Columna origen en la tabla de movimientos.destination: Columna destino en la tabla de movimientos.target: Columna de ubicación en la tabla final de stock.
- Ejemplo:
{ "transfer_columns": { "origin": "t8c5", "destination": "t8c6", "target": "t7c5" }}in_out_property
Section titled “in_out_property”Permite escribir automáticamente un valor literal (como "ENTRADA" o "SALIDA") en una columna del registro de movimientos basándose en la dirección configurada.
- Tipo: Objeto
- Estructura:
column: Columna del registro origen donde se guardará la etiqueta.in(Opcional): Valor a escribir si la dirección es de entrada (in).out(Opcional): Valor a escribir si la dirección es de salida (out).
- Ejemplo:
{ "in_out_property": { "column": "t14c5", "in": "ENTRADA", "out": "SALIDA" }}Control Visual y Grillas (UI)
Section titled “Control Visual y Grillas (UI)”bulk_properties
Section titled “bulk_properties”Especifica una lista de propiedades que aparecerán como campos unificados (bulk) en la parte superior de la grilla de edición. Escribir un valor en este campo unificado lo replicará instantáneamente a todas las filas de esa columna.
- Tipo: Arreglo de textos (identificadores de columnas)
- Ejemplo:
{ "bulk_properties": ["t10c1", "t10c2"]}show_columns / hide_columns
Section titled “show_columns / hide_columns”Actúan como lista blanca (show_columns) y lista negra (hide_columns) para controlar de forma explícita qué columnas se muestran al usuario en las grillas de edición de movimientos (InOutView).
- Precedencia: Primero se aplican filtros internos, luego
show_columnsy finalmentehide_columns. Si una columna está en ambas, prevalecehide_columns. - Ejemplo:
{ "show_columns": ["t8c0", "t8c1", "t8c7"], "hide_columns": ["t8c4"]}