Algoritmos
Los algoritmos son operaciones de logica de negocio que se compilan a consultas SQL optimizadas y se ejecutan directamente en PostgreSQL. Se utilizan para calcular valores automaticamente en campos, columnas de informes y documentos dinamicos.
Tipos de algoritmo
| Tipo | Descripcion | Ejemplo |
|---|---|---|
| Lineal | Opera sobre los datos de la misma fila | cantidad * precio_unitario para obtener el total de una linea |
| Cruzado | Agrega datos de registros relacionados | Sumar todas las lineas de una factura para obtener la base imponible |
| Busqueda | Encuentra datos en otras secciones | Obtener el precio de un producto desde el catalogo al seleccionarlo |
| Datos | Accede a datos del contexto actual | Insertar el usuario actual, la fecha de hoy o la empresa activa |
| Independiente | No depende de una fila especifica | Calcular totales globales o estadisticas generales |
Donde se usan
Los algoritmos se pueden aplicar en tres contextos:
- Campos auto-calculados: el valor del campo se calcula automaticamente cada vez que se guarda el registro. El campo se marca como bloqueado (solo lectura).
- Columnas de informes: columnas calculadas que no existen como campo en la seccion, pero se calculan al ejecutar el informe.
- Documentos dinamicos: datos calculados que se insertan en plantillas HTML, PDF o JSON.
Creacion desde Desktop
Para crear un algoritmo en Dinaup Desktop:
- Abre la seccion donde quieres aplicar el calculo.
- Selecciona el campo destino y activa la opcion Auto-calculado.
- Abre el editor de algoritmos y selecciona el tipo (Lineal, Cruzado, Busqueda, Datos o Independiente).
- Configura los campos de origen y la operacion a realizar.
- Guarda. El algoritmo se compila a SQL y se ejecuta en cada escritura.
Ejecucion y rendimiento
Los algoritmos se compilan a SQL nativo y se ejecutan directamente en PostgreSQL. Esto garantiza:
- Rendimiento: no hay procesamiento en memoria de la aplicacion, todo ocurre en la base de datos.
- Consistencia: los calculos usan siempre los datos mas actualizados del momento de la escritura.
- Escalabilidad: funcionan correctamente con millones de registros sin degradacion.
Los algoritmos se recalculan automaticamente al guardar el registro. Si un campo depende de otro campo auto-calculado, Dinaup resuelve las dependencias en el orden correcto.
Ejemplo: Total de linea de factura
Un algoritmo Lineal tipico calcula el total de una linea multiplicando cantidad por precio:
Campo destino: Total Linea
Tipo: Lineal
Operacion: Multiplicar
Campo A: Cantidad
Campo B: Precio Unitario
Un algoritmo Cruzado en la factura suma todos los totales de sus lineas:
Campo destino: Base Imponible
Tipo: Cruzado
Operacion: Sumar
Seccion origen: Lineas de Factura
Campo a sumar: Total Linea
Relacion: Factura (campo relacion de la linea hacia la factura)
La referencia tecnica completa de todas las secciones y campos esta disponible en doc-flex.dinaup.com.