feat: calcule la RGCP mois par mois à la saisie
parent
7095e3ea40
commit
4b6d5796d3
|
@ -23,6 +23,7 @@ import EffectifSwitch from './components/EffectifSwitch'
|
|||
import RéductionGénéraleMoisParMois from './RéductionGénéraleMoisParMois'
|
||||
import {
|
||||
getInitialRéductionGénéraleMoisParMois,
|
||||
getRéductionGénéraleFromRémunération,
|
||||
MonthState,
|
||||
reevaluateRéductionGénéraleMoisParMois,
|
||||
rémunérationBruteDottedName,
|
||||
|
@ -114,10 +115,31 @@ function RéductionGénéraleSimulationGoals({
|
|||
)
|
||||
}, [engine, situation])
|
||||
|
||||
const onRémunérationChange = (
|
||||
monthIndex: number,
|
||||
rémunérationBrute: number
|
||||
) => {
|
||||
setData((previousData) => {
|
||||
const updatedData = [...previousData]
|
||||
updatedData[monthIndex] = {
|
||||
rémunérationBrute,
|
||||
réductionGénérale: getRéductionGénéraleFromRémunération(
|
||||
engine,
|
||||
rémunérationBrute
|
||||
),
|
||||
}
|
||||
|
||||
return updatedData
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<SimulationGoals toggles={toggles} legend={legend}>
|
||||
{monthByMonth ? (
|
||||
<RéductionGénéraleMoisParMois data={réductionGénéraleMoisParMoisData} />
|
||||
<RéductionGénéraleMoisParMois
|
||||
data={réductionGénéraleMoisParMoisData}
|
||||
onChange={onRémunérationChange}
|
||||
/>
|
||||
) : (
|
||||
<>
|
||||
<SimulationGoal
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { formatValue } from 'publicodes'
|
||||
import { formatValue, PublicodesExpression } from 'publicodes'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { styled } from 'styled-components'
|
||||
|
||||
|
@ -8,10 +8,17 @@ import { useEngine } from '@/components/utils/EngineContext'
|
|||
|
||||
import { MonthState, rémunérationBruteDottedName } from './utils'
|
||||
|
||||
type RémunérationBruteInput = {
|
||||
unité: string
|
||||
valeur: number
|
||||
}
|
||||
|
||||
export default function RéductionGénéraleMoisParMois({
|
||||
data,
|
||||
onChange,
|
||||
}: {
|
||||
data: MonthState[]
|
||||
onChange: (monthIndex: number, rémunérationBrute: number) => void
|
||||
}) {
|
||||
const engine = useEngine()
|
||||
const { t, i18n } = useTranslation()
|
||||
|
@ -33,7 +40,12 @@ export default function RéductionGénéraleMoisParMois({
|
|||
t('décembre'),
|
||||
]
|
||||
|
||||
const onRémunérationChange = () => {}
|
||||
const onRémunérationChange = (
|
||||
monthIndex: number,
|
||||
rémunérationBrute: RémunérationBruteInput
|
||||
) => {
|
||||
onChange(monthIndex, rémunérationBrute.valeur)
|
||||
}
|
||||
|
||||
// TODO: enlever les 4 premières props après résolution de #3123
|
||||
const ruleInputProps = {
|
||||
|
@ -87,7 +99,12 @@ export default function RéductionGénéraleMoisParMois({
|
|||
)}-${monthIndex}`}
|
||||
aria-label={`${engine.getRule(rémunérationBruteDottedName)
|
||||
?.title} (${monthName})`}
|
||||
onChange={onRémunérationChange}
|
||||
onChange={(rémunérationBrute?: PublicodesExpression) =>
|
||||
onRémunérationChange(
|
||||
monthIndex,
|
||||
rémunérationBrute as RémunérationBruteInput
|
||||
)
|
||||
}
|
||||
value={data[monthIndex].rémunérationBrute}
|
||||
/>
|
||||
</td>
|
||||
|
|
Loading…
Reference in New Issue