diff --git a/src/barnetilsyn/BarnetilsynApp.tsx b/src/barnetilsyn/BarnetilsynApp.tsx index 6eb1feccb..ecc61160e 100644 --- a/src/barnetilsyn/BarnetilsynApp.tsx +++ b/src/barnetilsyn/BarnetilsynApp.tsx @@ -74,11 +74,16 @@ const BarnetilsynApp = () => { const oppdaterSøknadMedBarn = (person: IPerson, barneliste: IBarn[]) => { const barnMedLabels = oppdaterBarnMedLabel(barneliste, intl); - settSøknad && - settSøknad((prevSøknad) => ({ + settSøknad((prevSøknad) => { + const prevBarn = prevSøknad.person.barn; + + const oppdatertBarn = [...prevBarn, ...barnMedLabels]; + + return { ...prevSøknad, - person: { ...person, barn: barnMedLabels }, - })); + person: { ...person, barn: oppdatertBarn }, + }; + }); }; const fetchToggles = () => { @@ -95,7 +100,6 @@ const BarnetilsynApp = () => { ]) .then(() => settFetching(false)) .catch(() => settFetching(false)); - // eslint-disable-next-line }, []); useEffect(() => { diff --git a/src/barnetilsyn/BarnetilsynContext.tsx b/src/barnetilsyn/BarnetilsynContext.tsx index c3421b33b..681ec39b8 100644 --- a/src/barnetilsyn/BarnetilsynContext.tsx +++ b/src/barnetilsyn/BarnetilsynContext.tsx @@ -3,7 +3,7 @@ import createUseContext from 'constate'; import tomPerson from '../mock/initialState.json'; import { EBosituasjon } from '../models/steg/bosituasjon'; import { ISpørsmål, ISvar } from '../models/felles/spørsmålogsvar'; -import { ISøknad, ForrigeSøknad } from './models/søknad'; +import { ForrigeSøknad, ISøknad } from './models/søknad'; import { hentDokumentasjonTilFlersvarSpørsmål, oppdaterDokumentasjonTilEtSvarSpørsmål, @@ -29,7 +29,6 @@ import { oppdaterBarneliste, oppdaterBarnIBarneliste } from '../utils/barn'; import { LocaleType } from '../language/typer'; import { dagensDato, formatIsoDate } from '../utils/dato'; -// ----------- CONTEXT ----------- const initialState = (intl: LokalIntlShape): ISøknad => { return { person: tomPerson, @@ -95,18 +94,38 @@ const [BarnetilsynSøknadProvider, useBarnetilsynSøknad] = createUseContext( }; const hentForrigeSøknadBarnetilsyn = async (): Promise => { - return hentDataFraForrigeBarnetilsynSøknad().then( - (tidligereVersjon?: ForrigeSøknad) => { - if (tidligereVersjon) { - settSøknad((prevSøknad) => ({ - ...prevSøknad, - ...tidligereVersjon, - })); - } - } + const forrigeSøknad = await hentDataFraForrigeBarnetilsynSøknad(); + if (forrigeSøknad) { + settSøknad((prevSøknad) => ({ + ...prevSøknad, + ...forrigeSøknad, + person: { + ...prevSøknad.person, + barn: [ + ...forrigeSøknad.person.barn, + ...finnNyeBarnSidenForrigeSøknad(prevSøknad, forrigeSøknad), + ], + }, + })); + } + }; + + const finnNyeBarnSidenForrigeSøknad = ( + prevSøknad: ISøknad, + forrigeSøknad: ForrigeSøknad + ) => { + return prevSøknad.person.barn.filter( + (barn) => + !forrigeSøknad.person.barn.some( + (prevBarn) => prevBarn.ident.verdi === barn.ident.verdi + ) ); }; + useEffect(() => { + console.log('søknad i barnetilsynContext: ', søknad); + }, [søknad]); + const mellomlagreBarnetilsyn = (steg: string) => { const utfyltSøknad = { søknad: søknad, diff --git a/src/barnetilsyn/Forside.tsx b/src/barnetilsyn/Forside.tsx index 35a16069d..5ace3c237 100644 --- a/src/barnetilsyn/Forside.tsx +++ b/src/barnetilsyn/Forside.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React from 'react'; import { usePersonContext } from '../context/PersonContext'; import { useBarnetilsynSøknad } from './BarnetilsynContext'; import Environment from '../Environment'; diff --git "a/src/barnetilsyn/models/s\303\270knad.ts" "b/src/barnetilsyn/models/s\303\270knad.ts" index c75995603..96869d7d0 100644 --- "a/src/barnetilsyn/models/s\303\270knad.ts" +++ "b/src/barnetilsyn/models/s\303\270knad.ts" @@ -7,7 +7,7 @@ import { ISivilstatus } from '../../models/steg/omDeg/sivilstatus'; import { IMedlemskap } from '../../models/steg/omDeg/medlemskap'; import { IDokumentasjon } from '../../models/steg/dokumentasjon'; import { IAktivitet } from '../../models/steg/aktivitet/aktivitet'; -import { IPerson } from '../../models/søknad/person'; +import { IPerson, IPersonTilGjenbruk } from '../../models/søknad/person'; import { IAdresseopplysninger } from '../../models/steg/adresseopplysninger'; export interface ISøknad { @@ -30,4 +30,5 @@ export interface ForrigeSøknad { sivilstatus: ISivilstatus; medlemskap: IMedlemskap; bositusjon: IBosituasjon; + person: IPersonTilGjenbruk; } diff --git a/src/barnetilsyn/steg/1-omdeg/OmDeg.tsx b/src/barnetilsyn/steg/1-omdeg/OmDeg.tsx index e3d3e8e6d..e8f47662b 100644 --- a/src/barnetilsyn/steg/1-omdeg/OmDeg.tsx +++ b/src/barnetilsyn/steg/1-omdeg/OmDeg.tsx @@ -4,12 +4,12 @@ import { erSivilstandSpørsmålBesvart, erStegFerdigUtfylt, erÅrsakEnsligBesvart, + søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring, } from '../../../helpers/steg/omdeg'; import { useBarnetilsynSøknad } from '../../BarnetilsynContext'; import { IMedlemskap } from '../../../models/steg/omDeg/medlemskap'; import Medlemskap from '../../../søknad/steg/1-omdeg/medlemskap/Medlemskap'; import Personopplysninger from '../../../søknad/steg/1-omdeg/personopplysninger/Personopplysninger'; -import { ISøker } from '../../../models/søknad/person'; import { ISpørsmålBooleanFelt } from '../../../models/søknad/søknadsfelter'; import Sivilstatus from '../../../søknad/steg/1-omdeg/sivilstatus/Sivilstatus'; import { ISivilstatus } from '../../../models/steg/omDeg/sivilstatus'; @@ -53,15 +53,6 @@ const OmDeg: FC = () => { }); }; - const settSøker = (søker: ISøker) => { - settSøknad((prevSoknad: ISøknad) => { - return { - ...prevSoknad, - person: { ...søknad.person, søker: søker }, - }; - }); - }; - const settSøkerBorPåRegistrertAdresse = ( søkerBorPåRegistrertAdresse: ISpørsmålBooleanFelt ) => { @@ -95,16 +86,14 @@ const OmDeg: FC = () => { }); }; - const søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring = - søker.erStrengtFortrolig || - søknad.søkerBorPåRegistrertAdresse?.verdi === true || - søknad.adresseopplysninger?.harMeldtAdresseendring?.verdi === true; + const erSøkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring = + søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring(søker, søknad); const erAlleSpørsmålBesvart = erStegFerdigUtfylt( sivilstatus, søker.sivilstand, medlemskap, - søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring + erSøkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring ); return ( @@ -119,7 +108,6 @@ const OmDeg: FC = () => { > { stønadstype={Stønadstype.barnetilsyn} /> - + { settDokumentasjonsbehov(spørsmål, svar, svarHuketAv); }; - const erAlleFelterUtfylt = hvaErDinArbeidssituasjon.svarid.every((id) => + const erAlleFelterUtfylt = hvaErDinArbeidssituasjon?.svarid?.every((id) => erAktivitetSeksjonFerdigUtfylt(id, arbeidssituasjon, false) ); diff --git a/src/barnetilsyn/steg/9-kvittering/Kvittering.tsx b/src/barnetilsyn/steg/9-kvittering/Kvittering.tsx index 8f76dbddb..b448dc1dd 100644 --- a/src/barnetilsyn/steg/9-kvittering/Kvittering.tsx +++ b/src/barnetilsyn/steg/9-kvittering/Kvittering.tsx @@ -61,6 +61,8 @@ const Kvittering: React.FC = () => { søknad.sivilstatus.årsakEnslig?.svarid === EBegrunnelse.samlivsbruddForeldre; + console.log('kvittering søknad: ', søknad); + return søknad.innsendingsdato ? ( + !!ident && erGyldigFødselsnummer(ident); + +export const erFødselsdatoUtfyltOgGyldigEllerTomtFelt = ( + fødselsdato?: string +) => erGyldigDato(fødselsdato) || fødselsdato === ''; + +export const finnTypeBarnForMedForelder = ( + barn: IBarn, + forelderidenterMedBarn: Map +) => { + const alleBarnMedBarnetsForeldre = barn.forelder?.ident?.verdi + ? forelderidenterMedBarn.get(barn.forelder?.ident?.verdi) + : []; + + const harBarnetsMedforelderFlereBarn = + !!alleBarnMedBarnetsForeldre && alleBarnMedBarnetsForeldre.length > 1; + + return harBarnetsMedforelderFlereBarn + ? alleBarnMedBarnetsForeldre?.findIndex((b) => b.id === barn.id) === 0 + ? TypeBarn.BARN_MED_OPPRINNELIG_FORELDERINFORMASJON + : TypeBarn.BARN_MED_KOPIERT_FORELDERINFORMASJON + : TypeBarn.BARN_UTEN_FELLES_FORELDERINFORMASJON; +}; + +export const finnFørsteBarnTilHverForelder = ( + barneListe: IBarn[], + barn: IBarn +) => { + const andreBarnMedForelder: IBarn[] = barneListe.filter((b) => { + return b !== barn && b.forelder; + }); + + const unikeForeldreIDer = Array.from( + new Set(andreBarnMedForelder.map((b) => b.forelder?.id)) + ); + + return unikeForeldreIDer + .map((id) => { + if (!id) return null; + return andreBarnMedForelder.find((b) => b.forelder?.id === id); + }) + .filter(Boolean) as IBarn[]; +}; + +export const skalOmAndreForelderVises = ( + barn: IBarn, + førsteBarnTilHverForelder: IBarn[], + lagtTilAnnenForelderId: 'annen-forelder', + barnHarSammeForelder: boolean | undefined, + forelder: IForelder +) => { + return ( + (!barn.medforelder?.verdi && førsteBarnTilHverForelder.length === 0) || + barn.annenForelderId === lagtTilAnnenForelderId || + (førsteBarnTilHverForelder.length > 0 && barnHarSammeForelder === false) || + (barnHarSammeForelder === false && + (barn.harSammeAdresse.verdi || + harValgtSvar(forelder.skalBarnetBoHosSøker?.verdi))) + ); +}; + +export const skalBorAnnenForelderINorgeVises = ( + barn: IBarn, + typeBarn: TypeBarn, + barnHarSammeForelder: boolean | undefined, + forelder: IForelder, + ident: ITekstFelt | undefined, + fødselsdato: IDatoFelt | null | undefined, + kjennerIkkeIdent: boolean +) => { + return ( + (typeBarn !== TypeBarn.BARN_MED_KOPIERT_FORELDERINFORMASJON && + !!barn.medforelder?.verdi) || + (!barnHarSammeForelder && + !forelder.kanIkkeOppgiAnnenForelderFar?.verdi && + harValgtSvar(forelder?.navn?.verdi) && + (harValgtSvar(ident?.verdi || fødselsdato?.verdi) || kjennerIkkeIdent)) + ); +}; + +export const harValgtBorISammeHusEllerBorIkkeINorge = (forelder: IForelder) => { + const { borAnnenForelderISammeHus } = forelder; + return ( + (harValgtSvar(borAnnenForelderISammeHus?.verdi) && + borAnnenForelderISammeHus?.svarid !== EBorAnnenForelderISammeHus.ja) || + harValgtSvar(forelder.borAnnenForelderISammeHusBeskrivelse?.verdi) || + !forelder.borINorge?.verdi + ); +}; diff --git a/src/helpers/steg/bosituasjon.ts b/src/helpers/steg/bosituasjon.ts index 3dc791b6c..34144dc63 100644 --- a/src/helpers/steg/bosituasjon.ts +++ b/src/helpers/steg/bosituasjon.ts @@ -1,11 +1,11 @@ import { ESøkerDelerBolig, IBosituasjon } from '../../models/steg/bosituasjon'; -import { ESvar } from '../../models/felles/spørsmålogsvar'; import { harFyltUtSamboerDetaljer } from '../../utils/person'; import { IPersonDetaljer } from '../../models/søknad/person'; import { harValgtSvar } from '../../utils/spørsmålogsvar'; import { erDatoGyldigOgInnaforBegrensninger } from '../../components/dato/utils'; import { DatoBegrensning } from '../../components/dato/Datovelger'; import { stringHarVerdiOgErIkkeTom } from '../../utils/typer'; +import { IDatoFelt } from '../../models/søknad/søknadsfelter'; const harPlanerOmÅBliSamboerEllerSkalGifteSeg = (bosituasjon: IBosituasjon) => { const { skalGifteSegEllerBliSamboer } = bosituasjon; @@ -36,6 +36,25 @@ const harFerdigUtfyltOmSamboer = ( : harSattIdent(samboerDetaljer?.ident?.verdi) || harSattFødselsdato(samboerDetaljer?.fødselsdato?.verdi)); +export const erDatoSkalGifteSegEllerBliSamboerFremEllerTilbakeITid = ( + datoSkalGifteSegEllerBliSamboer: IDatoFelt | undefined +) => { + if (!datoSkalGifteSegEllerBliSamboer) { + return false; + } + + return ( + erDatoGyldigOgInnaforBegrensninger( + datoSkalGifteSegEllerBliSamboer.verdi, + DatoBegrensning.FremtidigeDatoer + ) || + erDatoGyldigOgInnaforBegrensninger( + datoSkalGifteSegEllerBliSamboer.verdi, + DatoBegrensning.TidligereDatoer + ) + ); +}; + const harFerdigUtfyltPlanerOmÅBliSamboerEllerBliGift = ( bosituasjon: IBosituasjon ): boolean => { @@ -45,15 +64,16 @@ const harFerdigUtfyltPlanerOmÅBliSamboerEllerBliGift = ( vordendeSamboerEktefelle, } = bosituasjon; + const erSattDatoSkalGifteSegEllerBliSamboerFremEllerTilbakeITid = + erDatoSkalGifteSegEllerBliSamboerFremEllerTilbakeITid( + datoSkalGifteSegEllerBliSamboer + ); + return !!( (skalGifteSegEllerBliSamboer && skalGifteSegEllerBliSamboer?.verdi === false) || (harPlanerOmÅBliSamboerEllerSkalGifteSeg(bosituasjon) && - datoSkalGifteSegEllerBliSamboer && - erDatoGyldigOgInnaforBegrensninger( - datoSkalGifteSegEllerBliSamboer.verdi, - DatoBegrensning.FremtidigeDatoer - ) && + erSattDatoSkalGifteSegEllerBliSamboerFremEllerTilbakeITid && harFerdigUtfyltOmSamboer(vordendeSamboerEktefelle, false)) ); }; diff --git a/src/helpers/steg/forelder.ts b/src/helpers/steg/forelder.ts index abdf6177b..f55b46a6e 100644 --- a/src/helpers/steg/forelder.ts +++ b/src/helpers/steg/forelder.ts @@ -10,21 +10,32 @@ import { ESvar, ISpørsmål, ISvar } from '../../models/felles/spørsmålogsvar' import { harValgtSvar } from '../../utils/spørsmålogsvar'; import { erDatoGyldigOgInnaforBegrensninger } from '../../components/dato/utils'; import { DatoBegrensning } from '../../components/dato/Datovelger'; +import { harValgtBorISammeHusEllerBorIkkeINorge } from './barnetsBostedEndre'; +import { stringHarVerdiOgErIkkeTom } from '../../utils/typer'; export const erAlleForeldreUtfylt = (foreldre: IForelder[]) => foreldre.every((forelder) => erForelderUtfylt(forelder)); +export const utfyltBorINorge = (forelder: IForelder) => { + const { borINorge, land } = forelder; + return ( + borINorge?.verdi === true || + (borINorge?.verdi === false && stringHarVerdiOgErIkkeTom(land?.verdi)) + ); +}; + export const erForelderUtfylt = (forelder: IForelder): boolean | undefined => { - const { borINorge, land, avtaleOmDeltBosted } = forelder; - const utfyltBorINorge = - borINorge?.verdi || (borINorge?.verdi === false && land?.verdi !== ''); + const { avtaleOmDeltBosted } = forelder; const utfyltAvtaleDeltBosted = harValgtSvar(avtaleOmDeltBosted?.verdi); + const forelderInfoOgSpørsmålBesvart: boolean | undefined = - utfyltBorINorge && + utfyltBorINorge(forelder) && utfyltAvtaleDeltBosted && utfyltNødvendigeSamværSpørsmål(forelder) && - utfyltNødvendigBostedSpørsmål(forelder); + utfyltNødvendigBostedSpørsmål(forelder) && + harValgtBorISammeHusEllerBorIkkeINorge(forelder) && + visSpørsmålHvisIkkeSammeForelder(forelder); const kanIkkeOppgiAnnenForelderRuteUtfylt = utfyltNødvendigSpørsmålUtenOppgiAnnenForelder(forelder); @@ -41,12 +52,11 @@ export const utfyltNødvendigSpørsmålUtenOppgiAnnenForelder = ( kanIkkeOppgiAnnenForelderFar, } = forelder; - const pgaDonorBarn = hvorforIkkeOppgi?.svarid === EHvorforIkkeOppgi.donorbarn; + const pgaDonorBarn = hvorforIkkeOppgi?.verdi === EHvorforIkkeOppgi.donor; const pgaAnnet = - hvorforIkkeOppgi?.svarid === EHvorforIkkeOppgi.annet && + hvorforIkkeOppgi?.verdi === EHvorforIkkeOppgi.Annet && harValgtSvar(forelder?.ikkeOppgittAnnenForelderBegrunnelse?.verdi) && ikkeOppgittAnnenForelderBegrunnelse?.verdi !== hvorforIkkeOppgi?.verdi; - return kanIkkeOppgiAnnenForelderFar?.verdi && (pgaDonorBarn || pgaAnnet); }; @@ -57,7 +67,7 @@ export const utfyltNødvendigeSamværSpørsmål = (forelder: IForelder) => { harDereSkriftligSamværsavtale, hvordanPraktiseresSamværet, } = forelder; - const harIkkeAvtaleOmDeltBosted = avtaleOmDeltBosted?.svarid === ESvar.NEI; + const harIkkeAvtaleOmDeltBosted = avtaleOmDeltBosted?.verdi === false; if ( harIkkeAvtaleOmDeltBosted && @@ -75,7 +85,7 @@ export const utfyltNødvendigeSamværSpørsmål = (forelder: IForelder) => { else return true; }; -export const utfyltNødvendigBostedSpørsmål = (forelder?: IForelder) => { +export const utfyltNødvendigBostedSpørsmål = (forelder: IForelder) => { const utfyltBorISammeHus = forelder?.borINorge?.verdi && forelder?.borAnnenForelderISammeHus?.svarid === @@ -93,9 +103,10 @@ export const utfyltNødvendigBostedSpørsmål = (forelder?: IForelder) => { : false; const utfyltBoddSammenFør = - forelder?.boddSammenFør?.svarid === ESvar.JA + forelder?.boddSammenFør?.verdi === true ? harValgtSvar(forelder?.boddSammenFør?.verdi) && harFlyttetFraDato : harValgtSvar(forelder?.boddSammenFør?.verdi); + const utfyltHvorMyeSammen = forelder?.hvorMyeSammen?.svarid === EHvorMyeSammen.møtesUtenom ? harValgtSvar(forelder.beskrivSamværUtenBarn?.verdi) @@ -117,6 +128,7 @@ export const harForelderSamværMedBarn = (svarid: string | undefined) => { return false; } }; + export const harSkriftligSamværsavtale = (svarid: string | undefined) => { switch (svarid) { case EHarSkriftligSamværsavtale.jaKonkreteTidspunkter: @@ -179,3 +191,22 @@ export const harSkriftligAvtaleOmDeltBosted = ( spørsmål.søknadid === EForelder.avtaleOmDeltBosted && svar.id === ESvar.JA ); }; + +export const slettIrrelevantPropertiesHvisHuketAvKanIkkeOppgiAnnenForelder = ( + nyForelder: IForelder +) => { + delete nyForelder.navn; + delete nyForelder.fødselsdato; + delete nyForelder.ident; + delete nyForelder.id; + delete nyForelder.borAnnenForelderISammeHus; + delete nyForelder.borAnnenForelderISammeHusBeskrivelse; + delete nyForelder.harAnnenForelderSamværMedBarn; + delete nyForelder.avtaleOmDeltBosted; + delete nyForelder.borINorge; + delete nyForelder.land; + delete nyForelder.boddSammenFør; + delete nyForelder.flyttetFra; + delete nyForelder.hvorMyeSammen; + delete nyForelder.beskrivSamværUtenBarn; +}; diff --git a/src/helpers/steg/omdeg.ts b/src/helpers/steg/omdeg.ts index 630007051..dd596b1a3 100644 --- a/src/helpers/steg/omdeg.ts +++ b/src/helpers/steg/omdeg.ts @@ -16,6 +16,10 @@ import { erSøkerSkilt, erSøkerUgift, } from '../../utils/sivilstatus'; +import { ISøker } from '../../models/søknad/person'; +import { ISøknad } from '../../models/søknad/søknad'; +import { ISøknad as ISøknadBT } from '../../barnetilsyn/models/søknad'; +import { ISøknad as ISøknadSK } from '../../skolepenger/models/søknad'; export const hentSivilstatus = (statuskode?: string) => { switch (statuskode) { @@ -176,6 +180,17 @@ export const erSivilstandSpørsmålBesvart = ( return true; }; +export const søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring = ( + søker: ISøker, + søknad: ISøknad | ISøknadBT | ISøknadSK +) => { + return ( + søker?.erStrengtFortrolig || + søknad.søkerBorPåRegistrertAdresse?.verdi === true || + søknad.adresseopplysninger?.harMeldtAdresseendring?.verdi === true + ); +}; + export const erStegFerdigUtfylt = ( sivilstatus: ISivilstatus, sivilstand: string, diff --git a/src/index.tsx b/src/index.tsx index fef6d9f25..24d469f61 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,6 +1,5 @@ import './utils/polyfills'; import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; - import '@navikt/ds-css'; import './App.css'; import './overgangsstønad/Forside.css'; @@ -8,10 +7,8 @@ import './overgangsstønad/Søknadsdialog.css'; import './components/feil/Feilside.css'; import './components/spørsmål/Spørsmål.css'; import './components/side/Side.css'; - import './overgangsstønad/steg/4-barnasbosted/BarnasBosted.css'; import './søknad/steg/7-oppsummering/Oppsummering.css'; - import './arbeidssøkerskjema/side/Side.css'; import './arbeidssøkerskjema/Oppsummering.css'; import './arbeidssøkerskjema/Forside.css'; diff --git a/src/language/tekster_en.ts b/src/language/tekster_en.ts index 44beec4b1..47ece092f 100644 --- a/src/language/tekster_en.ts +++ b/src/language/tekster_en.ts @@ -116,6 +116,7 @@ export default { 'sivilstatus.kode.SKILT': 'Divorced', 'sivilstatus.kode.SEPARERT': 'Separated', 'sivilstatus.kode.PARTNER': 'Partner', + 'sivilstatus.kode.REGISTRERT_PARTNER': 'Registered partner', 'sivilstatus.kode.SEPARERT_PARTNER': 'Separated', 'sivilstatus.kode.SKILT_PARTNER': 'Divorced', 'sivilstatus.kode.GJENLEVENDE_PARTNER': 'Surviving partner', diff --git a/src/language/tekster_nb.ts b/src/language/tekster_nb.ts index 618a34d3d..9785aa63b 100644 --- a/src/language/tekster_nb.ts +++ b/src/language/tekster_nb.ts @@ -115,6 +115,7 @@ export default { 'sivilstatus.kode.SKILT': 'Skilt', 'sivilstatus.kode.SEPARERT': 'Separert', 'sivilstatus.kode.PARTNER': 'Partner', + 'sivilstatus.kode.REGISTRERT_PARTNER': 'Registrert partner', 'sivilstatus.kode.SEPARERT_PARTNER': 'Separert', 'sivilstatus.kode.SKILT_PARTNER': 'Skilt', 'sivilstatus.kode.GJENLEVENDE_PARTNER': 'Gjenlevende partner', diff --git a/src/models/steg/barnasbosted.ts b/src/models/steg/barnasbosted.ts index d3a070a5b..182ec3f9f 100644 --- a/src/models/steg/barnasbosted.ts +++ b/src/models/steg/barnasbosted.ts @@ -29,6 +29,15 @@ export enum ESkalBarnetBoHosSøker { } export enum EHvorforIkkeOppgi { + donor = 'Donor', donorbarn = 'donorbarn', annet = 'annet', + Annet = 'Annet', + Other = 'Other', +} + +export enum TypeBarn { + BARN_MED_OPPRINNELIG_FORELDERINFORMASJON = 'BARN_MED_OPPRINNELIG_FORELDERINFORMASJON', + BARN_MED_KOPIERT_FORELDERINFORMASJON = 'BARN_MED_KOPIERT_FORELDERINFORMASJON', + BARN_UTEN_FELLES_FORELDERINFORMASJON = 'BARN_UTEN_FELLES_FORELDERINFORMASJON', } diff --git "a/src/models/s\303\270knad/person.ts" "b/src/models/s\303\270knad/person.ts" index 8319380a6..4084e9b65 100644 --- "a/src/models/s\303\270knad/person.ts" +++ "b/src/models/s\303\270knad/person.ts" @@ -7,6 +7,10 @@ export interface IPerson { barn: IBarn[]; } +export interface IPersonTilGjenbruk { + barn: IBarn[]; +} + export interface ISøker { fnr: string; forkortetNavn: string; diff --git "a/src/overgangsst\303\270nad/steg/1-omdeg/OmDeg.tsx" "b/src/overgangsst\303\270nad/steg/1-omdeg/OmDeg.tsx" index 4aff8fd71..c99d03f6e 100644 --- "a/src/overgangsst\303\270nad/steg/1-omdeg/OmDeg.tsx" +++ "b/src/overgangsst\303\270nad/steg/1-omdeg/OmDeg.tsx" @@ -8,6 +8,7 @@ import { logSidevisningOvergangsstonad } from '../../../utils/amplitude'; import { erStegFerdigUtfylt, erÅrsakEnsligBesvart, + søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring, } from '../../../helpers/steg/omdeg'; import { IMedlemskap } from '../../../models/steg/omDeg/medlemskap'; import { ISøker } from '../../../models/søknad/person'; @@ -97,16 +98,14 @@ const OmDeg: FC = () => { }); }; - const søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring = - søker.erStrengtFortrolig || - søknad.søkerBorPåRegistrertAdresse?.verdi === true || - søknad.adresseopplysninger?.harMeldtAdresseendring?.verdi === true; + const erSøkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring = + søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring(søker, søknad); const erAlleSpørsmålBesvart = erStegFerdigUtfylt( søknad.sivilstatus, søker.sivilstand, søknad.medlemskap, - søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring + erSøkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring ); const harFyltUtSeparasjonSpørsmålet = @@ -131,7 +130,6 @@ const OmDeg: FC = () => { > { settHarMeldtAdresseendring={settHarMeldtAdresseendring} stønadstype={Stønadstype.overgangsstønad} /> - + { }); }; - const søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring = - søker.erStrengtFortrolig || - søknad.søkerBorPåRegistrertAdresse?.verdi === true || - søknad.adresseopplysninger?.harMeldtAdresseendring?.verdi === true; + const erSøkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring = + søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring(søker, søknad); const erAlleSpørsmålBesvart = erStegFerdigUtfylt( søknad.sivilstatus, søker.sivilstand, søknad.medlemskap, - søkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring + erSøkerBorPåRegistrertAdresseEllerHarMeldtAdresseendring ); const harFyltUtSeparasjonSpørsmålet = @@ -128,7 +127,6 @@ const OmDeg: FC = () => { > { stønadstype={Stønadstype.skolepenger} /> - + void; settDokumentasjonsbehov: ( spørsmål: ISpørsmål, valgtSvar: ISvar, @@ -73,7 +72,6 @@ const Personopplysninger: React.FC = ({ }); settDokumentasjonsbehov(spørsmål, valgtSvar); }; - return ( @@ -117,7 +115,7 @@ const Personopplysninger: React.FC = ({ - {!søker.erStrengtFortrolig && ( + {!søker?.erStrengtFortrolig && ( <> = ({ const intl = useLokalIntlContext(); const { person } = usePersonContext(); const sivilstand = person.søker.sivilstand; - const { erUformeltGift, datoFlyttetFraHverandre, datoSøktSeparasjon } = sivilstatus; @@ -80,7 +79,6 @@ const Sivilstatus: React.FC = ({ }, }); }; - return ( {erSøkerGift(sivilstand) && ( diff --git "a/src/s\303\270knad/steg/1-omdeg/sivilstatus/S\303\270kerErUgift.tsx" "b/src/s\303\270knad/steg/1-omdeg/sivilstatus/S\303\270kerErUgift.tsx" index 87592991d..c4772e858 100644 --- "a/src/s\303\270knad/steg/1-omdeg/sivilstatus/S\303\270kerErUgift.tsx" +++ "b/src/s\303\270knad/steg/1-omdeg/sivilstatus/S\303\270kerErUgift.tsx" @@ -38,8 +38,8 @@ const SøkerErUgift: React.FC = ({ const harSvartJaUformeltSeparertEllerSkilt = sivilstatus.erUformeltSeparertEllerSkilt?.svarid === ESvar.JA; - const harSvartPåUformeltGiftSpørsmålet = - erUformeltGift?.hasOwnProperty('verdi'); + const harSvartPåUformeltGiftSpørsmålet = erUformeltGift?.verdi !== undefined; + return ( <> diff --git "a/src/s\303\270knad/steg/2-bosituasjon/S\303\270kerSkalFlytteSammenEllerF\303\245Samboer.tsx" "b/src/s\303\270knad/steg/2-bosituasjon/S\303\270kerSkalFlytteSammenEllerF\303\245Samboer.tsx" index c5ce7f6ee..7fd334d73 100644 --- "a/src/s\303\270knad/steg/2-bosituasjon/S\303\270kerSkalFlytteSammenEllerF\303\245Samboer.tsx" +++ "b/src/s\303\270knad/steg/2-bosituasjon/S\303\270kerSkalFlytteSammenEllerF\303\245Samboer.tsx" @@ -15,11 +15,11 @@ import { hentBooleanFraValgtSvar, } from '../../../utils/spørsmålogsvar'; import { hentTekst } from '../../../utils/søknad'; -import { erDatoGyldigOgInnaforBegrensninger } from '../../../components/dato/utils'; import { DatoBegrensning, Datovelger, } from '../../../components/dato/Datovelger'; +import { erDatoSkalGifteSegEllerBliSamboerFremEllerTilbakeITid } from '../../../helpers/steg/bosituasjon'; interface Props { settBosituasjon: (bosituasjon: IBosituasjon) => void; @@ -51,6 +51,9 @@ const SøkerSkalFlytteSammenEllerFåSamboer: FC = ({ valgtSvar: ISvar ) => { const svar: boolean = hentBooleanFraValgtSvar(valgtSvar); + console.log('svar', svar); + console.log('valgtSvar', valgtSvar); + console.log('bosituasjon', bosituasjon); const nullstilltBosituasjon: IBosituasjon = { delerBoligMedAndreVoksne: delerBoligMedAndreVoksne, skalGifteSegEllerBliSamboer: { @@ -60,6 +63,12 @@ const SøkerSkalFlytteSammenEllerFåSamboer: FC = ({ verdi: svar, }, }; + + if (svar === false) { + delete bosituasjon.datoSkalGifteSegEllerBliSamboer; + delete bosituasjon.vordendeSamboerEktefelle; + } + harValgtSvar(svar) && bosituasjon.delerBoligMedAndreVoksne.svarid === ESøkerDelerBolig.tidligereSamboerFortsattRegistrertPåAdresse @@ -95,6 +104,12 @@ const SøkerSkalFlytteSammenEllerFåSamboer: FC = ({ id: 'datovelger.nårSkalDetteSkje', }); + const erSattDatoSkalGifteSegEllerBliSamboerFremEllerTilbakeITid = + erDatoSkalGifteSegEllerBliSamboerFremEllerTilbakeITid( + datoSkalGifteSegEllerBliSamboer + ); + + console.log('bosituasjon component', bosituasjon); return ( <> @@ -116,23 +131,19 @@ const SøkerSkalFlytteSammenEllerFåSamboer: FC = ({ }} /> - {datoSkalGifteSegEllerBliSamboer?.verdi && - erDatoGyldigOgInnaforBegrensninger( - datoSkalGifteSegEllerBliSamboer.verdi, - DatoBegrensning.FremtidigeDatoer - ) && ( - - - - )} + {erSattDatoSkalGifteSegEllerBliSamboerFremEllerTilbakeITid && ( + + + + )} ) : null} diff --git "a/src/s\303\270knad/steg/4-barnasbosted/BarnetsBostedEndre.tsx" "b/src/s\303\270knad/steg/4-barnasbosted/BarnetsBostedEndre.tsx" index 0526182f9..299ce8c84 100644 --- "a/src/s\303\270knad/steg/4-barnasbosted/BarnetsBostedEndre.tsx" +++ "b/src/s\303\270knad/steg/4-barnasbosted/BarnetsBostedEndre.tsx" @@ -11,25 +11,33 @@ import { harValgtSvar } from '../../../utils/spørsmålogsvar'; import { hentTekst } from '../../../utils/søknad'; import { erForelderUtfylt, + utfyltBorINorge, utfyltNødvendigSpørsmålUtenOppgiAnnenForelder, visSpørsmålHvisIkkeSammeForelder, } from '../../../helpers/steg/forelder'; import BorForelderINorge from './bostedOgSamvær/BorForelderINorge'; -import { ESvar } from '../../../models/felles/spørsmålogsvar'; import BorAnnenForelderISammeHus from './ikkesammeforelder/BorAnnenForelderISammeHus'; import BoddSammenFør from './ikkesammeforelder/BoddSammenFør'; import HvorMyeSammen from './ikkesammeforelder/HvorMyeSammen'; import { hentUid } from '../../../utils/autentiseringogvalidering/uuid'; import { erGyldigDato } from '../../../utils/dato'; -import { EBorAnnenForelderISammeHus } from '../../../models/steg/barnasbosted'; +import { TypeBarn } from '../../../models/steg/barnasbosted'; import SeksjonGruppe from '../../../components/gruppe/SeksjonGruppe'; import BarnetsAndreForelderTittel from './BarnetsAndreForelderTittel'; import LocaleTekst from '../../../language/LocaleTekst'; -import { erGyldigFødselsnummer } from 'nav-faker/dist/personidentifikator/helpers/fodselsnummer-utils'; import { Alert, BodyShort, Button, Label } from '@navikt/ds-react'; import { SettDokumentasjonsbehovBarn } from '../../../models/søknad/søknad'; import styled from 'styled-components'; import { lagtTilAnnenForelderId } from '../../../utils/barn'; +import { + erFødselsdatoUtfyltOgGyldigEllerTomtFelt, + erIdentUtfyltOgGyldig, + finnFørsteBarnTilHverForelder, + finnTypeBarnForMedForelder, + harValgtBorISammeHusEllerBorIkkeINorge, + skalBorAnnenForelderINorgeVises, + skalOmAndreForelderVises, +} from '../../../helpers/steg/barnetsBostedEndre'; const AlertMedTopMargin = styled(Alert)` margin-top: 1rem; @@ -39,21 +47,11 @@ const visBostedOgSamværSeksjon = ( forelder: IForelder, visesBorINorgeSpørsmål: boolean ) => { - const borForelderINorgeSpm = - forelder.borINorge?.svarid === ESvar.JA || - (forelder.land && forelder.land?.verdi !== ''); - return visesBorINorgeSpørsmål - ? borForelderINorgeSpm + ? utfyltBorINorge(forelder) : erGyldigDato(forelder.fødselsdato?.verdi); }; -enum TypeBarn { - BARN_MED_OPPRINNELIG_FORELDERINFORMASJON = 'BARN_MED_OPPRINNELIG_FORELDERINFORMASJON', - BARN_MED_KOPIERT_FORELDERINFORMASJON = 'BARN_MED_KOPIERT_FORELDERINFORMASJON', - BARN_UTEN_FELLES_FORELDERINFORMASJON = 'BARN_UTEN_FELLES_FORELDERINFORMASJON', -} - interface Props { barn: IBarn; settAktivIndex: React.Dispatch>; @@ -78,7 +76,6 @@ const BarnetsBostedEndre: React.FC = ({ forelderidenterMedBarn, }) => { const intl = useLokalIntlContext(); - const [forelder, settForelder] = useState( barn.forelder ? { @@ -97,47 +94,16 @@ const BarnetsBostedEndre: React.FC = ({ forelder.fødselsdato?.verdi ? true : false ); - const { - borAnnenForelderISammeHus, - boddSammenFør, - flyttetFra, - fødselsdato, - ident, - } = forelder; + const { boddSammenFør, flyttetFra, fødselsdato, ident } = forelder; - const erIdentUtfyltOgGyldig = (ident?: string): boolean => - !!ident && erGyldigFødselsnummer(ident); - const erFødselsdatoUtfyltOgGyldigEllerTomtFelt = (fødselsdato?: string) => - erGyldigDato(fødselsdato) || fødselsdato === ''; const harForelderFraPdl = barn?.medforelder?.verdi?.navn || false; - const andreBarnMedForelder: IBarn[] = barneListe.filter((b) => { - return b !== barn && b.forelder; - }); - - const unikeForeldreIDer = Array.from( - new Set(andreBarnMedForelder.map((b) => b.forelder?.id)) + const førsteBarnTilHverForelder = finnFørsteBarnTilHverForelder( + barneListe, + barn ); - const førsteBarnTilHverForelder = unikeForeldreIDer - .map((id) => { - if (!id) return null; - return andreBarnMedForelder.find((b) => b.forelder?.id === id); - }) - .filter(Boolean) as IBarn[]; - - const alleBarnMedBarnetsForeldre = barn.forelder?.ident?.verdi - ? forelderidenterMedBarn.get(barn.forelder?.ident?.verdi) - : []; - - const harBarnetsMedforelderFlereBarn = - !!alleBarnMedBarnetsForeldre && alleBarnMedBarnetsForeldre.length > 1; - - const typeBarn = harBarnetsMedforelderFlereBarn - ? alleBarnMedBarnetsForeldre.findIndex((b) => b.id === barn.id) === 0 - ? TypeBarn.BARN_MED_OPPRINNELIG_FORELDERINFORMASJON - : TypeBarn.BARN_MED_KOPIERT_FORELDERINFORMASJON - : TypeBarn.BARN_UTEN_FELLES_FORELDERINFORMASJON; + const typeBarn = finnTypeBarnForMedForelder(barn, forelderidenterMedBarn); const [barnHarSammeForelder, settBarnHarSammeForelder] = useState< boolean | undefined @@ -165,27 +131,27 @@ const BarnetsBostedEndre: React.FC = ({ ); }; - const visOmAndreForelder = - (!barn.medforelder?.verdi && førsteBarnTilHverForelder.length === 0) || - barn.annenForelderId === lagtTilAnnenForelderId || - (førsteBarnTilHverForelder.length > 0 && barnHarSammeForelder === false) || - (barnHarSammeForelder === false && - (barn.harSammeAdresse.verdi || - harValgtSvar(forelder.skalBarnetBoHosSøker?.verdi))); + const visOmAndreForelder = skalOmAndreForelderVises( + barn, + førsteBarnTilHverForelder, + lagtTilAnnenForelderId, + barnHarSammeForelder, + forelder + ); - const visBorAnnenForelderINorge = - (typeBarn !== TypeBarn.BARN_MED_KOPIERT_FORELDERINFORMASJON && - !!barn.medforelder?.verdi) || - (!barnHarSammeForelder && - !forelder.kanIkkeOppgiAnnenForelderFar?.verdi && - harValgtSvar(forelder?.navn?.verdi) && - (harValgtSvar(ident?.verdi || fødselsdato?.verdi) || kjennerIkkeIdent)); + const visBorAnnenForelderINorge = skalBorAnnenForelderINorgeVises( + barn, + typeBarn, + barnHarSammeForelder, + forelder, + ident, + fødselsdato, + kjennerIkkeIdent + ); const skalFylleUtHarBoddSammenFør = - (harValgtSvar(borAnnenForelderISammeHus?.verdi) && - borAnnenForelderISammeHus?.svarid !== EBorAnnenForelderISammeHus.ja) || - harValgtSvar(forelder.borAnnenForelderISammeHusBeskrivelse?.verdi) || - !forelder.borINorge?.verdi; + harValgtBorISammeHusEllerBorIkkeINorge(forelder) && + utfyltBorINorge(forelder); return (
@@ -201,6 +167,7 @@ const BarnetsBostedEndre: React.FC = ({ settDokumentasjonsbehovForBarn={settDokumentasjonsbehovForBarn} /> )} + {(barn.harSammeAdresse?.verdi || harValgtSvar(forelder.skalBarnetBoHosSøker?.verdi)) && ( @@ -218,6 +185,7 @@ const BarnetsBostedEndre: React.FC = ({ oppdaterBarn={oppdaterBarnISøknaden} /> )} + {visOmAndreForelder && ( = ({ settSisteBarnUtfylt={settSisteBarnUtfylt} /> )} + {barn.medforelder?.verdi && ( <> @@ -270,7 +239,7 @@ const BarnetsBostedEndre: React.FC = ({ {!barnHarSammeForelder && visSpørsmålHvisIkkeSammeForelder(forelder) && ( <> - {forelder.borINorge?.verdi && ( + {utfyltBorINorge(forelder) && ( = ({ settForelder={settForelder} /> )} - {(boddSammenFør?.svarid === ESvar.NEI || - erGyldigDato(flyttetFra?.verdi)) && ( + + {((skalFylleUtHarBoddSammenFør && + boddSammenFør?.verdi === false) || + (skalFylleUtHarBoddSammenFør && + erGyldigDato(flyttetFra?.verdi))) && ( = ({ {forelder.borAnnenForelderISammeHus.verdi}
) : null} - {forelder?.boddSammenFør?.svarid ? ( + {harVerdi(forelder?.boddSammenFør?.verdi) ? (
- {forelder.boddSammenFør.svarid === ESvar.JA + {forelder.boddSammenFør?.verdi ? hentTekst(ESvarTekstid.JA, intl) : hentTekst(ESvarTekstid.NEI, intl)} diff --git "a/src/s\303\270knad/steg/4-barnasbosted/OmAndreForelder.tsx" "b/src/s\303\270knad/steg/4-barnasbosted/OmAndreForelder.tsx" index efb5d5196..b58a339cc 100644 --- "a/src/s\303\270knad/steg/4-barnasbosted/OmAndreForelder.tsx" +++ "b/src/s\303\270knad/steg/4-barnasbosted/OmAndreForelder.tsx" @@ -11,6 +11,7 @@ import { hentUid } from '../../../utils/autentiseringogvalidering/uuid'; import { useLokalIntlContext } from '../../../context/LokalIntlContext'; import IdentEllerFødselsdatoGruppe from '../../../components/gruppe/IdentEllerFødselsdatoGruppe'; import { Checkbox, ErrorMessage, Textarea, TextField } from '@navikt/ds-react'; +import { slettIrrelevantPropertiesHvisHuketAvKanIkkeOppgiAnnenForelder } from '../../../helpers/steg/forelder'; interface Props { settForelder: (verdi: IForelder) => void; @@ -29,7 +30,6 @@ const OmAndreForelder: React.FC = ({ }) => { const intl = useLokalIntlContext(); const { fødselsdato, ident } = forelder; - const [begyntÅSkrive, settBegyntÅSkrive] = useState(false); const [feilmeldingNavn, settFeilmeldingNavn] = useState(false); const hvorforIkkeOppgiLabel = hentTekst(hvorforIkkeOppgi(intl).tekstid, intl); const jegKanIkkeOppgiLabel = hentTekst( @@ -98,13 +98,9 @@ const OmAndreForelder: React.FC = ({ const nyForelder = { ...forelder }; if (avhuket) { - delete nyForelder.navn; - delete nyForelder.fødselsdato; - delete nyForelder.ident; - delete nyForelder.id; + slettIrrelevantPropertiesHvisHuketAvKanIkkeOppgiAnnenForelder(nyForelder); settFeilmeldingNavn(false); } else { - settBegyntÅSkrive(false); delete nyForelder.ikkeOppgittAnnenForelderBegrunnelse; delete nyForelder.hvorforIkkeOppgi; delete nyForelder.kanIkkeOppgiAnnenForelderFar; @@ -122,32 +118,26 @@ const OmAndreForelder: React.FC = ({ }; const settHvorforIkkeOppgi = (spørsmål: ISpørsmål, svar: ISvar) => { - settBegyntÅSkrive(false); + const verdi = svar.id === EHvorforIkkeOppgi.donorbarn ? 'Donor' : ''; const nyForelder = { ...forelder, - ikkeOppgittAnnenForelderBegrunnelse: { - label: hentTekst('barnasbosted.spm.hvorforikkeoppgi', intl), - verdi: svar.svar_tekst, - }, [spørsmål.søknadid]: { spørsmålid: spørsmål.søknadid, svarid: svar.id, label: hentTekst(spørsmål.tekstid, intl), verdi: svar.svar_tekst, }, + ikkeOppgittAnnenForelderBegrunnelse: { + label: hentTekst('barnasbosted.spm.hvorforikkeoppgi', intl), + verdi: verdi, + }, }; - if (svar.id === EHvorforIkkeOppgi.donorbarn) { - delete forelder.ikkeOppgittAnnenForelderBegrunnelse; - } - settForelder(nyForelder); }; const settIkkeOppgittAnnenForelderBegrunnelse = (begrunnelse: string) => { - settBegyntÅSkrive(true); - settForelder({ ...forelder, ikkeOppgittAnnenForelderBegrunnelse: { @@ -157,6 +147,10 @@ const OmAndreForelder: React.FC = ({ }); }; + const hvorforIkkeOppgiÅrsakErAnnet = + forelder.hvorforIkkeOppgi?.verdi === EHvorforIkkeOppgi.Annet || + forelder.hvorforIkkeOppgi?.verdi === EHvorforIkkeOppgi.Other; + return ( <> @@ -178,7 +172,13 @@ const OmAndreForelder: React.FC = ({ ? settFeilmeldingNavn(true) : settFeilmeldingNavn(false) } - value={forelder.navn ? forelder.navn?.verdi : ''} + value={ + forelder.navn + ? forelder.navn?.verdi === 'ikke oppgitt' + ? '' + : forelder.navn?.verdi + : '' + } label={hentTekst('person.navn', intl)} disabled={forelder.kanIkkeOppgiAnnenForelderFar?.verdi} /> @@ -225,16 +225,11 @@ const OmAndreForelder: React.FC = ({ /> )} - {forelder.hvorforIkkeOppgi?.svarid === EHvorforIkkeOppgi.annet && ( + {hvorforIkkeOppgiÅrsakErAnnet && (