🔨 Intégre les régimes RACD et RACL

pull/1533/head
Maxime Quandalle 2021-04-12 15:38:47 +02:00
parent 2ee4ffdeff
commit 144dab467f
7 changed files with 290 additions and 126 deletions

View File

@ -21,6 +21,7 @@ artiste-auteur . revenus . BNC:
artiste-auteur . revenus . BNC . micro-bnc:
non applicable si: contrôle micro-bnc
applicable si: recettes > 0 €/an
par défaut: oui
question: Souhaitez-vous opter pour le régime micro-BNC ?
résumé: Avec abattement forfaitaire fiscal de 34 % au titre des frais professionnels
@ -141,12 +142,110 @@ artiste-auteur . cotisations . IRCEC:
formule:
somme:
- cotisation RAAP
- cotisation RACD
- cotisation RACL
références:
Guide IRCEC 2021: http://www.ircec.fr/wp-content/uploads/2021/02/guide-ircec-2021.pdf
artiste-auteur . cotisations . IRCEC . cotisation RAAP:
applicable si: assiette > 9135 €/an
applicable si: assiette > seuil d'affiliation
description: |
Vous pouvez bénéficier d'un taux réduit à votre demande si vos revenus
n'atteignent pas à seuil minimal pour une année donnée. Ce taux réduit
s'applique également à vos revenus déjà soumis à cotisation auprès du RACL
ou du RACD.
formule:
variations:
- si: taux réduit
alors:
produit:
assiette: assiette
taux: 4%
- sinon:
barème:
assiette: assiette
tranches:
- taux: 4%
plafond:
variations:
- si: profession . RACD
alors: cotisation RACD . plafond
- si: profession . RACL
alors: cotisation RACL . plafond
- taux: 8%
arrondi: oui
artiste-auteur . cotisations . IRCEC . cotisation RAAP . seuil d'affiliation: 9135 €/an
artiste-auteur . cotisations . IRCEC . cotisation RAAP . taux réduit:
applicable si: assiette < 3 * seuil d'affiliation
question: Souhaitez-vous bénéficier d'un taux réduit pour votre cotisation retraite ? Vos droits seront réduits d'autant.
par défaut: non
description: |
Le régime RAAP vous permet d'opter pour un taux réduit de 4% au lieu de 8%
si vous en faite la demande.
références:
Guide IRCEC 2021: http://www.ircec.fr/wp-content/uploads/2021/02/guide-ircec-2021.pdf#page=5
artiste-auteur . cotisations . IRCEC . profession:
question: Exercez-vous l'une de professions suivantes ?
description: |
Selon la nature de leur activité, les artistes-auteurs cotisent à
un ou plusieurs régimes de retraite complémentaire gérés par
lIRCEC : dans tous les cas et si vous atteignez le seuil
daffiliation, au RAAP, puis selon votre activité artistique au RACD
et/ou au RACL.
formule:
une possibilité:
choix obligatoire: non
possibilités:
- RACD
- RACL
par défaut: non
artiste-auteur . cotisations . IRCEC . profession . RACD:
icônes: 🎞️
titre: auteur ou compositeur dramatique, de spectacle vivant, de films
description: |
Les professions suivantes cotisent au RACD :
- Les auteurs dramatiques exerçant lune des professions suivantes : scénariste, dialoguiste, adaptateur, réalisateur, auteur de la bible littéraire, auteur graphique danimation, créateur des personnages originaux et des décors sil sagit dun univers original, etc.
- Les auteurs et compositeurs dramatiques et du spectacle vivant : théâtre, danse, opéra, cirque, arts de la rue, etc.
formule: profession = 'RACD'
artiste-auteur . cotisations . IRCEC . profession . RACL:
icônes: 🎙️
titre: auteur ou compositeur lyrique, dialoguiste de doublage
description: Les auteurs et compositeurs dœuvres musicales et les dialoguistes de doublage cotisent au RACL.
formule: profession = 'RACL'
artiste-auteur . cotisations . IRCEC . régime RACL:
question: Cotisez-vous au RACL ?
par défaut: non
artiste-auteur . cotisations . IRCEC . cotisation RACD:
applicable si: profession . RACD
formule:
produit:
assiette: assiette
plafond: 3 * contrat salarié . plafond sécurité sociale
plafond:
nom: plafond
valeur: 496250 €/an
taux: 8%
arrondi: oui
artiste-auteur . cotisations . IRCEC . cotisation RACL:
applicable si: profession . RACL
formule:
barème:
assiette: assiette
tranches:
- taux: 0%
plafond: 2739 €/an
- taux: 6.5%
plafond:
nom: plafond
valeur: 376665 €/an
- taux:
nom: cotisation de solidarité
valeur: 1.5%
arrondi: oui

