Skip to content

Commit f74888d

Browse files
authored
Ap 9292 overlappende saker (#6961)
* Legge til aksjonspunkt for overlappende saker i uttak * Legge til aksjonspunkt for overlappende saker i uttak * yarn install * Benytte feature toggle og sjekke at aksjonspunkt finnes * Endringer i dto * Skal ikke kunne redigere aksjonspunkt om det ikke kan løses * console.log * HTML nesting feil * Oppdater typescript client * Benytt saksbehandler og vurderttidspunkt * Legg til storybook med testing * Update yarn.lock * Gjør vurderOverlappendeSakComponent valgfri * endre import for useFeatureToggles * Ny måte å bruke feature toggle context på * Overtale typescript * Missing queryKey dep * Create VurderOverlappendeSak.module.d.css.ts * Samme versjoner av react-hook-form og ft-form-hooks som resten av repo * Fjerne ubrukt stil * shorthand-property-no-redundant-values
1 parent 21b0443 commit f74888d

26 files changed

+840
-83
lines changed

Diff for: _mocks/featureToggles.ts

+4
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,8 @@ export const featureTogglesFactory = () => [
9393
key: 'BRUK_INNTEKTSGRADERING_I_UTTAK',
9494
value: process.env.VITE_BRUK_INNTEKTSGRADERING_I_UTTAK,
9595
},
96+
{
97+
key: 'AKSJONSPUNKT_OVERLAPPENDE_SAKER',
98+
value: process.env.VITE_AKSJONSPUNKT_OVERLAPPENDE_SAKER,
99+
},
96100
];

Diff for: deploy/dev-fss-k9saksbehandling.yml

+2
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,5 @@ spec:
115115
value: "true"
116116
- name: BRUK_INNTEKTSGRADERING_I_UTTAK
117117
value: "true"
118+
- name: AKSJONSPUNKT_OVERLAPPENDE_SAKER
119+
value: "true"

Diff for: deploy/prod-fss-k9saksbehandling.yml

+40-38
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
apiVersion: "nais.io/v1alpha1"
2-
kind: "Application"
1+
apiVersion: 'nais.io/v1alpha1'
2+
kind: 'Application'
33
metadata:
44
name: k9-sak-web
55
namespace: k9saksbehandling
66
labels:
77
team: k9saksbehandling
88
annotations:
9-
nais.io/run-as-user: "101" # Fix permissions for nginx
10-
nais.io/read-only-file-system: "false" # Fix permissions for nginx
11-
nginx.ingress.kubernetes.io/proxy-buffer-size: "32k"
12-
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
13-
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
9+
nais.io/run-as-user: '101' # Fix permissions for nginx
10+
nais.io/read-only-file-system: 'false' # Fix permissions for nginx
11+
nginx.ingress.kubernetes.io/proxy-buffer-size: '32k'
12+
nginx.ingress.kubernetes.io/proxy-read-timeout: '600'
13+
nginx.ingress.kubernetes.io/proxy-send-timeout: '600'
1414
spec:
15-
image: {{ image }}
15+
image: { { image } }
1616
port: 9000
1717
liveness:
1818
path: /isAlive
@@ -36,72 +36,72 @@ spec:
3636
cpu: 200m
3737
memory: 32Mi
3838
ingresses:
39-
- "https://k9.intern.nav.no/"
39+
- 'https://k9.intern.nav.no/'
4040
env:
4141
- name: APP_NAME
4242
value: k9-sak-web
4343
- name: APP_URL
44-
value: "http://k9-sak"
44+
value: 'http://k9-sak'
4545
- name: APP_PORT
46-
value: "9000"
46+
value: '9000'
4747
- name: APP_URL_K9FORMIDLING
48-
value: "http://k9-formidling"
48+
value: 'http://k9-formidling'
4949
- name: APP_URL_K9FORMIDLING_DD
50-
value: "http://k9-formidling-dokumentdata.k9saksbehandling"
50+
value: 'http://k9-formidling-dokumentdata.k9saksbehandling'
5151
- name: APP_URL_K9OPPDRAG
52-
value: "http://k9-oppdrag.k9saksbehandling"
52+
value: 'http://k9-oppdrag.k9saksbehandling'
5353
- name: APP_URL_KLAGE
54-
value: "http://k9-klage.k9saksbehandling"
54+
value: 'http://k9-klage.k9saksbehandling'
5555
- name: APP_URL_K9TILBAKE
56-
value: "http://k9-tilbake.k9saksbehandling"
56+
value: 'http://k9-tilbake.k9saksbehandling'
5757
- name: APP_URL_K9FORDEL
58-
value: "http://k9-fordel.k9saksbehandling"
58+
value: 'http://k9-fordel.k9saksbehandling'
5959
- name: ENDRINGSLOGG_URL
60-
value: "https://familie-endringslogg.intern.nav.no/"
60+
value: 'https://familie-endringslogg.intern.nav.no/'
6161

