diff --git a/src/frontend/api/behandling.ts b/src/frontend/api/behandling.ts index 3e01eff4..46200526 100644 --- a/src/frontend/api/behandling.ts +++ b/src/frontend/api/behandling.ts @@ -73,6 +73,15 @@ const useBehandlingApi = () => { }); }; + const gjerFeilutbetalingInaktiveVilkårsvurderingerKall = ( + behandlingId: string + ): Promise> => { + return request({ + method: 'GET', + url: `${behandlingerApiPrefix}/${behandlingId}/vilkarsvurdering/inaktiv`, + }); + }; + const sendInnFeilutbetalingVilkårsvurdering = ( behandlingId: string, payload: VilkårdsvurderingStegPayload @@ -201,6 +210,7 @@ const useBehandlingApi = () => { fjernManuellBrevmottaker, hentManuelleBrevmottakere, kallAngreSendTilBeslutter, + gjerFeilutbetalingInaktiveVilkårsvurderingerKall, }; }; diff --git a/src/frontend/komponenter/Fagsak/BehandlingContainer.tsx b/src/frontend/komponenter/Fagsak/BehandlingContainer.tsx index a8376a13..37cb32d6 100644 --- a/src/frontend/komponenter/Fagsak/BehandlingContainer.tsx +++ b/src/frontend/komponenter/Fagsak/BehandlingContainer.tsx @@ -18,6 +18,8 @@ import VedtakContainer from './Vedtak/VedtakContainer'; import VergeContainer from './Verge/VergeContainer'; import { VergeProvider } from './Verge/VergeContext'; import { FeilutbetalingVilkårsvurderingProvider } from './Vilkårsvurdering/FeilutbetalingVilkårsvurderingContext'; +import HistoriskVilkårsvurderingContainer from './Vilkårsvurdering/historikk/HistoriskVilkårsvurderingContainer'; +import { HistoriskVilkårsvurderingProvider } from './Vilkårsvurdering/historikk/HistoriskVilkårsvurderingContext'; import VilkårsvurderingContainer from './Vilkårsvurdering/VilkårsvurderingContainer'; import { useBehandling } from '../../context/BehandlingContext'; import { Behandlingstatus, IBehandling } from '../../typer/behandling'; @@ -143,6 +145,17 @@ const BehandlingContainer: React.FC = ({ fagsak, behandling }) => { } /> + + + + } + /> = () => { + const { + feilutbetalingInaktiveVilkårsvurderinger, + skjemaData, + settFeilutbetalingInaktivVilkårsvurdering, + } = useHistoriskVilkårsvurdering(); + + switch (feilutbetalingInaktiveVilkårsvurderinger?.status) { + case RessursStatus.SUKSESS: { + return ( + + + + Tidligere vilkårsvurderinger på denne behandlingen + + + {skjemaData && skjemaData.length > 0 && ( + + )} + + + ); + } + case RessursStatus.HENTER: + return ( + + Henting av feilutbetalingen tar litt tid. + + + ); + case RessursStatus.FEILET: + case RessursStatus.FUNKSJONELL_FEIL: + return ( + + ); + } +}; + +export default HistoriskVilkårsvurderingContainer; diff --git "a/src/frontend/komponenter/Fagsak/Vilk\303\245rsvurdering/historikk/HistoriskVilk\303\245rsvurderingContext.tsx" "b/src/frontend/komponenter/Fagsak/Vilk\303\245rsvurdering/historikk/HistoriskVilk\303\245rsvurderingContext.tsx" new file mode 100644 index 00000000..f74ce5c6 --- /dev/null +++ "b/src/frontend/komponenter/Fagsak/Vilk\303\245rsvurdering/historikk/HistoriskVilk\303\245rsvurderingContext.tsx" @@ -0,0 +1,82 @@ +import * as React from 'react'; + +import { AxiosError } from 'axios'; +import createUseContext from 'constate'; + +import { + byggFeiletRessurs, + byggHenterRessurs, + byggTomRessurs, + type Ressurs, +} from '@navikt/familie-typer'; + +import { useBehandlingApi } from '../../../../api/behandling'; +import { IBehandling } from '../../../../typer/behandling'; +import { IFeilutbetalingVilkårsvurdering } from '../../../../typer/feilutbetalingtyper'; +import { sorterFeilutbetaltePerioder } from '../../../../utils'; +import { VilkårsvurderingPeriodeSkjemaData } from '../typer/feilutbetalingVilkårsvurdering'; + +interface IProps { + behandling: IBehandling; +} + +const [HistoriskVilkårsvurderingProvider, useHistoriskVilkårsvurdering] = createUseContext( + ({ behandling }: IProps) => { + const [ + feilutbetalingInaktiveVilkårsvurderinger, + settFeilutbetalingInaktiveVilkårsvurderinger, + ] = React.useState>(byggTomRessurs); + + const [skjemaData, settSkjemaData] = React.useState( + [] + ); + + React.useEffect(() => { + hentFeilutbetalingVilkårsvurdering(); + }, [behandling]); + + const settFeilutbetalingInaktivVilkårsvurdering = ( + feilutbetalingInaktivVilkårsvurdering?: IFeilutbetalingVilkårsvurdering + ) => { + if (feilutbetalingInaktivVilkårsvurdering) { + const perioder = feilutbetalingInaktivVilkårsvurdering.perioder; + const sortertePerioder = sorterFeilutbetaltePerioder(perioder); + const skjemaPerioder = sortertePerioder.map((fuFP, index) => { + const skjemaPeriode: VilkårsvurderingPeriodeSkjemaData = { + index: `idx_fpsd_inaktiv_${index}`, + ...fuFP, + }; + return skjemaPeriode; + }); + + settSkjemaData(skjemaPerioder); + } + }; + + const { gjerFeilutbetalingInaktiveVilkårsvurderingerKall } = useBehandlingApi(); + + const hentFeilutbetalingVilkårsvurdering = (): void => { + settFeilutbetalingInaktiveVilkårsvurderinger(byggHenterRessurs()); + gjerFeilutbetalingInaktiveVilkårsvurderingerKall(behandling.behandlingId) + .then((respons: Ressurs) => { + settFeilutbetalingInaktiveVilkårsvurderinger(respons); + }) + .catch((error: AxiosError) => { + console.log('Error ved henting av vilkårsvurdering: ', error); + settFeilutbetalingInaktiveVilkårsvurderinger( + byggFeiletRessurs( + 'Ukjent feil ved henting av vilkårsvurdering-perioder for behandling' + ) + ); + }); + }; + + return { + feilutbetalingInaktiveVilkårsvurderinger, + settFeilutbetalingInaktivVilkårsvurdering, + skjemaData, + }; + } +); + +export { HistoriskVilkårsvurderingProvider, useHistoriskVilkårsvurdering }; diff --git "a/src/frontend/komponenter/Fagsak/Vilk\303\245rsvurdering/historikk/HistoriskVilk\303\245rsvurderingVisning.tsx" "b/src/frontend/komponenter/Fagsak/Vilk\303\245rsvurdering/historikk/HistoriskVilk\303\245rsvurderingVisning.tsx" new file mode 100644 index 00000000..25f495bb --- /dev/null +++ "b/src/frontend/komponenter/Fagsak/Vilk\303\245rsvurdering/historikk/HistoriskVilk\303\245rsvurderingVisning.tsx" @@ -0,0 +1,195 @@ +import * as React from 'react'; + +import { BodyShort, Box, Heading, HGrid, List, VStack } from '@navikt/ds-react'; + +import { + aktsomheter, + forstodBurdeForståttAktsomheter, + særligegrunner, + Vilkårsresultat, + vilkårsresultater, +} from '../../../../kodeverk'; +import { VilkårsvurderingPeriodeSkjemaData } from '../typer/feilutbetalingVilkårsvurdering'; +import TilbakekrevingAktivitetTabell from '../VilkårsvurderingPeriode/TilbakekrevingAktivitetTabell'; + +interface IProps { + perioder: VilkårsvurderingPeriodeSkjemaData[]; +} + +const HistoriskVilkårsvurderingVisning: React.FC = ({ perioder }) => { + return ( + + {perioder.map(skjema => { + const erForstodBurdeForstått = + skjema.vilkårsvurderingsresultatInfo?.vilkårsvurderingsresultat === + Vilkårsresultat.FORSTO_BURDE_FORSTÅTT; + + const aktsomhet = skjema.vilkårsvurderingsresultatInfo?.aktsomhet; + const godTro = skjema.vilkårsvurderingsresultatInfo?.godTro; + const begrunnelseAktsomhetGodTro = aktsomhet?.begrunnelse || godTro?.begrunnelse; + const særligeGrunner = aktsomhet?.særligeGrunner; + return ( + + + + + + + + + + + + + + + + {(godTro || aktsomhet) && ( + + + {godTro && 'Beløpet mottatt i god tro'} + {aktsomhet && 'Aktsomhet'} + + + + {godTro && ( + <> + + + + )} + {aktsomhet && ( + <> + + + {særligeGrunner && særligeGrunner?.length > 0 && ( + + {særligeGrunner?.map(grunn => { + return ( + + {særligegrunner[grunn.særligGrunn]}{' '} + {grunn.begrunnelse + ? `- (${grunn.begrunnelse})` + : ''} + + ); + })} + + )} + + + + {aktsomhet.andelTilbakekreves && ( + + )} + {aktsomhet.beløpTilbakekreves && ( + + )} + {aktsomhet.tilbakekrevSmåbeløp === false && ( + + Ikke tilbakekrev beløp (under 4 rettsgebyr) + + )} + {aktsomhet.ileggRenter === true && ( + Skal ilegges renter + )} + + )} + + )} + + + ); + })} + + ); +}; + +const LabelVerdiVisning: React.FC<{ label: string; verdi: string | number | undefined }> = ({ + label, + verdi, +}) => { + return ( + + {label}: + {verdi} + + ); +}; + +export default HistoriskVilkårsvurderingVisning; diff --git a/src/frontend/komponenter/Felleskomponenter/Venstremeny/sider.ts b/src/frontend/komponenter/Felleskomponenter/Venstremeny/sider.ts index 59b60ecf..2bd6a61c 100644 --- a/src/frontend/komponenter/Felleskomponenter/Venstremeny/sider.ts +++ b/src/frontend/komponenter/Felleskomponenter/Venstremeny/sider.ts @@ -104,8 +104,11 @@ export const utledBehandlingSide = (steg: Behandlingssteg): ISide | undefined => return finnSideForSteg(steg); } }; - +const erHistoriskSide = (side: string) => side === 'inaktiv-vilkaarsvurdering'; export const erØnsketSideTilgjengelig = (ønsketSide: string, behandling: IBehandling): boolean => { + if (erHistoriskSide(ønsketSide)) { + return true; + } const funnetØnsketSide = Object.entries(sider).find(([_, side]) => side.href === ønsketSide); if (funnetØnsketSide && behandling.behandlingsstegsinfo) { diff --git a/src/frontend/typer/feilutbetalingtyper.ts b/src/frontend/typer/feilutbetalingtyper.ts index 02b0d159..0b26faf7 100644 --- a/src/frontend/typer/feilutbetalingtyper.ts +++ b/src/frontend/typer/feilutbetalingtyper.ts @@ -125,6 +125,7 @@ export type VilkårsvurderingPeriode = { export interface IFeilutbetalingVilkårsvurdering { perioder: VilkårsvurderingPeriode[]; rettsgebyr: number; + opprettetTid?: string; } export interface IBeregnSplittetPeriodeRespons {