Quippos LH - Fórmulas de conceptos

Esta aplicación tiene como objetivo mostrar cómo se configuran los conceptos de liquidación de sueldos y las fórmulas de cálculo que los componen, para automatizar las liquidaciones.

¿Para qué sirve?

Se define como concepto de liquidación de sueldos a aquellos ítems que contribuyen al cálculo de la liquidación de sueldos.

Son ejemplos de conceptos el sueldo básico, las horas extras, la retención de jubilación, etc.

Según cómo se encuentren configurados pueden tener diferente impacto u objetivo dentro de la liquidación.

Existen conceptos con fórmula y sin fórmula. Los conceptos con fórmula pueden ser de cálculo intermedio o conceptos finales, que son los que se imprimen en el recibo de haberes, las contribuciones y las provisiones del mes.

  • Conceptos sin fórmula: son los conceptos de tipo totalizador, reciben valor de conceptos con fórmula.

  • Conceptos con fórmula: para cada uno de ellos se puede definir comportamiento, fórmula de cálculo y totalizadores en los cuales se sumará su resultado. En la fórmula, un concepto puede utilizar atributos de legajo, de liquidación, de novedad, tipos de novedad y otros conceptos para su cálculo.

Antes de empezar

Conocer los tipos de concepto disponibles y las reglas de codificación antes de crear o editar conceptos de liquidación.

Tipos de conceptos de liquidación

Los tipos de conceptos estándar son:

  • Remunerativo
  • Remunerativo Variable
  • Licencia
  • Remunerativo Descuenta
  • No Remunerativo
  • No Remunerativo Descuenta
  • Retención
  • Descuento
  • Contribución patronal
  • Provisión
  • Crédito fiscal
  • Formuleo Unidades Licencia
  • Formuleo Unidades
  • Formuleo Precio
  • Formuleo Precio 2 Decimales
  • Formuleo Base
  • Formuleo Porcentaje
  • Formuleo Indicativo
  • Formuleo Importe
  • Formuleo Importe con 2 Decimales
  • Totalizador
  • Totalizador 2 Decimales

Codificación

Para mantener el ordenamiento de la codificación, el código de los conceptos de liquidación configurados por Finnegans comienza con la sigla FINN_ o NFIN_. A continuación figura la sigla que indica si es un concepto estándar o de convenio. Por ejemplo: la sigla de un concepto estándar es FINN_LCT_ o NFIN_LCT_, la de un concepto de convenio de Empleados de Comercio FINN_COM_ o NFIN_COM_, etc.

El código se completa con un número de 4 dígitos. Por ejemplo: el código del concepto estándar Sueldo es FINN_LCT_1000.

Además, los 4 dígitos del código del concepto agrupan los conceptos por tipo:

  • De 1000 a 1999 - Remunerativos
  • De 2000 a 2999 - No Remunerativos
  • De 3000 a 3999 - Descuentos
  • De 4000 a 4999 - Contribuciones Patronales
  • De 5000 a 5999 - Provisiones
  • De 6000 a 6999 - Valores Informados e Indicativos
  • De 8000 a 8999 - Formuleo
  • De 9000 a 9999 - Totalizadores

Los conceptos de usuario comienzan con el prefijo USR_.

Modo de uso

:round_pushpin: Ruta → Menú → Gestión de Talento Humano → Liquidación de Sueldos → Configuraciones → Configuración de conceptos

Lista de conceptos de liquidación

Al ingresar a la edición de conceptos de liquidación, el sistema presenta la lista de los mismos.

Desde aquí se pueden agregar nuevos conceptos de liquidación, editar o eliminar los existentes.

Creación de conceptos de liquidación de usuario

  1. Hacer clic en el botón Nuevo.

  2. Completar los campos de las solapas:

  • Datos Generales.
  • Fórmulas de Usuario.
  • Totalizadores de Usuario.
Datos Generales
  • Código (*): se informa automáticamente con el prefijo USR_. Es de carácter obligatorio para los conceptos que no son de tipo estándar. Completar el código según el tipo de convenio y concepto. Por ejemplo, si se trata de un concepto del convenio de comercio y de tipo remunerativo, el código sería USR_COM_1000.
  • Código LSD: configurar el código que define los subsistemas en los que tiene que incluirse el concepto, según tablas ARCA.
  • Código Empleador LSD: configurar el código definido por el empleador que vincula la información con ARCA.
  • Nombre: informar el nombre del concepto.
  • Código de impresión: registrar el número de orden que debe tener el concepto en los reportes, por ejemplo, en el recibo de sueldo.
  • Tipo de concepto: indicar si el concepto es remunerativo, no remunerativo, etc.
  • Descripción en impresión: es un dato optativo para informar el nombre con el que se va a mostrar el concepto en informes y reportes. Si no se informa un dato en este campo, el nombre en informes y reportes será el del campo Nombre.
  • Descripción: permite ingresar cualquier tipo de información descriptiva referida a la utilización o finalidad del registro creado. Esta información solo se visualizará desde la edición del propio registro.
  • Cuenta Debe: informar la cuenta del debe en la que se imputa el concepto para la generación del asiento contable de sueldos.
  • Cuenta Haber: informar la cuenta del haber en la que se imputa el concepto para la generación del asiento contable de sueldos.
  • Guarda valores cero: si este campo se encuentra tildado y el concepto se calcula con valor cero, va a guardarse para su posterior consulta.
  • Activo: este campo debe encontrarse tildado para que el concepto esté disponible para su uso.
  • Modo de cálculo: permite seleccionar entre fórmula y constante.
    • Para el modo de cálculo fórmula, el concepto tendrá en cuenta la fórmula indicada en la solapa Fórmulas de Usuario.
    • En el caso de seleccionar el modo constante, el concepto va a tomar el valor informado en el maestro de constantes.

