Skip to content

Commit

Permalink
feat(simulateurs): Nouveau simulateur réduction générale
Browse files Browse the repository at this point in the history
  • Loading branch information
liliced committed Sep 3, 2024
1 parent 7bdfd51 commit 8324d3e
Show file tree
Hide file tree
Showing 13 changed files with 644 additions and 0 deletions.
1 change: 1 addition & 0 deletions site/build/prerender.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
110 changes: 110 additions & 0 deletions site/cypress/integration/mon-entreprise/reduction-generale.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
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('button').contains('SMIC').click()

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 have median salary and SMIC buttons', function () {
cy.contains('Montant mensuel').click()
cy.get('button').contains('SMIC')
cy.get('button').contains('salaire médian').click()
cy.get(inputSelector).first().should('have.value', '2 600 €')
})

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', '494 €')
cy.get(
'p[id="salarié___cotisations___exonérations___réduction_générale___part_retraite-value"]'
).should('include.text', '93 €')
cy.get(
'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf-value"]'
).should('include.text', '401 €')
cy.get(
'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf___part_chômage-value"]'
).should('include.text', '63 €')

cy.contains('Plus de 50 salariés').click()
cy.get(
'p[id="salarié___cotisations___exonérations___réduction_générale-value"]'
).should('include.text', '500 €')
cy.get(
'p[id="salarié___cotisations___exonérations___réduction_générale___part_retraite-value"]'
).should('include.text', '93 €')
cy.get(
'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf-value"]'
).should('include.text', '407 €')
cy.get(
'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf___part_chômage-value"]'
).should('include.text', '63 €')
})

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()
})
})
17 changes: 17 additions & 0 deletions site/source/locales/ui-en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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</1>, de <4>maladie professionnelle</4> ou d’un <7>accident sur le trajet domicile-travail</7>, vous serez indemnisé(e) à hauteur de :":
"In the event of an<1>accident at work</1>, <4>occupational illness</4> or an
<7>accident on the way to or from work</7>, you will receive compensation of:"
Expand Down Expand Up @@ -150,6 +151,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 €</1> 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</1> gross per month.
La Sécurité Sociale garantit un <2>capital décès pour vos ayants droits</2> (personnes qui sont à votre charge) sous certaines conditions.:
Under certain conditions, Social Security guarantees a <2>lump-sum death
benefit for your dependants</2>.
Expand Down Expand Up @@ -181,6 +185,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:
Expand Down Expand Up @@ -210,6 +215,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</2>: To find out more, visit <2>aquoiserventlescotisations.urssaf.fr</2>
Expand Down Expand Up @@ -1458,6 +1464,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.
Expand Down Expand Up @@ -1736,6 +1750,9 @@ 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: The general reduction in employer contributions (RGCP) is
applicable up to 1.6 times the SMIC and for all employees contributing to
unemployment insurance.
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...
Expand Down
18 changes: 18 additions & 0 deletions site/source/locales/ui-fr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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</1>, de <4>maladie professionnelle</4> ou d’un <7>accident sur le trajet domicile-travail</7>, vous serez indemnisé(e) à hauteur de :":
"En cas d’<1>accident de travail</1>, de <4>maladie professionnelle</4> ou
d’un <7>accident sur le trajet domicile-travail</7>, vous serez indemnisé(e) à
Expand Down Expand Up @@ -159,6 +160,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 €</1> 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 €</1> bruts
par mois.
La Sécurité Sociale garantit un <2>capital décès pour vos ayants droits</2> (personnes qui sont à votre charge) sous certaines conditions.:
La Sécurité Sociale garantit un <2>capital décès pour vos ayants droits</2>
(personnes qui sont à votre charge) sous certaines conditions.
Expand Down Expand Up @@ -192,6 +197,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:
Expand Down Expand Up @@ -222,6 +228,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</2>: Pour en savoir plus, rendez-vous sur le site
Expand Down Expand Up @@ -1554,6 +1561,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.
Expand Down Expand Up @@ -1851,6 +1866,9 @@ 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: La réduction générale des cotisations patronales (RGCP) est
applicable jusqu’à 1,6 fois le SMIC et pour tout salarié cotisant à
l’assurance chômage.
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...
Expand Down
4 changes: 4 additions & 0 deletions site/source/pages/simulateurs-et-assistants/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ export default function SimulateursEtAssistants() {
>
<SimulateurCard {...simulators.salarié} role="listitem" />
<SimulateurCard {...simulators['chômage-partiel']} role="listitem" />
<SimulateurCard
{...simulators['réduction-générale']}
role="listitem"
/>
</Grid>

<H3 id="revenu-dirigeant">
Expand Down
2 changes: 2 additions & 0 deletions site/source/pages/simulateurs-et-assistants/metadata-src.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down Expand Up @@ -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),
Expand Down
Loading

0 comments on commit 8324d3e

Please sign in to comment.