diff --git a/apps/fp-frontend/src/behandling/fellesPaneler/fakta/MedlemskapsvilkaretFaktaInitPanel.tsx b/apps/fp-frontend/src/behandling/fellesPaneler/fakta/MedlemskapsvilkaretFaktaInitPanel.tsx index 3366834764a..c7d215e8e5d 100644 --- a/apps/fp-frontend/src/behandling/fellesPaneler/fakta/MedlemskapsvilkaretFaktaInitPanel.tsx +++ b/apps/fp-frontend/src/behandling/fellesPaneler/fakta/MedlemskapsvilkaretFaktaInitPanel.tsx @@ -15,6 +15,13 @@ import { useStandardFaktaPanelProps } from '../../felles/fakta/useStandardFaktaP const AKSJONSPUNKT_KODER: AksjonspunktKode[] = [ AksjonspunktKode.VURDER_MEDLEMSKAPSVILKÅRET, AksjonspunktKode.VURDER_FORUTGÅENDE_MEDLEMSKAPSVILKÅR, + + AksjonspunktKode.UTGÅTT_5019, + AksjonspunktKode.UTGÅTT_5020, + AksjonspunktKode.UTGÅTT_5021, + AksjonspunktKode.UTGÅTT_5023, + AksjonspunktKode.UTGÅTT_5053, + AksjonspunktKode.UTGÅTT_6012, ]; export const MedlemskapsvilkaretFaktaInitPanel = () => { diff --git a/knip.ts b/knip.ts index e978dedf4db..e9aefb6e944 100644 --- a/knip.ts +++ b/knip.ts @@ -3,7 +3,7 @@ import type { KnipConfig } from 'knip'; const config: KnipConfig = { ignore: ['.storybook/**', 'server/**', 'openapi-ts.config.ts', 'packages/types/src/apiDtoGenerert.ts'], ignoreBinaries: ['docker-compose'], - ignoreDependencies: ['glob', '@hey-api/openapi-ts'], + ignoreDependencies: ['glob'], }; export default config; diff --git a/packages/fakta/medlemskap/i18n/nb_NO.json b/packages/fakta/medlemskap/i18n/nb_NO.json index e3cae9accb3..6d58c497548 100644 --- a/packages/fakta/medlemskap/i18n/nb_NO.json +++ b/packages/fakta/medlemskap/i18n/nb_NO.json @@ -1,50 +1,4 @@ { - "MedlemskapInfoPanel.ErSokerBosattINorge": "Vurder om søker er bosatt i Norge", - "MedlemskapInfoPanel.GyldigMedlemFolketrygden": "Vurder om søker har gyldig medlemskap i perioden", - "MedlemskapInfoPanel.EOSBorgerMedOppholdsrett": "Vurder om søker er EØS-borger med oppholdsrett", - "MedlemskapInfoPanel.IkkeEOSBorgerMedLovligOpphold": "Avklar om søker har lovlig opphold", - "MedlemskapInfoPanel.HarFortsattMedlemskap": "Vurder om søker fortsatt har gyldig medlemskap i perioden", - - "MedlemskapInfoPanel.ManglerPersonopplysninger": "Saken har på dette tidspunktet ikke hentet inn personopplysninger fra register", - - "StartdatoForForeldrepengerperiodenForm.StartdatoFør2019": "Startdato kan ikke være før 01.01.2019", - "StartdatoForForeldrepengerperiodenForm.StartdatoForPerioden": "Startdato for foreldrepengeperioden", - "StartdatoForForeldrepengerperiodenForm.Vurdering": "Vurdering", - "StartdatoForForeldrepengerperiodenForm.Startdato": "Startdato som skal benyttes (fra søknad eller fødsel)", - "StartdatoForForeldrepengerperiodenForm.Oppdater": "Oppdater", - - "OppholdINorgeOgAdresserFaktaPanel.BosattAdresser": "Bostedsadresse fra folkeregisteret", - "OppholdINorgeOgAdresserFaktaPanel.Parent": "Den andre forelderen", - "OppholdINorgeOgAdresserFaktaPanel.ResidingInNorway": "Søker er bosatt i Norge", - "OppholdINorgeOgAdresserFaktaPanel.NotResidingInNorway": "Søker er ikke bosatt i Norge", - "OppholdINorgeOgAdresserFaktaPanel.OppholdINorge": "Opplysninger oppgitt i søknaden", - "OppholdINorgeOgAdresserFaktaPanel.StayingInNorway": "Opphold i Norge nå", - "OppholdINorgeOgAdresserFaktaPanel.StayingInNorwayLast12": "Opphold i Norge de siste 12 månedene", - "OppholdINorgeOgAdresserFaktaPanel.StayingInNorwayNext12": "Opphold i Norge de neste 12 månedene", - "OppholdINorgeOgAdresserFaktaPanel.Opphold": "Har opphold", - "OppholdINorgeOgAdresserFaktaPanel.IkkeOpphold": "Har ikke opphold", - "OppholdINorgeOgAdresserFaktaPanel.Yes": "Ja", - "OppholdINorgeOgAdresserFaktaPanel.No": "Nei", - - "PerioderMedMedlemskapFaktaPanel.ApplicationInformation": "Perioder med medlemskap", - "PerioderMedMedlemskapFaktaPanel.Period": "Periode", - "PerioderMedMedlemskapFaktaPanel.Coverage": "Dekning", - "PerioderMedMedlemskapFaktaPanel.Status": "Status", - "PerioderMedMedlemskapFaktaPanel.Date": "Beslutningsdato", - "PerioderMedMedlemskapFaktaPanel.Fodselsdato": "Fødselsdato: {dato}", - "PerioderMedMedlemskapFaktaPanel.Termindato": "Termindato: {dato}", - "PerioderMedMedlemskapFaktaPanel.Omsorgsovertakelse": "Dato for omsorgsovertakelse: {dato}", - "PerioderMedMedlemskapFaktaPanel.NoInformation": "Ingen registrerte opplysninger om medlemskap", - - "OppholdInntektOgPerioder.Bekreft": "Bekreft og fortsett", - "OppholdInntektOgPerioder.Overskrift": "Fakta om medlemskap", - "OppholdInntektOgPeriode.Oppdater": "Oppdater", - "OppholdInntektOgPeriode.Avbryt": "Avbryt", - - "MedlemskapEndringerTabell.GjeldeneFom": "Gjeldende f.o.m", - "MedlemskapEndringerTabell.Opplysning": "Opplysning", - - "StatusForBorgerFaktaPanel.ApplicationInformation": "Status for søker", "StatusForBorgerFaktaPanel.CitizenEEA": "EØS borger", "StatusForBorgerFaktaPanel.CitizenOutsideEEA": "Utenlandsk borger utenfor EØS", "StatusForBorgerFaktaPanel.Oppholdsrett": "Oppholdsrett", @@ -54,23 +8,6 @@ "StatusForBorgerFaktaPanel.HarLovligOpphold": "Søker har lovlig opphold", "StatusForBorgerFaktaPanel.HarIkkeLovligOpphold": "Søker har ikke lovlig opphold", - "OppholdstillatelseTabell.Overskrift": "Oppholdstillatelser", - "OppholdstillatelseTabell.Periode": "Periode", - "OppholdstillatelseTabell.Type": "Type", - "OppholdstillatelseTabell.Ukjent": "UKJENT", - - "OppholdInntektOgPeriodeForm.Periode": "Periode - {dato}", - - "BostedSokerView.ForeignAddresse": "Utenlandsadresse", - "BostedSokerView.Region": "Region", - - "BostedSokerFaktaIndex.Soker": "Søker", - - "Personstatus.Hjelpetekst": "Personstatus", - "Personstatus.Ukjent": "Ukjent", - - "MedlemskapInfoPanel.Submit": "Bekreft", - "AksjonspunktHelpText.Bosatt": "Det er usikkert om søker er bosatt i Norge. ", "AksjonspunktHelpText.Oppholdsrett": "Det er usikkert om søkeren har en gyldig oppholdstillatelse. ", "AksjonspunktHelpText.MedlPerioder": "Søker har en periode i medlemskapsregisteret. ", @@ -113,23 +50,11 @@ "OpplysningerOmUtenlandsopphold.BoNeste12.HvilkeLand": "Hvilke land og hvor lenge skal du bo der?", "OpplysningerOmUtenlandsopphold.iLand": "i {land}", - "OpplysningerOmAdresser.Soker": "Søker, {navn}", - "OpplysningerOmAdresser.Soker.Beskrivelse": "Adresser for søker registrert i folkeregisteret gyldige for de siste 12 månedene", - "OpplysningerOmAdresser.Annenpart": "Annen part{navn, select, none {} other {, {navn}}}", - "OpplysningerOmAdresser.Annenpart.Beskrivelse": "Adresser for annen part registrert i folkeregisteret gyldige på skjæringstidspunktet", - - "OpplysningerOmAdresser.Tabell.IngenAdresse": "Ingen adresser funnet for {erAnnenpart, select, true {den andre forelderen} other {søker} }.", - "OpplysningerOmAdresser.Tabell.SammeAdresse": "Den andre forelderen har samme adresse som søker på skjæringstidspunktet", - "OpplysningerOmAdresser.PeriodeLabel": "Periode", - "OpplysningerOmAdresser.AdresseLabel": "Adresse", - "OpplysningerOmAdresser.TypeLabel": "Type", - "OpplysningerOmPersonstatus.Soker": "Søker, {navn}", "OpplysningerOmPersonstatus.Annenpart": "Annen part{navn, select, none {} other {, {navn}}}", "OpplysningerOmPersonstatus.RegionLabel": "Region for statsborgerskap", "OpplysningerOmPersonstatus.PersonstatusLabel": "Personstatus", - "OpplysningerOmPersonstatus.UtvandretLabel": "Utflyttingsdato", "OpplysningerOmPersonstatus.PersonstatusIngen": "Ingen personstatus funnet for {erAnnenpart, select, true {den andre forelderen} other {søker} }.", "OpplysningerOmPersonstatus.RegionIngen": "Ingen region funnet for {erAnnenpart, select, true {den andre forelderen} other {søker} }.", "OpplysningerOmPersonstatus.Fom": "Fra og med", @@ -167,15 +92,13 @@ "MedlemskapLegacy.MedlemskapManuell.Label": "Har søker gyldig medlemskap i perioden?", "MedlemskapLegacy.ErSokerEOS.Label": "Er søker EØS borger?", - "VurderMedlemsskapAksjonspunktForm.VurderingLabel.Ordinaert": "Er medlemskapsvilkåret oppfylt?", - "VurderMedlemsskapAksjonspunktForm.VurderingLabel.Forutgaaende": "Har bruker vært medlem i 12 måneder før termin/omsorgsovertakelse?", - "VurderMedlemsskapAksjonspunktForm.VurderingLabel.ReadOnly": "Vurdering av medlemskapsvilkåret", + "VurderMedlemsskapAksjonspunktForm.Tittel.Ordinært": "Vurdering av medlemskapsvilkåret", + "VurderMedlemsskapAksjonspunktForm.Tittel.Forutgående": "Vurdering av forutgående medlemskapsvilkåret", - "VurderMedlemsskapAksjonspunktForm.AvslagsarsakLabel": "Velg en avslagsårsak", - "VurderMedlemsskapAksjonspunktForm.AvslagsarsakLabel.ReadOnly": "Avslagsårsak", - "VurderMedlemsskapAksjonspunktForm.OpphorFomLabel": "Når opphører medlemskapet?", - "VurderMedlemsskapAksjonspunktForm.OpphorFomLabel.ReadOnly": "Opphørsdato", + "MedlemskapVurderinger.VurderingLabel.Ordinært": "Er medlemskapsvilkåret oppfylt?", + "MedlemskapVurderinger.VurderingLabel.Forutgående": "Har bruker vært medlem i 12 måneder før termin/omsorgsovertakelse?", - "VurderMedlemsskapAksjonspunktForm.MedlemFomLabel": "Innflyttingsdato", - "VurderMedlemsskapAksjonspunktForm.MedlemFomLabel.ReadOnly": "Innflyttet dato" + "MedlemskapVurderinger.AvslagsarsakLabel": "Avslagsårsak", + "MedlemskapVurderinger.OpphorFomLabel": "Opphørsdato", + "MedlemskapVurderinger.MedlemFomLabel": "Innflyttingsdato" } diff --git a/packages/fakta/medlemskap/index.ts b/packages/fakta/medlemskap/index.ts index 277ea770921..5708b90cbac 100644 --- a/packages/fakta/medlemskap/index.ts +++ b/packages/fakta/medlemskap/index.ts @@ -1,6 +1,5 @@ export { MedlemskapFaktaIndex } from './src/MedlemskapFaktaIndex'; export { MedlemskapVurderinger } from './src/components/aksjonspunkt/MedlemskapVurderinger'; -export { createMedlemskapInitialValues } from './src/components/aksjonspunkt/VurderMedlemskapAksjonspunktForm'; export { MedlemskapVurdering } from './src/types/vurderingMedlemskapForm'; diff --git a/packages/fakta/medlemskap/package.json b/packages/fakta/medlemskap/package.json index 0a3210cdc2f..53b13479574 100644 --- a/packages/fakta/medlemskap/package.json +++ b/packages/fakta/medlemskap/package.json @@ -25,6 +25,7 @@ "@navikt/fp-kodeverk": "workspace:*", "@navikt/fp-types": "workspace:*", "@navikt/fp-types-avklar-aksjonspunkter": "workspace:*", + "@navikt/fp-ui-komponenter": "workspace:*", "@navikt/fp-utils": "workspace:*", "@navikt/ft-form-hooks": "10.0.2", "@navikt/ft-form-validators": "4.2.13", diff --git a/packages/fakta/medlemskap/src/MedlemskapFaktaIndex.spec.tsx b/packages/fakta/medlemskap/src/MedlemskapFaktaIndex.spec.tsx index e70247109f4..b42186d23fa 100644 --- a/packages/fakta/medlemskap/src/MedlemskapFaktaIndex.spec.tsx +++ b/packages/fakta/medlemskap/src/MedlemskapFaktaIndex.spec.tsx @@ -185,6 +185,6 @@ describe('MedlemskapFaktaIndex', () => { expect(oppholdstillatelser.getByText('Permanent oppholdstillatelse')).toBeInTheDocument(); expect(screen.getByText('Begrunn endringene')).toBeInTheDocument(); - expect(screen.getByText('Bekreft')).toBeInTheDocument(); + expect(screen.getByText('Bekreft og fortsett')).toBeInTheDocument(); }); }); diff --git a/packages/fakta/medlemskap/src/components/MedlemskapInfoPanel.tsx b/packages/fakta/medlemskap/src/components/MedlemskapInfoPanel.tsx index 0c6c9d31a6d..441a594f35a 100644 --- a/packages/fakta/medlemskap/src/components/MedlemskapInfoPanel.tsx +++ b/packages/fakta/medlemskap/src/components/MedlemskapInfoPanel.tsx @@ -1,7 +1,8 @@ import { VStack } from '@navikt/ds-react'; +import { AksjonspunktKode } from '@navikt/fp-kodeverk'; import type { Medlemskap } from '@navikt/fp-types'; -import { usePanelDataContext } from '@navikt/fp-utils'; +import { harAksjonspunkt, usePanelDataContext } from '@navikt/fp-utils'; import { VurderMedlemskapAksjonspunktForm } from './aksjonspunkt/VurderMedlemskapAksjonspunktForm'; import { VurderMedlemsskapLegacyAksjonspunktVisning } from './aksjonspunkt/VurderMedlemskapLegacyAksjonspunktVisning'; @@ -23,20 +24,15 @@ interface Props { * Har ansvar for å vise faktapanelene for medlemskap. */ export const MedlemskapInfoPanel = ({ medlemskap }: Props) => { - const { aksjonspunkterForPanel, alleKodeverk, fagsak, isReadOnly } = usePanelDataContext(); + const { aksjonspunkterForPanel, alleKodeverk, fagsak, harÅpentAksjonspunkt } = usePanelDataContext(); - const aksjonspunkt = aksjonspunkterForPanel.find(ap => ap.status === 'OPPR' || ap.status === 'UTFO'); - const harAksjonspunkt = !!aksjonspunkt; + const harVilkårAP = + harAksjonspunkt(AksjonspunktKode.VURDER_MEDLEMSKAPSVILKÅRET, aksjonspunkterForPanel) || + harAksjonspunkt(AksjonspunktKode.VURDER_FORUTGÅENDE_MEDLEMSKAPSVILKÅR, aksjonspunkterForPanel); return ( - - {medlemskap.manuellBehandlingResultat && isReadOnly && aksjonspunkt && ( - - )} + {harÅpentAksjonspunkt && } {medlemskap.legacyManuellBehandling && !medlemskap.manuellBehandlingResultat && ( { - + { brukerNavn={fagsak.bruker.navn} annenpartNavn={fagsak.annenPart?.navn} alleKodeverk={alleKodeverk} - skalViseAvvik={harAksjonspunkt} + skalViseAvvik={harVilkårAP} /> - {!isReadOnly && aksjonspunkt && ( - + + {harVilkårAP && ( + )} ); diff --git a/packages/fakta/medlemskap/src/components/aksjonspunkt/MedlemskapVurderinger.tsx b/packages/fakta/medlemskap/src/components/aksjonspunkt/MedlemskapVurderinger.tsx index 73e8b029c0c..44a78ba076a 100644 --- a/packages/fakta/medlemskap/src/components/aksjonspunkt/MedlemskapVurderinger.tsx +++ b/packages/fakta/medlemskap/src/components/aksjonspunkt/MedlemskapVurderinger.tsx @@ -6,20 +6,23 @@ import { RhfDatepicker, RhfRadioGroup, RhfSelect } from '@navikt/ft-form-hooks'; import { hasValidDate, required } from '@navikt/ft-form-validators'; import { createIntl } from '@navikt/ft-utils'; -import type { AlleKodeverk, Vilkar } from '@navikt/fp-types'; +import type { AlleKodeverk, ManuellBehandlingResultat, Vilkar } from '@navikt/fp-types'; import { usePanelDataContext } from '@navikt/fp-utils'; -import { - MedlemskapVurdering, - SØKER_INNFLYTTET_FOR_SENT_KODE, - type VurderMedlemskapFormValues, -} from '../../types/vurderingMedlemskapForm'; +import { MedlemskapVurdering, SØKER_INNFLYTTET_FOR_SENT_KODE } from '../../types/vurderingMedlemskapForm'; import { lagVurderingsAlternativer } from './lagVurderingsAlternativer'; import messages from '../../../i18n/nb_NO.json'; const intl = createIntl(messages); +export type MedlemskapVurderingerFormValues = { + vurdering?: MedlemskapVurdering; + opphørFom?: string; + medlemFom?: string; + avslagskode?: string; +}; + interface Props { vilkår: Vilkar; readOnly: boolean; @@ -29,17 +32,13 @@ interface Props { } export const MedlemskapVurderinger = ({ readOnly, ytelse, vilkår, erForutgående, erRevurdering }: Props) => { - const { watch, control } = useFormContext(); + const { watch, control } = useFormContext(); const vurdering = watch('vurdering'); const avslagskode = watch('avslagskode'); const { alleKodeverk } = usePanelDataContext(); const avslagsårsakerOptions = getAvslagsårsakerOptions(alleKodeverk, vilkår); - const label = erForutgående - ? intl.formatMessage({ id: 'VurderMedlemsskapAksjonspunktForm.VurderingLabel.Forutgaaende' }) - : intl.formatMessage({ id: 'VurderMedlemsskapAksjonspunktForm.VurderingLabel.Ordinaert' }); - return ( @@ -47,7 +46,9 @@ export const MedlemskapVurderinger = ({ readOnly, ytelse, vilkår, erForutgåend name="vurdering" control={control} legend={ - readOnly ? intl.formatMessage({ id: 'VurderMedlemsskapAksjonspunktForm.VurderingLabel.ReadOnly' }) : label + erForutgående + ? intl.formatMessage({ id: 'MedlemskapVurderinger.VurderingLabel.Forutgående' }) + : intl.formatMessage({ id: 'MedlemskapVurderinger.VurderingLabel.Ordinært' }) } validate={[required]} readOnly={readOnly} @@ -58,16 +59,12 @@ export const MedlemskapVurderinger = ({ readOnly, ytelse, vilkår, erForutgåend ))} - {/* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- [JOHANNES] vurder senere */} + {vurdering && [MedlemskapVurdering.DELVIS_OPPFYLT, MedlemskapVurdering.IKKE_OPPFYLT].includes(vurdering) && ( )} {erForutgående && - /* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- [JOHANNES] vurder senere */ vurdering && [MedlemskapVurdering.IKKE_OPPFYLT].includes(vurdering) && avslagskode === SØKER_INNFLYTTET_FOR_SENT_KODE && ( @@ -118,3 +106,26 @@ const getAvslagsårsakerOptions = (alleKodeverk: AlleKodeverk, vilkår: Vilkar) )); }; + +MedlemskapVurderinger.initialValues = ( + resultat: ManuellBehandlingResultat | undefined, +): MedlemskapVurderingerFormValues => { + if (resultat) { + const { opphørFom, avslagskode, medlemFom } = resultat; + if (!avslagskode) { + return { vurdering: MedlemskapVurdering.OPPFYLT }; + } else if (opphørFom) { + return { vurdering: MedlemskapVurdering.DELVIS_OPPFYLT, opphørFom, avslagskode }; + } else if (medlemFom) { + return { vurdering: MedlemskapVurdering.IKKE_OPPFYLT, medlemFom, avslagskode }; + } + return { vurdering: MedlemskapVurdering.IKKE_OPPFYLT, avslagskode }; + } + return {}; +}; + +MedlemskapVurderinger.transformValues = (values: MedlemskapVurderingerFormValues) => ({ + avslagskode: values.vurdering === MedlemskapVurdering.OPPFYLT ? undefined : values.avslagskode, + opphørFom: values.vurdering === MedlemskapVurdering.DELVIS_OPPFYLT ? values.opphørFom : undefined, + medlemFom: values.avslagskode === SØKER_INNFLYTTET_FOR_SENT_KODE ? values.medlemFom : undefined, +}); diff --git a/packages/fakta/medlemskap/src/components/aksjonspunkt/VurderMedlemskapAksjonspunktForm.tsx b/packages/fakta/medlemskap/src/components/aksjonspunkt/VurderMedlemskapAksjonspunktForm.tsx index 3edbee7468d..b1a80fe9f24 100644 --- a/packages/fakta/medlemskap/src/components/aksjonspunkt/VurderMedlemskapAksjonspunktForm.tsx +++ b/packages/fakta/medlemskap/src/components/aksjonspunkt/VurderMedlemskapAksjonspunktForm.tsx @@ -1,89 +1,60 @@ -import { type PropsWithChildren, useState } from 'react'; import { useForm } from 'react-hook-form'; -import { FormattedMessage } from 'react-intl'; +import { useIntl } from 'react-intl'; -import { Button, VStack } from '@navikt/ds-react'; +import { VStack } from '@navikt/ds-react'; import { RhfForm } from '@navikt/ft-form-hooks'; -import { FaktaBegrunnelseTextField } from '@navikt/fp-fakta-felles'; +import { type FaktaBegrunnelseFormValues, FaktaBegrunnelseTextField, FaktaSubmitButton } from '@navikt/fp-fakta-felles'; import { AksjonspunktKode } from '@navikt/fp-kodeverk'; import type { Aksjonspunkt, ManuellBehandlingResultat } from '@navikt/fp-types'; import type { VurderForutgaendeMedlemskapAp, VurderMedlemskapAp } from '@navikt/fp-types-avklar-aksjonspunkter'; -import { useMellomlagretFormData, usePanelDataContext } from '@navikt/fp-utils'; +import { FaktaKort } from '@navikt/fp-ui-komponenter'; +import { harAksjonspunkt, useMellomlagretFormData, usePanelDataContext } from '@navikt/fp-utils'; -import { - MedlemskapVurdering, - SØKER_INNFLYTTET_FOR_SENT_KODE, - type VurderMedlemskapFormValues, -} from '../../types/vurderingMedlemskapForm'; -import { InfoBox } from '../InfoBox'; -import { MedlemskapVurderinger } from './MedlemskapVurderinger'; +import { MedlemskapVurderinger, type MedlemskapVurderingerFormValues } from './MedlemskapVurderinger'; + +type FormValues = MedlemskapVurderingerFormValues & FaktaBegrunnelseFormValues; interface Props { - aksjonspunkt: Aksjonspunkt; manuellBehandlingResultat: ManuellBehandlingResultat | undefined; } -export const createMedlemskapInitialValues = ( - aksjonspunkt: Aksjonspunkt, - resultat: ManuellBehandlingResultat | undefined, -): Partial => { - const begrunnelse = aksjonspunkt.begrunnelse ?? ''; - - if (resultat) { - const { opphørFom, avslagskode, medlemFom } = resultat; - if (!avslagskode) { - return { vurdering: MedlemskapVurdering.OPPFYLT, begrunnelse }; - } else if (opphørFom) { - return { vurdering: MedlemskapVurdering.DELVIS_OPPFYLT, opphørFom, avslagskode, begrunnelse }; - } else if (medlemFom) { - return { vurdering: MedlemskapVurdering.IKKE_OPPFYLT, medlemFom, avslagskode, begrunnelse }; - } - return { vurdering: MedlemskapVurdering.IKKE_OPPFYLT, avslagskode, begrunnelse }; - } - return { begrunnelse }; -}; - -const ConditionalWrapper = ({ isReadOnly, children }: PropsWithChildren<{ isReadOnly: boolean }>) => - isReadOnly ? {children} : <>{children}; /** * MedlemskapInfoPanel * * Har ansvar for å vise faktapanelene for medlemskap. */ -export const VurderMedlemskapAksjonspunktForm = ({ aksjonspunkt, manuellBehandlingResultat }: Props) => { - const { fagsak, behandling, vilkårForPanel, submitCallback, isReadOnly, isSubmittable } = +export const VurderMedlemskapAksjonspunktForm = ({ manuellBehandlingResultat }: Props) => { + const intl = useIntl(); + const { fagsak, behandling, aksjonspunkterForPanel, vilkårForPanel, submitCallback, isReadOnly, isSubmittable } = usePanelDataContext(); - const { mellomlagretFormData, setMellomlagretFormData } = useMellomlagretFormData(); - const [submitting, setSubmitting] = useState(false); + const { mellomlagretFormData, setMellomlagretFormData } = useMellomlagretFormData(); - const formMethods = useForm({ - defaultValues: mellomlagretFormData ?? createMedlemskapInitialValues(aksjonspunkt, manuellBehandlingResultat), + const formMethods = useForm({ + defaultValues: mellomlagretFormData ?? createInitialValues(aksjonspunkterForPanel, manuellBehandlingResultat), }); const begrunnelseVerdi = formMethods.watch('begrunnelse'); - const erForutgåendeAksjonspunkt = aksjonspunkt.definisjon === AksjonspunktKode.VURDER_FORUTGÅENDE_MEDLEMSKAPSVILKÅR; - const bekreft = ({ vurdering, avslagskode, medlemFom, opphørFom, begrunnelse }: VurderMedlemskapFormValues) => { - setSubmitting(true); - return submitCallback({ - kode: erForutgåendeAksjonspunkt - ? AksjonspunktKode.VURDER_FORUTGÅENDE_MEDLEMSKAPSVILKÅR - : AksjonspunktKode.VURDER_MEDLEMSKAPSVILKÅRET, - begrunnelse, - avslagskode: vurdering === MedlemskapVurdering.OPPFYLT ? undefined : avslagskode, - opphørFom: vurdering === MedlemskapVurdering.DELVIS_OPPFYLT ? opphørFom : undefined, - medlemFom: avslagskode === SØKER_INNFLYTTET_FOR_SENT_KODE ? medlemFom : undefined, - }); - }; + const erForutgående = harAksjonspunkt(AksjonspunktKode.VURDER_FORUTGÅENDE_MEDLEMSKAPSVILKÅR, aksjonspunkterForPanel); return ( - - + + submitCallback(transformValues(values, erForutgående))} + setDataOnUnmount={setMellomlagretFormData} + > {!isReadOnly && ( -
- -
+ )}
-
+ ); }; + +const createInitialValues = ( + aksjonspunkterForPanel: Aksjonspunkt[], + resultat: ManuellBehandlingResultat | undefined, +): FormValues => { + return { + ...MedlemskapVurderinger.initialValues(resultat), + ...FaktaBegrunnelseTextField.initialValues(aksjonspunkterForPanel), + }; +}; + +const transformValues = ( + values: FormValues, + erForutgåendeAksjonspunkt: boolean, +): VurderMedlemskapAp | VurderForutgaendeMedlemskapAp => ({ + kode: erForutgåendeAksjonspunkt + ? AksjonspunktKode.VURDER_FORUTGÅENDE_MEDLEMSKAPSVILKÅR + : AksjonspunktKode.VURDER_MEDLEMSKAPSVILKÅRET, + ...MedlemskapVurderinger.transformValues(values), + ...FaktaBegrunnelseTextField.transformValues(values), +}); diff --git a/packages/fakta/medlemskap/src/components/aksjonspunkt/VurderMedlemskapLegacyAksjonspunktVisning.tsx b/packages/fakta/medlemskap/src/components/aksjonspunkt/VurderMedlemskapLegacyAksjonspunktVisning.tsx index 3ede732850c..4ceafd64a8d 100644 --- a/packages/fakta/medlemskap/src/components/aksjonspunkt/VurderMedlemskapLegacyAksjonspunktVisning.tsx +++ b/packages/fakta/medlemskap/src/components/aksjonspunkt/VurderMedlemskapLegacyAksjonspunktVisning.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import { FormattedMessage } from 'react-intl'; +import { FormattedMessage, useIntl } from 'react-intl'; -import { BodyShort, Box, Heading, HStack, Label, VStack } from '@navikt/ds-react'; +import { BodyShort, HStack, Label, VStack } from '@navikt/ds-react'; import { AvsnittSkiller, DateLabel } from '@navikt/ft-ui-komponenter'; import { BTag } from '@navikt/ft-utils'; import type { AlleKodeverk, LegacyManuellMedlemskapsBehandling, LegacyMedlemPeriode } from '@navikt/fp-types'; +import { FaktaKort } from '@navikt/fp-ui-komponenter'; interface Props { alleKodeverk: AlleKodeverk; @@ -37,13 +38,11 @@ const MedlemskapPeriodeVisning = ({ medlemsperiode, alleKodeverk, skalViseDato } - + {medlemsperiode.erEosBorger ? ( + + ) : ( + + )} )} @@ -118,13 +117,11 @@ const MedlemskapPeriodeVisning = ({ medlemsperiode, alleKodeverk, skalViseDato } export const VurderMedlemsskapLegacyAksjonspunktVisning = ({ legacyManuellBehandling, alleKodeverk }: Props) => { const skalViseDato = legacyManuellBehandling.perioder.length !== 1; + const intl = useIntl(); return ( - + - - - {legacyManuellBehandling.perioder.map((p, index) => ( @@ -132,6 +129,6 @@ export const VurderMedlemsskapLegacyAksjonspunktVisning = ({ legacyManuellBehand ))} - + ); }; diff --git a/packages/fakta/medlemskap/src/types/vurderingMedlemskapForm.ts b/packages/fakta/medlemskap/src/types/vurderingMedlemskapForm.ts index 49ea0dedef9..488c6aee7b1 100644 --- a/packages/fakta/medlemskap/src/types/vurderingMedlemskapForm.ts +++ b/packages/fakta/medlemskap/src/types/vurderingMedlemskapForm.ts @@ -4,12 +4,4 @@ export enum MedlemskapVurdering { IKKE_OPPFYLT = 'IKKE_OPPFYLT', } -export type VurderMedlemskapFormValues = { - begrunnelse: string; - vurdering: MedlemskapVurdering; - opphørFom?: string; - medlemFom?: string; - avslagskode?: string; -}; - export const SØKER_INNFLYTTET_FOR_SENT_KODE = '1052'; diff --git a/packages/prosess/vilkar-overstyring/src/VilkarresultatMedOverstyringProsessIndex.spec.tsx b/packages/prosess/vilkar-overstyring/src/VilkarresultatMedOverstyringProsessIndex.spec.tsx index a2f322e26a0..6737815b787 100644 --- a/packages/prosess/vilkar-overstyring/src/VilkarresultatMedOverstyringProsessIndex.spec.tsx +++ b/packages/prosess/vilkar-overstyring/src/VilkarresultatMedOverstyringProsessIndex.spec.tsx @@ -70,17 +70,17 @@ describe('VilkarresultatMedOverstyringProsessIndex', () => { expect(await screen.findByText('Manuell overstyring av automatisk vurdering')).toBeInTheDocument(); expect(screen.getByText('Er medlemskapsvilkåret oppfylt?')).toBeInTheDocument(); - expect(screen.queryByText('Velg en avslagsårsak')).not.toBeInTheDocument(); - expect(screen.queryByText('Når opphører medlemskapet?')).not.toBeInTheDocument(); + expect(screen.queryByText('Avslagsårsak')).not.toBeInTheDocument(); + expect(screen.queryByText('Opphørsdato')).not.toBeInTheDocument(); await userEvent.click(screen.getByText('Delvis oppfylt')); - expect(screen.getByText('Velg en avslagsårsak')).toBeInTheDocument(); - expect(screen.getByText('Når opphører medlemskapet?')).toBeInTheDocument(); + expect(screen.getByText('Avslagsårsak')).toBeInTheDocument(); + expect(screen.getByText('Opphørsdato')).toBeInTheDocument(); - await userEvent.selectOptions(screen.getByLabelText('Velg en avslagsårsak'), 'Søker er utflyttet'); + await userEvent.selectOptions(screen.getByLabelText('Avslagsårsak'), 'Søker er utflyttet'); - const opphørDatoInput = screen.getByLabelText('Når opphører medlemskapet?'); + const opphørDatoInput = screen.getByLabelText('Opphørsdato'); await userEvent.type(opphørDatoInput, '20.12.2021'); fireEvent.blur(opphørDatoInput); diff --git a/packages/prosess/vilkar-overstyring/src/components/VilkarresultatMedOverstyringForm.tsx b/packages/prosess/vilkar-overstyring/src/components/VilkarresultatMedOverstyringForm.tsx index b51746c2e11..d150b799a88 100644 --- a/packages/prosess/vilkar-overstyring/src/components/VilkarresultatMedOverstyringForm.tsx +++ b/packages/prosess/vilkar-overstyring/src/components/VilkarresultatMedOverstyringForm.tsx @@ -7,7 +7,7 @@ import { RhfForm } from '@navikt/ft-form-hooks'; import { OverstyringKnapp } from '@navikt/ft-ui-komponenter'; import { BTag, decodeHtmlEntity } from '@navikt/ft-utils'; -import { createMedlemskapInitialValues, MedlemskapVurdering, MedlemskapVurderinger } from '@navikt/fp-fakta-medlemskap'; +import { MedlemskapVurdering, MedlemskapVurderinger } from '@navikt/fp-fakta-medlemskap'; import { AksjonspunktKode, type VilkårOverstyringAksjonspunkter } from '@navikt/fp-kodeverk'; import { OverstyringPanel, VilkarResultPicker } from '@navikt/fp-prosess-felles'; import type { Aksjonspunkt, BehandlingFpSak, ManuellBehandlingResultat, Vilkar } from '@navikt/fp-types'; @@ -63,14 +63,12 @@ const createInitialValues = ( }; if (erOverstyringAvMedlemskap(overstyringApKode)) { - if (aksjonspunkt) { - return { - ...felles, - ...createMedlemskapInitialValues(aksjonspunkt, medlemskapManuellBehandlingResultat), - }; - } else { - return felles; - } + return aksjonspunkt + ? { + ...felles, + ...MedlemskapVurderinger.initialValues(medlemskapManuellBehandlingResultat), + } + : felles; } return { ...felles, @@ -85,25 +83,17 @@ type OverstyringVilkår = | OverstyringMedlemskapvilkaretForutgaendeAp; const transformValues = (values: FormValues, overstyringApKode: VilkårOverstyringAksjonspunkter): OverstyringVilkår => { - const { vurdering, avslagskode, begrunnelse, medlemFom, opphørFom } = values; - const felles = { kode: overstyringApKode, - begrunnelse: begrunnelse, + begrunnelse: values.begrunnelse, }; switch (overstyringApKode) { case AksjonspunktKode.OVERSTYRING_AV_MEDLEMSKAPSVILKÅRET: - return { - ...felles, - avslagskode: vurdering === MedlemskapVurdering.OPPFYLT ? undefined : avslagskode, - opphørFom: vurdering === MedlemskapVurdering.DELVIS_OPPFYLT ? opphørFom : undefined, - }; case AksjonspunktKode.OVERSTYRING_AV_FORUTGÅENDE_MEDLEMSKAPSVILKÅR: return { ...felles, - avslagskode: vurdering === MedlemskapVurdering.OPPFYLT ? undefined : avslagskode, - medlemFom: vurdering === MedlemskapVurdering.IKKE_OPPFYLT ? medlemFom : undefined, + ...MedlemskapVurderinger.transformValues(values), }; default: return { diff --git a/yarn.lock b/yarn.lock index fa2fb4cba2a..f96eb09b11b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1689,6 +1689,7 @@ __metadata: "@navikt/fp-storybook-utils": "workspace:*" "@navikt/fp-types": "workspace:*" "@navikt/fp-types-avklar-aksjonspunkter": "workspace:*" + "@navikt/fp-ui-komponenter": "workspace:*" "@navikt/fp-utils": "workspace:*" "@navikt/ft-form-hooks": 10.0.2 "@navikt/ft-form-validators": 4.2.13