From 7185f5013fff81288f65b9e4dfd075ddf0e71048 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Wed, 18 Sep 2024 10:59:40 +0200 Subject: [PATCH 1/8] AFP offentlig i pensjon-panel --- .../stegVelger/steg/steg1/paneler/Pensjon.tsx | 47 ++++++------------- .../afpOffentlig/form/initialValues.tsx | 17 +++++++ 2 files changed, 32 insertions(+), 32 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/initialValues.tsx diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Pensjon.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Pensjon.tsx index cc797c9be9..c96f5b9435 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Pensjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Pensjon.tsx @@ -1,4 +1,4 @@ -import React, { useContext } from 'react' +import React from 'react' import Panel from '@/components/ui/panel/Panel' import { Attributt, AttributtKategori } from '../Attributt' import { @@ -9,55 +9,26 @@ import { import { harValgtAttributt } from '@/components/ui/form/formUtils' import { pensjonPath } from '@/components/fagsystem/pensjon/form/Form' import { genInitialAlderspensjonVedtak } from '@/components/fagsystem/alderspensjon/form/initialValues' -import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext' import { initialUforetrygd } from '@/components/fagsystem/uforetrygd/initialValues' -import _ from 'lodash' import { alderspensjonPath } from '@/components/fagsystem/alderspensjon/form/Form' import { uforetrygdPath } from '@/components/fagsystem/uforetrygd/form/Form' import { initialPensjonInntekt } from '@/components/fagsystem/aareg/form/initialValues' import { initialPensjonsavtale } from '@/components/fagsystem/pensjonsavtale/initalValues' +import { initialAfpOffentlig } from '@/components/fagsystem/afpOffentlig/form/initialValues' export const PensjonPanel = ({ stateModifier, formValues }: any) => { const sm = stateModifier(PensjonPanel.initialValues) - const opts = useContext(BestillingsveilederContext) - - const harValgtUforetrygd = _.has(formValues, 'pensjonforvalter.uforetrygd') - - const harGyldigApBestilling = opts?.tidligereBestillinger?.some((bestilling) => - bestilling.status?.some( - (status) => status.id === 'PEN_AP' && status.statuser?.some((item) => item?.melding === 'OK'), - ), - ) - - const harGyldigUforetrygdBestilling = opts?.tidligereBestillinger?.some((bestilling) => - bestilling.status?.some( - (status) => status.id === 'PEN_UT' && status.statuser?.some((item) => item.melding === 'OK'), - ), - ) 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 || harGyldigUforetrygdBestilling || harValgtUforetrygd) { - ignoreKeys.push('alderspensjon') - } - if (harGyldigUforetrygdBestilling || harGyldigApBestilling || !harValgtUforetrygd) { - ignoreKeys.push('uforetrygd') - } - return ignoreKeys - } - return ( { - sm.batchAdd(getIgnoreKeys()) - }} + checkAttributeArray={sm.batchAdd} uncheckAttributeArray={sm.batchRemove} iconType="pensjon" startOpen={harValgtAttributt(formValues, [ @@ -82,6 +53,9 @@ export const PensjonPanel = ({ stateModifier, formValues }: any) => { + + + ) } @@ -96,6 +70,7 @@ PensjonPanel.initialValues = ({ set, del, has }: any) => { alderspensjon: 'pensjonforvalter.alderspensjon', uforetrygd: 'pensjonforvalter.uforetrygd', pensjonsavtale: 'pensjonforvalter.pensjonsavtale', + afpOffentlig: 'pensjonforvalter.afpOffentlig', } return { inntekt: { @@ -137,5 +112,13 @@ PensjonPanel.initialValues = ({ set, del, has }: any) => { }, remove: () => del(paths.pensjonsavtale), }, + afpOffentlig: { + label: 'Har AFP offentlig', + checked: has(paths.afpOffentlig), + add: () => { + set(paths.afpOffentlig, initialAfpOffentlig) + }, + remove: () => del(paths.afpOffentlig), + }, } } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/initialValues.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/initialValues.tsx new file mode 100644 index 0000000000..09c898675c --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/initialValues.tsx @@ -0,0 +1,17 @@ +export const initialAfpOffentlig = { + // direktekall: [], + mocksvar: [ + { + tpId: '', + statusAfp: '', + virkningsDato: '', + sistBenyttetG: 2024, + belopsListe: [ + { + fomDato: '', + belop: 0, + }, + ], + }, + ], +} From 3495124d8808e82a9f1b9637894067e132195814 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Wed, 18 Sep 2024 15:42:07 +0200 Subject: [PATCH 2/8] Oppsett AFP offentlig form --- .../stegVelger/steg/steg1/paneler/Pensjon.tsx | 6 +- .../stegVelger/steg/steg2/Steg2.tsx | 2 + .../afpOffentlig/form/BeloepForm.tsx | 18 +++++ .../fagsystem/afpOffentlig/form/Form.tsx | 68 +++++++++++++++++++ .../afpOffentlig/{form => }/initialValues.tsx | 12 ++-- .../js/src/components/ui/form/formUtils.tsx | 1 + .../src/main/js/src/service/SelectOptions.tsx | 9 +++ .../main/js/src/utils/hooks/usePensjon.tsx | 23 +++++++ 8 files changed, 132 insertions(+), 7 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/BeloepForm.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx rename apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/{form => }/initialValues.tsx (63%) diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Pensjon.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Pensjon.tsx index c96f5b9435..60c4769a99 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Pensjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Pensjon.tsx @@ -14,7 +14,9 @@ import { alderspensjonPath } from '@/components/fagsystem/alderspensjon/form/For import { uforetrygdPath } from '@/components/fagsystem/uforetrygd/form/Form' import { initialPensjonInntekt } from '@/components/fagsystem/aareg/form/initialValues' import { initialPensjonsavtale } from '@/components/fagsystem/pensjonsavtale/initalValues' -import { initialAfpOffentlig } from '@/components/fagsystem/afpOffentlig/form/initialValues' +import { initialAfpOffentlig } from '@/components/fagsystem/afpOffentlig/initialValues' +import { avtalePath } from '@/components/fagsystem/pensjonsavtale/form/Form' +import { afpOffentligPath } from '@/components/fagsystem/afpOffentlig/form/Form' export const PensjonPanel = ({ stateModifier, formValues }: any) => { const sm = stateModifier(PensjonPanel.initialValues) @@ -33,9 +35,11 @@ export const PensjonPanel = ({ stateModifier, formValues }: any) => { iconType="pensjon" startOpen={harValgtAttributt(formValues, [ pensjonPath, + avtalePath, tpPath, alderspensjonPath, uforetrygdPath, + afpOffentligPath, ])} > 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 1323e0d0b5..b742fc3c34 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 @@ -26,6 +26,7 @@ import { KrrstubForm } from '@/components/fagsystem/krrstub/form/KrrForm' import { useFormContext } from 'react-hook-form' import { SkattekortForm } from '@/components/fagsystem/skattekort/form/Form' import { PensjonsavtaleForm } from '@/components/fagsystem/pensjonsavtale/form/Form' +import { AfpOffentligForm } from '@/components/fagsystem/afpOffentlig/form/Form' const gruppeNavn = (gruppe) => {gruppe.navn} @@ -77,6 +78,7 @@ export const Steg2 = () => { + diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/BeloepForm.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/BeloepForm.tsx new file mode 100644 index 0000000000..ec61376ecc --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/BeloepForm.tsx @@ -0,0 +1,18 @@ +import { FormDollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { initialBeloep } from '@/components/fagsystem/afpOffentlig/initialValues' +import React from 'react' +import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' + +export const BelopForm = ({ path }) => { + return ( + + {(belop, idx) => ( +
+ + +
+ )} +
+ ) +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx new file mode 100644 index 0000000000..a5aa530b23 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx @@ -0,0 +1,68 @@ +import { Vis } from '@/components/bestillingsveileder/VisAttributt' +import { useFormContext } from 'react-hook-form' +import Panel from '@/components/ui/panel/Panel' +import { erForsteEllerTest, panelError } from '@/components/ui/form/formUtils' +import { FormDollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { initialAfpOffentlig } from '@/components/fagsystem/afpOffentlig/initialValues' +import { useTpOrdning } from '@/utils/hooks/usePensjon' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import React from 'react' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' +import { getYearRangeOptions } from '@/utils/DataFormatter' +import { BelopForm } from '@/components/fagsystem/afpOffentlig/form/BeloepForm' + +export const afpOffentligPath = 'pensjonforvalter.afpOffentlig' + +export const AfpOffentligForm = () => { + const formMethods = useFormContext() + + const { tpOrdningData, loading, error } = useTpOrdning() + + return ( + + + + {(formPath, idx) => ( + +
+ + + + +
+ +
+ )} +
+
+
+ ) +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/initialValues.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx similarity index 63% rename from apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/initialValues.tsx rename to apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx index 09c898675c..85f8fac806 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/initialValues.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx @@ -1,3 +1,8 @@ +export const initialBeloep = { + fomDato: '', + belop: 0, +} + export const initialAfpOffentlig = { // direktekall: [], mocksvar: [ @@ -6,12 +11,7 @@ export const initialAfpOffentlig = { statusAfp: '', virkningsDato: '', sistBenyttetG: 2024, - belopsListe: [ - { - fomDato: '', - belop: 0, - }, - ], + belopsListe: [initialBeloep], }, ], } diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/formUtils.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/formUtils.tsx index 92c4717794..f8b1a54667 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/formUtils.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/formUtils.tsx @@ -75,6 +75,7 @@ const getValgteAttributter = (values) => { 'pensjonforvalter.tp', 'pensjonforvalter.alderspensjon', 'pensjonforvalter.uforetrygd', + 'pensjonforvalter.afpOffentlig', 'arenaforvalter', 'sykemelding', 'brregstub', diff --git a/apps/dolly-frontend/src/main/js/src/service/SelectOptions.tsx b/apps/dolly-frontend/src/main/js/src/service/SelectOptions.tsx index a0dee52bec..4e1c20b7de 100644 --- a/apps/dolly-frontend/src/main/js/src/service/SelectOptions.tsx +++ b/apps/dolly-frontend/src/main/js/src/service/SelectOptions.tsx @@ -486,6 +486,15 @@ const selectOptions = { tpOrdninger: [], + //AFP + statusAfp: [ + { value: 'UKJENT', label: 'Ukjent' }, + { value: 'INNVILGET', label: 'Innvilget' }, + { value: 'SOKT', label: 'Søkt' }, + { value: 'AVSLAG', label: 'Avslag' }, + { value: 'IKKE_SOKT', label: 'Ikke søkt' }, + ], + // PDL vergemaal: pdlVergemaalType: [ { value: 'ensligMindreaarigAsylsoeker', label: 'Enslig mindreårig asylsøker' }, diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx index 6ba2b25748..4ccef069d2 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx @@ -6,6 +6,7 @@ import useSWRMutation from 'swr/mutation' const pensjonVedtakUrl = '/testnav-pensjon-testdata-facade-proxy/api/v2/vedtak' const pensjonFacadeGenererUrl = '/testnav-pensjon-testdata-facade-proxy/api/v1/generate-inntekt-med-gjennomsnitt-g' +const tpOrdningUrl = '/testnav-pensjon-testdata-facade-proxy/api/v1/tp/ordning' export const usePensjonVedtak = (ident, miljo) => { const { data, isLoading, error } = useSWR( @@ -66,3 +67,25 @@ export const usePensjonFacadeGenerer = (body: any) => { trigger: trigger, } } + +export const useTpOrdning = () => { + // const { data, isLoading, error } = useSWR( + // [ + // tpOrdningUrl, + // { headers: { 'Nav-Call-Id': _uuid(), 'Nav-Consumer-Id': 'dolly', Authorization: 'dolly' } }, + // ], + // ([url, headers]) => fetcher(url, headers), + // ) + const { data, isLoading, error } = useSWR(tpOrdningUrl, fetcher) + + const options = data?.map((tpOrdning) => ({ + value: tpOrdning.tpnr, + label: `${tpOrdning.tpnr} - ${tpOrdning.navn}`, + })) + + return { + tpOrdningData: options, + loading: isLoading, + error: error, + } +} From 53199a07760dd276f466c153c184f8a1f124071c Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Tue, 24 Sep 2024 13:44:13 +0200 Subject: [PATCH 3/8] AFP personvisning, tilpasninger i form, div fix --- .../src/main/js/proxy-routes.json | 2 +- .../src/main/js/src/api/index.ts | 14 +++ .../fagsystem/afpOffentlig/form/Form.tsx | 101 ++++++++++------- .../fagsystem/afpOffentlig/initialValues.tsx | 20 ++-- .../visning/AfpOffentligVisning.tsx | 104 ++++++++++++++++++ .../gruppe/PersonVisning/PersonVisning.tsx | 16 +++ .../js/src/utils/SjekkBestillingFagsystem.tsx | 10 ++ .../main/js/src/utils/hooks/usePensjon.tsx | 53 +++++++-- 8 files changed, 259 insertions(+), 61 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx diff --git a/apps/dolly-frontend/src/main/js/proxy-routes.json b/apps/dolly-frontend/src/main/js/proxy-routes.json index 071414a29c..859caa2d6c 100644 --- a/apps/dolly-frontend/src/main/js/proxy-routes.json +++ b/apps/dolly-frontend/src/main/js/proxy-routes.json @@ -119,7 +119,7 @@ "changeOrigin": true, "secure": false }, - "/testnav-pensjon-testdata-facade-proxy/api": { + "/testnav-pensjon-testdata-facade-proxy/": { "target": "http://localhost:8020", "changeOrigin": true, "secure": false diff --git a/apps/dolly-frontend/src/main/js/src/api/index.ts b/apps/dolly-frontend/src/main/js/src/api/index.ts index 402a2a7212..bd84164b6f 100644 --- a/apps/dolly-frontend/src/main/js/src/api/index.ts +++ b/apps/dolly-frontend/src/main/js/src/api/index.ts @@ -80,6 +80,20 @@ export const multiFetcherPensjon = (miljoUrlListe, headers = null as any) => { ) } +export const multiFetcherAfpOffentlig = (miljoUrlListe, headers = null, path = null) => { + return Promise.allSettled( + miljoUrlListe.map((obj) => + fetcher(obj.url, headers) + .then((result) => { + return { miljo: obj.miljo, data: result } + }) + .catch((feil) => { + return { miljo: obj.miljo, feil: feil } + }), + ), + ).then((liste) => liste?.map((item) => item?.value)) +} + export const multiFetcherDokarkiv = (miljoUrlListe) => Promise.all( miljoUrlListe?.map((obj) => diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx index a5aa530b23..ac4837edbe 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx @@ -3,8 +3,8 @@ import { useFormContext } from 'react-hook-form' import Panel from '@/components/ui/panel/Panel' import { erForsteEllerTest, panelError } from '@/components/ui/form/formUtils' import { FormDollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' -import { initialAfpOffentlig } from '@/components/fagsystem/afpOffentlig/initialValues' -import { useTpOrdning } from '@/utils/hooks/usePensjon' +import { initialMocksvar } from '@/components/fagsystem/afpOffentlig/initialValues' +import { useMuligeDirektekall, useTpOrdning } from '@/utils/hooks/usePensjon' import { FormSelect } from '@/components/ui/form/inputs/select/Select' import React from 'react' import { SelectOptionsManager as Options } from '@/service/SelectOptions' @@ -17,7 +17,20 @@ export const afpOffentligPath = 'pensjonforvalter.afpOffentlig' export const AfpOffentligForm = () => { const formMethods = useFormContext() - const { tpOrdningData, loading, error } = useTpOrdning() + const { tpOrdningData } = useTpOrdning() + const { direktekallData } = useMuligeDirektekall() + + const valgteDirektekall = formMethods.watch(`${afpOffentligPath}.direktekall`) + const filterTpOrdningOptions = tpOrdningData?.filter( + (option) => !valgteDirektekall?.includes(option.value), + ) + + const valgteTpOrdninger = formMethods + .watch(`${afpOffentligPath}.mocksvar`) + ?.map((mocksvar) => mocksvar.tpId) + const filterDirektekallOptions = direktekallData?.filter( + (option) => !valgteTpOrdninger?.includes(option.value), + ) return ( @@ -27,41 +40,53 @@ export const AfpOffentligForm = () => { iconType="pensjon" startOpen={erForsteEllerTest(formMethods.getValues(), [afpOffentligPath])} > - - {(formPath, idx) => ( - -
- - - - -
- -
- )} -
+ <> +
+ +
+ + {(formPath, idx) => ( + +
+ + + + +
+ +
+ )} +
+
) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx index 85f8fac806..ce64a432e7 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx @@ -3,15 +3,15 @@ export const initialBeloep = { belop: 0, } +export const initialMocksvar = { + tpId: '', + statusAfp: '', + virkningsDato: '', + sistBenyttetG: 2024, + belopsListe: [initialBeloep], +} + export const initialAfpOffentlig = { - // direktekall: [], - mocksvar: [ - { - tpId: '', - statusAfp: '', - virkningsDato: '', - sistBenyttetG: 2024, - belopsListe: [initialBeloep], - }, - ], + direktekall: [], + mocksvar: [initialMocksvar], } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx new file mode 100644 index 0000000000..9240f7db69 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx @@ -0,0 +1,104 @@ +import { useBestilteMiljoer } from '@/utils/hooks/useBestilling' +import Loading from '@/components/ui/loading/Loading' +import { ErrorBoundary } from '@/components/ui/appError/ErrorBoundary' +import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' +import { Alert } from '@navikt/ds-react' +import { MiljoTabs } from '@/components/ui/miljoTabs/MiljoTabs' +import React from 'react' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { formatDate, showLabel } from '@/utils/DataFormatter' +import { useTpOrdning } from '@/utils/hooks/usePensjon' + +export const sjekkManglerAfpOffentligData = (afpOffentligData) => { + return ( + afpOffentligData?.length < 1 || + afpOffentligData?.every( + (miljoData) => !miljoData.data || Object.keys(miljoData?.data)?.length < 1, + ) + ) +} + +const DataVisning = ({ data }) => { + const { tpOrdningData } = useTpOrdning() + + const showTpNavn = (tpId) => { + const tpOrdning = tpOrdningData?.find((tpOrdning) => tpOrdning.value === tpId) + if (tpOrdning) { + return tpOrdning.label + } + return tpId + } + + return ( + <> +
+ showTpNavn(tpId))?.join(', ')} + size="full-width" + /> + + {(mocksvar, idx) => ( + + + + + + + {(belop, idy) => ( + + + + + )} + + + )} + +
+ + ) +} + +export const AfpOffentligVisning = ({ data, loading, bestillingIdListe, tilgjengeligMiljoe }) => { + const { bestilteMiljoer } = useBestilteMiljoer(bestillingIdListe, 'PEN_AFP_OFFENTLIG') + + if (loading) { + return + } + + if (!data) { + return null + } + + const manglerFagsystemdata = sjekkManglerAfpOffentligData(data) + + const miljoerMedData = data?.map((miljoData) => miljoData.data && miljoData.miljo) + const errorMiljoer = bestilteMiljoer?.filter((miljo) => !miljoerMedData?.includes(miljo)) + + const forsteMiljo = data.find((miljoData) => miljoData?.data)?.miljo + + const filteredData = + tilgjengeligMiljoe && data.filter((item) => tilgjengeligMiljoe.includes(item.miljo)) + + return ( + + + {manglerFagsystemdata ? ( + + Fant ikke AFP offentlig-data på person + + ) : ( + + + + )} + + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx index 69645abc3e..f7ab142125 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx @@ -51,6 +51,7 @@ import { sjekkManglerTpData } from '@/components/fagsystem/tjenestepensjon/visni import { sjekkManglerInstData } from '@/components/fagsystem/inst/visning/InstVisning' import { harAaregBestilling, + harAfpOffentligBestilling, harApBestilling, harArbeidsplassenBestilling, harArenaBestilling, @@ -96,6 +97,8 @@ import { useOrganisasjonMiljoe } from '@/utils/hooks/useOrganisasjonTilgang' import { useSkattekort } from '@/utils/hooks/useSkattekort' import { SkattekortVisning } from '@/components/fagsystem/skattekort/visning/Visning' import { PensjonsavtaleVisning } from '@/components/fagsystem/pensjonsavtale/visning/PensjonsavtaleVisning' +import { useMockOppsett } from '@/utils/hooks/usePensjon' +import { AfpOffentligVisning } from '@/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning' const getIdenttype = (ident) => { if (parseInt(ident.charAt(0)) > 3) { @@ -229,6 +232,12 @@ export default ({ pensjonEnvironments, ) + const { mockOppsett: afpOffentligData, loading: afpOffentligLoading } = useMockOppsett( + pensjonEnvironments, + ident.ident, + harAfpOffentligBestilling(bestillingerFagsystemer), + ) + const { loading: loadingSykemeldingData, data: sykemeldingData } = useTransaksjonIdData( ident.ident, 'SYKEMELDING', @@ -369,6 +378,7 @@ export default ({ ) return arbeidsplassenBestillinger?.[0]?.data?.arbeidsplassenCV?.harHjemmel } + return (
@@ -507,6 +517,12 @@ export default ({ bestillingIdListe={bestillingIdListe} tilgjengeligMiljoe={tilgjengeligMiljoe} /> + { return uforetrygd } +export const harAfpOffentligBestilling = (bestillingerFagsystemer) => { + let afpOffentlig = false + bestillingerFagsystemer?.forEach((i) => { + if (i?.pensjonforvalter?.afpOffentlig) { + afpOffentlig = true + } + }) + return afpOffentlig +} + export const harInstBestilling = (bestillingerFagsystemer) => { let inst = false bestillingerFagsystemer?.forEach((i) => { diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx index 4ccef069d2..3afbc0e8da 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx @@ -1,12 +1,21 @@ import useSWR from 'swr' -import api, { fetcher } from '@/api' +import api, { fetcher, multiFetcherAfpOffentlig } from '@/api' import { v4 as _uuid } from 'uuid' import useSWRMutation from 'swr/mutation' -const pensjonVedtakUrl = '/testnav-pensjon-testdata-facade-proxy/api/v2/vedtak' -const pensjonFacadeGenererUrl = - '/testnav-pensjon-testdata-facade-proxy/api/v1/generate-inntekt-med-gjennomsnitt-g' -const tpOrdningUrl = '/testnav-pensjon-testdata-facade-proxy/api/v1/tp/ordning' +const baseUrl = '/testnav-pensjon-testdata-facade-proxy' +const pensjonVedtakUrl = `${baseUrl}/api/v2/vedtak` +const pensjonFacadeGenererUrl = `${baseUrl}/api/v1/generate-inntekt-med-gjennomsnitt-g` +const tpOrdningUrl = `${baseUrl}/api/v1/tp/ordning` +const muligedirektekallUrl = `${baseUrl}/q1/api/mock-oppsett/muligedirektekall` +//TODO: Hva gjør vi med miljoet i denne? + +const getMockOppsettUrl = (miljoer, ident) => { + return miljoer.map((miljoe) => ({ + url: `${baseUrl}/${miljoe}/api/mock-oppsett/${ident}`, + miljo: miljoe, + })) +} export const usePensjonVedtak = (ident, miljo) => { const { data, isLoading, error } = useSWR( @@ -27,6 +36,7 @@ type GjennomsnittG = { generatedG: number grunnbelop: number } + type PensjonResponse = { data: { arInntektGList: GjennomsnittG[] @@ -69,13 +79,6 @@ export const usePensjonFacadeGenerer = (body: any) => { } export const useTpOrdning = () => { - // const { data, isLoading, error } = useSWR( - // [ - // tpOrdningUrl, - // { headers: { 'Nav-Call-Id': _uuid(), 'Nav-Consumer-Id': 'dolly', Authorization: 'dolly' } }, - // ], - // ([url, headers]) => fetcher(url, headers), - // ) const { data, isLoading, error } = useSWR(tpOrdningUrl, fetcher) const options = data?.map((tpOrdning) => ({ @@ -89,3 +92,29 @@ export const useTpOrdning = () => { error: error, } } + +export const useMuligeDirektekall = () => { + const { data, isLoading, error } = useSWR(muligedirektekallUrl, fetcher) + + const options = data?.muligeDirekteKall?.map((direktekall) => ({ + value: direktekall.tpId, + label: `${direktekall.tpId} - ${direktekall.navn}`, + })) + + return { + direktekallData: options, + loading: isLoading, + error: error, + } +} + +export const useMockOppsett = (miljoer, ident, harBestilling) => { + const mockOppsettUrl = harBestilling ? getMockOppsettUrl(miljoer, ident) : null + const { data, isLoading, error } = useSWR(mockOppsettUrl, multiFetcherAfpOffentlig) + + return { + mockOppsett: data?.sort((a, b) => a?.miljo?.localeCompare(b?.miljo)), + loading: isLoading, + error: error, + } +} From 5e953fb1942b3894709fdc558d1abde68ff04e3c Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Wed, 25 Sep 2024 10:41:54 +0200 Subject: [PATCH 4/8] Bestillingsvisning --- .../kriterier/BestillingKriterieMapper.tsx | 26 +++++++++++++++++++ .../visning/AfpOffentligVisning.tsx | 15 +++++------ 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx b/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx index 4e17ace576..7c36bd9369 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestilling/sammendrag/kriterier/BestillingKriterieMapper.tsx @@ -29,6 +29,7 @@ import { kodeverkKeyToLabel } from '@/components/fagsystem/sigrunstubPensjonsgiv import { useContext } from 'react' import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext' import { showKodeverkLabel } from '@/components/fagsystem/skattekort/visning/Visning' +import { showTpNavn } from '@/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning' // TODO: Flytte til selector? // - Denne kan forminskes ved bruk av hjelpefunksjoner @@ -2048,6 +2049,31 @@ const mapPensjon = (bestillingData, data, navEnheter) => { } data.push(pensjonforvalterUforetrygd) } + + if (pensjonKriterier?.afpOffentlig) { + const afpOffentlig = pensjonKriterier.afpOffentlig + + const pensjonforvalterAfpOffentlig = { + header: 'AFP Offentlig', + items: [ + obj('Direktekall', afpOffentlig.direktekall?.map((tpId) => showTpNavn(tpId))?.join(', ')), + ], + itemRows: [], + } + + afpOffentlig?.mocksvar?.forEach((mocksvar, i) => { + pensjonforvalterAfpOffentlig.itemRows.push([ + { numberHeader: `AFP offentlig ${i + 1}` }, + obj('TP-ordning', showTpNavn(mocksvar.tpId)), + obj('Status AFP', showLabel('statusAfp', mocksvar.statusAfp)), + obj('Virkningsdato', formatDate(mocksvar.virkningsDato)), + obj('Sist benyttet G', mocksvar.sistBenyttetG), + obj('Antall beløp', mocksvar.belopsListe?.length), + ]) + }) + + data.push(pensjonforvalterAfpOffentlig) + } } } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx index 9240f7db69..a97523d5a8 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx @@ -19,17 +19,16 @@ export const sjekkManglerAfpOffentligData = (afpOffentligData) => { ) } -const DataVisning = ({ data }) => { +export const showTpNavn = (tpId) => { const { tpOrdningData } = useTpOrdning() - - const showTpNavn = (tpId) => { - const tpOrdning = tpOrdningData?.find((tpOrdning) => tpOrdning.value === tpId) - if (tpOrdning) { - return tpOrdning.label - } - return tpId + const tpOrdning = tpOrdningData?.find((tpOrdning) => tpOrdning.value === tpId) + if (tpOrdning) { + return tpOrdning.label } + return tpId +} +const DataVisning = ({ data }) => { return ( <>
From 9f953151da4c3c102a37e020e50169bbf63f10fa Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Wed, 25 Sep 2024 11:58:08 +0200 Subject: [PATCH 5/8] Validation --- .../fagsystem/afpOffentlig/form/Form.tsx | 3 ++ .../afpOffentlig/form/validation.tsx | 30 +++++++++++++++++++ .../fagsystem/afpOffentlig/initialValues.tsx | 8 ++--- .../visning/AfpOffentligVisning.tsx | 18 ++++++----- .../fagsystem/pensjon/form/validation.tsx | 2 ++ 5 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/validation.tsx diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx index ac4837edbe..99d55a5e61 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx @@ -11,6 +11,7 @@ import { SelectOptionsManager as Options } from '@/service/SelectOptions' import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' import { getYearRangeOptions } from '@/utils/DataFormatter' import { BelopForm } from '@/components/fagsystem/afpOffentlig/form/BeloepForm' +import { validation } from '@/components/fagsystem/afpOffentlig/form/validation' export const afpOffentligPath = 'pensjonforvalter.afpOffentlig' @@ -91,3 +92,5 @@ export const AfpOffentligForm = () => { ) } + +AfpOffentligForm.validation = validation diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/validation.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/validation.tsx new file mode 100644 index 0000000000..81e6b1c3b7 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/validation.tsx @@ -0,0 +1,30 @@ +import { ifPresent, requiredDate, requiredNumber } from '@/utils/YupValidations' +import * as Yup from 'yup' + +export const validation = { + afpOffentlig: ifPresent( + '$pensjonforvalter.afpOffentlig', + Yup.object({ + direktekall: Yup.array().of(Yup.string()).nullable(), + mocksvar: Yup.array().of( + Yup.object({ + tpId: Yup.string().nullable(), + statusAfp: Yup.string().nullable(), + virkningsDato: Yup.date().nullable(), + sistBenyttetG: Yup.number() + .transform((i, j) => (j === '' ? null : i)) + .nullable(), + belopsListe: Yup.array().of( + Yup.object({ + fomDato: ifPresent('$fomDato', requiredDate), + belop: ifPresent( + '$belop', + requiredNumber.transform((i, j) => (j === '' ? null : i)), + ), + }), + ), + }), + ), + }), + ), +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx index ce64a432e7..5552a77d45 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx @@ -1,12 +1,12 @@ export const initialBeloep = { - fomDato: '', + fomDato: null, belop: 0, } export const initialMocksvar = { - tpId: '', - statusAfp: '', - virkningsDato: '', + tpId: null, + statusAfp: null, + virkningsDato: null, sistBenyttetG: 2024, belopsListe: [initialBeloep], } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx index a97523d5a8..1f9bed1163 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx @@ -44,14 +44,16 @@ const DataVisning = ({ data }) => { - - {(belop, idy) => ( - - - - - )} - + {mocksvar?.belopsListe?.length > 0 && ( + + {(belop, idy) => ( + + + + + )} + + )} )} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/pensjon/form/validation.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/pensjon/form/validation.tsx index a91cc5abfe..271c2000ec 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/pensjon/form/validation.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/pensjon/form/validation.tsx @@ -6,6 +6,7 @@ import { AlderspensjonForm } from '@/components/fagsystem/alderspensjon/form/For import { UforetrygdForm } from '@/components/fagsystem/uforetrygd/form/Form' import { PensjonsavtaleForm } from '@/components/fagsystem/pensjonsavtale/form/Form' import { getYear } from 'date-fns' +import { AfpOffentligForm } from '@/components/fagsystem/afpOffentlig/form/Form' function calculate_age(dob) { const diff_ms = Date.now() - dob.getTime() @@ -224,6 +225,7 @@ export const validation = { ...TjenestepensjonForm.validation, ...AlderspensjonForm.validation, ...UforetrygdForm.validation, + ...AfpOffentligForm.validation, }), ), } From b61f6d7cb639e65d39343c8b1e52d5229d422027 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Wed, 25 Sep 2024 16:22:40 +0200 Subject: [PATCH 6/8] Playwright-tester --- .../src/main/js/playwright/globalSetup.tsx | 3 ++ .../main/js/playwright/mocks/BasicMocks.tsx | 50 +++++++++++++++++++ .../fagsystem/afpOffentlig/initialValues.tsx | 6 ++- 3 files changed, 57 insertions(+), 2 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/playwright/globalSetup.tsx b/apps/dolly-frontend/src/main/js/playwright/globalSetup.tsx index ec20a4276d..5baa2f7d3d 100644 --- a/apps/dolly-frontend/src/main/js/playwright/globalSetup.tsx +++ b/apps/dolly-frontend/src/main/js/playwright/globalSetup.tsx @@ -1,6 +1,7 @@ import { test as base } from '@playwright/test' import { aaregMock, + afpOffentligMock, ameldingMock, arenaMock, backendBestillingerMock, @@ -86,6 +87,7 @@ const pensjonTp = new RegExp(/testnav-pensjon-testdata-facade-proxy\/api\/v1\/tp const pensjonPensjonsavtale = new RegExp( /testnav-pensjon-testdata-facade-proxy\/api\/v2\/pensjonsavtale\/hent/, ) +const afpOffentlig = new RegExp(/testnav-pensjon-testdata-facade-proxy\/q1\/api\/mock-oppsett/) const krrstub = new RegExp(/testnav-krrstub-proxy\/api\/v2/) const udistub = new RegExp(/testnav-udistub-proxy\/api\/v1/) const brregstub = new RegExp(/testnav-brregstub/) @@ -147,6 +149,7 @@ const mockRoutes: RouteInfo[] = [ { url: pensjon, response: pensjonMock }, { url: pensjonTp, response: pensjonTpMock }, { url: pensjonPensjonsavtale, response: pensjonPensjonsavtaleMock }, + { url: afpOffentlig, response: afpOffentligMock }, { url: sigrunstub, response: sigrunstubMock }, { url: udistub, response: udistubMock }, { url: kodeverk, response: kodeverkMock }, diff --git a/apps/dolly-frontend/src/main/js/playwright/mocks/BasicMocks.tsx b/apps/dolly-frontend/src/main/js/playwright/mocks/BasicMocks.tsx index f861792b26..853200d21b 100644 --- a/apps/dolly-frontend/src/main/js/playwright/mocks/BasicMocks.tsx +++ b/apps/dolly-frontend/src/main/js/playwright/mocks/BasicMocks.tsx @@ -883,6 +883,24 @@ export const pensjonTpMock = [{ ordning: '4095' }, { ordning: '3010' }] export const pensjonPensjonsavtaleMock = [{}, {}] +export const afpOffentligMock = { + direktekall: [], + mocksvar: [ + { + tpId: '4099', + statusAfp: 'INNVILGET', + virkningsDato: '2024-09-01T00:00:00', + sistBenyttetG: 2024, + belopsListe: [ + { + fomDato: '2024-09-02T00:00:00', + belop: '10000', + }, + ], + }, + ], +} + export const tagsMock = [{ tag: 'DUMMY', beskrivelse: 'Dummy' }] export const kontoregisterMock = { @@ -1486,6 +1504,21 @@ export const backendBestillingerMock = [ }, ], }, + { + id: 'PEN_AFP_OFFENTLIG', + navn: 'AFP offentlig (PEN)', + statuser: [ + { + melding: 'OK', + detaljert: [ + { + miljo: 'q1', + identer: ['12345678912'], + }, + ], + }, + ], + }, { id: 'INNTKMELD', navn: 'Inntektsmelding (ALTINN/JOARK)', @@ -1683,6 +1716,23 @@ export const backendBestillingerMock = [ ], }, ], + afpOffentlig: { + direktekall: [], + mocksvar: [ + { + tpId: '4099', + statusAfp: 'INNVILGET', + virkningsDato: '2024-09-01T00:00:00', + sistBenyttetG: 2024, + belopsListe: [ + { + fomDato: '2024-09-02T00:00:00', + belop: '10000', + }, + ], + }, + ], + }, }, inntektsmelding: { inntekter: [ diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx index 5552a77d45..f522abb09e 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/initialValues.tsx @@ -1,5 +1,7 @@ +import { runningE2ETest } from '@/service/services/Request' + export const initialBeloep = { - fomDato: null, + fomDato: runningE2ETest() ? new Date() : null, belop: 0, } @@ -7,7 +9,7 @@ export const initialMocksvar = { tpId: null, statusAfp: null, virkningsDato: null, - sistBenyttetG: 2024, + sistBenyttetG: new Date().getFullYear(), belopsListe: [initialBeloep], } From ed234b5c946f84e2aed3fb80fa844948d147bdba Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Wed, 25 Sep 2024 17:32:19 +0200 Subject: [PATCH 7/8] Sonar-fix --- .../visning/AfpOffentligVisning.tsx | 58 +++++++++---------- .../main/js/src/utils/hooks/usePensjon.tsx | 1 - 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx index 1f9bed1163..b17eb590b1 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/visning/AfpOffentligVisning.tsx @@ -30,35 +30,33 @@ export const showTpNavn = (tpId) => { const DataVisning = ({ data }) => { return ( - <> -
- showTpNavn(tpId))?.join(', ')} - size="full-width" - /> - - {(mocksvar, idx) => ( - - - - - - {mocksvar?.belopsListe?.length > 0 && ( - - {(belop, idy) => ( - - - - - )} - - )} - - )} - -
- +
+ showTpNavn(tpId))?.join(', ')} + size="full-width" + /> + + {(mocksvar, idx) => ( + + + + + + {mocksvar?.belopsListe?.length > 0 && ( + + {(belop, idy) => ( + + + + + )} + + )} + + )} + +
) } @@ -95,7 +93,7 @@ export const AfpOffentligVisning = ({ data, loading, bestillingIdListe, tilgjeng bestilteMiljoer={bestilteMiljoer} errorMiljoer={errorMiljoer} forsteMiljo={forsteMiljo} - data={filteredData ? filteredData : data} + data={filteredData || data} > diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx index 3afbc0e8da..5a1c685fa7 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx @@ -8,7 +8,6 @@ const pensjonVedtakUrl = `${baseUrl}/api/v2/vedtak` const pensjonFacadeGenererUrl = `${baseUrl}/api/v1/generate-inntekt-med-gjennomsnitt-g` const tpOrdningUrl = `${baseUrl}/api/v1/tp/ordning` const muligedirektekallUrl = `${baseUrl}/q1/api/mock-oppsett/muligedirektekall` -//TODO: Hva gjør vi med miljoet i denne? const getMockOppsettUrl = (miljoer, ident) => { return miljoer.map((miljoe) => ({ From 31e1b0b89292816e2f51ccfae10bf187b9d60055 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Wed, 25 Sep 2024 18:55:03 +0200 Subject: [PATCH 8/8] Types og opprydning #deploy-test-frontend --- .../afpOffentlig/afpOffentligTypes.tsx | 17 +++++++++ .../afpOffentlig/form/BeloepForm.tsx | 4 +- .../fagsystem/afpOffentlig/form/Form.tsx | 11 +++--- .../visning/AfpOffentligVisning.tsx | 37 +++++++++++++++---- .../main/js/src/utils/hooks/usePensjon.tsx | 6 +-- 5 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/afpOffentligTypes.tsx diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/afpOffentligTypes.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/afpOffentligTypes.tsx new file mode 100644 index 0000000000..eb6baf26c0 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/afpOffentligTypes.tsx @@ -0,0 +1,17 @@ +export type BeloepTypes = { + fomDato: Date + belop: string +} + +export type MocksvarTypes = { + tpId: string + statusAfp: string + virkningsDato: Date + sistBenyttetG: number + belopsListe: Array +} + +export type AfpOffentligTypes = { + direktekall: Array + mocksvar: Array +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/BeloepForm.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/BeloepForm.tsx index ec61376ecc..6bcfc6d20c 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/BeloepForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/BeloepForm.tsx @@ -4,10 +4,10 @@ import React from 'react' import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' -export const BelopForm = ({ path }) => { +export const BelopForm = ({ path }: { path: string }) => { return ( - {(belop, idx) => ( + {(belop: string, idx: number) => (
diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx index 99d55a5e61..fe0dcbaff1 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/afpOffentlig/form/Form.tsx @@ -12,6 +12,7 @@ import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicke import { getYearRangeOptions } from '@/utils/DataFormatter' import { BelopForm } from '@/components/fagsystem/afpOffentlig/form/BeloepForm' import { validation } from '@/components/fagsystem/afpOffentlig/form/validation' +import { MocksvarTypes } from '@/components/fagsystem/afpOffentlig/afpOffentligTypes' export const afpOffentligPath = 'pensjonforvalter.afpOffentlig' @@ -23,14 +24,14 @@ export const AfpOffentligForm = () => { const valgteDirektekall = formMethods.watch(`${afpOffentligPath}.direktekall`) const filterTpOrdningOptions = tpOrdningData?.filter( - (option) => !valgteDirektekall?.includes(option.value), + (option: any) => !valgteDirektekall?.includes(option.value), ) const valgteTpOrdninger = formMethods .watch(`${afpOffentligPath}.mocksvar`) - ?.map((mocksvar) => mocksvar.tpId) + ?.map((mocksvar: MocksvarTypes) => mocksvar.tpId) const filterDirektekallOptions = direktekallData?.filter( - (option) => !valgteTpOrdninger?.includes(option.value), + (option: any) => !valgteTpOrdninger?.includes(option.value), ) return ( @@ -58,7 +59,7 @@ export const AfpOffentligForm = () => { newEntry={initialMocksvar} canBeEmpty={false} > - {(formPath, idx) => ( + {(formPath: string, idx: number) => (
{ label="TP-ordning" size={'xxlarge'} options={filterTpOrdningOptions} - // isClearable={false} /> { +type MiljoDataTypes = { + miljo: string + data: AfpOffentligTypes +} + +type VisningTypes = { + data: Array + loading: boolean + bestillingIdListe: Array + tilgjengeligMiljoe: string +} + +export const sjekkManglerAfpOffentligData = (afpOffentligData: Array) => { return ( afpOffentligData?.length < 1 || afpOffentligData?.every( @@ -19,16 +36,16 @@ export const sjekkManglerAfpOffentligData = (afpOffentligData) => { ) } -export const showTpNavn = (tpId) => { +export const showTpNavn = (tpId: string) => { const { tpOrdningData } = useTpOrdning() - const tpOrdning = tpOrdningData?.find((tpOrdning) => tpOrdning.value === tpId) + const tpOrdning = tpOrdningData?.find((tpOrdning: any) => tpOrdning.value === tpId) if (tpOrdning) { return tpOrdning.label } return tpId } -const DataVisning = ({ data }) => { +const DataVisning = ({ data }: { data: AfpOffentligTypes }) => { return (
{ size="full-width" /> - {(mocksvar, idx) => ( + {(mocksvar: MocksvarTypes, idx: number) => ( @@ -45,7 +62,7 @@ const DataVisning = ({ data }) => { {mocksvar?.belopsListe?.length > 0 && ( - {(belop, idy) => ( + {(belop: BeloepTypes, idy: number) => ( @@ -60,7 +77,12 @@ const DataVisning = ({ data }) => { ) } -export const AfpOffentligVisning = ({ data, loading, bestillingIdListe, tilgjengeligMiljoe }) => { +export const AfpOffentligVisning = ({ + data, + loading, + bestillingIdListe, + tilgjengeligMiljoe, +}: VisningTypes) => { const { bestilteMiljoer } = useBestilteMiljoer(bestillingIdListe, 'PEN_AFP_OFFENTLIG') if (loading) { @@ -75,7 +97,6 @@ export const AfpOffentligVisning = ({ data, loading, bestillingIdListe, tilgjeng const miljoerMedData = data?.map((miljoData) => miljoData.data && miljoData.miljo) const errorMiljoer = bestilteMiljoer?.filter((miljo) => !miljoerMedData?.includes(miljo)) - const forsteMiljo = data.find((miljoData) => miljoData?.data)?.miljo const filteredData = diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx index 5a1c685fa7..a8dc2f30e5 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePensjon.tsx @@ -80,7 +80,7 @@ export const usePensjonFacadeGenerer = (body: any) => { export const useTpOrdning = () => { const { data, isLoading, error } = useSWR(tpOrdningUrl, fetcher) - const options = data?.map((tpOrdning) => ({ + const options = data?.map((tpOrdning: any) => ({ value: tpOrdning.tpnr, label: `${tpOrdning.tpnr} - ${tpOrdning.navn}`, })) @@ -95,7 +95,7 @@ export const useTpOrdning = () => { export const useMuligeDirektekall = () => { const { data, isLoading, error } = useSWR(muligedirektekallUrl, fetcher) - const options = data?.muligeDirekteKall?.map((direktekall) => ({ + const options = data?.muligeDirekteKall?.map((direktekall: any) => ({ value: direktekall.tpId, label: `${direktekall.tpId} - ${direktekall.navn}`, })) @@ -107,7 +107,7 @@ export const useMuligeDirektekall = () => { } } -export const useMockOppsett = (miljoer, ident, harBestilling) => { +export const useMockOppsett = (miljoer: Array, ident: string, harBestilling: boolean) => { const mockOppsettUrl = harBestilling ? getMockOppsettUrl(miljoer, ident) : null const { data, isLoading, error } = useSWR(mockOppsettUrl, multiFetcherAfpOffentlig)