Skip to content

Commit 8fe075c

Browse files
Fiks kvitteringer PSB, PILS (#2851)
* Slettet dupliserte kvitteringskomponent og utils for PILS * Implementerte en felles kvitteringskomponent som brukes av både PSB og PILS * Erstattet hardkodet tekst og intlHelper med FormattedMessage I komponenter hvor jobbet * Oppdaterte testHandler-mock for PILS * Justerte tester
1 parent f31b669 commit 8fe075c

29 files changed

+658
-821
lines changed

cypress/fixtures/pilsSoknad.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"soeknadId": "4e3a9001-f872-4288-829e-08f8e1001b28",
33
"soekerId": "29099000129",
4-
"journalposter": ["301"],
4+
"journalposter": ["200"],
55
"mottattDato": "2020-10-12",
66
"klokkeslett": "12:53",
77
"soeknadsperiode": null,
88
"pleietrengende": {
9-
"norskIdent": "31108324530",
9+
"norskIdent": "17519112922",
1010
"foedselsdato": null
1111
},
1212
"arbeidstid": null,
+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
{
2+
"søknadId": "4e3a9001-f872-4288-829e-08f8e1001b28",
3+
"versjon": "1.0.0",
4+
"mottattDato": "2025-01-17T11:05:00.000Z",
5+
"søker": {
6+
"norskIdentitetsnummer": "29099000129"
7+
},
8+
"språk": "nb",
9+
"ytelse": {
10+
"type": "PLEIEPENGER_LIVETS_SLUTTFASE",
11+
"pleietrengende": {
12+
"norskIdentitetsnummer": "17519112922",
13+
"fødselsdato": null
14+
},
15+
"søknadsperiode": [],
16+
"trekkKravPerioder": ["2024-12-03/2024-12-05"],
17+
"opptjeningAktivitet": {},
18+
"bosteder": {
19+
"perioder": {
20+
"2025-01-06/2025-01-08": {
21+
"land": "ASM"
22+
}
23+
},
24+
"perioderSomSkalSlettes": {}
25+
},
26+
"utenlandsopphold": {
27+
"perioder": {
28+
"2025-01-06/2025-01-07": {
29+
"land": "DZA",
30+
"årsak": null,
31+
"erSammenMedBarnet": true
32+
}
33+
},
34+
"perioderSomSkalSlettes": {}
35+
},
36+
"arbeidstid": {
37+
"arbeidstakerList": [
38+
{
39+
"norskIdentitetsnummer": null,
40+
"organisasjonsnummer": "972674818",
41+
"organisasjonsnavn": null,
42+
"arbeidstidInfo": {
43+
"perioder": {
44+
"2025-01-01/2025-01-01": {
45+
"jobberNormaltTimerPerDag": "PT5H",
46+
"faktiskArbeidTimerPerDag": "PT4H"
47+
},
48+
"2025-01-02/2025-01-02": {
49+
"jobberNormaltTimerPerDag": "PT4H",
50+
"faktiskArbeidTimerPerDag": "PT3H"
51+
},
52+
"2025-01-03/2025-01-03": {
53+
"jobberNormaltTimerPerDag": "PT3H",
54+
"faktiskArbeidTimerPerDag": "PT2H"
55+
}
56+
}
57+
}
58+
}
59+
],
60+
"frilanserArbeidstidInfo": null,
61+
"selvstendigNæringsdrivendeArbeidstidInfo": null
62+
},
63+
"uttak": {
64+
"perioder": {}
65+
},
66+
"lovbestemtFerie": {
67+
"perioder": {
68+
"2025-01-01/2025-01-03": {
69+
"skalHaFerie": true
70+
}
71+
}
72+
},
73+
"dataBruktTilUtledning": null
74+
},
75+
"journalposter": [
76+
{
77+
"inneholderInfomasjonSomIkkeKanPunsjes": null,
78+
"inneholderInformasjonSomIkkeKanPunsjes": false,
79+
"inneholderMedisinskeOpplysninger": true,
80+
"journalpostId": "453925903"
81+
},
82+
{
83+
"inneholderInfomasjonSomIkkeKanPunsjes": null,
84+
"inneholderInformasjonSomIkkeKanPunsjes": false,
85+
"inneholderMedisinskeOpplysninger": true,
86+
"journalpostId": "453924840"
87+
}
88+
],
89+
"begrunnelseForInnsending": {
90+
"tekst": "jbjjbjbbjbj"
91+
},
92+
"kildesystem": "punsj"
93+
}

cypress/fixtures/pleiepengerSoknadValidering.json

+28-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@
2424
},
2525
"infoFraPunsj": null,
2626
"bosteder": {
27-
"perioder": {},
27+
"perioder": {
28+
"2025-01-06/2025-01-08": {
29+
"land": "ASM"
30+
}
31+
},
2832
"perioderSomSkalSlettes": {}
2933
},
3034
"utenlandsopphold": {
@@ -46,7 +50,29 @@
4650
"perioder": {}
4751
},
4852
"arbeidstid": {
49-
"arbeidstakerList": [],
53+
"arbeidstakerList": [
54+
{
55+
"norskIdentitetsnummer": null,
56+
"organisasjonsnummer": "972674818",
57+
"organisasjonsnavn": null,
58+
"arbeidstidInfo": {
59+
"perioder": {
60+
"2025-01-01/2025-01-01": {
61+
"jobberNormaltTimerPerDag": "PT5H",
62+
"faktiskArbeidTimerPerDag": "PT4H"
63+
},
64+
"2025-01-02/2025-01-02": {
65+
"jobberNormaltTimerPerDag": "PT4H",
66+
"faktiskArbeidTimerPerDag": "PT3H"
67+
},
68+
"2025-01-03/2025-01-03": {
69+
"jobberNormaltTimerPerDag": "PT3H",
70+
"faktiskArbeidTimerPerDag": "PT2H"
71+
}
72+
}
73+
}
74+
}
75+
],
5076
"frilanserArbeidstidInfo": null,
5177
"selvstendigNæringsdrivendeArbeidstidInfo": null
5278
},

