Skip to content

Commit c156352

Browse files
authored
fix. fikset feil ved annullering av avtaler som er feilregistrerte (#1291)
1 parent 04d8fa9 commit c156352

File tree

8 files changed

+70
-66
lines changed

8 files changed

+70
-66
lines changed

src/AvtaleSide/steg/GodkjenningSteg/GodkjenningSteg.tsx

+1-4
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,7 @@ const GodkjenningSteg: React.FunctionComponent<Props> = (props) => {
5757
<TilskuddsPerioderOppsummering />
5858
</Innholdsboks>
5959
)}
60-
61-
<Suspense fallback={null}>
62-
<VersjoneringKomponent avtale={avtale} rolle={innloggetBruker.rolle} />
63-
</Suspense>
60+
<VersjoneringKomponent avtale={avtale} />
6461
</div>
6562
);
6663
};

src/AvtaleSide/steg/GodkjenningSteg/Versjonering/TidligereVersjoner.tsx

+49-47
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useMemo, useState } from 'react';
22
import VersjonModal from '@/komponenter/modal/VersjonModal';
33
import { innholdTypeTekst } from '@/messages';
44
import { AvtaleVersjon, TiltaksType } from '@/types/avtale';
@@ -9,57 +9,59 @@ import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils';
99

1010
const cls = BEMHelper('tidligereVersjoner');
1111

