From 9f596e59adfda0865e3224fa19b640f4b7ee1748 Mon Sep 17 00:00:00 2001 From: Maxime Quandalle Date: Mon, 3 Oct 2022 15:37:30 +0200 Subject: [PATCH] Nouveau simulateur cotisation Cipav 2023 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changement de la formule de calcul pour les cotisations Cipav à l'occasion du transfert du recouvrement à l'Urssaf --- modele-social/règles/dirigeant.yaml | 1 + modele-social/règles/profession-libérale.yaml | 26 ++++ .../components/Simulation/SimulationGoal.tsx | 4 +- .../components/conversation/Conversation.tsx | 4 + .../InstitutionsPartenaires.tsx | 2 +- .../pages/Simulateurs/ChômagePartiel.tsx | 3 +- site/source/pages/Simulateurs/Cipav2023.tsx | 143 ++++++++++++++++++ site/source/pages/Simulateurs/metadata-src.ts | 19 +++ site/source/pages/Simulateurs/metadata.tsx | 13 ++ site/source/sitePaths.ts | 2 + 10 files changed, 214 insertions(+), 3 deletions(-) create mode 100644 site/source/pages/Simulateurs/Cipav2023.tsx diff --git a/modele-social/règles/dirigeant.yaml b/modele-social/règles/dirigeant.yaml index aa1d57edc..656300aa2 100644 --- a/modele-social/règles/dirigeant.yaml +++ b/modele-social/règles/dirigeant.yaml @@ -513,6 +513,7 @@ dirigeant . indépendant: valeur: oui dirigeant . indépendant . revenu professionnel: + question: Quel est votre revenu professionnel ? description: rémunération du dirigeant au régime des indépendant unité: €/an arrondi: oui diff --git a/modele-social/règles/profession-libérale.yaml b/modele-social/règles/profession-libérale.yaml index fe9f77a4b..834c1634b 100644 --- a/modele-social/règles/profession-libérale.yaml +++ b/modele-social/règles/profession-libérale.yaml @@ -457,6 +457,32 @@ dirigeant . indépendant . PL . CIPAV . conjoint collaborateur . pourcentage: - si: proportion . moitié alors: 50 % +dirigeant . indépendant . PL . CIPAV . cotisation 2023: + somme: + - CNAVPL . retraite + - retraite complémentaire + - invalidité et décès + références: + Actu Urssaf: https://www.urssaf.fr/portail/home/independant/cipav/transfert-des-cotisations-cipav.html + +dirigeant . indépendant . PL . CIPAV . cotisation 2023 . retraite complémentaire: + barème: + assiette: assiette des cotisations + multiplicateur: plafond sécurité sociale + tranches: + - taux: 9% + plafond: 1 + - taux: 22% + plafond: 3 + +dirigeant . indépendant . PL . CIPAV . cotisation 2023 . invalidité et décès: + produit: + assiette: + valeur: assiette des cotisations + plafond: 1.85 * plafond sécurité sociale + plancher: 37% * plafond sécurité sociale + taux: 0.5% + dirigeant . indépendant . PL . CNAVPL: description: | La caisse nationale d'assurance vieillesse des professions libérales est diff --git a/site/source/components/Simulation/SimulationGoal.tsx b/site/source/components/Simulation/SimulationGoal.tsx index 264f3df31..d1c877f57 100644 --- a/site/source/components/Simulation/SimulationGoal.tsx +++ b/site/source/components/Simulation/SimulationGoal.tsx @@ -17,6 +17,7 @@ import { useInitialRender } from '../utils/useInitialRender' type SimulationGoalProps = { dottedName: DottedName label?: React.ReactNode + résumé?: React.ReactNode small?: boolean appear?: boolean editable?: boolean @@ -31,6 +32,7 @@ type SimulationGoalProps = { export function SimulationGoal({ dottedName, label, + résumé, small = false, onUpdateSituation, appear = true, @@ -85,7 +87,7 @@ export function SimulationGoal({ className={small ? 'sr-only' : ''} id={`${dottedName}-description`} > - {rule.rawNode.résumé} + {résumé ?? rule.rawNode.résumé} diff --git a/site/source/components/conversation/Conversation.tsx b/site/source/components/conversation/Conversation.tsx index 093dff38a..8ebc8f21c 100644 --- a/site/source/components/conversation/Conversation.tsx +++ b/site/source/components/conversation/Conversation.tsx @@ -73,6 +73,10 @@ export default function Conversation({ ) } + if (!currentQuestion && Object.keys(previousAnswers).length === 0) { + return null + } + return ( <>
diff --git a/site/source/components/simulationExplanation/InstitutionsPartenaires.tsx b/site/source/components/simulationExplanation/InstitutionsPartenaires.tsx index bc5106def..4a28b3019 100644 --- a/site/source/components/simulationExplanation/InstitutionsPartenaires.tsx +++ b/site/source/components/simulationExplanation/InstitutionsPartenaires.tsx @@ -280,7 +280,7 @@ export function InstitutionsPartenairesAutoEntrepreneur() { ) } -const InstitutionLogo = styled.a` +export const InstitutionLogo = styled.a` img { max-width: 110px; max-height: 50px; diff --git a/site/source/pages/Simulateurs/ChômagePartiel.tsx b/site/source/pages/Simulateurs/ChômagePartiel.tsx index 53bd33366..4ff9f3dad 100644 --- a/site/source/pages/Simulateurs/ChômagePartiel.tsx +++ b/site/source/pages/Simulateurs/ChômagePartiel.tsx @@ -273,7 +273,8 @@ function RowLabel({ dottedName }: { dottedName: DottedName }) { ) } -const ResultTable = styled.table` +// Utilisé aussi sur cipav-2023 +export const ResultTable = styled.table` font-family: ${({ theme }) => theme.fonts.main}; width: 100%; border-collapse: collapse; diff --git a/site/source/pages/Simulateurs/Cipav2023.tsx b/site/source/pages/Simulateurs/Cipav2023.tsx new file mode 100644 index 000000000..1b17f1216 --- /dev/null +++ b/site/source/pages/Simulateurs/Cipav2023.tsx @@ -0,0 +1,143 @@ +import RuleLink from '@/components/RuleLink' +import Simulation, { + SimulationGoal, + SimulationGoals, +} from '@/components/Simulation' +import { InstitutionLogo } from '@/components/simulationExplanation/InstitutionsPartenaires' +import { FromTop } from '@/components/ui/animate' +import Warning from '@/components/ui/WarningBlock' +import { useIsEmbedded } from '@/components/utils/embeddedContext' +import { useEngine } from '@/components/utils/EngineContext' +import { Li, Ul } from '@/design-system/typography/list' +import { DottedName } from 'modele-social' +import { formatValue } from 'publicodes' +import React, { useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import styled from 'styled-components' +import { CIPAV as logoCIPAVsrc } from '@/images/logos-caisses-retraite' +import logoURSSAFsrc from '@/images/Urssaf.svg' +import { ResultTable } from './ChômagePartiel' + +export default function SimulateurCotisationCipav2023() { + return ( + <> + } + customEndMessages={ + Voir les résultats en-dessous + } + > + + + + + + ) +} + +function ExplanationSection() { + return ( + +
+ + + + + en 2022 + en 2023 + + + + Organisme collecteur +

+ À partir de 2023 l'Urssaf prend en charge la collecte de vos + cotisations retraites +

+ + + + Logo Cipav + + + + + Logo Urssaf + + + + + Retraite de base + + + + + + + + + Retraite complémentaire + + + + + + + + + Invalidité-décès + + + + + + + + + + Total + + + + + + + + + +
+
+
+ ) +} + +function ValueWithLink({ dottedName }: { dottedName: DottedName }) { + const { language } = useTranslation().i18n + const engine = useEngine() + + return ( + + {formatValue(engine.evaluate(dottedName), { + language, + displayedUnit: '€', + precision: 0, + })} + + ) +} diff --git a/site/source/pages/Simulateurs/metadata-src.ts b/site/source/pages/Simulateurs/metadata-src.ts index 73249d1f8..633a4e5a2 100644 --- a/site/source/pages/Simulateurs/metadata-src.ts +++ b/site/source/pages/Simulateurs/metadata-src.ts @@ -765,6 +765,25 @@ const metadataSrc = (t: TFunction<'translation', string>) => { nextSteps: ['déclaration-charges-sociales-indépendant'], }, + 'cipav-2023': { + tracking: 'cipav-2023', + pathId: 'simulateurs.cipav-2023', + iframePath: 'cipav-2023', + meta: { + title: t( + 'pages.simulateurs.cipav-2023.meta.title', + 'Nouvelle cotisation Cipav en 2023' + ), + description: t( + 'pages.simulateurs.cipav-2023.meta.description', + 'Calculez la nouvelle cotisation Cipav à applicable à compter du 1er janvier 2023' + ), + }, + title: t( + 'pages.simulateurs.cipav-2023.title', + 'Nouvelle cotisation Cipav en 2023' + ), + }, } as const return data diff --git a/site/source/pages/Simulateurs/metadata.tsx b/site/source/pages/Simulateurs/metadata.tsx index dc8355b22..e320c6b5b 100644 --- a/site/source/pages/Simulateurs/metadata.tsx +++ b/site/source/pages/Simulateurs/metadata.tsx @@ -44,6 +44,7 @@ import PAMCHome from './PAMCHome' import SalariéSimulation from './Salarié' import { SASUSimulation } from './SASU' import SchemeComparaisonPage from './SchemeComparaison' +import Cipav2023 from './Cipav2023' interface SimulatorsDataParams { t: TFunction<'translation', string> @@ -694,6 +695,18 @@ function getSimulatorsData({ t, sitePaths, language }: SimulatorsDataParams) { path: sitePaths.simulateurs['exonération-covid'], component: ExonérationCovid, }, + 'cipav-2023': { + ...pureSimulatorsData['cipav-2023'], + path: sitePaths.simulateurs['cipav-2023'], + component: Cipav2023, + config: { + situation: { + 'dirigeant . régime social': "'indépendant'", + 'entreprise . activité': "'libérale'", + 'dirigeant . indépendant . PL . CIPAV': 'oui', + }, + }, + }, } as const } diff --git a/site/source/sitePaths.ts b/site/source/sitePaths.ts index 425beccc7..8fbe83e20 100644 --- a/site/source/sitePaths.ts +++ b/site/source/sitePaths.ts @@ -83,6 +83,7 @@ const rawSitePathsFr = { is: 'impot-societe', dividendes: 'dividendes', 'exonération-covid': 'exonération-covid', + 'cipav-2023': 'cotisations-cipav-2023', }, nouveautés: 'nouveautés', stats: 'stats', @@ -165,6 +166,7 @@ const rawSitePathsEn = { is: 'corporate-tax', dividendes: 'dividends', 'exonération-covid': 'exoneration-covid', + 'cipav-2023': 'cotisations-cipav-2023', }, nouveautés: 'news', accessibilité: 'accessibility',