Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Journalføring 2.0 dokumentpanel #2590

Merged
merged 7 commits into from
Oct 19, 2023
33 changes: 29 additions & 4 deletions src/frontend/App/hooks/useJournalføringState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ import { useApp } from '../context/AppContext';
import { Behandlingstype } from '../typer/behandlingstype';
import { UstrukturertDokumentasjonType } from '../../Komponenter/Journalføring/Standard/VelgUstrukturertDokumentasjonType';
import { EVilkårsbehandleBarnValg } from '../typer/vilkårsbehandleBarnValg';
import { DokumentTitler, IJournalpostResponse } from '../typer/journalføring';
import {
LogiskeVedleggPåDokument,
DokumentTitler,
IJournalpostResponse,
DokumentInfo,
} from '../typer/journalføring';
import { Journalføringsårsak } from '../../Komponenter/Journalføring/Felles/utils';
import { behandlingstemaTilStønadstype, Stønadstype } from '../typer/behandlingstema';
import { HentDokumentResponse, useHentDokument } from './useHentDokument';

export interface BehandlingRequest {
behandlingsId?: string;
Expand Down Expand Up @@ -36,6 +42,8 @@ export interface JournalføringStateRequest {
settBehandling: Dispatch<SetStateAction<BehandlingRequest | undefined>>;
dokumentTitler?: DokumentTitler;
settDokumentTitler: Dispatch<SetStateAction<DokumentTitler | undefined>>;
logiskeVedleggPåDokument?: LogiskeVedleggPåDokument;
settLogiskeVedleggPåDokument: Dispatch<SetStateAction<LogiskeVedleggPåDokument | undefined>>;
innsending: Ressurs<string>;
settInnsending: Dispatch<SetStateAction<Ressurs<string>>>;
fullførJournalføring: () => void;
Expand All @@ -51,12 +59,14 @@ export interface JournalføringStateRequest {
settJournalføringsårsak: Dispatch<SetStateAction<Journalføringsårsak>>;
stønadstype: Stønadstype | undefined;
settStønadstype: Dispatch<SetStateAction<Stønadstype | undefined>>;
valgtDokumentPanel: string;
settValgtDokumentPanel: Dispatch<SetStateAction<string>>;
hentDokumentResponse: HentDokumentResponse;
}

export const useJournalføringState = (
journalResponse: IJournalpostResponse,
oppgaveId: string,
journalpostId: string
oppgaveId: string
): JournalføringStateRequest => {
const utledJournalføringsårsak = () => {
if (journalResponse.harStrukturertSøknad) {
Expand All @@ -68,10 +78,17 @@ export const useJournalføringState = (
}
};

const utledFørsteDokument = (dokumenter: DokumentInfo[]) =>
dokumenter.length > 0 ? dokumenter[0].dokumentInfoId : '';

const { axiosRequest, innloggetSaksbehandler } = useApp();
const hentDokumentResponse = useHentDokument(journalResponse.journalpost);

const [fagsakId, settFagsakId] = useState<string>('');
const [behandling, settBehandling] = useState<BehandlingRequest>();
const [dokumentTitler, settDokumentTitler] = useState<DokumentTitler>();
const [logiskeVedleggPåDokument, settLogiskeVedleggPåDokument] =
useState<LogiskeVedleggPåDokument>(); // TODO: Disse må sendes med til backend for å bli satt
const [innsending, settInnsending] = useState<Ressurs<string>>(byggTomRessurs());
const [visBekreftelsesModal, settVisBekreftelsesModal] = useState<boolean>(false);
const [barnSomSkalFødes, settBarnSomSkalFødes] = useState<BarnSomSkalFødes[]>([]);
Expand All @@ -86,6 +103,9 @@ export const useJournalføringState = (
const [stønadstype, settStønadstype] = useState<Stønadstype | undefined>(
behandlingstemaTilStønadstype(journalResponse.journalpost.behandlingstema)
);
const [valgtDokumentPanel, settValgtDokumentPanel] = useState<string>(
utledFørsteDokument(journalResponse.journalpost.dokumenter)
);

useEffect(() => {
settBehandling(undefined);
Expand Down Expand Up @@ -113,7 +133,7 @@ export const useJournalføringState = (
settInnsending(byggHenterRessurs());
axiosRequest<string, JournalføringRequest>({
method: 'POST',
url: `/familie-ef-sak/api/journalpost/${journalpostId}/fullfor`,
url: `/familie-ef-sak/api/journalpost/${journalResponse.journalpost.journalpostId}/fullfor`,
data,
}).then((resp) => settInnsending(resp));
};
Expand All @@ -125,6 +145,8 @@ export const useJournalføringState = (
settBehandling,
dokumentTitler,
settDokumentTitler,
logiskeVedleggPåDokument,
settLogiskeVedleggPåDokument,
innsending,
settInnsending,
fullførJournalføring,
Expand All @@ -140,5 +162,8 @@ export const useJournalføringState = (
settJournalføringsårsak,
stønadstype,
settStønadstype,
valgtDokumentPanel,
settValgtDokumentPanel,
hentDokumentResponse,
};
};
1 change: 1 addition & 0 deletions src/frontend/App/typer/journalføring.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,4 @@ export interface BrukerInfo {
}

export type DokumentTitler = Record<string, string>;
export type LogiskeVedleggPåDokument = Record<string, string[]>;
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import styled from 'styled-components';
import CreatableSelect from 'react-select/creatable';
import { dokumentTitler } from './utils';
import { dokumentTitlerMultiSelect } from './utils';
import { CSSObjectWithLabel, StylesConfig } from 'react-select';
import { Button } from '@navikt/ds-react';
import { ABlue500, ABlue800, ABorderStrong } from '@navikt/ds-tokens/dist/tokens';
Expand Down Expand Up @@ -58,7 +58,7 @@ const EndreDokumentTittel: React.FC<{
<CreatableSelect
styles={customStyles}
placeholder="Velg tittel"
options={dokumentTitler}
options={dokumentTitlerMultiSelect}
formatCreateLabel={(val: string) => `Opprett "${val}"`}
onChange={(value: unknown) => {
settNyttDokumentNavn((value as OptionType).value);
Expand Down
110 changes: 61 additions & 49 deletions src/frontend/Komponenter/Journalføring/Felles/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import { Behandling, BehandlingResultat } from '../../../App/typer/fagsak';
import { Behandlingstype } from '../../../App/typer/behandlingstype';
import { BehandlingRequest } from '../../../App/hooks/useJournalføringState';
import { BehandlingKlageRequest } from '../../../App/hooks/useJournalføringKlageState';
import { ISelectOption, MultiValue, SingleValue } from '@navikt/familie-form-elements';

export const JOURNALPOST_QUERY_STRING = 'journalpostId';
export const OPPGAVEID_QUERY_STRING = 'oppgaveId';
export type MultiSelectValue = { label: string; value: string };

export const lagJournalføringKlageUrl = (
journalpostId: string,
Expand Down Expand Up @@ -37,55 +39,6 @@ export const utledKolonneTittel = (
return `${prefix}${type}${stønadstype}`;
};

export const dokumentTitler: { value: string; label: string }[] = [
{ value: 'Uttalelse tilbakekreving', label: 'Uttalelse tilbakekreving' },
{ value: 'Uttalelse', label: 'Uttalelse' },
{
value: 'Tilmelding til NAV som reell arbeidssøker ved krav om overgangsstønad',
label: "Tilmelding til NAV som reell arbeidssøker ved krav om overgangsstønad'",
},
{
value: 'Søknad om stønad til skolepenger - enslig mor eller far',
label: 'Søknad om stønad til skolepenger - enslig mor eller far',
},
{
value: 'Søknad om stønad til barnetilsyn - enslig mor eller far i arbeid',
label: 'Søknad om stønad til skolepenger - enslig mor eller far',
},
{
value: 'Søknad om overgangsstønad - enslig mor eller far',
label: 'Søknad om overgangsstønad - enslig mor eller far',
},
{ value: 'Stevning', label: 'Stevning' },
{ value: 'Skatteopplysninger', label: 'Skatteopplysninger' },
{ value: 'Rettsavgjørelse', label: 'Rettsavgjørelse' },
{ value: 'Refusjonskrav/faktura', label: 'Refusjonskrav/faktura' },
{ value: 'Oppholdstillatelse', label: 'Oppholdstillatelse' },
{ value: 'Merknader i ankesak', label: 'Merknader i ankesak' },
{ value: 'Medisinsk dokumentasjon', label: 'Medisinsk dokumentasjon' },
{ value: 'Krav om gjenopptak av ankesak', label: 'Krav om gjenopptak av ankesak' },
{ value: 'Klage/Anke', label: 'Klage/Anke' },
{ value: 'Klage på tilbakekreving', label: 'Klage på tilbakekreving' },
{ value: 'Inntektsopplysninger', label: 'Inntektsopplysninger' },
{ value: 'Grunnblankett', label: 'Grunnblankett' },
{ value: 'Fødselsmelding/Fødselsattest', label: 'Fødselsmelding/Fødselsattest' },
{ value: 'Forespørsel', label: 'Forespørsel' },
{ value: 'EØS-dokument', label: 'EØS-dokument' },
{ value: 'Erklæring samlivsbrudd', label: 'Erklæring samlivsbrudd' },
{
value: 'Enslig mor eller far som er arbeidssøker',
label: 'nslig mor eller far som er arbeidssøker',
},
{ value: 'Endring i sivilstand', label: 'Endring i sivilstand' },
{ value: 'Bekreftelse på utdanning / utgifter', label: 'Bekreftelse på utdanning / utgifter' },
{ value: 'Bekreftelse på tilsynsutgifter', label: 'Bekreftelse på tilsynsutgifter' },
{ value: 'Bekreftelse på termindato', label: 'Bekreftelse på termindato' },
{ value: 'Bekreftelse fra barnevernet', label: 'Bekreftelse fra barnevernet' },
{ value: 'Avtale / avgjørelse om samvær', label: 'Avtale / avgjørelse om samvær' },
{ value: 'Arbeidsforhold', label: 'Arbeidsforhold' },
{ value: 'Anke på tilbakekreving', label: 'Anke på tilbakekreving' },
];

export const utledRiktigBehandlingstype = (
tidligereBehandlinger: Behandling[]
): Behandlingstype => {
Expand All @@ -105,6 +58,65 @@ export const harValgtNyKlageBehandling = (
behandling: BehandlingKlageRequest | undefined
): boolean => behandling !== undefined && behandling.behandlingId === undefined;

const dokumentTitler: string[] = [
'Anke på tilbakekreving',
'Arbeidsforhold',
'Avtale / Avgjørelse om samvær',
'Bekreftelse fra barnevernet',
'Bekreftelse på termindato',
'Bekreftelse på tilsynsutgifter',
'Bekreftelse på utdanning / utgifter',
'Endring i sivilstand',
'Enslig mor eller far som er arbeidssøker',
'Eklæring om samlivsbrudd',
'EØS dokument',
'Forespørsel',
'Fødselsmelding/Fødselsattest',
'Grunnblankett',
'Inntektsopplysninger',
'Klage på tilbakekreving',
'Klage/Anke',
'Krav om gjenopptak av ankesak',
'Medisinsk dokumentasjon',
'Merknader i ankesak',
'Oppholdstillatelse',
'Refusjonskrav/faktura',
'Rettsavgjørelse',
'Skatteopplysninger',
'Stevning',
'Søknad om overgangsstønad',
'Søknad om skolepenger',
'Søknad om barnetilsyn',
'Tilmelding til NAV som reell arbeidssøker ved krav om overgangsstønad',
'Uttalelse',
'Uttalelse tilbakekreving',
];

export const dokumentTitlerMultiSelect: ISelectOption[] = dokumentTitler.map((tittel) => {
return { value: tittel, label: tittel };
});

export const mapDokumentTittelTilMultiselectValue = (tittel: string) => {
return { value: tittel, label: tittel };
};

export const mapLogiskeVedleggTilMultiselectValue = (logiskeVedlegg: string[]) => {
return logiskeVedlegg.map((vedlegg) => {
return { label: vedlegg, value: vedlegg };
});
};

export const mapMultiselectValueTilLogiskeVedlegg = (
values: MultiValue<MultiSelectValue> | SingleValue<MultiSelectValue>
) => {
if ((values as MultiValue<MultiSelectValue>).length !== undefined) {
return (values as MultiValue<MultiSelectValue>).map((value) => value.value);
} else {
const value = values as SingleValue<MultiSelectValue>;
return [value === null ? '' : value.value];
}
};

export enum Journalføringsårsak {
PAPIRSØKNAD = 'PAPIRSØKNAD',
ETTERSENDING = 'ETTERSENDING',
Expand Down
Loading