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)); }); }