{"id":13,"date":"2025-12-09T18:38:56","date_gmt":"2025-12-09T18:38:56","guid":{"rendered":"https:\/\/utiles.fagales360.com\/?page_id=13"},"modified":"2025-12-09T18:38:57","modified_gmt":"2025-12-09T18:38:57","slug":"calculadora-saldo","status":"publish","type":"page","link":"https:\/\/utiles.fagales360.com\/?page_id=13","title":{"rendered":"Calculadora Saldo"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Calculadora de Costos y Ganancias de Saldo<\/title>\n    <!-- Carga de Tailwind CSS -->\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <style>\n        \/* Configuraci\u00f3n de la fuente Inter y estilos base *\/\n        :root {\n            font-family: 'Inter', sans-serif;\n        }\n        .shadow-custom {\n            box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05), 0 0 0 4px #bae6fd; \/* light blue ring *\/\n        }\n    <\/style>\n    <script>\n        \/\/ Configuraci\u00f3n de Tailwind para un mejor dise\u00f1o\n        tailwind.config = {\n            theme: {\n                extend: {\n                    colors: {\n                        'primary': '#0e7490', \/\/ Cian oscuro para \u00e9nfasis\n                        'secondary': '#f0f9ff', \/\/ Fondo claro\n                    }\n                }\n            }\n        }\n\n        \/**\n         * Funci\u00f3n principal para calcular todos los costos, ventas y ganancias.\n         * Se activa cada vez que un valor de entrada cambia.\n         *\/\n        function calculateCosts() {\n            \/\/ 1. Obtener valores de entrada, usando 0 si no son v\u00e1lidos\n            const saldoUsdAmount = parseFloat(document.getElementById('saldoUsdAmount').value) || 0;\n            const usdCostRateCup = parseFloat(document.getElementById('usdCostRateCup').value) || 0;\n            const saldoPurchaseRateCup = parseFloat(document.getElementById('saldoPurchaseRateCup').value) || 0;\n            const saleRateCupPerSaldo = parseFloat(document.getElementById('saleRateCupPerSaldo').value) || 0;\n            \n            \/\/ 2. Elementos de salida\n            const totalSaldoCupEl = document.getElementById('totalSaldoCup');\n            const totalCostCupEl = document.getElementById('totalCostCup');\n            \/\/ Se elimina la referencia a unitCostCupEl ya que el elemento ha sido eliminado del HTML\n            const totalSalePriceCupEl = document.getElementById('totalSalePriceCup');\n            const totalProfitCupEl = document.getElementById('totalProfitCup');\n            const profitPerSaldoEl = document.getElementById('profitPerSaldo');\n            const statusMessageEl = document.getElementById('statusMessage');\n\n            \/\/ 3. Inicializar variables de resultados\n            let totalSaldoCup = 0;\n            let totalCostCup = 0;\n            let unitCostCup = 0; \/\/ Se mantiene la variable para c\u00e1lculos internos (Ganancia Equivalente, Mensaje de Estado)\n            let totalSalePriceCup = 0;\n            let totalProfitCup = 0;\n            let profitPerSaldo = 0;\n            \n            let isCostValid = false;\n            \n            \/\/ Chequeo de valores base (necesarios para calcular el costo y el punto de equilibrio)\n            if (saldoUsdAmount > 0 && usdCostRateCup > 0 && saldoPurchaseRateCup > 0) {\n                isCostValid = true;\n\n                \/\/ A. Saldo Total Adquirido (CUP de Saldo)\n                totalSaldoCup = saldoUsdAmount * saldoPurchaseRateCup;\n\n                \/\/ B. Costo Total de la Transacci\u00f3n (CUP)\n                totalCostCup = saldoUsdAmount * usdCostRateCup;\n\n                \/\/ C. Costo Unitario del Saldo (CUP por CUP de Saldo)\n                unitCostCup = totalCostCup \/ totalSaldoCup;\n                \n\n                \/\/ 4. C\u00e1lculos de VENTA y GANANCIA (solo si hay una tasa de venta)\n                if (saleRateCupPerSaldo > 0) {\n                    \/\/ D. Precio de Venta Total (CUP)\n                    totalSalePriceCup = totalSaldoCup * saleRateCupPerSaldo;\n\n                    \/\/ E. Ganancia Total (CUP)\n                    totalProfitCup = totalSalePriceCup - totalCostCup;\n\n                    \/\/ F. Ganancia Equivalente en Saldo CUP\n                    \/\/ Se usa unitCostCup (calculado internamente) para esta m\u00e9trica\n                    profitPerSaldo = unitCostCup > 0 ? totalProfitCup \/ unitCostCup : 0;\n                }\n            }\n\n            \/\/ 5. Formateo de Resultados y Actualizaci\u00f3n de Display\n            \n            \/\/ Funci\u00f3n auxiliar para formateo local (usa coma como separador decimal)\n            const formatNumber = (num, decimals) => num.toLocaleString('es-ES', { \n                minimumFractionDigits: decimals, \n                maximumFractionDigits: decimals \n            });\n\n            totalSaldoCupEl.textContent = formatNumber(totalSaldoCup, 2);\n            totalCostCupEl.textContent = formatNumber(totalCostCup, 2);\n            \/\/ Ya no se actualiza unitCostCupEl\n            totalSalePriceCupEl.textContent = formatNumber(totalSalePriceCup, 2);\n            totalProfitCupEl.textContent = formatNumber(totalProfitCup, 2);\n            profitPerSaldoEl.textContent = formatNumber(profitPerSaldo, 2);\n\n            \/\/ 6. Mostrar Estado\n            if (!isCostValid) {\n                statusMessageEl.classList.remove('hidden');\n                statusMessageEl.className = 'mt-6 p-3 rounded-xl bg-blue-100 border-l-4 border-blue-500 text-blue-800 font-semibold';\n                statusMessageEl.textContent = 'Por favor, ingrese valores v\u00e1lidos (mayores que cero) en los campos 1, 2 y 3 para calcular los costos.';\n                return;\n            }\n\n            \/\/ Si el costo es v\u00e1lido, chequear la rentabilidad con la tasa de venta\n            statusMessageEl.classList.remove('hidden');\n            const unitCostFormatted = formatNumber(unitCostCup, 3);\n            const saleRateFormatted = formatNumber(saleRateCupPerSaldo, 2);\n            \n            if (totalProfitCup > 0) {\n                statusMessageEl.className = 'mt-6 p-3 rounded-xl bg-green-100 border-l-4 border-green-500 text-green-800 font-semibold';\n                statusMessageEl.textContent = `\u00a1Negocio Rentable! Tasa de Venta (${saleRateFormatted}) cubre su costo base por unidad (${unitCostFormatted}).`;\n            } else if (totalProfitCup < 0) {\n                statusMessageEl.className = 'mt-6 p-3 rounded-xl bg-red-100 border-l-4 border-red-500 text-red-800 font-semibold';\n                statusMessageEl.textContent = `\u00a1ATENCI\u00d3N! Est\u00e1 en P\u00e9rdida. La tasa de venta (${saleRateFormatted}) es menor que su costo base por unidad (${unitCostFormatted}).`;\n            } else if (saleRateCupPerSaldo === 0) {\n                statusMessageEl.className = 'mt-6 p-3 rounded-xl bg-yellow-100 border-l-4 border-yellow-500 text-yellow-800 font-semibold';\n                statusMessageEl.textContent = `Punto de Equilibrio: Su costo base por unidad es ${unitCostFormatted}. Ingrese una Tasa de Venta (campo 4) para calcular la ganancia.`;\n            } else {\n                statusMessageEl.className = 'mt-6 p-3 rounded-xl bg-yellow-100 border-l-4 border-yellow-500 text-yellow-800 font-semibold';\n                statusMessageEl.textContent = 'Punto de Equilibrio: Sin ganancia ni p\u00e9rdida.';\n            }\n        }\n\n        \/\/ Ejecutar el c\u00e1lculo al cargar la p\u00e1gina para mostrar los valores predeterminados\n        window.onload = function() {\n            calculateCosts();\n        };\n\n    <\/script>\n<\/head>\n<body class=\"bg-gray-50 min-h-screen p-4 sm:p-8\">\n\n    <div class=\"max-w-4xl mx-auto\">\n        <header class=\"text-center mb-10 p-4 bg-white rounded-2xl shadow-lg border-b-4 border-primary\">\n            <h1 class=\"text-3xl sm:text-4xl font-extrabold text-gray-800\">\n                <span class=\"text-primary\">\ud83d\udcb0<\/span> Calculadora de Rentabilidad de Saldo\n            <\/h1>\n            <p class=\"text-gray-500 mt-2 text-lg\">\n                Calcula costos, puntos de equilibrio y ganancias en moneda nacional (CUP).\n            <\/p>\n        <\/header>\n\n        <main class=\"grid grid-cols-1 lg:grid-cols-3 gap-8\">\n            <!-- Columna de Entradas (Inputs) -->\n            <section class=\"lg:col-span-1 p-6 bg-white rounded-2xl shadow-xl space-y-5\">\n                <h2 class=\"text-2xl font-bold text-gray-700 border-b pb-3 mb-4\">Datos de la Transacci\u00f3n<\/h2>\n\n                <!-- Input: Monto Saldo USD -->\n                <div>\n                    <label for=\"saldoUsdAmount\" class=\"block text-sm font-medium text-gray-600 mb-1\">\n                        1. Monto de Saldo a Comprar (USD)\n                    <\/label>\n                    <input type=\"number\" id=\"saldoUsdAmount\" value=\"20\" oninput=\"calculateCosts()\"\n                           class=\"w-full p-3 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary transition duration-150 text-lg font-mono\"\n                           placeholder=\"Ej: 20\">\n                <\/div>\n\n                <!-- Input: Costo USD en CUP -->\n                <div>\n                    <label for=\"usdCostRateCup\" class=\"block text-sm font-medium text-gray-600 mb-1\">\n                        2. Costo del D\u00f3lar (CUP por 1 USD)\n                    <\/label>\n                    <input type=\"number\" id=\"usdCostRateCup\" value=\"495\" oninput=\"calculateCosts()\"\n                           class=\"w-full p-3 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary transition duration-150 text-lg font-mono\"\n                           placeholder=\"Ej: 495\">\n                    <p class=\"text-xs text-gray-400 mt-1\">Costo real en CUP de la divisa USD.<\/p>\n                <\/div>\n\n                <!-- Input: Tasa de Compra Saldo -->\n                <div>\n                    <label for=\"saldoPurchaseRateCup\" class=\"block text-sm font-medium text-gray-600 mb-1\">\n                        3. Tasa de Compra de Saldo (CUP Saldo por 1 USD)\n                    <\/label>\n                    <input type=\"number\" id=\"saldoPurchaseRateCup\" value=\"138\" oninput=\"calculateCosts()\"\n                           class=\"w-full p-3 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary transition duration-150 text-lg font-mono\"\n                           placeholder=\"Ej: 138\">\n                    <p class=\"text-xs text-gray-400 mt-1\">CUP de saldo que te dan por cada USD que compras.<\/p>\n                <\/div>\n\n                <!-- Input: Tasa de Venta Deseada -->\n                <div>\n                    <label for=\"saleRateCupPerSaldo\" class=\"block text-sm font-medium text-gray-600 mb-1\">\n                        4. Tasa de Venta Deseada (CUP por 1 CUP de Saldo)\n                    <\/label>\n                    <input type=\"number\" id=\"saleRateCupPerSaldo\" value=\"4.2\" step=\"0.01\" oninput=\"calculateCosts()\"\n                           class=\"w-full p-3 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary transition duration-150 text-lg font-mono\"\n                           placeholder=\"Ej: 4.20\">\n                    <p class=\"text-xs text-gray-400 mt-1\">A cu\u00e1nto vendes cada unidad de CUP de Saldo (Ej: 4.2 CUP\/CUP Saldo).<\/p>\n                <\/div>\n\n            <\/section>\n            \n            <!-- Columna de Resultados y Resumen -->\n            <section class=\"lg:col-span-2 space-y-6\">\n\n                <!-- Bloque de Costo y Equilibrio -->\n                <div class=\"p-6 bg-secondary rounded-2xl shadow-xl border-t-4 border-amber-500\">\n                    <h2 class=\"text-2xl font-bold text-gray-700 border-b pb-3 mb-4 flex items-center\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-6 w-6 mr-2 text-amber-600\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 8c1.657 0 3 .895 3 2s-1.343 2-3 2-3 .895-3 2-1.343 2-3 2v-4l-2 2h-1c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v4z\"\/>\n                        <\/svg>\n                        An\u00e1lisis de Costo y Base\n                    <\/h2>\n                    \n                    <!-- Fila 1: Saldo Total y Costo Total -->\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n                        <div class=\"bg-white p-4 rounded-xl border border-gray-200\">\n                            <p class=\"text-sm font-medium text-gray-500\">CUP Saldo Total Adquirido<\/p>\n                            <p class=\"text-2xl font-extrabold text-primary mt-1\">\n                                <span id=\"totalSaldoCup\">0.00<\/span> <span class=\"text-sm font-medium\">CUP Saldo<\/span>\n                            <\/p>\n                        <\/div>\n                        <div class=\"bg-white p-4 rounded-xl border border-gray-200\">\n                            <p class=\"text-sm font-medium text-gray-500\">Costo Total de la Compra<\/p>\n                            <p class=\"text-2xl font-extrabold text-red-600 mt-1\">\n                                <span id=\"totalCostCup\">0.00<\/span> <span class=\"text-sm font-medium\">CUP<\/span>\n                            <\/p>\n                        <\/div>\n                    <\/div>\n                    <!-- Se elimin\u00f3 Fila 2: Costo Unitario\/Punto de Equilibrio -->\n\n                <\/div>\n\n\n                <!-- Bloque de Venta y Ganancia -->\n                <div class=\"p-6 bg-secondary rounded-2xl shadow-xl border-t-4 border-green-500\">\n                    <h2 class=\"text-2xl font-bold text-gray-700 border-b pb-3 mb-4 flex items-center\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-6 w-6 mr-2 text-green-600\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14 10h4.764a2 2 0 011.857 2.148l-1.03 5.76A2 2 0 0118.995 20H5.005a2 2 0 01-1.883-2.148l1.03-5.76A2 2 0 015.236 10H10\"\/>\n                        <\/svg>\n                        Proyecci\u00f3n de Venta y Ganancia\n                    <\/h2>\n\n                    <!-- Fila 3: Precio de Venta y Ganancia CUP -->\n                    <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n                        <div class=\"bg-white p-4 rounded-xl border border-gray-200\">\n                            <p class=\"text-sm font-medium text-gray-500\">Precio Total de Venta<\/p>\n                            <p class=\"text-2xl font-extrabold text-blue-600 mt-1\">\n                                <span id=\"totalSalePriceCup\">0.00<\/span> <span class=\"text-sm font-medium\">CUP<\/span>\n                            <\/p>\n                        <\/div>\n                        <div class=\"bg-white p-4 rounded-xl border border-gray-200\">\n                            <p class=\"text-sm font-medium text-gray-500\">Ganancia Neta (Total)<\/p>\n                            <p class=\"text-2xl font-extrabold text-green-600 mt-1\">\n                                <span id=\"totalProfitCup\">0.00<\/span> <span class=\"text-sm font-medium\">CUP<\/span>\n                            <\/p>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Fila 4: Ganancia equivalente en Saldo -->\n                    <div class=\"mt-4 bg-white p-4 rounded-xl border border-gray-200 shadow-inner shadow-gray-100\">\n                        <p class=\"text-lg font-semibold text-gray-700\">GANANCIA EQUIVALENTE EN SALDO<\/p>\n                        <p class=\"text-3xl font-extrabold text-green-700 mt-1\">\n                            <span id=\"profitPerSaldo\">0.00<\/span> <span class=\"text-base font-medium\">CUP Saldo<\/span>\n                        <\/p>\n                        <p class=\"text-xs text-gray-500 mt-1\">\n                            El poder adquisitivo de su ganancia al costo base.\n                        <\/p>\n                    <\/div>\n\n                <\/div>\n\n                <!-- Mensaje de Estado -->\n                <div id=\"statusMessage\" class=\"hidden\">\n                    <!-- Se llena con JS -->\n                <\/div>\n\n            <\/section>\n\n        <\/main>\n        \n        <footer class=\"mt-10 pt-4 border-t text-center text-gray-400 text-sm\">\n            Herramienta de C\u00e1lculo Financiero Simplificado. Los datos se actualizan autom\u00e1ticamente.\n        <\/footer>\n    <\/div>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Calculadora de Costos y Ganancias de Saldo \ud83d\udcb0 Calculadora de Rentabilidad de Saldo Calcula costos, puntos de equilibrio y ganancias [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-13","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/utiles.fagales360.com\/index.php?rest_route=\/wp\/v2\/pages\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/utiles.fagales360.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/utiles.fagales360.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/utiles.fagales360.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/utiles.fagales360.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13"}],"version-history":[{"count":1,"href":"https:\/\/utiles.fagales360.com\/index.php?rest_route=\/wp\/v2\/pages\/13\/revisions"}],"predecessor-version":[{"id":14,"href":"https:\/\/utiles.fagales360.com\/index.php?rest_route=\/wp\/v2\/pages\/13\/revisions\/14"}],"wp:attachment":[{"href":"https:\/\/utiles.fagales360.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}