﻿# Fórmulas de componentes salariales

> Cómo escribir, probar y corregir las fórmulas de los componentes salariales de tu planilla.

Source: https://resources.aragro.com/formulas-de-planilla/
Language: es

Relative links and media resolve against the source URL.

> **Disponibilidad:** Para utilizar Planilla, tu cuenta debe tener habilitada esta función y tu rol debe contar con los permisos correspondientes. Si la opción no aparece, [contacta al soporte de Aragro](mailto:hola@aragro.com).

Cada estructura de planilla está formada por **componentes salariales**: devengados (salario, séptimo, bonificaciones), deducciones (IGSS, ISR) y totales. Un componente puede ser un monto fijo o una fórmula. Esta guía explica cómo escribir esas fórmulas, cómo probarlas antes de completar la planilla y cómo resolver los errores más comunes.

## Antes de empezar

- Ten listos tus [empleados](/empleados/) y la estructura de planilla a la que pertenecen. Si aún no la tienes, revisa las [preguntas frecuentes de Planilla](/planilla/).
- Escribe primero la regla en palabras o en Excel, con un empleado real de ejemplo y el resultado que esperas. Por ejemplo: “Juan asistió 10 días; su bonificación debe ser Q83.33”. Ese ejemplo es la forma más rápida de comprobar después que la fórmula está bien.

## Cómo se arma una fórmula

### Nombre y abreviatura

Cada componente tiene un **nombre** (el que aparece en la planilla y en los reportes) y una **abreviatura**. La abreviatura es la que usas para referirte a ese componente dentro de otras fórmulas, por ejemplo `Vtrabajo` o `SeptPlanilla`.

- Usa abreviaturas cortas, sin espacios ni tildes.
- Escríbelas en las fórmulas exactamente igual a como las definiste.
- Ordena la lista de componentes de forma lógica (datos base, devengados, deducciones y totales) para que sea fácil revisarla de arriba hacia abajo.

### Variables del sistema

Aragro calcula datos de cada empleado durante el período a partir de las órdenes de trabajo y las ausencias. Estas son algunas de las variables más usadas; la lista completa aparece en el panel **Variables disponibles** del editor de fórmulas.

| Variable | Qué representa |
| --- | --- |
| `attendedDays` | Días asistidos en el período. |
| `dailyWageList` | Lista de los pagos por jornada del período, uno por día. |
| `pieceworkWages` | Lista de los pagos a destajo del período. |
| `overtimePay` | Pago por horas extra. |
| `paidLeaves` | Días de ausencia pagada. |
| `holidays` | Días de asueto en el período. |
| `holidayPay` | Pago de los asuetos del período. |
| `activityDays` | Días trabajados por actividad. Se lee con `GETNUM(activityDays, 'código')`, usando el código de la actividad. |

Las variables que son **listas** (por ejemplo, `dailyWageList` y `pieceworkWages`) se usan dentro de funciones como `SUM` o `COUNT`, no solas.

### Funciones y operadores

El editor muestra las funciones disponibles. Las más útiles para planilla son:

- **Lógica:** `IF`, `AND`, `OR`, `NOT`, `SWITCH`, `CASE`
- **Números:** `MIN`, `MAX`, `SUM`, `AVG`, `COUNT`, `ROUND`, `ROUNDUP`, `ROUNDDOWN`, `ABS`, `GETNUM`
- **Listas:** `FILTER`, `MAP`, `ALL`, `ANY`, `PLUCK`
- **Comparación:** `<`, `>`, `<=`, `>=`, `=`

Usa punto para los decimales (`119.21`) y escribe los porcentajes como decimales: 4.83 % se escribe `0.0483`.

## Ejemplos

Estos ejemplos vienen de planillas agrícolas en Guatemala. Los montos y tasas son de ejemplo: confirma los valores vigentes con tu contador antes de usarlos.

### Bonificación incentivo (Decreto 37-2001) por quincena

Paga Q8.33 por día asistido, redondeado hacia arriba, con un máximo de Q125 por quincena. `Asistencia` es un componente anterior igual a `attendedDays`.

```
MIN(ROUNDUP(8.333333333333333 * Asistencia, 0), 125)
```

### Bonificación adicional a destajo

Paga la diferencia cuando lo ganado a destajo más las horas extra supera el salario garantizado (`Valor_trabajo`). Si no lo supera, paga cero.

```
IF((SUM(pieceworkWages) - Valor_trabajo) + overtimePay <= 0, 0, (SUM(pieceworkWages) - Valor_trabajo) + overtimePay)
```

### Jornales trabajados

Cuenta los días en los que el empleado tuvo un pago por jornada mayor que cero.

```
COUNT(FILTER(dailyWageList, x, x > 0))
```

### IGSS laboral

Aplica la cuota laboral sobre los devengados afectos.

```
(Vtrabajo + SeptPlanilla + Asuetoplanilla) * 0.0483
```

## Practica con la calculadora

Escribe los días, el salario y lo ganado a destajo de un empleado para ver sus totales con las fórmulas de esta guía. Para probar tus propias fórmulas, abre **Prueba tus propias fórmulas**: el resultado se actualiza al instante y, si hay un error, te explica cómo corregirlo.

<formula-calculator lang="es" data-pagefind-ignore="all">
<p>La calculadora interactiva está disponible en la versión web de esta guía.</p>
</formula-calculator>

## Prueba antes de completar

1. Crea la entrada de planilla en estado **Borrador** y pulsa **Generar Planilla**.
2. Busca a tu empleado de ejemplo y compara cada componente con el resultado que esperabas.
3. Si necesitas revisar muchos empleados, exporta la entrada (**Entrada de Planillas → Exportar**) y compárala en Excel.
4. Corrige la fórmula, vuelve a generar y repite hasta que todo coincida.
5. Revisa también el nombre de la entrada: una entrada completada ya no se puede renombrar.
6. Solo entonces pulsa **Completar Entrada de Planillas**. Para corregir una entrada completada hay que revertirla, lo que requiere permisos y la deja en estado Revertida.

## Errores comunes

| Lo que pasa | Causa | Solución |
| --- | --- | --- |
| Error de sintaxis en una comparación | Se escribió `=<` o `=>`. | Escribe `<=` y `>=`. |
| “If has too few operands” | A un `IF` le falta una de sus tres partes, o quedó texto de prueba dentro de la fórmula. | Usa siempre `IF(condición, valor si se cumple, valor si no se cumple)` y borra cualquier texto que no sea parte del cálculo. |
| “Too many closing parentheses” | Un paréntesis se cerró antes de tiempo, por ejemplo `ROUNDUP(x), 0)`. | Cuenta los paréntesis: `ROUNDUP(x, 0)`. |
| Una variable o abreviatura no se reconoce | Está mal escrita o no existe en esa estructura. | Cópiala del panel **Variables disponibles** o de la lista de componentes. |
| El resultado sale negativo | La regla no contempla un caso, por ejemplo un empleado con pocos días. | No lo resuelvas solo con `ABS()`: cambia el signo y afecta a todos los componentes que usan ese resultado. Usa `MAX(..., 0)` solo si la regla de verdad es “nunca menos de cero”. Si no, define con tu ejemplo qué debe pagarse en ese caso y ajusta la fórmula. |

Si tienes alguna pregunta que este documento no haya resuelto, nos puedes contactar en el chat de Aragro o escribir a [hola@aragro.com](mailto:hola@aragro.com).
