Skip to content

Commit

Permalink
Merge pull request #3305 from navikt/feature/pensjon-oppdatert-valide…
Browse files Browse the repository at this point in the history
…ring

Feature/pensjon oppdatert validering
  • Loading branch information
betsytraran authored Oct 9, 2023
2 parents fe7661c + acdd178 commit accdc51
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ import {
ForeldreBarnRelasjon,
FullmaktValues,
NyIdent,
Sivilstand,
SivilstandData,
VergemaalValues,
} from '@/components/fagsystem/pdlf/PdlTypes'
import { useDollyEnvironments } from '@/utils/hooks/useEnvironments'
import { addMonths, isAfter, setDate } from 'date-fns'

export const initialValuesBasedOnMal = (mal: any) => {
const { dollyEnvironments } = useDollyEnvironments()
Expand Down Expand Up @@ -57,11 +58,37 @@ export const initialValuesBasedOnMal = (mal: any) => {
if (initialValuesMal.arenaforvalter) {
initialValuesMal.arenaforvalter = getUpdatedArenaforvalterData(initialValuesMal.arenaforvalter)
}
if (initialValuesMal.pensjonforvalter?.alderspensjon) {
initialValuesMal.pensjonforvalter.alderspensjon = getUpdatedAlderspensjonData(
initialValuesMal.pensjonforvalter.alderspensjon,
)
}
if (initialValuesMal.pensjonforvalter?.uforetrygd) {
initialValuesMal.pensjonforvalter.uforetrygd = getUpdatedUforetrygdData(
initialValuesMal.pensjonforvalter.uforetrygd,
)
}

initialValuesMal.environments = filterMiljoe(dollyEnvironments, mal.bestilling.environments)
return initialValuesMal
}

const getUpdatedAlderspensjonData = (alderspensjonData) => {
const newAlderspensjonData = Object.assign({}, alderspensjonData)
if (!isAfter(new Date(newAlderspensjonData.iverksettelsesdato), new Date())) {
newAlderspensjonData.iverksettelsesdato = setDate(addMonths(new Date(), 1), 1)
}
return newAlderspensjonData
}

const getUpdatedUforetrygdData = (uforetrygdData) => {
const newUforetrygdData = Object.assign({}, uforetrygdData)
if (!isAfter(new Date(newUforetrygdData.onsketVirkningsDato), new Date())) {
newUforetrygdData.onsketVirkningsDato = setDate(addMonths(new Date(), 1), 1)
}
return newUforetrygdData
}

const getUpdatedArenaforvalterData = (arenaforvalterData) => {
let filtrertArenaforvalterData = Object.assign({}, arenaforvalterData)
if (_.isEmpty(filtrertArenaforvalterData.aap)) {
Expand Down Expand Up @@ -217,7 +244,7 @@ const getUpdatedPdldata = (pdldata: any) => {
}

if (person?.sivilstand) {
newPdldata.person.sivilstand = person.sivilstand.map((relasjon: Sivilstand) => {
newPdldata.person.sivilstand = person.sivilstand.map((relasjon: SivilstandData) => {
if (relasjon.nyRelatertPerson) {
relasjon.nyRelatertPerson.syntetisk = true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,15 @@ import { initialAlderspensjon } from '@/components/fagsystem/alderspensjon/form/
import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext'
import { initialUforetrygd } from '@/components/fagsystem/uforetrygd/initialValues'
import { runningCypressE2E } from '@/service/services/Request'
import * as _ from 'lodash-es'

export const PensjonPanel = ({ stateModifier, formikBag }: any) => {
const sm = stateModifier(PensjonPanel.initialValues)
const opts = useContext(BestillingsveilederContext)

const harValgtAp = _.has(formikBag.values, 'pensjonforvalter.alderspensjon')
const harValgtUforetrygd = _.has(formikBag.values, 'pensjonforvalter.uforetrygd')

const harGyldigApBestilling = opts?.tidligereBestillinger?.some(
(bestilling) =>
bestilling.status?.some(
Expand All @@ -33,17 +37,39 @@ export const PensjonPanel = ({ stateModifier, formikBag }: any) => {
),
)

const getTitleAlderspensjon = () => {
if (harGyldigApBestilling) {
return 'Personen har allerede alderspensjon'
} else if (harGyldigUforetrygdBestilling) {
return 'Personen har allerede uføretrygd'
} else if (harValgtUforetrygd) {
return 'Person kan ikke ha alderspensjon og uføretrygd samtidig'
}
return null
}

const getTitleUforetrygd = () => {
if (harGyldigUforetrygdBestilling) {
return 'Personen har allerede uføretrygd'
} else if (harGyldigApBestilling) {
return 'Personen har allerede alderspensjon'
} else if (harValgtAp) {
return 'Person kan ikke ha uføretrygd og alderspensjon samtidig'
}
return null
}

const infoTekst =
'Pensjon: \nPensjonsgivende inntekt: \nInntektene blir lagt til i POPP-register. \n\n' +
'Tjenestepensjon: \nTjenestepensjonsforhold lagt til i TP. \n\n' +
'Alderspensjon: \nAlderspensjonssak med vedtak blir lagt til i PEN.'

const getIgnoreKeys = () => {
const ignoreKeys = []
if (harGyldigApBestilling) {
if (harGyldigApBestilling || harGyldigUforetrygdBestilling || harValgtUforetrygd) {
ignoreKeys.push('alderspensjon')
}
if (harGyldigUforetrygdBestilling) {
if (harGyldigUforetrygdBestilling || harGyldigApBestilling || !harValgtUforetrygd) {
ignoreKeys.push('uforetrygd')
}
return ignoreKeys
Expand All @@ -69,15 +95,15 @@ export const PensjonPanel = ({ stateModifier, formikBag }: any) => {
<AttributtKategori title="Alderspensjon" attr={sm.attrs}>
<Attributt
attr={sm.attrs.alderspensjon}
disabled={harGyldigApBestilling}
title={harGyldigApBestilling ? 'Personen har allerede alderspensjon' : null}
disabled={harGyldigApBestilling || harGyldigUforetrygdBestilling || harValgtUforetrygd}
title={getTitleAlderspensjon()}
/>
</AttributtKategori>
<AttributtKategori title="Uføretrygd" attr={sm.attrs}>
<Attributt
attr={sm.attrs.uforetrygd}
disabled={harGyldigUforetrygdBestilling}
title={harGyldigUforetrygdBestilling ? 'Personen har allerede uføretrygd' : null}
disabled={harGyldigUforetrygdBestilling || harGyldigApBestilling || harValgtAp}
title={getTitleUforetrygd()}
/>
</AttributtKategori>
</Panel>
Expand Down Expand Up @@ -124,7 +150,7 @@ PensjonPanel.initialValues = ({ set, del, has }: any) => {
remove: () => del(paths.alderspensjon),
},
uforetrygd: {
label: 'Har uføretrygdvedtak',
label: 'Har uføretrygd',
checked: has(paths.uforetrygd),
add: () => {
set(paths.uforetrygd, initialUforetrygd)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
import { ifPresent, messages, requiredDate, requiredNumber } from '@/utils/YupValidations'
import * as Yup from 'yup'
import { isAfter } from 'date-fns'

export const validation = {
alderspensjon: ifPresent(
'$pensjonforvalter.alderspensjon',
Yup.object({
iverksettelsesdato: requiredDate,
iverksettelsesdato: requiredDate.test(
'er-fremtid',
'Måned må være frem i tid',
function validDate(iverksettelsesdato) {
return isAfter(new Date(iverksettelsesdato), new Date())
},
),
uttaksgrad: requiredNumber.typeError(messages.required),
relasjoner: Yup.array().of(
Yup.object({
sumAvForvArbKapPenInntekt: Yup.number()
.transform((i, j) => (j === '' ? null : i))
.nullable(),
})
}),
),
})
}),
),
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export const PensjonForm = ({ formikBag }) => {
valgtAar < minAar &&
(nyBestilling || nyBestillingFraMal) && (
<StyledAlert variant={'info'} size={'small'}>
Pensjonsgivende inntekt kan settes fra året personen fyller 13 år. For å sikre at
Pensjonsgivende inntekt kan settes fra året personen fyller 17 år. For å sikre at
personen får gyldig alder kan denne settes ved å huke av for "Alder" på forrige side.
</StyledAlert>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const invalidAlderFom = (inntektFom, values) => {
const foedtEtter = _.get(values, 'pdldata.opprettNyPerson.foedtEtter')

if (!_.isNil(alder) && alder !== '') {
if (new Date().getFullYear() - alder + 13 > inntektFom) {
if (new Date().getFullYear() - alder + 17 > inntektFom) {
return true
}
} else if (!_.isNil(foedtFoer)) {
Expand All @@ -53,12 +53,12 @@ const invalidAlderFom = (inntektFom, values) => {
let year = foedtFoerDate.getFullYear()

year = day === 1 && month === 0 ? year - 1 : year
if (year + 13 > inntektFom) {
if (year + 17 > inntektFom) {
return true
}
} else if (!_.isNil(foedtEtter) && _.isNil(foedtFoer)) {
const foedtEtterDate = new Date(foedtEtter)
if (foedtEtterDate.getFullYear() + 13 > inntektFom) {
if (foedtEtterDate.getFullYear() + 17 > inntektFom) {
return true
}
}
Expand Down Expand Up @@ -128,7 +128,7 @@ const validFomDateTest = (val) => {
const values = this.options.context

if (invalidAlderFom(inntektFom, values)) {
return this.createError({ message: 'F.o.m kan tidligst være året personen fyller 13 år' })
return this.createError({ message: 'F.o.m kan tidligst være året personen fyller 17 år' })
}

let inntektTom = _.get(values, `${path}.tomAar`)
Expand Down Expand Up @@ -175,6 +175,6 @@ export const validation = {
tomAar: validTomDateTest(requiredNumber).typeError('Velg et gyldig år'),
belop: Yup.number().min(0, 'Tast inn et gyldig beløp').typeError('Tast inn et gyldig beløp'),
redusertMedGrunnbelop: Yup.boolean(),
})
}),
),
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import * as _ from 'lodash-es'
import { useNavEnheter } from '@/utils/hooks/useNorg2'
import { BarnetilleggForm } from '@/components/fagsystem/uforetrygd/form/partials/BarnetilleggForm'
import { validation } from '@/components/fagsystem/uforetrygd/form/validation'
import { addDays } from 'date-fns'

const uforetrygdPath = 'pensjonforvalter.uforetrygd'

Expand Down Expand Up @@ -43,6 +44,7 @@ export const UforetrygdForm = ({ formikBag }) => {
<FormikDatepicker
name={`${uforetrygdPath}.onsketVirkningsDato`}
label="Ønsket virkningsdato"
minDate={addDays(new Date(), 1)}
/>
<FormikDatepicker name={`${uforetrygdPath}.uforetidspunkt`} label="Uføretidspunkt" />
<FormikTextInput
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as Yup from 'yup'
import { ifPresent, requiredNumber, requiredString } from '@/utils/YupValidations'
import { isFuture, isPast } from 'date-fns'
import { isBefore, isFuture, isPast } from 'date-fns'
import { testDatoFom, testDatoTom } from '@/components/fagsystem/utils'

const erIkkeLik = () => {
Expand Down Expand Up @@ -40,7 +40,17 @@ export const validation = {
uforetrygd: ifPresent(
'$pensjonforvalter.uforetrygd',
Yup.object({
kravFremsattDato: Yup.date().nullable(),
kravFremsattDato: Yup.date()
.test(
'er-foer-virkningsdato',
'Dato må være før ønsket virkningsdato',
function validDate(kravFremsattDato) {
const virkningsdato =
this.options.context?.pensjonforvalter?.uforetrygd?.onsketVirkningsDato
return isBefore(new Date(kravFremsattDato), new Date(virkningsdato))
},
)
.nullable(),
onsketVirkningsDato: datoErFremtidig().nullable(),
uforetidspunkt: Yup.date()
.test('er-historisk', 'Dato må være historisk', function validDate(dato) {
Expand Down

0 comments on commit accdc51

Please sign in to comment.