Nota aclaratoria: los campos marcados con un asterisco (*) son de carácter obligatorio.

Fórmulas de Usuario

En la solapa Fórmulas de Usuario se encuentran configuradas las fórmulas de cálculo de los conceptos, particularizadas por el usuario.

Se pueden agregar todas las necesarias con distintas vigencias.

En la ventana de fórmulas figura la fecha desde la que está vigente la fórmula, y se puede leer la configuración del cálculo.

El botón Editar permite acceder a la ventana de edición.

En la parte inferior de la ventana de edición de fórmulas se encuentran los siguientes botones:

  • Incorporar función: permite seleccionar funciones predeterminadas para realizar distintos cálculos.
  • Atributos: figuran todos los atributos de legajo, liquidación, empresa y novedad que están disponibles para la configuración de fórmulas, se pueden seleccionar en esta opción.
  • Conceptos: es la lista de conceptos de liquidación.
  • Novedades: es la lista de tipos de novedad.
  • Check: cuando la fórmula está configurada, al presionar este botón el sistema revisa que la sintaxis de la fórmula sea correcta.
  • Deducciones: es la lista de conceptos tipos de deducción.
  • Constantes: es la lista de constantes.
  • Aceptar: al presionar el botón Aceptar en esta ventana se cierra la edición con la configuración realizada. Si se presiona Aceptar en la siguiente ventana se accede nuevamente al concepto y con el botón Guardar se graba.
  • Cancelar: es el botón para cancelar la configuración si todavía no se grabó.

Para referencias de sintaxis de fórmulas y descripción de funciones predeterminadas, ver la sección Edición de fórmulas.

Totalizadores de Usuario

En la solapa Totalizadores de Usuario se informan los totalizadores en los que debe sumar o restar el resultado del concepto. Esos totalizadores de usuario se utilizarán posteriormente en las fórmulas de otros conceptos.

Estos valores suman o restan junto con los Totalizadores (estándares).

Los totalizadores se codifican anteponiendo T.

Ejemplos: T. Remunerativo, T. no Remunerativo

Los valores de los conceptos de tipo totalizador no se guardan en la liquidación, por lo cual, cuando se necesite obtener un valor de una liquidación que no sea la actual, no se debe usar el totalizador sino el concepto que guardó el valor del totalizador.

Ejemplo: el concepto Total Remunerativo guardó el valor del concepto de tipo totalizador T. Remunerativo.

Entonces, cuando se quiere obtener la suma histórica del remunerativo, la sintaxis es:

Funcion.SumaHistorica("Total Remunerativo","L",fechadesde,fechahasta)

No es correcta esta sintaxis:

Funcion.SumaHistorica("T. Remunerativo","L",fechadesde,fechahasta)

Dependencias

En la solapa Dependencias se puede hacer clic en los botones para mostrar la información correspondiente a cada uno de ellos.

  • Es utilizado en los conceptos: muestra todos los conceptos que en alguna de sus fórmulas llaman al concepto en cuestión.

  • Utiliza los conceptos: muestra todos los conceptos que son usados en las fórmulas del concepto en cuestión.

  • Tipos de Liquidación: muestra todos los tipos de liquidación que tienen al concepto en su lista.

Edición de fórmulas

Aspectos generales

Intérprete de fórmulas

El intérprete de fórmulas es la herramienta que se encarga de comprender la sintaxis de una fórmula. Su función es ejecutar las instrucciones proporcionadas para calcular el valor de esos conceptos.

El intérprete procesa la fórmula de manera secuencial, lo que significa que realiza los cálculos siguiendo el orden de las líneas de la fórmula.

Atributos

Los atributos son datos del colaborador, empresa, liquidación y/o novedad.

Por ejemplo, el convenio es un dato del colaborador, por lo tanto, es un atributo. Así como también el turno, su obra social, etc.

También existen atributos de liquidación, como sus fechas desde y hasta, y atributos de novedades, como su valor o cantidad.

Para seleccionar un atributo se puede utilizar el asistente de las fórmulas haciendo clic en el botón Atributos.

Por ejemplo, si se desea traer el atributo que corresponde al código de la obra social del colaborador, hay que seleccionar EMPLEADO.ObraSocial.Codigo.

Variables

Las variables son espacios donde se puede almacenar distinto tipo de información. A estas se les debe asignar un nombre y el valor que deben almacenar. Pueden guardar desde un número hasta un atributo.

Por ejemplo, si se crea la variable llamada obraSocial, se le puede asignar el código de la obra social del colaborador de esta forma:

obraSocial = EMPLEADO.ObraSocial.Codigo;

Esta información puede ir variando a lo largo del recorrido de la fórmula. Por ejemplo, si al principio de la fórmula se declara una variable edad = 30 y luego se le indica edad = 40, el valor final de la edad va a ser 40 porque es el último valor asignado a esta variable.

1  edad = 30;
2
3  edad = 40;

El nombre de las variables es indistinto, a excepción de los nombres empresa y empleado.

Condicionales

Los condicionales son formas de indicarle a la fórmula que debe calcular basándose en una premisa.

Para indicarle al intérprete que se va a utilizar una condición, se debe respetar la siguiente estructura:

if (Condición) begin
Situación que debe aplicarse en caso de que se cumpla la condición;
endif;

El if indica que se inicia una condición. Dentro del paréntesis debe ir la condición y luego el begin.

Entre el begin y el endif (que indica que finaliza la condición) se debe indicar la acción a seguir en caso de que la condición previamente indicada se cumpla.

