Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1048,6 +1048,23 @@ const mapTpsMessaging = (bestillingData, data) => {
}
}

const mapEtterlatteYtelser = (bestillingsData, data) => {
const etterlatteYtelser = _.get(bestillingsData, 'etterlatteYtelser')
if (etterlatteYtelser) {
const etterlatteYtelserData = {
header: 'Etterlatteytelser',
itemRows: etterlatteYtelser.map((item, idx) => {
return [
{ numberHeader: `Etterlatteytelse ${idx + 1}` },
obj('Ytelse', showLabel('etterlatteYtelser', item.ytelse)),
obj('Søker', item.soeker),
]
}),
}
data.push(etterlatteYtelserData)
}
}

export const arbeidsforholdVisning = (arbeidsforhold, i, aaregKriterier, amelding) => [
{
numberHeader: `Arbeidsforhold ${i + 1}`,
Expand Down Expand Up @@ -2492,6 +2509,7 @@ export function mapBestillingData(bestillingData, bestillingsinformasjon, firstI

mapFullmakt(bestillingData, data)
mapTpsMessaging(bestillingData, data)
mapEtterlatteYtelser(bestillingData, data)
mapAareg(bestillingData, data)
mapSigrunstubPensjonsgivende(bestillingData, data)
mapSigrunstubSummertSkattegrunnlag(bestillingData, data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { PensjonPanel } from '@/components/bestillingsveileder/stegVelger/steg/s
import { ArbeidssoekerPanel } from '@/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Arbeidssoeker'
import { MedlPanel } from '@/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Medl'
import { useFormContext } from 'react-hook-form'
import { EtterlatteYtelserPanel } from '@/components/bestillingsveileder/stegVelger/steg/steg1/paneler/EtterlatteYtelser'

export const identFraTestnorge = (opts: any) => {
if (opts?.is?.importTestnorge) {
Expand All @@ -47,6 +48,7 @@ export const Steg1Person = ({ stateModifier }: any) => {
BrregPanel,
IdentifikasjonPanel,
KontaktDoedsboPanel,
EtterlatteYtelserPanel,
InstitusjonsoppholdPanel,
KontaktReservasjonsPanel,
ArenaPanel,
Expand Down Expand Up @@ -76,6 +78,7 @@ export const Steg1Person = ({ stateModifier }: any) => {
<KontaktDoedsboPanel stateModifier={stateModifier} formValues={formValues} />
</>
)}
<EtterlatteYtelserPanel stateModifier={stateModifier} formValues={formValues} />
<ArbeidInntektPanel stateModifier={stateModifier} formValues={formValues} />
<ArbeidssoekerPanel stateModifier={stateModifier} formValues={formValues} />
<PensjonPanel stateModifier={stateModifier} formValues={formValues} />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import Panel from '@/components/ui/panel/Panel'
import { harValgtAttributt } from '@/components/ui/form/formUtils'
import {
Attributt,
AttributtKategori,
} from '@/components/bestillingsveileder/stegVelger/steg/steg1/Attributt'
import { initialEtterlatteYtelser } from '@/components/fagsystem/gjenny/form/Form'

export const etterlatteYtelserAttributt = 'etterlatteYtelser'

export const EtterlatteYtelserPanel = ({ stateModifier, formValues }) => {
const sm = stateModifier(EtterlatteYtelserPanel.initialValues)

return (
<Panel
heading={EtterlatteYtelserPanel.heading}
checkAttributeArray={sm.batchAdd}
uncheckAttributeArray={sm.batchRemove}
iconType="grav"
startOpen={harValgtAttributt(formValues, [etterlatteYtelserAttributt])}
>
<AttributtKategori attr={sm.attrs}>
<Attributt attr={sm.attrs.etterlatteYtelser} />
</AttributtKategori>
</Panel>
)
}

EtterlatteYtelserPanel.heading = 'Etterlatteytelser'

EtterlatteYtelserPanel.initialValues = ({ set, del, has }) => ({
etterlatteYtelser: {
label: 'Har etterlatteytelser',
checked: has(etterlatteYtelserAttributt),
add() {
set(etterlatteYtelserAttributt, [initialEtterlatteYtelser])
},
remove() {
del(etterlatteYtelserAttributt)
},
},
})
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { ifPresent } from '@/utils/YupValidations'
import SykdomForm from '@/components/fagsystem/sykdom/form/Form'
import PdlfForm from '@/components/fagsystem/pdlf/form/Form'
import { SigrunstubSummertSkattegrunnlagForm } from '@/components/fagsystem/sigrunstubSummertSkattegrunnlag/form/Form'
import { EtterlatteYtelserForm } from '@/components/fagsystem/gjenny/form/Form'

export const DollyIdentValidation = Yup.object({
antall: ifPresent(
Expand All @@ -38,6 +39,7 @@ export const DollyIdentValidation = Yup.object({
.required('Oppgi antall personer'),
),
...PdlfForm.validation,
...EtterlatteYtelserForm.validation,
...AaregForm.validation,
...ArbeidsplassenForm.validation,
...ArbeidssoekerregisteretForm.validation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import {
sigrunstubSummertSkattegrunnlagAttributt,
SigrunstubSummertSkattegrunnlagForm,
} from '@/components/fagsystem/sigrunstubSummertSkattegrunnlag/form/Form'
import { EtterlatteYtelserForm } from '@/components/fagsystem/gjenny/form/Form'

const HistarkForm = lazy(() => import('@/components/fagsystem/histark/form/HistarkForm'))
const DokarkivForm = lazy(() => import('@/components/fagsystem/dokarkiv/form/DokarkivForm'))
Expand Down Expand Up @@ -81,6 +82,7 @@ const Steg2: React.FC = () => {
<div>
<PdlfForm />
{getValues('fullmakt') && <FullmaktForm />}
{getValues('etterlatteYtelser') && <EtterlatteYtelserForm />}
{getValues('aareg') && <AaregForm />}
{getValues(sigrunstubPensjonsgivendeAttributt) && <SigrunstubPensjonsgivendeForm />}
{getValues(sigrunstubSummertSkattegrunnlagAttributt) && (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import * as _ from 'lodash-es'
import { sigrunstubSummertSkattegrunnlagAttributt } from '@/components/fagsystem/sigrunstubSummertSkattegrunnlag/form/Form'
import { sigrunstubPensjonsgivendeAttributt } from '@/components/fagsystem/sigrunstubPensjonsgivende/form/Form'
import { etterlatteYtelserAttributt } from '@/components/bestillingsveileder/stegVelger/steg/steg1/paneler/EtterlatteYtelser'

export const tpsfAttributter = [
'harMellomnavn',
Expand Down Expand Up @@ -58,6 +59,7 @@ export const rootPaths = [
'pdldata.opprettNyPerson.foedtEtter',
'pdldata.opprettNyPerson.foedtFoer',
'pdlforvalter',
etterlatteYtelserAttributt,
'aareg',
'fullmakt',
'arbeidssoekerregisteret',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
import { useFormContext } from 'react-hook-form'
import { Vis } from '@/components/bestillingsveileder/VisAttributt'
import { etterlatteYtelserAttributt } from '@/components/bestillingsveileder/stegVelger/steg/steg1/paneler/EtterlatteYtelser'
import Panel from '@/components/ui/panel/Panel'
import { erForsteEllerTest, panelError } from '@/components/ui/form/formUtils'
import { SelectOptionsManager as Options } from '@/service/SelectOptions'
import { ErrorBoundary } from '@/components/ui/appError/ErrorBoundary'
import { FormDollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray'
import { FormSelect } from '@/components/ui/form/inputs/select/Select'
import { useContext } from 'react'
import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext'
import StyledAlert from '@/components/ui/alert/StyledAlert'
import { ifPresent, requiredString } from '@/utils/YupValidations'
import * as Yup from 'yup'
import { usePdlMiljoeinfo } from '@/utils/hooks/usePdlPerson'
import { usePdlOptions } from '@/utils/hooks/useSelectOptions'

export const initialEtterlatteYtelser = {
ytelse: null,
soeker: null,
}

export const EtterlatteYtelserForm = () => {
const formMethods = useFormContext()
const opts = useContext(BestillingsveilederContext)

const gyldigeSivilstander = [
'GIFT',
'SAMBOER',
'REGISTRERT_PARTNER',
'SEPARERT',
'SEPARERT_PARTNER',
]

const doedsfall =
formMethods.watch('pdldata.person.doedsfall') ??
opts?.personFoerLeggTil?.pdlforvalter?.person?.doedsfall ??
opts?.personFoerLeggTil?.pdl?.hentPerson?.doedsfall ??
opts?.importPersoner?.flatMap((person) => person.data?.hentPerson?.doedsfall)

const sivilstand =
formMethods.watch('pdldata.person.sivilstand') ??
opts?.personFoerLeggTil?.pdlforvalter?.person?.sivilstand ??
opts?.personFoerLeggTil?.pdl?.hentPerson?.sivilstand ??
opts?.importPersoner?.flatMap((person) => person.data?.hentPerson?.sivilstand)

const partner = sivilstand?.find((sivilstand) => gyldigeSivilstander.includes(sivilstand.type))

const { pdlData: partnerInfo } = usePdlMiljoeinfo(partner?.relatertVedSivilstand)

const partnerDoedsfall = partnerInfo?.hentPerson?.doedsfall

const pdlBarn = opts?.personFoerLeggTil?.pdl?.hentPerson?.forelderBarnRelasjon?.filter(
(item) => item.relatertPersonsRolle === 'BARN',
)
const tenorBarn = opts?.importPersoner?.flatMap((person) =>
person.data?.hentPerson?.forelderBarnRelasjon?.filter(
(item) => item.relatertPersonsRolle === 'BARN',
),
)
const barn =
formMethods
.watch('pdldata.person.forelderBarnRelasjon')
?.filter((item) => item.relatertPersonsRolle === 'BARN') ??
opts?.personFoerLeggTil?.pdlforvalter?.relasjoner?.filter(
(item) => item.relasjonType === 'FAMILIERELASJON_BARN',
) ??
pdlBarn ??
tenorBarn

const barnMedIdent = pdlBarn ?? tenorBarn

const barnGruppe = barnMedIdent?.map((b) => ({
ident: b.relatertPersonsIdent,
master: b.metadata?.master,
}))
const { data: barnOptions, loading: barnLoading } = usePdlOptions(barnGruppe, 'PDL', true)

const getInfotekst = (ytelse) => {
if (ytelse === 'OMSTILLINGSSTOENAD') {
if (!partner) {
return 'For å få omstillingsstønad må hovedperson ha en partner, og enten hovedperson eller partner må være død.'
}
if (
(!doedsfall || doedsfall?.length < 1) &&
(!partnerDoedsfall || partnerDoedsfall?.length < 1)
) {
return 'For å få omstillingsstønad må hovedperson eller partner være død.'
}
} else if (ytelse === 'BARNEPENSJON') {
if (!barn || barn?.length < 1) {
return 'For å få barnepensjon må hovedperson ha barn, og enten hovedperson eller evt. partner må være død.'
}
if (
(!doedsfall || doedsfall?.length < 1) &&
(!partnerDoedsfall || partnerDoedsfall?.length < 1)
) {
return 'For å få barnepensjon må hovedperson eller evt. partner være død.'
}
}
return null
}

return (
<Vis attributt={etterlatteYtelserAttributt}>
<Panel
heading="Etterlatteytelser"
hasErrors={panelError(etterlatteYtelserAttributt)}
iconType="grav"
startOpen={erForsteEllerTest(formMethods.getValues(), [etterlatteYtelserAttributt])}
>
<ErrorBoundary>
<FormDollyFieldArray
name="etterlatteYtelser"
header="Etterlatteytelse"
newEntry={initialEtterlatteYtelser}
canBeEmpty={false}
>
{(path: string) => {
const ytelse = formMethods.watch(`${path}.ytelse`)
const infotekst = getInfotekst(ytelse)
return (
<>
{infotekst && (
<StyledAlert variant="warning" size="small" style={{ width: '100%' }}>
{infotekst}
</StyledAlert>
)}
<FormSelect
name={`${path}.ytelse`}
label="Ytelse"
options={Options('etterlatteYtelser')}
size="large"
isClearable={false}
/>
<FormSelect
name={`${path}.soeker`}
label="Søker"
options={barnOptions}
isLoading={barnLoading}
size="xxlarge"
isDisabled={!barnOptions || barnOptions?.length < 2}
/>
</>
)
}}
</FormDollyFieldArray>
</ErrorBoundary>
</Panel>
</Vis>
)
}

EtterlatteYtelserForm.validation = {
etterlatteYtelser: ifPresent(
'$etterlatteYtelser',
Yup.array().of(
Yup.object({
ytelse: requiredString,
soeker: Yup.string().nullable(),
}),
),
),
}
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,6 @@ export const PdlEksisterendePerson = ({
}

const filterOptions = (person: Option) => {
if (person.doedsfall) {
return false
}
if (label === 'PERSON RELATERT TIL') {
// Sivilstand gift/samboer osv
return person.alder > 17 && gyldigeSivilstanderForPartner.includes(person?.sivilstand)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ const getValgteAttributter = (values) => {
'pdldata.person.utenlandskIdentifikasjonsnummer',
'pdldata.person.nyident',
'pdldata.person.kontaktinformasjonForDoedsbo',
'etterlatteYtelser',
'aareg',
'fullmakt',
sigrunstubPensjonsgivendeAttributt,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,12 @@ const selectOptions = {
{ value: 'AVSLAG', label: 'Avslag' },
],

// Gjenny:
etterlatteYtelser: [
{ value: 'BARNEPENSJON', label: 'Barnepensjon' },
{ value: 'OMSTILLINGSSTOENAD', label: 'Omstillingsstønad' },
],

miljoer: [
{ value: 'q1', label: 'Q1' },
{ value: 'q2', label: 'Q2' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const getPersonoppslagBolkUrl = (identer: Array<string>) =>

export const usePdlMiljoeinfo = (ident: string, hentQ1 = false) => {
const { data, error, isLoading } = useSWR<PdlDataWrapper, Error>(
getPersonoppslagUrl(ident, hentQ1 ? 'Q1' : null),
ident ? getPersonoppslagUrl(ident, hentQ1 ? 'Q1' : null) : null,
fetcher,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,31 +49,32 @@ export const usePdlOptions = (gruppe, master = 'PDLF', visDetaljertLabel = false
const ident = id?.person?.ident || id?.ident
const foreldre =
master === 'PDLF'
? id.relasjoner
? id?.relasjoner
?.filter((relasjon) => relasjon.relasjonType === 'FAMILIERELASJON_FORELDER')
?.map((relasjon) => relasjon.relatertPerson?.ident)
: id.person?.forelderBarnRelasjon
: id?.person?.forelderBarnRelasjon
?.filter((relasjon) => relasjon.minRolleForPerson === 'BARN')
?.map((relasjon) => relasjon.relatertPersonsIdent)
const foreldreansvar = (master = 'PDLF'
? id.relasjoner
? id?.relasjoner
?.filter((relasjon) => relasjon.relasjonType === 'FORELDREANSVAR_BARN')
?.map((relasjon) => relasjon.relatertPerson?.ident)
: null)
const alder = getAlder(
id.person?.foedselsdato?.[0]?.foedselsdato || id.person?.foedsel?.[0]?.foedselsdato,
id?.person?.foedselsdato?.[0]?.foedselsdato || id?.person?.foedsel?.[0]?.foedselsdato,
)
const doedsfall = id?.person?.doedsfall?.length > 0
const kjoenn = id?.person?.kjoenn?.[0].kjoenn?.toLowerCase()
const label = `${ident} - ${fornavn} ${mellomnavn} ${etternavn}`
personData.push({
value: ident,
label: visDetaljertLabel ? `${label} (${kjoenn} ${alder})` : label,
label: visDetaljertLabel ? `${label} (${kjoenn} ${alder}${doedsfall ? ', død' : ''})` : label,
relasjoner: id?.relasjoner?.map((r) => r?.relatertPerson?.ident),
alder: alder,
kjoenn: kjoenn,
sivilstand: id.person?.sivilstand?.[0]?.type,
vergemaal: id.person?.vergemaal?.length > 0,
doedsfall: id.person?.doedsfall?.length > 0,
sivilstand: id?.person?.sivilstand?.[0]?.type,
vergemaal: id?.person?.vergemaal?.length > 0,
doedsfall: doedsfall,
foreldre: foreldre,
foreldreansvar: foreldreansvar,
})
Expand Down
Loading