Skip to content

Commit

Permalink
Legger til nytt infobrev, endret på barnSoktFor til relevantebarn for…
Browse files Browse the repository at this point in the history
… å kunne gjenbrukes i flere brevmal (#3561)

* Legger til nytt infobrev, endret på barnSoktFor til relevantebarn for å kunne gjenbrukes i flere brevmal

* Fiks config endring som ikke skulle være med

* Endringer etter QA

Endringer etter QA

* Refaktorering av kode

* Endringer etter QA
  • Loading branch information
UyQuangNguyen authored Feb 25, 2025
1 parent 0901791 commit 920077a
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 51 deletions.
34 changes: 21 additions & 13 deletions src/frontend/context/DokumentutsendingContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import type { IManueltBrevRequestPåFagsak } from '../typer/dokument';
import { Distribusjonskanal } from '../typer/dokument';
import type { IBarnMedOpplysninger } from '../typer/søknad';
import { Målform } from '../typer/søknad';
import { useBarnSøktForFelter } from '../utils/barnSøktForFelter';
import { useBarnIBrevFelter } from '../utils/barnIBrevFelter';
import type { IsoDatoString } from '../utils/dato';
import { Datoformat, isoStringTilFormatertString } from '../utils/dato';
import { useDeltBostedFelter } from '../utils/deltBostedSkjemaFelter';
Expand All @@ -39,6 +39,7 @@ export enum DokumentÅrsak {
TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL = 'TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL',
TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER = 'TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER',
TIL_FORELDER_MED_SELVSTENDIG_RETT_VI_HAR_FÅTT_F016_KAN_SØKE_OM_BARNETRYGD = 'TIL_FORELDER_MED_SELVSTENDIG_RETT_VI_HAR_FÅTT_F016_KAN_SØKE_OM_BARNETRYGD',
KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV = 'KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV',
}

export const dokumentÅrsak: Record<DokumentÅrsak, string> = {
Expand All @@ -58,6 +59,7 @@ export const dokumentÅrsak: Record<DokumentÅrsak, string> = {
'Til forelder omfattet norsk lovgivning - henter ikke registeropplysninger',
TIL_FORELDER_MED_SELVSTENDIG_RETT_VI_HAR_FÅTT_F016_KAN_SØKE_OM_BARNETRYGD:
'Til forelder med selvstendig rett vi har fått F016 - kan søke om barnetrygd',
KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV: 'Kan ha rett til pengestøtte fra Nav',
};

export const [DokumentutsendingProvider, useDokumentutsending] = createUseContext(
Expand Down Expand Up @@ -129,7 +131,7 @@ export const [DokumentutsendingProvider, useDokumentutsending] = createUseContex
avhengigheter.årsakFelt.verdi === DokumentÅrsak.DELT_BOSTED,
});

const { barnSøktFor, nullstillBarnSøktFor } = useBarnSøktForFelter({
const { barnIBrev, nullstillBarnIBrev } = useBarnIBrevFelter({
avhengigheter: { årsakFelt: årsak },
skalFeltetVises: avhengigheter =>
[
Expand All @@ -138,6 +140,7 @@ export const [DokumentutsendingProvider, useDokumentutsending] = createUseContex
DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_GJORT_VEDTAK_TIL_ANNEN_FORELDER,
DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL,
DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER,
DokumentÅrsak.KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV,
].includes(avhengigheter.årsakFelt.verdi),
});

Expand All @@ -154,7 +157,7 @@ export const [DokumentutsendingProvider, useDokumentutsending] = createUseContex
fritekster: FeltState<IFritekstFelt>[];
dokumenter: string[];
barnMedDeltBosted: IBarnMedOpplysninger[];
barnSøktFor: IBarnMedOpplysninger[];
barnIBrev: IBarnMedOpplysninger[];
avtalerOmDeltBostedPerBarn: Record<string, IsoDatoString[]>;
},
string
Expand All @@ -167,7 +170,7 @@ export const [DokumentutsendingProvider, useDokumentutsending] = createUseContex
dokumenter: dokumenter,

barnMedDeltBosted,
barnSøktFor,
barnIBrev,
avtalerOmDeltBostedPerBarn: avtalerOmDeltBostedPerBarn,
},
skjemanavn: 'Dokumentutsending',
Expand All @@ -178,13 +181,13 @@ export const [DokumentutsendingProvider, useDokumentutsending] = createUseContex
skjema.felter.fritekster.nullstill();
skjema.felter.målform.nullstill();
nullstillDeltBosted();
nullstillBarnSøktFor();
nullstillBarnIBrev();
};

