02-operadores-y-sintaxis
Operadores y Sintaxis
Introducción
Las fórmulas del sistema se escriben combinando variables, funciones, operadores y valores fijos.
La sintaxis define la forma en que esos elementos deben escribirse para que el motor de fórmulas pueda interpretarlos correctamente.
Una fórmula puede:
- Realizar cálculos matemáticos
- Comparar valores
- Evaluar condiciones
- Invocar funciones
- Utilizar datos del sistema
- Combinar múltiples expresiones para obtener un resultado final
Esta página describe las reglas generales de escritura de fórmulas, incluyendo operadores disponibles, uso de variables, funciones, parámetros, comillas, condicionales y criterios básicos de validación.
La explicación se orienta al uso funcional de las fórmulas dentro del sistema. Las particularidades de cada variable o función se documentan en sus páginas correspondientes.
Para entender los tipos de valor que pueden manejar las fórmulas, consulta 🟢Tipos de Dato.
Operadores disponibles
Los operadores permiten:
- Realizar cálculos matemáticos
- Comparar valores
- Combinar condiciones
Los operadores relacionan variables, funciones, valores fijos y expresiones dentro de una fórmula.
Operadores aritméticos
Los operadores aritméticos realizan cálculos matemáticos sobre valores numéricos.
| Operador | Operación | Ejemplo |
|---|---|---|
| + | Suma | @VAR1 + @VAR2 |
| - | Resta | @BASIMP - @CONLIQIMP |
| * | Multiplicación | @HORASNORMALES * @VALORHORA |
| / | División | @IMPORTE / 2 |
| ^ | Potencia | @VALOR ^ 2 |
| % | Módulo (resto de división) | @VALOR % 2 |
Multiplicación explícita
Operadores relacionales
Los operadores relacionales comparan valores dentro de una fórmula.
El resultado de una comparación se devuelve como valor lógico (verdadero o falso) y se utiliza en condicionales, por ejemplo dentro de expresiones if(...) o funciones lógicas.
| Operador | Comparación | Ejemplo |
|---|---|---|
| = | Igual a | @CODCAT == "105" |
| != | Distinto de | @CODCAT != "105" |
| < | Menor que | @TOTHA < @LIMAPOSS |
| > | Mayor que | @TOTHA > @LIMAPOSS |
| <= | Menor o igual que | @BASIMP <= 0 |
| >= | Mayor o igual que | @BASIMP >= @SALARIOMVM |
Estos operadores permiten definir condiciones para que una fórmula devuelva un resultado u otro según los valores evaluados.
Ejemplo: if(@TOTHA > @LIMAPOSS, 0, @PORCE) devuelve 0 si @TOTHA es mayor que @LIMAPOSS, sino devuelve @PORCE.
Operadores lógicos
Los operadores lógicos combinan múltiples condiciones en una sola expresión.
| Operador | Operación | Ejemplo |
|---|---|---|
| && | Y lógico (AND) | @TOTHA > 0 && @BASIMP > 0 |
| \|\| | O lógico (OR) | @CODCAT == "105" \|\| @CODCAT == "106" |
| ! | Negación (NOT) | !(@BASIMP > 0) |
Estos operadores permiten construir condiciones más complejas.
Ejemplos:
- @TOTHA > 0 && @BASIMP > 0 → verdadero solo si ambas condiciones son verdaderas
- @CODCAT == "105" \|\| @CODCAT == "106" → verdadero si cualquiera de las condiciones es verdadera
- !(@BASIMP > 0) → verdadero si la condición es falsa
Paréntesis
Los paréntesis agrupan expresiones y definen el orden de evaluación de las operaciones.
| Uso | Ejemplo |
|---|---|
| Agrupar operaciones antes de usar el resultado | (@VAR1 + @VAR2) * @BASIMP |
| Agrupar condiciones complejas | (@TOTHA > 0 && @BASIMP > 0) |
| Agrupar expresiones dentro de funciones | if((@TOTHA > @LIMAPOSS), 0, @PORCE) |
Variables dentro de fórmulas
Las variables permiten tomar valores del sistema y utilizarlos dentro de una fórmula.
Sintaxis
En las fórmulas, las variables se escriben con el prefijo @ seguido del nombre de la variable.
Ejemplo: @HORASNORMALES * @VALORHORA
Resolución de contexto
El motor de fórmulas resuelve el valor de cada variable según el contexto en el que se evalúa la fórmula. Una variable puede obtener información de:
- Empleado
- Liquidación
- Concepto
- Horas trabajadas
- Novedades
- Parámetros del sistema
- Otras configuraciones
Ejemplos comunes
| Información | Ejemplo |
|---|---|
| Cantidad de horas | @HORASNORMALES |
| Base imponible calculada | @BASIMP |
| Porcentaje del concepto | @PORCE |
| Fecha inicial del período | @FEINICIAL |
| Variable auxiliar | @VAR1 |
Las variables específicas disponibles se documentan en la carpeta variables/.
Funciones dentro de fórmulas
Las funciones permiten ejecutar operaciones específicas dentro de una fórmula.
Sintaxis
Una función se escribe indicando su nombre y sus parámetros entre paréntesis, separados por comas.
Estructura general: NOMBREFUNCION(parametro1, parametro2, parametro3)
Parámetros
Los parámetros pueden ser:
- Valores fijos (números, textos entre comillas)
- Variables (con prefijo @)
- Otras funciones anidadas
- Expresiones complejas
Ejemplos
| Operación | Ejemplo |
|---|---|
| Redondear un valor | ROUND(@BASIMP, "PRO", 2) |
| Obtener diferencia de días | DATEDIFF(@FEINICIAL, @FEFINAL) |
| Evaluar múltiples casos | CASETEST(@CODCAT, "105", 1, "106", 2, 0) |
| Convertir a texto | TOSTRING(@CODCAT) |
Cada función tiene una lógica propia, cantidad de parámetros esperada y tipo de resultado. Las funciones se documentan en detalle en la carpeta funciones/.
Parámetros y comillas
Los parámetros son los valores que se envían a una función para que ejecute su operación.
Tipos de parámetros
Un parámetro puede ser:
- Una variable (prefijo @)
- Un valor numérico fijo
- Un texto (entre comillas)
- Una fecha
- Una expresión
- El resultado de otra función
Valores de texto
Cuando se utilizan valores de texto en una fórmula, deben escribirse entre comillas.
Ejemplo: @CODCAT == "105"
Comillas simples vs. dobles
El sistema normaliza las comillas simples y dobles antes de evaluar la fórmula. Por tanto:
- "105" y '105' se interpretan de forma equivalente
Para mantener consistencia en la documentación, usa comillas dobles.
✓ Recomendado: @CODCAT == "105"
Separación de expresiones con punto y coma
Las fórmulas pueden contener múltiples expresiones separadas por punto y coma ;.
Funcionamiento
Cuando se utiliza este esquema:
- El sistema evalúa las expresiones anteriores
- La última expresión determina el resultado final de la fórmula
Esto permite realizar cálculos intermedios o asignaciones auxiliares dentro de una misma fórmula.
Estructura
expresion_intermedia; expresion_final
Ejemplo
evaluar = CASETEST(@CODCAT, "105", 1, "106", 1, 0); if(evaluar, @BASIMP, 0)
En este caso:
- Primera expresión: calcula un valor auxiliar evaluar
- Segunda expresión: usa evaluar para definir el resultado final
Condicionales
Las fórmulas pueden utilizar condiciones para devolver distintos resultados según los valores evaluados.
Estructura if()
La forma más habitual de expresar condiciones es mediante la función if().
Sintaxis: if(condicion, valor_si_verdadero, valor_si_falso)
| Parte | Descripción |
|---|---|
| condicion | [[04-glosario#Expresión |
| valor_si_verdadero | Resultado si la condición se cumple |
| valor_si_falso | Resultado si la condición no se cumple |
Ejemplo: if(@TOTHA > @LIMAPOSS, 0, @PORCE)
Si @TOTHA > @LIMAPOSS es verdadero, devuelve 0; si es falso, devuelve @PORCE.
Condiciones complejas
Puedes combinar operadores relacionales y lógicos.
Ejemplo: if(@TOTHA > 0 && @BASIMP > 0, @BASIMP, 0)
Solo devuelve @BASIMP si ambas condiciones son verdaderas.
Funciones condicionales alternativas
También pueden utilizarse funciones como CASETEST(...) para evaluar múltiples casos.
Ejemplo: CASETEST(@CODCAT, "105", 1, "106", 2, 0)
Compara @CODCAT contra cada valor y devuelve el resultado asociado, o 0 por defecto.
Multiplicación explícita
Consulta Operadores aritméticos → Multiplicación explícita para las recomendaciones de cómo escribir multiplicaciones correctamente.
El uso explícito del operador * es fundamental para evitar ambigüedades y asegurar que la fórmula sea interpretada correctamente.
Validación de sintaxis
Antes de utilizar una fórmula en una liquidación, valida que esté escrita correctamente.
Herramientas de validación
El sistema dispone de opciones para validar fórmulas, como Testear Fórmulas, que permite revisar la sintaxis de las fórmulas configuradas.
Errores detectados
La validación de sintaxis detecta:
- Paréntesis abiertos sin cerrar
- Funciones mal escritas
- Cantidad incorrecta de parámetros
- Variables inexistentes o mal referenciadas
- Operadores utilizados incorrectamente
- Expresiones que devuelven un tipo de resultado incompatible
Validación funcional
Consideraciones clave
Redacción y mantenibilidad:
- Las fórmulas deben ser claras y consistentes para facilitar su mantenimiento
- Utiliza nombres de variables y funciones tal como están definidos en el sistema
Uso de variables:
- Escribe siempre con el prefijo @
- Ejemplo: @BASIMP
Uso de funciones:
- Escribe el nombre + parámetros entre paréntesis
- Ejemplo: ROUND(@BASIMP, "PRO", 2)
Paréntesis para claridad:
- Utiliza paréntesis cuando una fórmula combine varias operaciones
- Ejemplo: (@BASIMP + @VAR1) * @PORCE
Valores de texto:
- Usa comillas dobles para mantener uniformidad
- Ejemplo: @CODCAT == "105"
Dependencias y orden:
- Si la fórmula depende de conceptos calculados previamente, considera el Orden de Liquidación configurado
Expresiones múltiples:
- Usa punto y coma ; solo cuando sea necesario para cálculos intermedios
Validación final:
- Valida tanto a nivel de sintaxis como funcional
- Verifica que el resultado obtenido corresponda con la regla de negocio esperada
- Prueba en una liquidación de prueba cuando sea crítico