// KSANET — Calculadoras (hub con 5 herramientas)
const { useState, useMemo } = React;
const fmtEur = (n) => new Intl.NumberFormat('es-ES', { maximumFractionDigits: 0 }).format(Math.round(n)) + ' €';
const fmtEurDec = (n) => new Intl.NumberFormat('es-ES', { maximumFractionDigits: 2 }).format(n) + ' €';
function calcCuota(capital, tae, plazo) {
const i = (tae / 100) / 12;
const n = plazo * 12;
if (i === 0) return capital / n;
return capital * (i * Math.pow(1 + i, n)) / (Math.pow(1 + i, n) - 1);
}
const TABS = [
{ k: 'hipoteca', n: '01', t: 'Cuota e hipoteca', d: 'Estima tu cuota mensual y el ahorro frente a un promotor.' },
{ k: 'escrituracion', n: '02', t: 'Costes de escrituración', d: 'Notario, registro, gestoría y AJD al recibir tu vivienda.' },
{ k: 'alquilarvscomprar', n: '03', t: 'Comprar vs alquilar', d: 'Compara cuánto te cuesta alquilar y cuánto comprar a 10 años.' },
{ k: 'energia', n: '04', t: 'Ahorro energético', d: 'Cuánto ahorras al año con una vivienda de eficiencia A.' },
{ k: 'capacidad', n: '05', t: 'Capacidad de compra', d: '¿Qué precio de vivienda puedes asumir con tu sueldo?' },
];
/* ---------- 01 · HIPOTECA ---------- */
function CalcHipoteca() {
const [precio, setPrecio] = useState(312000);
const [entrada, setEntrada] = useState(20);
const [plazo, setPlazo] = useState(30);
const [tae, setTae] = useState(3.2);
const r = useMemo(() => {
const capital = precio * (1 - entrada / 100);
const cuota = calcCuota(capital, tae, plazo);
const totalPagado = cuota * plazo * 12;
const totalIntereses = totalPagado - capital;
const aportar = precio * (entrada / 100);
const precioPromotor = precio * 1.18;
const ahorro = precioPromotor - precio;
return { capital, cuota, totalPagado, totalIntereses, aportar, ahorro, precioPromotor };
}, [precio, entrada, plazo, tae]);
return (
Cálculo orientativo. La cuota real depende de la oferta del banco y el perfil del solicitante. KSANET negocia financiación promotora colectiva con condiciones preferentes para socios.
Tu cuota mensual estimada
{fmtEur(r.cuota)}/mes
+ cuota gestora KSANET · 9 € / mes durante la cooperativa
Ahorro vs. promotor privado
Misma vivienda · promotor{fmtEur(r.precioPromotor)}
);
}
/* ---------- 02 · ESCRITURACIÓN ---------- */
function CalcEscrituracion() {
const [precio, setPrecio] = useState(280000);
const [hipoteca, setHipoteca] = useState(180000);
const [extras, setExtras] = useState(800);
const r = useMemo(() => {
// Notario: aranceles aprox 0.2% sobre escritura adjudicación (mín 600€, máx 2400€)
const notarioAdj = Math.min(2400, Math.max(600, precio * 0.0018));
// Notario hipoteca: pagado por el banco (Ley 5/2019), no se carga al socio
// Registro de la propiedad: 0.15% sobre valor (mín 250€, máx 1500€)
const registro = Math.min(1500, Math.max(250, precio * 0.0014));
// AJD Madrid 0.75% sobre escritura adjudicación obra nueva cooperativa
const ajd = precio * 0.0075;
// Gestoría: tarifa media
const gestoria = 450;
// Otros: copias, certificados, tasaciones complementarias
const otros = extras;
const total = notarioAdj + registro + ajd + gestoria + otros;
const pctSobrePrecio = (total / precio) * 100;
return { notarioAdj, registro, ajd, gestoria, otros, total, pctSobrePrecio };
}, [precio, hipoteca, extras]);
return (
Comunidad de Madrid · 2026. AJD al 0,75 %. Notario y registro siguen el arancel oficial vigente. Desde la Ley 5/2019, los gastos de la escritura de hipoteca los paga el banco. Cifras orientativas: solicita siempre presupuesto detallado a la notaría y la gestoría asignadas a tu promoción.
Coste total de escrituración
{fmtEur(r.total)}aprox.
{r.pctSobrePrecio.toFixed(2)} % sobre el valor de adjudicación · pago único en notaría
Importante
En el régimen de cooperativa no hay ITP ni IVA al recibir la vivienda: tributa solo por AJD. Es una de las grandes ventajas fiscales del modelo cooperativo frente a la compraventa al promotor.
Modelo simplificado: hipoteca a 30 años al 3,2 %, escrituración estimada ~1,2 % del precio, revalorización vivienda 2,5 %/año. La compra incluye el patrimonio acumulado al final del período.
A {anios} años, {compraGana ? 'comprar' : 'alquilar'} es mejor por
{fmtEur(diferencia)}
{compraGana ? 'Diferencia favorable a la compra en cooperativa' : 'El alquiler resulta menos costoso en este escenario'}
Alquilar
{fmtEur(r.totAlq)}
Total pagado en {anios} años · {fmtEur(r.mensualAct)}/mes al final
Patrimonio al final: 0 €
VS
Comprar (cooperativa)
{fmtEur(r.pagadoCompra)}
Pagos totales · entrada + cuotas + escrituración
Patrimonio: {fmtEur(r.patrimonio)}
);
}
/* ---------- 04 · AHORRO ENERGÉTICO ---------- */
function CalcEnergia() {
const [m2, setM2] = useState(85);
const [tipo, setTipo] = useState('antigua'); // antigua / media / actual
const [tarifa, setTarifa] = useState(0.16); // €/kWh
const r = useMemo(() => {
// Consumo estimado kWh/m²/año por tipo
const consMap = { antigua: 195, media: 110, actual: 38 };
const consActual = consMap[tipo];
const consNueva = 38; // KSANET certificación A
const kwhAhorro = (consActual - consNueva) * m2;
const eurAhorroAnual = kwhAhorro * tarifa;
const eurAhorro20 = eurAhorroAnual * 20;
const co2 = kwhAhorro * 0.31; // kg CO2 por kWh red española
return { consActual, consNueva, kwhAhorro, eurAhorroAnual, eurAhorro20, co2 };
}, [m2, tipo, tarifa]);
return (
Estimación basada en consumos medios reales. Las viviendas de KSANET se entregan con certificación energética A (~38 kWh/m²/año), aerotermia, ventilación con recuperación de calor y carpinterías de altas prestaciones.
Ahorro estimado al año
{fmtEur(r.eurAhorroAnual)}/año
{Math.round(r.kwhAhorro)} kWh/año · {Math.round(r.co2)} kg CO₂ evitados
Regla bancaria estándar: la cuota mensual no debe superar el 35 % de los ingresos netos del hogar. La cooperativa requiere menos gastos asociados que la compra al promotor (≈4 % vs ≈12 %), por lo que tu ahorro estira más.
Precio máximo asumible · cooperativa
{fmtEur(r.precioMaxCoop)}
Cuota máxima recomendada: {fmtEur(r.cuotaMax)} / mes
Cooperativa vs promotor
Promotor privado{fmtEur(r.precioMaxPromotor)}
Cooperativa KSANET{fmtEur(r.precioMaxCoop)}
Diferencia de capacidad+{fmtEur(r.precioMaxCoop - r.precioMaxPromotor)}