feat(lodeom): affiche un message au lieu du simulateur en l'absence de zone et barème

feat/2909-4-zone-switch
Alice Dahan 2024-12-27 15:38:05 +01:00
parent 5793399ec5
commit 90a44f3382
4 changed files with 67 additions and 37 deletions

View File

@ -15,8 +15,20 @@ describe('Simulateur lodeom', { testIsolation: false }, function () {
cy.contains('Rémunération brute')
})
it('should allow to change time period', function () {
it('should display a warning when no zone is selected', function () {
cy.contains(
'Veuillez sélectionner une localisation et un barème pour accéder au simulateur.'
)
})
it('should display a warning when no scale is selected', function () {
cy.contains('Guadeloupe, Guyane, Martinique, La Réunion').click()
cy.contains(
'Veuillez sélectionner une localisation et un barème pour accéder au simulateur.'
)
})
it('should allow to change time period', function () {
cy.contains('Barème de compétitivité').click()
cy.contains('Exonération annuelle').click()
cy.get(inputSelector).first().type('{selectall}42000')

View File

@ -1465,6 +1465,7 @@ pages:
warnings:
JEI: The Lodeom exemption cannot be combined with the Young Innovative Company
(JEI) exemption.
barème: Please select a location and a scale to access the simulator.
salaire:
zone-deux:
barème-moins-de-11-salariés: The scale for employers with fewer than 11

View File

@ -1558,6 +1558,8 @@ pages:
warnings:
JEI: L'exonération Lodeom n'est pas cumulable avec l'exonération Jeune
Entreprise Innovante (JEI).
barème: Veuillez sélectionner une localisation et un barème pour accéder au
simulateur.
salaire:
zone-deux:
barème-moins-de-11-salariés: Le barème pour les employeurs de moins de 11

View File

@ -7,6 +7,9 @@ import RéductionMoisParMois from '@/components/RéductionDeCotisations/Réducti
import { SimulationGoals } from '@/components/Simulation'
import { useEngine } from '@/components/utils/EngineContext'
import useYear from '@/components/utils/useYear'
import { Message } from '@/design-system'
import { Body } from '@/design-system/typography/paragraphs'
import { useBarèmeLodeom } from '@/hooks/useBarèmeLodeom'
import { useZoneLodeom } from '@/hooks/useZoneLodeom'
import { situationSelector } from '@/store/selectors/simulationSelectors'
import {
@ -42,6 +45,7 @@ export default function LodeomSimulationGoals({
const situation = useSelector(situationSelector) as SituationType
const previousSituation = useRef(situation)
const currentZone = useZoneLodeom()
const currentBarème = useBarèmeLodeom()
const { t } = useTranslation()
const codeRéduction = engine.evaluate(
@ -110,43 +114,54 @@ export default function LodeomSimulationGoals({
return (
<SimulationGoals toggles={toggles} legend={legend}>
{monthByMonth ? (
<RéductionMoisParMois
dottedName={lodeomDottedName}
data={lodeomMoisParMoisData}
onRémunérationChange={onRémunérationChange}
onOptionsChange={onOptionsChange}
caption={t(
'pages.simulateurs.lodeom.month-by-month.caption',
'Exonération Lodeom mois par mois :'
)}
warnings={<Warnings />}
warningCondition={`${lodeomDottedName} = 0`}
warningTooltip={<WarningSalaireTrans />}
codeRéduction={
codeRéduction &&
t(`code {{ code }}`, {
code: codeRéduction,
})
}
codeRégularisation={
codeRégularisation &&
t(`code {{ code }}`, {
code: codeRégularisation,
})
}
withRépartitionAndRégularisation={currentZone === 'zone un'}
/>
) : (
<RéductionBasique
dottedName={lodeomDottedName}
onUpdate={initializeLodeomMoisParMoisData}
warnings={<Warnings />}
warningCondition={`${lodeomDottedName} = 0`}
warningMessage={<WarningSalaireTrans />}
withRépartition={currentZone === 'zone un'}
/>
{!currentBarème && (
<Message type="info">
<Body>
{t(
'pages.simulateurs.lodeom.warnings.barème',
'Veuillez sélectionner une localisation et un barème pour accéder au simulateur.'
)}
</Body>
</Message>
)}
{currentBarème &&
(monthByMonth ? (
<RéductionMoisParMois
dottedName={lodeomDottedName}
data={lodeomMoisParMoisData}
onRémunérationChange={onRémunérationChange}
onOptionsChange={onOptionsChange}
caption={t(
'pages.simulateurs.lodeom.month-by-month.caption',
'Exonération Lodeom mois par mois :'
)}
warnings={<Warnings />}
warningCondition={`${lodeomDottedName} = 0`}
warningTooltip={<WarningSalaireTrans />}
codeRéduction={
codeRéduction &&
t(`code {{ code }}`, {
code: codeRéduction,
})
}
codeRégularisation={
codeRégularisation &&
t(`code {{ code }}`, {
code: codeRégularisation,
})
}
withRépartitionAndRégularisation={currentZone === 'zone un'}
/>
) : (
<RéductionBasique
dottedName={lodeomDottedName}
onUpdate={initializeLodeomMoisParMoisData}
warnings={<Warnings />}
warningCondition={`${lodeomDottedName} = 0`}
warningMessage={<WarningSalaireTrans />}
withRépartition={currentZone === 'zone un'}
/>
))}
</SimulationGoals>
)
}