const nullstillSkjema = () => {
nullstillHeleSkjema();
nullstillDeltBosted();
nullstillBarnSøktFor();
nullstillBarnIBrev();
};

useEffect(() => {
Expand All @@ -203,11 +206,11 @@ export const [DokumentutsendingProvider, useDokumentutsending] = createUseContex
};
};

const hentBarnSøktForSkjemaData = (
const hentBarnIBrevSkjemaData = (
brevmal: Informasjonsbrev,
målform: Målform
): IManueltBrevRequestPåFagsak => {
const barnIBrev = skjema.felter.barnSøktFor.verdi.filter(barn => barn.merket);
const barnIBrev = skjema.felter.barnIBrev.verdi.filter(barn => barn.merket);

return {
multiselectVerdier: barnIBrev.map(
Expand Down Expand Up @@ -283,30 +286,35 @@ export const [DokumentutsendingProvider, useDokumentutsending] = createUseContex
});

case DokumentÅrsak.TIL_FORELDER_MED_SELVSTENDIG_RETT_VI_HAR_FÅTT_F016_KAN_SØKE_OM_BARNETRYGD:
return hentBarnSøktForSkjemaData(
return hentBarnIBrevSkjemaData(
Informasjonsbrev.INFORMASJONSBREV_TIL_FORELDER_MED_SELVSTENDIG_RETT_VI_HAR_FÅTT_F016_KAN_SØKE_OM_BARNETRYGD,
målform.verdi ?? Målform.NB
);
case DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_GJORT_VEDTAK_TIL_ANNEN_FORELDER:
return hentBarnSøktForSkjemaData(
return hentBarnIBrevSkjemaData(
Informasjonsbrev.INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_GJORT_VEDTAK_TIL_ANNEN_FORELDER,
målform.verdi ?? Målform.NB
);
case DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_FÅTT_EN_SØKNAD_FRA_ANNEN_FORELDER:
return hentBarnSøktForSkjemaData(
return hentBarnIBrevSkjemaData(
Informasjonsbrev.INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_FÅTT_EN_SØKNAD_FRA_ANNEN_FORELDER,
målform.verdi ?? Målform.NB
);
case DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL:
return hentBarnSøktForSkjemaData(
return hentBarnIBrevSkjemaData(
Informasjonsbrev.INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL,
målform.verdi ?? Målform.NB
);
case DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER:
return hentBarnSøktForSkjemaData(
return hentBarnIBrevSkjemaData(
Informasjonsbrev.INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER,
målform.verdi ?? Målform.NB
);
case DokumentÅrsak.KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV:
return hentBarnIBrevSkjemaData(
Informasjonsbrev.INFORMASJONSBREV_KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV,
målform.verdi ?? Målform.NB
);
}
} else {
throw Error('Bruker ikke hentet inn og vi kan ikke sende inn skjema');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ const FjernBarnKnapp = styled(Button)`

interface IProps {
barn: IBarnMedOpplysninger;
barnSøktForFelt: Felt<IBarnMedOpplysninger[]>;
barnIBrevFelt: Felt<IBarnMedOpplysninger[]>;
}

const BarnCheckbox: React.FC<IProps> = ({ barn, barnSøktForFelt }) => {
const BarnCheckbox: React.FC<IProps> = ({ barn, barnIBrevFelt }) => {
const navnOgIdentTekst = lagBarnLabel(barn);

return (
Expand All @@ -63,12 +63,12 @@ const BarnCheckbox: React.FC<IProps> = ({ barn, barnSøktForFelt }) => {
id={`fjern__${barn.ident}`}
size={'small'}
onClick={() => {
barnSøktForFelt.validerOgSettFelt([
...barnSøktForFelt.verdi.filter(
barnSøktFor =>
barnSøktFor.ident !== barn.ident ||
barnSøktFor.navn !== barn.navn ||
barnSøktFor.fødselsdato !== barn.fødselsdato
barnIBrevFelt.validerOgSettFelt([
...barnIBrevFelt.verdi.filter(
barnIBrev =>
barnIBrev.ident !== barn.ident ||
barnIBrev.navn !== barn.navn ||
barnIBrev.fødselsdato !== barn.fødselsdato
),
]);
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@ import { isoStringTilDate } from '../../../../utils/dato';
import LeggTilBarn from '../../../Felleskomponenter/LeggTilBarn';

interface IProps {
barnSøktForFelt: Felt<IBarnMedOpplysninger[]>;
barnIBrevFelt: Felt<IBarnMedOpplysninger[]>;
visFeilmeldinger: boolean;
settVisFeilmeldinger: (visFeilmeldinger: boolean) => void;
tittel: string;
}

const BarnSøktForSkjema = (props: IProps) => {
const BarnIBrevSkjema = (props: IProps) => {
const { manuelleBrevmottakerePåFagsak } = useFagsakContext();
const { barnSøktForFelt, visFeilmeldinger, settVisFeilmeldinger } = props;
const { barnIBrevFelt, visFeilmeldinger, settVisFeilmeldinger } = props;
const { harInnloggetSaksbehandlerSkrivetilgang } = useApp();

const sorterteBarn = barnSøktForFelt.verdi.sort(
const sorterteBarn = barnIBrevFelt.verdi.sort(
(a: IBarnMedOpplysninger, b: IBarnMedOpplysninger) => {
if (!a.fødselsdato) {
return 1;
Expand All @@ -43,8 +44,8 @@ const BarnSøktForSkjema = (props: IProps) => {
);

const oppdaterBarnMedNyMerketStatus = (barnaSomErMerket: string[]) => {
barnSøktForFelt.validerOgSettFelt(
barnSøktForFelt.verdi.map((barnMedOpplysninger: IBarnMedOpplysninger) => ({
barnIBrevFelt.validerOgSettFelt(
barnIBrevFelt.verdi.map((barnMedOpplysninger: IBarnMedOpplysninger) => ({
...barnMedOpplysninger,
merket: barnaSomErMerket.includes(barnMedOpplysninger.ident),
}))
Expand All @@ -53,9 +54,9 @@ const BarnSøktForSkjema = (props: IProps) => {

return (
<CheckboxGroup
{...barnSøktForFelt.hentNavBaseSkjemaProps(visFeilmeldinger)}
legend={'Hvilke barn er søkt for?'}
value={barnSøktForFelt.verdi
{...barnIBrevFelt.hentNavBaseSkjemaProps(visFeilmeldinger)}
legend={props.tittel}
value={barnIBrevFelt.verdi
.filter((barn: IBarnMedOpplysninger) => barn.merket)
.map((barn: IBarnMedOpplysninger) => barn.ident)}
onChange={(barnaSomErMerket: string[]) => {
Expand All @@ -72,12 +73,12 @@ const BarnSøktForSkjema = (props: IProps) => {
))}

<LeggTilBarn
barnaMedOpplysninger={barnSøktForFelt}
barnaMedOpplysninger={barnIBrevFelt}
manuelleBrevmottakere={manuelleBrevmottakerePåFagsak}
vurderErLesevisning={() => !harInnloggetSaksbehandlerSkrivetilgang()}
/>
</CheckboxGroup>
);
};

export default BarnSøktForSkjema;
export default BarnIBrevSkjema;
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { FileTextIcon } from '@navikt/aksel-icons';
import { Alert, Button, Fieldset, Heading, Label, Loader, Select } from '@navikt/ds-react';
import { RessursStatus } from '@navikt/familie-typer';

import BarnSøktForSkjema from './BarnSøktFor/BarnSøktForSkjema';
import BarnIBrevSkjema from './BarnIBrev/BarnIBrevSkjema';
import DeltBostedSkjema from './DeltBosted/DeltBostedSkjema';
import KanSøkeSkjema from './KanSøke/KanSøkeSkjema';
import { useApp } from '../../../context/AppContext';
Expand Down Expand Up @@ -58,6 +58,11 @@ const StyledBrevmottakereAlert = styled(BrevmottakereAlert)`
margin: 1rem 0;
`;

enum BarnIBrevÅrsak {
BARN_SØKT_FOR,
BARN_BOSATT_MED_SØKER,
}

const DokumentutsendingSkjema: React.FC<Props> = ({ bruker }) => {
const {
hentForhåndsvisningPåFagsak,
Expand All @@ -79,17 +84,29 @@ const DokumentutsendingSkjema: React.FC<Props> = ({ bruker }) => {

const { manuelleBrevmottakerePåFagsak } = useFagsakContext();

const årsakVerdi = skjema.felter.årsak.verdi;
const { toggles } = useApp();

const barnSøktForÅrsaker = [
DokumentÅrsak.TIL_FORELDER_MED_SELVSTENDIG_RETT_VI_HAR_FÅTT_F016_KAN_SØKE_OM_BARNETRYGD,
DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_FÅTT_EN_SØKNAD_FRA_ANNEN_FORELDER,
DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_GJORT_VEDTAK_TIL_ANNEN_FORELDER,
DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL,
DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER,
];
const finnBarnIBrevÅrsak = (årsak: DokumentÅrsak | undefined): BarnIBrevÅrsak | undefined => {
switch (årsak) {
case DokumentÅrsak.TIL_FORELDER_MED_SELVSTENDIG_RETT_VI_HAR_FÅTT_F016_KAN_SØKE_OM_BARNETRYGD:
case DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_FÅTT_EN_SØKNAD_FRA_ANNEN_FORELDER:
case DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_GJORT_VEDTAK_TIL_ANNEN_FORELDER:
case DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL:
case DokumentÅrsak.TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER:
return BarnIBrevÅrsak.BARN_SØKT_FOR;
case DokumentÅrsak.KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV:
return BarnIBrevÅrsak.BARN_BOSATT_MED_SØKER;
default:
return undefined;
}
};

const { toggles } = useApp();
const barnIBrevÅrsakTilTittel: Record<BarnIBrevÅrsak, string> = {
[BarnIBrevÅrsak.BARN_SØKT_FOR]: 'Hvilke barn er søkt for?',
[BarnIBrevÅrsak.BARN_BOSATT_MED_SØKER]: 'Hvilke barn er bosatt med søker?',
};

const barnIBrevÅrsak = finnBarnIBrevÅrsak(skjema.felter.årsak.verdi);

useEffect(() => {
hentDistribusjonskanal(bruker.personIdent);
Expand Down Expand Up @@ -206,11 +223,12 @@ const DokumentutsendingSkjema: React.FC<Props> = ({ bruker }) => {
/>
)}

{årsakVerdi !== undefined && barnSøktForÅrsaker.includes(årsakVerdi) && (
<BarnSøktForSkjema
barnSøktForFelt={skjema.felter.barnSøktFor}
{barnIBrevÅrsak != undefined && (
<BarnIBrevSkjema
barnIBrevFelt={skjema.felter.barnIBrev}
visFeilmeldinger={skjema.visFeilmeldinger}
settVisFeilmeldinger={settVisfeilmeldinger}
tittel={barnIBrevÅrsakTilTittel[barnIBrevÅrsak]}
/>
)}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export enum Informasjonsbrev {
INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_GJORT_VEDTAK_TIL_ANNEN_FORELDER = 'INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HAR_GJORT_VEDTAK_TIL_ANNEN_FORELDER',
INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL = 'INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_VARSEL_OM_ÅRLIG_KONTROLL',
INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER = 'INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER',
INFORMASJONSBREV_KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV = 'INFORMASJONSBREV_KAN_HA_RETT_TIL_PENGESTØTTE_FRA_NAV',
}

export const brevmaler: Record<Brevmal, string> = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ interface IProps {
skalFeltetVises?: (avhengigheter: Avhengigheter) => boolean;
}

export const useBarnSøktForFelter = ({ avhengigheter, skalFeltetVises }: IProps) => {
export const useBarnIBrevFelter = ({ avhengigheter, skalFeltetVises }: IProps) => {
const { bruker: brukerRessurs } = useFagsakContext();

const barnSøktFor = useFelt<IBarnMedOpplysninger[]>({
const barnIBrev = useFelt<IBarnMedOpplysninger[]>({
verdi: [],
valideringsfunksjon: felt => {
return felt.verdi.some((barn: IBarnMedOpplysninger) => barn.merket)
Expand Down Expand Up @@ -49,12 +49,12 @@ export const useBarnSøktForFelter = ({ avhengigheter, skalFeltetVises }: IProps
else return [];
};

const nullstillBarnSøktFor = () => {
barnSøktFor.validerOgSettFelt(hentBarnMedOpplysningerFraBruker());
const nullstillBarnIBrev = () => {
barnIBrev.validerOgSettFelt(hentBarnMedOpplysningerFraBruker());
};

return {
barnSøktFor,
nullstillBarnSøktFor,
barnIBrev,
nullstillBarnIBrev,
};
};

0 comments on commit 920077a

Please sign in to comment.