diff --git a/_mocks/featureToggles.ts b/_mocks/featureToggles.ts index 0105e149da..b76ff18cfe 100644 --- a/_mocks/featureToggles.ts +++ b/_mocks/featureToggles.ts @@ -93,4 +93,8 @@ export const featureTogglesFactory = () => [ key: 'NYTT_SKJEMA_FOR_9003', value: process.env.VITE_NYTT_SKJEMA_FOR_9003, }, + { + key: 'AUTOMATISK_VURDERT_MEDLEMSKAP', + value: process.env.AUTOMATISK_VURDERT_MEDLEMSKAP, + }, ]; diff --git a/deploy/dev-fss-k9saksbehandling.yml b/deploy/dev-fss-k9saksbehandling.yml index 1469b4c0c9..e5cabc73d8 100644 --- a/deploy/dev-fss-k9saksbehandling.yml +++ b/deploy/dev-fss-k9saksbehandling.yml @@ -115,3 +115,5 @@ spec: value: "true" - name: NYTT_SKJEMA_FOR_9003 value: "false" + - name: AUTOMATISK_VURDERT_MEDLEMSKAP + value: "true" diff --git a/deploy/prod-fss-k9saksbehandling.yml b/deploy/prod-fss-k9saksbehandling.yml index c4a31b9cec..9908c20657 100644 --- a/deploy/prod-fss-k9saksbehandling.yml +++ b/deploy/prod-fss-k9saksbehandling.yml @@ -112,3 +112,5 @@ spec: value: "false" - name: NYTT_SKJEMA_FOR_9003 value: "false" + - name: AUTOMATISK_VURDERT_MEDLEMSKAP + value: "false" diff --git a/envDir/.env.development b/envDir/.env.development index 42e011d5f0..517a8a7b24 100644 --- a/envDir/.env.development +++ b/envDir/.env.development @@ -19,3 +19,4 @@ VITE_NYE_NOKKELTALL=true VITE_PROSESS_VILKAR_SOKNADSFRIST=true VITE_SKILL_UT_PRIVATPERSON=true VITE_NYTT_SKJEMA_FOR_9003=true +VITE_AUTOMATISK_VURDERT_MEDLEMSKAP=true diff --git a/feature-toggles.json b/feature-toggles.json index 1ab8315a8a..53e785ee37 100644 --- a/feature-toggles.json +++ b/feature-toggles.json @@ -98,5 +98,9 @@ { "key": "NYTT_SKJEMA_FOR_9003", "value": "${NYTT_SKJEMA_FOR_9003}" + }, + { + "key": "AUTOMATISK_VURDERT_MEDLEMSKAP", + "value": "${AUTOMATISK_VURDERT_MEDLEMSKAP}" } ] diff --git a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.spec.tsx b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.spec.tsx index 21be7bffb4..f53b11b9fd 100644 --- a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.spec.tsx +++ b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.spec.tsx @@ -1,3 +1,4 @@ +import { K9sakApiKeys, requestApi } from '@k9-sak-web/sak-app/src/data/k9sakApi'; import { composeStories, StoryFn } from '@storybook/react'; import { screen, userEvent } from '@storybook/test'; import { act, render } from '@testing-library/react'; @@ -9,6 +10,7 @@ describe('MedlemskapFaktaIndex', () => { [key: string]: StoryFn>; }; it('skal formatere data ved innsending', async () => { + requestApi.mock(K9sakApiKeys.FEATURE_TOGGLE, []); const onClickSpy = vi.fn(); const props = { submitCallback: onClickSpy }; render(); diff --git a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.stories.tsx b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.stories.tsx index da1eca7879..cfd9a58439 100644 --- a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.stories.tsx +++ b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.stories.tsx @@ -417,3 +417,620 @@ VisPanelUtenAksjonspunkt.args = { harApneAksjonspunkter: false, submittable: false, }; + +export const VisPanelUtenPerioder = args => ( + +); + +VisPanelUtenPerioder.args = { + behandling: { + ansvarligSaksbehandler: 'Z994145', + behandlendeEnhetId: '4487', + behandlendeEnhetNavn: 'NAV AY sykdom i familien', + behandlingÅrsaker: [ + { + erAutomatiskRevurdering: false, + behandlingArsakType: { + kode: 'RE_ANNEN_SAK', + kodeverk: 'BEHANDLING_AARSAK', + }, + manueltOpprettet: false, + }, + ], + behandlingKoet: false, + behandlingPaaVent: false, + behandlingsfristTid: '2024-10-09', + behandlingsresultat: { + erRevurderingMedUendretUtfall: false, + type: { + kode: 'INNVILGET', + kodeverk: 'BEHANDLING_RESULTAT_TYPE', + }, + vilkårResultat: { + MEDLEMSKAPSVILKÅRET: [ + { + periode: { + fom: '2024-06-03', + tom: '2024-08-28', + }, + avslagsårsak: null, + utfall: { + kode: '-', + kodeverk: 'VILKAR_UTFALL_TYPE', + }, + }, + ], + }, + }, + behandlingResultatType: { + kode: 'INNVILGET', + kodeverk: 'BEHANDLING_RESULTAT_TYPE', + }, + endret: '2024-08-28T13:38:46.309', + endretAvBrukernavn: 'k9-sak', + erPaaVent: false, + fagsakId: 1346602, + sakstype: { + kode: 'PSB', + kodeverk: 'FAGSAK_YTELSE', + }, + førsteÅrsak: { + erAutomatiskRevurdering: false, + behandlingArsakType: { + kode: 'RE_ANNEN_SAK', + kodeverk: 'BEHANDLING_AARSAK', + }, + manueltOpprettet: false, + }, + gjeldendeVedtak: false, + id: 1353953, + links: [], + opprettet: '2024-08-28T13:19:43', + sprakkode: { + kode: 'NB', + kodeverk: 'SPRAAK_KODE', + }, + status: { + kode: 'UTRED', + kodeverk: 'BEHANDLING_STATUS', + }, + stegTilstand: { + stegType: { + kode: 'FORVEDSTEG', + kodeverk: 'BEHANDLING_STEG_TYPE', + }, + stegStatus: { + kode: 'UTGANG', + kodeverk: 'BEHANDLING_STEG_STATUS', + }, + tidsstempel: '2024-08-28T13:38:46.309+02:00', + }, + toTrinnsBehandling: true, + type: { + kode: 'BT-002', + kodeverk: 'BEHANDLING_TYPE', + }, + uuid: 'd0e8071b-f54d-48b4-9a64-b7eaaa7aefcf', + behandlingHenlagt: false, + versjon: 234, + }, + medlemskap: { + medlemskapPerioder: [], + perioder: [], + personopplysninger: { + '2024-06-03': { + aktoerId: '2471000012451', + diskresjonskode: null, + fnr: null, + adresser: [ + { + adresselinje1: 'Skippergata 81', + adresselinje2: null, + adresselinje3: null, + adresseType: { + kode: 'BOSTEDSADRESSE', + kodeverk: 'ADRESSE_TYPE', + }, + land: 'NOR', + mottakerNavn: 'Familie Ordknapp', + postNummer: '4614', + poststed: null, + }, + ], + pleietrengendePart: { + aktoerId: '2067342699855', + diskresjonskode: null, + fnr: null, + adresser: [ + { + adresselinje1: 'Skippergata 81', + adresselinje2: null, + adresselinje3: null, + adresseType: { + kode: 'BOSTEDSADRESSE', + kodeverk: 'ADRESSE_TYPE', + }, + land: 'NOR', + mottakerNavn: 'Pusekatt Ökänd', + postNummer: '4614', + poststed: null, + }, + ], + avklartPersonstatus: { + orginalPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + overstyrtPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + }, + dodsdato: null, + ektefelle: null, + fodselsdato: '2017-10-31', + harVerge: false, + navBrukerKjonn: { + kode: 'M', + kodeverk: 'BRUKER_KJOENN', + }, + navn: 'Pusekatt Ökänd', + nummer: null, + personstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + region: { + kode: 'NORDEN', + kodeverk: 'REGION', + }, + sivilstand: { + kode: 'UGIF', + kodeverk: 'SIVILSTAND_TYPE', + }, + statsborgerskap: { + kode: 'NOR', + kodeverk: 'LANDKODER', + navn: 'NOR', + }, + }, + avklartPersonstatus: { + orginalPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + overstyrtPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + }, + barn: [ + { + aktoerId: '2067342699855', + diskresjonskode: null, + fnr: null, + adresser: [ + { + adresselinje1: 'Skippergata 81', + adresselinje2: null, + adresselinje3: null, + adresseType: { + kode: 'BOSTEDSADRESSE', + kodeverk: 'ADRESSE_TYPE', + }, + land: 'NOR', + mottakerNavn: 'Pusekatt Ökänd', + postNummer: '4614', + poststed: null, + }, + ], + avklartPersonstatus: { + orginalPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + overstyrtPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + }, + dodsdato: null, + ektefelle: null, + fodselsdato: '2017-10-31', + harVerge: false, + navBrukerKjonn: { + kode: 'M', + kodeverk: 'BRUKER_KJOENN', + }, + navn: 'Pusekatt Ökänd', + nummer: null, + personstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + region: { + kode: 'NORDEN', + kodeverk: 'REGION', + }, + sivilstand: { + kode: 'UGIF', + kodeverk: 'SIVILSTAND_TYPE', + }, + statsborgerskap: { + kode: 'NOR', + kodeverk: 'LANDKODER', + navn: 'NOR', + }, + }, + ], + barnSoktFor: [ + { + aktoerId: '2067342699855', + diskresjonskode: null, + fnr: null, + adresser: [ + { + adresselinje1: 'Skippergata 81', + adresselinje2: null, + adresselinje3: null, + adresseType: { + kode: 'BOSTEDSADRESSE', + kodeverk: 'ADRESSE_TYPE', + }, + land: 'NOR', + mottakerNavn: 'Pusekatt Ökänd', + postNummer: '4614', + poststed: null, + }, + ], + avklartPersonstatus: { + orginalPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + overstyrtPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + }, + dodsdato: null, + ektefelle: null, + fodselsdato: '2017-10-31', + harVerge: false, + navBrukerKjonn: { + kode: 'M', + kodeverk: 'BRUKER_KJOENN', + }, + navn: 'Pusekatt Ökänd', + nummer: null, + personstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + region: { + kode: 'NORDEN', + kodeverk: 'REGION', + }, + sivilstand: { + kode: 'UGIF', + kodeverk: 'SIVILSTAND_TYPE', + }, + statsborgerskap: { + kode: 'NOR', + kodeverk: 'LANDKODER', + navn: 'NOR', + }, + }, + ], + dodsdato: null, + ektefelle: null, + fodselsdato: '1994-03-24', + harVerge: false, + navBrukerKjonn: { + kode: 'K', + kodeverk: 'BRUKER_KJOENN', + }, + navn: 'Familie Ordknapp', + nummer: null, + personstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + region: { + kode: 'NORDEN', + kodeverk: 'REGION', + }, + sivilstand: { + kode: 'UGIF', + kodeverk: 'SIVILSTAND_TYPE', + }, + statsborgerskap: { + kode: 'NOR', + kodeverk: 'LANDKODER', + navn: 'NOR', + }, + }, + '2024-08-10': { + aktoerId: '2471000012451', + diskresjonskode: null, + fnr: null, + adresser: [ + { + adresselinje1: 'Fergegata 1', + adresselinje2: null, + adresselinje3: null, + adresseType: { + kode: 'BOSTEDSADRESSE', + kodeverk: 'ADRESSE_TYPE', + }, + land: 'NOR', + mottakerNavn: 'Leverpostei Kjent', + postNummer: '4614', + poststed: null, + }, + ], + pleietrengendePart: { + aktoerId: '2067342699855', + diskresjonskode: null, + fnr: null, + adresser: [ + { + adresselinje1: 'Skippergata 81', + adresselinje2: null, + adresselinje3: null, + adresseType: { + kode: 'BOSTEDSADRESSE', + kodeverk: 'ADRESSE_TYPE', + }, + land: 'NOR', + mottakerNavn: 'Pusekatt Ökänd', + postNummer: '4614', + poststed: null, + }, + ], + avklartPersonstatus: { + orginalPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + overstyrtPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + }, + dodsdato: null, + ektefelle: null, + fodselsdato: '2017-10-31', + harVerge: false, + navBrukerKjonn: { + kode: 'M', + kodeverk: 'BRUKER_KJOENN', + }, + navn: 'Pusekatt Ökänd', + nummer: null, + personstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + region: { + kode: 'NORDEN', + kodeverk: 'REGION', + }, + sivilstand: { + kode: 'UGIF', + kodeverk: 'SIVILSTAND_TYPE', + }, + statsborgerskap: { + kode: 'NOR', + kodeverk: 'LANDKODER', + navn: 'NOR', + }, + }, + avklartPersonstatus: { + orginalPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + overstyrtPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + }, + barn: [ + { + aktoerId: '2067342699855', + diskresjonskode: null, + fnr: null, + adresser: [ + { + adresselinje1: 'Skippergata 81', + adresselinje2: null, + adresselinje3: null, + adresseType: { + kode: 'BOSTEDSADRESSE', + kodeverk: 'ADRESSE_TYPE', + }, + land: 'NOR', + mottakerNavn: 'Pusekatt Ökänd', + postNummer: '4614', + poststed: null, + }, + ], + avklartPersonstatus: { + orginalPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + overstyrtPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + }, + dodsdato: null, + ektefelle: null, + fodselsdato: '2017-10-31', + harVerge: false, + navBrukerKjonn: { + kode: 'M', + kodeverk: 'BRUKER_KJOENN', + }, + navn: 'Pusekatt Ökänd', + nummer: null, + personstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + region: { + kode: 'NORDEN', + kodeverk: 'REGION', + }, + sivilstand: { + kode: 'UGIF', + kodeverk: 'SIVILSTAND_TYPE', + }, + statsborgerskap: { + kode: 'NOR', + kodeverk: 'LANDKODER', + navn: 'NOR', + }, + }, + ], + barnSoktFor: [ + { + aktoerId: '2067342699855', + diskresjonskode: null, + fnr: null, + adresser: [ + { + adresselinje1: 'Skippergata 81', + adresselinje2: null, + adresselinje3: null, + adresseType: { + kode: 'BOSTEDSADRESSE', + kodeverk: 'ADRESSE_TYPE', + }, + land: 'NOR', + mottakerNavn: 'Pusekatt Ökänd', + postNummer: '4614', + poststed: null, + }, + ], + avklartPersonstatus: { + orginalPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + overstyrtPersonstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + }, + dodsdato: null, + ektefelle: null, + fodselsdato: '2017-10-31', + harVerge: false, + navBrukerKjonn: { + kode: 'M', + kodeverk: 'BRUKER_KJOENN', + }, + navn: 'Pusekatt Ökänd', + nummer: null, + personstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + region: { + kode: 'NORDEN', + kodeverk: 'REGION', + }, + sivilstand: { + kode: 'UGIF', + kodeverk: 'SIVILSTAND_TYPE', + }, + statsborgerskap: { + kode: 'NOR', + kodeverk: 'LANDKODER', + navn: 'NOR', + }, + }, + ], + dodsdato: null, + ektefelle: null, + fodselsdato: '1994-03-24', + harVerge: false, + navBrukerKjonn: { + kode: 'K', + kodeverk: 'BRUKER_KJOENN', + }, + navn: 'Familie Ordknapp', + nummer: null, + personstatus: { + kode: 'BOSA', + kodeverk: 'PERSONSTATUS_TYPE', + }, + region: { + kode: 'NORDEN', + kodeverk: 'REGION', + }, + sivilstand: { + kode: 'UGIF', + kodeverk: 'SIVILSTAND_TYPE', + }, + statsborgerskap: { + kode: 'NOR', + kodeverk: 'LANDKODER', + navn: 'NOR', + }, + }, + }, + }, + soknad: { + begrunnelseForSenInnsending: null, + manglendeVedlegg: [ + { + arbeidsgiver: { + aktørId: null, + fødselsdato: null, + navn: 'SNILL TORPEDO', + organisasjonsNummer: '967170232', + }, + brukerHarSagtAtIkkeKommer: false, + dokumentType: { + kode: 'INNTEKTSMELDING', + kodeverk: 'DOKUMENT_TYPE_ID', + }, + }, + ], + angittePersoner: [], + mottattDato: '2024-08-28', + oppgittStartdato: '2024-06-03', + oppgittTilknytning: { + utlandsopphold: [ + { + landNavn: 'SVERIGE', + fom: '2010-01-01', + tom: '2011-01-01', + }, + ], + }, + soknadsdato: '2024-06-03', + spraakkode: { + kode: 'NB', + kodeverk: 'SPRAAK_KODE', + }, + tilleggsopplysninger: null, + søknadsperiode: { + fom: '2024-06-03', + tom: '2024-08-28', + }, + }, + fagsakPerson, + alleMerknaderFraBeslutter: {}, + readOnly: false, + submittable: true, +}; diff --git a/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.spec.tsx b/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.spec.tsx index 1585155f06..37a69615a1 100644 --- a/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.spec.tsx +++ b/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.spec.tsx @@ -1,7 +1,7 @@ +import { K9sakApiKeys, requestApi } from '@k9-sak-web/sak-app/src/data/k9sakApi'; import { composeStories, StoryFn } from '@storybook/react'; import { userEvent } from '@storybook/test'; import { act, render, screen } from '@testing-library/react'; -import React from 'react'; import * as stories from '../MedlemskapFaktaIndex.stories'; import MedlemskapInfoPanel from './MedlemskapInfoPanel'; @@ -15,6 +15,7 @@ describe('', () => { }; it('skal vise editeringsmuligheter når det finnes aksjonspunkter', async () => { + requestApi.mock(K9sakApiKeys.FEATURE_TOGGLE, []); render(); expect(screen.getByText('Vurder om søker er bosatt i Norge')).toBeInTheDocument(); expect(screen.getByText('Opplysninger oppgitt i søknaden')).toBeInTheDocument(); @@ -27,6 +28,7 @@ describe('', () => { }); it('skal kunne avklare perioder når en har dette aksjonspunktet', async () => { + requestApi.mock(K9sakApiKeys.FEATURE_TOGGLE, []); render(); expect(screen.getByText('Vurder om søker har gyldig medlemskap i perioden')).toBeInTheDocument(); expect(screen.getByText('Perioder med medlemskap')).toBeInTheDocument(); @@ -37,6 +39,7 @@ describe('', () => { }); it('skal vise informasjon uten editeringsmuligheter når det ikke finnes aksjonspunkter', () => { + requestApi.mock(K9sakApiKeys.FEATURE_TOGGLE, []); render(); expect(screen.getByText('Opplysninger oppgitt i søknaden')).toBeInTheDocument(); expect(screen.getByText('Perioder med medlemskap')).toBeInTheDocument(); @@ -45,6 +48,7 @@ describe('', () => { }); it('skal vise informasjon om opphold og bosatt informasjon', () => { + requestApi.mock(K9sakApiKeys.FEATURE_TOGGLE, []); render(); expect(screen.getByText('Opphold utenfor Norge')).toBeInTheDocument(); expect(screen.getByText('Sverige')).toBeInTheDocument(); diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/FormState.ts b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/FormState.ts index 93cb0e2e5d..0e9e64213c 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/FormState.ts +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/FormState.ts @@ -10,8 +10,8 @@ interface FixedMedlemskapPerioder { beslutningsdato: string; } -interface Foreldre { - isApplicant: any; +export interface Foreldre { + isApplicant: boolean; personopplysning: any; } diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/GrunnlagForAutomatiskVurdering.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/GrunnlagForAutomatiskVurdering.tsx new file mode 100644 index 0000000000..06825fb3d7 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/GrunnlagForAutomatiskVurdering.tsx @@ -0,0 +1,82 @@ +import { DateLabel } from '@fpsak-frontend/shared-components'; +import { KodeverkMedNavn } from '@k9-sak-web/types'; +import { Table } from '@navikt/ds-react'; +import { PersonopplysningDto } from '@navikt/k9-sak-typescript-client'; +import { useState } from 'react'; +import OppholdINorgeOgAdresser from './OppholdINorgeOgAdresser'; +import { Soknad } from './Soknad'; + +const createParent = (isApplicant: boolean, personopplysning?: PersonopplysningDto) => ({ + isApplicant, + personopplysning, +}); + +interface GrunnlagForAutomatiskVurderingProps { + alleKodeverk: { [key: string]: KodeverkMedNavn[] }; + soknad: Soknad; + personopplysninger: { + [key: string]: PersonopplysningDto; + }; +} + +const GrunnlagForAutomatiskVurdering = ({ + alleKodeverk, + soknad, + personopplysninger, +}: GrunnlagForAutomatiskVurderingProps) => { + const personopplysningerKeys = Object.keys(personopplysninger); + const [valgtPeriode, setValgtPeriode] = useState(personopplysningerKeys[0]); + let opphold = {}; + + if (soknad && soknad.oppgittTilknytning) { + const { oppgittTilknytning } = soknad; + opphold = { + utlandsopphold: oppgittTilknytning.utlandsopphold, + }; + } + + const foreldre = [createParent(true, personopplysninger[valgtPeriode])]; + if (personopplysninger?.annenPart) { + foreldre.push(createParent(false, personopplysninger.annenPart)); + } + + console.log('valgtPeriode', valgtPeriode); + + return ( + <> + + + + Gjeldende f.o.m + Opplysning + + + + {personopplysningerKeys.map(key => ( + setValgtPeriode(key)} + selected={key === valgtPeriode} + className="cursor-pointer" + > + + + + SKJÆRINGSTIDSPUNKT + + ))} + +
+ + + ); +}; + +export default GrunnlagForAutomatiskVurdering; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Medlemskap.ts b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Medlemskap.ts index d61747e952..269dcec72b 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Medlemskap.ts +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Medlemskap.ts @@ -1,4 +1,5 @@ import { Kodeverk } from '@k9-sak-web/types'; +import { PersonopplysningDto } from '@navikt/k9-sak-typescript-client'; import { Periode } from './Periode'; export interface MedlemskapPeriode { @@ -14,4 +15,7 @@ export interface Medlemskap { fom: string; medlemskapPerioder: MedlemskapPeriode[]; perioder: Periode[]; + personopplysninger?: { + [key: string]: PersonopplysningDto; + }; } diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresser.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresser.tsx new file mode 100644 index 0000000000..b7d31f9c99 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresser.tsx @@ -0,0 +1,126 @@ +import BostedSokerFaktaIndex from '@fpsak-frontend/fakta-bosted-soker'; +import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; +import { FaktaGruppe, PeriodLabel } from '@fpsak-frontend/shared-components'; +import { required } from '@fpsak-frontend/utils'; +import { KodeverkMedNavn } from '@k9-sak-web/types'; +import { BodyShort, Detail, HGrid } from '@navikt/ds-react'; +import { RadioGroupPanel } from '@navikt/ft-form-hooks'; +import countries from 'i18n-iso-countries'; +import norwegianLocale from 'i18n-iso-countries/langs/no.json'; +import { Foreldre } from './FormState'; +import { MerknaderFraBeslutter } from './MerknaderFraBeslutter'; +import { Opphold } from './Opphold'; +import styles from './oppholdINorgeOgAdresser.module.css'; + +countries.registerLocale(norwegianLocale); + +const capitalizeFirstLetter = (landNavn: string) => { + const string = landNavn.toLowerCase(); + return string.charAt(0).toUpperCase() + string.slice(1); +}; + +const formatLandNavn = (landNavn: string) => { + if (landNavn.length === 2 || landNavn.length === 3) { + if (landNavn === 'XXK') { + return 'Kosovo'; + } + return countries.getName(landNavn, 'no'); + } + return landNavn; +}; + +const lagOppholdIUtland = (utlandsOpphold: Opphold['utlandsopphold']) => + Array.isArray(utlandsOpphold) && utlandsOpphold.length > 0 ? ( + utlandsOpphold.map(u => ( +
+ + {capitalizeFirstLetter(formatLandNavn(u.landNavn))} + + + + +
+ )) + ) : ( + - + ); + +interface OppholdINorgeOgAdresserProps { + readOnly: boolean; + alleKodeverk: { [key: string]: KodeverkMedNavn[] }; + alleMerknaderFraBeslutter?: MerknaderFraBeslutter; + opphold: { + utlandsopphold?: any[]; + }; + hasBosattAksjonspunkt: boolean; + isBosattAksjonspunktClosed: boolean; + foreldre: Foreldre[]; +} + +const OppholdINorgeOgAdresser = ({ + alleMerknaderFraBeslutter, + opphold, + alleKodeverk, + hasBosattAksjonspunkt, + readOnly, + isBosattAksjonspunktClosed, + foreldre, +}: OppholdINorgeOgAdresserProps) => ( + + +
+ + Opphold utenfor Norge +
+ {!!opphold && lagOppholdIUtland(opphold.utlandsopphold)} + +
+
+ + {foreldre.map(f => ( +
+ {f.isApplicant && ( + + )} + {!f.isApplicant && ( + + )} +
+ ))} +
+ {hasBosattAksjonspunkt && ( +
+ + Søker er ikke bosatt i Norge + + ), + }, + ]} + /> +
+ )} +
+ +
+); + +export default OppholdINorgeOgAdresser; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.tsx index 05943d5eb5..4dca99e0ea 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.tsx +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.tsx @@ -1,55 +1,14 @@ -import BostedSokerFaktaIndex from '@fpsak-frontend/fakta-bosted-soker'; import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; -import { FaktaGruppe, PeriodLabel, VerticalSpacer } from '@fpsak-frontend/shared-components'; -import { required } from '@fpsak-frontend/utils'; -import { BodyShort, Detail, HGrid } from '@navikt/ds-react'; -import { RadioGroupPanel } from '@navikt/ft-form-hooks'; -import countries from 'i18n-iso-countries'; -import norwegianLocale from 'i18n-iso-countries/langs/no.json'; import { FunctionComponent } from 'react'; import { Aksjonspunkt, KodeverkMedNavn, Personopplysninger } from '@k9-sak-web/types'; import { useFormContext, useWatch } from 'react-hook-form'; import { OppholdInntektOgPerioderFormState, OppholdINorgeOgAdresserFaktaPanelFormState } from './FormState'; import { MerknaderFraBeslutter } from './MerknaderFraBeslutter'; -import { Opphold } from './Opphold'; +import OppholdINorgeOgAdresser from './OppholdINorgeOgAdresser'; import { Periode } from './Periode'; import { Soknad } from './Soknad'; -import styles from './oppholdINorgeOgAdresserFaktaPanel.module.css'; - -countries.registerLocale(norwegianLocale); - -const capitalizeFirstLetter = (landNavn: string) => { - const string = landNavn.toLowerCase(); - return string.charAt(0).toUpperCase() + string.slice(1); -}; - -const formatLandNavn = (landNavn: string) => { - if (landNavn.length === 2 || landNavn.length === 3) { - if (landNavn === 'XXK') { - return 'Kosovo'; - } - return countries.getName(landNavn, 'no'); - } - return landNavn; -}; - -const lagOppholdIUtland = (utlandsOpphold: Opphold['utlandsopphold']) => - Array.isArray(utlandsOpphold) && utlandsOpphold.length > 0 ? ( - utlandsOpphold.map(u => ( -
- - {capitalizeFirstLetter(formatLandNavn(u.landNavn))} - - - - -
- )) - ) : ( - - - ); interface OppholdINorgeOgAdresserFaktaPanelProps { readOnly: boolean; @@ -79,61 +38,15 @@ const OppholdINorgeOgAdresserFaktaPanel: FunctionComponent - -
- - Opphold utenfor Norge - - {!!opphold && lagOppholdIUtland(opphold.utlandsopphold)} - -
-
- - {foreldre.map(f => ( -
- {f.isApplicant && ( - - )} - {!f.isApplicant && ( - - )} -
- ))} -
- {hasBosattAksjonspunkt && ( -
- - Søker er ikke bosatt i Norge - - ), - }, - ]} - /> -
- )} -
-
- + ); }; const createParent = (isApplicant: boolean, personopplysning?: Personopplysninger) => ({ diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.tsx index f8c42b0f99..a9139ff537 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.tsx +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.tsx @@ -1,6 +1,6 @@ import aksjonspunktCodes, { hasAksjonspunkt } from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; -import { AksjonspunktHelpText, VerticalSpacer } from '@fpsak-frontend/shared-components'; +import { AksjonspunktHelpText, VerticalSpacer, useFeatureToggles } from '@fpsak-frontend/shared-components'; import { guid } from '@fpsak-frontend/utils'; import { Aksjonspunkt, FagsakPerson, KodeverkMedNavn } from '@k9-sak-web/types'; import { Button } from '@navikt/ds-react'; @@ -8,6 +8,7 @@ import { Form } from '@navikt/ft-form-hooks'; import React, { useMemo, useState } from 'react'; import { useForm, useWatch } from 'react-hook-form'; import { OppholdInntektOgPeriodeFormState, OppholdInntektOgPerioderFormState } from './FormState'; +import GrunnlagForAutomatiskVurdering from './GrunnlagForAutomatiskVurdering'; import { Medlemskap } from './Medlemskap'; import MedlemskapEndringerTabell from './MedlemskapEndringerTabell'; import { MerknaderFraBeslutter } from './MerknaderFraBeslutter'; @@ -155,6 +156,7 @@ export const OppholdInntektOgPerioderForm = ({ medlemskap, submitCallback, }: OppholdInntektOgPerioderFormProps) => { + const [featureToggles] = useFeatureToggles(); const initialPerioder = useMemo( () => (medlemskap.perioder || []).map(periode => ({ @@ -240,6 +242,11 @@ export const OppholdInntektOgPerioderForm = ({ const isApOpen = hasOpenAksjonspunkter || !submittable; + const erAutomatiskVurdert = + medlemskap.medlemskapPerioder.length === 0 && + medlemskap.perioder.length === 0 && + Object.keys(medlemskap.personopplysninger).length > 0; + return (
@@ -266,16 +273,25 @@ export const OppholdInntektOgPerioderForm = ({ alleMerknaderFraBeslutter={alleMerknaderFraBeslutter} /> )} + {featureToggles?.AUTOMATISK_VURDERT_MEDLEMSKAP && erAutomatiskVurdert && ( + + )} - + {!erAutomatiskVurdert && ( + + )} ); }; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/oppholdINorgeOgAdresserFaktaPanel.module.css b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/oppholdINorgeOgAdresser.module.css similarity index 100% rename from packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/oppholdINorgeOgAdresserFaktaPanel.module.css rename to packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/oppholdINorgeOgAdresser.module.css