src/app/components/soknadKvittering/VisningAvPerioderSNSoknadKvittering.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import { v4 as uuidv4 } from 'uuid';
44
import intlHelper from 'app/utils/intlUtils';
55

66
import { Virksomhetstyper } from '../../models/enums/Virksomhetstyper';
7-
import { IPSBSoknadKvitteringSelvstendigNaeringsdrivendePeriode } from '../../models/types/PSBSoknadKvittering';
87
import { formatDato, landkodeTilNavn, periodToFormattedString, sjekkPropertyEksistererOgIkkeErNull } from '../../utils';
9-
import './visningAvPerioderSoknadKvittering.less';
8+
import { SelvstendigNaeringsdrivendeAktivitet } from 'app/models/types/KvitteringTyper';
109

10+
import './visningAvPerioderSoknadKvittering.less';
1111
interface IOwnProps {
1212
intl: any;
13-
perioder: IPSBSoknadKvitteringSelvstendigNaeringsdrivendePeriode[];
13+
perioder: SelvstendigNaeringsdrivendeAktivitet[];
1414
}
1515

1616
const formaterTypeVirksomhet = (virksomheter: string[]) =>

src/app/components/soknadKvittering/VisningAvPerioderSoknadKvittering.tsx

+25-24
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,58 @@
1-
import classNames from 'classnames';
21
import React from 'react';
3-
import { v4 as uuidv4 } from 'uuid';
42

5-
import intlHelper from 'app/utils/intlUtils';
3+
import classNames from 'classnames';
4+
import { FormattedMessage } from 'react-intl';
65

7-
import {
8-
IPSBSoknadKvitteringBeredskapNattevak,
9-
IPSBSoknadKvitteringBosteder,
10-
IPSBSoknadKvitteringLovbestemtFerie,
11-
IPSBSoknadKvitteringUtenlandsopphold,
12-
} from '../../models/types/PSBSoknadKvittering';
6+
import { IPSBSoknadKvitteringBeredskapNattevak } from '../../models/types/PSBSoknadKvittering';
137
import { periodToFormattedString } from '../../utils';
8+
import {
9+
ISoknadKvitteringBosteder,
10+
ISoknadKvitteringLovbestemtFerie,
11+
ISoknadKvitteringUtenlandsopphold,
12+
} from 'app/models/types/KvitteringTyper';
13+
1414
import './visningAvPerioderSoknadKvittering.less';
1515

