From b97b131c77ac01dcdd0b75b799b4ccb764e7cab5 Mon Sep 17 00:00:00 2001 From: Trondl <56258085+throndi@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:45:21 +0100 Subject: [PATCH] =?UTF-8?q?Vise=20kontantst=C3=B8tteperioder=20under=20ved?= =?UTF-8?q?tak=20og=20beregning=20for=20barnetilsyn=20=20(#2988)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Skal vise evt tidligere kontantstøtteperioder i vedtak og beregning for barnetilsyn * viser "nå" hvis perioden er løpende * tomMåned for KsPeriode skal være non-nullable * Skal allikevel ha tomMåned nullable for KsPeriode da infotrygdperioder kan være null her * Skal vise tomt felt hvis tomMåned er null * Fjerner harKontantstøttePerioder og gjør kontantstøtteperioder non-nullable for bedre håndtering * Fjerner harKontantstøttePerioder ifm KontantstøtteAlert siden dette kan utledes av listen av perioder * Update src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/KontantstøtteAlert.tsx * Skal vise når kontantstøtteperioder fra KS er hentet for å kunne lese kontekst bedre --------- Co-authored-by: Viktor Solberg --- .../Inngangsvilk\303\245r/vilk\303\245r.ts" | 9 +- .../InnvilgeVedtak/InnvilgeBarnetilsyn.tsx | 9 +- .../InnvilgeVedtak/InnvilgeVedtak.tsx | 17 ++- .../Kontantst\303\270tteAlert.tsx" | 119 ++++++++++++++++-- .../Kontantst\303\270tteValg.tsx" | 11 +- .../VedtakOgBeregningBarnetilsyn.tsx | 6 + 6 files changed, 153 insertions(+), 18 deletions(-) diff --git "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/vilk\303\245r.ts" "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/vilk\303\245r.ts" index 014d3407f..12eb98cae 100644 --- "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/vilk\303\245r.ts" +++ "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/vilk\303\245r.ts" @@ -27,10 +27,17 @@ export interface IVilkårGrunnlag { adresseopplysninger?: IAdresseopplysninger; dokumentasjon?: IDokumentasjonGrunnlag; harAvsluttetArbeidsforhold: boolean; - harKontantstøttePerioder?: boolean; + harKontantstøttePerioder?: boolean; // gjelder historiske behandlinger + kontantstøttePerioder: KontantstøttePeriode[]; behandlingOpprettet?: string; } +export interface KontantstøttePeriode { + fomMåned: string; + tomMåned?: string; + kilde: string; +} + export interface IPersonalia { personIdent: string; navn: INavn; diff --git a/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/InnvilgeBarnetilsyn.tsx b/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/InnvilgeBarnetilsyn.tsx index 0aef6779c..e8e4f3118 100644 --- a/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/InnvilgeBarnetilsyn.tsx +++ b/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/InnvilgeBarnetilsyn.tsx @@ -31,6 +31,7 @@ import { AlertError } from '../../../../../Felles/Visningskomponenter/Alerts'; import HovedKnapp, { Knapp } from '../../../../../Felles/Knapper/HovedKnapp'; import { CalculatorIcon } from '@navikt/aksel-icons'; import { ModalState } from '../../../Modal/NyEierModal'; +import { KontantstøttePeriode } from '../../../Inngangsvilkår/vilkår'; export type InnvilgeVedtakForm = { utgiftsperioder: IUtgiftsperiode[]; @@ -99,7 +100,9 @@ export const InnvilgeBarnetilsyn: React.FC<{ barn: IBarnMedSamvær[]; settResultatType: (val: EBehandlingResultat | undefined) => void; låsFraDatoFørsteRad: boolean; - harKontantstøttePerioder: boolean | undefined; + harKontantstøttePerioder?: boolean; + kontantstøttePerioderFraGrunnlagsdata: KontantstøttePeriode[]; + registeropplysningerOpprettetTid: string; }> = ({ lagretVedtak, behandling, @@ -107,6 +110,8 @@ export const InnvilgeBarnetilsyn: React.FC<{ settResultatType, låsFraDatoFørsteRad, harKontantstøttePerioder, + kontantstøttePerioderFraGrunnlagsdata, + registeropplysningerOpprettetTid, }) => { const lagretInnvilgetVedtak = lagretVedtak?._type === IVedtakType.InnvilgelseBarnetilsyn || @@ -315,6 +320,8 @@ export const InnvilgeBarnetilsyn: React.FC<{ valideringsfeil={formState.errors} harKontantstøttePerioder={harKontantstøttePerioder} kontantstøtteBegrunnelse={kontantstøtteBegrunnelseState} + kontantstøttePerioderFraGrunnlagsdata={kontantstøttePerioderFraGrunnlagsdata} + registeropplysningerOpprettetTid={registeropplysningerOpprettetTid} /> void; - harKontantstøttePerioder: boolean | undefined; -}> = ({ behandling, lagretVedtak, barn, settResultatType, harKontantstøttePerioder }) => { + harKontantstøttePerioder?: boolean; + kontantstøttePerioderFraGrunnlagsdata: KontantstøttePeriode[]; + registeropplysningerOpprettetTid: string; +}> = ({ + behandling, + lagretVedtak, + barn, + settResultatType, + harKontantstøttePerioder, + kontantstøttePerioderFraGrunnlagsdata, + registeropplysningerOpprettetTid, +}) => { const { axiosRequest, settIkkePersistertKomponent } = useApp(); const { behandlingErRedigerbar } = useBehandling(); @@ -85,6 +96,8 @@ export const InnvilgeVedtak: FC<{ settResultatType={settResultatType} låsFraDatoFørsteRad={!!revurderesFra} harKontantstøttePerioder={harKontantstøttePerioder} + kontantstøttePerioderFraGrunnlagsdata={kontantstøttePerioderFraGrunnlagsdata} + registeropplysningerOpprettetTid={registeropplysningerOpprettetTid} /> )} diff --git "a/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/Kontantst\303\270tteAlert.tsx" "b/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/Kontantst\303\270tteAlert.tsx" index 0b3b7ba9d..6eafec4f7 100644 --- "a/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/Kontantst\303\270tteAlert.tsx" +++ "b/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/Kontantst\303\270tteAlert.tsx" @@ -1,27 +1,120 @@ -import React from 'react'; +import React, { useState } from 'react'; import styled from 'styled-components'; -import { Alert } from '@navikt/ds-react'; +import { Alert, Button } from '@navikt/ds-react'; +import { ChevronDownIcon, ChevronUpIcon } from '@navikt/aksel-icons'; +import { KontantstøttePeriode } from '../../../Inngangsvilkår/vilkår'; +import { BodyShortSmall } from '../../../../../Felles/Visningskomponenter/Tekster'; +import { formaterIsoDato, formaterIsoMånedÅr } from '../../../../../App/utils/formatter'; const AlertStripe = styled(Alert)` - margin-top: 1rem; + margin-top: 0.5rem; + margin-bottom: 0.5rem; + padding: 1rem; +`; + +const InnholdContainer = styled.ul` + margin-left: 1rem; + padding-left: 0.5rem; margin-bottom: 1rem; `; +const StyledButton = styled(Button)` + margin-left: 1rem; + padding-left: 0.5rem; + padding-top: 0.2rem; + padding-bottom: 0.2rem; +`; + interface Props { harKontantstøttePerioder?: boolean; + kontantstøttePerioderFraGrunnlagsdata: KontantstøttePeriode[]; + registeropplysningerOpprettetTid: string; } -export const KontantstøtteAlert: React.FC = ({ harKontantstøttePerioder }) => { - if (harKontantstøttePerioder === null || harKontantstøttePerioder === undefined) { - return null; + +const utledKontantstøtteperioderAlertTekst = ( + kontantstøttePerioderFraGrunnlagsdata: KontantstøttePeriode[], + registeropplysningerOpprettetTid: string, + harKontantstøttePerioder?: boolean +): string => { + if (!harKontantstøttePerioder && kontantstøttePerioderFraGrunnlagsdata.length === 0) { + return `Bruker har verken fått eller får kontantstøtte (oppdatert ${formaterIsoDato( + registeropplysningerOpprettetTid + )})`; } + if (kontantstøttePerioderFraGrunnlagsdata.length > 0) { + return `Brukers kontantstøtteperioder (hentet ${formaterIsoDato( + registeropplysningerOpprettetTid + )})`; + } + return 'Bruker har eller har fått kontantstøtte'; +}; + +const kontantstøtteKilde = (kilde: string): string => { + return kilde.toLowerCase().includes('ks_sak') ? 'KS sak' : kilde.toLowerCase(); +}; + +export const KontantstøtteAlert: React.FC = ({ + harKontantstøttePerioder, + kontantstøttePerioderFraGrunnlagsdata, + registeropplysningerOpprettetTid, +}) => { + const [ekspandert, settEkspandert] = useState(false); + const harFlereKontantstøttePerioder = kontantstøttePerioderFraGrunnlagsdata.length > 1; return ( - <> - - {harKontantstøttePerioder - ? 'Bruker har eller har fått kontantstøtte.' - : 'Bruker har verken fått eller får kontantstøtte.'} - - + + {utledKontantstøtteperioderAlertTekst( + kontantstøttePerioderFraGrunnlagsdata, + registeropplysningerOpprettetTid, + harKontantstøttePerioder + )} + {kontantstøttePerioderFraGrunnlagsdata.length > 0 && ( + <> + +
  • + + {formaterIsoMånedÅr( + kontantstøttePerioderFraGrunnlagsdata[0].fomMåned + )}{' '} + -{' '} + {kontantstøttePerioderFraGrunnlagsdata[0].tomMåned + ? formaterIsoMånedÅr( + kontantstøttePerioderFraGrunnlagsdata[0].tomMåned + ) + : ''}{' '} + {'(kilde: ' + + kontantstøtteKilde( + kontantstøttePerioderFraGrunnlagsdata[0].kilde + ) + + ')'} + +
  • + {harFlereKontantstøttePerioder && + ekspandert && + kontantstøttePerioderFraGrunnlagsdata.slice(1).map((periode, index) => ( +
  • + + {formaterIsoMånedÅr(periode.fomMåned)} -{' '} + {periode.tomMåned + ? formaterIsoMånedÅr(periode.tomMåned) + : ''}{' '} + {'(kilde: ' + kontantstøtteKilde(periode.kilde) + ')'} + +
  • + ))} +
    + {harFlereKontantstøttePerioder && ( + : } + iconPosition="right" + onClick={() => settEkspandert((prev) => !prev)} + > + {ekspandert ? 'Skjul perioder' : 'Se flere perioder'} + + )} + + )} +
    ); }; diff --git "a/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/Kontantst\303\270tteValg.tsx" "b/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/Kontantst\303\270tteValg.tsx" index 6714bf3dd..9080cf0cc 100644 --- "a/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/Kontantst\303\270tteValg.tsx" +++ "b/src/frontend/Komponenter/Behandling/VedtakOgBeregning/Barnetilsyn/InnvilgeVedtak/Kontantst\303\270tteValg.tsx" @@ -23,6 +23,7 @@ import { useBehandling } from '../../../../../App/context/BehandlingContext'; import { AGray50 } from '@navikt/ds-tokens/dist/tokens'; import { KontantstøtteAlert } from './KontantstøtteAlert'; import JaNeiRadioGruppe from '../../Felles/JaNeiRadioGruppe'; +import { KontantstøttePeriode } from '../../../Inngangsvilkår/vilkår'; import { EnsligTextArea } from '../../../../../Felles/Input/TekstInput/EnsligTextArea'; const Container = styled.div` @@ -65,6 +66,8 @@ interface Props { valideringsfeil: FormErrors; harKontantstøttePerioder?: boolean; kontantstøtteBegrunnelse: FieldState; + kontantstøttePerioderFraGrunnlagsdata: KontantstøttePeriode[]; + registeropplysningerOpprettetTid: string; } export const tomKontantstøtteRad = (): IPeriodeMedBeløp => ({ @@ -82,6 +85,8 @@ const KontantstøtteValg: React.FC = ({ valideringsfeil, harKontantstøttePerioder, kontantstøtteBegrunnelse, + kontantstøttePerioderFraGrunnlagsdata, + registeropplysningerOpprettetTid, }) => { const { settIkkePersistertKomponent } = useApp(); const { åpenHøyremeny } = useBehandling(); @@ -130,7 +135,11 @@ const KontantstøtteValg: React.FC = ({ Kontantstøtte - + = ({ harKontantstøttePerioder={ vilkår.grunnlag.harKontantstøttePerioder } + kontantstøttePerioderFraGrunnlagsdata={ + vilkår.grunnlag.kontantstøttePerioder + } + registeropplysningerOpprettetTid={ + vilkår.grunnlag.registeropplysningerOpprettetTid + } /> ); case EBehandlingResultat.AVSLÅ: