From a4de5730ffd0d57b4eebc2652763cf34b5bc8303 Mon Sep 17 00:00:00 2001 From: Alexandre Hajjar Date: Thu, 29 Apr 2021 23:12:12 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20Notice=20explicative=20r=C3=A9gu?= =?UTF-8?q?larisations=20ind=C3=A9pendants?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modele-social/règles/dirigeant.yaml | 39 ++++++-- .../source/components/EngineValue.tsx | 10 +- ... => IndépendantCotisationsForfaitaires.tsx} | 1 + .../IndépendantCotisationsRégularisation.tsx | 43 ++++++++ .../IndépendantExplanation.tsx | 18 +++- mon-entreprise/source/locales/rules-en.yaml | 98 ++++++++++++++----- 6 files changed, 168 insertions(+), 41 deletions(-) rename mon-entreprise/source/components/simulationExplanation/{IndépendantCotisationsForfaitaire.tsx => IndépendantCotisationsForfaitaires.tsx} (98%) create mode 100644 mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsRégularisation.tsx diff --git a/modele-social/règles/dirigeant.yaml b/modele-social/règles/dirigeant.yaml index 3b1ac4a29..5417b7667 100644 --- a/modele-social/règles/dirigeant.yaml +++ b/modele-social/règles/dirigeant.yaml @@ -914,18 +914,12 @@ dirigeant . indépendant . contrats madelin . retraite . plafond: Normalement c'est le résultat fiscal qui devrait être utilisé pour l'assiette du plafond, mais on utilise le revenu professionnel pour éviter un cycle. dirigeant . indépendant . cotisations et contributions . début activité: - titre: cotisations forfaitaires de début d'activité + titre: Cotisations forfaitaires de début d'activité description: | Lorsque vous commencez votre activité, vos **revenus professionnels n’étant pas connus**, les cotisations et contributions des deux premières années sont calculées sur une **base forfaitaire**. - - Cette base s’élève à **19 % du plafond annuel de la Sécurité sociale** au titre de - la première et de la deuxième année d’activité (à l’exception de la cotisation Maladie - et indemnités journalières pour lesquelles l’assiette forfaitaire est égale à 40% du - plafond annuel de la Sécurité sociale). - Ces cotisations seront ajustées et régularisées en fonction de vos revenus réels de l’année d’exercice. Si votre revenu est supérieur à la base forfaitaire prise en compte @@ -937,6 +931,11 @@ dirigeant . indépendant . cotisations et contributions . début activité: activité. Il vous permet donc de pouvoir anticiper le montant de cette régularisation et de **planifier votre trésorerie** en conséquence. + note: + La base forfaitaire s’élève à **19 % du plafond annuel de la Sécurité sociale** au titre de + la première et de la deuxième année d’activité (à l’exception de la cotisation Maladie + et indemnités journalières pour lesquelles l’assiette forfaitaire est égale à 40% du + plafond annuel de la Sécurité sociale). applicable si: entreprise . date de création >= 01/01/2020 unité: €/an recalcul: @@ -958,7 +957,31 @@ dirigeant . indépendant . cotisations et contributions . début activité . ass références: Fiche Urssaf: https://www.urssaf.fr/portail/home/independant/mes-cotisations/les-etapes-de-calcul/le-mode-de-calcul/les-cotisations-provisionnelles/debut-dactivite.html - +dirigeant . indépendant . cotisations et contributions . régularisation: + titre: Comment fonctionne la régularisation des cotisations provisionnelles + description: | + Les cotisations et contributions sont calculées à titre provisionnel + sur la base du dernier revenu déclaré + (ou du montat forfaitaire, si aucun revenu n'est encore déclaré). + Une fois l'année écoulée et le revenu professionnel connu, + les cotisations et contributions sont régularisées. + + + Ce simulateur calcule les cotisations **après régularisation**. + Il vous permet donc d'anticiper le montant de cette régularisation et de planifier votre + trésorerie en conséquence. + + + Si vos revenus d'activité changent beaucoup par rapport à l'année précédente, + vous avez la possibilité de communiquer à l'URSSAF un + **montant prévisionnel pour l'année en cours, qui sera pris comme base de calcul** + (attention cependant, vous serez tenus de faire une estimation précise). + + valeur: oui + références: + Fiche Urssaf: https://www.urssaf.fr/portail/cms/render/live/fr/sites/urssaf/home/independant/mes-cotisations/les-etapes-de-calcul/le-mode-de-calcul/les-cotisations-provisionnelles/demande-de-modulation.html + Article L131-6-2 du Code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000037062224/ + Article D131-3 du Code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/id/LEGIARTI000038786941/2021-03-01/?isSuggest=true dirigeant . indépendant . cotisations et contributions . indemnités journalières maladie: synonyme: maladie 2 diff --git a/mon-entreprise/source/components/EngineValue.tsx b/mon-entreprise/source/components/EngineValue.tsx index 6fd6223a6..f0cd69785 100644 --- a/mon-entreprise/source/components/EngineValue.tsx +++ b/mon-entreprise/source/components/EngineValue.tsx @@ -1,10 +1,10 @@ import Engine, { formatValue } from 'publicodes' -import React, { useContext } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import { DottedName } from 'modele-social' import { coerceArray } from '../utils' import RuleLink from './RuleLink' -import { EngineContext, useEngine } from './utils/EngineContext' +import { useEngine } from './utils/EngineContext' export type ValueProps = { expression: string @@ -50,11 +50,13 @@ export default function Value({ } type ConditionProps = { - expression: string | string[] + expression: + | Parameters[0] + | Parameters[0][] children: React.ReactNode } export function Condition({ expression, children }: ConditionProps) { - const engine = useContext(EngineContext) + const engine = useEngine() if ( !coerceArray(expression).every((expr) => engine.evaluate(expr).nodeValue) ) { diff --git a/mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsForfaitaire.tsx b/mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsForfaitaires.tsx similarity index 98% rename from mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsForfaitaire.tsx rename to mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsForfaitaires.tsx index 93839af6a..1b1e19d49 100644 --- a/mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsForfaitaire.tsx +++ b/mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsForfaitaires.tsx @@ -34,6 +34,7 @@ export default function CotisationsForfaitaires() { Voir la fiche Urssaf diff --git a/mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsRégularisation.tsx b/mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsRégularisation.tsx new file mode 100644 index 000000000..9c91ad1a9 --- /dev/null +++ b/mon-entreprise/source/components/simulationExplanation/IndépendantCotisationsRégularisation.tsx @@ -0,0 +1,43 @@ +import * as Animate from 'Components/ui/animate' +import Emoji from 'Components/utils/Emoji' +import { useEngine } from 'Components/utils/EngineContext' +import { Markdown } from 'Components/utils/markdown' +import { Trans } from 'react-i18next' + +export default function CotisationsRégularisation() { + const rule = useEngine().getRule( + 'dirigeant . indépendant . cotisations et contributions . régularisation' + ) + return ( + +
+