12-
const TidligereVersjoner: React.FunctionComponent<{ versjoner: AvtaleVersjon[]; tiltakstype: TiltaksType }> = (
13-
props,
14-
) => {
12+
interface Props {
13+
versjoner: AvtaleVersjon[];
14+
tiltakstype: TiltaksType;
15+
}
16+
17+
const TidligereVersjoner = (props: Props) => {
18+
const { versjoner } = props;
19+
1520
const [isOpen, setOpen] = useState<boolean>(false);
1621
const [currentVersjon, setCurrentVersjon] = useState<number>(0);
1722

18-
const sorterteVersjoner = Array.from(props.versjoner);
19-
sorterteVersjoner.sort((a, b) => a.versjon - b.versjon);
20-
const versjonLenker = sorterteVersjoner.map((avtaleVersjon: AvtaleVersjon, index: number) => {
21-
return (
22-
<LinkPanel
23-
className={cls.className}
24-
key={index}
25-
href={'#'}
26-
onClick={() => {
27-
setCurrentVersjon(avtaleVersjon.versjon);
28-
setOpen(true);
29-
}}
30-
border={true}
31-
>
32-
<LinkPanel.Title className={cls.element('linke-container')}>
33-
<div className={cls.element('rad')}>
34-
<Label>
35-
Versjon {avtaleVersjon.versjon}
36-
{avtaleVersjon.innholdType && <> - {innholdTypeTekst(avtaleVersjon)}</>}
37-
</Label>
38-
<BodyShort size="small">
39-
{avtaleVersjon.ikrafttredelsestidspunkt &&
40-
formaterDato(avtaleVersjon.ikrafttredelsestidspunkt, NORSK_DATO_FORMAT)}
41-
</BodyShort>
42-
</div>
43-
</LinkPanel.Title>
44-
</LinkPanel>
45-
);
46-
});
23+
const sorterteVersjoner = useMemo(() => Array.from(versjoner).sort((a, b) => a.versjon - b.versjon), [versjoner]);
24+
4725
return (
4826
<>
49-
{versjonLenker.length > 0 && (
50-
<>
51-
<Heading size="small" className={cls.element('alle_versjoner_tittel')}>
52-
Alle versjoner av avtalen
53-
</Heading>
54-
<div>{versjonLenker}</div>
55-
<VersjonModal
56-
isOpen={isOpen}
57-
lukkModal={() => setOpen(false)}
58-
avtaleInnhold={sorterteVersjoner[currentVersjon > 0 ? currentVersjon - 1 : 0]}
59-
tiltakstype={props.tiltakstype}
60-
/>
61-
</>
62-
)}
27+
<Heading size="small" className={cls.element('alle_versjoner_tittel')}>
28+
Alle versjoner av avtalen
29+
</Heading>
30+
<div>
31+
{sorterteVersjoner.map((avtaleVersjon: AvtaleVersjon, index: number) => {
32+
return (
33+
<LinkPanel
34+
className={cls.className}
35+
key={index}
36+
href={'#'}
37+
onClick={() => {
38+
setCurrentVersjon(avtaleVersjon.versjon);
39+
setOpen(true);
40+
}}
41+
border={true}
42+
>
43+
<LinkPanel.Title className={cls.element('linke-container')}>
44+
<div className={cls.element('rad')}>
45+
<Label>
46+
Versjon {avtaleVersjon.versjon}
47+
{avtaleVersjon.innholdType && <> - {innholdTypeTekst(avtaleVersjon)}</>}
48+
</Label>
49+
<BodyShort size="small">
50+
{avtaleVersjon.ikrafttredelsestidspunkt &&
51+
formaterDato(avtaleVersjon.ikrafttredelsestidspunkt, NORSK_DATO_FORMAT)}
52+
</BodyShort>
53+
</div>
54+
</LinkPanel.Title>
55+
</LinkPanel>
56+
);
57+
})}
58+
</div>
59+
<VersjonModal
60+
isOpen={isOpen}
61+
lukkModal={() => setOpen(false)}
62+
avtaleInnhold={sorterteVersjoner[currentVersjon > 0 ? currentVersjon - 1 : 0]}
63+
tiltakstype={props.tiltakstype}
64+
/>
6365
</>
6466
);
6567
};

src/AvtaleSide/steg/GodkjenningSteg/Versjonering/VersjoneringKomponent.tsx

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,26 @@
11
import TidligereVersjoner from '@/AvtaleSide/steg/GodkjenningSteg/Versjonering/TidligereVersjoner';
22
import Innholdsboks from '@/komponenter/Innholdsboks/Innholdsboks';
33
import { Avtale } from '@/types/avtale';
4-
import { Rolle } from '@/types/innlogget-bruker';
54
import React from 'react';
65
import MediaQuery from 'react-responsive';
76
import { useHentVersjoner } from '@/services/use-rest';
87

98
interface Props {
10-
rolle: Rolle;
119
avtale: Avtale;
1210
}
1311

14-
const VersjoneringKomponent: React.FunctionComponent<Props> = (props) => {
15-
const versjoner = useHentVersjoner(props.avtale.id);
12+
const VersjoneringKomponent = (props: Props) => {
13+
const { avtale } = props;
14+
const versjoner = useHentVersjoner(avtale);
1615

17-
const finnesKunEnVersjon = versjoner.length === 1;
18-
if (finnesKunEnVersjon) {
16+
if (versjoner.length <= 1) {
1917
return null;
2018
}
2119

2220
return (
2321
<MediaQuery print={false}>
2422
<Innholdsboks>
25-
<TidligereVersjoner versjoner={versjoner} tiltakstype={props.avtale.tiltakstype} />
23+
<TidligereVersjoner versjoner={versjoner} tiltakstype={avtale.tiltakstype} />
2624
</Innholdsboks>
2725
</MediaQuery>
2826
);

src/BeslutterSide/BeslutterSide.tsx

+1-3
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,7 @@ const BeslutterSide: FunctionComponent = () => {
104104
</div>
105105
{visVersjon && (
106106
<div className={cls.element('avtale-versjon-wrapper')}>
107-
<Suspense fallback={null}>
108-
<VersjoneringKomponent avtale={avtale} rolle={innloggetBruker.rolle} />
109-
</Suspense>
107+
<VersjoneringKomponent avtale={avtale} />
110108
</div>
111109
)}
112110
</div>

src/mocking/arbeidstrening-avtale-mock.ts

+1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ const arbeidstreningAvtaleMock: Avtale = {
102102
erAvtaleInngått: false,
103103
erRyddeAvtale: false,
104104
opphav: 'VEILEDER',
105+
feilregistrert: false,
105106
};
106107

107108
export default arbeidstreningAvtaleMock;

src/mocking/lonnstilskudd-avtale-mock.ts

+1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ const lonnstilskuddAvtaleMock: Avtale = {
8484
erAvtaleInngått: false,
8585
erRyddeAvtale: false,
8686
opphav: 'VEILEDER',
87+
feilregistrert: false,
8788
};
8889

8990
export default lonnstilskuddAvtaleMock;

src/services/use-rest.ts

+11-5
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import axios from 'axios';
22
import axiosRetry from 'axios-retry';
33
import useSWR from 'swr';
44

5-
import { ApiError, AutentiseringError, FeilkodeError, IkkeTilgangError } from '@/types/errors';
6-
import { AvtaleVersjon } from '@/types/avtale';
5+
import { ApiError, AutentiseringError, FeilkodeError, IkkeFunnetError, IkkeTilgangError } from '@/types/errors';
6+
import { Avtale, AvtaleVersjon } from '@/types/avtale';
77
import { Enhet } from '@/types/enhet';
88
import { SIDE_FOER_INNLOGGING } from '@/RedirectEtterLogin';
99
import { basename } from '@/Router';
@@ -30,6 +30,9 @@ api.interceptors.response.use(
3030
if (error.response?.status === 400 && error.response?.headers.feilkode) {
3131
throw new FeilkodeError(error.response?.headers.feilkode);
3232
}
33+
if (error.response?.status === 404) {
34+
throw new IkkeFunnetError('Fant ikke ressursen.');
35+
}
3336
throw new ApiError('Feil ved kontakt mot baksystem.');
3437
},
3538
);
@@ -43,9 +46,12 @@ const swrConfig = {
4346
suspense: true,
4447
};
4548

46-
export const useHentVersjoner = (avtaleId: string) => {
47-
const { data } = useSWR<AvtaleVersjon[]>(`/avtaler/${avtaleId}/versjoner`, swrConfig);
48-
return data!; // nosonar
49+
export const useHentVersjoner = (avtale: Avtale) => {
50+
const { data } = useSWR<AvtaleVersjon[]>(
51+
!avtale.feilregistrert ? `/avtaler/${avtale.id}/versjoner` : null,
52+
swrConfig,
53+
);
54+
return data || [];
4955
};
5056

5157
export const useHentEnhet = (enhetsnummer?: string) => {

src/types/avtale.ts

+1
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ export interface AvtaleMetadata {
194194
opphav: Avtaleopphav;
195195
kreverOppfolgingFom?: string;
196196
kreverOppfolgingFrist?: string;
197+
feilregistrert: boolean;
197198
}
198199

199200
export interface RefusjonKontaktperson {

0 commit comments

Comments
 (0)