View File

@ -3,7 +3,7 @@ import * as Animate from 'Components/ui/animate'
import Emoji from 'Components/utils/Emoji'
import { useEngine } from 'Components/utils/EngineContext'
import assuranceMaladieSrc from 'Images/assurance-maladie.svg'
import * as logosSrc from 'Images/logos-cnavpl'
import * as logosSrc from 'Images/logos-caisses-retraite'
import urssafSrc from 'Images/Urssaf.svg'
import { DottedName } from 'modele-social'
import { Trans } from 'react-i18next'
@ -19,23 +19,7 @@ export default function PLExplanation() {
<Animate.fromBottom>
<h2>Vos institutions partenaires</h2>
<div className="ui__ box-container">
<div className="ui__ card box">
<a target="_blank" href="https://www.urssaf.fr/portail/home.html">
<LogoImg src={urssafSrc} title="logo Urssaf" />
</a>
<p className="ui__ notice">
Les cotisations recouvrées par l'Urssaf, qui servent au
financement de la sécurité sociale (assurance maladie,
allocations familiales, dépendance)
</p>
<p className="ui__ lead">
<Value
unit={unit}
displayedUnit="€"
expression="dirigeant . indépendant . PL . cotisations Urssaf"
/>
</p>
</div>
<CotisationsUrssaf rule="dirigeant . indépendant . PL . cotisations Urssaf" />
<CaisseRetraite />
<Condition expression="dirigeant . indépendant . PL . PAMC . participation CPAM > 0">
<div className="ui__ card box">
@ -74,6 +58,25 @@ export default function PLExplanation() {
)
}
export function CotisationsUrssaf({ rule }: { rule: DottedName }) {
const unit = useSelector(targetUnitSelector)
return (
<div className="ui__ card box">
<a target="_blank" href="https://www.urssaf.fr/portail/home.html">
<LogoImg src={urssafSrc} title="logo Urssaf" />
</a>
<p className="ui__ notice">
Les cotisations recouvrées par l'Urssaf, qui servent au financement de
la sécurité sociale (assurance maladie, allocations familiales,
dépendance)
</p>
<p className="ui__ lead">
<Value unit={unit} displayedUnit="€" expression={rule} />
</p>
</div>
)
}
function CaisseRetraite() {
const engine = useEngine()
const unit = useSelector(targetUnitSelector)

View File

@ -709,6 +709,108 @@ artiste-auteur . cotisations . CSG-CRDS . abattement:
artiste-auteur . cotisations . CSG-CRDS . assiette:
titre.en: base
titre.fr: assiette
artiste-auteur . cotisations . IRCEC:
description.en: >
[automatic] If you are a professional artist-author and you are paid in
royalties, the
royalties, the IRCEC is the social security organization that manages your
management of your compulsory supplementary pension.
description.fr: |
Si vous êtes artiste-auteur professionnel et que vous êtes rémunéré en
droits dauteur, lIRCEC est lorganisme de Sécurité sociale qui assure la
gestion de votre retraite complémentaire obligatoire.
titre.en: '[automatic] Supplementary pension'
titre.fr: Retraite complémentaire
artiste-auteur . cotisations . IRCEC . cotisation RAAP:
description.en: >
[automatic] You may be eligible for a reduced rate at your request if your
income
do not reach a minimum threshold in a given year. This reduced rate
also applies to your income that is already subject to contributions under the RACL
or the RACD.
description.fr: |
Vous pouvez bénéficier d'un taux réduit à votre demande si vos revenus
n'atteignent pas à seuil minimal pour une année donnée. Ce taux réduit
s'applique également à vos revenus déjà soumis à cotisation auprès du RACL
ou du RACD.
titre.en: '[automatic] AMPS contribution'
titre.fr: cotisation RAAP
artiste-auteur . cotisations . IRCEC . cotisation RAAP . seuil d'affiliation:
titre.en: '[automatic] membership threshold'
titre.fr: seuil d'affiliation
artiste-auteur . cotisations . IRCEC . cotisation RAAP . taux réduit:
description.en: >
[automatic] The AMPS scheme allows you to opt for a reduced rate of 4%
instead of 8% if you
if you so request.
description.fr: |
Le régime RAAP vous permet d'opter pour un taux réduit de 4% au lieu de 8%
si vous en faite la demande.
question.en:
'[automatic] Would you like to benefit from a reduced rate for your
pension contribution? Your entitlement will be reduced accordingly.'
question.fr: Souhaitez-vous bénéficier d'un taux réduit pour votre cotisation
retraite ? Vos droits seront réduits d'autant.
titre.en: '[automatic] reduced rate'
titre.fr: taux réduit
artiste-auteur . cotisations . IRCEC . cotisation RACD:
titre.en: '[automatic] RACD contribution'
titre.fr: cotisation RACD
artiste-auteur . cotisations . IRCEC . cotisation RACL:
titre.en: '[automatic] RACL contribution'
titre.fr: cotisation RACL
artiste-auteur . cotisations . IRCEC . profession:
description.en: >
[automatic] Depending on the nature of their activity, artists-authors
contribute to
one or more complementary pension schemes managed by the IRCEC
IRCEC: in all cases and if you reach the affiliation threshold
affiliation threshold, to the RAAP, then depending on your artistic activity to the RACD
and/or the RACL.
description.fr: |
Selon la nature de leur activité, les artistes-auteurs cotisent à
un ou plusieurs régimes de retraite complémentaire gérés par
lIRCEC : dans tous les cas et si vous atteignez le seuil
daffiliation, au RAAP, puis selon votre activité artistique au RACD
et/ou au RACL.
question.en: '[automatic] Do you work in any of the following occupations?'
question.fr: Exercez-vous l'une de professions suivantes ?
titre.en: '[automatic] profession'
titre.fr: profession
artiste-auteur . cotisations . IRCEC . profession . RACD:
description.en: >
[automatic] The following occupations contribute to the CDHA:
- Playwrights practising one of the following professions: screenwriter, dialogue writer, adapter, director, author of the literary bible, graphic author of animation, creator of original characters and sets if it is an original universe, etc.
- Authors and composers of drama and performing arts: theatre, dance, opera, circus, street arts, etc.
description.fr: >
Les professions suivantes cotisent au RACD :
- Les auteurs dramatiques exerçant lune des professions suivantes : scénariste, dialoguiste, adaptateur, réalisateur, auteur de la bible littéraire, auteur graphique danimation, créateur des personnages originaux et des décors sil sagit dun univers original, etc.
- Les auteurs et compositeurs dramatiques et du spectacle vivant : théâtre, danse, opéra, cirque, arts de la rue, etc.
titre.en: '[automatic] author or composer of drama, live shows, films'
titre.fr: auteur ou compositeur dramatique, de spectacle vivant, de films
artiste-auteur . cotisations . IRCEC . profession . RACL:
description.en:
'[automatic] Authors and composers of musical works and dubbing
dialogue writers contribute to the RACL.'
description.fr: Les auteurs et compositeurs dœuvres musicales et les
dialoguistes de doublage cotisent au RACL.
titre.en: '[automatic] lyrical author or composer, dubbing dialogue writer'
titre.fr: auteur ou compositeur lyrique, dialoguiste de doublage
artiste-auteur . cotisations . IRCEC . régime RACL:
question.en: '[automatic] Do you contribute to the RACL?'
question.fr: Cotisez-vous au RACL ?
titre.en: '[automatic] RACL plan'
titre.fr: régime RACL
artiste-auteur . cotisations . assiette:
description.en: "[automatic] Artists' earnings can be categorized either as
wages and salaries or as non-commercial profits. Social security
@ -726,19 +828,21 @@ artiste-auteur . cotisations . formation professionnelle:
titre.en: professional training
titre.fr: formation professionnelle
artiste-auteur . cotisations . option surcotisation:
question.en: Would you like to over-contribute?
question.fr: Souhaitez-vous surcotiser ?
résumé.en: '[automatic] Your income is below the thresholds allowing you to
validate 4 quarters of retirement. You can choose to overcontribute to
increase your entitlements.'
résumé.fr: Vos revenus sont en dessous des seuils vous permettant de valider 4
trimestres de retraite. Vous pouvez choisir de surcotiser pour augmenter vos
droits.
description.en:
'[automatic] Your income is below the thresholds allowing you to
validate 4 quarters of retirement. You can choose to contribute more to
increase your rights.'
description.fr: Vos revenus sont en dessous des seuils vous permettant de
valider 4 trimestres de retraite. Vous pouvez choisir de surcotiser pour
augmenter vos droits.
question.en: '[automatic] Would you like to contribute more to increase your
pension rights?'
question.fr: Souhaitez-vous surcotiser pour augmenter vos droits à retraite ?
titre.en: overcontribution option
titre.fr: option surcotisation
artiste-auteur . cotisations . vieillesse:
titre.en: Basic pension contribution
titre.fr: vieillesse
titre.en: '[automatic] Basic pension'
titre.fr: Retraite de base
artiste-auteur . revenus:
titre.en: revenues
titre.fr: revenus

View File

@ -1,20 +1,16 @@
import Simulation from 'Components/Simulation'
import PeriodSwitch from 'Components/PeriodSwitch'
import { DistributionBranch } from 'Components/Distribution'
import Value, { Condition } from 'Components/EngineValue'
import PeriodSwitch from 'Components/PeriodSwitch'
import SimulateurWarning from 'Components/SimulateurWarning'
import Simulation from 'Components/Simulation'
import { CotisationsUrssaf } from 'Components/simulationExplanation/PLExplanation'
import { SimulationGoal, SimulationGoals } from 'Components/SimulationGoals'
import 'Components/TargetSelection.css'
import Animate from 'Components/ui/animate'
import { EngineContext } from 'Components/utils/EngineContext'
import { EngineContext, useEngine } from 'Components/utils/EngineContext'
import useSimulationConfig from 'Components/utils/useSimulationConfig'
import { DottedName } from 'modele-social'
import { useContext, useState } from 'react'
import { Trans } from 'react-i18next'
import { useSelector } from 'react-redux'
import urssafSrc from 'Images/Urssaf.svg'
import ircecSrc from 'Images/logos-caisses-retraite/ircec.jpg'
import { situationSelector } from 'Selectors/simulationSelectors'
import { useContext } from 'react'
import { Trans } from 'react-i18next'
import styled from 'styled-components'
import config from './configs/artiste-auteur.yaml'
@ -36,91 +32,43 @@ export default function ArtisteAuteur() {
</>
)
}
type WarningProps = {
dottedName: DottedName
}
function Warning({ dottedName }: WarningProps) {
const description = useContext(EngineContext).getRule(dottedName).rawNode
.description
return (
<Condition expression={dottedName}>
<li>{description}</li>
</Condition>
)
}
const ResultLine = styled.div`
padding: 10px;
font-size: 1.25em;
display: flexbox;
flex-direction: column;
`
const ResultLabel = styled.div`
flex-grow: 1;
`
function CotisationsResult() {
const [display, setDisplay] = useState(false)
const situation = useSelector(situationSelector)
if (Object.keys(situation).length && !display) {
setDisplay(true)
}
if (!display) {
return null
}
return (
<Animate.appear>
<>
<CotisationsParOrganisme />
<Condition expression="artiste-auteur . cotisations">
<RepartitionCotisations />
</Condition>
</Animate.appear>
</>
)
}
function CotisationsParOrganisme() {
const cotisIRCEC = useEngine().evaluate(
'artiste-auteur . cotisations . IRCEC'
)
const { description: descriptionIRCEC } = useEngine().getRule(
'artiste-auteur . cotisations . IRCEC'
).rawNode
return (
<section>
<h2>Vos institutions partenaires</h2>
<div className="ui__ box-container">
<div className="ui__ card box">
<a target="_blank" href="https://www.urssaf.fr/portail/home.html">
<LogoImg src={urssafSrc} title="logo Urssaf" />
</a>
<p className="ui__ notice">
Les cotisations recouvrées par l'Urssaf, qui servent au financement
de la sécurité sociale (assurance maladie, allocations familiales,
dépendance)
</p>
<p className="ui__ lead">
<Value
displayedUnit="€"
expression="artiste-auteur . cotisations"
/>
</p>
</div>
<div className="ui__ card box">
<a target="_blank" href="http://www.ircec.fr/">
<LogoImg src={ircecSrc} title="logo IRCEC" />
</a>
<p className="ui__ notice">
Si vous êtes artiste-auteur professionnel et que vous êtes rémunéré
en droits dauteur, lIRCEC est lorganisme de Sécurité sociale qui
assure la gestion de votre retraite complémentaire obligatoire.
</p>
<p className="ui__ lead">
<Value
displayedUnit="€"
expression="artiste-auteur . cotisations . IRCEC"
/>
</p>
</div>
<CotisationsUrssaf rule="artiste-auteur . cotisations" />
{cotisIRCEC.nodeValue ? (
<div className="ui__ card box">
<a target="_blank" href="http://www.ircec.fr/">
<LogoImg src={ircecSrc} title="logo IRCEC" />
</a>
<p className="ui__ notice">{descriptionIRCEC}</p>
<p className="ui__ lead">
<Value
displayedUnit="€"
expression="artiste-auteur . cotisations . IRCEC"
/>
</p>
</div>
) : null}
</div>
</section>
)
@ -163,13 +111,15 @@ function RepartitionCotisations() {
<Trans>À quoi servent mes cotisations ?</Trans>
</h2>
<div className="distribution-chart__container">
{cotisations.map((cotisation) => (
<DistributionBranch
key={cotisation.dottedName}
maximum={maximum}
{...cotisation}
/>
))}
{cotisations
.filter(({ value }) => Boolean(value))
.map((cotisation) => (
<DistributionBranch
key={cotisation.dottedName}
maximum={maximum}
{...cotisation}
/>
))}
</div>
</section>
)

View File

@ -200,6 +200,12 @@ const guidesUrssaf = [
associatedRule: 'dirigeant . auto-entrepreneur',
title: 'Guide Urssaf pour les auto-entrepreneurs',
},
{
url:
'http://www.secu-artistes-auteurs.fr/sites/default/files/pdf/Guide%20pratique%20de%20d%C3%A9but%20d%27activit%C3%A9.pdf',
associatedRule: "dirigeant = 'artiste-auteur'",
title: 'Guide Urssaf pour les artistes-auteurs',
},
{
url:
'https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Diaporama_TI_statuts_hors_AE.pdf',

View File

@ -2,11 +2,13 @@ situation:
dirigeant: "'artiste-auteur'"
unité par défaut: €/an
objectifs:
- artiste-auteur . revenus . traitements et salaires
- artiste-auteur . revenus . BNC . recettes
- artiste-auteur . revenus . BNC . frais réels
- artiste-auteur . cotisations
objectifs cachés:
- artiste-auteur . revenus
- artiste-auteur . cotisations . IRCEC
questions:
liste:
- artiste-auteur . revenus . BNC . micro-bnc
- artiste-auteur . cotisations . option surcotisation
- artiste-auteur . cotisations . IRCEC . cotisation RAAP . taux réduit
- artiste-auteur . cotisations . IRCEC . profession

View File

@ -39,12 +39,13 @@ export default function parseBarème(v, context): BarèmeNode {
}
}
function evaluateBarème(tranches, assiette, evaluate, cache) {
function evaluateBarème(tranches, assiette, evaluate) {
return tranches.map((tranche) => {
if (tranche.isAfterActive) {
return { ...tranche, nodeValue: 0 }
}
const taux = evaluate(tranche.taux)
const missingVariables = mergeAllMissing([taux, tranche])
if (
[
@ -58,7 +59,7 @@ function evaluateBarème(tranches, assiette, evaluate, cache) {
...tranche,
taux,
nodeValue: null,
missingVariables: mergeAllMissing([taux, tranche]),
missingVariables,
}
}
return {
@ -69,7 +70,7 @@ function evaluateBarème(tranches, assiette, evaluate, cache) {
(Math.min(assiette.nodeValue, tranche.plafondValue) -
tranche.plancherValue) *
convertUnit(taux.unit, parseUnit(''), taux.nodeValue as number),
missingVariables: mergeAllMissing([taux, tranche]),
missingVariables,
}
})
}
@ -88,8 +89,7 @@ const evaluate: EvaluationFunction<'barème'> = function (node) {
liftTemporalNode(multiplicateur as any)
)
const temporalTranches = liftTemporal2(
(tranches, assiette) =>
evaluateBarème(tranches, assiette, evaluate, this.cache),
(tranches, assiette) => evaluateBarème(tranches, assiette, evaluate),
temporalTranchesPlafond,
liftTemporalNode(assiette as any)
)