Por ejemplo, si se precisa que se calcule un bono de $10.000 para los colaboradores que tengan más de 30 años, hay que generar la siguiente condición:

1  if(edad > 30)begin
2  return 10000;
3  endif;

En las fórmulas de los conceptos no está permitido hacer if anidados. No se puede hacer una condición dentro de otra. Los if deben ser todas condiciones independientes.

Operadores

Existen varios tipos de operadores al momento de escribir las fórmulas de los conceptos. Estos son utilizados frecuentemente en las condiciones.

Operadores de comparación

Estos operadores son utilizados para comparar dos valores y determinar la relación entre ellos.

Los operadores de comparación son los siguientes:

  • Igualdad (==): compara si dos valores son iguales.
    Ejemplo: a == b devuelve verdadero si a es igual a b.
  • Desigualdad o Distinto (<>): compara si dos valores no son iguales.
    Ejemplo: a <> b devuelve verdadero si a no es igual a b.
    No usar !=
  • Mayor que (>): compara si un valor es mayor que otro.
    Ejemplo: a > b devuelve verdadero si a es mayor que b.
  • Menor que (<): compara si un valor es menor que otro.
    Ejemplo: a < b devuelve verdadero si a es menor que b.
  • Mayor o igual que (>=): compara si un valor es mayor o igual que otro.
    Ejemplo: a >= b devuelve verdadero si a es mayor o igual a b.
  • Menor o igual que (<=): compara si un valor es menor o igual que otro.
    Ejemplo: a <= b devuelve verdadero si a es menor o igual a b.
Operadores lógicos

Estos operadores se utilizan para combinar condiciones y devolver un valor si estas se cumplen o no.

  • AND (y): este operador devuelve verdadero si ambas condiciones son verdaderas.

Ejemplo: si la antigüedad es mayor o igual a un año y menor a tres, entonces el importe será $10.000.

1  if(antiguedad >= 1 and antiguedad < 3)begin
2  importe = 10000;
3  endif;

En este caso, si el colaborador posee 2 años, se cumplen ambas condiciones, por lo tanto, el importe será $10.000.

  • OR (o): este operador devuelve verdadero si una de las condiciones es verdadera.

Ejemplo: si el colaborador tiene uno o dos adherentes de la obra social, el importe será $2.000.

1  importe = 0;
2  if(adherente == 1 or adherente == 2)begin
3  importe = 2000;
4  endif;

En este caso el importe será $0 porque, supongamos, el colaborador tiene más de 2 adherentes.

Operadores aritméticos

Este tipo de operador se utiliza para realizar operaciones matemáticas en el intérprete de fórmulas.

  • Suma (+): se puede utilizar para sumar valores, variables y/o conceptos.

Ejemplo:

1  sueldo = 10000;
2  bono = 5000;
3
4  importe = sueldo + bono;

En este caso, la variable importe va a guardar la suma entre las variables sueldo y bono, resultando en $15.000.

  • Resta (-): se utiliza para restar valores, variables y/o conceptos.

Ejemplo:

1  sueldo = 10000;
2  anticipo = 2000;
3
4  importe = sueldo - anticipo;

En este caso, la variable importe va a guardar la resta entre las variables sueldo y anticipo, resultando en $8.000.

  • Multiplicación (*): se puede utilizar para multiplicar valores, variables y/o conceptos.

Ejemplo:

1  bono = 5000;
2  anios = 2;
3
4  importe = bono * anios;

En este caso, la variable importe va a guardar la multiplicación entre las variables bono y anios, resultando en $10.000.

  • División (/): se utiliza para dividir valores, variables y/o conceptos.

Ejemplo:

1  anticipo = 10000;
2  meses = 4;
3
4  importe = anticipo / meses;

En este caso, la variable importe va a guardar la división entre las variables anticipo y meses, resultando en $2.500.

El check siempre dará la advertencia / by zero cuando el divisor de una división sea una variable, la cual podría tener el valor cero.

Sintaxis

Return

Es el resultado que devuelve el concepto.

Por ejemplo:

return 123;

En una fórmula puede haber varios resultados alternativos. Cuando el proceso de cálculo encuentra el primer resultado (return), se finaliza el cálculo de la fórmula con ese resultado.

Conceptos

El intérprete de fórmulas entiende que debe llamar a un concepto cuando su nombre está entre llaves, por ejemplo {Precio Sueldo}.

Los conceptos se pueden seleccionar presionando el botón Conceptos que se encuentra en el intérprete de fórmulas.

Constantes

El intérprete de fórmulas entiende que debe llamar a una constante cuando su nombre está entre corchetes, por ejemplo [Fijo ART].

Las constantes se pueden seleccionar presionando el botón Constantes que se encuentra en el intérprete de fórmulas.

Ejemplos

A. Para configurar que si el código de convenio es FINN_01 (Fuera de Convenio) retorne/devuelva 1:

1  if (EMPLEADO.Convenio.Codigo == "FINN_01") begin
2  return 1;
3  endif;
4
5  return 0;

En la línea 1 se inicia una condición que compara el código del convenio del colaborador actual contra el código esperado, que es FINN_01.

EMPLEADO.Convenio.Codigo: va a traer el código del convenio al cual pertenece el colaborador.

En la línea 2 se devuelve el valor 1 en caso de que la condición se cumpla. Si esta se cumple, el concepto muestra el valor 1 y no continúa interpretando el resto de la fórmula.

En la línea 3 se finaliza la condición y en la línea 5 se indica que devuelva 0 en caso de que no se haya cumplido la condición.

Al final de cada línea se escribe ; (punto y coma), con excepción de la condición, que al begin no se le adiciona.

B. Para configurar un concepto que calcule el porcentaje de un importe, y cuyo porcentaje es distinto en cada convenio:

