Nouveau simulateur cotisation Cipav 2023

Changement de la formule de calcul pour les cotisations Cipav à
l'occasion du transfert du recouvrement à l'Urssaf
simul-cipav23
Maxime Quandalle 2022-10-03 15:37:30 +02:00
parent 574ced3af2
commit 9f596e59ad
10 changed files with 214 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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é}
</SmallBody>
</StyledGoalHeader>
</Grid>

View File

@ -73,6 +73,10 @@ export default function Conversation({
)
}
if (!currentQuestion && Object.keys(previousAnswers).length === 0) {
return null
}
return (
<>
<div className="print-only">

View File

@ -280,7 +280,7 @@ export function InstitutionsPartenairesAutoEntrepreneur() {
)
}
const InstitutionLogo = styled.a`
export const InstitutionLogo = styled.a`
img {
max-width: 110px;
max-height: 50px;

View File

@ -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;

View File

@ -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 (
<>
<Simulation
results={<ExplanationSection />}
customEndMessages={
<span className="ui__ notice">Voir les résultats en-dessous</span>
}
>
<SimulationGoals legend="Salaire brut avant chômage partiel">
<SimulationGoal
dottedName="dirigeant . indépendant . revenu professionnel"
résumé="Utilisé pour le calcul des cotisations retraite"
/>
</SimulationGoals>
</Simulation>
</>
)
}
function ExplanationSection() {
return (
<FromTop>
<div
className="ui__ light card"
css={`
overflow: hidden;
margin: 1rem 0;
`}
>
<ResultTable>
<tbody>
<tr>
<th></th>
<th>en 2022</th>
<th>en 2023</th>
</tr>
<tr>
<td>
<strong>Organisme collecteur</strong>
<p className="ui__ notice">
À partir de 2023 l'Urssaf prend en charge la collecte de vos
cotisations retraites
</p>
</td>
<td>
<InstitutionLogo
href="http://www.ircec.fr/"
target="_blank"
rel="noreferrer"
>
<img src={logoCIPAVsrc} alt="Logo Cipav" />
</InstitutionLogo>
</td>
<td>
<InstitutionLogo
href="http://www.ircec.fr/"
target="_blank"
rel="noreferrer"
>
<img src={logoURSSAFsrc} alt="Logo Urssaf" />
</InstitutionLogo>
</td>
</tr>
<tr>
<td>Retraite de base</td>
<td>
<ValueWithLink dottedName="dirigeant . indépendant . PL . CNAVPL . retraite" />
</td>
<td>
<ValueWithLink dottedName="dirigeant . indépendant . PL . CNAVPL . retraite" />
</td>
</tr>
<tr>
<td>Retraite complémentaire</td>
<td>
<ValueWithLink dottedName="dirigeant . indépendant . PL . CIPAV . retraite complémentaire" />
</td>
<td>
<ValueWithLink dottedName="dirigeant . indépendant . PL . CIPAV . cotisation 2023 . retraite complémentaire" />
</td>
</tr>
<tr>
<td>Invalidité-décès</td>
<td>
<ValueWithLink dottedName="dirigeant . indépendant . PL . CIPAV . invalidité et décès" />
</td>
<td>
<ValueWithLink dottedName="dirigeant . indépendant . PL . CIPAV . cotisation 2023 . invalidité et décès" />
</td>
</tr>
<tr>
<td>
<strong>Total</strong>
</td>
<td>
<ValueWithLink dottedName="dirigeant . indépendant . PL . cotisations caisse de retraite" />
</td>
<td>
<ValueWithLink dottedName="dirigeant . indépendant . PL . CIPAV . cotisation 2023" />
</td>
</tr>
</tbody>
</ResultTable>
</div>
</FromTop>
)
}
function ValueWithLink({ dottedName }: { dottedName: DottedName }) {
const { language } = useTranslation().i18n
const engine = useEngine()
return (
<RuleLink dottedName={dottedName}>
{formatValue(engine.evaluate(dottedName), {
language,
displayedUnit: '€',
precision: 0,
})}
</RuleLink>
)
}

View File

@ -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

View File

@ -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
}

View File

@ -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',