@@ -57,19 +57,22 @@ function useFormDefaults(
57
57
skjønnsfastsettelseFormState : Maybe < SkjønnsfastsettingFormFields > ,
58
58
aktiveArbeidsgivereInntekter : Arbeidsgiverinntekt [ ] ,
59
59
forrigeSkjønnsfastsettelse : Sykepengegrunnlagskjonnsfastsetting | null ,
60
+ avrundetSammenligningsgrunnlag : number ,
60
61
) : SkjønnsfastsettingFormFields {
61
62
if ( skjønnsfastsettelseFormState ) {
62
63
return skjønnsfastsettelseFormState ;
63
64
} else {
64
65
if ( forrigeSkjønnsfastsettelse && ! forrigeSkjønnsfastsettelse . ferdigstilt ) {
66
+ const type = mapType ( forrigeSkjønnsfastsettelse . skjonnsfastsatt . type ) ;
65
67
return {
66
68
begrunnelseFritekst : forrigeSkjønnsfastsettelse . skjonnsfastsatt . begrunnelseFritekst ?? '' ,
67
- type : mapType ( forrigeSkjønnsfastsettelse . skjonnsfastsatt . type ) ,
69
+ type : type ,
68
70
å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
+ ) ,
73
76
} ;
74
77
} else {
75
78
return {
@@ -122,6 +125,38 @@ interface SkjønnsfastsettingFormProps {
122
125
sisteSkjønnsfastsettelse : Sykepengegrunnlagskjonnsfastsetting | null ;
123
126
}
124
127
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
+
125
160
export const SkjønnsfastsettingForm = ( {
126
161
person,
127
162
periode,
@@ -163,6 +198,7 @@ export const SkjønnsfastsettingForm = ({
163
198
skjønnsfastsettelseFormState ,
164
199
aktiveArbeidsgivereInntekter ,
165
200
sisteSkjønnsfastsettelse ,
201
+ avrundetSammenligningsgrunnlag ,
166
202
) ,
167
203
} ) ;
168
204
@@ -172,6 +208,7 @@ export const SkjønnsfastsettingForm = ({
172
208
name : 'type' ,
173
209
control : control ,
174
210
} ) ;
211
+ const prevValgtType = useRef ( valgtType ) ;
175
212
176
213
const valgtÅrsak = useWatch ( {
177
214
name : 'årsak' ,
@@ -207,24 +244,14 @@ export const SkjønnsfastsettingForm = ({
207
244
} , [ onEndretSykepengegrunnlag , sykepengegrunnlagEndring ] ) ;
208
245
209
246
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 ] ) ;
228
255
229
256
if ( ! aktiveArbeidsgivere || ! aktiveArbeidsgivereInntekter ) return null ;
230
257
@@ -294,23 +321,6 @@ interface RefMedId extends CustomElement<FieldValues> {
294
321
id ?: string ;
295
322
}
296
323
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
-
314
324
const formErrorsTilFeilliste = ( errors : FieldErrors < SkjønnsfastsettingFormFields > ) : Skjemafeil [ ] =>
315
325
Object . entries ( errors ) . map ( ( [ id , error ] ) => ( {
316
326
id : ( error ?. ref as RefMedId ) ?. id ?? id ,
0 commit comments