// ============================================================
// Monarch — Simulateurs : Plus-value immobilière (IS) · Cession de titres (holding)
// Requiert window.MSC (simcore.jsx) et window.__mscShared (simulators2.jsx).
// ============================================================
(function () {
const { useState, useEffect } = React;
const M = window.MSC;
const { C, SERIF, BODY, fmt, pct, CountEuro, injectCore, useReveal,
Eyebrow, Label, MoneyInput, Shell, InputsCard, Doctrine, Alert, CTAEmail, ProsCons } = M;
function shared() { return window.__mscShared; }
// abattement plus-value des particuliers (IR + PS) selon durée
function abattementIR(d) {
if (d <= 5) return 0;
if (d >= 22) return 1;
return Math.min(1, (Math.min(d, 21) - 5) * 0.06 + (d >= 22 ? 0.04 : 0));
}
function abattementPS(d) {
if (d <= 5) return 0;
if (d >= 30) return 1;
let a = 0;
a += Math.max(0, Math.min(d, 21) - 5) * 0.0165;
if (d >= 22) a += 0.016;
if (d > 22) a += Math.min(d, 30) - 22 ? (Math.min(d, 30) - 22) * 0.09 : 0;
return Math.min(1, a);
}
// =====================================================
// 9. PLUS-VALUE IMMOBILIÈRE — le piège de l'amortissement
// =====================================================
function RealEstateCapitalGainSimulator() {
useEffect(injectCore, []);
const { ParamRecap } = shared();
const [achat, setAchat] = useState(500000);
const [revente, setRevente] = useState(800000);
const [duree, setDuree] = useState(15);
const [done, setDone] = useState(false);
const [busy, setBusy] = useState(false);
const reveal = useReveal(done, 250);
const P = Math.max(0, Number(achat) || 0);
const R = Math.max(0, Number(revente) || 0);
const D = Math.max(1, Math.min(40, Number(duree) || 1));
const pvBrute = Math.max(0, R - P);
// Particulier / SCI IR
const baseIR = pvBrute * (1 - abattementIR(D));
const basePS = pvBrute * (1 - abattementPS(D));
const impotParticulier = baseIR * 0.19 + basePS * 0.172;
// IS : amortissement ~3 %/an plafonné à 100 %
const tauxAmort = Math.min(1, 0.03 * D);
const vnc = P * (1 - tauxAmort);
const baseIS = Math.max(0, R - vnc);
const impotIS = (baseIS <= 42500 ? baseIS * 0.15 : 42500 * 0.15 + (baseIS - 42500) * 0.25);
const go = () => { setBusy(true); setDone(false); setTimeout(() => { setBusy(false); setDone(true); }, 700); };
const maxBase = Math.max(baseIR, basePS, baseIS, 1);
return (
VNC ≈ {fmt(vnc)} (amortissement {Math.round(tauxAmort * 100)} %). Base IS = revente − VNC = {fmt(baseIS)}. Calcul indicatif (taux réduit 19 % sur l'immobilier non retenu). L'IS est un formidable outil de capitalisation immobilière, mais un désastre à la revente. La majorité des SCI à l'IS sont créées sans stratégie de sortie. L'ingénierie du cabinet anticipe cette friction dès l'acquisition (OBO immobilier, dissociation des flux, calendrier de cession) pour éviter l'impasse fiscale lors de la liquidation de l'actif.Deux assiettes en sens inverse
Beaucoup confondent ce mécanisme avec l'apport-cession (150-0 B ter), qui contraint vos réinvestissements pendant 24 mois. Vendre une filiale que votre holding détient depuis plus de deux ans vous offre une liberté totale d'allocation du capital, avec un taux effectif d'environ 3 %. L'organisation précoce de votre groupe sanctuarise le fruit de votre travail futur.