En Abacista las fórmulas tienen una vigencia anual, por lo cual ha sido necesario incluir un nuevo identificador con la fecha del 1 de mayo de 2024 (FECHA_1_MAYO_2024) con el fin de facilitar las nuevas fórmulas relacionadas al nuevo método de cálculo del subsidio para el empleo.
Debido a este cambio que abarca solo parte del ejercicio, se modificaron las fórmulas para los campos de nómina ISPT_SUBSIDIO y SUBSIDIO_EMPLEO condicionando a que la fecha final del periodo del pago PERIODO_PAGO_FIN sea anterior al 1 de mayo:
En esta fórmula podemos ver la condición para aplicar las nuevas reglas del subsidio de acuerdo al decreto publicado el 1 de mayo en el DOF:
/**
*ISPT_SUBSIDIO
*Subsidio al empleo
*/
if (PERIODO_PAGO_FIN < FECHA_1_MAYO_2024) {
BASE_GR_SIN_AGUINALDO = C$ISR_BASE_GRAVABLE - C$AGUINALDO_GR;
resultado = fx.tablaMX(formulaDet, PERIODO_DET, BASE_GR_SIN_AGUINALDO);
} else {
if (C$ISR_BASE_GRAVABLE * 30.4 / DIAS_EN_PERIODO > 9081) {
resultado = 0;
} else {
resultado = UMA_PERIODO * 11.82 / 100;
}
}
Ejemplos de subsidios para 2024 con valor de la UMA en $108.57.
Periodo | Días en Periodo | UMA del Periodo | Subsidio (11.82%) |
---|---|---|---|
Semanal | 7 | 759.99 | 89.83 |
Quincenal | 15 | 1,628.55 | 192.49 |
Mensual | 30.4 | 3,300.53 | 390.12 |
Este campo representa el subsidio a entregar y también refleja las nuevas reglas del decreto mencionado.
/**
*SUBSIDIO_EMPLEO
*Subsidio al Empleo
*/
if (PERIODO_PAGO_FIN <= FECHA_1_MAYO_2024) {
tieneSubsidio = (C$ISPT_SUBSIDIO > 0);
resultado = C$ISPT_ANTES_SUBS + C$ISPT_SUBSIDIO;
// Siempre debe ser positivo
// Si existe subsidio, pone 0.01 en vez de 0
// de acuerdo al apendice 5 de la guia de llenado de la nómina
resultado = resultado>0?resultado:(tieneSubsidio?0.01:0);
} else {
// No se entrega subsidio
resultado = 0
}
Esta fórmula no se modificó ya que con los dos cambios mencionados anteriormente cumplimos con el decreto que menciona:
/**
*ISR
*Impuesto Sobre la Renta Retenido
*/
//esSalarioMinimo = (SUELDO_DIARIO == SMGD);
//if (esSalarioMinimo) {
// resultado = 0;
//} else {
resultado = C$ISPT_ANTES_SUBS + C$ISPT_SUBSIDIO;
//}
//Siempre debe ser negativo
return resultado < 0 ? resultado : 0;