6262
# Feature-flag
6363
- name: KLAGE_KABAL
64-
value: "true"
64+
value: 'true'
6565
- name: VARSELTEKST
66-
value: "true"
66+
value: 'true'
6767
- name: DOKUMENTDATA
68-
value: "false"
68+
value: 'false'
6969
- name: UNNTAKSBEHANDLING
70-
value: "false"
70+
value: 'false'
7171
- name: KLAGEBEHANDLING
72-
value: "true"
72+
value: 'true'
7373
- name: TILBAKE
74-
value: "true"
74+
value: 'true'
7575
- name: SOKNADPERIODESTRIPE
76-
value: "false"
76+
value: 'false'
7777
- name: TYPE_MEDISINSKE_OPPLYSNINGER_BREV
78-
value: "true"
78+
value: 'true'
7979
- name: LOS_MARKER_BEHANDLING
80-
value: "true"
80+
value: 'true'
8181
- name: LOS_MARKER_BEHANDLING_SUBMIT
82-
value: "false"
82+
value: 'false'
8383
- name: AKSJONSPUNKT_9015
84-
value: "true"
84+
value: 'true'
8585
- name: ALDERSVILKAR_KRONISK_SYK
86-
value: "true"
86+
value: 'true'
8787
- name: FRITEKST_REDIGERING
88-
value: "true"
88+
value: 'true'
8989
- name: INKLUDER_KALENDER_PILS
90-
value: "false"
90+
value: 'false'
9191
- name: SKJUL_AVSLUTTET_ARBEIDSGIVER
92-
value: "false"
92+
value: 'false'
9393
- name: OMS_PUNSJSTRIPE
94-
value: "true"
94+
value: 'true'
9595
- name: OMSORGEN_FOR_PERIODISERT
96-
value: "true"
96+
value: 'true'
9797
- name: OVERSTYR_BEREGNING
98-
value: "false"
98+
value: 'false'
9999
- name: BRUK_V2_MELDINGER
100-
value: "true"
100+
value: 'true'
101101
- name: NYE_NOKKELTALL
102102
value: "false"
103103
- name: UTVIDET_VARSELFELT
104-
value: "true"
104+
value: 'true'
105105
- name: SKILL_UT_PRIVATPERSON
106106
value: "true"
107107
- name: AUTOMATISK_VURDERT_MEDLEMSKAP
@@ -112,3 +112,5 @@ spec:
112112
value: "true"
113113
- name: BRUK_INNTEKTSGRADERING_I_UTTAK
114114
value: "true"
115+
- name: AKSJONSPUNKT_OVERLAPPENDE_SAKER
116+
value: 'false'

Diff for: envDir/.env.development

+1
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ VITE_AUTOMATISK_VURDERT_MEDLEMSKAP=true
2121
VITE_BRUK_V2_SAK_DOKUMENTER=true
2222
VITE_OPPTJENING_READ_ONLY_PERIODER=true
2323
VITE_BRUK_INNTEKTSGRADERING_I_UTTAK=true
24+
VITE_AKSJONSPUNKT_OVERLAPPENDE_SAKER=true

Diff for: feature-toggles.json

+4
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,9 @@
9898
{
9999
"key": "BRUK_INNTEKTSGRADERING_I_UTTAK",
100100
"value": "${BRUK_INNTEKTSGRADERING_I_UTTAK}"
101+
},
102+
{
103+
"key": "AKSJONSPUNKT_OVERLAPPENDE_SAKER",
104+
"value": "${AKSJONSPUNKT_OVERLAPPENDE_SAKER}"
101105
}
102106
]

