Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,8 @@ const TYPE_TO_PATH: Record<SaksTypeEnum, string> = {
[SaksTypeEnum.ANKE_I_TRYGDERETTEN]: 'trygderettsankebehandling',
[SaksTypeEnum.BEHANDLING_ETTER_TR_OPPHEVET]: 'behandling-etter-tr-opphevet',
[SaksTypeEnum.OMGJØRINGSKRAV]: 'omgjøringskravbehandling',
[SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK]: 'begjaering-om-gjenopptak-behandling',
[SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK_I_TR]: 'begjaering-om-gjenopptak-i-tr-behandling',
};

const toCopyLine = ({ typeId, behandlingId, reason }: Task) => `${getUrl(behandlingId, typeId)} - ${reason}`;
Expand Down
2 changes: 2 additions & 0 deletions frontend/src/components/app/router.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ export const Router = () => (
<Route path="trygderettsankebehandling/:oppgaveId" element={<OppgavebehandlingPage />} />
<Route path="behandling-etter-tr-opphevet/:oppgaveId" element={<OppgavebehandlingPage />} />
<Route path="omgjøringskravbehandling/:oppgaveId" element={<OppgavebehandlingPage />} />
<Route path="begjaering-om-gjenopptak-behandling/:oppgaveId" element={<OppgavebehandlingPage />} />
<Route path="begjaering-om-gjenopptak-i-tr-behandling/:oppgaveId" element={<OppgavebehandlingPage />} />
</Route>

<Route element={<ProtectedRoute roles={[Role.KABAL_INNSYN_EGEN_ENHET, Role.KABAL_KROL]} />}>
Expand Down
6 changes: 6 additions & 0 deletions frontend/src/components/behandling/behandling.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { BegjæringOmGjenopptakDetaljer } from '@app/components/behandling/behandlingsdetaljer/begjæring-om-gjenopptak-detaljer';
import { BegjæringOmGjenopptakITrDetaljer } from '@app/components/behandling/behandlingsdetaljer/begjæring-om-gjenopptak-i-tr-detaljer';
import { BehandlingEtterTrOpphevetDetaljer } from '@app/components/behandling/behandlingsdetaljer/behandling-etter-tr-opphevet-detaljer';
import { BehandlingSection } from '@app/components/behandling/behandlingsdetaljer/behandling-section';
import { Omgjøringskravdetaljer } from '@app/components/behandling/behandlingsdetaljer/omgjøringskravdetaljer';
Expand Down Expand Up @@ -71,5 +73,9 @@ const Behandlingsdetaljer = () => {
return <BehandlingEtterTrOpphevetDetaljer oppgavebehandling={oppgave} />;
case SaksTypeEnum.OMGJØRINGSKRAV:
return <Omgjøringskravdetaljer oppgavebehandling={oppgave} />;
case SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK:
return <BegjæringOmGjenopptakDetaljer oppgavebehandling={oppgave} />;
case SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK_I_TR:
return <BegjæringOmGjenopptakITrDetaljer oppgavebehandling={oppgave} />;
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,10 @@ export const Ankebehandlingsdetaljer = ({ oppgavebehandling }: Props) => {
<Ytelse ytelseId={ytelseId} />
</BehandlingSection>

<BehandlingSection label="Klagebehandling fullført av">
<PreviousSaksbehandler
previousSaksbehandler={oppgavebehandling.previousSaksbehandler}
type={SaksTypeEnum.ANKE}
/>
</BehandlingSection>
<PreviousSaksbehandler
previousSaksbehandler={oppgavebehandling.previousSaksbehandler}
type={SaksTypeEnum.ANKE}
/>

<Saksnummer saksnummer={saksnummer} />

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import { BehandlingSection } from '@app/components/behandling/behandlingsdetaljer/behandling-section';
import { ExtraUtfall } from '@app/components/behandling/behandlingsdetaljer/extra-utfall';
import { ForlengetBehandlingstid } from '@app/components/behandling/behandlingsdetaljer/forlenget-behandlingstid/forlenget-behandlingstid';
import { Gosys } from '@app/components/behandling/behandlingsdetaljer/gosys';
import { Innsendingshjemmel } from '@app/components/behandling/behandlingsdetaljer/innsendingshjemmel';
import { Klager } from '@app/components/behandling/behandlingsdetaljer/klager';
import { Lovhjemmel } from '@app/components/behandling/behandlingsdetaljer/lovhjemmel/lovhjemmel';
import { MottattDato } from '@app/components/behandling/behandlingsdetaljer/mottatt-klageinstans';
import { PreviousSaksbehandler } from '@app/components/behandling/behandlingsdetaljer/previous-saksbehandler';
import { Saksnummer } from '@app/components/behandling/behandlingsdetaljer/saksnummer';
import { Tilbakekreving } from '@app/components/behandling/behandlingsdetaljer/tilbakekreving';
import { UtfallResultat } from '@app/components/behandling/behandlingsdetaljer/utfall-resultat';
import { Ytelse } from '@app/components/behandling/behandlingsdetaljer/ytelse';
import { StyledBehandlingSection } from '@app/components/behandling/styled-components';
import { BEHANDLING_PANEL_DOMAIN } from '@app/components/gosys/beskrivelse/domain';
import { GrafanaDomainProvider } from '@app/components/grafana-domain-context/grafana-domain-context';
import { Fullmektig } from '@app/components/part/fullmektig/fullmektig';
import { Type } from '@app/components/type/type';
import { useUpdateKlagerMutation } from '@app/redux-api/oppgaver/mutations/behandling';
import { SaksTypeEnum } from '@app/types/kodeverk';
import type { IOppgavebehandling } from '@app/types/oppgavebehandling/oppgavebehandling';
import { Heading, VStack } from '@navikt/ds-react';

interface Props {
oppgavebehandling: IOppgavebehandling;
}

export const BegjæringOmGjenopptakDetaljer = ({ oppgavebehandling }: Props) => {
const [updateKlager, { isLoading: klagerIsLoading }] = useUpdateKlagerMutation();

const { typeId, fraNAVEnhetNavn, fraNAVEnhet, resultat, ytelseId, prosessfullmektig, saksnummer, id } =
oppgavebehandling;

const { utfallId, extraUtfallIdSet } = resultat;

return (
<GrafanaDomainProvider domain={BEHANDLING_PANEL_DOMAIN}>
<StyledBehandlingSection>
<Heading level="1" size="medium" spacing>
Behandling
</Heading>

<VStack gap="4">
<Klager
klager={oppgavebehandling.klager}
onChange={(klager) => updateKlager({ klager, oppgaveId: oppgavebehandling.id })}
isLoading={klagerIsLoading}
typeId={typeId}
/>

<Fullmektig part={prosessfullmektig} />

<BehandlingSection label="Type">
<Type type={typeId} />
</BehandlingSection>

<BehandlingSection label="Ytelse">
<Ytelse ytelseId={ytelseId} />
</BehandlingSection>

<PreviousSaksbehandler
previousSaksbehandler={oppgavebehandling.previousSaksbehandler}
type={SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK}
/>

<Saksnummer saksnummer={saksnummer} />

<Innsendingshjemmel oppgavebehandling={oppgavebehandling} />

<ForlengetBehandlingstid oppgavebehandling={oppgavebehandling}>
<MottattDato />
</ForlengetBehandlingstid>

<BehandlingSection label="Behandlet av">
{fraNAVEnhetNavn} &mdash; {fraNAVEnhet}
</BehandlingSection>

<MottattDato />

<Gosys oppgavebehandling={oppgavebehandling} />

<UtfallResultat utfall={utfallId} oppgaveId={id} extraUtfallIdSet={extraUtfallIdSet} typeId={typeId} />

<ExtraUtfall utfallIdSet={extraUtfallIdSet} mainUtfall={utfallId} oppgaveId={id} typeId={typeId} />

<Lovhjemmel />

<Tilbakekreving />
</VStack>
</StyledBehandlingSection>
</GrafanaDomainProvider>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import { BehandlingSection } from '@app/components/behandling/behandlingsdetaljer/behandling-section';
import { Gosys } from '@app/components/behandling/behandlingsdetaljer/gosys';
import { Innsendingshjemmel } from '@app/components/behandling/behandlingsdetaljer/innsendingshjemmel';
import { KjennelseMottatt } from '@app/components/behandling/behandlingsdetaljer/kjennelse-mottatt';
import { OrgWarning } from '@app/components/behandling/behandlingsdetaljer/klager';
import { Lovhjemmel } from '@app/components/behandling/behandlingsdetaljer/lovhjemmel/lovhjemmel';
import { PreviousSaksbehandler } from '@app/components/behandling/behandlingsdetaljer/previous-saksbehandler';
import { Saksnummer } from '@app/components/behandling/behandlingsdetaljer/saksnummer';
import { SendtTilTrygderetten } from '@app/components/behandling/behandlingsdetaljer/sendt-til-trygderetten';
import { Tilbakekreving } from '@app/components/behandling/behandlingsdetaljer/tilbakekreving';
import { UtfallResultat } from '@app/components/behandling/behandlingsdetaljer/utfall-resultat';
import { Ytelse } from '@app/components/behandling/behandlingsdetaljer/ytelse';
import { StyledBehandlingSection } from '@app/components/behandling/styled-components';
import { BEHANDLING_PANEL_DOMAIN } from '@app/components/gosys/beskrivelse/domain';
import { GrafanaDomainProvider } from '@app/components/grafana-domain-context/grafana-domain-context';
import { Fullmektig } from '@app/components/part/fullmektig/fullmektig';
import { Type } from '@app/components/type/type';
import { SaksTypeEnum } from '@app/types/kodeverk';
import type { IBegjæringOmGjenopptakITRBehandling } from '@app/types/oppgavebehandling/oppgavebehandling';
import { Heading, VStack } from '@navikt/ds-react';

interface Props {
oppgavebehandling: IBegjæringOmGjenopptakITRBehandling;
}

export const BegjæringOmGjenopptakITrDetaljer = ({ oppgavebehandling }: Props) => {
const { typeId, resultat, ytelseId, prosessfullmektig, saksnummer, id } = oppgavebehandling;

const { utfallId, extraUtfallIdSet } = resultat;

return (
<GrafanaDomainProvider domain={BEHANDLING_PANEL_DOMAIN}>
<StyledBehandlingSection>
<Heading level="1" size="medium" spacing>
Behandling
</Heading>
<VStack gap="4">
<BehandlingSection label="Den ankende part">
<VStack gap="2">
{oppgavebehandling.klager.name ?? 'Navn mangler'}
<OrgWarning identifikator={oppgavebehandling.klager.identifikator} label="ankende part" />
</VStack>
</BehandlingSection>

<Fullmektig part={prosessfullmektig} />

<BehandlingSection label="Type">
<Type type={typeId} />
</BehandlingSection>

<BehandlingSection label="Ytelse">
<Ytelse ytelseId={ytelseId} />
</BehandlingSection>

<PreviousSaksbehandler
previousSaksbehandler={oppgavebehandling.previousSaksbehandler}
type={SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK_I_TR}
/>

<Saksnummer saksnummer={saksnummer} />

<Innsendingshjemmel oppgavebehandling={oppgavebehandling} />

<SendtTilTrygderetten />

<KjennelseMottatt />

<Gosys oppgavebehandling={oppgavebehandling} />

<UtfallResultat utfall={utfallId} oppgaveId={id} extraUtfallIdSet={extraUtfallIdSet} typeId={typeId} />

<Lovhjemmel />

<Tilbakekreving />
</VStack>
</StyledBehandlingSection>
</GrafanaDomainProvider>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,19 @@ import { useValidationError } from '@app/hooks/use-validation-error';
import { useSetKjennelseMottattMutation } from '@app/redux-api/oppgaver/mutations/behandling-dates';
import { SaksTypeEnum } from '@app/types/kodeverk';
import { subDays } from 'date-fns';
import { useState } from 'react';

const ID = 'kjennelse-mottatt';

export const KjennelseMottatt = () => {
const canEdit = useCanEditBehandling();
const { data } = useOppgave();
const error = useValidationError('kjennelseMottatt');
const [localError, setLocalError] = useState<string | null>(null);
const label = useFieldName('kjennelseMottatt');
const [setKjennelseMottatt] = useSetKjennelseMottattMutation();

if (data?.typeId !== SaksTypeEnum.ANKE_I_TRYGDERETTEN) {
if (data?.typeId !== SaksTypeEnum.ANKE_I_TRYGDERETTEN && data?.typeId !== SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK_I_TR) {
return null;
}

Expand All @@ -30,9 +32,23 @@ export const KjennelseMottatt = () => {
}

const onChange = (kjennelseMottatt: string | null) => {
if (kjennelseMottatt !== value) {
setKjennelseMottatt({ oppgaveId: data.id, kjennelseMottatt, typeId: data.typeId });
setLocalError(null);

if (kjennelseMottatt === value) {
return;
}

if (kjennelseMottatt === null) {
return setKjennelseMottatt({ oppgaveId: data.id, kjennelseMottatt, typeId: data.typeId });
}

const sendtTilTrygderetten = data.sendtTilTrygderetten?.split('T')[0] ?? null;

if (sendtTilTrygderetten !== null && sendtTilTrygderetten >= kjennelseMottatt) {
setLocalError('Kjennelse mottatt må være etter Sendt til Trygderetten.');
}

setKjennelseMottatt({ oppgaveId: data.id, kjennelseMottatt, typeId: data.typeId });
};

return (
Expand All @@ -42,7 +58,7 @@ export const KjennelseMottatt = () => {
disabled={!canEdit}
onChange={onChange}
value={value}
error={error}
error={localError || error}
id={ID}
size="small"
centuryThreshold={CURRENT_YEAR_IN_CENTURY}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,10 @@ const getLabel = (typeId: SaksTypeEnum): [string, string] => {
return ['Opprinnelig klager / ankende part', 'opprinnelig klager / ankende part'];
case SaksTypeEnum.OMGJØRINGSKRAV:
return ['Den som krever omgjøring', 'den som krever omgjøring'];
case SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK:
case SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK_I_TR:
return ['Den som begjærer gjenopptak', 'den som begjærer gjenopptak'];
default:
return ['Klager', 'klager'];
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@ export const MottattDato = () => {
const label = useFieldName('mottattKlageinstans');
const [setMottattKlageinstans] = useSetMottattKlageinstansMutation();

if (data?.typeId !== SaksTypeEnum.ANKE && data?.typeId !== SaksTypeEnum.OMGJØRINGSKRAV) {
if (
data?.typeId !== SaksTypeEnum.ANKE &&
data?.typeId !== SaksTypeEnum.OMGJØRINGSKRAV &&
data?.typeId !== SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK
) {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,10 @@ export const Omgjøringskravdetaljer = ({ oppgavebehandling }: Props) => {
<Ytelse ytelseId={ytelseId} />
</BehandlingSection>

<BehandlingSection label="Behandlingen som kreves omgjort er tidligere fullført av">
<PreviousSaksbehandler
previousSaksbehandler={oppgavebehandling.previousSaksbehandler}
type={SaksTypeEnum.OMGJØRINGSKRAV}
/>
</BehandlingSection>
<PreviousSaksbehandler
previousSaksbehandler={oppgavebehandling.previousSaksbehandler}
type={SaksTypeEnum.OMGJØRINGSKRAV}
/>

<Saksnummer saksnummer={saksnummer} />

Expand Down
Original file line number Diff line number Diff line change
@@ -1,34 +1,63 @@
import { BehandlingSection } from '@app/components/behandling/behandlingsdetaljer/behandling-section';
import { formatEmployeeNameAndId } from '@app/domain/employee-name';
import type { INavEmployee } from '@app/types/bruker';
import { SaksTypeEnum } from '@app/types/kodeverk';
import { Alert } from '@navikt/ds-react';

type Type = SaksTypeEnum.ANKE_I_TRYGDERETTEN | SaksTypeEnum.ANKE | SaksTypeEnum.OMGJØRINGSKRAV;
type Type =
| SaksTypeEnum.ANKE_I_TRYGDERETTEN
| SaksTypeEnum.ANKE
| SaksTypeEnum.OMGJØRINGSKRAV
| SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK
| SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK_I_TR;

interface Props {
previousSaksbehandler: INavEmployee | null;
type: Type;
}

export const PreviousSaksbehandler = ({ previousSaksbehandler, type }: Props) => {
const heading = getHeading(type);

if (previousSaksbehandler === null) {
return (
<Alert variant="info" size="small" inline>
Bruk «Søk på person» for å finne hvem som fullførte tidligere {getTypeName(type)}.
</Alert>
<BehandlingSection label={heading}>
<Alert variant="info" size="small" inline>
Bruk «Søk på person» for å finne hvem som fullførte tidligere {getTypeName(type)}.
</Alert>
</BehandlingSection>
);
}

return formatEmployeeNameAndId(previousSaksbehandler);
return <BehandlingSection label={heading}>{formatEmployeeNameAndId(previousSaksbehandler)}</BehandlingSection>;
};

const getTypeName = (type: Type) => {
const getTypeName = (type: Type): string => {
switch (type) {
case SaksTypeEnum.ANKE:
return 'klagebehandling';
case SaksTypeEnum.ANKE_I_TRYGDERETTEN:
return 'ankebehandling';
case SaksTypeEnum.OMGJØRINGSKRAV:
return 'omgjøringskrav';
case SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK:
return 'anke i Trygderetten-behandling';
case SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK_I_TR:
return 'begjæring om gjenopptak-behandling';
}
};

const getHeading = (type: Type): string => {
switch (type) {
case SaksTypeEnum.ANKE:
return 'Klagebehandling fullført av';
case SaksTypeEnum.ANKE_I_TRYGDERETTEN:
return 'Ankebehandling fullført av';
case SaksTypeEnum.OMGJØRINGSKRAV:
return 'Behandlingen som kreves omgjort er tidligere fullført av';
case SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK:
return 'Anke i Trygderetten-oppgave fullført av';
case SaksTypeEnum.BEGJÆRING_OM_GJENOPPTAK_I_TR:
return 'Begjæring om gjenopptak-oppgave fullført av';
}
};
Loading