{"id":18445,"date":"2025-06-19T04:31:15","date_gmt":"2025-06-19T04:31:15","guid":{"rendered":"https:\/\/orchid-oryx-288039.hostingersite.com\/?page_id=18445"},"modified":"2025-08-04T20:19:08","modified_gmt":"2025-08-04T20:19:08","slug":"calculadora-de-cuota-inicial","status":"publish","type":"page","link":"https:\/\/korner.com.co\/en\/calculadora-de-cuota-inicial\/","title":{"rendered":"Down payment calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"18445\" class=\"elementor elementor-18445\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-c18398e elementor-section-height-min-height animated-slow elementor-section-boxed elementor-section-height-default elementor-section-items-middle elementor-invisible\" data-id=\"c18398e\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7b8614a\" data-id=\"7b8614a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7b2e905 elementor-widget elementor-widget-houzez-property-breadcrumb\" data-id=\"7b2e905\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"houzez-property-breadcrumb.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"breadcrumb-wrap\"><ol class=\"breadcrumb\"><li class=\"breadcrumb-item breadcrumb-item-home\"><i class=\"houzez-icon icon-house\"><\/i><a href=\"https:\/\/korner.com.co\/en\/\">Home<\/a><\/li><li class=\"breadcrumb-item active\">Pages<\/li><\/ol><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5ae794b elementor-widget elementor-widget-houzez_elementor_section_title\" data-id=\"5ae794b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"houzez_elementor_section_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <div class=\"houzez_section_title_wrap section-title-module\">\n                                    <h2 class=\"houzez_section_title\">Calculadora de couta inicial<\/h2>\n                \n                            <\/div>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-58014dd e-flex e-con-boxed e-con e-parent\" data-id=\"58014dd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-76aac5b e-con-full e-flex e-con e-child\" data-id=\"76aac5b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-342cb70 elementor-widget elementor-widget-shortcode\" data-id=\"342cb70\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\r\n  <div class=\"calc-contenedor\">\r\n\r\n    <!-- Fila 1: calculadora + resultados -->\r\n    <div class=\"calc-grid\">\r\n      \r\n      <!-- Columna izquierda: formulario -->\r\n      <form id=\"form-calc-cuota\">\r\n        <label>Valor del inmueble\r\n          <input type=\"number\" name=\"valor\" required value=\"350000000\" min=\"0\" step=\"100000\">\r\n        <\/label>\r\n\r\n        <label>Cuota inicial requerida (%)\r\n          <input type=\"number\" name=\"porcentaje_cuota_inicial\" value=\"30\" min=\"0\" max=\"100\" step=\"0.1\">\r\n        <\/label>\r\n\r\n        <label>Subsidio\r\n          <input type=\"number\" name=\"subsidio\" value=\"20000000\" min=\"0\" step=\"100000\">\r\n        <\/label>\r\n\r\n        <label>Ahorros\r\n          <input type=\"number\" name=\"ahorros\" value=\"10000000\" min=\"0\" step=\"100000\">\r\n        <\/label>\r\n\r\n        <label>Cesant\u00edas \/ primas\r\n          <input type=\"number\" name=\"cesantias\" value=\"5000000\" min=\"0\" step=\"100000\">\r\n        <\/label>\r\n\r\n        <label>Ingreso mensual del hogar (opcional)\r\n          <input type=\"number\" name=\"ingreso\" value=\"\" min=\"0\" step=\"100000\" placeholder=\"Ej: 6000000\">\r\n        <\/label>\r\n\r\n        <label>Fecha estimada de entrega\r\n          <input type=\"date\" name=\"fecha_entrega\" value=\"2026-05-01\">\r\n        <\/label>\r\n\r\n        <label>Tasa de inter\u00e9s anual (%)\r\n          <input type=\"number\" name=\"tasa\" value=\"12\" required min=\"0\" step=\"0.1\">\r\n        <\/label>\r\n\r\n        <label>Plazo del cr\u00e9dito (a\u00f1os)\r\n          <input type=\"number\" name=\"plazo\" value=\"20\" required min=\"1\" step=\"1\">\r\n        <\/label>\r\n\r\n        <button type=\"submit\">Calcular<\/button>\r\n      <\/form>\r\n\r\n      <!-- Columna derecha: resultado + charts -->\r\n      <div id=\"resultado-calculo\">\r\n        <div class=\"calc-charts\">\r\n          <div class=\"calc-chart-box chart-donut-box\">\r\n            <canvas id=\"grafico-cuota\"><\/canvas>\r\n          <\/div>\r\n          <div class=\"calc-chart-box chart-bar-box\">\r\n            <canvas id=\"grafico-evolucion\"><\/canvas>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"resultado-detalle\"><\/div>\r\n\r\n        <div class=\"calc-actions\">\r\n          <a id=\"btn-whatsapp\" class=\"btn-action btn-wa\" href=\"#\" target=\"_blank\" rel=\"noopener\">Hablar con un asesor<\/a>\r\n          <button id=\"btn-pdf\" type=\"button\" class=\"btn-action btn-pdf\">Descargar PDF<\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Fila 2: resultados de propiedades -->\r\n    <div id=\"resultado-propiedades\"><\/div>\r\n\r\n  <\/div>\r\n\r\n  <!-- libs -->\r\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\r\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/html2canvas@1.4.1\/dist\/html2canvas.min.js\"><\/script>\r\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/jspdf@2.5.1\/dist\/jspdf.umd.min.js\"><\/script>\r\n\r\n  <script>\r\n    document.addEventListener('DOMContentLoaded', () => {\r\n      const form = document.getElementById('form-calc-cuota');\r\n      const resultadoDetalle = document.getElementById('resultado-detalle');\r\n      const canvasDonut = document.getElementById('grafico-cuota');\r\n      const canvasEvo = document.getElementById('grafico-evolucion');\r\n      const resultadoPropiedades = document.getElementById('resultado-propiedades');\r\n      const btnWhatsApp = document.getElementById('btn-whatsapp');\r\n      const btnPDF = document.getElementById('btn-pdf');\r\n\r\n      let chartDonut;\r\n      let chartEvo;\r\n\r\n      const WA_NUMBER = '573000000000';\r\n\r\n      \/\/ ===== Formateadores =====\r\n      const money = (n) => (Number(n) || 0).toLocaleString('es-CO', {\r\n        style:'currency',\r\n        currency:'COP',\r\n        maximumFractionDigits: 0\r\n      });\r\n\r\n      const moneyAxis = (v) => money(v);\r\n\r\n      function cuotaMensual(principal, tasaAnualPct, meses) {\r\n        const P = principal;\r\n        if (!isFinite(P) || P <= 0) return 0;\r\n\r\n        const r = (tasaAnualPct \/ 100) \/ 12;\r\n        const n = Math.max(1, parseInt(meses, 10));\r\n\r\n        if (!isFinite(r) || r <= 0) return P \/ n;\r\n\r\n        return P * (r * Math.pow(1 + r, n)) \/ (Math.pow(1 + r, n) - 1);\r\n      }\r\n\r\n      function principalDesdeCuota(cuota, tasaAnualPct, meses) {\r\n        const c = cuota;\r\n        if (!isFinite(c) || c <= 0) return 0;\r\n\r\n        const r = (tasaAnualPct \/ 100) \/ 12;\r\n        const n = Math.max(1, parseInt(meses, 10));\r\n\r\n        if (!isFinite(r) || r <= 0) return c * n;\r\n\r\n        const factor = (Math.pow(1 + r, n) - 1) \/ (r * Math.pow(1 + r, n));\r\n        return c * factor;\r\n      }\r\n\r\n      function evolucionAnual(principal, tasaAnualPct, plazoAnios) {\r\n        const P0 = principal;\r\n        const years = Math.max(1, parseInt(plazoAnios, 10));\r\n        const n = years * 12;\r\n        const r = (tasaAnualPct \/ 100) \/ 12;\r\n\r\n        const pago = cuotaMensual(P0, tasaAnualPct, n);\r\n        let saldo = P0;\r\n\r\n        const capPorAnio = [];\r\n        const intPorAnio = [];\r\n\r\n        for (let y = 1; y <= years; y++) {\r\n          let capY = 0;\r\n          let intY = 0;\r\n\r\n          for (let m = 1; m <= 12; m++) {\r\n            if (saldo <= 0) break;\r\n\r\n            const interes = (r > 0) ? saldo * r : 0;\r\n            const capital = Math.max(0, pago - interes);\r\n            saldo = Math.max(0, saldo - capital);\r\n\r\n            intY += interes;\r\n            capY += capital;\r\n          }\r\n\r\n          capPorAnio.push(Math.round(capY));\r\n          intPorAnio.push(Math.round(intY));\r\n        }\r\n\r\n        return { capPorAnio, intPorAnio };\r\n      }\r\n\r\n      function buildWhatsAppMessage(data) {\r\n        const lines = [\r\n          'Hola, hice una simulaci\u00f3n en la calculadora de Korner:',\r\n          '',\r\n          `\u2022 Valor del inmueble: ${money(data.valor)}`,\r\n          `\u2022 Cuota inicial requerida (${data.porcentajeCuotaInicial}%): ${money(data.cuotaInicial)}`,\r\n          `\u2022 Aporte propio: ${money(data.aportePropio)}`,\r\n          `\u2022 Subsidio: ${money(data.subsidio)}`,\r\n          `\u2022 Total disponible: ${money(data.totalDisponible)}`,\r\n          `\u2022 Faltante cuota inicial: ${money(data.faltanteCuotaInicial)}`,\r\n          '',\r\n          `\u2022 Cr\u00e9dito hipotecario estimado: ${money(data.creditoHipotecario)}`,\r\n          `\u2022 Cuota mensual (${data.plazoAnios} a\u00f1os a ${data.tasaAnualPct}%): ${money(data.cuotaMensual)}`,\r\n          data.fechaEntrega ? `\u2022 Fecha estimada de entrega: ${data.fechaEntrega}` : '',\r\n          '',\r\n          '\u00bfMe ayudas con asesor\u00eda y opciones seg\u00fan mi perfil?'\r\n        ].filter(Boolean);\r\n\r\n        return encodeURIComponent(lines.join('\\n'));\r\n      }\r\n\r\n      function buildPropertyWhatsAppMessage(propiedad, valorBusquedaPropiedades) {\r\n        const lines = [\r\n          'Hola, me interesa este proyecto:',\r\n          '',\r\n          `\u2022 Proyecto: ${propiedad.titulo}`,\r\n          `\u2022 Precio: ${money(propiedad.precio)}`,\r\n          `\u2022 Valor estimado de b\u00fasqueda: ${money(valorBusquedaPropiedades)}`,\r\n          '',\r\n          '\u00bfMe compartes m\u00e1s informaci\u00f3n, disponibilidad y opciones de financiaci\u00f3n?'\r\n        ];\r\n        return encodeURIComponent(lines.join('\\n'));\r\n      }\r\n\r\n      async function downloadPDF() {\r\n        const target = document.getElementById('resultado-calculo');\r\n        const { jsPDF } = window.jspdf;\r\n\r\n        const canvas = await html2canvas(target, {\r\n          scale: 2,\r\n          useCORS: true,\r\n          backgroundColor: '#ffffff'\r\n        });\r\n\r\n        const imgData = canvas.toDataURL('image\/png');\r\n        const pdf = new jsPDF('p', 'mm', 'a4');\r\n\r\n        const pageW = pdf.internal.pageSize.getWidth();\r\n        const pageH = pdf.internal.pageSize.getHeight();\r\n\r\n        const margin = 10;\r\n        const maxW = pageW - margin * 2;\r\n        const maxH = pageH - margin * 2;\r\n\r\n        const imgW = canvas.width;\r\n        const imgH = canvas.height;\r\n        const ratio = Math.min(maxW \/ imgW, maxH \/ imgH);\r\n\r\n        const w = imgW * ratio;\r\n        const h = imgH * ratio;\r\n        const x = (pageW - w) \/ 2;\r\n        const y = margin;\r\n\r\n        pdf.addImage(imgData, 'PNG', x, y, w, h);\r\n        pdf.save('simulacion-korner.pdf');\r\n      }\r\n\r\n      function calcularYMostrar() {\r\n        const valor = parseFloat(form.valor.value || 0);\r\n        const porcentajeCuotaInicial = parseFloat(form.porcentaje_cuota_inicial.value || 0);\r\n        const subsidio = parseFloat(form.subsidio.value || 0);\r\n        const ahorros = parseFloat(form.ahorros.value || 0);\r\n        const cesantias = parseFloat(form.cesantias.value || 0);\r\n        const ingreso = parseFloat(form.ingreso.value || 0);\r\n        const tasaAnualPct = parseFloat(form.tasa.value || 0);\r\n        const plazoAnios = parseInt(form.plazo.value || 1, 10);\r\n        const fechaEntrega = form.fecha_entrega.value;\r\n\r\n        const porcentajeSeguro = Math.min(100, Math.max(0, porcentajeCuotaInicial));\r\n\r\n        \/\/ ===== Cuota inicial basada en porcentaje =====\r\n        const cuotaInicial = valor * (porcentajeSeguro \/ 100);\r\n\r\n        \/\/ ===== Cr\u00e9dito hipotecario estimado =====\r\n        const creditoHipotecario = Math.max(0, valor - cuotaInicial);\r\n\r\n        \/\/ ===== Aportes discriminados =====\r\n        const aportePropio = ahorros + cesantias;\r\n        const totalDisponible = aportePropio + subsidio;\r\n        const faltanteCuotaInicial = Math.max(0, cuotaInicial - totalDisponible);\r\n\r\n        \/\/ ===== Cr\u00e9dito hipotecario mensual =====\r\n        const mesesCredito = plazoAnios * 12;\r\n        const cuotaMensualCredito = cuotaMensual(creditoHipotecario, tasaAnualPct, mesesCredito);\r\n\r\n        \/\/ ===== Financiar faltante =====\r\n        const cuotaFaltante5y = (faltanteCuotaInicial > 0) ? cuotaMensual(faltanteCuotaInicial, tasaAnualPct, 60) : 0;\r\n        const cuotaFaltante6y = (faltanteCuotaInicial > 0) ? cuotaMensual(faltanteCuotaInicial, tasaAnualPct, 72) : 0;\r\n\r\n        \/\/ ===== Ingreso sugerido =====\r\n        const ingresoSugerido = (cuotaMensualCredito > 0) ? (cuotaMensualCredito \/ 0.30) : 0;\r\n\r\n        let capacidad = null;\r\n        if (isFinite(ingreso) && ingreso > 0) {\r\n          const cuotaMax = ingreso * 0.30;\r\n          const principalMax = principalDesdeCuota(cuotaMax, tasaAnualPct, mesesCredito);\r\n\r\n          const porcentajeCredito = 100 - porcentajeSeguro;\r\n          const valorViviendaMax = porcentajeCredito > 0\r\n            ? principalMax \/ (porcentajeCredito \/ 100)\r\n            : 0;\r\n\r\n          const cuotaInicialMax = valorViviendaMax * (porcentajeSeguro \/ 100);\r\n\r\n          capacidad = { cuotaMax, principalMax, valorViviendaMax, cuotaInicialMax };\r\n        }\r\n\r\n        let html = `\r\n          <h3>Resultado de tu simulaci\u00f3n<\/h3>\r\n\r\n          <p><strong>Valor del inmueble:<\/strong> ${money(valor)}<\/p>\r\n          <p><strong>Cuota inicial requerida (${porcentajeSeguro}%):<\/strong> ${money(cuotaInicial)}<\/p>\r\n          <p><strong>Aporte propio:<\/strong> ${money(aportePropio)}<\/p>\r\n          <p><strong>Subsidio:<\/strong> ${money(subsidio)}<\/p>\r\n          <p><strong>Total disponible (aporte + subsidio):<\/strong> ${money(totalDisponible)}<\/p>\r\n          <p><strong>Faltante cuota inicial:<\/strong> ${money(faltanteCuotaInicial)}<\/p>\r\n        `;\r\n\r\n        if (faltanteCuotaInicial > 0) {\r\n          html += `\r\n            <p><strong>Cuota aprox. para financiar el faltante (5 a\u00f1os a ${tasaAnualPct}%):<\/strong> ${money(cuotaFaltante5y)}<\/p>\r\n            <p><strong>Cuota aprox. para financiar el faltante (6 a\u00f1os a ${tasaAnualPct}%):<\/strong> ${money(cuotaFaltante6y)}<\/p>\r\n          `;\r\n        } else {\r\n          html += `<p><strong>Financiar faltante:<\/strong> No aplica (ya cubres la cuota inicial)<\/p>`;\r\n        }\r\n\r\n        html += `\r\n          <p><strong>Cr\u00e9dito hipotecario estimado (${(100 - porcentajeSeguro).toFixed(1).replace('.0','')}%):<\/strong> ${money(creditoHipotecario)}<\/p>\r\n          <p><strong>Cuota mensual (${plazoAnios} a\u00f1os a ${tasaAnualPct}%):<\/strong> ${money(cuotaMensualCredito)}<\/p>\r\n          <p><strong>Ingreso sugerido (regla 30%):<\/strong> ${money(ingresoSugerido)}<\/p>\r\n\r\n          <h4 style=\"margin-top:14px;margin-bottom:10px;\">Comparaci\u00f3n por plazo<\/h4>\r\n          <div class=\"calc-table\">\r\n            <div class=\"calc-row calc-head\"><div>Plazo<\/div><div>Cuota aprox.<\/div><\/div>\r\n            ${[20,25,30].map(y => {\r\n              const c = cuotaMensual(creditoHipotecario, tasaAnualPct, y * 12);\r\n              return `<div class=\"calc-row\"><div>${y} a\u00f1os<\/div><div>${money(c)}<\/div><\/div>`;\r\n            }).join('')}\r\n          <\/div>\r\n        `;\r\n\r\n        if (capacidad) {\r\n          html += `\r\n            <div class=\"calc-highlight\">\r\n              <h4 style=\"margin:0 0 10px;\">Capacidad de compra (seg\u00fan ingreso)<\/h4>\r\n              <p><strong>Ingreso mensual:<\/strong> ${money(ingreso)}<\/p>\r\n              <p><strong>Cuota m\u00e1xima estimada (30%):<\/strong> ${money(capacidad.cuotaMax)}<\/p>\r\n              <p><strong>Cr\u00e9dito m\u00e1ximo estimado:<\/strong> ${money(capacidad.principalMax)}<\/p>\r\n              <p><strong>Vivienda aprox. que podr\u00edas comprar:<\/strong> ${money(capacidad.valorViviendaMax)}<\/p>\r\n              <p><strong>Cuota inicial aprox. (${porcentajeSeguro}%):<\/strong> ${money(capacidad.cuotaInicialMax)}<\/p>\r\n            <\/div>\r\n          `;\r\n        }\r\n\r\n        if (fechaEntrega) {\r\n          html += `<p style=\"margin-top:10px;\"><strong>Fecha estimada de entrega:<\/strong> ${fechaEntrega}<\/p>`;\r\n        }\r\n\r\n        resultadoDetalle.innerHTML = html;\r\n\r\n        \/\/ ===== Donut =====\r\n        const donutData = {\r\n          labels: [\r\n            'Aporte propio',\r\n            'Subsidio',\r\n            'Faltante cuota inicial',\r\n            'Cr\u00e9dito hipotecario'\r\n          ],\r\n          datasets: [{\r\n            data: [\r\n              Math.round(aportePropio),\r\n              Math.round(subsidio),\r\n              Math.round(faltanteCuotaInicial),\r\n              Math.round(creditoHipotecario)\r\n            ],\r\n            backgroundColor: ['#4ade80', '#a78bfa', '#fbbf24', '#60a5fa'],\r\n            borderWidth: 1\r\n          }]\r\n        };\r\n\r\n        if (chartDonut) chartDonut.destroy();\r\n        chartDonut = new Chart(canvasDonut.getContext('2d'), {\r\n          type: 'doughnut',\r\n          data: donutData,\r\n          options: {\r\n            responsive: true,\r\n            maintainAspectRatio: false,\r\n            plugins: {\r\n              legend: {\r\n                position: 'top',\r\n                labels: {\r\n                  boxWidth: 16,\r\n                  padding: 15,\r\n                  font: { size: 13 }\r\n                }\r\n              },\r\n              tooltip: {\r\n                callbacks: {\r\n                  label: (c) => `${c.label}: ${money(c.raw)}`\r\n                }\r\n              }\r\n            }\r\n          }\r\n        });\r\n\r\n        \/\/ ===== Evoluci\u00f3n anual =====\r\n        const evo = evolucionAnual(creditoHipotecario, tasaAnualPct, plazoAnios);\r\n        const labels = Array.from({ length: plazoAnios }, (_, i) => `A\u00f1o ${i + 1}`);\r\n\r\n        if (chartEvo) chartEvo.destroy();\r\n        chartEvo = new Chart(canvasEvo.getContext('2d'), {\r\n          type: 'bar',\r\n          data: {\r\n            labels,\r\n            datasets: [\r\n              { label: 'Capital', data: evo.capPorAnio, backgroundColor: '#4ade80' },\r\n              { label: 'Intereses', data: evo.intPorAnio, backgroundColor: '#fbbf24' }\r\n            ]\r\n          },\r\n          options: {\r\n            responsive: true,\r\n            maintainAspectRatio: false,\r\n            plugins: {\r\n              legend: {\r\n                position: 'top',\r\n                labels: {\r\n                  boxWidth: 16,\r\n                  padding: 15,\r\n                  font: { size: 13 }\r\n                }\r\n              },\r\n              tooltip: {\r\n                callbacks: {\r\n                  label: (c) => `${c.dataset.label}: ${money(c.raw)}`\r\n                }\r\n              }\r\n            },\r\n            scales: {\r\n              x: {\r\n                stacked: true,\r\n                ticks: {\r\n                  maxRotation: 45,\r\n                  minRotation: 45,\r\n                  autoSkip: true,\r\n                  maxTicksLimit: 10,\r\n                  font: { size: 12 }\r\n                }\r\n              },\r\n              y: {\r\n                stacked: true,\r\n                ticks: {\r\n                  callback: (value) => moneyAxis(value),\r\n                  font: { size: 12 }\r\n                }\r\n              }\r\n            }\r\n          }\r\n        });\r\n\r\n        \/\/ ===== WhatsApp principal =====\r\n        const waMsg = buildWhatsAppMessage({\r\n          valor,\r\n          porcentajeCuotaInicial: porcentajeSeguro,\r\n          cuotaInicial,\r\n          aportePropio,\r\n          subsidio,\r\n          totalDisponible,\r\n          faltanteCuotaInicial,\r\n          creditoHipotecario,\r\n          cuotaMensual: cuotaMensualCredito,\r\n          plazoAnios,\r\n          tasaAnualPct,\r\n          fechaEntrega\r\n        });\r\n\r\n        btnWhatsApp.href = `https:\/\/wa.me\/${WA_NUMBER}?text=${waMsg}`;\r\n\r\n        \/\/ ===== Propiedades =====\r\n        const valorBusquedaPropiedades = totalDisponible + creditoHipotecario;\r\n\r\n        const formData = new FormData();\r\n        formData.append('action', 'buscar_propiedades');\r\n        formData.append('valor', valorBusquedaPropiedades);\r\n\r\n        fetch('https:\/\/korner.com.co\/wp-admin\/admin-ajax.php', {\r\n          method: 'POST',\r\n          body: formData\r\n        })\r\n        .then(resp => resp.json())\r\n        .then(data => {\r\n          let htmlProp = '';\r\n\r\n          if (data.success && data.data.length > 0) {\r\n            htmlProp += `<h3>Propiedades sugeridas para este valor<\/h3>`;\r\n            htmlProp += `<div class=\"propiedades-sugeridas-grid\">`;\r\n\r\n            data.data.forEach(p => {\r\n              const waPropMsg = buildPropertyWhatsAppMessage(p, valorBusquedaPropiedades);\r\n              const waPropUrl = `https:\/\/wa.me\/${WA_NUMBER}?text=${waPropMsg}`;\r\n\r\n              htmlProp += `\r\n                <div class=\"propiedad-card\">\r\n                  <img decoding=\"async\" src=\"${p.imagen}\" alt=\"${p.titulo}\" \/>\r\n                  <div class=\"propiedad-card-body\">\r\n                    <h4>${p.titulo}<\/h4>\r\n                    <p>${parseFloat(p.precio).toLocaleString('es-CO', {\r\n                      style:'currency',\r\n                      currency:'COP',\r\n                      maximumFractionDigits: 0\r\n                    })}<\/p>\r\n                    <div class=\"propiedad-card-actions\">\r\n                      <a href=\"${p.url}\" target=\"_blank\" rel=\"noopener\" class=\"btn-detalles-prop\">Ver detalles<\/a>\r\n                      <a href=\"${waPropUrl}\" target=\"_blank\" rel=\"noopener\" class=\"btn-whatsapp-prop\">WhatsApp<\/a>\r\n                    <\/div>\r\n                  <\/div>\r\n                <\/div>\r\n              `;\r\n            });\r\n\r\n            htmlProp += `<\/div>`;\r\n          } else {\r\n            htmlProp += `<p>No se encontraron propiedades cercanas a este valor.<\/p>`;\r\n          }\r\n\r\n          resultadoPropiedades.innerHTML = htmlProp;\r\n        });\r\n      }\r\n\r\n      form.addEventListener('submit', e => {\r\n        e.preventDefault();\r\n        calcularYMostrar();\r\n      });\r\n\r\n      btnPDF.addEventListener('click', e => {\r\n        e.preventDefault();\r\n        downloadPDF();\r\n      });\r\n\r\n      form.valor.addEventListener('input', calcularYMostrar);\r\n      form.porcentaje_cuota_inicial.addEventListener('input', calcularYMostrar);\r\n      form.subsidio.addEventListener('input', calcularYMostrar);\r\n      form.ahorros.addEventListener('input', calcularYMostrar);\r\n      form.cesantias.addEventListener('input', calcularYMostrar);\r\n      form.ingreso.addEventListener('input', calcularYMostrar);\r\n      form.tasa.addEventListener('input', calcularYMostrar);\r\n      form.plazo.addEventListener('input', calcularYMostrar);\r\n      form.fecha_entrega.addEventListener('change', calcularYMostrar);\r\n\r\n      calcularYMostrar();\r\n    });\r\n  <\/script>\r\n\r\n  <style>\r\n    .calc-contenedor {\r\n      display: flex;\r\n      flex-direction: column;\r\n      gap: 2rem;\r\n      width: 100%;\r\n      box-sizing: border-box;\r\n      padding: 0 1rem;\r\n    }\r\n\r\n    .calc-grid {\r\n      display: grid;\r\n      grid-template-columns: 0.95fr 1.25fr;\r\n      gap: 2rem;\r\n      align-items: start;\r\n    }\r\n\r\n    #form-calc-cuota {\r\n      background: #fff;\r\n      border-radius: 16px;\r\n      padding: 30px;\r\n      box-shadow: 0 6px 20px rgba(0,0,0,0.05);\r\n      border: 1px solid #e5e7eb;\r\n      width: 100%;\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    #form-calc-cuota label {\r\n      display: block;\r\n      font-weight: 600;\r\n      color: #111827;\r\n      margin-bottom: 8px;\r\n    }\r\n\r\n    #form-calc-cuota input {\r\n      width: 100%;\r\n      padding: 12px 14px;\r\n      border-radius: 10px;\r\n      border: 1px solid #d1d5db;\r\n      background: #f9fafb;\r\n      margin-bottom: 12px;\r\n      font-size: 1rem;\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    #form-calc-cuota button {\r\n      margin-top: 10px;\r\n      width: 100%;\r\n      padding: 14px 20px;\r\n      background: linear-gradient(135deg, #ee6060, #1d4ed8);\r\n      color: white;\r\n      border: none;\r\n      border-radius: 10px;\r\n      font-size: 1rem;\r\n      font-weight: 600;\r\n      cursor: pointer;\r\n      transition: background .3s ease;\r\n    }\r\n\r\n    #form-calc-cuota button:hover {\r\n      background: linear-gradient(135deg, #1d4ed8, #1e40af);\r\n    }\r\n\r\n    #resultado-calculo {\r\n      display: flex;\r\n      flex-direction: column;\r\n      gap: 20px;\r\n      justify-content: flex-start;\r\n      align-items: stretch;\r\n      background: #f8fafc;\r\n      border-radius: 16px;\r\n      padding: 30px;\r\n      border: 1px solid #e5e7eb;\r\n      width: 100%;\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    .calc-charts {\r\n      display: grid;\r\n      grid-template-columns: 1fr;\r\n      gap: 20px;\r\n      width: 100%;\r\n    }\r\n\r\n    .calc-chart-box {\r\n      background: #ffffff;\r\n      border: 1px solid #e5e7eb;\r\n      border-radius: 14px;\r\n      padding: 18px;\r\n      box-sizing: border-box;\r\n      width: 100%;\r\n    }\r\n\r\n    .chart-donut-box {\r\n      min-height: 360px;\r\n    }\r\n\r\n    .chart-bar-box {\r\n      min-height: 420px;\r\n    }\r\n\r\n    .calc-chart-box canvas {\r\n      width: 100% !important;\r\n      display: block;\r\n    }\r\n\r\n    .chart-donut-box canvas {\r\n      height: 320px !important;\r\n    }\r\n\r\n    .chart-bar-box canvas {\r\n      height: 380px !important;\r\n    }\r\n\r\n    #resultado-detalle {\r\n      text-align: left;\r\n      font-size: 0.95rem;\r\n    }\r\n\r\n    .calc-actions {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 12px;\r\n    }\r\n\r\n    .btn-action {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      width: 100%;\r\n      padding: 12px 14px;\r\n      border-radius: 10px;\r\n      font-weight: 800;\r\n      text-decoration: none;\r\n      cursor: pointer;\r\n      border: 1px solid transparent;\r\n      transition: filter .25s ease;\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    .btn-action:hover {\r\n      filter: brightness(0.96);\r\n    }\r\n\r\n    .btn-wa {\r\n      background: #22c55e;\r\n      color: #fff;\r\n    }\r\n\r\n    .btn-pdf {\r\n      background: #111827;\r\n      color: #fff;\r\n      border: none;\r\n    }\r\n\r\n    .calc-table {\r\n      border: 1px solid #e5e7eb;\r\n      border-radius: 12px;\r\n      overflow: hidden;\r\n      background: #fff;\r\n      margin-bottom: 6px;\r\n    }\r\n\r\n    .calc-row {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 8px;\r\n      padding: 10px 12px;\r\n      border-top: 1px solid #f1f5f9;\r\n      font-weight: 600;\r\n      color: #111827;\r\n    }\r\n\r\n    .calc-row:first-child {\r\n      border-top: none;\r\n    }\r\n\r\n    .calc-head {\r\n      background: #f1f5f9;\r\n      font-weight: 900;\r\n    }\r\n\r\n    .calc-highlight {\r\n      background: #ffffff;\r\n      border: 1px solid #e5e7eb;\r\n      border-radius: 14px;\r\n      padding: 14px;\r\n      margin-top: 12px;\r\n    }\r\n\r\n    #resultado-propiedades {\r\n      background: #fff;\r\n      border-radius: 16px;\r\n      padding: 30px;\r\n      border: 1px solid #e5e7eb;\r\n      box-shadow: 0 4px 15px rgba(0,0,0,0.05);\r\n      width: 100%;\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    .propiedades-sugeridas-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\r\n      gap: 1.5rem;\r\n      margin-top: 1.5rem;\r\n    }\r\n\r\n    .propiedad-card {\r\n      border: 1px solid #e5e7eb;\r\n      border-radius: 12px;\r\n      overflow: hidden;\r\n      background: #fff;\r\n      box-shadow: 0 4px 12px rgba(0,0,0,0.05);\r\n      transition: all .3s ease;\r\n      display: flex;\r\n      flex-direction: column;\r\n    }\r\n\r\n    .propiedad-card:hover {\r\n      transform: translateY(-4px);\r\n      box-shadow: 0 8px 20px rgba(0,0,0,0.08);\r\n    }\r\n\r\n    .propiedad-card img {\r\n      width: 100%;\r\n      height: 180px;\r\n      object-fit: cover;\r\n    }\r\n\r\n    .propiedad-card-body {\r\n      padding: 1rem 1.2rem;\r\n      flex: 1;\r\n      display: flex;\r\n      flex-direction: column;\r\n    }\r\n\r\n    .propiedad-card-body h4 {\r\n      font-size: 1.05rem;\r\n      margin: 0 0 .4rem;\r\n      color: #1f2937;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .propiedad-card-body p {\r\n      margin: 0 0 .8rem;\r\n      color: #4b5563;\r\n      font-weight: 500;\r\n    }\r\n\r\n    .propiedad-card-actions {\r\n      margin-top: auto;\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 10px;\r\n    }\r\n\r\n    .btn-detalles-prop,\r\n    .btn-whatsapp-prop {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      text-decoration: none;\r\n      padding: 10px 12px;\r\n      border-radius: 8px;\r\n      font-size: .9rem;\r\n      font-weight: 700;\r\n      transition: all .25s ease;\r\n      box-sizing: border-box;\r\n      min-height: 42px;\r\n      text-align: center;\r\n    }\r\n\r\n    .btn-detalles-prop {\r\n      background: #ee6060;\r\n      color: #fff;\r\n    }\r\n\r\n    .btn-detalles-prop:hover {\r\n      background: #e14e4e;\r\n    }\r\n\r\n    .btn-whatsapp-prop {\r\n      background: #22c55e;\r\n      color: #fff;\r\n    }\r\n\r\n    .btn-whatsapp-prop:hover {\r\n      background: #16a34a;\r\n    }\r\n\r\n    @media (max-width: 1200px) {\r\n      .calc-grid {\r\n        grid-template-columns: 1fr 1.15fr;\r\n      }\r\n\r\n      .chart-donut-box {\r\n        min-height: 340px;\r\n      }\r\n\r\n      .chart-bar-box {\r\n        min-height: 390px;\r\n      }\r\n\r\n      .chart-donut-box canvas {\r\n        height: 300px !important;\r\n      }\r\n\r\n      .chart-bar-box canvas {\r\n        height: 350px !important;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 1024px) {\r\n      .calc-grid {\r\n        grid-template-columns: 1fr;\r\n        gap: 1.5rem;\r\n      }\r\n\r\n      .calc-actions {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #resultado-calculo {\r\n        text-align: center;\r\n      }\r\n\r\n      #resultado-detalle {\r\n        text-align: left;\r\n      }\r\n\r\n      .chart-donut-box,\r\n      .chart-bar-box {\r\n        min-height: 320px;\r\n      }\r\n\r\n      .chart-donut-box canvas,\r\n      .chart-bar-box canvas {\r\n        height: 280px !important;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 768px) {\r\n      .calc-contenedor {\r\n        gap: 1.5rem;\r\n        padding: 0 .8rem;\r\n      }\r\n\r\n      #form-calc-cuota,\r\n      #resultado-calculo,\r\n      #resultado-propiedades {\r\n        padding: 20px;\r\n      }\r\n\r\n      .propiedades-sugeridas-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      .propiedad-card img {\r\n        height: 160px;\r\n      }\r\n\r\n      .propiedad-card-actions {\r\n        grid-template-columns: 1fr;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 480px) {\r\n      #form-calc-cuota input,\r\n      #form-calc-cuota button {\r\n        font-size: .9rem;\r\n      }\r\n\r\n      #resultado-detalle p {\r\n        font-size: .88rem;\r\n      }\r\n\r\n      .propiedad-card-body h4 {\r\n        font-size: .95rem;\r\n      }\r\n\r\n      .btn-detalles-prop,\r\n      .btn-whatsapp-prop {\r\n        font-size: .85rem;\r\n        padding: 8px 10px;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <\/div>\n\t\t\t\t\t\t<\/div>\n\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>Calculadora de couta inicial<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"class_list":["post-18445","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/korner.com.co\/en\/wp-json\/wp\/v2\/pages\/18445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/korner.com.co\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/korner.com.co\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/korner.com.co\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/korner.com.co\/en\/wp-json\/wp\/v2\/comments?post=18445"}],"version-history":[{"count":31,"href":"https:\/\/korner.com.co\/en\/wp-json\/wp\/v2\/pages\/18445\/revisions"}],"predecessor-version":[{"id":20060,"href":"https:\/\/korner.com.co\/en\/wp-json\/wp\/v2\/pages\/18445\/revisions\/20060"}],"wp:attachment":[{"href":"https:\/\/korner.com.co\/en\/wp-json\/wp\/v2\/media?parent=18445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}