From 5793399ec53611cef9cd99d9a3650aa17a16fb09 Mon Sep 17 00:00:00 2001 From: Alice Dahan Date: Fri, 27 Dec 2024 15:21:09 +0100 Subject: [PATCH] =?UTF-8?q?feat(lodeom):=20suppression=20de=20la=20r=C3=A9?= =?UTF-8?q?gularisation=20pour=20la=20zone=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../integration/mon-entreprise/lodeom.ts | 4 ++ .../RéductionDeCotisations/Montant.tsx | 2 +- .../RécapitulatifTrimestre.tsx | 60 ++++++++++--------- .../RéductionDeCotisations/RéductionMois.tsx | 42 +++++++------ .../RéductionMoisParMois.tsx | 58 +++++++++++------- .../source/pages/simulateurs/lodeom/Goals.tsx | 16 ++--- .../pages/simulateurs/lodeom/Lodeom.tsx | 4 +- .../simulateurs/reduction-generale/Goals.tsx | 12 ++-- site/source/utils/réductionDeCotisations.ts | 35 ++++++----- 9 files changed, 131 insertions(+), 102 deletions(-) diff --git a/site/cypress/integration/mon-entreprise/lodeom.ts b/site/cypress/integration/mon-entreprise/lodeom.ts index c5968c3af..6dfd0bf3e 100755 --- a/site/cypress/integration/mon-entreprise/lodeom.ts +++ b/site/cypress/integration/mon-entreprise/lodeom.ts @@ -333,6 +333,10 @@ describe('Simulateur lodeom', { testIsolation: false }, function () { cy.get('@recapTable').should('include.text', 'code 688') }) + it('should not include regularization for zone 2', function () { + cy.contains('régularisation', { matchCase: false }).should('not.exist') + }) + it('should be RGAA compliant', function () { cy.contains('Exonération mensuelle').click() checkA11Y() diff --git a/site/source/components/RéductionDeCotisations/Montant.tsx b/site/source/components/RéductionDeCotisations/Montant.tsx index 44ac3fa6b..6a32f78b3 100644 --- a/site/source/components/RéductionDeCotisations/Montant.tsx +++ b/site/source/components/RéductionDeCotisations/Montant.tsx @@ -64,7 +64,7 @@ export default function Montant({ ) : ( - + {formatValue( { nodeValue: réduction, diff --git a/site/source/components/RéductionDeCotisations/RécapitulatifTrimestre.tsx b/site/source/components/RéductionDeCotisations/RécapitulatifTrimestre.tsx index ec90480f5..b293c358f 100644 --- a/site/source/components/RéductionDeCotisations/RécapitulatifTrimestre.tsx +++ b/site/source/components/RéductionDeCotisations/RécapitulatifTrimestre.tsx @@ -13,7 +13,7 @@ type Props = { data: MonthState[] codeRéduction?: string codeRégularisation?: string - withRépartition?: boolean + withRépartitionAndRégularisation?: boolean mobileVersion?: boolean } @@ -28,7 +28,7 @@ export default function RécapitulatifTrimestre({ data, codeRéduction, codeRégularisation, - withRépartition = true, + withRépartitionAndRégularisation = true, mobileVersion = false, }: Props) { const { t, i18n } = useTranslation() @@ -84,7 +84,7 @@ export default function RécapitulatifTrimestre({ displayedUnit={displayedUnit} language={language} alignment="center" - withRépartition={withRépartition} + withRépartition={withRépartitionAndRégularisation} /> ) } @@ -100,7 +100,7 @@ export default function RécapitulatifTrimestre({ displayedUnit={displayedUnit} language={language} alignment="center" - withRépartition={withRépartition} + withRépartition={withRépartitionAndRégularisation} /> ) } @@ -130,27 +130,29 @@ export default function RécapitulatifTrimestre({ - - - - {t( - 'pages.simulateurs.réduction-générale.recap.header-régularisation', - 'Régularisation calculée' - )} - {codeRégularisation && ( - <> -
- {codeRégularisation} - - )} -
-
- - - - - -
+ {withRépartitionAndRégularisation && ( + + + + {t( + 'pages.simulateurs.réduction-générale.recap.header-régularisation', + 'Régularisation calculée' + )} + {codeRégularisation && ( + <> +
+ {codeRégularisation} + + )} +
+
+ + + + + +
+ )} ) : ( @@ -158,9 +160,11 @@ export default function RécapitulatifTrimestre({ - - - + {withRépartitionAndRégularisation && ( + + + + )} ) } diff --git a/site/source/components/RéductionDeCotisations/RéductionMois.tsx b/site/source/components/RéductionDeCotisations/RéductionMois.tsx index db1ff37a4..e0451fa4b 100644 --- a/site/source/components/RéductionDeCotisations/RéductionMois.tsx +++ b/site/source/components/RéductionDeCotisations/RéductionMois.tsx @@ -31,7 +31,7 @@ type Props = { onOptionsChange: (monthIndex: number, options: Options) => void warningCondition: PublicodesExpression warningTooltip: ReactNode - withRépartition?: boolean + withRépartitionAndRégularisation?: boolean mobileVersion?: boolean } @@ -44,7 +44,7 @@ export default function RéductionMois({ onOptionsChange, warningCondition, warningTooltip, - withRépartition = true, + withRépartitionAndRégularisation = true, mobileVersion = false, }: Props) { const { t, i18n } = useTranslation() @@ -125,7 +125,7 @@ export default function RéductionMois({ language={language} warningCondition={warningCondition} warningTooltip={warningTooltip} - withRépartition={withRépartition} + withRépartition={withRépartitionAndRégularisation} /> ) } @@ -140,7 +140,7 @@ export default function RéductionMois({ répartition={data.régularisation.répartition} displayedUnit={displayedUnit} language={language} - withRépartition={withRépartition} + withRépartition={withRépartitionAndRégularisation} /> ) } @@ -184,18 +184,20 @@ export default function RéductionMois({ - - - - - - - - - - + {withRépartitionAndRégularisation && ( + + + + + + + + + + + )} ) : ( <> @@ -210,9 +212,11 @@ export default function RéductionMois({ - - - + {withRépartitionAndRégularisation && ( + + + + )} {isOptionVisible && ( diff --git a/site/source/components/RéductionDeCotisations/RéductionMoisParMois.tsx b/site/source/components/RéductionDeCotisations/RéductionMoisParMois.tsx index 2b843348a..80a551735 100644 --- a/site/source/components/RéductionDeCotisations/RéductionMoisParMois.tsx +++ b/site/source/components/RéductionDeCotisations/RéductionMoisParMois.tsx @@ -29,7 +29,7 @@ type Props = { warningTooltip: ReactNode codeRéduction?: string codeRégularisation?: string - withRépartition?: boolean + withRépartitionAndRégularisation?: boolean } export default function RéductionMoisParMois({ @@ -43,7 +43,7 @@ export default function RéductionMoisParMois({ warningTooltip, codeRéduction, codeRégularisation, - withRépartition = true, + withRépartitionAndRégularisation = true, }: Props) { const { t } = useTranslation() const isDesktop = useMediaQuery( @@ -93,11 +93,13 @@ export default function RéductionMoisParMois({ - - - + {withRépartitionAndRégularisation && ( + + + + )} @@ -120,7 +122,9 @@ export default function RéductionMoisParMois({ }} warningCondition={warningCondition} warningTooltip={warningTooltip} - withRépartition={withRépartition} + withRépartitionAndRégularisation={ + withRépartitionAndRégularisation + } /> ))} @@ -156,18 +160,20 @@ export default function RéductionMoisParMois({ )} - - {t( - 'pages.simulateurs.réduction-générale.recap.header-régularisation', - 'Régularisation calculée' - )} - {codeRégularisation && ( - <> -
- {codeRégularisation} - - )} - + {withRépartitionAndRégularisation && ( + + {t( + 'pages.simulateurs.réduction-générale.recap.header-régularisation', + 'Régularisation calculée' + )} + {codeRégularisation && ( + <> +
+ {codeRégularisation} + + )} + + )} @@ -179,7 +185,9 @@ export default function RéductionMoisParMois({ data={quarters[label]} codeRéduction={codeRéduction} codeRégularisation={codeRégularisation} - withRépartition={withRépartition} + withRépartitionAndRégularisation={ + withRépartitionAndRégularisation + } /> ))} @@ -207,7 +215,9 @@ export default function RéductionMoisParMois({ }} warningCondition={warningCondition} warningTooltip={warningTooltip} - withRépartition={withRépartition} + withRépartitionAndRégularisation={ + withRépartitionAndRégularisation + } mobileVersion={true} /> ))} @@ -228,7 +238,9 @@ export default function RéductionMoisParMois({ data={quarters[label]} codeRéduction={codeRéduction} codeRégularisation={codeRégularisation} - withRépartition={withRépartition} + withRépartitionAndRégularisation={ + withRépartitionAndRégularisation + } mobileVersion={true} /> ))} diff --git a/site/source/pages/simulateurs/lodeom/Goals.tsx b/site/source/pages/simulateurs/lodeom/Goals.tsx index 1d685cbe5..8f0c9af1a 100644 --- a/site/source/pages/simulateurs/lodeom/Goals.tsx +++ b/site/source/pages/simulateurs/lodeom/Goals.tsx @@ -33,7 +33,7 @@ export default function LodeomSimulationGoals({ monthByMonth: boolean toggles?: React.ReactNode legend: string - régularisationMethod: RégularisationMethod + régularisationMethod?: RégularisationMethod }) { const engine = useEngine() const dispatch = useDispatch() @@ -70,8 +70,8 @@ export default function LodeomSimulationGoals({ previousSituation.current, previousData, year, - régularisationMethod, - engine + engine, + régularisationMethod ) }) }, [engine, situation, régularisationMethod, year]) @@ -87,9 +87,9 @@ export default function LodeomSimulationGoals({ rémunérationBrute, previousData, year, - régularisationMethod, engine, - dispatch + dispatch, + régularisationMethod ) }) } @@ -102,8 +102,8 @@ export default function LodeomSimulationGoals({ options, previousData, year, - régularisationMethod, - engine + engine, + régularisationMethod ) }) } @@ -135,7 +135,7 @@ export default function LodeomSimulationGoals({ code: codeRégularisation, }) } - withRépartition={currentZone === 'zone un'} + withRépartitionAndRégularisation={currentZone === 'zone un'} /> ) : ( } - régularisationMethod={régularisationMethod} + régularisationMethod={ + currentZone === 'zone un' ? régularisationMethod : undefined + } /> diff --git a/site/source/pages/simulateurs/reduction-generale/Goals.tsx b/site/source/pages/simulateurs/reduction-generale/Goals.tsx index d6147e3c3..9e161995c 100644 --- a/site/source/pages/simulateurs/reduction-generale/Goals.tsx +++ b/site/source/pages/simulateurs/reduction-generale/Goals.tsx @@ -69,8 +69,8 @@ export default function RéductionGénéraleSimulationGoals({ previousSituation.current, previousData, year, - régularisationMethod, - engine + engine, + régularisationMethod ) }) }, [engine, situation, régularisationMethod, year]) @@ -86,9 +86,9 @@ export default function RéductionGénéraleSimulationGoals({ rémunérationBrute, previousData, year, - régularisationMethod, engine, - dispatch + dispatch, + régularisationMethod ) }) } @@ -101,8 +101,8 @@ export default function RéductionGénéraleSimulationGoals({ options, previousData, year, - régularisationMethod, - engine + engine, + régularisationMethod ) }) } diff --git a/site/source/utils/réductionDeCotisations.ts b/site/source/utils/réductionDeCotisations.ts index 4c3f8240b..66eb31514 100644 --- a/site/source/utils/réductionDeCotisations.ts +++ b/site/source/utils/réductionDeCotisations.ts @@ -80,8 +80,8 @@ export const getDataAfterSituationChange = ( previousSituation: SituationType, previousData: MonthState[], year: number, - régularisationMethod: RégularisationMethod, - engine: Engine + engine: Engine, + régularisationMethod?: RégularisationMethod ): MonthState[] => { if (!Object.keys(situation).length) { return getInitialRéductionMoisParMois(dottedName, year, engine) @@ -103,8 +103,8 @@ export const getDataAfterSituationChange = ( dottedName, updatedData, year, - régularisationMethod, - engine + engine, + régularisationMethod ) } @@ -114,9 +114,9 @@ export const getDataAfterRémunérationChange = ( rémunérationBrute: number, previousData: MonthState[], year: number, - régularisationMethod: RégularisationMethod, engine: Engine, - dispatch: Dispatch + dispatch: Dispatch, + régularisationMethod?: RégularisationMethod ): MonthState[] => { const updatedData = [...previousData] updatedData[monthIndex] = { @@ -130,8 +130,8 @@ export const getDataAfterRémunérationChange = ( dottedName, updatedData, year, - régularisationMethod, - engine + engine, + régularisationMethod ) } @@ -141,8 +141,8 @@ export const getDataAfterOptionsChange = ( options: Options, previousData: MonthState[], year: number, - régularisationMethod: RégularisationMethod, - engine: Engine + engine: Engine, + régularisationMethod?: RégularisationMethod ): MonthState[] => { const updatedData = [...previousData] updatedData[monthIndex] = { @@ -154,8 +154,8 @@ export const getDataAfterOptionsChange = ( dottedName, updatedData, year, - régularisationMethod, - engine + engine, + régularisationMethod ) } @@ -253,8 +253,8 @@ export const reevaluateRéductionMoisParMois = ( dottedName: RéductionDottedName, data: MonthState[], year: number, - régularisationMethod: RégularisationMethod, - engine: Engine + engine: Engine, + régularisationMethod?: RégularisationMethod ): MonthState[] => { const totalRémunérationBrute = sumAll( data.map((monthData) => monthData.rémunérationBrute) @@ -345,7 +345,7 @@ export const reevaluateRéductionMoisParMois = ( engine ) } - } else if (régularisationMethod === 'annuelle') { + } else { const date = getDateForContexte(monthIndex, year) réduction.value = getMonthlyRéduction( dottedName, @@ -355,7 +355,10 @@ export const reevaluateRéductionMoisParMois = ( engine ) - if (monthIndex === data.length - 1) { + if ( + régularisationMethod === 'annuelle' && + monthIndex === data.length - 1 + ) { // La régularisation annuelle est la différence entre la réduction calculée // pour la rémunération annuelle (comparée au SMIC annuel) et la somme des réductions // déjà accordées.