{"id":2037,"date":"2025-12-04T16:26:39","date_gmt":"2025-12-04T22:26:39","guid":{"rendered":"https:\/\/aoconsultoria.com\/?page_id=2037"},"modified":"2025-12-10T22:46:57","modified_gmt":"2025-12-11T04:46:57","slug":"calc_nomina","status":"publish","type":"page","link":"https:\/\/aoconsultoria.com\/es\/calc_nomina\/","title":{"rendered":"Calculadora de nomina"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2037\" class=\"elementor elementor-2037\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dd98c4a e-flex e-con-boxed e-con e-parent\" data-id=\"dd98c4a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fff9586 elementor-widget elementor-widget-heading\" data-id=\"fff9586\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u00bfSabes cual es el costo real de contratar un empleado?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f7a7487 e-flex e-con-boxed e-con e-parent\" data-id=\"f7a7487\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-81d5dd1 elementor-widget elementor-widget-html\" data-id=\"81d5dd1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"calculadora-mexico\">\n    <h3>Obten el costo mensual total de un trabajador.<\/h3>\n    <p>Ingresa el sueldo mensual bruto deseado y el tipo de percepci\u00f3n.<\/p>\n    \n    <label for=\"nombre_trabajador\">Nombre del Trabajador:<\/label>\n    <input type=\"text\" id=\"nombre_trabajador\" placeholder=\"Ej. Angel Ordo\u00f1ez\">\n    \n    <label for=\"sueldo_bruto\">Sueldo Mensual Bruto ($):<\/label>\n    <input type=\"number\" id=\"sueldo_bruto\" value=\"\" min=\"1\" step=\"1.00\" placeholder=\"0.00\">\n\n    <label for=\"percepcion_tipo\">Tipo de Percepci\u00f3n:<\/label>\n    <select id=\"percepcion_tipo\">\n        <option value=\"fijo\">Sueldo Fijo Mensual<\/option>\n        <option value=\"comisiones\">Fijo + Comisiones (SBC Integrado)<\/option>\n    <\/select>\n\n    <button onclick=\"calcularCosto()\">Calcular Costo Total<\/button>\n\n    <hr class=\"print-hidden\">\n    \n    <div id=\"resultados-empleado\">\n        <h4>Resumen de Costos para: <span id=\"res_nombre_trabajador\">---<\/span><\/h4> \n\n        <div class=\"resultado-seccion\">\n            <h5>Costos para el Empleado:<\/h5>\n            <p class=\"resultado-destacado-input\">Sueldo Mensual Bruto: <span id=\"res_sueldo_bruto_capturado\">$0.00<\/span><\/p> \n            \n            <p>ISR Retenido: <span id=\"res_isr_empleado\">$0.00<\/span><\/p>\n            <p>IMSS (Cuota Obrera): <span id=\"res_imss_empleado\">$0.00<\/span><\/p>\n            \n            <p class=\"resultado-subsidio\">Subsidio para el Empleo (SPE): <span id=\"res_subsidio_empleo\">$0.00<\/span><\/p>\n            \n            <p class=\"resultado-destacado\">Sueldo Neto a Recibir: <span id=\"res_sueldo_neto\">$0.00<\/span><\/p>\n        <\/div>\n\n        <div class=\"resultado-seccion\">\n            <h5>Costos para el Patron:<\/h5>\n            <p>IMSS (Cuota Patronal): <span id=\"res_imss_patronal\">$0.00<\/span><\/p>\n            <p>INFONAVIT\/SAR: <span id=\"res_infonavit_sar\">$0.00<\/span><\/p>\n            <p>Impuesto Sobre N\u00f3mina (cdmx 4%): <span id=\"res_isn\">$0.00<\/span><\/p>\n        <\/div>\n        \n        <hr>\n\n       <div class=\"resultado-final\">\n            <h4>Costo Total Real para el Empleador<\/h4>\n            <p class=\"resultado-destacado-final\">Costo Total Anual: <span id=\"res_costo_anual\">$0.00<\/span><\/p>\n            <p class=\"resultado-destacado-final\">Costo Total Mensual: <span id=\"res_costo_mensual\">$0.00<\/span><\/p>\n        <\/div>\n        \n        <hr class=\"print-hidden\">\n        \n        <button id=\"btn_imprimir\" onclick=\"imprimirCalculo()\">Imprimir o Guardar como PDF \ud83d\udda8\ufe0f<\/button>\n    <\/div>\n\n    <div class=\"disclaimer-final\">\n        <p>Estimaci\u00f3n realizada desde la p\u00e1gina <a href=\"https:\/\/www.aoconsultoria.com\" target=\"_blank\">www.aoconsultoria.com<\/a>. Si desea un c\u00e1lculo oficial y asesor\u00eda completa, no dude en contactarnos.<\/p>\n        <a href=\"https:\/\/app.simplymeet.me\/angel\" target=\"_blank\" class=\"button-cta\">Agendar una llamada<\/a>\n    <\/div>\n\n<\/div>\n\n<style>\n    \/* Estilos base (sin cambios en inputs, botones, etc.) *\/\n    .calculadora-mexico {\n        font-family: Arial, sans-serif;\n        max-width: 600px;\n        margin: 20px auto;\n        padding: 20px;\n        border: 1px solid #ccc;\n        border-radius: 8px;\n        background-color: #f9f9f9;\n    }\n    .calculadora-mexico label, .calculadora-mexico input, .calculadora-mexico select, .calculadora-mexico button {\n        display: block;\n        width: 100%;\n        margin-bottom: 10px;\n        box-sizing: border-box;\n    }\n    .calculadora-mexico input[type=\"number\"], .calculadora-mexico select, .calculadora-mexico input[type=\"text\"] {\n        padding: 10px;\n        border: 1px solid #ddd;\n        border-radius: 10px;\n    }\n    .calculadora-mexico button {\n        background-color: #0073e6;\n        color: white;\n        padding: 12px;\n        border: none;\n        border-radius: 10px;\n        cursor: pointer;\n        font-size: 16px;\n        margin-top: 15px;\n    }\n    .calculadora-mexico button:hover {\n        background-color: #005bb5;\n    }\n    #resultados-empleado {\n        margin-top: 20px;\n        padding-top: 10px;\n        border-top: 1px solid #eee;\n    }\n    .resultado-seccion {\n        padding: 10px 0;\n    }\n    .resultado-destacado {\n        font-weight: bold;\n        color: #008000;\n    }\n    .resultado-destacado-final {\n        font-weight: bold;\n        color: #ff4500;\n        font-size: 1.1em;\n    }\n    .resultado-seccion p {\n        margin: 5px 0;\n        display: flex;\n        justify-content: space-between;\n    }\n    .resultado-seccion span {\n        font-weight: 500;\n    }\n    .resultado-subsidio {\n        font-weight: bold;\n        color: #17a2b8;\n        margin-top: 5px;\n    }\n    .resultado-destacado-input {\n        font-weight: bold;\n        color: #4CAF50;\n    }\n    \n    \/* ESTILOS DEL NUEVO BLOQUE CTA *\/\n    .disclaimer-final {\n        margin-top: 20px;\n        padding: 15px;\n        border: 1px solid #ddd;\n        border-radius: 8px;\n        background-color: #f0f8ff; \n        text-align: center;\n        font-size: 0.9em;\n    }\n    .disclaimer-final p {\n        margin-bottom: 10px;\n    }\n    .disclaimer-final a { \/* Estilo para el enlace dentro del p\u00e1rrafo *\/\n        font-weight: bold;\n        color: #0073e6; \/* Color azul para que se vea como link *\/\n        text-decoration: none;\n    }\n    .disclaimer-final a:hover {\n        text-decoration: underline;\n    }\n    .disclaimer-final .button-cta {\n        display: inline-block;\n        background-color: #ff4500; \n        color: white;\n        padding: 10px 20px;\n        text-decoration: none;\n        border-radius: 5px;\n        font-weight: bold;\n        transition: background-color 0.3s;\n    }\n    .disclaimer-final .button-cta:hover {\n        background-color: #cc3700;\n    }\n\n    \/* CORRECCI\u00d3N DE IMPRESI\u00d3N *\/\n    @media print {\n        body > * {\n            visibility: hidden; \n        }\n        .calculadora-mexico {\n            visibility: visible !important;\n            position: absolute !important;\n            top: 0 !important;\n            left: 0 !important;\n            width: 100% !important;\n            border: none !important;\n            box-shadow: none !important;\n            max-width: 100%;\n            margin: 0;\n            padding: 0;\n            background-color: white;\n        }\n        \n        \/* Ocultamos el bot\u00f3n CTA en la impresi\u00f3n si queremos que solo se vea la leyenda *\/\n        .disclaimer-final .button-cta {\n            display: none !important;\n        }\n\n        \/* Quitamos el fondo al disclaimer en la impresi\u00f3n *\/\n        .disclaimer-final {\n            background-color: transparent;\n            border: none;\n            padding: 10px 0;\n            font-size: 8pt !important;\n        }\n\n        \/* Hacemos que el enlace se vea como texto normal en la impresi\u00f3n (no azul y subrayado) *\/\n        .disclaimer-final a {\n            color: black !important;\n            text-decoration: none !important;\n            font-weight: normal !important;\n        }\n\n\n        \/* Ocultamos elementos de entrada y botones de la interfaz *\/\n        .elementor-element-11c3d86,\n        #btn_imprimir, \n        .print-hidden, \n        .calculadora-mexico label,\n        .calculadora-mexico input,\n        .calculadora-mexico select,\n        .calculadora-mexico button \n        {\n            display: none !important;\n        }\n        \n        body * {\n            font-size: 10pt !important;\n        }\n    }\n<\/style>\n\n<script>\n    \/\/ --- CONSTANTES FISCALES Y LABORALES 2025 (sin cambios) ---\n    const UMA_DIARIA = 113.14; \n    const SBC_MAXIMO_DIARIO = UMA_DIARIA * 25; \n    const DIAS_MES = 30.40;\n    const FACTOR_INTEGRACION_MINIMO = 1.0493; \n    const FACTOR_COSTO_ANUAL = 12.50; \n\n    \/\/ --- TASAS Y TABLAS (sin cambios) ---\n    const RT_MINIMA = 0.0050; \n    const IVM_PATRONAL = 0.0175; \n    const IVM_OBRERA = 0.00375; \n    const GUARDERIAS = 0.0100;\n    const RETIRO = 0.0200;\n    const INFONAVIT = 0.0500;\n    const TASA_ISN = 0.04; \n\n    const tablaISR = [\n        { li: 0.01, cf: 0.00, p: 0.0192 },\n        { li: 746.05, cf: 14.32, p: 0.0640 },\n        { li: 6332.06, cf: 371.83, p: 0.1088 },\n        { li: 11128.02, cf: 893.63, p: 0.1600 },\n        { li: 12935.83, cf: 1182.88, p: 0.1792 },\n        { li: 15487.72, cf: 1640.18, p: 0.2136 },\n        { li: 31236.50, cf: 5004.12, p: 0.2352 },\n        { li: 49233.01, cf: 9236.89, p: 0.3000 },\n        { li: 93993.91, cf: 22665.17, p: 0.3200 },\n        { li: 125325.21, cf: 32691.18, p: 0.3400 },\n        { li: 375975.62, cf: 117912.32, p: 0.3500 },\n    ];\n\n    const tablaCVAPatronal = [\n        { tope: 1.00, tasa: 0.03150 }, \n        { tope: 1.50, tasa: 0.03544 }, \n        { tope: 2.00, tasa: 0.04426 }, \n        { tope: 2.50, tasa: 0.04954 }, \n        { tope: 3.00, tasa: 0.05307 }, \n        { tope: 3.50, tasa: 0.05559 }, \n        { tope: 4.00, tasa: 0.05747 },\n        { tope: Infinity, tasa: 0.06422 }\n    ];\n\n    const tablaSubsidio = [\n        { ingreso: 10171, subsidio: 468.40 },\n        { ingreso: Infinity, subsidio: 0.00 } \n    ];\n\n\n    function formatCurrency(number) {\n        const sign = number < 0 ? '-' : '';\n        const absoluteNumber = Math.abs(number);\n        \n        const formatted = new Intl.NumberFormat('es-MX', {\n            style: 'currency',\n            currency: 'MXN',\n            minimumFractionDigits: 2\n        }).format(absoluteNumber);\n        \n        return sign + formatted;\n    }\n\n    function calcularCosto() {\n        const sueldoBrutoMensual = parseFloat(document.getElementById('sueldo_bruto').value) || 0;\n        \n        if (sueldoBrutoMensual <= 0) {\n            document.getElementById('res_sueldo_bruto_capturado').textContent = \"$0.00\"; \n            document.getElementById('res_isr_empleado').textContent = \"$0.00\";\n            document.getElementById('res_imss_empleado').textContent = \"$0.00\";\n            document.getElementById('res_subsidio_empleo').textContent = \"$0.00\"; \n            document.getElementById('res_sueldo_neto').textContent = \"$0.00\";\n            document.getElementById('res_imss_patronal').textContent = \"$0.00\";\n            document.getElementById('res_infonavit_sar').textContent = \"$0.00\";\n            document.getElementById('res_isn').textContent = \"$0.00\";\n            document.getElementById('res_costo_mensual').textContent = \"$0.00\";\n            document.getElementById('res_costo_anual').textContent = \"$0.00\";\n            \n            document.getElementById('res_nombre_trabajador').textContent = document.getElementById('nombre_trabajador').value || \"---\";\n\n            return; \n        }\n\n        \/\/ --- C\u00c1LCULOS (sin cambios) ---\n        const sueldoDiario = sueldoBrutoMensual \/ DIAS_MES;\n        const sbcDiario = Math.min(sueldoDiario * FACTOR_INTEGRACION_MINIMO, SBC_MAXIMO_DIARIO); \n        const sbcMensual = sbcDiario * DIAS_MES;\n\n        const tresUmasDiarias = UMA_DIARIA * 3;\n        let baseExcedenteDiaria = Math.max(0, sbcDiario - tresUmasDiarias);\n        let cuotaExcedenteObreraMensual = baseExcedenteDiaria * 0.0040 * DIAS_MES; \n\n        let cuotasFijasObreras = sbcMensual * (0.0025 + IVM_OBRERA + 0.01125); \n        let imssEmpleado = cuotaExcedenteObreraMensual + cuotasFijasObreras;\n        \n        const baseGravableISR = sueldoBrutoMensual;\n        let isrCalculado = 0;\n        let subsidioCorrespondiente = 0;\n        let isrFinal = 0;\n        let subsidioAEntregar = 0;\n\n        for (const tramo of tablaISR) {\n            if (baseGravableISR >= tramo.li) {\n                const excedente = baseGravableISR - tramo.li;\n                isrCalculado = (excedente * tramo.p) + tramo.cf;\n            }\n        }\n        \n        for (const tramo of tablaSubsidio) {\n            if (sueldoBrutoMensual <= tramo.ingreso) {\n                subsidioCorrespondiente = tramo.subsidio;\n                break;\n            }\n        }\n\n        if (isrCalculado >= subsidioCorrespondiente) {\n            isrFinal = isrCalculado - subsidioCorrespondiente;\n            subsidioAEntregar = 0;\n        } else {\n            isrFinal = 0;\n            subsidioAEntregar = subsidioCorrespondiente - isrCalculado;\n        }\n        \n        const deduccionesTotales = imssEmpleado + isrFinal;\n        const percepcionesTotales = sueldoBrutoMensual + subsidioAEntregar;\n        const sueldoNeto = percepcionesTotales - deduccionesTotales; \n        \n        const sbcVecesUma = sbcDiario \/ UMA_DIARIA;\n        let tasaCV = 0;\n        for (const tramo of tablaCVAPatronal) {\n            if (sbcVecesUma <= tramo.tope) {\n                tasaCV = tramo.tasa;\n                break;\n            }\n        }\n        \n        let cuotaFijaPatronal = DIAS_MES * (UMA_DIARIA * 0.0139); \n        let cuotaExcedentePatronalMensual = baseExcedenteDiaria * 0.0110 * DIAS_MES; \n        let cvaPatronal = sbcMensual * tasaCV;\n        let otrasCuotasPatronales = sbcMensual * (RT_MINIMA + IVM_PATRONAL + GUARDERIAS + RETIRO);\n        \n        let imssPatronal = cuotaFijaPatronal + cuotaExcedentePatronalMensual + cvaPatronal + otrasCuotasPatronales;\n\n        let infonavitSAR = sbcMensual * INFONAVIT;\n        let isn = sueldoBrutoMensual * TASA_ISN; \n\n        let cargaSocialTotal = imssPatronal + infonavitSAR + isn;\n        let costoTotalMensual = sueldoBrutoMensual + cargaSocialTotal + subsidioAEntregar; \n        let costoTotalAnual = costoTotalMensual * FACTOR_COSTO_ANUAL; \n\n        \/\/ --- 6. ACTUALIZAR RESULTADOS EN LA P\u00c1GINA ---\n        \n        document.getElementById('res_sueldo_bruto_capturado').textContent = formatCurrency(sueldoBrutoMensual);\n        document.getElementById('res_nombre_trabajador').textContent = document.getElementById('nombre_trabajador').value || \"Trabajador sin Nombre\";\n\n        document.getElementById('res_isr_empleado').textContent = formatCurrency(isrFinal);\n        document.getElementById('res_imss_empleado').textContent = formatCurrency(imssEmpleado);\n        document.getElementById('res_subsidio_empleo').textContent = formatCurrency(subsidioAEntregar);\n        document.getElementById('res_sueldo_neto').textContent = formatCurrency(sueldoNeto);\n        \n        document.getElementById('res_imss_patronal').textContent = formatCurrency(imssPatronal);\n        document.getElementById('res_infonavit_sar').textContent = formatCurrency(infonavitSAR);\n        document.getElementById('res_isn').textContent = formatCurrency(isn);\n        \n        document.getElementById('res_costo_mensual').textContent = formatCurrency(costoTotalMensual);\n        document.getElementById('res_costo_anual').textContent = formatCurrency(costoTotalAnual);\n    }\n\n    \/\/ Funci\u00f3n para imprimir (o guardar como PDF)\n    function imprimirCalculo() {\n        document.getElementById('resultados-empleado').style.display = 'block'; \n        window.print();\n    }\n\n    document.addEventListener('DOMContentLoaded', calcularCosto); \n    document.getElementById('sueldo_bruto').addEventListener('input', calcularCosto);\n    document.getElementById('percepcion_tipo').addEventListener('change', calcularCosto);\n    document.getElementById('nombre_trabajador').addEventListener('input', calcularCosto); \n    \n    setTimeout(calcularCosto, 500); \n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8f9cb9 elementor-widget elementor-widget-html\" data-id=\"a8f9cb9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"disclaimer-nomina\">\n    <h4>\u26a0\ufe0f Nota Legal Importante (Descargo de Responsabilidad)<\/h4>\n    <p>Esta herramienta ha sido desarrollada con base en la Ley del Impuesto Sobre la Renta (LISR), la Ley del Seguro Social (LSS) y sus reglamentos vigentes para el ejercicio fiscal <strong>2025<\/strong>, incluyendo el Subsidio para el Empleo (SPE) y la cuota patronal de Cesant\u00eda y Vejez (CVA) progresiva.<\/p>\n    <ul>\n        <li>Los resultados son considerando variables comunes, dependiendo de cada compa\u00f1ia las prestaciones pueden variar y arrojar resultados diferentes, por lo que este calculo solo debe tomarse como una <strong>*ESTIMACION*<\/strong> y no como una n\u00f3mina oficial.\n        <li><strong>Variables No Consideradas:<\/strong> Esta calculadora no incluye deducciones personales (cr\u00e9dito INFONAVIT, cuotas sindicales, FONACOT, pensiones alimenticias, etc.), impuestos locales adicionales, ni otros factores espec\u00edficos de cada trabajador.<\/li>\n        <li><strong>Base de C\u00e1lculo:<\/strong> Asume las **prestaciones m\u00ednimas de ley** para la integraci\u00f3n del Salario Base de Cotizaci\u00f3n (SBC).<\/li>\n    <\/ul>\n    <p><strong>Para c\u00e1lculos definitivos, no dude en contactarnos para tener una estrategia a la medida de sus necesidades.<\/strong><\/p>\n<\/div>\n\n<style>\n    \/* Estilos para que el descargo de responsabilidad destaque *\/\n    .disclaimer-nomina {\n        margin-top: 30px;\n        padding: 15px;\n        border: 1px solid #ffcc00; \/* Borde amarillo de advertencia *\/\n        border-radius: 6px;\n        background-color: #fffbe6; \/* Fondo amarillo claro *\/\n        font-size: 0.9em;\n        color: #333;\n    }\n    .disclaimer-nomina h4 {\n        color: #b38f00; \/* Tono de advertencia en el t\u00edtulo *\/\n        margin-top: 0;\n        margin-bottom: 10px;\n        font-weight: bold;\n    }\n    .disclaimer-nomina ul {\n        margin-left: 20px;\n        padding-left: 0;\n    }\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u00bfSabes cual es el costo real de contratar un empleado? Obten el costo mensual total de un trabajador. Ingresa el sueldo mensual bruto deseado y el tipo de percepci\u00f3n. Nombre del Trabajador: Sueldo Mensual Bruto ($): Tipo de Percepci\u00f3n: Sueldo Fijo MensualFijo + Comisiones (SBC Integrado) Calcular Costo Total Resumen de Costos para: &#8212; Costos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2037","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/aoconsultoria.com\/es\/wp-json\/wp\/v2\/pages\/2037","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aoconsultoria.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aoconsultoria.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aoconsultoria.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aoconsultoria.com\/es\/wp-json\/wp\/v2\/comments?post=2037"}],"version-history":[{"count":64,"href":"https:\/\/aoconsultoria.com\/es\/wp-json\/wp\/v2\/pages\/2037\/revisions"}],"predecessor-version":[{"id":2112,"href":"https:\/\/aoconsultoria.com\/es\/wp-json\/wp\/v2\/pages\/2037\/revisions\/2112"}],"wp:attachment":[{"href":"https:\/\/aoconsultoria.com\/es\/wp-json\/wp\/v2\/media?parent=2037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}