Cálculo de Nómina y Generación de Recibos
Al ejecutar el cálculo de un periodo, ALTUM ERP genera un recibo por cada empleado activo aplicando cinco calculators del dominio: ISR (Art. 96 LISR), subsidio al empleo, cuotas IMSS obrero, descuento Infonavit y SBC. Esta página describe con exactitud cómo funciona cada uno.
Requisitos
Sección titulada «Requisitos»- El periodo debe estar en estado BORRADOR.
- Las tablas fiscales del año del periodo deben estar cargadas:
TablaIsr,SubsidioEmpleoTabla,TablaImssCuotayUmaVigencia. - Debe existir al menos un empleado activo.
- Permiso
nomina.gestionar.
Ejecutar el cálculo
Sección titulada «Ejecutar el cálculo»Desde /nomina/periodos/:id, con el periodo en BORRADOR, haga clic en el botón “Calcular”.
El sistema:
- Valida que el periodo esté en BORRADOR.
- Carga la UMA vigente del año de inicio del periodo.
- Carga las tablas ISR, subsidio empleo y cuotas IMSS del mismo año.
- Itera sobre todos los empleados activos (
activo = true, sinfechaBajao confechaBajaposterior al inicio del periodo). - Genera un
ReciboNominapor empleado con percepciones, deducciones y otros pagos. - Actualiza los totales acumulados del periodo.
- Cambia el estado del periodo a CALCULADO.
Días trabajados
Sección titulada «Días trabajados»Para cada empleado se calculan los días efectivamente laborados en el periodo:
- Caso normal: si el empleado ya estaba activo antes del inicio del periodo, los días trabajados son los días nominales del tipo (
SEMANAL=7,CATORCENAL=14,QUINCENAL=15,MENSUAL=30para fines de cálculo). - Ingreso a mitad del periodo: si
fechaIniciodel empleado es mayor quefechaIniciodel periodo, se cuentan los días desde la fecha de ingreso efectivo hasta el último día del periodo (inclusive). Si el resultado es ≤ 0, el empleado se omite.
Percepciones
Sección titulada «Percepciones»El sistema genera una sola percepción base:
| Clave SAT | Concepto | Importe gravado |
|---|---|---|
001 |
Sueldos, Salarios Rayas y Jornales | salarioDiario × diasTrabajados |
El importe exento es $0.00. La base gravable para ISR y subsidio es este mismo importe de sueldos.
Cálculo del ISR (Art. 96 LISR)
Sección titulada «Cálculo del ISR (Art. 96 LISR)»El sistema aplica el método de prorrateo mensual definido en el Art. 96 de la LISR:
baseMensual = baseGravable × 30 / diasPeriodoexcedente = baseMensual − limiteInferior del tramoisrMensual = cuotaFija + excedente × porcentajeExcedenteisrPeriodo = isrMensual × diasPeriodo / 30Donde diasPeriodo es 7, 14, 15 o 30 según el tipo, y la tabla ISR consultada tiene periodicidad = 'MENSUAL' y el anioFiscal del año del periodo.
Los tramos de la tabla se ordenan por limiteInferior ascendente. El tramo aplicable es aquel donde limiteInferior <= baseMensual < limiteSuperior (el último tramo tiene limiteSuperior = null).
Cálculo del subsidio al empleo
Sección titulada «Cálculo del subsidio al empleo»El subsidio sigue el mismo esquema de mensualización y prorrateado:
baseMensual = baseGravable × 30 / diasPeriodosubsidioMensual = importe fijo del tramo de tabla donde baseMensual está en [limiteInferior, limiteSuperior)subsidioPeriodo = subsidioMensual × diasPeriodo / 30Si baseMensual no cae en ningún tramo (salario por encima del rango de la tabla), el subsidio es $0.00.
ISR neto a retener
Sección titulada «ISR neto a retener»isrNeto = max(0, isrPeriodo − subsidioPeriodo)- Si
isrPeriodo >= subsidioPeriodo: se deduceisrNeto(clave SAT001). - Si
subsidioPeriodo > isrPeriodo: no hay retención de ISR; se genera unOtroPago(clave SAT002) con el diferencial.
Cuotas IMSS obrero
Sección titulada «Cuotas IMSS obrero»Las cuotas a cargo del trabajador se calculan a partir del SBC (Salario Base de Cotización) almacenado en el registro del empleado, los diasTrabajados y las cuotas del modelo TablaImssCuota:
| Concepto | Fórmula | Nota |
|---|---|---|
| CESANTIA_VEJEZ | SBC × porcentajeObrero × días |
— |
| EYM_FIJA (enf. y maternidad fija) | cuotaFijaMensual × (días / 30) |
— |
| IV (invalidez y vida) | SBC × porcentajeObrero × días |
— |
| RETIRO | $0.00 |
Sin cuota obrera |
| EYM_DIFERENCIAL | $0.00 |
Sin cuota obrera |
| GUARDERÍAS | $0.00 |
Sin cuota obrera |
| RT (riesgos de trabajo) | $0.00 |
Sin cuota obrera |
El total de cuotas obrero se registra como deducción con clave SAT 002 (“Cuotas IMSS”).
Cálculo del SBC
Sección titulada «Cálculo del SBC»El SBC almacenado en el registro del empleado se calcula con la siguiente fórmula:
SBC_bruto = salarioDiario × factorIntegraciontope = 25 × uma.valorDiarioSBC = mín(SBC_bruto, tope)La UMA de referencia es la del año en que se guarda o actualiza el registro del empleado (consultada del modelo UmaVigencia). El SBC no se recalcula automáticamente al cambiar la UMA cada febrero; debe actualizarse manualmente desde la ficha del empleado.
Descuento Infonavit
Sección titulada «Descuento Infonavit»Solo aplica cuando tieneCredito = true en el registro del empleado:
infonavit = SBC × porcentajeInfonavit × (días / 30)Si tieneCredito = false, el descuento es $0.00. El resultado se registra como deducción con clave SAT 006 (“Descuento Infonavit”).
Otros pagos: subsidio para el empleo
Sección titulada «Otros pagos: subsidio para el empleo»Si subsidioPeriodo > 0 y subsidioPeriodo >= isrPeriodo, se genera un OtroPago con clave SAT 002:
| Campo en el CFDI | Valor |
|---|---|
importe |
subsidioPeriodo − isrPeriodo (diferencial efectivamente pagado) |
subsidioCausado |
subsidioPeriodo (subsidio de tabla, requerido por SAT NOM42) |
Totales del recibo
Sección titulada «Totales del recibo»totalPercepciones = suma(importeGravado + importeExento) de todas las percepcionestotalDeducciones = suma(importe) de todas las deduccionestotalOtrosPagos = suma(importe) de todos los otros pagosneto = totalPercepciones − totalDeducciones + totalOtrosPagosTotales del periodo
Sección titulada «Totales del periodo»Una vez generados todos los recibos, el sistema acumula:
| Campo | Descripción |
|---|---|
totalPercepciones |
Suma de percepciones de todos los recibos |
totalDeducciones |
Suma de deducciones de todos los recibos |
totalOtrosPagos |
Suma de otros pagos de todos los recibos |
totalNeto |
Suma del neto de todos los recibos |
totalImssPatronal |
Suma de cuotas patronales IMSS de todos los empleados |
Estos totales se muestran en las tarjetas de resumen de la pantalla de detalle del periodo.
Registro en el Diario Contable
Sección titulada «Registro en el Diario Contable»Al finalizar el cálculo, el sistema emite el evento nomina.periodo.timbrado (cuando se timbra). Si la opción “Generar póliza contable automáticamente” está activada en la configuración del módulo (/nomina/configuracion), se crea una póliza de diario con los totales del periodo. Para activar esta opción, se requiere el permiso nomina.poliza.
Casos frecuentes
Sección titulada «Casos frecuentes»¿Por qué el ISR calculado difiere del que yo esperaba?
Verifique que la tabla ISR del año del periodo esté cargada con la periodicidad MENSUAL. El sistema mensualiza la base gravable antes de buscar el tramo, y luego proratea al periodo. Si usa el tipo MENSUAL, el prorrateado queda en 30/30 = 1, es decir, sin ajuste.
¿Qué pasa si un empleado tiene salario por encima del máximo de subsidio?
El subsidio es $0.00 y no se genera ningún OtroPago; en cambio, el CFDI incluirá el nodo SubsidioEmpleo con importe 0.00 y subsidioCausado = "0.00" según lo exige el SAT.
¿Las incapacidades IMSS se calculan automáticamente?
El modelo IncapacidadNomina existe en la base de datos, pero la interfaz actual no expone un formulario para registrarlas manualmente. Los recibos se generan con incapacidades: [].