1   porcentaje = 0;
2
3   conv = EMPLEADO.Convenio.Codigo;
4
5   if (conv == "FINN_02") begin
6   porcentaje = 10;
7   endif;
8
9   if (conv == "FINN_03") begin
10  porcentaje = 15;
11  endif;
12
13  return {T. Remunerativo} * porcentaje / 100;

En la línea 1 se define la variable porcentaje y en la línea 3 se asigna valor a la variable conv, que será el código de convenio.

En la línea 5 se inicia una condición donde, si el código de convenio es FINN_02, se le asigna valor 10 a la variable porcentaje en la línea 6.

En caso de que esta condición no se cumpla, el intérprete sigue avanzando hasta la segunda condición, que inicia en la línea 9, donde si el código de convenio es FINN_03 se le asigna valor 15 a la variable porcentaje.

En la línea 13 se retorna el resultado, que es el concepto totalizador que suma todos los conceptos remunerativos por el porcentaje. El porcentaje va a variar según el convenio del colaborador.

Valores auxiliares en el resultado

Cuando un return tiene configurado el resultado principal y uno o más resultados auxiliares, los valores se escriben entre paréntesis.

Se pueden devolver hasta 4 valores auxiliares, adicionales al valor que se devuelve como resultado.

Ejemplo:

1  unidades = {Unid Lic Examen};
2
3  if (unidades == 0) begin
4  return 0;
5  endif;
6
7  precio = {Precio Lic. Especiales};
8
9  return(precio * unidades, unidades, precio);

En esta fórmula, en la línea 1 a la variable unidades se le asigna el valor del concepto {Unid Lic Examen}.

En la línea 3 se inicia una condición que, si la variable unidades es igual a cero, esta fórmula retorna cero, y al haber obtenido este resultado finaliza el cálculo del concepto.

Si la condición no se cumple, es decir, que la variable unidades tiene valor, la fórmula se sigue calculando.

En la línea 7 se asigna a la variable precio el valor del concepto {Precio Lic. Especiales} y en la línea 9 se retorna el resultado de precio por unidades y, a continuación, separados por comas, se retornan las unidades y el precio como resultados auxiliares.

Es importante que, para que se muestren los auxiliares, los paréntesis deben estar junto al return.

Uso de fechas estáticas

En la fórmula también se pueden crear fechas estáticas para realizar cálculos. Estas pueden asignarse a variables o bien pueden utilizarse directamente en las condiciones o funciones.

Las fechas estáticas se informan entre numerales.

Por ejemplo: se precisa pagar un bono de $50.000 si en el periodo liquidado transcurrió el día del gremio.

1   diaDelGremio = #06/09/2025#;
2
3   fechaDesde = LIQUIDACION.FechaDesde;
4   fechaHasta = LIQUIDACION.FechaHasta;
5
6   bono = 50000;
7
8   if(diaDelGremio >= fechaDesde and diaDelGremio <= fechaHasta)begin
9   return bono;
10  endif;
11
12  return 0;

En la línea 1 se genera una variable que va a guardar el día del gremio. Luego, en la línea 3, se guarda en la variable fechaDesde el atributo que trae la fecha desde de la liquidación.

En la línea 4 se guarda en la variable fechaHasta el atributo que trae la fecha hasta de la liquidación. Luego, en la línea 6, se genera una variable que guarda el monto del bono.

En la línea 8 se inicia una condición que indica que si el día del gremio es mayor o igual a la fecha desde de la liquidación y si el día del gremio es menor o igual a la fecha hasta de la liquidación, retorne el bono.

Si la liquidación es de septiembre 2025, entonces las comparaciones que hará el intérprete son las siguientes:

diaDelGremio 06/09/2025 >= fechaDesde 01/09/2025

y

diaDelGremio 06/09/2025 <= fechaHasta 30/09/2025

Como ambas condiciones son verdaderas, va a retornar el valor del bono.

Funciones

Las funciones son conjuntos de instrucciones que se ejecutan al ser utilizadas. Estas pueden ser utilizadas presionando el botón Incorporar función del intérprete de fórmulas.

Las funciones cuentan con dos componentes: el nombre de la función y los parámetros, en los cuales se le indicará cómo debe actuar. Los parámetros de la función se encuentran entre paréntesis y, cuando se incorpora una función a la fórmula, esta viene acompañada de una ayuda para comprender con qué parámetros completarla.

Los parámetros se separan por comas, y los conceptos, novedades e indicaciones por día, mes, año, fecha liquidación o pago se colocan entre comillas.

Cuando una función tenga como parámetro un concepto, nunca se debe usar un concepto de tipo totalizador para ese parámetro.

  • Funcion.Antiguedad(D/M/A):

Calcula la antigüedad del período actual hasta la fecha de fin de liquidación o hasta la fecha de baja; en días, meses o años. Se debe indicar entre comillas la inicial de día, mes o año según corresponda.

Ejemplo: antiguedad = Funcion.Antiguedad("A");