Diff for: package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
"css:modules:typegen:watch": "tcm ./packages/v2/gui --camelCase dashes --allowArbitraryExtensions --watch",
2626
"css:modules:typegen:check": "tcm ./packages/v2/gui --camelCase dashes --allowArbitraryExtensions --listDifferent",
2727
"dev": "yarn cross-env APP_URL_K9FORMIDLING=http://localhost:8060/rest/dummy vite serve",
28-
"dev-lokal": "cross-env NODE_ENV=development APP_URL_SAK=http://k9-sak:8080 APP_URL_K9OPPDRAG=http://k9-oppdrag:8070 APP_URL_K9FORMIDLING_DD=http://k9-formidling-dokumentdata:8294 APP_URL_K9FORMIDLING=http://localhost:8290 SPLITTET_SAMMENLINGNING_BEREGNING=true vite serve",
29-
"dev-med-formidling": "yarn cross-env APP_URL_K9FORMIDLING=http://k9-formidling:8290 SPLITTET_SAMMENLINGNING_BEREGNING=true vite serve",
28+
"dev-lokal": "cross-env NODE_ENV=development APP_URL_SAK=http://k9-sak:8080 APP_URL_K9OPPDRAG=http://k9-oppdrag:8070 APP_URL_K9FORMIDLING_DD=http://k9-formidling-dokumentdata:8294 APP_URL_K9FORMIDLING=http://localhost:8290 SPLITTET_SAMMENLINGNING_BEREGNING=true AKSJONSPUNKT_OVERLAPPENDE_SAKER=true vite serve",
29+
"dev-med-formidling": "yarn cross-env APP_URL_K9FORMIDLING=http://k9-formidling:8290 SPLITTET_SAMMENLINGNING_BEREGNING=true AKSJONSPUNKT_OVERLAPPENDE_SAKER=true vite serve",
3030
"build": "VITE_SENTRY_RELEASE=$(git rev-parse --short HEAD) vite build",
3131
"up": "docker-compose up -d --remove-orphans --build",
3232
"down": "docker-compose down",

Diff for: packages/behandling-pleiepenger/src/components/Uttak.tsx

+31
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1+
import { useContext } from 'react';
12
import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes';
23
import aksjonspunktStatus from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus';
34
import { findEndpointsFromRels, httpErrorHandler } from '@fpsak-frontend/utils';
45
import { VilkarResultPicker } from '@k9-sak-web/prosess-felles';
56
import { Inntektsgradering, Uttak } from '@k9-sak-web/prosess-uttak';
67
import { useRestApiErrorDispatcher } from '@k9-sak-web/rest-api-hooks';
78
import { Aksjonspunkt, AlleKodeverk, ArbeidsgiverOpplysningerPerId, Behandling } from '@k9-sak-web/types';
9+
import VurderOverlappendeSakIndex from '@k9-sak-web/gui/prosess/uttak/vurder-overlappende-sak/VurderOverlappendeSakIndex.js';
810
import { OverstyringUttakRequest } from '../types';
11+
import { konverterKodeverkTilKode } from '@k9-sak-web/lib/kodeverk/konverterKodeverkTilKode.js';
12+
import { VStack } from '@navikt/ds-react';
13+
import FeatureTogglesContext from '@k9-sak-web/gui/utils/featureToggles/FeatureTogglesContext.js';
914

