diff --git a/modele-social/règles/salarié/cotisations.publicodes b/modele-social/règles/salarié/cotisations.publicodes index 1544abfcd..90d35ebec 100644 --- a/modele-social/règles/salarié/cotisations.publicodes +++ b/modele-social/règles/salarié/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 c3b5e89d1..077f10cf3 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 000000000..801207394 --- /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 be707a65f..e46d329b8 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' && (