function obtenerFechaInicioPeriodo() {
var fechaActual = new Date();
//const fechaActual = new Date("2023-12-21T12:00:00-06:30");
if (fechaActual.getDate() <= 20) {
return formatearFecha(new Date(fechaActual.getFullYear(), fechaActual.getMonth() + 1, 1)); // 01/01/2024
} else {
return formatearFecha(new Date(fechaActual.getFullYear(), fechaActual.getMonth() + 2, 1)); // 01/01/2024
}
}
function obtenerFechaFinPeriodo(intervalo) {
var fechaActual = new Date();
//const fechaActual = new Date("2023-12-21T12:00:00-06:30");
var fechaFin;
// Obtiene el día actual para obtener la fecha base
if (fechaActual.getDate() <= 20) {
fechaActual.setMonth(fechaActual.getMonth() + 1);
fechaActual.setDate(1); // Primer día del mes siguiente
} else {
fechaActual.setMonth(fechaActual.getMonth() + 2);
fechaActual.setDate(1); // Primer día del mes siguiente
}
console.log("fechaActual: " + fechaActual)
switch (intervalo) {
case 'mensual':
fechaFin = new Date(fechaActual.getFullYear(), fechaActual.getMonth() + 1, 0);
break;
case 'bimestral':
fechaFin = new Date(fechaActual.getFullYear(), fechaActual.getMonth() + 2, 0);
break;
case 'semestral':
fechaFin = new Date(fechaActual.getFullYear(), fechaActual.getMonth() + 6, 0);
break;
case 'anual':
fechaFin = new Date(fechaActual.getFullYear(), fechaActual.getMonth() + 12, 0);
break;
default:
fechaFin = fechaActual;
break;
}
console.log("fechaFin: " + fechaFin)
return formatearFecha(fechaFin);
}
function formatearFecha(fecha) {
var dia = fecha.getDate().toString().padStart(2, '0');
var mes = (fecha.getMonth() + 1).toString().padStart(2, '0');
var anio = fecha.getFullYear();
return `${dia}/${mes}/${anio}`;
}
// Obtiene el numero de dias del mes y a�o dado
var getDaysInMonth = function(month, year) {
// Here January is 1 based
// Day 0 is the last day in the previous month
return new Date(year, month, 0).getDate();
// Here January is 0 based
// return new Date(year, month+1, 0).getDate();
};
function formatoFecha(fecha) {
var formatted_date = fecha.getDate() + "-" + (fecha.getMonth() + 1) + "-" + fecha.getFullYear();
return formatted_date;
};
function diasDelMesYAñoActual() {
console.log("diasDelMesYAñoActual");
var fecha = new Date();
return new Date(fecha.getFullYear(), fecha.getMonth() + 2, 0).getDate();
}
function diasDelMesYAñoActualDos() {
console.log("diasDelMesYAñoActualDos");
var fecha = new Date();
return new Date(fecha.getFullYear(), fecha.getMonth() + 3, 0).getDate();
}
// Obtiene el a�o actual
var getCurrentYear = function() {
return new Date().getFullYear();
};
// cambia a mayusculas
function mayus(e) {
e.value = e.value.toUpperCase();
}
// Solo permite capturar numeros y punto
function permitirNumerosPunto(e) {
var allowedCode = [46]; // Permite .
var charCode = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode
: ((e.which) ? e.which : 0));
if ((charCode < 48 || charCode > 57)
&& (allowedCode.indexOf(charCode) == -1)) {
e.preventDefault();
return false;
}
}
// Solo permite capturar numeros
function permitirNumeros(e) {
var charCode = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode
: ((e.which) ? e.which : 0));
if ((charCode < 48 || charCode > 57)) {
e.preventDefault();
return false;
}
}
// MEtodo que solo permite texto de a..z A..Z 0..9 y los simbolos � � ' - . / y
// espacio(32)
function validaCaracteres(e) {
var allowedCode = [241, 209, 39, 45, 46, 47, 32];
var charCode = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode
: ((e.which) ? e.which : 0));
if (charCode > 31 && (charCode <= 64 || charCode > 90)
&& (charCode < 97 || charCode > 122)
&& (charCode < 48 || charCode > 57)
&& (allowedCode.indexOf(charCode) == -1)) {
e.preventDefault();
return false;
}
}
// No permite pipe
function permitirNumerosPunto(e) {
var allowedCode = [46]; // Permite .
var charCode = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode
: ((e.which) ? e.which : 0));
if ((charCode < 48 || charCode > 57)
&& (allowedCode.indexOf(charCode) == -1)) {
e.preventDefault();
return false;
}
}
// trunca a 2 decimales
function trunc(x, posiciones) {
posiciones = 0;
if (!esEntero(x)) {
console.log("entra:" + x);
var s = x.toString();
var l = s.length;
var decimalLength = s.indexOf('.') + 1;
var numStr = s.substr(0, decimalLength + posiciones);
//console.log("fin:"+numStr);
return Number(numStr);
} else {
console.log("x: " + x);
return (x);
}
}
// se valida si es decimal o no
function esEntero(numero) {
if (numero % 1 == 0) {
return true;
// //console.log("Es un numero entero");
} else {
return false;
// //console.log("Es un numero decimal");
}
}
function test() {
var tiempo = setTimeout(obtenerCuotas, 1);
}
function test2() {
var tiempo = setTimeout(obtenerCuotas2, 1);
}
/**
* Calculo cuando se selecciona Pago mes completo
*/
function calcular(cveTrab, dias, fechaInicioPeriodo, fechaFinPeriodo) {
console.log("Entrando al metodo calcular...")
console.log("cveTrab: " + cveTrab);
console.log("dias: " + dias);
console.log("fechaInicioPeriodo: " + fechaInicioPeriodo);
console.log("fechaFinPeriodo: " + fechaFinPeriodo);
//var fecha = new Date("2023-04-24T12:00:00-06:30");
var fecha = new Date();
var numDia = formatoFecha(fecha);
var str = numDia.toString();
str = str.split('-', 3);
str = str[0];
var diaInt = parseInt(str);
var diasDelMes;
if (diaInt <= 20) {
diasDelMes = diasDelMesYAñoActual();
//console.log("diasDelMes: " + diasDelMes);
} else {
diasDelMes = diasDelMesYAñoActualDos();
//console.log("diasDelMes: " + diasDelMes);
}
var salarioMinimoCentro = 248.93;
var salarioMinimoFrontera = 312.41;
var salarioMinimoMensual = (261.20 * diasDelMes);
var salarioMinimo;
var uma = 108.57;
if ($('input[name=pago]:checked').val() === 'pagoMesCompleto') {
salarioMinimo = salarioMinimoMensual;
} else {
salarioMinimo = salarioMinimoFrontera;
}
var diasTotales = parseInt(dias);
var numMeses = 1;
var salarioMensual = parseFloat(accounting.toFixed($("#salarioDiario_1").val(), 2));
if (diasTotales <= 31) {
numMeses = 1;
} else if (diasTotales >= 32 && diasTotales < 63) {
numMeses = 2;
} else if (diasTotales >= 168 && diasTotales < 186) {
numMeses = 6;
} else if (diasTotales >= 336) {
numMeses = 12;
}
console.log("salarioMensual: " + salarioMensual);
var salarioDiario = ((salarioMensual * numMeses) / diasTotales);
salarioDiario = parseFloat(salarioDiario).toFixed(2);
if (salarioDiario < 261.20) {
salarioDiario = 261.20;
}
if (salarioDiario > (uma * 25)) {
salarioDiario = (uma* 25);
}
console.log("salarioDiario: " + salarioDiario);
console.log("numMeses: " + numMeses);
console.log("diasTotales: " + diasTotales);
var diasPer = $("#diasTrabajador_1").val();
if (valida(salarioMinimo, uma, cveTrab, diasPer, salarioDiario) == false) {
return;
}
console.log("salario mensual:: " + salarioDiario);
getCuotaObreroPatronal(salarioDiario, uma, diasPer, cveTrab, dias, fechaInicioPeriodo, fechaFinPeriodo);
}
/**
* Calculo cuando se selecciona Pago por día
*/
function calcular2(cveTrab, dias, fechaInicioPeriodo, fechaFinPeriodo) {
console.log("Entrando al metodo calcular2 pago por día...");
console.log("cveTrab: " + cveTrab);
console.log("dias:" + dias);
console.log("fechaInicioPeriodo: " + fechaInicioPeriodo);
console.log("fechaFinPeriodo: " + fechaFinPeriodo);
//var fecha = new Date("2023-04-24T12:00:00-06:30");
var fecha = new Date();
var numDia = formatoFecha(fecha);
var str = numDia.toString();
str = str.split('-', 3);
str = str[0];
var diaInt = parseInt(str);
//console.log("día del mes actual: " + diaInt);
var diasDelMes;
if (diaInt <= 20) {
diasDelMes = diasDelMesYAñoActual();
console.log("diasDelMes: " + diasDelMes);
} else {
diasDelMes = diasDelMesYAñoActualDos();
console.log("diasDelMes: " + diasDelMes);
}
console.log("cveTrab: " + cveTrab);
var salarioMinimoCentro = 248.93;
var salarioMinimoFrontera = 312.41;
var salarioMinimo;
var uma = 108.57;
if ($('input[name=ubicacion]:checked').val() === 'centro') {
salarioMinimo = salarioMinimoCentro;
} else {
salarioMinimo = salarioMinimoFrontera;
}
console.log("salarioMinimo:: " + salarioMinimo);
var salarioDiario = parseFloat(trunc($("#salarioDiario_2").val(), 2));
console.log("salarioDiario:: " + salarioDiario);
//console.log("salarioDiario:" + salarioDiario)
var diasPer = $("#diasTrabajador_1").val();
if (validaPagoPorDia(salarioMinimo, uma, cveTrab, diasPer, salarioDiario) == false) {
return;
}
console.log("validaPagoPorDia OK");
var salarioDiario = $("#salarioDiario_2").val();
salarioDiario = parseFloat(salarioDiario).toFixed(2);
console.log("salarioDiario:: " + salarioDiario);
var FactorVacDesc = 1.33;
if (cveTrab == 1 && diasPer < diasDelMes || cveTrab == 5 && diasPer <= diasDelMes) {
salarioDiario = salarioDiario * FactorVacDesc;
salarioDiario = redondearDecimales(salarioDiario);
console.log("salarioDiario:: " + salarioDiario);
if (salarioDiario > (uma * 25)) {
salarioDiario = (uma * 25);
}
console.log("salarioDiario con factor: " + salarioDiario);
getCuotaObreroPatronal(salarioDiario, uma, diasPer, cveTrab, dias, fechaInicioPeriodo, fechaFinPeriodo);
}
else {
console.log("Entrando al Else");
//console.log("salarioDiario Sin Factor: " + salarioDiario);
getCuotaObreroPatronal(salarioDiario, uma, diasPer, cveTrab, dias, fechaInicioPeriodo, fechaFinPeriodo);
}
}
//Metodo para obtener las cuotas obreras patronales.
function getCuotaObreroPatronal(salario, uma, diasTrabajados, cveTrab, dias, fechaInicioPeriodo, fechaFinPeriodo) {
console.log("Entra el metodo getCuotaObreroPatronal mensual...");
console.log("salario: " + salario);
console.log("uma: " + uma);
console.log("diasTrabajados: " + diasTrabajados);
console.log("cveTrab: " + cveTrab);
console.log("dias: " + dias); //Enviar al servlet
console.log("fechaInicioPeriodo: " + fechaInicioPeriodo) //Enviar al servlet
console.log("fechaFinPeriodo: " + fechaFinPeriodo)
var totalPatronAportacionInfonavit;
var totalCuotaPatronal;
var totalCuotaObrero;
//Método encargado de calcular las cuotas.
function calcularCuotas(salDarioIntegrado, diasRecibidos) {
var salDarioIntegrado = redondeo(salario);
salDarioIntegrado = parseFloat(salDarioIntegrado);
var diaMax = parseInt(diasRecibidos);
console.log("diaMax: " + diaMax);
var cuotaFijaPat = redondeo(((uma * diaMax) * 0.204));
var fecha = new Date();
var numDia = formatoFecha(fecha);
var str = numDia.toString();
str = str.split('-', 3);
str = str[0];
var diaInt = parseInt(str);
var mes;
if (diaInt <= 20) {
mes = fecha.getMonth() + 2;
} else {
mes = fecha.getMonth() + 3;
}
var factorCVpatronal = obtenerFactorCVpatronal(mes, salDarioIntegrado);
console.log("factorCVpatronal: " + factorCVpatronal);
console.log("salDarioIntegrado: " + salDarioIntegrado);
// si es negativo no se contempla;
var cuotaAdicPat = redondeo((((salDarioIntegrado - (uma * 3)) * diaMax) * 0.0110));
cuotaAdicPat = ((cuotaAdicPat < 0) ? 0 : redondeo(cuotaAdicPat));
var cuotaAdicObr = redondeo((((salDarioIntegrado - (uma * 3)) * diaMax) * 0.0040));
cuotaAdicObr = ((cuotaAdicObr < 0) ? 0 : redondeo(cuotaAdicObr));
var prestDineroPat = redondeo((((salDarioIntegrado * diaMax) * 0.70) / 100));//
var prestDineroObr = redondeo((((salDarioIntegrado * diaMax) * 0.25) / 100));
var gastMedPenPat = redondeo((((salDarioIntegrado * diaMax) * 1.05) / 100));
var gastMedPenObr = redondeo((((salDarioIntegrado * diaMax) * 0.375) / 100));
var riesgoTrabPat = redondeo((((salDarioIntegrado * diaMax) * 0.54355) / 100));
var invalVidaPat = redondeo((((salDarioIntegrado * diaMax) * 1.75) / 100));
var invalVidaObr = redondeo((((salDarioIntegrado * diaMax) * 0.625) / 100));
var guarderiaPrestPat = redondeo((((salDarioIntegrado * diaMax) * 1.0) / 100));
var retiroPat = redondeo((((salDarioIntegrado * diaMax) * 2.0) / 100));
var cecentiaPat = redondeo((((salDarioIntegrado * diaMax) * factorCVpatronal) / 100));
var cecentiaObr = redondeo((((salDarioIntegrado * diaMax) * 1.125) / 100));
var cuotaPatronal = redondeo(parseFloat(cuotaFijaPat) + parseFloat(cuotaAdicPat) + parseFloat(prestDineroPat)
+ parseFloat(gastMedPenPat) + parseFloat(riesgoTrabPat) + parseFloat(invalVidaPat) +
parseFloat(guarderiaPrestPat) + parseFloat(retiroPat) + parseFloat(cecentiaPat));
var cuotaObrero = redondeo(parseFloat(cuotaAdicObr) + parseFloat(prestDineroObr) + parseFloat(gastMedPenObr)
+ parseFloat(invalVidaObr) + parseFloat(cecentiaObr));
console.log("return cuotaObrero: " + cuotaObrero);
console.log("return: cuotaPatronal: " + cuotaPatronal);
return [cuotaPatronal, cuotaObrero];
}
if (cveTrab == 5) {
console.log("Entra a calculo por día");
totalPatronAportacionInfonavit = parseFloat(calculoPatronAportacionPorDia(salario, diasTrabajados)).toFixed(2);
var [cuotaPatronal, cuotaObrero] = calcularCuotas(salario, dias);
$("#cuotaObrera_" + cveTrab).text(accounting.formatMoney(cuotaObrero));
$("#cuotaPatronal_" + cveTrab).text(accounting.formatMoney(cuotaPatronal));
$("#cuotaIMSS_" + cveTrab).text(accounting.formatMoney(totalPatronAportacionInfonavit));
var totalCuotas = redondeo(parseFloat(cuotaPatronal) + parseFloat(cuotaObrero) + parseFloat(totalPatronAportacionInfonavit));
$("#totalPagar_" + cveTrab).text(accounting.formatMoney(totalCuotas));
}
else if (cveTrab === 1) {
totalPatronAportacionInfonavit = parseFloat(calculoPatronAportacionMensual(salario, dias)).toFixed(2);
var [cuotaPatronal, cuotaObrero] = calcularCuotas(salario, dias);
$("#cuotaObrera_" + cveTrab).text(accounting.formatMoney(cuotaObrero));
$("#cuotaPatronal_" + cveTrab).text(accounting.formatMoney(cuotaPatronal));
$("#cuotaIMSS_" + cveTrab).text(accounting.formatMoney(totalPatronAportacionInfonavit));
var totalCuotas = redondeo(parseFloat(cuotaPatronal) + parseFloat(cuotaObrero) + parseFloat(totalPatronAportacionInfonavit));
$("#totalPagar_" + cveTrab).text(accounting.formatMoney(totalCuotas));
}
else {
console.log("Entra al else para " + cveTrab);
return obtenerPeriodosMultilineaServlet(fechaInicioPeriodo, fechaFinPeriodo, dias)
.then(function(response) {
console.log("Invocando periodos multilinea para cveTrab: " + cveTrab)
totalPatronAportacionInfonavit = 0;
totalCuotaPatronal = 0;
totalCuotaObrero = 0;
console.log("multilinas obtenidas: " + response.length + " para " + cveTrab);
for (var i = 0; i < response.length; i++) {
var diasMultilinea = response[i].diasLinea;
console.log("diasMultilinea: " + diasMultilinea);
var patronAportacionInfonavit = parseFloat(calculoPatronAportacionMensual(salario, diasMultilinea)).toFixed(2);
//Hacer el calculo de las cuotas para Trabajador y Patrón
var [cuotaPatronal, cuotaObrero] = calcularCuotas(salario, diasMultilinea);
//console.log("cuotaPatronal: " + cuotaPatronal + " multilinea: " + i + " para " + cveTrab);
//console.log("cuotaObrero: " + cuotaObrero + " multilinea: " + i + " para " + cveTrab);
totalPatronAportacionInfonavit = parseFloat(patronAportacionInfonavit) + parseFloat(totalPatronAportacionInfonavit);
totalCuotaPatronal = parseFloat(cuotaPatronal) + parseFloat(totalCuotaPatronal);
totalCuotaObrero = parseFloat(cuotaObrero) + parseFloat(totalCuotaObrero);
totalCuotaPatronal = totalCuotaPatronal.toFixed(2);
totalCuotaObrero = totalCuotaObrero.toFixed(2);
totalPatronAportacionInfonavit = totalPatronAportacionInfonavit.toFixed(2);
}
return [totalPatronAportacionInfonavit, totalCuotaObrero, totalCuotaPatronal];
})
.then(function(total) {
var cuotas = total.toString();
console.log("cuotas:" + cuotas);
var cadena = cuotas.split(',');
var totalPatronAportacionInfonavit = parseFloat(cadena[0]);
var totalCuotaObrero = parseFloat(cadena[1]);
var totalCuotaPatronal = parseFloat(cadena[2]);
//Pinta los Importes de cuotas obrero patronales para la opcion de pago mes completo
$("#cuotaObrera_" + cveTrab).text(accounting.formatMoney(totalCuotaObrero));
$("#cuotaPatronal_" + cveTrab).text(accounting.formatMoney(totalCuotaPatronal));
$("#cuotaIMSS_" + cveTrab).text(accounting.formatMoney(totalPatronAportacionInfonavit));
var totalCuotas = redondeo(parseFloat(totalCuotaPatronal) + parseFloat(totalCuotaObrero) + parseFloat(totalPatronAportacionInfonavit));
$("#totalPagar_" + cveTrab).text(accounting.formatMoney(totalCuotas));
//return total;
})
.catch(function(error) {
console.error("Error:", error);
});
}
}
function actualizaDias(numMes) {
//console.log("número de mes a pintar en el select:: " + numMes);
var anioActual = getCurrentYear();
var numDias = getDaysInMonth(parseInt(numMes + 1), anioActual);
var numTrabajadores = 10;
$('#diasPeriodo').val(numDias);
for (var i = 1; i <= numTrabajadores; i++) {
$('#diasTrabajador_' + i).empty();
for (var j = 1; j <= numDias; j++) {
$('#diasTrabajador_' + i).append(
$("").attr("value", j).text(j));
}
}
}
function valida(salarioMinimo, uma, cveTrab, diasPer, salarioDiario) {
//console.log("salarioDiario: " + salarioDiario+"salarioMinimo: "+salarioMinimo+"uma: "+uma+"diasPer: "+diasPer);
var colorError = "#D0021B";
var color = "color";
var bg = "border-color";
var error = "Este campo es obligatorio.";
var capturoNombre = false;
var bandera = false;
var salarioMinimoCentro = 248.93;
var salarioMinimoFrontera = 312.41;
var salarioMinimoMensual;
var uma = 108.57;
var fecha = new Date();
var numDia = formatoFecha(fecha);
var str = numDia.toString();
str = str.split('-', 3);
str = str[0];
var diaInt = parseInt(str);
//console.log("día del mes actual: " + diaInt);
var diasDelMes;
if (diaInt <= 20) {
diasDelMes = diasDelMesYAñoActual();
console.log("diasDelMes: " + diasDelMes);
} else {
diasDelMes = diasDelMesYAñoActualDos();
console.log("diasDelMes: " + diasDelMes);
}
salarioMinimoMensual = (261.20 * diasDelMes);
var max = parseFloat(uma * 25).toFixed(2);
if ($('input[name=pago]:checked').val() === 'pagoMesCompleto') {
salarioMinimo = salarioMinimoMensual;
var max = parseFloat(uma * 25 * diasDelMes).toFixed(2);
} else {
salarioMinimo = salarioMinimoCentro;
}
var min = parseFloat(salarioMinimo).toFixed(2);
var salarioDiario = $('#salarioDiario_1').val();
if (salarioDiario == '' || salarioDiario == 0) {
$("#salarioDiario_1").css(bg, colorError);
$("#errorSalarioDiario_1").text(error);
$("#errorSalarioDiario_1").css({
'color': '#D0021B'
});
$("#errorSalarioDiario_1").css("font-size", 12);
var errorForm = "¡Error! Debe seleccionar el salario mensual.";
$("#error").show();
$("#error").html(errorForm);
$("#tablaCalculo").hide();
$("#tablaCalculoMensual").hide();
$("html, body").animate({
scrollTop: 0
}, 600);
//console.log('entro 1');
return false;
} else {
$("#error").hide();
$("#errorSalarioDiario_1").text('');
$("#salarioDiario_1").removeAttr('style');
//console.log('entro 2');
}
// VALIDAR SALARIO MINIMO y MAXIMO
if (parseFloat(salarioDiario) < parseFloat(min)) {
$("#errorSalarioDiario_1").css(bg, colorError);
$("#errorSalarioDiario_1").text(error);
$("#errorSalarioDiario_1").css({
'color': '#D0021B'
});
$("#errorSalarioDiario_1").css("font-size", 12);
var errorForm = "¡Error! El salario mensual debe ser mayor o igual que $"
+ parseFloat(min).toFixed(2);
$("#error").show();
$("#tablaCalculo").hide();
$("#tablaCalculoMensual").hide();
$("#error").html(errorForm);
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
} else {
$("#error").hide();
$("#salarioDiario_1").removeAttr('style');
$("#errorSalarioDiario_1").text('');
}
if (parseFloat(salarioDiario) > parseFloat(max)) {
$("#salarioDiario_1").css(bg, colorError);
$("#errorSalarioDiario_1").text(error);
$("#errorSalarioDiario_1").css({
'color': '#D0021B'
});
$("#errorSalarioDiario_1" + cveTrab).css("font-size", 12);
var errorForm = "¡Error! El salario mensual debe ser menor o igual que $"
+ parseFloat(max).toFixed(2);
$("#error").show();
$("#tablaCalculo").hide();
$("#tablaCalculoMensual").hide();
$("#error").html(errorForm);
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
} else {
$("#error").hide();
$("#salarioDiario_1").removeAttr('style');
$("#errorSalarioDiario_1").text('');
}
diasInput2();
var fecha = new Date();
var numDia = formatoFecha(fecha);
var str = numDia.toString();
str = str.split('-', 3);
str = str[0];
var diaInt = parseInt(str);
$("#tablaCalculo").show();
return true;
}
function validaPagoPorDia(salarioMinimo, uma, cveTrab, diasPer, salarioDiario) {
//console.log("salarioDiario: " + salarioDiario+"salarioMinimo: "+salarioMinimo+"uma: "+uma+"diasPer: "+diasPer);
var colorError = "#D0021B";
var color = "color";
var bg = "border-color";
var error = "Este campo es obligatorio.";
var capturoNombre = false;
var bandera = false;
var salarioMinimoCentro = 248.93;
var salarioMinimoFrontera = 312.41;
var uma = 108.57;
if ($('input[name=ubicacion]:checked').val() === 'centro') {
salarioMinimo = salarioMinimoCentro;
} else {
salarioMinimo = salarioMinimoCentro;
}
// var numDias = $('#diasTrabajador_' + cveTrab).val();
var numDias = $('#diasTrabajador_1').val();
var min = parseFloat(salarioMinimo * 1.0493).toFixed(2);
// var min = parseFloat(salarioMinimo).toFixed(2);
var max = parseFloat(uma * 25).toFixed(2);
// Validacion Dias capturados
// var numDias = $('#diasTrabajador_' +cveTrab).val();
var salarioDiario = $('#salarioDiario_2').val();
var numDias = $('#diasTrabajador_1').val();
//var salarioDiario = $('#salarioDiario_1').val();
if (numDias == 0) {
$("#diasTrabajador_1").css(bg, colorError);
$("#errorDiasTrabajador_1").text(error);
$("#errorDiasTrabajador_1").css({
'color': '#D0021B'
});
$("#errorDiasTrabajador_1").css("font-size", 12);
var errorForm = "¡Error! Debe seleccionar el número de días trabajados.";
$("#error").show();
$("#error").html(errorForm);
$("#salarioDiario_1").text('');
$("#tablaCalculo").hide();
$("#tablaCalculoMensual").hide();
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
} else {
$("#error").hide();
$("#errorDiasTrabajador_1").text('');
$("#diasTrabajador_1").removeAttr('style');
}
//console.log(".................." + salarioDiario);
if (salarioDiario == '' || salarioDiario == 0) {
$("#salarioDiario_2").css(bg, colorError);
$("#errorSalarioDiario_1").text(error);
$("#errorSalarioDiario_1").css({
'color': '#D0021B'
});
$("#errorSalarioDiario_1").css("font-size", 12);
var errorForm = "¡Error! Debe seleccionar el salario diario.";
$("#error").show();
$("#error").html(errorForm);
$("#tablaCalculo").hide();
$("#tablaCalculoMensual").hide();
$("html, body").animate({
scrollTop: 0
}, 600);
//console.log('entro 1');
return false;
} else {
$("#error").hide();
$("#errorSalarioDiario_1").text('');
$("#salarioDiario_2").removeAttr('style');
//console.log('entro 2');
}
// VALIDAR SALARIO MINIMO y MAXIMO
if (parseFloat(salarioDiario) < parseFloat(min)) {
$("#errorSalarioDiario_1").css(bg, colorError);
$("#errorSalarioDiario_1").text(error);
$("#errorSalarioDiario_1").css({
'color': '#D0021B'
});
$("#errorSalarioDiario_1").css("font-size", 12);
var errorForm = "¡Error! El salario diario debe ser mayor o igual que $"
+ parseFloat(min).toFixed(2);
$("#error").show();
$("#tablaCalculo").hide();
$("#tablaCalculoMensual").hide();
$("#error").html(errorForm);
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
} else {
$("#error").hide();
$("#salarioDiario_2").removeAttr('style');
$("#errorSalarioDiario_1").text('');
}
if (parseFloat(salarioDiario) > parseFloat(max)) {
$("#salarioDiario_1").css(bg, colorError);
$("#errorSalarioDiario_1").text(error);
$("#errorSalarioDiario_1").css({
'color': '#D0021B'
});
$("#errorSalarioDiario_1" + cveTrab).css("font-size", 12);
var errorForm = "¡Error! El salario diario debe ser menor o igual que $"
+ parseFloat(max).toFixed(2);
$("#error").show();
$("#tablaCalculo").hide();
$("#tablaCalculoMensual").hide();
$("#error").html(errorForm);
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
} else {
$("#error").hide();
$("#salarioDiario_2").removeAttr('style');
$("#errorSalarioDiario_1").text('');
}
diasInput();
var fecha = new Date();
var numDia = formatoFecha(fecha);
var str = numDia.toString();
str = str.split('-', 3);
str = str[0];
var diaInt = parseInt(str);
var diasLaborados = $("#diasTrabajador_1").val();
var diasDelMes;
if (diaInt <= 20) {
diasDelMes = diasDelMesYAñoActual();
}
else {
diasDelMes = diasDelMesYAñoActualDos();
}
if (diasLaborados <= diasDelMes) {
$("#tablaCalculoMensual").show();
$("#tablaCalculo").hide();
} else {
$("#tablaCalculo").show();
$("#tablaCalculoMensual").hide();
}
return true;
}
function redondeo(num) {
return accounting.toFixed(num, 2);
}
function redondearDecimales(valorInicial) {
console.log("valorInicial: " + valorInicial);
var places = 2;
var bd = new Decimal(valorInicial.toString());
bd = bd.toDecimalPlaces(places, Decimal.ROUND_HALF_UP);
// console.log(bd.toNumber());
return bd.toNumber();
}
function agregarTrabajador() {
var ultimoMostrado = 1;
for (var i = 2; i <= 10; i++) {
// Si est� oculto lo hacemos visible
if ($('#tr_' + i).css('display') == 'none') {
$("#tr_" + i).show();
break;
}
}
}
function eliminarTrabajador() {
for (var i = 10; i >= 2; i--) {
// Si est� visible debemos ocultarlo
if ($('#tr_' + i).css('display') != 'none') {
// se borran los datos al eliminar
$("#nombreTrabajador_" + i).val('');
$("#salarioDiario_" + i).val('');
$("#diasTrabajador_" + i).prop("selectedIndex", 0);
$("#cuotaPatronal_" + i).text('');
$("#cuotaObrera_" + i).text('');
$("#totalPagar_" + i).text('');
$("#tr_" + i).hide();
break;
}
}
}
/**
* Funciones para obtener la columna de periodos.
*/
function fecha(meses) {
//var date = new Date("2023-12-25T12:00:00-06:30")
var date = new Date();
date.setMonth(date.getMonth() + meses);
return date;
}
function obtenerDiaInicioDeMes(fechaInicio) {
var fecha = new Date(fechaInicio.getFullYear(), fechaInicio.getMonth(), 1);
const dia = fecha.getDate();
return dia;
};
function obtenerDiaFinDeMes(fechaFin) {
var fecha = new Date(fechaFin.getFullYear(), fechaFin.getMonth() + 1, 0);
const dia = fecha.getDate();
return dia;
};
function obtenerMesInicio(fechaInicio) {
var fecha = new Date();
current = new Intl.DateTimeFormat('es-ES', {
month: 'long'
}).format(new Date(fechaInicio.getFullYear(), fechaInicio.getMonth() + 1, 0));
return current;
};
function obtenerMesFin(fechaFin) {
var fecha = new Date();
current = new Intl.DateTimeFormat('es-ES', {
month: 'long'
}).format(new Date(fechaFin.getFullYear(), fechaFin.getMonth() + 1, 0));
return current;
};
function obtenerAnioInicio(fechaInicio) {
var fecha = new Date(fechaInicio.getFullYear(), fechaInicio.getMonth(), 1);
return fecha.getFullYear();
};
function obtenerAnioFin(fechaFin) {
var fecha = new Date(fechaFin.getFullYear(), fechaFin.getMonth() + 1, 0);
return fecha.getFullYear();
};
function obtenerFechaInicio(fechaInicio) {
var fecha = new Date(fechaInicio.getFullYear(), fechaInicio.getMonth(), 1);
return fecha;
};
function obtenerFechaFin(fechaFin) {
var fecha = new Date(fechaFin.getFullYear(), fechaFin.getMonth() + 1, 0);
return fecha;
};
function obtenerFechaFinDos(fechaInicio, meses) {
var fecha = new Date(fechaInicio.getFullYear(), fechaInicio.getMonth() + meses, 0);
return fecha;
}
var fechaHoy = new Date();
//var fechaHoy = new Date("2023-04-24T12:00:00-06:30");
var numDia = formatoFecha(fechaHoy);
var str = numDia.toString();
str = str.split('-', 3);
str = str[0];
var diaInt = parseInt(str);
//console.log("día del mes actual: " + diaInt);
if (diaInt <= 20) {
var hoy = fecha(1);
var bimestre = fecha(2);
var semestre = fecha(6);
var anual = fecha(12);
} else {
var hoy = fecha(2);
var bimestre = fecha(3);
var semestre = fecha(7);
var anual = fecha(13);
}
var diasDelMes = diasDelMesYAñoActual();
var periodoMensual;
function diasInput() {
var diasPeriodo = $("#diasTrabajador_1").val();
console.log("dias seleccionados: " + diasPeriodo);
var dia;
if (diasPeriodo == '1' || diasPeriodo == 1) {
dia = "día";
} else {
dia = "días";
}
if (diasPeriodo <= diasDelMes) {
periodoMensual = diasPeriodo + " " + dia + " de " + obtenerMesInicio(hoy) + " de " + obtenerAnioInicio(hoy);
console.log("periodoMensual: " + periodoMensual);
//document.getElementById('periodoMensual').innerHTML = periodoMensual;
//$('#periodoMensual').text(periodoMensual);
//document.getElementById('periodoMensualDos').innerHTML = periodoMensual;
$('#periodoMensualDos').text(periodoMensual);
} else {
periodoMensual = obtenerDiaInicioDeMes(hoy) + " al " + obtenerDiaFinDeMes(hoy) + " de " + obtenerMesInicio(hoy) + " del " + obtenerAnioInicio(hoy);
//document.getElementById('periodoMensual').innerHTML = periodoMensual;
$('#periodoMensual').text(periodoMensual);
//document.getElementById('periodoMensualDos').innerHTML = periodoMensual;
$('#periodoMensualDos').text(periodoMensual);
};
}
function diasInput2() {
periodoMensual = obtenerDiaInicioDeMes(hoy) + " al " + obtenerDiaFinDeMes(hoy) + " de " + obtenerMesInicio(hoy) + " del " + obtenerAnioInicio(hoy);
var periodoBimestral = obtenerDiaInicioDeMes(hoy) + " de " + obtenerMesInicio(hoy) + " del " + obtenerAnioInicio(hoy) + " al " + obtenerDiaFinDeMes(bimestre) + " de " + obtenerMesFin(bimestre) + " del " + obtenerAnioFin(bimestre);
var periodoSemestral = obtenerDiaInicioDeMes(hoy) + " de " + obtenerMesInicio(hoy) + " del " + obtenerAnioInicio(hoy) + " al " + obtenerDiaFinDeMes(semestre) + " de " + obtenerMesFin(semestre) + " del " + obtenerAnioFin(semestre);
var periodoAnual = obtenerDiaInicioDeMes(hoy) + " de " + obtenerMesInicio(hoy) + " del " + obtenerAnioInicio(hoy) + " al " + obtenerDiaFinDeMes(anual) + " de " + obtenerMesFin(anual) + " del " + obtenerAnioFin(anual);
//document.getElementById('periodoMensual').innerHTML = periodoMensual;
console.log("periodoMensual: " + periodoMensual);
$('#periodoMensual').text(periodoMensual);
//document.getElementById('periodoBimestral').innerHTML = periodoBimestral;
console.log("periodoBimestral: " + periodoBimestral);
$('#periodoBimestral').text(periodoBimestral);
//document.getElementById('periodoSemestral').innerHTML = periodoSemestral;
console.log("periodoSemestral: " + periodoSemestral);
$('#periodoSemestral').text(periodoSemestral);
//document.getElementById('periodoAnual').innerHTML = periodoAnual;
console.log("periodoAnual: " + periodoAnual);
$('#periodoAnual').text(periodoAnual);
}
//var periodoBimestral = obtenerDiaInicioDeMes(hoy) + " de " + obtenerMesInicio(hoy) + " del " + obtenerAnioInicio(hoy) + " al " + obtenerDiaFinDeMes(bimestre) + " de " + obtenerMesFin(bimestre) + " del " + obtenerAnioFin(bimestre);
//var periodoSemestral = obtenerDiaInicioDeMes(hoy) + " de " + obtenerMesInicio(hoy) + " del " + obtenerAnioInicio(hoy) + " al " + obtenerDiaFinDeMes(semestre) + " de " + obtenerMesFin(semestre) + " del " + obtenerAnioFin(semestre);
//var periodoAnual = obtenerDiaInicioDeMes(hoy) + " de " + obtenerMesInicio(hoy) + " del " + obtenerAnioInicio(hoy) + " al " + obtenerDiaFinDeMes(anual) + " de " + obtenerMesFin(anual) + " del " + obtenerAnioFin(anual);
//document.getElementById('periodoBimestral').innerHTML = periodoBimestral;
//document.getElementById('periodoSemestral').innerHTML = periodoSemestral;
//document.getElementById('periodoAnual').innerHTML = periodoAnual;
var bimestre = obtenerFechaFinDos(hoy, 2);
var semestre = obtenerFechaFinDos(hoy, 6);
var anual = obtenerFechaFinDos(hoy, 12);
var diasPeriodoBimestral = bimestre.getTime() - obtenerFechaInicio(hoy).getTime();
var diasPeriodoBimestral = Math.floor((diasPeriodoBimestral / (1000 * 60 * 60 * 24)) + 1);
var diasPeriodoSemestral = semestre.getTime() - obtenerFechaInicio(hoy).getTime();
var diasPeriodoSemestral = Math.floor((diasPeriodoSemestral / (1000 * 60 * 60 * 24)) + 1);
var diasPeriodoAnual = anual.getTime() - obtenerFechaInicio(hoy).getTime();
var diasPeriodoAnual = Math.floor((diasPeriodoAnual / (1000 * 60 * 60 * 24)) + 1);
console.log("dias bimestral: "+diasPeriodoBimestral);
console.log("dias semestral: "+diasPeriodoSemestral);
console.log("dias anual: "+diasPeriodoAnual);
function obtenerCuotas() {
console.log("entra a metodo obtenerCuotas");
//var fecha = new Date("2023-04-24T12:00:00-06:30");
var fecha = new Date();
var numDia = formatoFecha(fecha);
var str = numDia.toString();
str = str.split('-', 3);
str = str[0];
var diaInt = parseInt(str);
console.log("día del mes actual: " + diaInt);
var diasDelMes;
if (diaInt <= 20) {
diasDelMes = diasDelMesYAñoActual();
console.log("diasDelMes: " + diasDelMes);
} else {
diasDelMes = diasDelMesYAñoActualDos();
console.log("diasDelMes: " + diasDelMes);
}
var fechaInicioPeriodo = obtenerFechaInicioPeriodo();
var fechaFinPMensual = obtenerFechaFinPeriodo('mensual');
var fechaFinPBimestral = obtenerFechaFinPeriodo('bimestral');
var fechaFinPSemestral = obtenerFechaFinPeriodo('semestral');
var fechaFinPAnual = obtenerFechaFinPeriodo('anual');
console.log('Fecha de inicio del periodo:', fechaInicioPeriodo);
console.log('Fecha de fin del periodo mensual:', fechaFinPMensual);
console.log('Fecha de fin del periodo bimestral:', fechaFinPBimestral);
console.log('Fecha de fin del periodo semestral:', fechaFinPSemestral);
console.log('Fecha de fin del periodo anual:', fechaFinPAnual);
calcular(1, diasDelMes, fechaInicioPeriodo, fechaFinPMensual); //MENSUAL
//calcular(5,diasDelMes); //MENSUAL
calcular(2, diasPeriodoBimestral, fechaInicioPeriodo, fechaFinPBimestral); //B
calcular(3, diasPeriodoSemestral, fechaInicioPeriodo, fechaFinPSemestral); //S
calcular(4, diasPeriodoAnual, fechaInicioPeriodo, fechaFinPAnual); //A
}
/**
* Metodo que obtiene las coutas cuando se seleccione la opcion de pago x día.
*/
function obtenerCuotas2() {
var fechaInicioPeriodo = obtenerFechaInicioPeriodo();
var fechaFinPMensual = obtenerFechaFinPeriodo('mensual');
console.log('Fecha de inicio del periodo:', fechaInicioPeriodo);
console.log('Fecha de fin del periodo mensual:', fechaFinPMensual);
calcular2(5, $("#diasTrabajador_1").val(), fechaInicioPeriodo, fechaFinPMensual);
};
function calculoPatronAportacionMensual(salarioDiario, diaMax) {
var factorAportacionINFONAVIT = 0.05; // 5%
var patronAportacionInfonavit = 0.0;
return patronAportacionInfonavit = diaMax * salarioDiario * factorAportacionINFONAVIT;
}
function calculoPatronAportacionPorDia(salarioDiario, diaMax) {
if (salarioDiario > 2714.25) {
salarioDiario = 2,714.25;
}
//var factorIntegracion = 1.33; // 1.33%
var factorAportacionINFONAVIT = 0.05; // 5%
var patronAportacionInfonavit = 0.0;
return patronAportacionInfonavit = diaMax * salarioDiario * factorAportacionINFONAVIT;
}
//Metodo para invocar servlet obtenerPeriodosMultilinea Java
function obtenerPeriodosMultilineaServlet(fechaInicioPeriodo, fechaFinPeriodo, dias) {
return new Promise(function(resolve, reject) {
console.log("Entrando al metodo obtenerPeriodosMultilineaServlet...")
console.log("fechaInicioPeriodo: " + fechaInicioPeriodo)
console.log("fechaFinPeriodo: " + fechaFinPeriodo)
console.log("dias: " + dias)
var cuotaObrero = 6747.77;
var cuotaPatron = 6747.77;
var nss = "96088202872";
var params = `fechaInicioPeriodo=${fechaInicioPeriodo}&fechaFinPeriodo=${fechaFinPeriodo}&cuotaObrero=${cuotaObrero}&cuotaPatron=${cuotaPatron}&nss=${nss}&dias=${dias}`;
var xhr = new XMLHttpRequest();
xhr.open("POST", "obtenerPeriodosMultilinea", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onload = function() {
if (xhr.status === 200) {
console.log("Datos enviados con éxito");
var response = JSON.parse(xhr.responseText);
resolve(response);
} else {
console.error("Error al enviar datos");
// Handle error
reject("Error al enviar datos");
}
};
xhr.send(params);
//xhr.send(JSON.stringify(data));
});
}