feat: ajoute un bouton pour choisir la méthode de régularisation

pull/3230/head
Alice Dahan 2024-11-15 16:55:51 +01:00 committed by liliced
parent 64027a405e
commit 09e7426056
2 changed files with 51 additions and 10 deletions

View File

@ -22,6 +22,7 @@ import { ajusteLaSituation } from '@/store/actions/actions'
import { situationSelector } from '@/store/selectors/simulationSelectors'
import EffectifSwitch from './components/EffectifSwitch'
import RégularisationSwitch from './components/RégularisationSwitch'
import Répartition from './components/Répartition'
import Warnings from './components/Warnings'
import WarningSalaireTrans from './components/WarningSalaireTrans'
@ -32,6 +33,7 @@ import {
MonthState,
réductionGénéraleDottedName,
reevaluateRéductionGénéraleMoisParMois,
RégularisationMethod,
rémunérationBruteDottedName,
} from './utils'
@ -56,6 +58,9 @@ export default function RéductionGénéraleSimulation() {
setMonthByMonth(unit === '€')
}, [])
const [régularisationMethod, setRégularisationMethod] =
useState<RégularisationMethod>('progressive')
return (
<>
<Simulation afterQuestionsSlot={<SelectSimulationYear />}>
@ -65,10 +70,15 @@ export default function RéductionGénéraleSimulation() {
legend="Salaire brut du salarié et réduction générale applicable"
toggles={
<>
<RégularisationSwitch
régularisationMethod={régularisationMethod}
setRégularisationMethod={setRégularisationMethod}
/>
<EffectifSwitch />
<PeriodSwitch periods={periods} onSwitch={onPeriodSwitch} />
</>
}
régularisationMethod={régularisationMethod}
/>
</Simulation>
</>
@ -77,17 +87,14 @@ export default function RéductionGénéraleSimulation() {
function RéductionGénéraleSimulationGoals({
monthByMonth,
toggles = (
<>
<EffectifSwitch />
<PeriodSwitch />
</>
),
toggles,
legend,
régularisationMethod,
}: {
monthByMonth: boolean
toggles?: React.ReactNode
legend: string
régularisationMethod: RégularisationMethod
}) {
const engine = useEngine()
const dispatch = useDispatch()
@ -109,10 +116,14 @@ function RéductionGénéraleSimulationGoals({
const situation = useSelector(situationSelector)
useEffect(() => {
setData((previousData) =>
reevaluateRéductionGénéraleMoisParMois(previousData, engine)
)
}, [engine, situation])
setData((previousData) => {
return reevaluateRéductionGénéraleMoisParMois(
previousData,
engine,
régularisationMethod
)
})
}, [engine, situation, régularisationMethod])
const updateRémunérationBruteAnnuelle = (data: MonthState[]): void => {
const rémunérationBruteAnnuelle = data.reduce(

View File

@ -0,0 +1,30 @@
import { useTranslation } from 'react-i18next'
import { Radio, ToggleGroup } from '@/design-system'
import { RégularisationMethod } from '../utils'
type Props = {
régularisationMethod: RégularisationMethod
setRégularisationMethod: (value: RégularisationMethod) => void
}
export default function RégularisationSwitch({
régularisationMethod,
setRégularisationMethod,
}: Props) {
const { t } = useTranslation()
return (
<ToggleGroup
value={régularisationMethod}
onChange={(value) => {
setRégularisationMethod(value as RégularisationMethod)
}}
aria-label={t('Type de régularisation')}
>
<Radio value="annuelle">{t('Régularisation annuelle')}</Radio>
<Radio value="progressive">{t('Régularisation progressive')}</Radio>
</ToggleGroup>
)
}