Skip to content

Commit 7ce530d

Browse files
🐛 Tar vare på utfylt inntekt for skjønnsfastsetting ved navigering
Co-authored-by: Svein Elgstøen <[email protected]>
1 parent 5d27cd8 commit 7ce530d

File tree

1 file changed

+50
-40
lines changed

1 file changed

+50
-40
lines changed

src/routes/saksbilde/sykepengegrunnlag/skjønnsfastsetting/form/skjønnsfastsettingForm/SkjønnsfastsettingForm.tsx

+50-40
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,22 @@ function useFormDefaults(
5757
skjønnsfastsettelseFormState: Maybe<SkjønnsfastsettingFormFields>,
5858
aktiveArbeidsgivereInntekter: Arbeidsgiverinntekt[],
5959
forrigeSkjønnsfastsettelse: Sykepengegrunnlagskjonnsfastsetting | null,
60+
avrundetSammenligningsgrunnlag: number,
6061
): SkjønnsfastsettingFormFields {
6162
if (skjønnsfastsettelseFormState) {
6263
return skjønnsfastsettelseFormState;
6364
} else {
6465
if (forrigeSkjønnsfastsettelse && !forrigeSkjønnsfastsettelse.ferdigstilt) {
66+
const type = mapType(forrigeSkjønnsfastsettelse.skjonnsfastsatt.type);
6567
return {
6668
begrunnelseFritekst: forrigeSkjønnsfastsettelse.skjonnsfastsatt.begrunnelseFritekst ?? '',
67-
type: mapType(forrigeSkjønnsfastsettelse.skjonnsfastsatt.type),
69+
type: type,
6870
årsak: forrigeSkjønnsfastsettelse.skjonnsfastsatt.arsak,
69-
arbeidsgivere: aktiveArbeidsgivereInntekter.map((inntekt) => ({
70-
organisasjonsnummer: inntekt.arbeidsgiver,
71-
årlig: 0,
72-
})),
71+
arbeidsgivere: initielleInntektsutfyllinger(
72+
aktiveArbeidsgivereInntekter,
73+
avrundetSammenligningsgrunnlag,
74+
type,
75+
),
7376
};
7477
} else {
7578
return {
@@ -122,6 +125,38 @@ interface SkjønnsfastsettingFormProps {
122125
sisteSkjønnsfastsettelse: Sykepengegrunnlagskjonnsfastsetting | null;
123126
}
124127

128+
const initielleInntektsutfyllinger = (
129+
aktiveArbeidsgivereInntekter: Arbeidsgiverinntekt[],
130+
avrundetSammenligningsgrunnlag: number,
131+
valgtType: Skjønnsfastsettingstype | null,
132+
) =>
133+
aktiveArbeidsgivereInntekter?.map((inntekt) => ({
134+
organisasjonsnummer: inntekt.arbeidsgiver,
135+
årlig: initiellInntektsutfylling(
136+
inntekt,
137+
aktiveArbeidsgivereInntekter.length,
138+
avrundetSammenligningsgrunnlag,
139+
valgtType,
140+
),
141+
})) ?? [];
142+
143+
const initiellInntektsutfylling = (
144+
inntekt: Arbeidsgiverinntekt,
145+
antallAktiveArbeidsgivere: number,
146+
totaltSammenligningsgrunnlag: number,
147+
type: Skjønnsfastsettingstype | null,
148+
): number => {
149+
switch (type) {
150+
case Skjønnsfastsettingstype.OMREGNET_ÅRSINNTEKT:
151+
return avrundetToDesimaler(inntekt.omregnetArsinntekt?.belop ?? 0);
152+
case Skjønnsfastsettingstype.RAPPORTERT_ÅRSINNTEKT:
153+
return antallAktiveArbeidsgivere > 1 ? 0 : avrundetToDesimaler(totaltSammenligningsgrunnlag);
154+
case Skjønnsfastsettingstype.ANNET:
155+
default:
156+
return 0;
157+
}
158+
};
159+
125160
export const SkjønnsfastsettingForm = ({
126161
person,
127162
periode,
@@ -163,6 +198,7 @@ export const SkjønnsfastsettingForm = ({
163198
skjønnsfastsettelseFormState,
164199
aktiveArbeidsgivereInntekter,
165200
sisteSkjønnsfastsettelse,
201+
avrundetSammenligningsgrunnlag,
166202
),
167203
});
168204

@@ -172,6 +208,7 @@ export const SkjønnsfastsettingForm = ({
172208
name: 'type',
173209
control: control,
174210
});
211+
const prevValgtType = useRef(valgtType);
175212

176213
const valgtÅrsak = useWatch({
177214
name: 'årsak',
@@ -207,24 +244,14 @@ export const SkjønnsfastsettingForm = ({
207244
}, [onEndretSykepengegrunnlag, sykepengegrunnlagEndring]);
208245

209246
useEffect(() => {
210-
setValue(
211-
'arbeidsgivere',
212-
aktiveArbeidsgivereInntekter?.map((inntekt) => ({
213-
organisasjonsnummer: inntekt.arbeidsgiver,
214-
årlig: valgtInntekt(
215-
inntekt,
216-
aktiveArbeidsgivereInntekter.length,
217-
avrundetSammenligningsgrunnlag,
218-
valgtType,
219-
),
220-
})) ?? [],
221-
);
222-
/* eslint-disable-next-line react-hooks/exhaustive-deps --
223-
* Siden vi har designet formset som vi har må vi hacke valuen her.
224-
* Ideelt burde dette redesignes for å kunne sette value når formet
225-
* blir satt opp.
226-
**/
227-
}, [valgtType, avrundetSammenligningsgrunnlag, setValue]);
247+
if (prevValgtType.current !== valgtType) {
248+
setValue(
249+
'arbeidsgivere',
250+
initielleInntektsutfyllinger(aktiveArbeidsgivereInntekter, avrundetSammenligningsgrunnlag, valgtType),
251+
);
252+
prevValgtType.current = valgtType;
253+
}
254+
}, [valgtType, avrundetSammenligningsgrunnlag, setValue, aktiveArbeidsgivereInntekter]);
228255

229256
if (!aktiveArbeidsgivere || !aktiveArbeidsgivereInntekter) return null;
230257

@@ -294,23 +321,6 @@ interface RefMedId extends CustomElement<FieldValues> {
294321
id?: string;
295322
}
296323

297-
const valgtInntekt = (
298-
inntekt: Arbeidsgiverinntekt,
299-
antallAktiveArbeidsgivere: number,
300-
totaltSammenligningsgrunnlag: number,
301-
type: Skjønnsfastsettingstype | null,
302-
): number => {
303-
switch (type) {
304-
case Skjønnsfastsettingstype.OMREGNET_ÅRSINNTEKT:
305-
return avrundetToDesimaler(inntekt.omregnetArsinntekt?.belop ?? 0);
306-
case Skjønnsfastsettingstype.RAPPORTERT_ÅRSINNTEKT:
307-
return antallAktiveArbeidsgivere > 1 ? 0 : avrundetToDesimaler(totaltSammenligningsgrunnlag);
308-
case Skjønnsfastsettingstype.ANNET:
309-
default:
310-
return 0;
311-
}
312-
};
313-
314324
const formErrorsTilFeilliste = (errors: FieldErrors<SkjønnsfastsettingFormFields>): Skjemafeil[] =>
315325
Object.entries(errors).map(([id, error]) => ({
316326
id: (error?.ref as RefMedId)?.id ?? id,

0 commit comments

Comments
 (0)