En este caso, la variable antiguedad va a guardar la antigüedad del colaborador en años.

  • Funcion.AntiguedadAcumulada(D/M/A, #fecha hasta#):

La función calcula la antigüedad acumulada en todos los períodos trabajados en la empresa; en días, meses o años; con una fecha hasta que se informa con un atributo de fecha, con una variable a la que se le haya asignado una fecha creada con otras funciones preconfiguradas, o una fecha estática.

Ejemplo: antiguedad = Funcion.AntiguedadAcumulada("A", LIQUIDACION.FechaHasta);

En este caso, la variable antiguedad va a guardar la antigüedad acumulada del colaborador en años ("A") hasta la fecha de la liquidación.

  • Funcion.AntiguedadEspecial(D/M/A, #fecha hasta#, codigo):

La función calcula la antigüedad basándose en los periodos acumulados en la situación laboral (código).

Ejemplo: antiguedad = Funcion.AntiguedadEspecial("A", LIQUIDACION.FechaHasta,"21");

  • Funcion.ParteDeFecha(D para dia/M para mes/A para año, #fecha#):

Permite obtener el día, mes o año de una fecha.

Ejemplo: mes = Funcion.ParteDeFecha("M", LIQUIDACION.FechaPago);

Para este caso, la fecha de pago de la liquidación es 31/01/2025, la variable mes va a guardar el mes de dicha fecha. Por lo tanto, el contenido de la variable será igual a 1.

  • Funcion.CrearFecha(dia, mes, año):

Con esta función se pueden crear fechas usando números, variables, o incluyendo otra función como Funcion.ParteDeFecha.

Ejemplos:

A. Se utiliza una variable como parte de los parámetros de la función:

anio = Funcion.ParteDeFecha("A", LIQUIDACION.FechaPago);
fechaDesde = Funcion.CrearFecha(1, 1, anio);

La función va a crear la fecha con día 1, mes 1, y el año es una variable que trae el año de la liquidación actual. En este caso, si la liquidación es del 2025, la variable fechaDesde va a tener el valor 01/01/2025.

B. Se utiliza una función como parte de los parámetros para determinar el año:

fechaDesde = Funcion.CrearFecha(31, 8, Funcion.ParteDeFecha("A", LIQUIDACION.FechaPago));

La función va a crear la fecha con día 31, mes 8, y el año es una función que trae el año de la liquidación actual. En este caso, si la liquidación es del 2025, la variable fechaDesde va a tener el valor 31/08/2025.

  • Funcion.PrimerDia(#fecha#):

Se obtiene la fecha con el primer día del mes para una fecha. Por ejemplo: si la fecha desde de la liquidación puede ser 1 o 16, con esta función se obtiene la fecha 01/mes/año de la fecha incluida en la función.

Ejemplo: fechaDesde = Funcion.PrimerDia(LIQUIDACION.FechaDesde);

  • Funcion.DiasDelMes(#fecha#):

Se obtiene la cantidad de días del mes, o último día del mes.

Ejemplo: ultimoDiaDelMes = Funcion.DiasDelMes(LIQUIDACION.FechaDesde);

En este caso, si se tratase de una liquidación de agosto, la variable ultimoDiaDelMes guardará el valor 31.

  • Funcion.SumarFechas(D para dia/M para mes, cantidad, #fecha 2#):

A partir de una fecha, se obtiene una nueva fecha mediante la suma o resta de una cantidad de días o meses.

Ejemplos:

A. Para sumar seis meses a partir de la fecha desde de la liquidación:

fecha = Funcion.SumarFechas("M", 6, LIQUIDACION.FechaDesde);

La variable fecha va a sumarle la cantidad (6) de meses ("M") a la fecha desde de la liquidación.

B. Para restar 1 mes a partir de la fecha desde de la liquidación:

fecha = Funcion.SumarFechas("M", -1, LIQUIDACION.FechaDesde);

La variable fecha va a restarle la cantidad (-1) de meses ("M") a la fecha desde de la liquidación.

  • Funcion.RestarFechas(D/M/A, #fecha 1#, #fecha 2#):

Es la diferencia en días, meses o años entre la fecha 1 y la fecha 2.

Ejemplo: dias = Funcion.RestarFechas("D", LIQUIDACION.FechaDesde, EMPLEADO.FechaBaja);

La variable dias va a devolver la resta en días ("D") entre la fecha desde de la liquidación y la fecha de baja del colaborador.

  • Funcion.CompararFechas(#fecha 1#, #fecha 2#):

Compara fecha 1 con fecha 2:

  • Devuelve -1 si fecha 1 es menor que fecha 2.

  • Devuelve 1 si fecha 1 es mayor que fecha 2.

  • Devuelve 0 si son iguales.

  • Funcion.DiferenciaEnMeses(#fecha1#, #fecha2#):

Es la diferencia en meses entre dos fechas, sin tener en cuenta si son meses completos o no.

Ejemplo: meses = Funcion.DiferenciaEnMeses(#31/12/2024#, #31/12/2025#);

Pueden utilizarse fechas dinámicas (funciones, atributos, variables) o estáticas.

  • Funcion.FechaIngresoReconocido():

Es la fecha de alta o la fecha de antigüedad reconocida si existe. En esta función no se informan parámetros.

  • Funcion.GetInicioNovedad(Codigo o nombre de la novedad):

Es la fecha de inicio más cercana de una novedad con vigencia, siempre que el tipo de novedad esté vigente en la liquidación que se está procesando.

Ejemplo: fechaInicio = Funcion.GetInicioNovedad("Días Licencia Enfermedad");

  • Funcion.GetFinNovedad(Codigo o nombre de la novedad):

Es la fecha de fin de la novedad más cercana de un tipo de novedad con vigencia, siempre que ese tipo de novedad esté vigente en la liquidación que se está procesando.

Ejemplo: fechaFin = Funcion.GetFinNovedad("Días Licencia Enfermedad");

  • Funcion.getNovedad(Codigo o nombre de la novedad):

Se utiliza para obtener el valor de las novedades informadas en la transacción Novedades de liquidación. Las novedades obtenidas con esta función serán las que coincidan al menos en 1 día con el período que se esté liquidando (fecha desde a fecha hasta de la liquidación).

Ejemplo: horas = Funcion.getNovedad("Unidades Hs Extra 50%");

Si se informaron la cantidad de 10 horas extras a través de la transacción de novedades de liquidación, la variable horas guardará el valor 10.

  • Funcion.getNovedadFecha(Nombre novedad, #fecha desde#, #fecha hasta#):

Se utiliza para obtener el valor de una novedad con vigencia. Las novedades que se obtengan serán las que tengan una vigencia en la que estén incluidas las fechas de liquidación de la liquidación que se esté procesando.

Ejemplo: ajuste = Funcion.getNovedadFecha("Ajuste Retroactivo según Año de Pago 572",#01/10/2024#,#31/12/2024#);

  • Funcion.getNovedadFechaPago(Codigo o nombre de la novedad):

Se utiliza para obtener el valor de una novedad con vigencia. Las novedades que se obtengan serán las que tengan una vigencia en la que esté incluida la fecha de pago de la liquidación que se esté procesando.

Ejemplo: deduccion = Funcion.getNovedadFechaPago("Servicio Doméstico F572");

  • Funcion.getNovedadGenerica(Nombre o código de novedad, Nombre o código de dato adicional):

Se utiliza para obtener la cantidad o valor de una novedad genérica. Esta novedad depende del código o nombre de la novedad y de un dato adicional; este dato adicional es configurado según las necesidades del usuario. Las novedades que se obtengan serán las que estén vigentes para la liquidación que se esté procesando.

Ejemplo: Unidades1 = Funcion.getNovedadGenerica("Unidades Horas Trabajadas", "Caba");

  • Funcion.getNovedadGenericaValor(Nombre o código de dato adicional, Nombre o código del valor):

Se utiliza para obtener el valor del dato adicional del parámetro. Esta novedad depende del dato adicional; este dato adicional es configurado según las necesidades del usuario. En el maestro de datos adicionales de novedades se pueden configurar valores para ser recuperados por esta función; el valor recuperado será el vigente para la liquidación que se esté procesando.

Ejemplo: precio1 = Funcion.getNovedadGenericaValor("Caba","Valor1");

  • Funcion.ObtenerCantidadDias(novedad):

La función cuenta los días en común entre la vigencia de la novedad y las fechas desde/hasta de la liquidación. Es útil en el caso de los días de licencia.

Ejemplo: cantidad = Funcion.ObtenerCantidadDias("Días Licencia Enfermedad");

Si la fecha desde de la novedad es el 01/08/2025 y la fecha hasta es el 31/08/2025, la variable cantidad va a guardar el valor 31.

  • Funcion.diasVacaciones():

Obtiene los días de vacaciones a pagar, informados en la cuenta corriente de vacaciones. En esta función no se informan parámetros.

  • Funcion.diasVacacionesDescontar():

Obtiene los días de vacaciones a descontar, proporcionados según las fechas de liquidación. En esta función no se informan parámetros.

  • Funcion.SaldoVacaciones(anio):

Obtiene el saldo de vacaciones pendiente de pago para el año indicado en el parámetro. El año puede ser una variable con un dato obtenido a partir de la función parte de fecha.

  • Funcion.ParteEntera(valor):

Se obtiene la parte entera de un número.

Ejemplo: diasVacaciones = Funcion.ParteEntera({Vac Devengadas en el Año});

Si el concepto Vac Devengadas en el Año guardó el valor 23.5, la función va a insertar en la variable diasVacaciones el valor 23.

  • Funcion.Redondear(valor, decimales):

Se obtiene el valor redondeado con la cantidad de decimales indicados.

Ejemplo: importe = Funcion.Redondear({Precio Adic Art 30}, 2);

  • Funcion.sumHistorico(Codigo o nombre del concepto, L para fecha liquidable/P para fecha de pago, #fecha desde#, #fecha hasta#, novedadID):

Se obtiene la suma histórica de un concepto entre dos fechas. Puede ser por fecha de pago o por fecha de liquidación. Si es por fecha de pago, la función suma todos los importes cuya fecha de pago está entre las fechas de la función. Si es por fecha de liquidación, la función suma todos los importes cuyas fechas de liquidación coinciden al menos en un día con las fechas de la función.

Ejemplo: totalRemAnterior = Funcion.sumHistorico("{Total Remunerativo}", "L", LIQUIDACION.FechaDesde, LIQUIDACION.FechaHasta);

La variable totalRemAnterior va a guardar la suma del concepto Total Remunerativo liquidado entre la fecha desde de la liquidación y la fecha hasta de la liquidación, por fecha de liquidación ("L").

novedadID: este parámetro es optativo. Se usa solo cuando se quiere obtener la suma histórica de un concepto que se calculó con un tipo de novedad de descuento.

  • Funcion.maxHistorico(Codigo o nombre del concepto, L para fecha liquidable/P para fecha de pago, #fecha desde#, #fecha hasta#):

Se obtiene el máximo histórico mensual de un concepto entre dos fechas. Puede ser por fecha de pago o por fecha de liquidación. Si es por fecha de pago, la función obtiene el máximo mensual agrupando las liquidaciones por fecha de pago, teniendo en cuenta todas las liquidaciones cuya fecha de pago esté entre las fechas de la función. Si es por fecha de liquidación, se obtiene el máximo mensual agrupando por fechas de liquidación, teniendo en cuenta todas las liquidaciones cuyas fechas de liquidación coinciden al menos en un día con las fechas de la función.

Ejemplo: maxRem = Funcion.maxHistorico("{Total Remunerativo}", "L", LIQUIDACION.FechaDesde, LIQUIDACION.FechaHasta);

La función va a comparar todos los valores del concepto Total Remunerativo entre las fechas indicadas (fecha desde y hasta de la liquidación actual) por fecha de liquidación ("L") y guardar en la variable maxRem el valor más alto de todos los que haya encontrado.

  • Funcion.ultimoValorLiquidado(codigo o nombre del concepto, L para fecha liquidacion/P para fecha de pago, #fecha hasta#):

Se obtiene el último valor liquidado de un concepto hasta la fecha que se indica en el parámetro de la función. En el parámetro L/P se indica si la fecha indicada en el parámetro debe buscar en las liquidaciones por fecha hasta de las liquidaciones o por fecha de pago de las liquidaciones.

Ejemplo: valorAnterior = Funcion.ultimoValorLiquidado("{Saldo de Vacaciones}", "L", LIQUIDACION.FechaHasta);

La función va a buscar el último valor liquidado del concepto Saldo de Vacaciones hasta la fecha liquidación, por fecha de liquidación ("L").

  • Funcion.ultimoValorLiquidadoDesdeHasta(Codigo o nombre del concepto, L para fecha liquidable/P para fecha de pago, #fecha desde#, #fecha hasta#, modo de liquidacion, tipo de liquidacion):

Se obtiene el último valor liquidado de un concepto entre las fechas que se indican en el parámetro de la función. En el parámetro L/P se indica si la fecha indicada en el parámetro debe buscar en las liquidaciones por fecha hasta de las liquidaciones o por fecha de pago de las liquidaciones.

Los parámetros modo de liquidación y tipo de liquidación no son obligatorios, pero pueden utilizarse como filtros para realizar una búsqueda más específica.

Ejemplo: valorAnterior = Funcion.ultimoValorLiquidadoDesdeHasta("{Saldo de Vacaciones}", "L", LIQUIDACION.FechaDesde, LIQUIDACION.FechaHasta);

  • Funcion.Existe(atributo):

Esta función devuelve verdadero si el atributo ingresado en el parámetro existe en el colaborador. Se utiliza generalmente en las condiciones.

Ejemplo:

1  existeFechaEgreso = Funcion.Existe(EMPLEADO.FechaBaja);
2
3  if(existeFechaEgreso)begin
4  return 0;
5  endif;

En este caso, la variable existeFechaEgreso en la línea 1 guarda el valor verdadero, ya que el colaborador posee una baja registrada en el legajo, y en la línea 3, como la variable guardó el valor verdadero, ingresa por esa condición y devuelve 0 en la línea 4.

  • Funcion.NoExiste(atributo):

Esta función devuelve verdadero si el atributo ingresado en el parámetro no existe en el colaborador. Se utiliza generalmente en las condiciones.

Ejemplo:

1  noExisteFechaEgreso = Funcion.NoExiste(EMPLEADO.FechaBaja);
2
3  if(noExisteFechaEgreso)begin
4  return 2000;
5  endif;

En este caso, la variable noExisteFechaEgreso en la línea 1 guarda el valor verdadero, ya que el colaborador no posee una baja registrada en el legajo, y en la línea 3, como la variable guardó el valor verdadero, ingresa por esa condición y devuelve $2.000 en la línea 4.

  • Funcion.RunSP(Store procedure, [Lista de parametros]):

Esta función ejecuta un store procedure y retorna el valor que este devuelve.

El nombre del SP debe escribirse entre comillas y luego listar los parámetros de este separados por comas.

Ejemplo:

1  categoria = EMPLEADO.ConvenioCategoria.codigo;
2  basico = Funcion.RunSP("ValorCategoria_Comercio_052024", categoria);

El store procedure ValorCategoria_Comercio_052024 devuelve el valor de la categoría del colaborador del periodo 05/2024 y lo guarda en la variable basico.

  • Funcion.LiquidarGanancias(Impuesto tipo, Iteracion, persiste(1 o 0), #fecha desde#, #fecha hasta#, #fecha pago#, tipo de deducción):

Esta función es utilizada para liquidar el impuesto a las ganancias. Deben indicarse como obligatorios:

  • Tipo de impuesto: es el código del tipo de impuesto.
  • Instancia: es la instancia de ejecución de la función.

Y como opcionales:

  • Persistencia: 0 persiste / 1 no persiste.
  • Fecha desde: fecha desde para el cálculo.
  • Fecha hasta: fecha hasta para el cálculo.
  • Fecha pago: fecha pago para el cálculo.
  • Tipo de deducción: determina el valor del tipo de deducción a asignar a la variable.

Ejemplo 1:

1  impuesto = Funcion.LiquidarGanancias(tipoimpuesto,1);
2
3  return impuesto;

Ejemplo 2:

1  impuesto = Funcion.LiquidarGanancias(99, 4, 1, #01/01/2024#, #30/06/2024#, #30/06/2024#, "Impuesto a las Ganancias al mes de pago");
2
3  return impuesto;
  • Funcion.CodigoAdicional(codigoEmpresa, codigoAdicionalNombre):

Dado un código de empresa y un nombre de código adicional, devuelve el código adicional.

Funciones de deducciones

Las siguientes funciones obtienen datos del maestro de empleados, solapa Familiares, según los datos de parentesco, fecha inicio deducción y fecha fin deducción.

  • Funcion.Deducciones(codigo de parentesco):

Cuenta la cantidad de meses entre el 01/01/año de la fecha de pago, o fecha de inicio de la deducción si es posterior, y la fecha de pago de la liquidación, o fecha de fin de la deducción si es anterior, para el código de parentesco informado en el parámetro.

  • Funcion.DeduccionesDesde(codigo de parentesco, #fecha desde#):

Cuenta la cantidad de meses entre la fecha informada en el parámetro, o la fecha de inicio de la deducción si es posterior, hasta la fecha de pago de la liquidación, o fecha de fin de la deducción si es anterior.

  • Funcion.DeduccionesHasta(codigo de parentesco, #fecha hasta#):

Cuenta la cantidad de meses entre el 01/01/año de la fecha de pago, o fecha de inicio de la deducción si es posterior, hasta la fecha indicada en el parámetro, o la fecha de fin de la deducción si es anterior.

  • Funcion.DeduccionesBaja(codigo de parentesco):

Cuenta la cantidad de meses entre el 01/01/año de la fecha de pago, o fecha de inicio de la deducción si es posterior, y el 31/12/año de la fecha de pago, o la fecha de fin de la deducción si es anterior.

  • Funcion.DeduccionesBajaDesde(codigo de parentesco, #fecha desde#):

Cuenta la cantidad de meses entre la fecha informada en el parámetro, o la fecha de inicio de la deducción si es posterior, hasta el 31/12/año de la fecha de pago actual, o la fecha de fin de la deducción si es anterior.

  • Funcion.DeduccionesBajaHasta(codigo de parentesco, #fecha hasta#):

Cuenta la cantidad de meses entre el 01/01/año de la fecha de pago, o fecha de inicio de la deducción si es posterior, hasta el 31/12/año de la fecha de pago, o la fecha indicada en el parámetro si es anterior, o la fecha de fin de la deducción si es anterior.

  • Funcion.GetDeduccionNovedadFecha(nombre novedad o codigo novedad, fecha desde, fecha hasta):

Se utiliza para obtener el valor de las novedades de deducción informadas en la transacción Novedades de liquidación. Las novedades obtenidas con esta función serán las que coincidan al menos en 1 día con el período que se esté liquidando (fecha desde a fecha hasta de la liquidación o fecha de pago).

Ejemplo:

1  fpago = LIQUIDACION.FechaPago;
2  mespago = Funcion.ParteDeFecha("M", fpago);
3  finicio = Funcion.CrearFecha(1, mespago, Funcion.ParteDeFecha("A", fpago));
4  novedad = Funcion.GetDeduccionNovedadFecha("Movilidad Gravada Pluriempleo", finicio, fpago)
5  return novedad;

Si se informa el valor de $10.000 en la novedad “Movilidad Gravada Pluriempleo” dentro del periodo de pago de la liquidación, este importe se va a guardar en la variable novedad.

  • Funcion.sumHistoricoDeduccion(Codigo o nombre de la deduccion, L para fecha liquidable/P para fecha de pago, #fecha desde#, #fecha hasta#, [Codigo o nombre de la deduccion]):

Se obtiene la suma histórica de una deducción entre dos fechas. Puede ser por fecha de pago o por fecha de liquidación. Si es por fecha de pago, la función suma todos los importes cuya fecha de pago está entre las fechas de la función. Si es por fecha de liquidación, la función suma todos los importes cuyas fechas de liquidación coinciden al menos en un día con las fechas de la función.

Ejemplo:

1  fhasta = LIQUIDACION.FechaHasta;
2  fdesde = Funcion.CrearFecha(1, 1, Funcion.ParteDeFecha("A", fhasta));
3  deduliq = Funcion.sumHistoricoDeduccion("Remuneración Bruta Pluriempleo", "L", fdesde, fhasta);

En este caso, la función va a realizar la sumatoria de la deducción Remuneración Bruta Pluriempleo desde la fecha 01/01/año de la liquidación a la fecha hasta de la misma.

  • Funcion.getUltimaDeduccionLiquidadaDesdeHasta(Nombre del tipo de deducción/Código del tipo de deducción, L para fecha liquidacion/P para fecha de pago, #fecha desde#, #fecha hasta#, Modo de liquidación, Tipo de liquidación):

Se obtiene el último valor liquidado de una deducción entre las fechas que se indican en el parámetro de la función. En el parámetro L/P se indica si la fecha indicada en el parámetro debe buscar en las liquidaciones por fecha hasta de las liquidaciones o por fecha de pago de las liquidaciones.

Los parámetros modo de liquidación y tipo de liquidación no son obligatorios, pero pueden utilizarse como filtros para realizar una búsqueda más específica.

Ejemplo:

1  importe = Funcion.getUltimaDeduccionLiquidadaDesdeHasta("Retenciones Anteriores", "L", #01/01/2024#, #30/11/2024#, "", "NFIN_GAN_01");
2  return importe;

En este caso, la función va a buscar el último valor liquidado de la deducción Retenciones Anteriores por fecha de liquidación ("L") entre las fechas 01/01/2024 y 30/11/2024, del tipo de liquidación con código NFIN_GAN_01.

Si se precisa completar el último parámetro (tipo de liquidación) sin haber informado el modo de liquidación, es necesario informar el campo vacío ("").

Valores en campos de tipo combo

Los valores que devuelve liquidacion.TipoLiquidacion.modo son:

  • 0 = Mensual
  • 1 = Quincenal
  • 2 = SAC
  • 3 = Vacaciones
  • 6 = Extra
  • 7 = Final
  • 9 = Anual
  • 10 = Anticipo
  • 11 = Inicio
  • 12 = Fuera de temporada
  • 13 = Semanal
  • 14 = Catorcenal

Los valores que devuelve empleado.tiporemuneracion son:

  • 1 = Mensual
  • 2 = Jornal
  • 3 = Jornal diario
  • 4 = Destajo
  • 5 = Anual

Los valores que devuelve NOVEDAD.ModoCalculo son:

  • 1 = Porcentaje sobre remunerativo
  • 2 = Porcentaje sobre remunerativo y no remunerativo
  • 3 = Porcentaje sobre neto
  • 4 = Cuota

Errores de sintaxis

  • line xxx no viable alternative at input 'EOF': la última línea de la fórmula no debe estar vacía.