diff --git a/packages/behandling-felles/src/components/InngangsvilkarPanel.tsx b/packages/behandling-felles/src/components/InngangsvilkarPanel.tsx index e527b31d88..01da5997ed 100644 --- a/packages/behandling-felles/src/components/InngangsvilkarPanel.tsx +++ b/packages/behandling-felles/src/components/InngangsvilkarPanel.tsx @@ -118,7 +118,7 @@ const InngangsvilkarPanel = ({ - + 2 ? { xs: '6fr 6fr' } : { xs: '8fr 4fr' }}>
{filteredPanels .filter((_panel, index) => index < 2) diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/GrunnlagForAutomatiskVurdering.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/GrunnlagForAutomatiskVurdering.tsx index 06825fb3d7..7bd51902b5 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/GrunnlagForAutomatiskVurdering.tsx +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/GrunnlagForAutomatiskVurdering.tsx @@ -40,8 +40,6 @@ const GrunnlagForAutomatiskVurdering = ({ foreldre.push(createParent(false, personopplysninger.annenPart)); } - console.log('valgtPeriode', valgtPeriode); - return ( <> diff --git a/packages/prosess-felles/i18n/nb_NO.json b/packages/prosess-felles/i18n/nb_NO.json index e3084fa7eb..629a0c38be 100644 --- a/packages/prosess-felles/i18n/nb_NO.json +++ b/packages/prosess-felles/i18n/nb_NO.json @@ -1,11 +1,6 @@ { - "ProsessPanelTemplate.ErOppfylt": "Vilkåret er oppfylt", - "ProsessPanelTemplate.ErIkkeOppfylt": "Vilkåret er avslått", - "ProsessPanelTemplate.IkkeBehandlet": "Ikke behandlet", - "ProsessPanelTemplate.DelvisOppfylt": "Vilkåret er delvis oppfylt", "ProsessPanelTemplate.DelvisIkkeOppfylt": "Vilkåret er delvis ikke oppfylt", - "VilkarResultPicker.Arsak": "Avslagsårsak", "VilkarResultPicker.SelectArsak": "Velg årsak", diff --git a/packages/prosess-felles/index.ts b/packages/prosess-felles/index.ts index 1b7a07597c..cd23031241 100644 --- a/packages/prosess-felles/index.ts +++ b/packages/prosess-felles/index.ts @@ -1,7 +1,6 @@ export { default as ProsessStegBegrunnelseTextField } from './src/ProsessStegBegrunnelseTextField'; export { default as ProsessStegSubmitButton } from './src/ProsessStegSubmitButton'; export type { default as StandardProsessFormProps } from './src/standardProsessFormPropsTsType'; -export { default as ProsessPanelTemplate } from './src/vilkar/ProsessPanelTemplate'; export { default as VilkarResultPicker } from './src/vilkar/VilkarResultPicker'; export { default as VilkarResultPickerPeriodisert } from './src/vilkar/VilkarResultPickerPeriodisert'; export { default as VilkarResultPickerPeriodisertRHF } from './src/vilkar/VilkarResultPickerPeriodisertRHF'; diff --git a/packages/prosess-felles/src/vilkar/VilkarResultPickerPeriodisert.tsx b/packages/prosess-felles/src/vilkar/VilkarResultPickerPeriodisert.tsx index f5e1e7a969..71ecbfa728 100644 --- a/packages/prosess-felles/src/vilkar/VilkarResultPickerPeriodisert.tsx +++ b/packages/prosess-felles/src/vilkar/VilkarResultPickerPeriodisert.tsx @@ -134,10 +134,10 @@ const VilkarResultPicker: FunctionComponent & StaticFunctions = ({ : vilkarUtfallPeriodisert.DELVIS_OPPFYLT, label: periodeVilkarStatus ? intl.formatMessage( - { id: 'ProsessPanelTemplate.DelvisIkkeOppfylt' }, + { id: 'OpptjeningPanel.DelvisIkkeOppfylt' }, { b: chunks => {chunks} }, ) - : intl.formatMessage({ id: 'ProsessPanelTemplate.DelvisOppfylt' }), + : intl.formatMessage({ id: 'OpptjeningPanel.DelvisOppfylt' }), }, ] : []), diff --git a/packages/prosess-vilkar-opptjening-oms/i18n/nb_NO.json b/packages/prosess-vilkar-opptjening-oms/i18n/nb_NO.json index 57e3e6b492..14c3134635 100644 --- a/packages/prosess-vilkar-opptjening-oms/i18n/nb_NO.json +++ b/packages/prosess-vilkar-opptjening-oms/i18n/nb_NO.json @@ -9,6 +9,10 @@ "OpptjeningVilkarView.MonthsAndDays": "{months} måneder og {days} dager aktivitet i opptjeningsperioden", "OpptjeningVilkarView.DetailsForSelectedPeriod": "Detaljer for valgt periode", + "OpptjeningPanel.ErIkkeOppfylt": "Vilkåret er avslått", + "OpptjeningPanel.IkkeBehandlet": "Ikke behandlet", + + "OpptjeningVilkarAksjonspunktPanel.SokerHarVurdertOpptjentRettTilPleiepenger": "Opptjent rett til pleiepenger", "OpptjeningVilkarAksjonspunktPanel.SokerHarVurdertOpptjentRettTilOmsorgspenger": "Opptjent rett til omsorgspenger", "OpptjeningVilkarAksjonspunktPanel.OmsorgspengerVurderLabel": "Vurder om bruker oppfyller opptjening jf § 9-2 eller § 8-47 bokstav B", diff --git a/packages/prosess-vilkar-opptjening-oms/src/OpptjeningVilkarProsessIndex.stories.tsx b/packages/prosess-vilkar-opptjening-oms/src/OpptjeningVilkarProsessIndex.stories.tsx index c939a682e4..ffd90536ce 100644 --- a/packages/prosess-vilkar-opptjening-oms/src/OpptjeningVilkarProsessIndex.stories.tsx +++ b/packages/prosess-vilkar-opptjening-oms/src/OpptjeningVilkarProsessIndex.stories.tsx @@ -63,8 +63,8 @@ const opptjeningUten847B = { ], fastsattOpptjening: { opptjeningperiode: { - måneder: 4, - dager: 6, + måneder: 0, + dager: 10, }, fastsattOpptjeningAktivitetList: [ { @@ -102,8 +102,8 @@ const opptjeningMed847B = { ], fastsattOpptjening: { opptjeningperiode: { - måneder: 4, - dager: 6, + måneder: 0, + dager: 10, }, fastsattOpptjeningAktivitetList: [ { @@ -274,6 +274,10 @@ export const visPanelForPSBÅpentAksjonspunktUten847B = args => ( perioder: [ { avslagKode: null, + merknad: { + kode: '7847A', + kodeverk: 'VILKAR_UTFALL_MERKNAD', + }, merknadParametere: { antattGodkjentArbeid: 'P10D', antattOpptjeningAktivitetTidslinje: @@ -299,6 +303,7 @@ export const visPanelForPSBÅpentAksjonspunktUten847B = args => ( definisjon: { kode: aksjonspunktCodes.VURDER_OPPTJENINGSVILKARET, }, + erAktivt: true, status: { kode: aksjonspunktStatus.OPPRETTET, }, @@ -346,6 +351,9 @@ export const visPanelForPSBÅpentAksjonspunktMed847B = args => ( antattOpptjeningAktivitetTidslinje: 'LocalDateTimeline<2020-04-17, 2020-04-26 [1]> = [[2020-04-17, 2020-04-26]]', }, + merknad: { + kode: '-', + }, vilkarStatus: { kode: 'OPPFYLT', kodeverk: 'VILKAR_UTFALL_TYPE', @@ -430,7 +438,7 @@ export const visPanelForNårEnIkkeHarAksjonspunkt = args => ( begrunnelse: null, vurderesIBehandlingen: true, merknad: { - kode: '1035', + kode: '-', kodeverk: 'VILKAR_UTFALL_MERKNAD', }, }, diff --git a/packages/prosess-felles/src/vilkar/ProsessPanelTemplate.spec.tsx b/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningPanel.spec.tsx similarity index 81% rename from packages/prosess-felles/src/vilkar/ProsessPanelTemplate.spec.tsx rename to packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningPanel.spec.tsx index 99b64f1774..118780a235 100644 --- a/packages/prosess-felles/src/vilkar/ProsessPanelTemplate.spec.tsx +++ b/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningPanel.spec.tsx @@ -1,13 +1,13 @@ import { renderWithIntlAndReduxForm } from '@fpsak-frontend/utils-test/test-utils'; import { screen } from '@testing-library/react'; import React from 'react'; -import messages from '../../i18n/nb_NO.json'; -import ProsessPanelTemplate from './ProsessPanelTemplate'; +import messages from '@k9-sak-web/prosess-felles/i18n/nb_NO.json'; +import OpptjeningPanel from './OpptjeningPanel'; -describe('', () => { +describe('', () => { it('skal ikke vise lovreferanse når dette ikke finnes', () => { const { container } = renderWithIntlAndReduxForm( - ', () => { behandlingVersjon={1} >
test
-
, +
, { messages }, ); @@ -28,7 +28,7 @@ describe('', () => { it('skal vise lovreferanse når dette finnes', () => { renderWithIntlAndReduxForm( - ', () => { behandlingVersjon={1} >
test
-
, + , { messages }, ); diff --git a/packages/prosess-felles/src/vilkar/ProsessPanelTemplate.tsx b/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningPanel.tsx similarity index 57% rename from packages/prosess-felles/src/vilkar/ProsessPanelTemplate.tsx rename to packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningPanel.tsx index 239831c437..850e8fd3d4 100644 --- a/packages/prosess-felles/src/vilkar/ProsessPanelTemplate.tsx +++ b/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningPanel.tsx @@ -10,11 +10,11 @@ import { VerticalSpacer, } from '@fpsak-frontend/shared-components'; import { BodyShort, Detail, Heading, Label } from '@navikt/ds-react'; -import React, { ReactNode } from 'react'; -import getPackageIntl from '../../i18n/getPackageIntl'; -import ProsessStegSubmitButton from '../ProsessStegSubmitButton'; -import styles from './prosessPanelTemplate.module.css'; +import { ReactNode } from 'react'; +import ProsessStegSubmitButton from '@k9-sak-web/prosess-felles/src/ProsessStegSubmitButton'; +import styles from './opptjeningPanel.module.css'; import { Lovreferanse } from '@k9-sak-web/gui/shared/lovreferanse/Lovreferanse.js'; +import { useIntl } from 'react-intl'; interface OwnProps { title: string; @@ -31,14 +31,16 @@ interface OwnProps { isDirty?: boolean; children: ReactNode | ReactNode[]; isPeriodisertFormComplete?: boolean; + skjulAksjonspunktVisning?: boolean; + aksjonspunktErLøst?: boolean; } /* - * ProsessPanelTemplate + * OpptjeningPanel * * Presentasjonskomponent. */ -const ProsessPanelTemplate = ({ +const OpptjeningPanel = ({ behandlingId, behandlingVersjon, lovReferanse, @@ -53,13 +55,15 @@ const ProsessPanelTemplate = ({ isDirty, children, isPeriodisertFormComplete, + skjulAksjonspunktVisning, + aksjonspunktErLøst, }: OwnProps) => { - const intl = getPackageIntl(); + const intl = useIntl(); return (
- {originalErVilkarOk !== undefined && ( + {aksjonspunktErLøst && ( @@ -80,47 +84,56 @@ const ProsessPanelTemplate = ({ - {originalErVilkarOk && ( + {aksjonspunktErLøst && ( <> - - - - )} - {originalErVilkarOk === false && ( - <> - - + {originalErVilkarOk && ( + <> + + + + )} + {originalErVilkarOk === false && ( + <> + + + + )} )} {!isAksjonspunktOpen && originalErVilkarOk === undefined && ( <> - {intl.formatMessage({ id: 'ProsessPanelTemplate.IkkeBehandlet' })} + {intl.formatMessage({ id: 'OpptjeningPanel.IkkeBehandlet' })} )} {isAksjonspunktOpen && } - + {children} {!readOnly && } - + {!skjulAksjonspunktVisning && ( + + )} {rendreFakta && ( <> @@ -132,4 +145,4 @@ const ProsessPanelTemplate = ({ ); }; -export default ProsessPanelTemplate; +export default OpptjeningPanel; diff --git a/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningVilkarAksjonspunktPanel.tsx b/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningVilkarAksjonspunktPanel.tsx index 5484888ac4..fc92867cc5 100644 --- a/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningVilkarAksjonspunktPanel.tsx +++ b/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningVilkarAksjonspunktPanel.tsx @@ -1,8 +1,6 @@ import { behandlingForm, behandlingFormValueSelector } from '@fpsak-frontend/form'; -import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; import FagsakYtelseType from '@fpsak-frontend/kodeverk/src/fagsakYtelseType'; -import vilkarUtfallType from '@fpsak-frontend/kodeverk/src/vilkarUtfallType'; -import { ProsessPanelTemplate, ProsessStegBegrunnelseTextField } from '@k9-sak-web/prosess-felles'; +import { ProsessStegBegrunnelseTextField } from '@k9-sak-web/prosess-felles'; import { Aksjonspunkt, Opptjening, SubmitCallback, Vilkarperiode } from '@k9-sak-web/types'; import { HelpText, Label } from '@navikt/ds-react'; import React, { useMemo } from 'react'; @@ -14,19 +12,14 @@ import { createSelector } from 'reselect'; import dayjs from 'dayjs'; import isBetween from 'dayjs/plugin/isBetween'; import styles from './OpptjeningVilkarAksjonspunktPanel.module.css'; -import VilkarFields, { midlertidigInaktiv } from './VilkarFields'; +import VilkarField, { erVilkarOk, midlertidigInaktiv, VilkårFieldType } from './VilkarField'; +import OpptjeningPanel from './OpptjeningPanel'; +import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; dayjs.extend(isBetween); const FORM_NAME = 'OpptjeningVilkarForm'; -interface VilkårField { - erVilkarOk: string | boolean; - begrunnelse: string; - innvilgelseMerknadKode: string; - vurderesIBehandlingen: boolean; -} - interface OpptjeningVilkarAksjonspunktPanelImplProps { aksjonspunkter: Aksjonspunkt[]; behandlingId: number; @@ -41,35 +34,21 @@ interface OpptjeningVilkarAksjonspunktPanelImplProps { periodeIndex: number; vilkårPerioder: Vilkarperiode[]; opptjeninger: Opptjening[]; - vilkarFields: VilkårField[]; + vilkarFields: VilkårFieldType[]; } interface StateProps { - erVilkarOk: string | boolean; + erVilkarOk: boolean; } -const hentErVilkarOK = ( - aksjonspunkter: Aksjonspunkt[], - vilkårPerioder: Vilkarperiode[], - periodeIndex: number, - status: string, -) => { - const isOpenAksjonspunkt = aksjonspunkter.some(ap => isAksjonspunktOpen(ap.status.kode)); - return isOpenAksjonspunkt && vilkårPerioder[periodeIndex].vurderesIBehandlingen - ? undefined - : vilkarUtfallType.OPPFYLT === status; -}; - /** * OpptjeningVilkarAksjonspunktPanel * * Presentasjonskomponent. Viser panel for å løse aksjonspunkt for avslått opptjeningsvilkår */ export const OpptjeningVilkarAksjonspunktPanelImpl = ({ - aksjonspunkter, behandlingId, behandlingVersjon, - erVilkarOk, isApOpen, lovReferanse, fagsakType, @@ -77,11 +56,11 @@ export const OpptjeningVilkarAksjonspunktPanelImpl = ({ readOnlySubmitButton, dirty, handleSubmit, + aksjonspunkter, form, periodeIndex, vilkårPerioder, vilkarFields, - status, opptjeninger, }: Partial & StateProps & InjectedFormProps) => { const intl = useIntl(); @@ -93,12 +72,15 @@ export const OpptjeningVilkarAksjonspunktPanelImpl = ({ [handleSubmit, form], ); - const isFormComplete = () => { + const vilkarField = vilkarFields?.[periodeIndex]; + const allePerioderHarVurdering = () => { const isAllTabsCreated = Array.isArray(vilkårPerioder) && vilkårPerioder.length === vilkarFields?.length; return isAllTabsCreated ? !vilkarFields.some( vilkarField => - vilkarField.vurderesIBehandlingen && (!vilkarField.begrunnelse || vilkarField.erVilkarOk === undefined), + vilkarField.vurderesIBehandlingen && + !vilkarField.periodeHar28DagerOgTrengerIkkeVurderesManuelt && + (!vilkarField.begrunnelse || !vilkarField.kode), ) : false; }; @@ -110,7 +92,6 @@ export const OpptjeningVilkarAksjonspunktPanelImpl = ({ fagsakType === FagsakYtelseType.OMSORGSPENGER_MIDLERTIDIG_ALENE; const erPleiepenger = fagsakType === FagsakYtelseType.PLEIEPENGER; - const originalErVilkarOk = hentErVilkarOK(aksjonspunkter, vilkårPerioder, periodeIndex, status); const finnesOpptjeningsaktiviteterVidOpptjeningTom: boolean = !erPleiepenger ? true @@ -139,7 +120,7 @@ export const OpptjeningVilkarAksjonspunktPanelImpl = ({ }); return ( - aksjonspunktCodes.VURDER_OPPTJENINGSVILKARET === ap.definisjon.kode && ap.status.kode === 'UTFO', + )} lovReferanse={lovReferanse} behandlingId={behandlingId} behandlingVersjon={behandlingVersjon} - originalErVilkarOk={originalErVilkarOk} - isPeriodisertFormComplete={isFormComplete()} + isPeriodisertFormComplete={allePerioderHarVurdering()} + skjulAksjonspunktVisning={vilkarField?.periodeHar28DagerOgTrengerIkkeVurderesManuelt} >
- - -
+ ); }; @@ -188,21 +174,16 @@ export const buildInitialValues = createSelector( [ (ownProps: OpptjeningVilkarAksjonspunktPanelImplProps) => ownProps.aksjonspunkter, (ownProps: OpptjeningVilkarAksjonspunktPanelImplProps) => ownProps.vilkårPerioder, - (ownProps: OpptjeningVilkarAksjonspunktPanelImplProps) => ownProps.status, - (ownProps: OpptjeningVilkarAksjonspunktPanelImplProps) => ownProps.periodeIndex, + (ownProps: OpptjeningVilkarAksjonspunktPanelImplProps) => ownProps.opptjeninger, ], - (aksjonspunkter, vilkårPerioder, status, periodeIndex) => ({ - ...VilkarFields.buildInitialValues( - aksjonspunkter, - vilkårPerioder, - hentErVilkarOK(aksjonspunkter, vilkårPerioder, periodeIndex, status), - ), + (aksjonspunkter, vilkårPerioder, opptjeninger) => ({ + ...VilkarField.buildInitialValues(vilkårPerioder, opptjeninger), ...ProsessStegBegrunnelseTextField.buildInitialValues(aksjonspunkter), }), ); interface Values { - vilkarFields: VilkårField[]; + vilkarFields: VilkårFieldType[]; innvilgelseMerknadKode: string; } @@ -214,11 +195,8 @@ const transformValues = ( ) => ({ vilkårPeriodeVurderinger: values.vilkarFields.map((vilkarField, index) => ({ ...vilkarField, - erVilkarOk: !!vilkarField.erVilkarOk, - innvilgelseMerknadKode: - typeof vilkarField.erVilkarOk === 'string' && Object.values(midlertidigInaktiv).includes(vilkarField.erVilkarOk) - ? vilkarField.erVilkarOk - : undefined, + erVilkarOk: erVilkarOk(vilkarField.kode), + innvilgelseMerknadKode: Object.values(midlertidigInaktiv).includes(vilkarField.kode) ? vilkarField.kode : undefined, periode: Array.isArray(vilkårPerioder) && vilkårPerioder[index] ? vilkårPerioder[index].periode : {}, })), opptjeningPerioder: Array.isArray(opptjeninger) @@ -231,17 +209,12 @@ const transformValues = ( }); const mapStateToPropsFactory = (initialState, initialOwnProps: OpptjeningVilkarAksjonspunktPanelImplProps) => { - const { aksjonspunkter, submitCallback, periodeIndex, vilkårPerioder, opptjeninger } = initialOwnProps; + const { aksjonspunkter, submitCallback, vilkårPerioder, opptjeninger } = initialOwnProps; const onSubmit = values => submitCallback([transformValues(values, aksjonspunkter, vilkårPerioder, opptjeninger)]); return (state, ownProps) => ({ onSubmit, initialValues: buildInitialValues(ownProps), - erVilkarOk: behandlingFormValueSelector( - FORM_NAME, - ownProps.behandlingId, - ownProps.behandlingVersjon, - )(state, `vilkarFields[${periodeIndex}].erVilkarOk`), lovReferanse: ownProps.lovReferanse, vilkarFields: behandlingFormValueSelector( FORM_NAME, diff --git a/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningVilkarForm.spec.tsx b/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningVilkarForm.spec.tsx index 37564ab759..935813c915 100644 --- a/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningVilkarForm.spec.tsx +++ b/packages/prosess-vilkar-opptjening-oms/src/components/OpptjeningVilkarForm.spec.tsx @@ -3,13 +3,16 @@ import aksjonspunktStatus from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus' import { renderWithIntlAndReduxForm } from '@fpsak-frontend/utils-test/test-utils'; import { Aksjonspunkt } from '@k9-sak-web/types'; import { screen } from '@testing-library/react'; -import React from 'react'; import messages from '../../i18n/nb_NO.json'; import OpptjeningVilkarForm from './OpptjeningVilkarForm'; const periode = { avslagKode: '1035', begrunnelse: null, + merknad: { + kode: '-', + kodeverk: 'et eller annet', + }, merknadParametere: { antattGodkjentArbeid: 'P9D', antattOpptjeningAktivitetTidslinje: 'LocalDateTimeline<2020-03-27, 2020-04-04 [1]> = [[2020-03-27, 2020-04-04]]', diff --git a/packages/prosess-vilkar-opptjening-oms/src/components/VilkarFields.tsx b/packages/prosess-vilkar-opptjening-oms/src/components/VilkarField.tsx similarity index 52% rename from packages/prosess-vilkar-opptjening-oms/src/components/VilkarFields.tsx rename to packages/prosess-vilkar-opptjening-oms/src/components/VilkarField.tsx index f3d76fd495..20a9a14b16 100644 --- a/packages/prosess-vilkar-opptjening-oms/src/components/VilkarFields.tsx +++ b/packages/prosess-vilkar-opptjening-oms/src/components/VilkarField.tsx @@ -1,39 +1,52 @@ import { RadioGroupField } from '@fpsak-frontend/form'; -import vilkarUtfallType from '@fpsak-frontend/kodeverk/src/vilkarUtfallType'; import { FlexColumn, FlexContainer, FlexRow, Image, VerticalSpacer } from '@fpsak-frontend/shared-components'; import { required } from '@fpsak-frontend/utils'; import { ProsessStegBegrunnelseTextField } from '@k9-sak-web/prosess-felles'; -import { Aksjonspunkt, Vilkarperiode } from '@k9-sak-web/types'; +import { Opptjening, Vilkarperiode } from '@k9-sak-web/types'; import { BodyShort } from '@navikt/ds-react'; -import React from 'react'; import { FormattedMessage, useIntl } from 'react-intl'; import avslattImage from '@fpsak-frontend/assets/images/avslaatt.svg'; import innvilgetImage from '@fpsak-frontend/assets/images/check.svg'; import styles from './VilkarFields.module.css'; +import dayjs from 'dayjs'; export const midlertidigInaktiv = { TYPE_A: '7847A', TYPE_B: '7847B', }; +export type VilkårFieldType = { + begrunnelse: string; + vurderesIBehandlingen: boolean; + periodeHar28DagerOgTrengerIkkeVurderesManuelt: boolean; + kode: '7847A' | '7847B' | 'OPPFYLT' | 'IKKE_OPPFYLT'; +}; + type FormValues = { - erVilkarOk: string | boolean; - vilkarFields: { erVilkarOk: string | boolean }[]; + vilkarFields: VilkårFieldType[]; }; interface VilkarFieldsProps { erOmsorgspenger?: boolean; fieldPrefix: string; readOnly: boolean; + field: VilkårFieldType; skalValgMidlertidigInaktivTypeBVises: boolean; } -export const VilkarFields = ({ +export const erVilkarOk = (kode: string) => { + if (kode === 'OPPFYLT' || midlertidigInaktiv.TYPE_A === kode || midlertidigInaktiv.TYPE_B === kode) { + return true; + } + return false; +}; + +export const VilkarField = ({ erOmsorgspenger, fieldPrefix, - erVilkarOk, + field, readOnly, skalValgMidlertidigInaktivTypeBVises, }: VilkarFieldsProps & Partial) => { @@ -44,7 +57,7 @@ export const VilkarFields = ({ const erOppfyltText = ; const hent847Text = () => { - switch (erVilkarOk) { + switch (field?.kode) { case midlertidigInaktiv.TYPE_A: return ; case midlertidigInaktiv.TYPE_B: @@ -54,6 +67,16 @@ export const VilkarFields = ({ } }; + const vilkarVurderingTekst = () => { + if (erVilkarOk(field?.kode) && Object.values(midlertidigInaktiv).includes(field?.kode)) { + return hent847Text(); + } + if (erVilkarOk(field?.kode)) { + return erOppfyltText; + } + return erIkkeOppfyltText; + }; + return ( <> - {readOnly && erVilkarOk !== undefined && ( + {readOnly && ( - + - {typeof erVilkarOk === 'string' && Object.values(midlertidigInaktiv).includes(erVilkarOk) === true && ( - {hent847Text()} - )} - {erVilkarOk === true && {erOppfyltText}} - {!erVilkarOk && {erIkkeOppfyltText}} + {vilkarVurderingTekst()} )} - {(!readOnly || erVilkarOk === undefined) && ( + {!readOnly && ( ({ - erVilkarOk, - vilkarFields: Array.isArray(vilkårPerioder) - ? vilkårPerioder.map(periode => ({ - begrunnelse: periode.begrunnelse, - vurderesIBehandlingen: periode.vurderesIBehandlingen, - erVilkarOk: Object.values(midlertidigInaktiv).includes(periode.merknad?.kode) - ? periode.merknad.kode - : periode.vilkarStatus.kode === vilkarUtfallType.OPPFYLT, - })) - : [], -}); +VilkarField.buildInitialValues = (vilkårPerioder: Vilkarperiode[], opptjening: Opptjening[]): FormValues => { + const utledKode = (periode: Vilkarperiode) => { + if (periode.merknad.kode === midlertidigInaktiv.TYPE_A || periode.merknad.kode === midlertidigInaktiv.TYPE_B) { + return periode.merknad.kode as '7847A' | '7847B'; + } + return periode.vilkarStatus.kode as 'OPPFYLT' | 'IKKE_OPPFYLT'; + }; + + return { + vilkarFields: Array.isArray(vilkårPerioder) + ? vilkårPerioder.map(periode => { + const skjæringstidspunkt = periode.periode.fom; + const opptjeningForPeriode = opptjening?.find( + o => dayjs(o?.fastsattOpptjening?.opptjeningTom).add(1, 'day').format('YYYY-MM-DD') === skjæringstidspunkt, + ); + const periodeHar28DagerOgTrengerIkkeVurderesManuelt = + opptjeningForPeriode?.fastsattOpptjening?.opptjeningperiode?.dager >= 28 || + opptjeningForPeriode?.fastsattOpptjening?.opptjeningperiode?.måneder > 0; + + return { + begrunnelse: periode.begrunnelse, + vurderesIBehandlingen: periode.vurderesIBehandlingen, + periodeHar28DagerOgTrengerIkkeVurderesManuelt, + kode: utledKode(periode), + }; + }) + : [], + }; +}; -export default VilkarFields; +export default VilkarField; diff --git a/packages/prosess-felles/src/vilkar/prosessPanelTemplate.module.css b/packages/prosess-vilkar-opptjening-oms/src/components/opptjeningPanel.module.css similarity index 100% rename from packages/prosess-felles/src/vilkar/prosessPanelTemplate.module.css rename to packages/prosess-vilkar-opptjening-oms/src/components/opptjeningPanel.module.css