{rule.title}

+
+ +
+ + {rule.rawNode.références && ( +

+ + Voir la fiche Urssaf + +

+ )} +
+
+ ) +} diff --git a/mon-entreprise/source/components/simulationExplanation/IndépendantExplanation.tsx b/mon-entreprise/source/components/simulationExplanation/IndépendantExplanation.tsx index 9761439a4..f6aef3cb8 100644 --- a/mon-entreprise/source/components/simulationExplanation/IndépendantExplanation.tsx +++ b/mon-entreprise/source/components/simulationExplanation/IndépendantExplanation.tsx @@ -4,14 +4,15 @@ import Value, { Condition } from 'Components/EngineValue' import RuleLink from 'Components/RuleLink' import StackedBarChart from 'Components/StackedBarChart' import { ThemeColorsContext } from 'Components/utils/colors' -import { EngineContext } from 'Components/utils/EngineContext' +import { useEngine } from 'Components/utils/EngineContext' import { DottedName } from 'modele-social' import { max } from 'ramda' import { useContext } from 'react' import { Trans, useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import { targetUnitSelector } from 'Selectors/simulationSelectors' -import CotisationsForfaitaires from './IndépendantCotisationsForfaitaire' +import CotisationsForfaitaires from './IndépendantCotisationsForfaitaires' +import CotisationsRégularisation from './IndépendantCotisationsRégularisation' import PLExplanation from './PLExplanation' import { DistributionSection } from './SalaryExplanation' @@ -24,6 +25,15 @@ export default function IndépendantExplanation() { + + + @@ -125,7 +135,7 @@ const CotisationsSection: Partial>> = { function Distribution() { const targetUnit = useSelector(targetUnitSelector) - const engine = useContext(EngineContext) + const engine = useEngine() const distribution = (Object.entries( CotisationsSection ).map(([section, cotisations]) => [ @@ -172,7 +182,7 @@ function DistributionBranch({ icon, maximum, }: DistributionBranchProps) { - const branche = useContext(EngineContext).getRule(dottedName) + const branche = useEngine().getRule(dottedName) return ( @@ -6434,6 +6423,65 @@ dirigeant . indépendant . cotisations et contributions . non déductibles: dirigeant . indépendant . cotisations et contributions . retraite de base: titre.en: '[automatic] basic retirement' titre.fr: retraite de base +dirigeant . indépendant . cotisations et contributions . régularisation: + description.en: > + [automatic] Contributions are calculated provisionally + + on the basis of the last declared income + + (or the lump sum, if no income has yet been declared). + + Once the year is over and the professional income is known + + the contributions are adjusted. + + + + This simulator calculates the contributions **after adjustment**. + + It therefore enables you to anticipate the amount of this regularisation and to plan your cash flow + + your cash flow accordingly. + + + + If your activity income changes significantly compared to the previous year + + you have the possibility to communicate to URSSAF a + + forecast amount for the current year, which will be taken as the basis for the calculation** (be careful, however, you will be required to make an accurate estimate). + + (be careful, however, you will be required to make an accurate estimate). + description.fr: > + Les cotisations et contributions sont calculées à titre provisionnel + + sur la base du dernier revenu déclaré + + (ou du montat forfaitaire, si aucun revenu n'est encore déclaré). + + Une fois l'année écoulée et le revenu professionnel connu, + + les cotisations et contributions sont régularisées. + + + + Ce simulateur calcule les cotisations **après régularisation**. + + Il vous permet donc d'anticiper le montant de cette régularisation et de planifier votre + + trésorerie en conséquence. + + + + Si vos revenus d'activité changent beaucoup par rapport à l'année précédente, + + vous avez la possibilité de communiquer à l'URSSAF un + + **montant prévisionnel pour l'année en cours, qui sera pris comme base de calcul** + + (attention cependant, vous serez tenus de faire une estimation précise). + titre.en: '[automatic] How the adjustment of provisional contributions works' + titre.fr: Comment fonctionne la régularisation des cotisations provisionnelles dirigeant . indépendant . revenu professionnel: description.en: "[automatic] remuneration of the manager under the self-employed