16-
interface IOwnProps {
17-
intl: any;
16+
interface Props {
1817
perioder:
19-
| IPSBSoknadKvitteringUtenlandsopphold
20-
| IPSBSoknadKvitteringBosteder
18+
| ISoknadKvitteringUtenlandsopphold
19+
| ISoknadKvitteringBosteder
2120
| IPSBSoknadKvitteringBeredskapNattevak
22-
| IPSBSoknadKvitteringLovbestemtFerie;
21+
| ISoknadKvitteringLovbestemtFerie;
2322
tittel: string[];
2423
properties?: string[];
2524
lessClassForAdjustment?: string;
2625
}
2726

28-
const VisningAvPerioderSoknadKvittering: React.FunctionComponent<IOwnProps> = ({
29-
intl,
27+
const VisningAvPerioderSoknadKvittering: React.FC<Props> = ({
3028
tittel,
3129
properties,
3230
perioder,
3331
lessClassForAdjustment,
3432
}) => (
3533
<div>
3634
<div className={classNames('visningAvPerioderSoknadKvitteringContainer', !!lessClassForAdjustment)}>
37-
{tittel.map((t) => (
38-
<h4 key={uuidv4()}>{intlHelper(intl, t)}</h4>
35+
{tittel.map((t, index) => (
36+
<h4 key={index}>
37+
<FormattedMessage id={t} />
38+
</h4>
3939
))}
4040
</div>
41-
{Object.keys(perioder)
42-
.sort((a, b) => {
43-
const fomA = a.split('/')?.[0];
44-
const fomB = b.split('/')?.[0];
41+
42+
{Object.entries(perioder)
43+
.sort(([periodeA], [periodeB]) => {
44+
const fomA = periodeA.split('/')?.[0];
45+
const fomB = periodeB.split('/')?.[0];
4546
return new Date(fomA).getTime() - new Date(fomB).getTime();
4647
})
47-
.map((periode) => (
48+
.map(([periode, props]) => (
4849
<div
4950
key={periode}
5051
className={classNames('visningAvPerioderSoknadKvitteringContainer', !!lessClassForAdjustment)}
5152
>
5253
<p>{periodToFormattedString(periode)}</p>
5354

54-
{properties && properties.map((prop) => <p key={uuidv4()}>{perioder[periode]![prop]}</p>)}
55+
{properties && properties.map((prop) => <p key={prop}>{props[prop]}</p>)}
5556
</div>
5657
))}
5758
</div>

src/app/components/soknadKvittering/visningAvPerioderSoknadKvittering.less

+2-10
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@
66

77
h4,
88
p {
9-
width: 15rem;
9+
width: 12rem;
1010
margin-bottom: 0.5rem;
1111
margin-top: 0;
12-
}
13-
14-
p {
15-
padding-right: 1rem;
12+
box-sizing: border-box;
1613
}
1714
}
1815

@@ -29,8 +26,3 @@
2926
width: 30rem;
3027
}
3128
}
32-
33-
.widerLastCell p:last-of-type,
34-
h4:last-of-type {
35-
width: auto;
36-
}

src/app/i18n/nb.json

+3
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,9 @@
326326
"mappe.lesemodus.tilsyn": "Tilsyn:",
327327
"mappe.lesemodus.knapp.velg": "Fortsett",
328328
"mappe.lesemodus.knapp.lukk": "Lukk",
329+
"skjema.isAwaitingUpdateResponse": "Lagrer …",
330+
"skjema.updateSoknadSuccess": "Lagret",
331+
"skjema.updateSoknadError": "Lagring feilet",
329332
"skjema.ekspander": "Ekspander alle paneler",
330333
"skjema.soknadsperiode": "Søknadsperiode",
331334
"skjema.eksisterende": "Eksisterende søknadsperioder:",

src/app/models/types/KvitteringTyper.ts

+42
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,45 @@ export interface Fravaersperiode {
3636
søknadÅrsak: string;
3737
årsak: string;
3838
}
39+
40+
export interface ISoknadKvitteringBosteder {
41+
[key: string]: { land: string };
42+
}
43+
44+
export interface ISoknadKvitteringUtenlandsopphold {
45+
[key: string]: {
46+
land: string;
47+
årsak?: null | string;
48+
};
49+
}
50+
51+
export interface ISoknadKvitteringLovbestemtFerie {
52+
[key: string]: { skalHaFerie: string };
53+
}
54+
55+
export interface ISoknadKvitteringArbeidstidInfo {
56+
[key: string]: {
57+
jobberNormaltTimerPerDag: string;
58+
faktiskArbeidTimerPerDag: string;
59+
};
60+
}
61+
62+
export interface ISoknadKvitteringArbeidstid {
63+
arbeidstakerList: {
64+
norskIdentitetsnummer: null | string;
65+
organisasjonsnummer: null | string;
66+
arbeidstidInfo: { perioder: ISoknadKvitteringArbeidstidInfo };
67+
}[];
68+
frilanserArbeidstidInfo: null | {
69+
perioder: ISoknadKvitteringArbeidstidInfo;
70+
};
71+
selvstendigNæringsdrivendeArbeidstidInfo: null | {
72+
perioder: ISoknadKvitteringArbeidstidInfo;
73+
};
74+
}
75+
76+
export interface ISoknadKvitteringJournalpost {
77+
inneholderInformasjonSomIkkeKanPunsjes?: boolean;
78+
inneholderMedisinskeOpplysninger?: boolean;
79+
journalpostId: string;
80+
}

0 commit comments

Comments
 (0)