From 039cb5a2727545824216bfb525f6db4aff09af6b Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:41:55 +0200 Subject: [PATCH 01/15] refactor: Nouveau composant SimulationValue --- .../components/Simulation/SimulationValue.tsx | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 site/source/components/Simulation/SimulationValue.tsx diff --git a/site/source/components/Simulation/SimulationValue.tsx b/site/source/components/Simulation/SimulationValue.tsx new file mode 100644 index 0000000000..982d29221d --- /dev/null +++ b/site/source/components/Simulation/SimulationValue.tsx @@ -0,0 +1,128 @@ +import { DottedName } from 'modele-social' +import { formatValue } from 'publicodes' +import React from 'react' +import { useSelector } from 'react-redux' +import { styled } from 'styled-components' + +import { Grid } from '@/design-system/layout' +import { Body } from '@/design-system/typography/paragraphs' +import { targetUnitSelector } from '@/store/selectors/simulationSelectors' + +import RuleLink from '../RuleLink' +import { Appear } from '../ui/animate' +import AnimatedTargetValue from '../ui/AnimatedTargetValue' +import { useEngine } from '../utils/EngineContext' +import { useInitialRender } from '../utils/useInitialRender' + +type SimulationValueProps = { + dottedName: DottedName + label?: React.ReactNode + appear?: boolean + isTypeBoolean?: boolean + isInfoMode?: boolean + displayedUnit?: string + round?: boolean +} + +export function SimulationValue({ + dottedName, + label, + displayedUnit = '€', + round = true, + appear = true, + isTypeBoolean = false, // TODO : remove when type inference works in publicodes + isInfoMode = false, +}: SimulationValueProps) { + const engine = useEngine() + const currentUnit = useSelector(targetUnitSelector) + const evaluation = engine.evaluate({ + valeur: dottedName, + arrondi: round ? 'oui' : 'non', + ...(!isTypeBoolean ? { unité: currentUnit } : {}), + }) + const initialRender = useInitialRender() + if (evaluation.nodeValue === null) { + return null + } + if (evaluation.nodeValue === undefined) { + return null + } + const rule = engine.getRule(dottedName) + const elementIdPrefix = dottedName.replace(/\s|\./g, '_') + + return ( + + + + + {isInfoMode ? ( + + {label || rule.title} + + ) : ( + + {label || rule.title} + + )} + + + + + + + + + + {formatValue(evaluation, { + displayedUnit, + precision: round ? 0 : 2, + })} + + + + + + ) +} + +const StyledGuideLectureContainer = styled(Grid)` + display: none; + + @media (min-width: ${({ theme }) => theme.breakpointsWidth.md}) { + display: block; + } +` + +const StyledGuideLecture = styled.div.attrs({ 'aria-hidden': true })` + border-bottom: 1px dashed + ${({ theme }) => + theme.darkMode + ? theme.colors.extended.grey[100] + : theme.colors.extended.grey[700]}; + align-self: baseline; + opacity: 50%; + flex: 1; +` + +const StyledValue = styled.div` + position: relative; + z-index: 1; + padding: ${({ theme }) => theme.spacings.xxs} 0; + + @media print { + padding: 0; + } +` + +const StyledBody = styled(Body)` + color: ${({ theme }) => theme.colors.extended.grey[100]}; + margin: 0; + padding: ${({ theme }) => `${theme.spacings.xs} ${theme.spacings.sm} 0 0`}; +` From c46ff937decbe827db395162fac22b271146b893 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:43:20 +0200 Subject: [PATCH 02/15] =?UTF-8?q?fix:=20Affiche=20le=20titre=20de=20la=20r?= =?UTF-8?q?=C3=A8gle=20si=20aucun=20label=20n'est=20fourni=20dans=20Simula?= =?UTF-8?q?tionGoal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/source/components/Simulation/SimulationGoal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/source/components/Simulation/SimulationGoal.tsx b/site/source/components/Simulation/SimulationGoal.tsx index 49673179d5..3b123d9c6c 100644 --- a/site/source/components/Simulation/SimulationGoal.tsx +++ b/site/source/components/Simulation/SimulationGoal.tsx @@ -116,7 +116,7 @@ export function SimulationGoal({ id={`${dottedName.replace(/\s|\./g, '_')}-label`} dottedName={dottedName} > - {label} + {label || rule.title} )} From 29c9b38c0611d75671ae9c13115a531f44517fc3 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:44:30 +0200 Subject: [PATCH 03/15] =?UTF-8?q?refactor:=20ajoute=20un=20id=20=C3=A0=20l?= =?UTF-8?q?a=20valeur=20affich=C3=A9e=20par=20SimulationGoal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/source/components/Simulation/SimulationGoal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/source/components/Simulation/SimulationGoal.tsx b/site/source/components/Simulation/SimulationGoal.tsx index 3b123d9c6c..071924688e 100644 --- a/site/source/components/Simulation/SimulationGoal.tsx +++ b/site/source/components/Simulation/SimulationGoal.tsx @@ -167,7 +167,7 @@ export function SimulationGoal({ ) : ( - + {formatValue(evaluation, { displayedUnit, precision: round ? 0 : 2, From 7186bd12079913366f051688d623ca2cb3b5dce9 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:45:31 +0200 Subject: [PATCH 04/15] =?UTF-8?q?docs:=20ajoute=20de=20la=20documentation?= =?UTF-8?q?=20sur=20la=20r=C3=A9duction=20g=C3=A9n=C3=A9rale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../r\303\250gles/salari\303\251/cotisations.publicodes" | 3 +++ 1 file changed, 3 insertions(+) diff --git "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" index d346cf2a94..458828ab72 100644 --- "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" +++ "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" @@ -319,6 +319,7 @@ salarié . cotisations . exonérations . réduction générale: Fiche Urssaf: https://www.urssaf.fr/accueil/employeur/beneficier-exonerations/reduction-generale-cotisation.html Simulateur: https://www.declaration.urssaf.fr/calcul/ Cumuls: https://www.legisocial.fr/actualites-sociales/2068-comment-declarer-les-cotisations-dallocations-familiales-si-lentreprise-beneficie-du-regime-jei.html + Bulletin Officiel de la Sécurité Sociale: https://boss.gouv.fr/portail/accueil/exonerations/allegements-generaux.html#titre-chapitre-1--la-reduction-general produit: - cotisations . assiette - coefficient @@ -336,6 +337,8 @@ salarié . cotisations . exonérations . réduction générale: arrondi: 4 décimales références: Code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000048852497 + Urssaf.fr: https://www.urssaf.fr/accueil/employeur/beneficier-exonerations/reduction-generale-cotisation.html#ancre-les-trois-etapes-de-calcul + Bulletin Officiel de la Sécurité Sociale: https://boss.gouv.fr/portail/accueil/exonerations/allegements-generaux.html#titre-chapitre-1--la-reduction-general-section-2---determination-du-mon-ii-calcul-du-montant-de-la-reduc-a-formule-de-calcul-de-la-reduct imputation retraite complémentaire: privé: oui From dd64a8e4cbd8f5c512650fcd572d3f77f46fb6be Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:46:30 +0200 Subject: [PATCH 05/15] fix: corrige une faute de frappe dans le README des tests Cypress --- site/cypress/integration/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/cypress/integration/README.md b/site/cypress/integration/README.md index 86605790a3..b27a589b5a 100644 --- a/site/cypress/integration/README.md +++ b/site/cypress/integration/README.md @@ -3,4 +3,4 @@ Les jeux de tests qu'on souhaite faire tourner avec le langage FR et EN doivent aller dans le sous-dossier `mon-entreprise/english`. -Les autres jeux ne seront testés qu'avent le langage FR. +Les autres jeux ne seront testés qu'avec le langage FR. From 5d34c6ba37d35519d2f91c8da603cfe42dcf79e3 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:47:02 +0200 Subject: [PATCH 06/15] =?UTF-8?q?fix:=20corrige=20l'arrondi=20du=20coeffic?= =?UTF-8?q?ient=20de=20la=20r=C3=A9duction=20g=C3=A9n=C3=A9rale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../r\303\250gles/salari\303\251/cotisations.publicodes" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" index 458828ab72..16061b1774 100644 --- "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" +++ "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" @@ -328,13 +328,13 @@ salarié . cotisations . exonérations . réduction générale: avec: coefficient: - privé: oui produit: - temps de travail . SMIC / cotisations . assiette * 1.6 - 1 - T / 0.6 plancher: 0% plafond: T - arrondi: 4 décimales + unité: '%' + arrondi: 2 décimales références: Code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000048852497 Urssaf.fr: https://www.urssaf.fr/accueil/employeur/beneficier-exonerations/reduction-generale-cotisation.html#ancre-les-trois-etapes-de-calcul From c9c60736c39174de12006d9be0b37d60980fa861 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:50:04 +0200 Subject: [PATCH 07/15] =?UTF-8?q?refactor:=20r=C3=A9=C3=A9crit=20la=20form?= =?UTF-8?q?ule=20du=20coefficient=20de=20r=C3=A9duction=20g=C3=A9n=C3=A9ra?= =?UTF-8?q?le=20comme=20document=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../r\303\250gles/salari\303\251/cotisations.publicodes" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" index 16061b1774..77220d35c2 100644 --- "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" +++ "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" @@ -329,7 +329,7 @@ salarié . cotisations . exonérations . réduction générale: avec: coefficient: produit: - - temps de travail . SMIC / cotisations . assiette * 1.6 - 1 + - 1.6 * temps de travail . SMIC / cotisations . assiette - 1 - T / 0.6 plancher: 0% plafond: T From 3338a3a72849d7cefb216132bd1905892ffc5125 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:50:28 +0200 Subject: [PATCH 08/15] =?UTF-8?q?feat:=20ajoute=20la=20r=C3=A9partition=20?= =?UTF-8?q?de=20la=20r=C3=A9duction=20g=C3=A9n=C3=A9rale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salari\303\251/cotisations.publicodes" | 17 +++++++++++++++++ site/source/locales/rules-en.yaml | 10 ++++++++++ 2 files changed, 27 insertions(+) diff --git "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" index 77220d35c2..1544abfcdf 100644 --- "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" +++ "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" @@ -360,6 +360,23 @@ salarié . cotisations . exonérations . réduction générale: régimes spécifiques . DFS: non - 130% + part Urssaf: + produit: + - réduction générale + - T . sécurité sociale et chômage + - 1 / T + + avec: + part chômage: + produit: + - réduction générale + - chômage . employeur . taux + - 1 / T + + part retraite: + valeur: réduction générale + abattement: part Urssaf + salarié . cotisations . exonérations . T: privé: oui titre: Coefficient T diff --git a/site/source/locales/rules-en.yaml b/site/source/locales/rules-en.yaml index 5079dd8d6a..921eb46641 100644 --- a/site/source/locales/rules-en.yaml +++ b/site/source/locales/rules-en.yaml @@ -9464,6 +9464,16 @@ salarié . cotisations . exonérations . réduction générale: imputation sécurité sociale: titre.en: '[automatic] social security charge' titre.fr: imputation sécurité sociale + part Urssaf: + avec: + part chômage: + titre.en: '[automatic] unemployment share' + titre.fr: part chômage + titre.en: '[automatic] Urssaf share' + titre.fr: part Urssaf + part retraite: + titre.en: '[automatic] pension portion' + titre.fr: part retraite plafond avec application de la DFS: titre.en: '[automatic] ceiling with application of the DFS' titre.fr: plafond avec application de la DFS From e5328856a7c7079a2c3e5ae45b792866fec1d900 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 3 Sep 2024 10:51:35 +0200 Subject: [PATCH 09/15] =?UTF-8?q?feat(simulateurs):=20Nouveau=20simulateur?= =?UTF-8?q?=20r=C3=A9duction=20g=C3=A9n=C3=A9rale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salari\303\251/cotisations.publicodes" | 2 +- site/build/prerender.ts | 1 + .../mon-entreprise/reduction-generale.ts | 89 +++++++++ site/source/components/SimulateurWarning.tsx | 1 - site/source/locales/ui-en.yaml | 16 ++ site/source/locales/ui-fr.yaml | 17 ++ .../simulateurs-et-assistants/metadata-src.ts | 2 + ...\303\251ductionG\303\251n\303\251rale.tsx" | 118 ++++++++++++ .../components/EffectifSwitch.tsx | 40 ++++ .../simulateurs/reduction-generale/config.ts | 39 ++++ .../reduction-generale/simulationConfig.ts | 46 +++++ site/source/sitePaths.ts | 2 + ...ction-g\303\251n\303\251rale.test.ts.snap" | 177 ++++++++++++++++++ ...251duction-g\303\251n\303\251rale.test.ts" | 20 ++ ...03\251duction-g\303\251n\303\251rale.yaml" | 51 +++++ 15 files changed, 619 insertions(+), 2 deletions(-) create mode 100755 site/cypress/integration/mon-entreprise/reduction-generale.ts create mode 100644 "site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" create mode 100644 site/source/pages/simulateurs/reduction-generale/components/EffectifSwitch.tsx create mode 100644 site/source/pages/simulateurs/reduction-generale/config.ts create mode 100644 site/source/pages/simulateurs/reduction-generale/simulationConfig.ts create mode 100644 "site/test/regressions/__snapshots__/r\303\251duction-g\303\251n\303\251rale.test.ts.snap" create mode 100644 "site/test/regressions/r\303\251duction-g\303\251n\303\251rale.test.ts" create mode 100644 "site/test/regressions/r\303\251duction-g\303\251n\303\251rale.yaml" diff --git "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" index 1544abfcdf..90d35ebec0 100644 --- "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" +++ "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" @@ -315,9 +315,9 @@ salarié . cotisations . exonérations . réduction générale: description: | Dans le cadre du pacte de responsabilité et de solidarité, le dispositif zéro cotisation Urssaf permet à l'employeur d'un salarié au Smic de ne plus payer aucune cotisation. Le montant de l'allègement est égal au produit de la rémunération annuelle brute par un coefficient. Il n'y a pas de formalité particulière à effectuer. références: + Simulateur actuel: https://www.declaration.urssaf.fr/calcul/ Fiche service-public.fr: https://entreprendre.service-public.fr/vosdroits/F24542 Fiche Urssaf: https://www.urssaf.fr/accueil/employeur/beneficier-exonerations/reduction-generale-cotisation.html - Simulateur: https://www.declaration.urssaf.fr/calcul/ Cumuls: https://www.legisocial.fr/actualites-sociales/2068-comment-declarer-les-cotisations-dallocations-familiales-si-lentreprise-beneficie-du-regime-jei.html Bulletin Officiel de la Sécurité Sociale: https://boss.gouv.fr/portail/accueil/exonerations/allegements-generaux.html#titre-chapitre-1--la-reduction-general produit: diff --git a/site/build/prerender.ts b/site/build/prerender.ts index c3b5e89d12..077f10cf3c 100644 --- a/site/build/prerender.ts +++ b/site/build/prerender.ts @@ -51,6 +51,7 @@ export const pagesToPrerender: { sitePathFr.simulateurs['profession-libérale'].avocat, sitePathFr.simulateurs['profession-libérale']['chirurgien-dentiste'], sitePathFr.simulateurs['profession-libérale'].index, + sitePathFr.simulateurs['réduction-générale'], ].map((val) => encodeURI(val)), infrance: [ sitePathEn.index, diff --git a/site/cypress/integration/mon-entreprise/reduction-generale.ts b/site/cypress/integration/mon-entreprise/reduction-generale.ts new file mode 100755 index 0000000000..801207394d --- /dev/null +++ b/site/cypress/integration/mon-entreprise/reduction-generale.ts @@ -0,0 +1,89 @@ +import { checkA11Y, fr } from '../../support/utils' + +describe('Réduction générale', { testIsolation: false }, function () { + if (!fr) { + return + } + + const inputSelector = 'div[id="simulator-legend"] input[inputmode="numeric"]' + + before(function () { + return cy.visit('/simulateurs/réduction-générale') + }) + + it('should not crash', function () { + cy.contains('Salaire brut') + }) + + it('should allow to select a company size', function () { + cy.get(inputSelector).first().type('{selectall}2000') + + cy.contains('Plus de 50 salariés').click() + cy.contains('Modifier mes réponses').click() + cy.get('div[data-cy="modal"]') + .eq(0) + .contains('Effectif') + .next() + .contains('100') + cy.get('div[data-cy="modal"]').eq(0).contains('Fermer').click() + + cy.contains('Moins de 50 salariés').click() + cy.contains('Modifier mes réponses').click() + cy.get('div[data-cy="modal"]') + .eq(0) + .contains('Effectif') + .next() + .contains('10') + cy.get('div[data-cy="modal"]').eq(0).contains('Fermer').click() + }) + + it('should allow to change time period', function () { + cy.contains('Montant mensuel').click() + cy.get(inputSelector).first().type('{selectall}2000') + + cy.contains('Montant annuel').click() + cy.get(inputSelector).first().should('have.value', '24 000 €') + }) + + it('should display values for the réduction générale', function () { + cy.contains('Montant mensuel').click() + cy.get(inputSelector).first().type('{selectall}1900') + + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale-value"]' + ).should('include.text', '493,43 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_retraite-value"]' + ).should('include.text', '92,85 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf-value"]' + ).should('include.text', '400,58 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf___part_chômage-value"]' + ).should('include.text', '62,57 €') + }) + + it('should display a warning for a salary too high', function () { + cy.contains('Montant mensuel').click() + cy.get(inputSelector).first().type('{selectall}3000') + + cy.get('div[id="simulator-legend"]').should( + 'include.text', + 'La RGCP concerne uniquement les salaires inférieurs à 1,6 SMIC.' + ) + + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_retraite-value"]' + ).should('include.text', '0 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf-value"]' + ).should('include.text', '0 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf___part_chômage-value"]' + ).should('include.text', '0 €') + }) + + it('should be RGAA compliant', function () { + checkA11Y() + }) +}) diff --git a/site/source/components/SimulateurWarning.tsx b/site/source/components/SimulateurWarning.tsx index be707a65fb..e46d329b8a 100644 --- a/site/source/components/SimulateurWarning.tsx +++ b/site/source/components/SimulateurWarning.tsx @@ -67,7 +67,6 @@ export default function SimulateurWarning({ )} - {simulateur === 'profession-libérale' && (
    diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml index b7d96a120a..863462ef55 100644 --- a/site/source/locales/ui-en.yaml +++ b/site/source/locales/ui-en.yaml @@ -94,6 +94,7 @@ Décrivez votre projet ou votre problème en donnant quelques éléments de cont He or she will contact you by telephone within 5 days, and will provide you with assistance tailored to your situation. Décès: Deaths Effacer mes réponses: Delete my answers +Effectif de l'entreprise: Number of employees "En cas d’<1>accident de travail, de <4>maladie professionnelle ou d’un <7>accident sur le trajet domicile-travail, vous serez indemnisé(e) à hauteur de :": "In the event of an<1>accident at work, <4>occupational illness or an <7>accident on the way to or from work, you will receive compensation of:" @@ -152,6 +153,9 @@ Je donne mon avis, donner mon avis sur jedonnemonavis: fr, nouvelle fenêtre: I give my opinion, give my opinion on jedonnemonavis.numerique.gouv.fr, new window Jours: Days +La RGCP concerne uniquement les salaires inférieurs à 1,6 SMIC. C'est-à-dire, pour 2024, une rémunération totale qui ne dépasse pas <1>2 827,07 € bruts par mois.: + The RGCP only applies to salaries below 1.6 SMIC. This means, for 2024, a + total remuneration not exceeding <1>€2,827.07 gross per month. La Sécurité Sociale garantit un <2>capital décès pour vos ayants droits (personnes qui sont à votre charge) sous certaines conditions.: Under certain conditions, Social Security guarantees a <2>lump-sum death benefit for your dependants. @@ -183,6 +187,7 @@ Message à caractère informatif: Informative message Mode d'affichage: Display mode Modifier mes options: Modify my options Modifier mes réponses: Modify my answers +Moins de 50 salariés: Less than 50 employees Mois: Month Mon entreprise: My company Mon entreprise recrute ! Voir les offres d'emplois de mon-entreprise: @@ -217,6 +222,7 @@ Personnalisez l'intégration: Customize integration Plan du site: Site map Plus d'info sur, {{ title }}: More info on, {{ title }} Plus d'infos sur, {{ title }}: More info on, {{ title }} +Plus de 50 salariés: More than 50 employees Pour en savoir plus, rendez-vous sur le site <2>aquoiserventlescotisations: urssaf: fr: To find out more, visit <2>aquoiserventlescotisations.urssaf.fr @@ -267,6 +273,7 @@ Règles de calculs: Calculation rules Régime d'imposition: Taxation system Réinitialiser: Reset Réinitialiser la situation enregistrée: Reset registered situation +Rémunération brute: Gross remuneration Répartition du chiffre d'affaires: Sales breakdown Répondez à quelques questions additionnelles afin de préciser votre résultat.: Answer a few additional questions to clarify your result. Résultat fiscal: Taxable income @@ -583,6 +590,7 @@ dividendes: French companies subject to corporation tax (IS), and does not concern self-employed workers.<1>Tax on dividends is calculated in addition to tax on other taxable income. +dont chômage: of which unemployment employeur: employer en cas d'accident pro: in the event of a professional accident en incluant: including @@ -1460,6 +1468,14 @@ pages: title: "Liberal professions: the Urssaf simulator" shortname: Liberal profession title: Income simulator for self-employed professionals + réduction-générale: + meta: + description: Estimate of the amount of the general reduction in employer + contributions (RGCP). This reduction applies to salaries below 1.6 + times the SMIC. + title: General reduction + shortname: General reduction + title: General contribution reduction simulator sage-femme: meta: description: Calculation of net income after contributions based on total income. diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml index dd7e12dccd..493de3ec2b 100644 --- a/site/source/locales/ui-fr.yaml +++ b/site/source/locales/ui-fr.yaml @@ -100,6 +100,7 @@ Décrivez votre projet ou votre problème en donnant quelques éléments de cont Celui-ci vous contactera par téléphone sous 5 jours et vous accompagnera en fonction de votre situation. Décès: Décès Effacer mes réponses: Effacer mes réponses +Effectif de l'entreprise: Effectif de l'entreprise "En cas d’<1>accident de travail, de <4>maladie professionnelle ou d’un <7>accident sur le trajet domicile-travail, vous serez indemnisé(e) à hauteur de :": "En cas d’<1>accident de travail, de <4>maladie professionnelle ou d’un <7>accident sur le trajet domicile-travail, vous serez indemnisé(e) à @@ -161,6 +162,10 @@ Je donne mon avis, donner mon avis sur jedonnemonavis: fr, nouvelle fenêtre: Je donne mon avis, donner mon avis sur jedonnemonavis.numerique.gouv.fr, nouvelle fenêtre Jours: Jours +La RGCP concerne uniquement les salaires inférieurs à 1,6 SMIC. C'est-à-dire, pour 2024, une rémunération totale qui ne dépasse pas <1>2 827,07 € bruts par mois.: + La RGCP concerne uniquement les salaires inférieurs à 1,6 SMIC. C'est-à-dire, + pour 2024, une rémunération totale qui ne dépasse pas <1>2 827,07 € bruts + par mois. La Sécurité Sociale garantit un <2>capital décès pour vos ayants droits (personnes qui sont à votre charge) sous certaines conditions.: La Sécurité Sociale garantit un <2>capital décès pour vos ayants droits (personnes qui sont à votre charge) sous certaines conditions. @@ -194,6 +199,7 @@ Message à caractère informatif: Message à caractère informatif Mode d'affichage: Mode d'affichage Modifier mes options: Modifier mes options Modifier mes réponses: Modifier mes réponses +Moins de 50 salariés: Moins de 50 salariés Mois: Mois Mon entreprise: Mon entreprise Mon entreprise recrute ! Voir les offres d'emplois de mon-entreprise: @@ -229,6 +235,7 @@ Personnalisez l'intégration: Personnalisez l'intégration Plan du site: Plan du site Plus d'info sur, {{ title }}: Plus d'info sur, {{ title }} Plus d'infos sur, {{ title }}: Plus d'infos sur, {{ title }} +Plus de 50 salariés: Plus de 50 salariés Pour en savoir plus, rendez-vous sur le site <2>aquoiserventlescotisations: urssaf: fr: Pour en savoir plus, rendez-vous sur le site @@ -282,6 +289,7 @@ Règles de calculs: Règles de calculs Régime d'imposition: Régime d'imposition Réinitialiser: Réinitialiser Réinitialiser la situation enregistrée: Réinitialiser la situation enregistrée +Rémunération brute: Rémunération brute Répartition du chiffre d'affaires: Répartition du chiffre d'affaires Répondez à quelques questions additionnelles afin de préciser votre résultat.: Répondez à quelques questions additionnelles afin de préciser votre résultat. Résultat fiscal: Résultat fiscal @@ -614,6 +622,7 @@ dividendes: concerne pas les travailleurs indépendants non salariés.<1>Le montant de l'impôt sur les dividendes est calculé en sus de l’impôt sur les autres revenus imposables. +dont chômage: dont chômage employeur: employeur en cas d'accident pro: en cas d'accident pro en incluant: en incluant @@ -1555,6 +1564,14 @@ pages: title: "Professions libérale : le simulateur Urssaf" shortname: Profession libérale title: Simulateur de revenus pour profession libérale + réduction-générale: + meta: + description: Estimation du montant de la réduction générale des cotisations + patronales (RGCP). Cette réduction est applicable pour les salaires + inférieurs à 1,6 fois le SMIC. + title: Réduction générale + shortname: Réduction générale + title: Simulateur de réduction générale des cotisations sage-femme: meta: description: Calcul du revenu net après cotisations à partir du total des recettes. diff --git a/site/source/pages/simulateurs-et-assistants/metadata-src.ts b/site/source/pages/simulateurs-et-assistants/metadata-src.ts index 2f11ccf739..6be4040f74 100644 --- a/site/source/pages/simulateurs-et-assistants/metadata-src.ts +++ b/site/source/pages/simulateurs-et-assistants/metadata-src.ts @@ -26,6 +26,7 @@ import { médecinConfig } from '../simulateurs/médecin/config' import { pamcConfig } from '../simulateurs/pamc/config' import { pharmacienConfig } from '../simulateurs/pharmacien/config' import { professionLibéraleConfig } from '../simulateurs/profession-libérale/config' +import { réductionGénéraleConfig } from '../simulateurs/reduction-generale/config' import { sageFemmeConfig } from '../simulateurs/sage-femme/config' import { salariéConfig } from '../simulateurs/salarié/config' import { sasuConfig } from '../simulateurs/sasu/config' @@ -61,6 +62,7 @@ const getMetadataSrc = (params: SimulatorsDataParams) => { ...coûtCréationEntrepriseConfig(params), ...impôtSociétéConfig(params), ...cipavConfig(params), + ...réductionGénéraleConfig(params), // assistants: ...choixStatutJuridiqueConfig(params), diff --git "a/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" "b/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" new file mode 100644 index 0000000000..6364e98971 --- /dev/null +++ "b/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" @@ -0,0 +1,118 @@ +import { Trans, useTranslation } from 'react-i18next' +import { styled } from 'styled-components' + +import { Condition } from '@/components/EngineValue/Condition' +import PeriodSwitch from '@/components/PeriodSwitch' +import { SelectSimulationYear } from '@/components/SelectSimulationYear' +import SimulateurWarning from '@/components/SimulateurWarning' +import Simulation, { + SimulationGoal, + SimulationGoals, +} from '@/components/Simulation' +import { SimulationValue } from '@/components/Simulation/SimulationValue' +import { Message } from '@/design-system' +import { Spacing } from '@/design-system/layout' +import { Li, Ul } from '@/design-system/typography/list' +import { Body } from '@/design-system/typography/paragraphs' + +import EffectifSwitch from './components/EffectifSwitch' + +export default function RéductionGénéraleSimulation() { + return ( + <> + }> + + + + + + } + /> + + + ) +} + +const StyledUl = styled(Ul)` + margin-top: 0; +` +const StyledLi = styled(Li)` + &::before { + margin-top: ${({ theme }) => theme.spacings.sm}; + } +` +function RéductionGénéraleSimulationGoals({ + toggles = ( + <> + + + + ), + legend, +}: { + toggles?: React.ReactNode + legend: string +}) { + const { t } = useTranslation() + + return ( + + {/* TODO: remplacer "salarié . cotisations . assiette" par "salarié . rémunération . brut" + lorsqu'elle n'incluera plus les frais professionnels. */} + + + + + + + La RGCP concerne uniquement les salaires inférieurs à 1,6 SMIC. + C'est-à-dire, pour 2024, une rémunération totale qui ne dépasse + pas 2 827,07 € bruts par mois. + + + + + + + + + + + + + + + + + + + + ) +} diff --git a/site/source/pages/simulateurs/reduction-generale/components/EffectifSwitch.tsx b/site/source/pages/simulateurs/reduction-generale/components/EffectifSwitch.tsx new file mode 100644 index 0000000000..eac1e6574b --- /dev/null +++ b/site/source/pages/simulateurs/reduction-generale/components/EffectifSwitch.tsx @@ -0,0 +1,40 @@ +import { DottedName } from 'modele-social' +import { useEffect, useState } from 'react' +import { Trans, useTranslation } from 'react-i18next' +import { useDispatch } from 'react-redux' + +import { useEngine } from '@/components/utils/EngineContext' +import { Radio, ToggleGroup } from '@/design-system' +import { enregistreLaRéponse } from '@/store/actions/actions' + +export default function EffectifSwitch() { + const dispatch = useDispatch() + const engine = useEngine() + const dottedName = 'entreprise . salariés . effectif' as DottedName + const engineEffectif = engine.evaluate(dottedName).nodeValue as string + const [currentEffectif, setCurrentEffectif] = useState(engineEffectif) + const { t } = useTranslation() + + useEffect(() => { + const effectif = parseInt(engineEffectif) > 49 ? '100' : '10' + setCurrentEffectif(effectif) + }, [currentEffectif, engineEffectif]) + + return ( + { + setCurrentEffectif(value) + dispatch(enregistreLaRéponse(dottedName, `'${value}'`)) + }} + aria-label={t("Effectif de l'entreprise")} + > + + Moins de 50 salariés + + + Plus de 50 salariés + + + ) +} diff --git a/site/source/pages/simulateurs/reduction-generale/config.ts b/site/source/pages/simulateurs/reduction-generale/config.ts new file mode 100644 index 0000000000..32273bccc7 --- /dev/null +++ b/site/source/pages/simulateurs/reduction-generale/config.ts @@ -0,0 +1,39 @@ +import { config } from '../_configs/config' +import { SimulatorsDataParams } from '../_configs/types' +import RéductionGénéraleSimulation from './RéductionGénérale' +import { configRéductionGénérale } from './simulationConfig' + +export function réductionGénéraleConfig({ + t, + sitePaths, +}: SimulatorsDataParams) { + return config({ + id: 'réduction-générale', + beta: true, + tracking: 'reduction_generale', + icône: '🏷️', + iframePath: 'simulateur-reduction-generale', + pathId: 'simulateurs.réduction-générale', + shortName: t( + 'pages.simulateurs.réduction-générale.shortname', + 'Réduction générale' + ), + title: t( + 'pages.simulateurs.réduction-générale.title', + 'Simulateur de réduction générale des cotisations' + ), + meta: { + title: t( + 'pages.simulateurs.réduction-générale.meta.title', + 'Réduction générale' + ), + description: t( + 'pages.simulateurs.réduction-générale.meta.description', + 'Estimation du montant de la réduction générale des cotisations patronales (RGCP). Cette réduction est applicable pour les salaires inférieurs à 1,6 fois le SMIC.' + ), + }, + path: sitePaths.simulateurs['réduction-générale'], + simulation: configRéductionGénérale, + component: RéductionGénéraleSimulation, + } as const) +} diff --git a/site/source/pages/simulateurs/reduction-generale/simulationConfig.ts b/site/source/pages/simulateurs/reduction-generale/simulationConfig.ts new file mode 100644 index 0000000000..7e59379a22 --- /dev/null +++ b/site/source/pages/simulateurs/reduction-generale/simulationConfig.ts @@ -0,0 +1,46 @@ +import { SimulationConfig } from '@/domaine/SimulationConfig' + +export const configRéductionGénérale: SimulationConfig = { + // TODO: remplacer 'salarié . cotisations . assiette' par 'salarié . rémunération . brut' + // lorsque cette dernière n'incluera plus les frais professionnels. + 'objectifs exclusifs': ['salarié . cotisations . assiette'], + objectifs: ['salarié . cotisations . exonérations . réduction générale'], + questions: { + "à l'affiche": [ + { + label: 'Temps partiel', + dottedName: 'salarié . contrat . temps de travail . temps partiel', + }, + { + label: 'Heures supplémentaires', + dottedName: 'salarié . temps de travail . heures supplémentaires', + }, + { + label: 'Heures complémentaires', + dottedName: 'salarié . temps de travail . heures complémentaires', + }, + { + label: 'DFS', + dottedName: 'salarié . régimes spécifiques . DFS', + }, + { + label: 'JEI', + dottedName: 'salarié . cotisations . exonérations . JEI', + }, + ], + 'liste noire': [ + 'entreprise . salariés . effectif . seuil', + 'établissement . commune', + 'salarié . contrat . CDD . motif', + 'salarié . rémunération . primes . activité . base', + 'salarié . rémunération . avantages en nature', + ], + 'non prioritaires': ['salarié . convention collective'], + }, + 'unité par défaut': '€/an', + situation: { + dirigeant: 'non', + 'entreprise . catégorie juridique': "''", + 'entreprise . imposition': 'non', + }, +} diff --git a/site/source/sitePaths.ts b/site/source/sitePaths.ts index 6038fa6352..1558067a1e 100644 --- a/site/source/sitePaths.ts +++ b/site/source/sitePaths.ts @@ -72,6 +72,7 @@ const rawSitePathsFr = { 'chômage-partiel': 'chômage-partiel', is: 'impot-societe', dividendes: 'dividendes', + 'réduction-générale': 'réduction-générale', }, nouveautés: { index: 'nouveautés', @@ -170,6 +171,7 @@ const rawSitePathsEn = { }, is: 'corporate-tax', dividendes: 'dividends', + 'réduction-générale': 'réduction-générale', }, nouveautés: { index: 'news', diff --git "a/site/test/regressions/__snapshots__/r\303\251duction-g\303\251n\303\251rale.test.ts.snap" "b/site/test/regressions/__snapshots__/r\303\251duction-g\303\251n\303\251rale.test.ts.snap" new file mode 100644 index 0000000000..8960de4fc1 --- /dev/null +++ "b/site/test/regressions/__snapshots__/r\303\251duction-g\303\251n\303\251rale.test.ts.snap" @@ -0,0 +1,177 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`calculate simulations-dividendes > DFS 1`] = ` +"salarié . cotisations . assiette: 1767 +salarié . cotisations . exonérations . réduction générale: 513 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 407 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 72 +salarié . cotisations . exonérations . réduction générale . part retraite: 106" +`; + +exports[`calculate simulations-dividendes > DFS 2`] = ` +"salarié . cotisations . assiette: 1767 +salarié . cotisations . exonérations . réduction générale: 513 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 407 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 72 +salarié . cotisations . exonérations . réduction générale . part retraite: 106" +`; + +exports[`calculate simulations-dividendes > DFS 3`] = ` +"salarié . cotisations . assiette: 1767 +salarié . cotisations . exonérations . réduction générale: 564 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 458 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 72 +salarié . cotisations . exonérations . réduction générale . part retraite: 106" +`; + +exports[`calculate simulations-dividendes > DFS 4`] = ` +"salarié . cotisations . assiette: 1767 +salarié . cotisations . exonérations . réduction générale: 564 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 458 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 72 +salarié . cotisations . exonérations . réduction générale . part retraite: 106" +`; + +exports[`calculate simulations-dividendes > DFS 5`] = ` +"salarié . cotisations . assiette: 1767 +salarié . cotisations . exonérations . réduction générale: 564 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 458 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 72 +salarié . cotisations . exonérations . réduction générale . part retraite: 106" +`; + +exports[`calculate simulations-dividendes > JEI 1`] = ` +"salarié . cotisations . assiette: 1900 +salarié . cotisations . exonérations . réduction générale: null +salarié . cotisations . exonérations . réduction générale . part Urssaf: null +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: null +salarié . cotisations . exonérations . réduction générale . part retraite: null" +`; + +exports[`calculate simulations-dividendes > effectif 1`] = ` +"salarié . cotisations . assiette: 1900 +salarié . cotisations . exonérations . réduction générale: 493 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 401 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 63 +salarié . cotisations . exonérations . réduction générale . part retraite: 93" +`; + +exports[`calculate simulations-dividendes > effectif 2`] = ` +"salarié . cotisations . assiette: 1900 +salarié . cotisations . exonérations . réduction générale: 500 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 407 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 63 +salarié . cotisations . exonérations . réduction générale . part retraite: 93" +`; + +exports[`calculate simulations-dividendes > heures complémentaires 1`] = ` +"salarié . cotisations . assiette: 1900 +salarié . cotisations . exonérations . réduction générale: 454 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 368 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 58 +salarié . cotisations . exonérations . réduction générale . part retraite: 85" +`; + +exports[`calculate simulations-dividendes > heures supplémentaires 1`] = ` +"salarié . cotisations . assiette: 1900 +salarié . cotisations . exonérations . réduction générale: 607 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 493 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 77 +salarié . cotisations . exonérations . réduction générale . part retraite: 114" +`; + +exports[`calculate simulations-dividendes > salaire 1`] = ` +"salarié . cotisations . assiette: 100 +salarié . cotisations . exonérations . réduction générale: 32 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 26 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 4 +salarié . cotisations . exonérations . réduction générale . part retraite: 6" +`; + +exports[`calculate simulations-dividendes > salaire 2`] = ` +"salarié . cotisations . assiette: 250 +salarié . cotisations . exonérations . réduction générale: 80 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 65 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 10 +salarié . cotisations . exonérations . réduction générale . part retraite: 15" +`; + +exports[`calculate simulations-dividendes > salaire 3`] = ` +"salarié . cotisations . assiette: 500 +salarié . cotisations . exonérations . réduction générale: 160 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 130 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 20 +salarié . cotisations . exonérations . réduction générale . part retraite: 30" +`; + +exports[`calculate simulations-dividendes > salaire 4`] = ` +"salarié . cotisations . assiette: 750 +salarié . cotisations . exonérations . réduction générale: 240 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 194 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 30 +salarié . cotisations . exonérations . réduction générale . part retraite: 45" +`; + +exports[`calculate simulations-dividendes > salaire 5`] = ` +"salarié . cotisations . assiette: 1000 +salarié . cotisations . exonérations . réduction générale: 319 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 259 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 40 +salarié . cotisations . exonérations . réduction générale . part retraite: 60" +`; + +exports[`calculate simulations-dividendes > salaire 6`] = ` +"salarié . cotisations . assiette: 1250 +salarié . cotisations . exonérations . réduction générale: 399 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 324 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 51 +salarié . cotisations . exonérations . réduction générale . part retraite: 75" +`; + +exports[`calculate simulations-dividendes > salaire 7`] = ` +"salarié . cotisations . assiette: 1500 +salarié . cotisations . exonérations . réduction générale: 479 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 389 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 61 +salarié . cotisations . exonérations . réduction générale . part retraite: 90" +`; + +exports[`calculate simulations-dividendes > salaire 8`] = ` +"salarié . cotisations . assiette: 2000 +salarié . cotisations . exonérations . réduction générale: 440 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 357 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 56 +salarié . cotisations . exonérations . réduction générale . part retraite: 83" +`; + +exports[`calculate simulations-dividendes > salaire 9`] = ` +"salarié . cotisations . assiette: 2500 +salarié . cotisations . exonérations . réduction générale: 174 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 141 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 22 +salarié . cotisations . exonérations . réduction générale . part retraite: 33" +`; + +exports[`calculate simulations-dividendes > salaire 10`] = ` +"salarié . cotisations . assiette: 3000 +salarié . cotisations . exonérations . réduction générale: 0 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 0 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 0 +salarié . cotisations . exonérations . réduction générale . part retraite: 0" +`; + +exports[`calculate simulations-dividendes > stage 1`] = ` +"salarié . cotisations . assiette: 1900 +salarié . cotisations . exonérations . réduction générale: 493 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 401 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 63 +salarié . cotisations . exonérations . réduction générale . part retraite: 93" +`; + +exports[`calculate simulations-dividendes > temps partiel 1`] = ` +"salarié . cotisations . assiette: 1900 +salarié . cotisations . exonérations . réduction générale: 364 +salarié . cotisations . exonérations . réduction générale . part Urssaf: 296 +salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage: 46 +salarié . cotisations . exonérations . réduction générale . part retraite: 69" +`; diff --git "a/site/test/regressions/r\303\251duction-g\303\251n\303\251rale.test.ts" "b/site/test/regressions/r\303\251duction-g\303\251n\303\251rale.test.ts" new file mode 100644 index 0000000000..4eeac734c5 --- /dev/null +++ "b/site/test/regressions/r\303\251duction-g\303\251n\303\251rale.test.ts" @@ -0,0 +1,20 @@ +import { it } from 'vitest' + +import { configRéductionGénérale } from '@/pages/simulateurs/reduction-generale/simulationConfig' + +import réductionGénéraleSituation from './réduction-générale.yaml' +import { runSimulations } from './utils' + +it('calculate simulations-dividendes', () => { + runSimulations( + réductionGénéraleSituation, + [ + ...(configRéductionGénérale['objectifs exclusifs'] ?? []), + ...(configRéductionGénérale.objectifs ?? []), + 'salarié . cotisations . exonérations . réduction générale . part retraite', + 'salarié . cotisations . exonérations . réduction générale . part Urssaf', + 'salarié . cotisations . exonérations . réduction générale . part Urssaf . part chômage', + ], + configRéductionGénérale.situation + ) +}) diff --git "a/site/test/regressions/r\303\251duction-g\303\251n\303\251rale.yaml" "b/site/test/regressions/r\303\251duction-g\303\251n\303\251rale.yaml" new file mode 100644 index 0000000000..92d91cdbe4 --- /dev/null +++ "b/site/test/regressions/r\303\251duction-g\303\251n\303\251rale.yaml" @@ -0,0 +1,51 @@ +salaire: + - salarié . cotisations . assiette: 100 €/mois + - salarié . cotisations . assiette: 250 €/mois + - salarié . cotisations . assiette: 500 €/mois + - salarié . cotisations . assiette: 750 €/mois + - salarié . cotisations . assiette: 1000 €/mois + - salarié . cotisations . assiette: 1250 €/mois + - salarié . cotisations . assiette: 1500 €/mois + - salarié . cotisations . assiette: 2000 €/mois + - salarié . cotisations . assiette: 2500 €/mois + - salarié . cotisations . assiette: 3000 €/mois + +effectif: + - salarié . cotisations . assiette: 1900 €/mois + entreprise . salariés . effectif: 10 employés + - salarié . cotisations . assiette: 1900 €/mois + entreprise . salariés . effectif: 100 employés + +temps partiel: + - salarié . cotisations . assiette: 1900 €/mois + salarié . contrat . temps de travail . temps partiel: oui + +heures supplémentaires: + - salarié . cotisations . assiette: 1900 €/mois + salarié . temps de travail . heures supplémentaires: 18 heures/mois + +heures complémentaires: + - salarié . cotisations . assiette: 1900 €/mois + salarié . contrat . temps de travail . temps partiel: oui + salarié . temps de travail . heures complémentaires: 9 heures/mois + +stage: + - salarié . cotisations . assiette: 1900 €/mois + salarié . contrat: stage + +JEI: + - salarié . cotisations . assiette: 1900 €/mois + salarié . cotisations . exonérations . JEI: oui + +DFS: + - &dfs + salarié . cotisations . assiette: 1900 €/mois + salarié . régimes spécifiques . DFS: oui + - <<: *dfs + salarié . régimes spécifiques . DFS . profession: "'journaliste'" + - <<: *dfs + salarié . régimes spécifiques . DFS . profession: "'ouvrier du bâtiment'" + - <<: *dfs + salarié . régimes spécifiques . DFS . profession: "'artiste musicien'" + - <<: *dfs + salarié . régimes spécifiques . DFS . profession: "'pilote de ligne ou personnel navigant'" From 01be9a01de536dd103c5a634e272dbbb24040ef7 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Tue, 24 Sep 2024 13:00:32 +0200 Subject: [PATCH 10/15] feat: ajoute un avertissement pour le simulateur RGCP --- site/source/components/SimulateurWarning.tsx | 43 ++++++++++++++++++++ site/source/locales/ui-en.yaml | 11 +++++ site/source/locales/ui-fr.yaml | 12 ++++++ 3 files changed, 66 insertions(+) diff --git a/site/source/components/SimulateurWarning.tsx b/site/source/components/SimulateurWarning.tsx index e46d329b8a..41fe00e6ba 100644 --- a/site/source/components/SimulateurWarning.tsx +++ b/site/source/components/SimulateurWarning.tsx @@ -3,7 +3,10 @@ import { Trans } from 'react-i18next' import { styled } from 'styled-components' import Warning from '@/components/ui/WarningBlock' +<<<<<<< HEAD import { Spacing } from '@/design-system/layout' +======= +>>>>>>> 19e8ace4a (feat: ajoute un avertissement pour le simulateur RGCP) import { Strong } from '@/design-system/typography' import { Link } from '@/design-system/typography/link' import { Li, Ul } from '@/design-system/typography/list' @@ -183,6 +186,46 @@ export default function SimulateurWarning({ )} + {simulateur === 'réduction-générale' && ( + <> + + + Ce simulateur est en cours de développement. Il + propose uniquement le calcul de la{' '} + + RGCP + {' '} + à partir d'une rémunération mensuelle ou annuelle. Pour une + version complète, utilisez{' '} + + le simulateur d'urssaf.fr. + + + +
      + + + La rémunération brute inclue : le paiement des heures + supplémentaires et complémentaires, les primes et les indemnités + de CDD. + + + + + Ce simulateur n'intègre pas toutes les règles de calcul + spécifiques (Entreprises de Travail Temporaire, salariés des + transports routiers soumis à un horaire d'équivalence). Il ne + tient pas non plus compte des taux et/ou répartition + particuliers de la cotisation de retraite complémentaire + appliqués dans certaines entreprises. + + +
    + + )} ) } diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml index 863462ef55..f11a775b72 100644 --- a/site/source/locales/ui-en.yaml +++ b/site/source/locales/ui-en.yaml @@ -1752,6 +1752,17 @@ simulateurs: plus: Read more profession-libérale: This simulator is intended for self-employed professionals who earn a BNC. It does not take into account self-employed companies. + réduction-générale: + "1": "Gross remuneration includes: overtime and additional hours, bonuses and + fixed-term contract allowances." + "2": This simulator does not take into account all specific calculation rules + (temporary employment agencies, road haulage employees subject to + equivalent working hours). Nor does it take into account the specific + rates and/or distribution of supplementary pension contributions applied + in certain companies. + beta: <0>This simulator is currently under development. It only calculates + <3>RGCP on the basis of monthly or annual remuneration. For a full + version, use <7>the urssaf.fr simulator. salarié: "1": <0>This estimate is provided for information only. It is based on the information you have entered and the applicable regulations, but it does diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml index 493de3ec2b..fcd4b84a7b 100644 --- a/site/source/locales/ui-fr.yaml +++ b/site/source/locales/ui-fr.yaml @@ -1867,6 +1867,18 @@ simulateurs: plus: Lire les précisions profession-libérale: Ce simulateur est à destination des professions libérales en BNC. Il ne prend pas en compte les sociétés d'exercice libéral. + réduction-générale: + "1": "La rémunération brute inclue : le paiement des heures supplémentaires et + complémentaires, les primes et les indemnités de CDD." + "2": Ce simulateur n'intègre pas toutes les règles de calcul spécifiques + (Entreprises de Travail Temporaire, salariés des transports routiers + soumis à un horaire d'équivalence). Il ne tient pas non plus compte des + taux et/ou répartition particuliers de la cotisation de retraite + complémentaire appliqués dans certaines entreprises. + beta: <0>Ce simulateur est en cours de développement. Il propose uniquement + le calcul de la <3>RGCP à partir d'une rémunération mensuelle ou + annuelle. Pour une version complète, utilisez <7>le simulateur + d'urssaf.fr. salarié: "1": <0>Cette estimation est proposée à titre indicatif. Elle est faite à partir des éléments que vous avez saisis et des éléments réglementaires From 311a9af45993a64184da0cf1f70bfb8bffdd56a7 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Fri, 27 Sep 2024 16:00:24 +0200 Subject: [PATCH 11/15] feat: ajout d'un avertissement sur le simulateur RGCP pour l'option JEI --- site/source/locales/ui-en.yaml | 3 +++ site/source/locales/ui-fr.yaml | 3 +++ .../R\303\251ductionG\303\251n\303\251rale.tsx" | 11 +++++++++++ 3 files changed, 17 insertions(+) diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml index f11a775b72..0860a3b858 100644 --- a/site/source/locales/ui-en.yaml +++ b/site/source/locales/ui-en.yaml @@ -165,6 +165,9 @@ La pension calculée correspond à celle de <2>vos 25 meilleures années, en The pension calculated corresponds to <2>your best 25 years, assuming that you have contributed enough quarters (4 quarters per year) and that you retire at the age required to obtain a full pension. +La réduction générale n'est pas cumulable avec l'exonération Jeune Entreprise Innovante (JEI).: + The general reduction cannot be combined with the Young Innovative Company + (JEI) exemption. Le montant de votre retraite est constitué de <2>votre retraite de base + votre retraite complémentaire.: The amount of your pension is made up of <2>your basic pension + your supplementary pension. diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml index fcd4b84a7b..48036895d8 100644 --- a/site/source/locales/ui-fr.yaml +++ b/site/source/locales/ui-fr.yaml @@ -175,6 +175,9 @@ La pension calculée correspond à celle de <2>vos 25 meilleures années, en La pension calculée correspond à celle de <2>vos 25 meilleures années, en considérant que vous avez cotisé suffisamment de trimestres (4 trimestres par an) et que vous partez en retraite à l’âge requis pour obtenir un taux plein. +La réduction générale n'est pas cumulable avec l'exonération Jeune Entreprise Innovante (JEI).: + La réduction générale n'est pas cumulable avec l'exonération Jeune Entreprise + Innovante (JEI). Le montant de votre retraite est constitué de <2>votre retraite de base + votre retraite complémentaire.: Le montant de votre retraite est constitué de <2>votre retraite de base + votre retraite complémentaire. diff --git "a/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" "b/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" index 6364e98971..ed9fbcd1d9 100644 --- "a/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" +++ "b/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" @@ -68,6 +68,17 @@ function RéductionGénéraleSimulationGoals({ label={t('Rémunération brute', 'Rémunération brute')} /> + + + + + La réduction générale n'est pas cumulable avec l'exonération Jeune + Entreprise Innovante (JEI). + + + + + From 21c20b865b12dbb7e2eedd9473a0ac0ccc34c040 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Fri, 27 Sep 2024 18:00:30 +0200 Subject: [PATCH 12/15] feat: ajout d'un avertissement sur le simulateur RGCP pour les stages --- site/source/locales/ui-en.yaml | 1 + site/source/locales/ui-fr.yaml | 1 + .../R\303\251ductionG\303\251n\303\251rale.tsx" | 11 +++++++++++ 3 files changed, 13 insertions(+) diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml index 0860a3b858..defb5af822 100644 --- a/site/source/locales/ui-en.yaml +++ b/site/source/locales/ui-en.yaml @@ -168,6 +168,7 @@ La pension calculée correspond à celle de <2>vos 25 meilleures années, en La réduction générale n'est pas cumulable avec l'exonération Jeune Entreprise Innovante (JEI).: The general reduction cannot be combined with the Young Innovative Company (JEI) exemption. +La réduction générale ne s'applique pas sur les gratifications de stage.: The general reduction does not apply to internship bonuses. Le montant de votre retraite est constitué de <2>votre retraite de base + votre retraite complémentaire.: The amount of your pension is made up of <2>your basic pension + your supplementary pension. diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml index 48036895d8..8c263fea27 100644 --- a/site/source/locales/ui-fr.yaml +++ b/site/source/locales/ui-fr.yaml @@ -178,6 +178,7 @@ La pension calculée correspond à celle de <2>vos 25 meilleures années, en La réduction générale n'est pas cumulable avec l'exonération Jeune Entreprise Innovante (JEI).: La réduction générale n'est pas cumulable avec l'exonération Jeune Entreprise Innovante (JEI). +La réduction générale ne s'applique pas sur les gratifications de stage.: La réduction générale ne s'applique pas sur les gratifications de stage. Le montant de votre retraite est constitué de <2>votre retraite de base + votre retraite complémentaire.: Le montant de votre retraite est constitué de <2>votre retraite de base + votre retraite complémentaire. diff --git "a/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" "b/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" index ed9fbcd1d9..353ce78b8a 100644 --- "a/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" +++ "b/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" @@ -79,6 +79,17 @@ function RéductionGénéraleSimulationGoals({ + + + + + La réduction générale ne s'applique pas sur les gratifications de + stage. + + + + + From cbcd44e8eac1b34445e506edea3b0a4afa347f49 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Fri, 27 Sep 2024 16:00:45 +0200 Subject: [PATCH 13/15] feat: affiche 0 au lieu de masquer la RGCP --- .../R\303\251ductionG\303\251n\303\251rale.tsx" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" "b/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" index 353ce78b8a..f7343eaa78 100644 --- "a/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" +++ "b/site/source/pages/simulateurs/reduction-generale/R\303\251ductionG\303\251n\303\251rale.tsx" @@ -102,7 +102,7 @@ function RéductionGénéraleSimulationGoals({ - + Date: Fri, 27 Sep 2024 16:31:35 +0200 Subject: [PATCH 14/15] =?UTF-8?q?feat:=20ajoute=20un=20avertissement=20g?= =?UTF-8?q?=C3=A9n=C3=A9rique=20=C3=A0=20tous=20les=20simulateurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/source/components/SimulateurWarning.tsx | 98 +++++++++++-------- site/source/locales/ui-en.yaml | 48 +++++---- site/source/locales/ui-fr.yaml | 53 +++++----- .../Ch\303\264magePartiel.tsx" | 53 +++------- .../simulateurs/dividendes/Dividendes.tsx | 18 +--- .../pages/simulateurs/impot-societe/index.tsx | 14 +-- 6 files changed, 123 insertions(+), 161 deletions(-) diff --git a/site/source/components/SimulateurWarning.tsx b/site/source/components/SimulateurWarning.tsx index 41fe00e6ba..eca94ccf5a 100644 --- a/site/source/components/SimulateurWarning.tsx +++ b/site/source/components/SimulateurWarning.tsx @@ -3,10 +3,6 @@ import { Trans } from 'react-i18next' import { styled } from 'styled-components' import Warning from '@/components/ui/WarningBlock' -<<<<<<< HEAD -import { Spacing } from '@/design-system/layout' -======= ->>>>>>> 19e8ace4a (feat: ajoute un avertissement pour le simulateur RGCP) import { Strong } from '@/design-system/typography' import { Link } from '@/design-system/typography/link' import { Li, Ul } from '@/design-system/typography/list' @@ -61,15 +57,6 @@ export default function SimulateurWarning({
)} - {simulateur !== 'artiste-auteur' && simulateur !== 'salarié' && ( - - - Les calculs sont indicatifs. Ils ne se substituent pas aux décomptes - réels de l’Urssaf, de l’administration fiscale ou de toute autre - organisme. - - - )} {simulateur === 'profession-libérale' && (
    @@ -94,23 +81,12 @@ export default function SimulateurWarning({
)} {simulateur === 'artiste-auteur' && ( -
    - - - Cette estimation est proposée à titre indicatif. Elle est faite à - partir des éléments réglementaires applicables et des éléments que - vous avez saisis, mais elle ne tient pas compte de l'ensemble de - votre situation. Le montant réel de vos cotisations peut donc être - différent. - - - - - Ce simulateur permet d'estimer le montant de vos cotisations à - partir de votre revenu projeté - - -
+ + + Ce simulateur permet d'estimer le montant de vos cotisations à + partir de votre revenu projeté. + + )} {simulateur === 'coût-création-entreprise' && (
    @@ -157,15 +133,7 @@ export default function SimulateurWarning({ )} {simulateur === 'salarié' && ( - - Cette estimation est proposée à titre indicatif. - Elle est faite à partir des éléments que vous avez saisis et des - éléments réglementaires applicables, mais elle ne tient pas compte - de l'ensemble de votre situation.{' '} - Les montants réels peuvent donc être différents. - - - + Le simulateur ne prend pour l'instant pas en compte les accords et conventions collectives, ni la myriade d'aides aux entreprises. Trouvez votre convention collective{' '} @@ -186,6 +154,49 @@ export default function SimulateurWarning({ )} + {simulateur === 'chômage-partiel' && ( +
      + + + Ce simulateur ne prend pas en compte les rémunérations brutes + définies sur 39h hebdomadaires. + + + + + De même, il ne prend pas en compte les indemnités complémentaire + d'activité partielle prévue par une convention/accord collectif ou + une décision unilatérale de l'employeur. + + +
    + )} + {simulateur === 'is' && ( + + + Ce simulateur s’adresse aux{' '} + TPE : il prend en + compte les taux réduits de l’impôt sur les sociétés. + + + )} + {simulateur === 'dividendes' && ( +
      + + + Cette simulation ne concerne que les sociétés françaises à l’impôt + sur les sociétés (IS), et ne concerne pas les travailleurs + indépendants non salariés. + + + + + Le montant de l'impôt sur les dividendes est calculé en plus de + l’impôt sur les autres revenus imposables. + + +
    + )} {simulateur === 'réduction-générale' && ( <> @@ -226,6 +237,15 @@ export default function SimulateurWarning({
)} + + + Les calculs sont indicatifs. Ils sont faits à partir + des éléments que vous avez saisis et des éléments réglementaires + applicables, mais ils ne tiennent pas compte de l'ensemble de votre + situation. Ils ne se substituent pas aux décomptes réels de l’Urssaf, + de l'administration fiscale ou de toute autre organisme. + + ) } diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml index defb5af822..097c6eb8c1 100644 --- a/site/source/locales/ui-en.yaml +++ b/site/source/locales/ui-en.yaml @@ -589,11 +589,6 @@ design-system: open-selector: Open date selector prev-month: Previous month year: Year -dividendes: - warning: <0>This simulation is for information purposes only. It applies only to - French companies subject to corporation tax (IS), and does not concern - self-employed workers.<1>Tax on dividends is calculated in addition to - tax on other taxable income. dont chômage: of which unemployment employeur: employer en cas d'accident pro: in the event of a professional accident @@ -674,9 +669,6 @@ impot-société: exercice-2022: Use dates for fiscal year 2022, pre-fill exercice-2023: Use dates for fiscal year 2023, pre-fill préremplir-exercice: "<0>Fiscal 2022 <2>Fiscal 2023 " -impotSociété: - warning: "This simulator is designed for <2>very small businesses: it takes - into account reduced corporate tax rates." impôt: tax impôt sur le revenu: income tax impôt sur le revenu prélevé à la source: income tax deducted at source @@ -1719,13 +1711,8 @@ simulateurs: précision: défaut: "Improve your simulation by answering the questions below:" warning: - artiste-auteur: - "1": This estimate is provided for information only. It is based on the - applicable regulations and the information you have entered, but it does - not take into account your entire situation. The actual amount of your - contributions may therefore differ. - "2": This simulator allows you to estimate the amount of your contributions - based on your projected income. + artiste-auteur: This simulator allows you to estimate the amount of your + contributions based on your projected income. auto-entrepreneur: Auto-entrepreneurs benefit from a highly simplified system, with a flat rate for calculating social security contributions applied to sales. Depending on the tax payment method chosen, a flat-rate deduction @@ -1736,6 +1723,12 @@ simulateurs: foncière des entreprises - CFE), which is due from the second year of business. Its amount varies greatly depending on sales and the company's location. <2>For further information. + chômage-partiel: + "1": This simulator does not take into account gross earnings based on a 39-hour + week. + "2": Similarly, it does not take into account any additional partial activity + indemnities provided for by a collective agreement or unilateral + decision by the employer. cotisations-ordinales: For regulated professions, the simulator does not calculate the amount of membership fees. They must be added manually in the "operating expenses" box. @@ -1747,9 +1740,19 @@ simulateurs: documents. In addition, the registry charges postage for mailings. pas-reprise: This simulator calculates start-up costs for new businesses. It does not take into account takeovers of existing companies. + dividendes: + "1": This simulation applies only to French companies subject to corporation tax + (IS), and does not concern self-employed workers. + "2": Tax on dividends is calculated in addition to tax on other taxable income. + general: <0>The calculations are indicative. They are based on the + information you have entered and the applicable regulations, but they do + not take into account your entire situation. They do not replace actual + statements from Urssaf, the tax authorities or any other organization. indépendant: année-courante: The amount calculated corresponds to the contributions for the year {{year}} (for an income {{year}}). + is: "This simulator is designed for <2>very small businesses: it takes into + account reduced corporate tax rates." libérale: année-courante: The amount calculated corresponds to the contributions for the year {{year}} (for an income {{year}}). @@ -1767,20 +1770,13 @@ simulateurs: beta: <0>This simulator is currently under development. It only calculates <3>RGCP on the basis of monthly or annual remuneration. For a full version, use <7>the urssaf.fr simulator. - salarié: - "1": <0>This estimate is provided for information only. It is based on the - information you have entered and the applicable regulations, but it does - not take into account your entire situation. <3>Actual amounts may - therefore differ. - "2": The simulator does not currently take into account collective agreements, - nor the myriad of company subsidies. Find your collective bargaining - agreement <2>here, and explore the range of assistance available on - <4>aides-entreprises.fr. + salarié: The simulator does not currently take into account collective + agreements, nor the myriad of company subsidies. Find your collective + bargaining agreement <2>here, and explore the range of assistance + available on <4>aides-entreprises.fr. sasu: This simulator does not handle the case of SAS(U) taxable on income (IR). Only the corporate income tax (IS) option is implemented. titre: Before we begin... - urssaf: Calculations are indicative. They are not a substitute for actual - statements from Urssaf, the tax authorities or any other organization. simulation-end: hiring: text: Now you can make your hiring plans a reality. diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml index 8c263fea27..b8b8fe1cf0 100644 --- a/site/source/locales/ui-fr.yaml +++ b/site/source/locales/ui-fr.yaml @@ -620,12 +620,6 @@ design-system: open-selector: Ouvrir le sélecteur de date prev-month: Mois précédent year: Année -dividendes: - warning: <0>Cette simulation est uniquement donnée à titre indicatif. Elle ne - concerne que les sociétés françaises à l’impôt sur les sociétés (IS), et ne - concerne pas les travailleurs indépendants non salariés.<1>Le montant de - l'impôt sur les dividendes est calculé en sus de l’impôt sur les autres - revenus imposables. dont chômage: dont chômage employeur: employeur en cas d'accident pro: en cas d'accident pro @@ -710,9 +704,6 @@ impot-société: exercice-2022: Utiliser les dates de l'exercice 2022, préremplir exercice-2023: Utiliser les dates de l'exercice 2023, préremplir préremplir-exercice: "<0>Exercice 2022 <2>Exercice 2023 " -impotSociété: - warning: "Ce simulateur s’adresse aux <2>TPE : il prend en compte les taux - réduits de l’impôt sur les sociétés." impôt: impôt impôt sur le revenu: impôt sur le revenu impôt sur le revenu prélevé à la source: impôt sur le revenu prélevé à la source @@ -1830,13 +1821,8 @@ simulateurs: précision: défaut: "Améliorez votre simulation en répondant aux questions :" warning: - artiste-auteur: - "1": Cette estimation est proposée à titre indicatif. Elle est faite à partir - des éléments réglementaires applicables et des éléments que vous avez - saisis, mais elle ne tient pas compte de l'ensemble de votre situation. - Le montant réel de vos cotisations peut donc être différent. - "2": Ce simulateur permet d'estimer le montant de vos cotisations à partir de - votre revenu projeté + artiste-auteur: Ce simulateur permet d'estimer le montant de vos cotisations à + partir de votre revenu projeté. auto-entrepreneur: Les auto-entrepreneurs bénéficient d’un régime très simplifié avec un taux forfaitaire pour le calcul des cotisations et contributions sociales appliqué sur le chiffre d’affaires. Selon le choix de la modalité @@ -1848,6 +1834,12 @@ simulateurs: est dûe dès la deuxième année d'exercice. Son montant varie fortement en fonction du chiffre d'affaires et de la domiciliation de l'entreprise. <2>Plus d'infos. + chômage-partiel: + "1": Ce simulateur ne prend pas en compte les rémunérations brutes définies sur + 39h hebdomadaires. + "2": De même, il ne prend pas en compte les indemnités complémentaire d'activité + partielle prévue par une convention/accord collectif ou une décision + unilatérale de l'employeur. cotisations-ordinales: Pour les professions réglementées, le simulateur ne calcule pas le montant des cotisations à l'ordre. Elles doivent être ajoutées manuellement dans la case « charges de fonctionnement ». @@ -1862,9 +1854,22 @@ simulateurs: pas-reprise: Ce simulateur calcule les frais de création pour les nouvelles entreprises. Il ne prend pas en compte le cas des reprises d'entreprises existantes. + dividendes: + "1": Cette simulation ne concerne que les sociétés françaises à l’impôt sur les + sociétés (IS), et ne concerne pas les travailleurs indépendants non + salariés. + "2": Le montant de l'impôt sur les dividendes est calculé en plus de l’impôt sur + les autres revenus imposables. + general: <0>Les calculs sont indicatifs. Ils sont faits à partir des + éléments que vous avez saisis et des éléments réglementaires applicables, + mais ils ne tiennent pas compte de l'ensemble de votre situation. Ils ne + se substituent pas aux décomptes réels de l’Urssaf, de l'administration + fiscale ou de toute autre organisme. indépendant: année-courante: Le montant calculé correspond aux cotisations de l’année {{year}} (pour un revenu {{year}}). + is: "Ce simulateur s’adresse aux <2>TPE : il prend en compte les taux + réduits de l’impôt sur les sociétés." libérale: année-courante: Le montant calculé correspond aux cotisations de l’année {{year}} (pour un revenu {{year}}). @@ -1883,21 +1888,13 @@ simulateurs: le calcul de la <3>RGCP à partir d'une rémunération mensuelle ou annuelle. Pour une version complète, utilisez <7>le simulateur d'urssaf.fr. - salarié: - "1": <0>Cette estimation est proposée à titre indicatif. Elle est faite à - partir des éléments que vous avez saisis et des éléments réglementaires - applicables, mais elle ne tient pas compte de l'ensemble de votre - situation. <3>Les montants réels peuvent donc être différents. - "2": Le simulateur ne prend pour l'instant pas en compte les accords et - conventions collectives, ni la myriade d'aides aux entreprises. Trouvez - votre convention collective <2>ici, et explorez les aides sur - <4>aides-entreprises.fr. + salarié: Le simulateur ne prend pour l'instant pas en compte les accords et + conventions collectives, ni la myriade d'aides aux entreprises. Trouvez + votre convention collective <2>ici, et explorez les aides sur + <4>aides-entreprises.fr. sasu: Ce simulateur ne gère pas le cas des SAS(U) à l'impôt sur le revenu (IR). Seule l'option pour l'impôt sur les sociétés est implémentée (IS). titre: Avant de commencer... - urssaf: Les calculs sont indicatifs. Ils ne se substituent pas aux décomptes - réels de l’Urssaf, de l’administration fiscale ou de toute autre - organisme. simulation-end: hiring: text: Vous pouvez maintenant concrétiser votre projet d'embauche. diff --git "a/site/source/pages/simulateurs/ch\303\264mage-partiel/Ch\303\264magePartiel.tsx" "b/site/source/pages/simulateurs/ch\303\264mage-partiel/Ch\303\264magePartiel.tsx" index 494fb65251..65b6cac276 100644 --- "a/site/source/pages/simulateurs/ch\303\264mage-partiel/Ch\303\264magePartiel.tsx" +++ "b/site/source/pages/simulateurs/ch\303\264mage-partiel/Ch\303\264magePartiel.tsx" @@ -7,14 +7,13 @@ import { styled } from 'styled-components' import { ConseillersEntreprisesButton } from '@/components/ConseillersEntreprisesButton' import Value from '@/components/EngineValue/Value' import RuleLink from '@/components/RuleLink' +import SimulateurWarning from '@/components/SimulateurWarning' import Simulation, { SimulationGoal, SimulationGoals, } from '@/components/Simulation' import { FromTop } from '@/components/ui/animate' -import Warning from '@/components/ui/WarningBlock' import { useEngine } from '@/components/utils/EngineContext' -import { Grid } from '@/design-system/layout' import { Strong } from '@/design-system/typography' import { H2 } from '@/design-system/typography/heading' import { Link } from '@/design-system/typography/link' @@ -41,44 +40,18 @@ export default function ChômagePartiel() { const { t } = useTranslation() return ( - <> - - - {' '} - -
    -
  • - Ce simulateur ne prend pas en compte les rémunérations brut - définies sur 39h hebdomadaires. -
  • -
  • - De même, il ne prend pas en compte les indemnités complémentaire - d'activité partielle prévue par une convention/accord collectif - ou une décision unilatérale de l'employeur. -
  • -
-
-
-
- - } - customEndMessages={Voir les résultats au-dessus} - > - - - - - + } + customEndMessages={Voir les résultats au-dessus} + > + + + + + ) } diff --git a/site/source/pages/simulateurs/dividendes/Dividendes.tsx b/site/source/pages/simulateurs/dividendes/Dividendes.tsx index 9d1893989e..a2352d38c8 100644 --- a/site/source/pages/simulateurs/dividendes/Dividendes.tsx +++ b/site/source/pages/simulateurs/dividendes/Dividendes.tsx @@ -6,12 +6,12 @@ import { useTheme } from 'styled-components' import { Condition } from '@/components/EngineValue/Condition' import Notifications from '@/components/Notifications' +import SimulateurWarning from '@/components/SimulateurWarning' import Simulation, { SimulationGoal, SimulationGoals, } from '@/components/Simulation' import StackedBarChart from '@/components/StackedBarChart' -import Warning from '@/components/ui/WarningBlock' import { useEngine } from '@/components/utils/EngineContext' import { Radio, ToggleGroup } from '@/design-system/field' import { H2 } from '@/design-system/typography/heading' @@ -21,23 +21,9 @@ import { enregistreLaRéponse } from '@/store/actions/actions' export default function DividendesSimulation() { return ( <> - - - - Cette simulation est uniquement donnée à titre indicatif. Elle ne - concerne que les sociétés françaises à l’impôt sur les sociétés - (IS), et ne concerne pas les travailleurs indépendants non salariés. - - - Le montant de l'impôt sur les dividendes est calculé en sus de - l’impôt sur les autres revenus imposables. - - - }> + diff --git a/site/source/pages/simulateurs/impot-societe/index.tsx b/site/source/pages/simulateurs/impot-societe/index.tsx index 7fae532bd3..76d0304b1b 100644 --- a/site/source/pages/simulateurs/impot-societe/index.tsx +++ b/site/source/pages/simulateurs/impot-societe/index.tsx @@ -8,13 +8,13 @@ import RuleInput from '@/components/conversation/RuleInput' import Value from '@/components/EngineValue/Value' import Notifications from '@/components/Notifications' import ShareOrSaveSimulationBanner from '@/components/ShareSimulationBanner' +import SimulateurWarning from '@/components/SimulateurWarning' import { SimulationContainer, SimulationGoal, SimulationGoals, } from '@/components/Simulation' import { FromTop } from '@/components/ui/animate' -import Warning from '@/components/ui/WarningBlock' import { H2 } from '@/design-system/typography/heading' import { Link } from '@/design-system/typography/link' import { Body, Intro } from '@/design-system/typography/paragraphs' @@ -27,17 +27,7 @@ import { situationSelector } from '@/store/selectors/simulationSelectors' export default function ISSimulation() { return ( - - - - Ce simulateur s’adresse aux{' '} - TPE : il prend en - compte les taux réduits de l’impôt sur les sociétés. - - - + Date: Mon, 30 Sep 2024 16:29:18 +0200 Subject: [PATCH 15/15] =?UTF-8?q?fix:=20ajoute=20l'unit=C3=A9=20de=20cotis?= =?UTF-8?q?ations=20.=20assiette?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../r\303\250gles/salari\303\251/cotisations.publicodes" | 1 + 1 file changed, 1 insertion(+) diff --git "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" index 90d35ebec0..5be699e880 100644 --- "a/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" +++ "b/modele-social/r\303\250gles/salari\303\251/cotisations.publicodes" @@ -408,6 +408,7 @@ salarié . cotisations . assiette: somme: - sans prévoyance - prévoyances . employeur . non déductible socialement + unité: €/mois avec: sans prévoyance: