diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx index 4573d7dd5fd..f964dbce7fa 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx @@ -108,6 +108,7 @@ Steg2.validation = Yup.object({ ...PensjonForm.validation, ...TjenestepensjonForm.validation, ...AlderspensjonForm.validation, + ...UforetrygdForm.validation, }), ), }) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/form/Form.tsx index fb160ec6e71..886e2eebeea 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/form/Form.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/form/Form.tsx @@ -10,6 +10,7 @@ import { genererTilfeldigeNavPersonidenter } from '@/utils/GenererTilfeldigeNavP 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' const uforetrygdPath = 'pensjonforvalter.uforetrygd' @@ -83,9 +84,12 @@ export const UforetrygdForm = ({ formikBag }) => { label={'NAV-enhet'} size={'xxxlarge'} options={navEnheter} + isClearable={false} /> ) } + +UforetrygdForm.validation = validation diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/form/validation.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/form/validation.tsx new file mode 100644 index 00000000000..ff9d2f7a74d --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/form/validation.tsx @@ -0,0 +1,66 @@ +import * as Yup from 'yup' +import { ifPresent, requiredNumber, requiredString } from '@/utils/YupValidations' +import { isFuture, isPast } from 'date-fns' +import { testDatoFom, testDatoTom } from '@/components/fagsystem/utils' + +const erIkkeLik = () => { + return Yup.string().test( + 'er-ikke-lik', + 'Saksbehandler og attesterer kan ikke være samme person', + function testIdenter() { + const values = this.options.context + const { saksbehandler, attesterer } = values?.pensjonforvalter?.uforetrygd + if (!saksbehandler || !attesterer) { + return true + } + return saksbehandler !== attesterer + }, + ) +} + +const datoErFremtidig = () => { + return Yup.date().test('er-fremtidig', 'Dato må være frem i tid', function validDate(dato) { + if (!dato) { + return true + } + return isFuture(dato) + }) +} + +const forventetInntekt = Yup.object({ + datoFom: testDatoFom(datoErFremtidig().nullable(), 'datoTom', 'Dato må være før dato t.o.m.'), // Før datoTom, frem i tid??? + datoTom: testDatoTom(datoErFremtidig().nullable(), 'datoFom', 'Dato må være etter dato f.o.m.'), // Etter datoFom, frem i tid??? + inntektType: Yup.string().nullable(), + belop: Yup.number() + .nullable() + .transform((i, j) => (j === '' ? null : i)), +}).nullable() + +export const validation = { + uforetrygd: ifPresent( + '$pensjonforvalter.uforetrygd', + Yup.object({ + kravFremsattDato: Yup.date().nullable(), + onsketVirkningsDato: datoErFremtidig().nullable(), // Frem i tid + uforetidspunkt: Yup.date() + .test('er-historisk', 'Dato må være historisk', function validDate(dato) { + if (!dato) { + return true + } + return isPast(dato) + }) + .nullable(), // Historisk + inntektForUforhet: requiredNumber.transform((i, j) => (j === '' ? null : i)), // Required + uforegrad: requiredNumber.transform((i, j) => (j === '' ? null : i)), // Required + minimumInntektForUforhetType: Yup.string().nullable(), // Not required + saksbehandler: erIkkeLik().nullable(), // Kan ikke være lik attesterer + attesterer: erIkkeLik().nullable(), // Kan ikke være lik saksbehandler + navEnhetId: requiredString, // Required + barnetilleggDetaljer: Yup.object({ + barnetilleggType: requiredString, + forventedeInntekterSoker: Yup.array().of(forventetInntekt), + forventedeInntekterEP: Yup.array().of(forventetInntekt), + }).nullable(), + }), + ), +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/initialValues.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/initialValues.tsx index 8ddeac8acf2..b83410b0d1c 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/initialValues.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/uforetrygd/initialValues.tsx @@ -11,7 +11,7 @@ export const initialUforetrygd = { minimumInntektForUforhetType: null, saksbehandler: null, attesterer: null, - navEnhetId: null, + navEnhetId: '4403', barnetilleggDetaljer: null, }