1015
interface UttakProps {
1116
uuid: string;
@@ -42,6 +47,7 @@ export default ({
4247
erOverstyrer,
4348
readOnly,
4449
}: UttakProps) => {
50+
const featureToggles = useContext(FeatureTogglesContext);
4551
const { versjon, links, status: behandlingStatus } = behandling;
4652
const { addErrorMessage } = useRestApiErrorDispatcher();
4753
const httpErrorHandlerCaller = (status: number, locationHeader?: string) =>
@@ -65,6 +71,30 @@ export default ({
6571
});
6672
};
6773

74+
const VurderOverlappendeSakComponent = () => {
75+
const aksjonspunkt = aksjonspunkter.find(
76+
aksjonspunkt => aksjonspunktCodes.VURDER_OVERLAPPENDE_SØSKENSAK_KODE === aksjonspunkt.definisjon.kode,
77+
);
78+
79+
if (featureToggles.AKSJONSPUNKT_OVERLAPPENDE_SAKER && aksjonspunkt) {
80+
const deepCopyProps = JSON.parse(
81+
JSON.stringify({
82+
behandling: behandling,
83+
aksjonspunkt: aksjonspunkt,
84+
}),
85+
);
86+
konverterKodeverkTilKode(deepCopyProps, false);
87+
88+
return (
89+
<VStack>
90+
<VurderOverlappendeSakIndex behandling={deepCopyProps.behandling} aksjonspunkt={deepCopyProps.aksjonspunkt} />
91+
</VStack>
92+
);
93+
}
94+
95+
return <></>;
96+
};
97+
6898
return (
6999
<Uttak
70100
containerData={{
@@ -90,6 +120,7 @@ export default ({
90120
erOverstyrer,
91121
status: behandlingStatus.kode,
92122
readOnly,
123+
vurderOverlappendeSakComponent: VurderOverlappendeSakComponent(),
93124
}}
94125
/>
95126
);

Diff for: packages/behandling-pleiepenger/src/panelDefinisjoner/prosessStegPaneler/UttakProsessStegPanelDef.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class PanelDef extends ProsessStegPanelDef {
4545
aksjonspunktCodes.VENT_ANNEN_PSB_SAK,
4646
aksjonspunktCodes.VURDER_DATO_NY_REGEL_UTTAK,
4747
aksjonspunktCodes.OVERSTYRING_AV_UTTAK_KODE,
48+
aksjonspunktCodes.VURDER_OVERLAPPENDE_SØSKENSAK_KODE,
4849
];
4950

5051
getOverstyrVisningAvKomponent = () => true;

Diff for: packages/kodeverk/src/aksjonspunktCodes.ts

+1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const aksjonspunktCodes = {
9797
VURDER_GJENNOMGÅTT_OPPLÆRING: '9302',
9898
VURDER_REISETID: '9303',
9999
VURDER_DATO_NY_REGEL_UTTAK: '9291',
100+
VURDER_OVERLAPPENDE_SØSKENSAK_KODE: '9292',
100101
};
101102

102103
const klageAksjonspunkter = [
+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export const aksjonspunktkodeVentAnnenPSBSakKode = '9290';
22
export const aksjonspunktVurderDatoKode = '9291';
3+
export const aksjonspunktVurderOverlappendeYtelsekode = '9292';

Diff for: packages/prosess-uttak/src/types/ContainerContract.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import ArbeidsgiverOpplysninger from './ArbeidsgiverOpplysninger';
44
import KodeverkMedNavn from './kodeverkMedNavnTsType';
55
import Uttaksperioder from './Uttaksperioder';
66
import { Inntektsgradering } from '.';
7+
import { ReactNode } from 'react';
78

89
interface ContainerContract {
910
httpErrorHandler?: (status: number, locationHeader?: string) => void;
@@ -34,6 +35,7 @@ interface ContainerContract {
3435
erOverstyrer?: boolean;
3536
status?: string | false;
3637
readOnly: boolean;
38+
vurderOverlappendeSakComponent?: ReactNode;
3739
}
3840

3941
export default ContainerContract;

Diff for: packages/prosess-uttak/src/ui/UttakContainer.tsx

+41-35
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { HStack, Heading } from '@navikt/ds-react';
1+
import { HStack, Heading, VStack } from '@navikt/ds-react';
22
import { OverstyringKnapp } from '@navikt/ft-ui-komponenter';
33
import React from 'react';
44
import { aksjonspunktVurderDatoKode, aksjonspunktkodeVentAnnenPSBSakKode } from '../constants/Aksjonspunkter';
@@ -27,6 +27,7 @@ const UttakContainer = ({ containerData }: MainComponentProps): JSX.Element => {
2727
virkningsdatoUttakNyeRegler,
2828
erOverstyrer,
2929
readOnly,
30+
vurderOverlappendeSakComponent,
3031
} = containerData;
3132
const [redigerVirkningsdato, setRedigervirkningsdato] = React.useState<boolean>(false);
3233
const aksjonspunktVurderDato = aksjonspunkter?.find(ap => ap.definisjon.kode === aksjonspunktVurderDatoKode);
@@ -44,43 +45,48 @@ const UttakContainer = ({ containerData }: MainComponentProps): JSX.Element => {
4445

4546
return (
4647
<ContainerContext.Provider value={containerData}>
47-
<HStack justify="start" className={styles.overstyringsHeader}>
48-
<Heading size="small" level="1">
49-
Uttak
50-
</Heading>
51-
{erOverstyrer && <OverstyringKnapp erOverstyrt={overstyringAktiv} onClick={toggleOverstyring} />}
52-
</HStack>
48+
<VStack gap="4">
49+
<HStack justify="start" className={styles.overstyringsHeader}>
50+
<Heading size="small" level="1">
51+
Uttak
52+
</Heading>
53+
{erOverstyrer && <OverstyringKnapp erOverstyrt={overstyringAktiv} onClick={toggleOverstyring} />}
54+
</HStack>
55+
<Infostripe harVentAnnenPSBSakAksjonspunkt={harVentAnnenPSBSakAksjonspunkt} />
5356

54-
<Infostripe harVentAnnenPSBSakAksjonspunkt={harVentAnnenPSBSakAksjonspunkt} />
57+
{vurderOverlappendeSakComponent && (
58+
<div className={styles.overlappendeSakContainer}>{vurderOverlappendeSakComponent}</div>
59+
)}
5560

56-
<OverstyrUttakContextProvider>
57-
<OverstyrUttakForm overstyringAktiv={overstyringAktiv} />
58-
</OverstyrUttakContextProvider>
61+
<OverstyrUttakContextProvider>
62+
<OverstyrUttakForm overstyringAktiv={overstyringAktiv} />
63+
</OverstyrUttakContextProvider>
5964

60-
<UtsattePerioderStripe />
61-
{/* Allerede løst og har klikket rediger, eller har uløst aksjonspunkt */}
62-
{((virkningsdatoUttakNyeRegler && redigerVirkningsdato) ||
63-
harAksjonspunktVurderDatoMedStatusOpprettet ||
64-
(readOnly && aksjonspunktVurderDato)) && (
65-
<VurderDato
66-
avbryt={
67-
virkningsdatoUttakNyeRegler && redigerVirkningsdato ? () => setRedigervirkningsdato(false) : undefined
68-
}
69-
initialValues={{
70-
begrunnelse: aksjonspunktVurderDato?.begrunnelse,
71-
virkningsdato: virkningsdatoUttakNyeRegler,
72-
}}
73-
readOnly={readOnly}
74-
/>
75-
)}
76-
{!harVentAnnenPSBSakAksjonspunkt && (
77-
<UttaksperiodeListe
78-
uttaksperioder={lagUttaksperiodeliste(uttaksperioder, inntektsgraderinger)}
79-
redigerVirkningsdatoFunc={() => setRedigervirkningsdato(true)}
80-
redigerVirkningsdato={redigerVirkningsdato}
81-
readOnly={readOnly}
82-
/>
83-
)}
65+
<UtsattePerioderStripe />
66+
{/* Allerede løst og har klikket rediger, eller har uløst aksjonspunkt */}
67+
{((virkningsdatoUttakNyeRegler && redigerVirkningsdato) ||
68+
harAksjonspunktVurderDatoMedStatusOpprettet ||
69+
(readOnly && aksjonspunktVurderDato)) && (
70+
<VurderDato
71+
avbryt={
72+
virkningsdatoUttakNyeRegler && redigerVirkningsdato ? () => setRedigervirkningsdato(false) : undefined
73+
}
74+
initialValues={{
75+
begrunnelse: aksjonspunktVurderDato?.begrunnelse,
76+
virkningsdato: virkningsdatoUttakNyeRegler,
77+
}}
78+
readOnly={readOnly}
79+
/>
80+
)}
81+
{!harVentAnnenPSBSakAksjonspunkt && (
82+
<UttaksperiodeListe
83+
uttaksperioder={lagUttaksperiodeliste(uttaksperioder, inntektsgraderinger)}
84+
redigerVirkningsdatoFunc={() => setRedigervirkningsdato(true)}
85+
redigerVirkningsdato={redigerVirkningsdato}
86+
readOnly={readOnly}
87+
/>
88+
)}
89+
</VStack>
8490
</ContainerContext.Provider>
8591
);
8692
};

Diff for: packages/prosess-uttak/src/ui/components/uttak/Uttak.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const Uttak = ({ uttak, erValgt, velgPeriode, withBorderTop = false }: UttakProp
5959
{periode.getFirstAndLastWeek()}
6060
</Table.DataCell>
6161
<Table.DataCell className={`${withBorderTop ? styles.borderTop : ''}`}>
62-
<BodyShort>
62+
<BodyShort as="div">
6363
{periode.prettifyPeriod()}
6464
{manueltOverstyrt && (
6565
<>
+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
.overstyringsHeader > button {
22
cursor: pointer;
33
}
4+
5+
.overlappendeSakContainer {
6+
max-width: var(--a-breakpoint-md);
7+
}

Diff for: packages/v2/backend/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
},
1717
"dependencies": {
1818
"@navikt/k9-klage-typescript-client": "1.0.20241206133624",
19-
"@navikt/k9-sak-typescript-client": "1.0.20241203201014"
19+
"@navikt/k9-sak-typescript-client": "1.0.20250102132051"
2020
},
2121
"devDependencies": {
2222
"@tanstack/eslint-plugin-query": "^5.62.1"

0 commit comments

Comments
 (0)