Skip to content

Commit

Permalink
Merge pull request #3635 from navikt/feature/afp-offentlig-frontend
Browse files Browse the repository at this point in the history
Feature/afp offentlig frontend
  • Loading branch information
betsytraran authored Sep 27, 2024
2 parents 1e446f7 + c38feb0 commit 14f7e93
Show file tree
Hide file tree
Showing 19 changed files with 511 additions and 37 deletions.
3 changes: 3 additions & 0 deletions apps/dolly-frontend/src/main/js/playwright/globalSetup.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { test as base } from '@playwright/test'
import {
aaregMock,
afpOffentligMock,
ameldingMock,
arenaMock,
backendBestillingerMock,
Expand Down Expand Up @@ -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/)
Expand Down Expand Up @@ -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 },
Expand Down
50 changes: 50 additions & 0 deletions apps/dolly-frontend/src/main/js/playwright/mocks/BasicMocks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -898,6 +898,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 = {
Expand Down Expand Up @@ -1501,6 +1519,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)',
Expand Down Expand Up @@ -1698,6 +1731,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: [
Expand Down
2 changes: 1 addition & 1 deletion apps/dolly-frontend/src/main/js/proxy-routes.json
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
14 changes: 14 additions & 0 deletions apps/dolly-frontend/src/main/js/src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -9,62 +9,37 @@ 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/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)
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 (
<Panel
heading={PensjonPanel.heading}
informasjonstekst={infoTekst}
checkAttributeArray={() => {
sm.batchAdd(getIgnoreKeys())
}}
checkAttributeArray={sm.batchAdd}
uncheckAttributeArray={sm.batchRemove}
iconType="pensjon"
startOpen={harValgtAttributt(formValues, [
pensjonPath,
avtalePath,
tpPath,
alderspensjonPath,
uforetrygdPath,
afpOffentligPath,
])}
>
<AttributtKategori title="Pensjonsgivende inntekt (POPP)" attr={sm.attrs}>
Expand All @@ -82,6 +57,9 @@ export const PensjonPanel = ({ stateModifier, formValues }: any) => {
<AttributtKategori title="Uføretrygd" attr={sm.attrs}>
<Attributt attr={sm.attrs.uforetrygd} />
</AttributtKategori>
<AttributtKategori title="AFP offentlig" attr={sm.attrs}>
<Attributt attr={sm.attrs.afpOffentlig} />
</AttributtKategori>
</Panel>
)
}
Expand All @@ -96,6 +74,7 @@ PensjonPanel.initialValues = ({ set, del, has }: any) => {
alderspensjon: 'pensjonforvalter.alderspensjon',
uforetrygd: 'pensjonforvalter.uforetrygd',
pensjonsavtale: 'pensjonforvalter.pensjonsavtale',
afpOffentlig: 'pensjonforvalter.afpOffentlig',
}
return {
inntekt: {
Expand Down Expand Up @@ -137,5 +116,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),
},
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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) => <span style={{ fontWeight: 'bold' }}>{gruppe.navn}</span>

Expand Down Expand Up @@ -77,6 +78,7 @@ export const Steg2 = () => {
<TjenestepensjonForm />
<AlderspensjonForm />
<UforetrygdForm />
<AfpOffentligForm />
<ArenaForm />
<SykdomForm />
<BrregstubForm />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
export type BeloepTypes = {
fomDato: Date
belop: string
}

export type MocksvarTypes = {
tpId: string
statusAfp: string
virkningsDato: Date
sistBenyttetG: number
belopsListe: Array<BeloepTypes>
}

export type AfpOffentligTypes = {
direktekall: Array<string>
mocksvar: Array<MocksvarTypes>
}
Original file line number Diff line number Diff line change
@@ -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 }: { path: string }) => {
return (
<FormDollyFieldArray name={path} header="Beløp" newEntry={initialBeloep} nested>
{(belop: string, idx: number) => (
<div key={idx} className="flexbox">
<FormDatepicker name={`${belop}.fomDato`} label="F.o.m. dato" />
<FormTextInput name={`${belop}.belop`} label="Beløp" type="number" />
</div>
)}
</FormDollyFieldArray>
)
}
Loading

0 comments on commit 14f7e93

Please sign in to comment.