Skip to content

Commit e1359ab

Browse files
authored
Tsff 1212 slå sammen overlappende perioder (#7217)
* Visuelle justeringer * Justeringer i overlappende saker - Redaksjonelle endringer - Bytte til dayjs - Fiks bug i datovelger, hvor man bare kunne velge enkelte dager og ikke perioder * Update package.json * fjern utkommentert kode * Fjerne ReadMore Feil sted * Justerer så perioder som har tilstøtende perioder også kan slettes * TSFF-1213 - Eksplisitt sette uttaksgrad til 0 om INGEN_UTTAK_I_PERIODEN * Ikke tillate 0 som verdi om valget er satt til INGEN_UTTAK_I_PERIODEN
1 parent 337be58 commit e1359ab

File tree

2 files changed

+19
-26
lines changed

2 files changed

+19
-26
lines changed

packages/v2/gui/src/prosess/uttak/vurder-overlappende-sak/VurderOverlappendePeriodeForm.tsx

+13-19
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { useEffect, useState, type FC } from 'react';
22
import { useFormContext, type FieldArrayWithId, type UseFieldArrayReplace } from 'react-hook-form';
33
import dayjs from 'dayjs';
4-
import { formatPeriod } from '@k9-sak-web/lib/dateUtils/dateUtils.js';
54
import { ScissorsIcon, TrashIcon } from '@navikt/aksel-icons';
65
import {
76
Button,
@@ -22,37 +21,30 @@ import styles from './VurderOverlappendeSak.module.css';
2221

2322
interface Props {
2423
index: number;
25-
originaleOverlappendePerioder: { fom: string; tom: string }[];
2624
readOnly: boolean;
2725
fields: FieldArrayWithId<VurderOverlappendeSakFormData, 'perioder', 'id'>[];
2826
replace: UseFieldArrayReplace<VurderOverlappendeSakFormData, 'perioder'>;
2927
}
3028

31-
const VurderOverlappendePeriodeForm: FC<Props> = ({
32-
index,
33-
originaleOverlappendePerioder,
34-
readOnly,
35-
fields,
36-
replace,
37-
}) => {
29+
const VurderOverlappendePeriodeForm: FC<Props> = ({ index, readOnly, fields, replace }) => {
3830
const {
3931
watch,
4032
formState: { errors },
4133
register,
4234
setValue,
4335
getValues,
4436
} = useFormContext<VurderOverlappendeSakFormData>();
45-
const fom = getValues(`perioder.${index}.periode.fom`);
46-
const tom = getValues(`perioder.${index}.periode.tom`);
37+
const fom = dayjs(getValues(`perioder.${index}.periode.fom`));
38+
const tom = dayjs(getValues(`perioder.${index}.periode.tom`));
4739
const { splittPeriode, slettPeriode } = useOverlappendeSakUtils(fields, replace);
4840
const [visDatoVelger, setVisDatovelger] = useState<boolean>(false);
4941
const [skalViseSkjema, setSkalViseSkjema] = useState<boolean>(false);
5042

51-
const harSplittedePerioder = !originaleOverlappendePerioder.some(originalPeriode => {
52-
return dayjs(originalPeriode.fom).isSame(fom) && dayjs(originalPeriode.tom).isSame(tom);
53-
});
54-
const kanSlettes = harSplittedePerioder && !readOnly;
55-
const kanSplittes = !dayjs(fom).isSame(tom) && !readOnly;
43+
const harTilstøtendePeriode =
44+
(index < fields.length - 1 && tom.isSame(dayjs(fields[index + 1]?.periode.fom).subtract(1, 'day'))) ||
45+
(index > 0 && fom.isSame(dayjs(fields[index - 1]?.periode.tom).add(1, 'day')));
46+
const kanSlettes = harTilstøtendePeriode && !readOnly;
47+
const kanSplittes = !fom.isSame(tom) && !readOnly;
5648
const watchValg = watch(`perioder.${index}.valg`);
5749
const erEndretAutomatisk = getValues(`perioder.${index}.endretAutomatisk`);
5850
const [velgDato, setVelgDato] = useState<number>(0);
@@ -78,7 +70,9 @@ const VurderOverlappendePeriodeForm: FC<Props> = ({
7870
as="span"
7971
weight="semibold"
8072
className={erEndretAutomatisk ? styles['uttaksPeriodeEndret'] : ''}
81-
>{`${formatPeriod(fom || '', tom || '')}`}</BodyShort>
73+
>
74+
{fom.format('DD.MM.YYYY') || ''} - {tom.format('DD.MM.YYYY') || ''}
75+
</BodyShort>
8276
</BodyShort>
8377
{kanSplittes && (
8478
<Button
@@ -147,9 +141,9 @@ const VurderOverlappendePeriodeForm: FC<Props> = ({
147141
<Modal.Body>
148142
<DatePicker.Standalone
149143
dropdownCaption
150-
defaultMonth={new Date(fom)}
144+
defaultMonth={fom.toDate()}
151145
mode="range"
152-
disabled={[{ before: new Date(fom) }, { after: new Date(tom) }]}
146+
disabled={[{ before: fom.toDate() }, { after: tom.toDate() }]}
153147
onSelect={(val: undefined | { from: Date | undefined; to?: Date | undefined }) => {
154148
if (velgDato === 0) setVelgDato(1);
155149
if (velgDato === 1) {

packages/v2/gui/src/prosess/uttak/vurder-overlappende-sak/VurderOverlappendeSak.tsx

+6-7
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,6 @@ const VurderOverlappendeSak: FC<Props> = ({ behandling, aksjonspunkt, api, oppda
7373
const [readOnly, setReadOnly] = useState<boolean>(erAksjonspunktReadOnly(aksjonspunkt));
7474
const [rediger, setRediger] = useState<boolean>(false);
7575
const sakAvsluttet = status === 'AVSLU';
76-
const [originaleOverlappendePerioder, setOriginaleOverlappendePerioder] = useState<{ fom: string; tom: string }[]>(
77-
[],
78-
);
7976

8077
const {
8178
data: egneOverlappendeSaker,
@@ -109,7 +106,10 @@ const VurderOverlappendeSak: FC<Props> = ({ behandling, aksjonspunkt, api, oppda
109106

110107
.when('valg', (valg, schema) => {
111108
return valg.includes(PeriodeMedOverlappValg.JUSTERT_GRAD)
112-
? schema.required('Søkers uttaksgrad må fylles ut').min(0, 'Minimum 0%').max(100, 'Maks 100%')
109+
? schema
110+
.required('Søkers uttaksgrad må fylles ut')
111+
.min(1, 'Minimum 1%, bruk "Ingen uttak i perioden" for å sette uttaksgrad til 0.')
112+
.max(100, 'Maks 100%')
113113
: schema.notRequired();
114114
}),
115115
saksnummer: yup.array(yup.string().required()).required(),
@@ -152,7 +152,6 @@ const VurderOverlappendeSak: FC<Props> = ({ behandling, aksjonspunkt, api, oppda
152152

153153
if (overlappendeSuccess && egneOverlappendeSaker) {
154154
const newValues = buildInitialValues(egneOverlappendeSaker);
155-
setOriginaleOverlappendePerioder(egneOverlappendeSaker.perioderMedOverlapp.map(periode => periode.periode));
156155
reset(newValues);
157156
}
158157
}, [overlappendeSuccess, egneOverlappendeSaker, reset, aksjonspunkt?.begrunnelse]);
@@ -174,7 +173,8 @@ const VurderOverlappendeSak: FC<Props> = ({ behandling, aksjonspunkt, api, oppda
174173
fom: format(new Date(periode.periode.fom), 'yyyy-MM-dd') || '',
175174
tom: format(new Date(periode.periode.tom), 'yyyy-MM-dd') || '',
176175
},
177-
søkersUttaksgrad: periode.søkersUttaksgrad,
176+
søkersUttaksgrad:
177+
periode.valg === PeriodeMedOverlappValg.INGEN_UTTAK_I_PERIODEN ? 0 : periode.søkersUttaksgrad,
178178
})),
179179
},
180180
],
@@ -292,7 +292,6 @@ const VurderOverlappendeSak: FC<Props> = ({ behandling, aksjonspunkt, api, oppda
292292
<VurderOverlappendePeriodeForm
293293
key={field.id}
294294
index={index}
295-
originaleOverlappendePerioder={originaleOverlappendePerioder}
296295
readOnly={readOnly}
297296
fields={fields}
298297
replace={replace}

0 commit comments

Comments
 (0)