Skip to content

Commit 91991b2

Browse files
♻️ Rydd opp i Form Fields-typen og bruk hele typen til/fra atom'et
Co-authored-by: Trine Linderud <[email protected]>
1 parent 46b17b1 commit 91991b2

File tree

4 files changed

+55
-89
lines changed

4 files changed

+55
-89
lines changed

src/routes/saksbilde/sykepengegrunnlag/skjønnsfastsetting/form/arbeidsgivere/ArbeidsgiverRad.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface ArbeidsgiverRadProps {
1212
arbeidsgiverNavn?: string;
1313
organisasjonsnummer: string;
1414
årsinntekt: number;
15-
type?: Skjønnsfastsettingstype;
15+
type: Skjønnsfastsettingstype | null;
1616
årligField: UseFormRegisterReturn;
1717
orgnummerField: UseFormRegisterReturn;
1818
antallArbeidsgivere: number;

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

+21-50
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import { SkjønnsfastsettingType } from '@saksbilde/sykepengegrunnlag/skjønnsfa
2323
import { SkjønnsfastsettingÅrsak } from '@saksbilde/sykepengegrunnlag/skjønnsfastsetting/form/SkjønnsfastsettingÅrsak';
2424
import { SkjønnsfastsettingArbeidsgivere } from '@saksbilde/sykepengegrunnlag/skjønnsfastsetting/form/arbeidsgivere/SkjønnsfastsettingArbeidsgivere';
2525
import {
26-
ArbeidsgiverForm,
2726
Skjønnsfastsettingstype,
2827
usePostSkjønnsfastsattSykepengegrunnlag,
2928
} from '@saksbilde/sykepengegrunnlag/skjønnsfastsetting/skjønnsfastsetting';
@@ -36,30 +35,6 @@ import styles from './SkjønnsfastsettingForm.module.css';
3635

3736
const skjemaFamily = atomFamily((_skjæringstidspunkt: string) => atom<Maybe<SkjønnsfastsettingFormFields>>(null));
3837

39-
export const useSkjønnsfastsettelseFormState = (skjæringstidspunkt: string) =>
40-
useAtomValue(skjemaFamily(skjæringstidspunkt));
41-
42-
export const useSetSkjønnsfastsettelseFormState = (skjæringstidspunkt: string) => {
43-
const setState = useSetAtom(skjemaFamily(skjæringstidspunkt));
44-
return (årsak: string, begrunnelseFritekst: string, type?: Skjønnsfastsettingstype) => {
45-
setState((prevState) => {
46-
return {
47-
...(prevState ?? defaultState),
48-
type: type,
49-
årsak: årsak,
50-
begrunnelseFritekst: begrunnelseFritekst,
51-
} as SkjønnsfastsettingFormFields;
52-
});
53-
};
54-
};
55-
56-
const defaultState: SkjønnsfastsettingFormFields = {
57-
begrunnelseFritekst: '',
58-
type: undefined,
59-
årsak: '',
60-
arbeidsgivere: [],
61-
};
62-
6338
export const useAktiveArbeidsgivere = (
6439
person: PersonFragment,
6540
period: BeregnetPeriodeFragment | GhostPeriodeFragment,
@@ -86,23 +61,15 @@ function useFormDefaults(
8661
aktiveArbeidsgivereInntekter: Arbeidsgiverinntekt[],
8762
forrigeSkjønnsfastsettelse: Sykepengegrunnlagskjonnsfastsetting | null,
8863
): SkjønnsfastsettingFormFields {
89-
const skjønnsfastsettelseFormState = useSkjønnsfastsettelseFormState(period.skjaeringstidspunkt);
64+
const skjønnsfastsettelseFormState = useAtomValue(skjemaFamily(period.skjaeringstidspunkt));
9065
if (skjønnsfastsettelseFormState) {
91-
return {
92-
begrunnelseFritekst: skjønnsfastsettelseFormState.begrunnelseFritekst,
93-
type: skjønnsfastsettelseFormState.type,
94-
årsak: skjønnsfastsettelseFormState.årsak,
95-
arbeidsgivere: aktiveArbeidsgivereInntekter.map((inntekt) => ({
96-
organisasjonsnummer: inntekt.arbeidsgiver,
97-
årlig: 0,
98-
})),
99-
};
66+
return skjønnsfastsettelseFormState;
10067
} else {
10168
if (forrigeSkjønnsfastsettelse && !forrigeSkjønnsfastsettelse.ferdigstilt) {
10269
return {
10370
begrunnelseFritekst: forrigeSkjønnsfastsettelse.skjonnsfastsatt.begrunnelseFritekst ?? '',
104-
type: mapType(forrigeSkjønnsfastsettelse.skjonnsfastsatt.type) ?? '',
105-
årsak: forrigeSkjønnsfastsettelse.skjonnsfastsatt.arsak ?? '',
71+
type: mapType(forrigeSkjønnsfastsettelse.skjonnsfastsatt.type),
72+
årsak: forrigeSkjønnsfastsettelse.skjonnsfastsatt.arsak,
10673
arbeidsgivere: aktiveArbeidsgivereInntekter.map((inntekt) => ({
10774
organisasjonsnummer: inntekt.arbeidsgiver,
10875
årlig: 0,
@@ -111,7 +78,7 @@ function useFormDefaults(
11178
} else {
11279
return {
11380
begrunnelseFritekst: '',
114-
type: undefined,
81+
type: null,
11582
årsak: '',
11683
arbeidsgivere: aktiveArbeidsgivereInntekter.map((inntekt) => ({
11784
organisasjonsnummer: inntekt.arbeidsgiver,
@@ -135,12 +102,17 @@ const mapType = (type: Maybe<Skjonnsfastsettingstype> = Skjonnsfastsettingstype.
135102
};
136103

137104
export interface SkjønnsfastsettingFormFields {
138-
arbeidsgivere: ArbeidsgiverForm[];
105+
arbeidsgivere: SkjønnsfastsettingFormFieldsArbeidsgiver[];
139106
årsak: string;
140-
type?: Skjønnsfastsettingstype;
107+
type: Skjønnsfastsettingstype | null;
141108
begrunnelseFritekst: string;
142109
}
143110

111+
export interface SkjønnsfastsettingFormFieldsArbeidsgiver {
112+
organisasjonsnummer: string;
113+
årlig: number;
114+
}
115+
144116
interface SkjønnsfastsettingFormProps {
145117
person: PersonFragment;
146118
periode: BeregnetPeriodeFragment | GhostPeriodeFragment;
@@ -177,7 +149,6 @@ export const SkjønnsfastsettingForm = ({
177149
);
178150
const erBeslutteroppgave = isBeregnetPeriode(periode) && (periode.totrinnsvurdering?.erBeslutteroppgave ?? false);
179151
const feiloppsummeringRef = useRef<HTMLDivElement>(null);
180-
const setSkjønnsfastsettelseFormState = useSetSkjønnsfastsettelseFormState(periode.skjaeringstidspunkt);
181152
const avrundetSammenligningsgrunnlag = avrundetToDesimaler(sammenligningsgrunnlag);
182153
const cancelEditing = () => {
183154
setEditing(false);
@@ -203,24 +174,24 @@ export const SkjønnsfastsettingForm = ({
203174
control: control,
204175
});
205176

206-
const watchedValues = watch(['årsak', 'begrunnelseFritekst', 'type']);
207-
208-
const prevValues = useRef(watchedValues);
177+
const watchedFormFields = watch();
178+
const prevFormFields = useRef(watchedFormFields);
209179

180+
const setFormFields = useSetAtom(skjemaFamily(periode.skjaeringstidspunkt));
210181
useEffect(() => {
211-
if (JSON.stringify(prevValues.current) !== JSON.stringify(watchedValues)) {
212-
setSkjønnsfastsettelseFormState(watchedValues[0], watchedValues[1], watchedValues[2]);
213-
prevValues.current = watchedValues;
182+
if (JSON.stringify(prevFormFields.current) !== JSON.stringify(watchedFormFields)) {
183+
setFormFields(watchedFormFields);
184+
prevFormFields.current = watchedFormFields;
214185
}
215-
}, [watchedValues, setSkjønnsfastsettelseFormState]);
186+
}, [watchedFormFields, setFormFields]);
216187

217188
const valgtMal = maler.find((it) => it.arsak === valgtÅrsak);
218189

219190
const harFeil = !formState.isValid && formState.isSubmitted;
220191

221192
const visFeilOppsummering = harFeil && Object.entries(formState.errors).length > 0;
222193
const sykepengegrunnlagEndring = watch('arbeidsgivere')?.reduce(
223-
(a: number, b: ArbeidsgiverForm) => +a + +b.årlig,
194+
(a: number, b: SkjønnsfastsettingFormFieldsArbeidsgiver) => +a + +b.årlig,
224195
0.0,
225196
);
226197

@@ -324,7 +295,7 @@ const valgtInntekt = (
324295
inntekt: Arbeidsgiverinntekt,
325296
antallAktiveArbeidsgivere: number,
326297
totaltSammenligningsgrunnlag: number,
327-
type?: Skjønnsfastsettingstype,
298+
type: Skjønnsfastsettingstype | null,
328299
): number => {
329300
switch (type) {
330301
case Skjønnsfastsettingstype.OMREGNET_ÅRSINNTEKT:

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

+33-33
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import { SkjønnsfastsettingMal } from '@external/sanity';
22
import { Arbeidsgiverinntekt, Maybe, PersonFragment } from '@io/graphql';
3-
import {
4-
ArbeidsgiverForm,
5-
Skjønnsfastsettingstype,
6-
} from '@saksbilde/sykepengegrunnlag/skjønnsfastsetting/skjønnsfastsetting';
3+
import { Skjønnsfastsettingstype } from '@saksbilde/sykepengegrunnlag/skjønnsfastsetting/skjønnsfastsetting';
74
import { SkjønnsfastsattSykepengegrunnlagDTO, SkjønnsfastsettingstypeDTO } from '@typer/overstyring';
85
import { ActivePeriod } from '@typer/shared';
96
import { toKronerOgØre } from '@utils/locale';
107
import { finnFørsteVedtaksperiodeIdPåSkjæringstidspunkt } from '@utils/sykefraværstilfelle';
118
import { isBeregnetPeriode } from '@utils/typeguards';
129

13-
import { SkjønnsfastsettingFormFields } from './SkjønnsfastsettingForm';
10+
import { SkjønnsfastsettingFormFields, SkjønnsfastsettingFormFieldsArbeidsgiver } from './SkjønnsfastsettingForm';
1411

1512
interface InitierendeVedtaksperiodeForArbeidsgiver {
1613
arbeidsgiver: string;
@@ -58,34 +55,37 @@ export const skjønnsfastsettingFormToDto = (
5855
fødselsnummer: person.fodselsnummer,
5956
aktørId: person.aktorId,
6057
skjæringstidspunkt: period.skjaeringstidspunkt,
61-
arbeidsgivere: form.arbeidsgivere.map(({ årlig, organisasjonsnummer }: ArbeidsgiverForm) => ({
62-
organisasjonsnummer: organisasjonsnummer,
63-
årlig: årlig,
64-
fraÅrlig: inntekter.find((it) => it.arbeidsgiver === organisasjonsnummer)?.omregnetArsinntekt?.belop ?? 0,
65-
årsak: form.årsak,
66-
type:
67-
form.type === undefined
68-
? SkjønnsfastsettingstypeDTO.ANNET
69-
: form.type === Skjønnsfastsettingstype.RAPPORTERT_ÅRSINNTEKT
70-
? SkjønnsfastsettingstypeDTO.RAPPORTERT_ÅRSINNTEKT
71-
: form.type === Skjønnsfastsettingstype.OMREGNET_ÅRSINNTEKT
72-
? SkjønnsfastsettingstypeDTO.OMREGNET_ÅRSINNTEKT
73-
: SkjønnsfastsettingstypeDTO.ANNET,
74-
begrunnelseMal: malFraSanity?.begrunnelse
75-
.replace('${omregnetÅrsinntekt}', toKronerOgØre(omregnetÅrsinntekt))
76-
.replace('${omregnetMånedsinntekt}', toKronerOgØre(omregnetÅrsinntekt / 12))
77-
.replace('${sammenligningsgrunnlag}', toKronerOgØre(sammenligningsgrunnlag)),
78-
begrunnelseFritekst: form.begrunnelseFritekst,
79-
lovhjemmel: { ...malFraSanity.lovhjemmel },
80-
begrunnelseKonklusjon: malFraSanity?.konklusjon.replace(
81-
'${skjønnsfastsattÅrsinntekt}',
82-
toKronerOgØre(skjønnsfastsatt),
83-
),
84-
initierendeVedtaksperiodeId:
85-
førsteVilkårsprøvdePeriodePåSkjæringstidspunkt.filter(
86-
(it) => it.arbeidsgiver === organisasjonsnummer,
87-
)[0]?.initierendeVedtaksperiodeId ?? null,
88-
})),
58+
arbeidsgivere: form.arbeidsgivere.map(
59+
({ årlig, organisasjonsnummer }: SkjønnsfastsettingFormFieldsArbeidsgiver) => ({
60+
organisasjonsnummer: organisasjonsnummer,
61+
årlig: årlig,
62+
fraÅrlig:
63+
inntekter.find((it) => it.arbeidsgiver === organisasjonsnummer)?.omregnetArsinntekt?.belop ?? 0,
64+
årsak: form.årsak,
65+
type:
66+
form.type === undefined
67+
? SkjønnsfastsettingstypeDTO.ANNET
68+
: form.type === Skjønnsfastsettingstype.RAPPORTERT_ÅRSINNTEKT
69+
? SkjønnsfastsettingstypeDTO.RAPPORTERT_ÅRSINNTEKT
70+
: form.type === Skjønnsfastsettingstype.OMREGNET_ÅRSINNTEKT
71+
? SkjønnsfastsettingstypeDTO.OMREGNET_ÅRSINNTEKT
72+
: SkjønnsfastsettingstypeDTO.ANNET,
73+
begrunnelseMal: malFraSanity?.begrunnelse
74+
.replace('${omregnetÅrsinntekt}', toKronerOgØre(omregnetÅrsinntekt))
75+
.replace('${omregnetMånedsinntekt}', toKronerOgØre(omregnetÅrsinntekt / 12))
76+
.replace('${sammenligningsgrunnlag}', toKronerOgØre(sammenligningsgrunnlag)),
77+
begrunnelseFritekst: form.begrunnelseFritekst,
78+
lovhjemmel: { ...malFraSanity.lovhjemmel },
79+
begrunnelseKonklusjon: malFraSanity?.konklusjon.replace(
80+
'${skjønnsfastsattÅrsinntekt}',
81+
toKronerOgØre(skjønnsfastsatt),
82+
),
83+
initierendeVedtaksperiodeId:
84+
førsteVilkårsprøvdePeriodePåSkjæringstidspunkt.filter(
85+
(it) => it.arbeidsgiver === organisasjonsnummer,
86+
)[0]?.initierendeVedtaksperiodeId ?? null,
87+
}),
88+
),
8989
vedtaksperiodeId: finnFørsteVedtaksperiodeIdPåSkjæringstidspunkt(person.arbeidsgivere, period),
9090
};
9191
};

src/routes/saksbilde/sykepengegrunnlag/skjønnsfastsetting/skjønnsfastsetting.ts

-5
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ export enum Skjønnsfastsettingstype {
2525
ANNET = 'ANNET',
2626
}
2727

28-
export interface ArbeidsgiverForm {
29-
organisasjonsnummer: string;
30-
årlig: number;
31-
}
32-
3328
export const usePostSkjønnsfastsattSykepengegrunnlag = (onFerdigKalkulert: () => void) => {
3429
const addToast = useAddToast();
3530
const removeToast = useRemoveToast();

0 commit comments

Comments
 (0)