diff --git a/apps/endringsmelding-pleiepenger/e2e/playwright/tests/ikke-tilgang/ikke-tilgang-melding.spec.ts b/apps/endringsmelding-pleiepenger/e2e/playwright/tests/ikke-tilgang/ikke-tilgang-melding.spec.ts
index 0fa1f0c999..73dd801c87 100644
--- a/apps/endringsmelding-pleiepenger/e2e/playwright/tests/ikke-tilgang/ikke-tilgang-melding.spec.ts
+++ b/apps/endringsmelding-pleiepenger/e2e/playwright/tests/ikke-tilgang/ikke-tilgang-melding.spec.ts
@@ -34,3 +34,14 @@ test('Er selvstendig næringsdrivende', async ({ page }) => {
await expect(page.getByText('Hei Nora')).toBeVisible();
await expect(page.getByTestId('erSN')).toBeVisible();
});
+
+test('Har en arbeidsgiver med to ansettelsesforhold som slutter og starter samme uke med opphold', async ({ page }) => {
+ await routeUtils.resumeFromRoute(
+ page,
+ SøknadRoutes.VELKOMMEN,
+ 'en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold',
+ );
+ await expect(page).toHaveTitle('Ingen tilgang - Endringsmelding for pleiepenger sykt barn');
+ await expect(page.getByText('Hei Nora')).toBeVisible();
+ await expect(page.getByTestId('enArbeidsgiverToAnsettelserSammeUkeMedOpphold')).toBeVisible();
+});
diff --git a/apps/endringsmelding-pleiepenger/e2e/playwright/tests/utfylling/ny-arbeidsgiver.spec.ts b/apps/endringsmelding-pleiepenger/e2e/playwright/tests/utfylling/ny-arbeidsgiver.spec.ts
index 616dbe610f..2f677d5fcd 100644
--- a/apps/endringsmelding-pleiepenger/e2e/playwright/tests/utfylling/ny-arbeidsgiver.spec.ts
+++ b/apps/endringsmelding-pleiepenger/e2e/playwright/tests/utfylling/ny-arbeidsgiver.spec.ts
@@ -40,7 +40,8 @@ test('test', async ({ page }) => {
await page.getByTestId('timer-verdi').click();
await page.getByTestId('timer-verdi').fill('5');
await page.getByRole('button', { name: 'Ok' }).click();
- await page.getByLabel('Endre uke 5 (01.02.2023 - 05.').click();
+ await page.getByLabel('Endre uke 6 (06.02').first().click();
+ await page.getByTestId('toggle-timer').click();
await page.getByTestId('timer-verdi').click();
await page.getByTestId('timer-verdi').fill('5');
await page.getByRole('button', { name: 'Ok' }).click();
diff --git a/apps/endringsmelding-pleiepenger/package.json b/apps/endringsmelding-pleiepenger/package.json
index d9d394c088..e6f29b7957 100644
--- a/apps/endringsmelding-pleiepenger/package.json
+++ b/apps/endringsmelding-pleiepenger/package.json
@@ -5,7 +5,7 @@
"license": "MIT",
"name": "@navikt/endringsmelding-pleiepenger",
"repository": "https://github.com/navikt/sif-brukerdialog",
- "version": "2.37.1",
+ "version": "2.4.0",
"private": true,
"dependencies": {
"@navikt/ds-css": "7.10.0",
diff --git a/apps/endringsmelding-pleiepenger/src/app/api/__tests__/fetchInitialData.test.ts b/apps/endringsmelding-pleiepenger/src/app/api/__tests__/fetchInitialData.test.ts
index 95474f10c9..c01d3c8f47 100644
--- a/apps/endringsmelding-pleiepenger/src/app/api/__tests__/fetchInitialData.test.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/api/__tests__/fetchInitialData.test.ts
@@ -1,25 +1,82 @@
-import { ISODateRangeToDateRange, dateToISODate } from '@navikt/sif-common-utils';
-import { getPeriodeForArbeidsgiverOppslag } from '../../utils/initialDataUtils';
+import { dateToISODate, ISODateRangeToDateRange, ISODateToDate } from '@navikt/sif-common-utils';
+import { ArbeidsgiverMedAnsettelseperioder } from '../../types';
+import {
+ getArbeidsgivereFromArbeidsgiverOrganisasjoner,
+ getPeriodeForArbeidsgiverOppslag,
+} from '../../utils/initialDataUtils';
+import { AARegArbeidsgiverOrganisasjon } from '../endpoints/arbeidsgivereEndpoint';
-describe('getPeriodeForArbeidsgiverOppslag', () => {
- const endringsperiode = ISODateRangeToDateRange('2022-05-01/2022-10-01');
+describe('initialDataUtils', () => {
+ describe('getPeriodeForArbeidsgiverOppslag', () => {
+ const endringsperiode = ISODateRangeToDateRange('2022-05-01/2022-10-01');
- it('returnerer minste dateRange ut fra maks endringsperiode og samletSøknadsperiode', () => {
- const samletSøknadsperiode = ISODateRangeToDateRange('2022-06-01/2022-09-01');
- const result = getPeriodeForArbeidsgiverOppslag(samletSøknadsperiode, endringsperiode);
- expect(result).toBeDefined();
- if (result) {
- expect(dateToISODate(result.from)).toEqual('2022-06-01');
- expect(dateToISODate(result.to)).toEqual('2022-09-01');
- }
+ it('returnerer minste dateRange ut fra maks endringsperiode og samletSøknadsperiode', () => {
+ const samletSøknadsperiode = ISODateRangeToDateRange('2022-06-01/2022-09-01');
+ const result = getPeriodeForArbeidsgiverOppslag(samletSøknadsperiode, endringsperiode);
+ expect(result).toBeDefined();
+ if (result) {
+ expect(dateToISODate(result.from)).toEqual('2022-06-01');
+ expect(dateToISODate(result.to)).toEqual('2022-09-01');
+ }
+ });
+ it('returnerer endringsperiode hvis samletSøknadsperiode går utover endringsperiode', () => {
+ const samletSøknadsperiode = ISODateRangeToDateRange('2021-01-01/2023-01-01');
+ const result = getPeriodeForArbeidsgiverOppslag(samletSøknadsperiode, endringsperiode);
+ expect(result).toBeDefined();
+ if (result) {
+ expect(dateToISODate(result.from)).toEqual('2022-05-01');
+ expect(dateToISODate(result.to)).toEqual('2022-10-01');
+ }
+ });
});
- it('returnerer endringsperiode hvis samletSøknadsperiode går utover endringsperiode', () => {
- const samletSøknadsperiode = ISODateRangeToDateRange('2021-01-01/2023-01-01');
- const result = getPeriodeForArbeidsgiverOppslag(samletSøknadsperiode, endringsperiode);
- expect(result).toBeDefined();
- if (result) {
- expect(dateToISODate(result.from)).toEqual('2022-05-01');
- expect(dateToISODate(result.to)).toEqual('2022-10-01');
- }
+
+ describe('getArbeidsgivereFromArbeidsgiverOrganisasjoner', () => {
+ it('oppretter ansettelsesperiode riktig når bruker har ett ansettelsesforhold hos én arbeidsgiver', () => {
+ const organisasjoner: AARegArbeidsgiverOrganisasjon[] = [
+ {
+ navn: 'a',
+ organisasjonsnummer: '123',
+ ansattFom: '2022-01-01',
+ ansattTom: '2022-02-01',
+ },
+ ];
+
+ const expectedResult: ArbeidsgiverMedAnsettelseperioder[] = [
+ {
+ key: 'a_123',
+ navn: 'a',
+ organisasjonsnummer: '123',
+ ansettelsesperioder: [{ from: ISODateToDate('2022-01-01'), to: ISODateToDate('2022-02-01') }],
+ },
+ ];
+ expect(getArbeidsgivereFromArbeidsgiverOrganisasjoner(organisasjoner)).toEqual(expectedResult);
+ });
+ it('oppretter ansettelsesperioder riktig når bruker har to ansettelsesforhold hos samme arbeidsgiver', () => {
+ const organisasjoner: AARegArbeidsgiverOrganisasjon[] = [
+ {
+ navn: 'a',
+ organisasjonsnummer: '123',
+ ansattFom: '2022-01-01',
+ ansattTom: '2022-02-01',
+ },
+ {
+ navn: 'a',
+ organisasjonsnummer: '123',
+ ansattFom: '2022-02-15',
+ },
+ ];
+ const expectedResult: ArbeidsgiverMedAnsettelseperioder[] = [
+ {
+ key: 'a_123',
+ navn: 'a',
+ organisasjonsnummer: '123',
+ ansettelsesperioder: [
+ { from: ISODateToDate('2022-01-01'), to: ISODateToDate('2022-02-01') },
+ { from: ISODateToDate('2022-02-15') },
+ ],
+ },
+ ];
+ expect(getArbeidsgivereFromArbeidsgiverOrganisasjoner(organisasjoner)).toEqual(expectedResult);
+ });
});
});
diff --git a/apps/endringsmelding-pleiepenger/src/app/api/endpoints/arbeidsgivereEndpoint.ts b/apps/endringsmelding-pleiepenger/src/app/api/endpoints/arbeidsgivereEndpoint.ts
index 2833c6dc48..2b3cb39dbb 100644
--- a/apps/endringsmelding-pleiepenger/src/app/api/endpoints/arbeidsgivereEndpoint.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/api/endpoints/arbeidsgivereEndpoint.ts
@@ -1,37 +1,29 @@
-import { DateRange, dateToISODate, ISODate, ISODateToDate } from '@navikt/sif-common-utils';
-import { Arbeidsgiver } from '@types';
+import { DateRange, dateToISODate, ISODate } from '@navikt/sif-common-utils';
+import { ArbeidsgiverMedAnsettelseperioder } from '@types';
+import { getArbeidsgivereFromArbeidsgiverOrganisasjoner } from '../../utils/initialDataUtils';
import api from '../api';
import { ApiEndpointPsb } from './';
-import { getArbeidsgiverKey } from '../../utils/arbeidsgiverUtils';
-type AAregArbeidsgiver = {
- organisasjoner?: Array<{
- organisasjonsnummer: string;
- navn: string;
- ansattFom?: ISODate;
- ansattTom?: ISODate;
- }>;
+export type AAregArbeidsgiver = {
+ organisasjoner?: AARegArbeidsgiverOrganisasjon[];
+};
+
+export type AARegArbeidsgiverOrganisasjon = {
+ organisasjonsnummer: string;
+ navn: string;
+ ansattFom?: ISODate;
+ ansattTom?: ISODate;
};
export const arbeidsgivereEndpoint = {
- fetch: async (periode: DateRange): Promise => {
+ fetch: async (periode: DateRange): Promise => {
try {
const { from, to } = periode;
const { data } = await api.psb.get(
ApiEndpointPsb.arbeidsgiver,
- `ytelse=endringsmelding-pleiepenger&fra_og_med=${dateToISODate(from)}&til_og_med=${dateToISODate(to)}`,
+ `ytelse=endringsmelding-pleiepenger&fra_og_med=${dateToISODate(from)}&til_og_med=${dateToISODate(to)}&inkluderAlleAnsettelsesperioder=true`,
);
- const aaArbeidsgivere: Arbeidsgiver[] = [];
- (data.organisasjoner || []).forEach((a) => {
- aaArbeidsgivere.push({
- key: getArbeidsgiverKey(a.organisasjonsnummer),
- organisasjonsnummer: a.organisasjonsnummer,
- navn: a.navn,
- ansattFom: a.ansattFom ? ISODateToDate(a.ansattFom) : undefined,
- ansattTom: a.ansattTom ? ISODateToDate(a.ansattTom) : undefined,
- });
- });
- return Promise.resolve(aaArbeidsgivere);
+ return Promise.resolve(getArbeidsgivereFromArbeidsgiverOrganisasjoner(data.organisasjoner || []));
} catch (error) {
return Promise.reject(error);
}
diff --git a/apps/endringsmelding-pleiepenger/src/app/api/fetchInitialData.ts b/apps/endringsmelding-pleiepenger/src/app/api/fetchInitialData.ts
index cdbf370e65..acdb60e1e5 100644
--- a/apps/endringsmelding-pleiepenger/src/app/api/fetchInitialData.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/api/fetchInitialData.ts
@@ -2,7 +2,7 @@ import { isForbidden, isUnauthorized } from '@navikt/sif-common-core-ds/src/util
import { getMaybeEnv } from '@navikt/sif-common-env';
import { DateRange, dateRangeUtils } from '@navikt/sif-common-utils';
import {
- Arbeidsgiver,
+ ArbeidsgiverMedAnsettelseperioder,
IngenTilgangÅrsak,
isK9Sak,
isUgyldigK9SakFormat,
@@ -32,7 +32,7 @@ export const fetchInitialData = async (
søker: Søker;
k9saker: K9Sak[];
antallSakerFørEndringsperiode: number;
- arbeidsgivere: Arbeidsgiver[];
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[];
lagretSøknadState?: SøknadStatePersistence;
}> => {
const [søker, k9sakerResult] = await Promise.all([søkerEndpoint.fetch(), sakerEndpoint.fetch()]);
@@ -53,7 +53,7 @@ export const fetchInitialData = async (
try {
let k9saker: K9Sak[];
- let arbeidsgivere: Arbeidsgiver[];
+ let arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[];
const sakerInnenforEndringsperiode = k9sakerResult.k9Saker;
const sakerFørEndringsperiode = k9sakerResult.eldreSaker;
@@ -76,7 +76,7 @@ export const fetchInitialData = async (
})
.then((result) => {
arbeidsgivere = result;
- return kontrollerTilgang(k9saker, tillattEndringsperiode);
+ return kontrollerTilgang(k9saker, tillattEndringsperiode, arbeidsgivere);
})
.then(() => hentOgKontrollerLagretSøknadState(søker, k9saker))
.then((lagretSøknadState) => {
@@ -152,8 +152,13 @@ const kontrollerSaker = (
return Promise.resolve({ k9saker, dateRangeAlleSaker });
};
-const kontrollerTilgang = async (k9saker: K9Sak[], tillattEndringsperiode: DateRange): Promise => {
- const resultat = tilgangskontroll(k9saker, tillattEndringsperiode);
+const kontrollerTilgang = async (
+ k9saker: K9Sak[],
+ tillattEndringsperiode: DateRange,
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
+): Promise => {
+ const resultat = tilgangskontroll(k9saker, tillattEndringsperiode, arbeidsgivere);
+
if (resultat.kanBrukeSøknad) {
return Promise.resolve(true);
}
diff --git a/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/AnsettelsesperioderInfo.tsx b/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/AnsettelsesperioderInfo.tsx
new file mode 100644
index 0000000000..2b93bb2288
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/AnsettelsesperioderInfo.tsx
@@ -0,0 +1,65 @@
+import { dateFormatter, MaybeDateRange, sortMaybeDateRange } from '@navikt/sif-common-utils';
+import { AppText, useAppIntl } from '../../i18n';
+import { Box, List } from '@navikt/ds-react';
+import ExpandableInfo from '@navikt/sif-common-core-ds/src/components/expandable-info/ExpandableInfo';
+
+interface Props {
+ ansettelsesperioder: MaybeDateRange[];
+}
+
+const Ansettelsesperiode = ({ periode }: { periode: MaybeDateRange }) => {
+ if (periode.from === undefined && periode.to === undefined) {
+ return null;
+ }
+ if (periode.from && periode.to) {
+ return (
+
+ );
+ }
+ if (periode.from) {
+ return (
+
+ );
+ }
+ if (periode.to) {
+ return (
+
+ );
+ }
+ return null;
+};
+
+const AnsettelsesperioderInfo = ({ ansettelsesperioder }: Props) => {
+ const { text } = useAppIntl();
+ return ansettelsesperioder.length === 1 ? (
+
+ ) : (
+
+
+
+ {ansettelsesperioder
+ .sort(sortMaybeDateRange)
+ .reverse()
+ .map((periode, index) => {
+ return (
+
+
+
+ );
+ })}
+
+
+
+ );
+};
+
+export default AnsettelsesperioderInfo;
diff --git a/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/ArbeidsaktivitetBlock.tsx b/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/ArbeidsaktivitetBlock.tsx
index bd7888cc93..b9ad6fd155 100644
--- a/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/ArbeidsaktivitetBlock.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/ArbeidsaktivitetBlock.tsx
@@ -1,12 +1,12 @@
import { ExpansionCard, Panel } from '@navikt/ds-react';
import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block';
-import { ArbeidsaktivitetType, Arbeidsgiver } from '@types';
+import { ArbeidsaktivitetType, ArbeidsgiverMedAnsettelseperioder } from '@types';
import ArbeidsaktivitetBlockHeader from './ArbeidsaktivitetBlockHeader';
interface Props {
navn: string;
type: ArbeidsaktivitetType;
- arbeidsgiver?: Arbeidsgiver;
+ arbeidsgiver?: ArbeidsgiverMedAnsettelseperioder;
endret?: { tekst: string };
erUkjent?: boolean;
renderAsExpansionCard?: boolean;
diff --git a/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/ArbeidsaktivitetBlockHeader.tsx b/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/ArbeidsaktivitetBlockHeader.tsx
index f1acdf6ead..68e481ecf8 100644
--- a/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/ArbeidsaktivitetBlockHeader.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/components/arbeidsaktivitet-block/ArbeidsaktivitetBlockHeader.tsx
@@ -1,17 +1,17 @@
-import { BodyLong, Heading } from '@navikt/ds-react';
+import { BodyLong, Box, Heading } from '@navikt/ds-react';
import React from 'react';
import { Office1 } from '@navikt/ds-icons';
import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block';
-import { dateFormatter } from '@navikt/sif-common-utils';
-import { ArbeidsaktivitetType, Arbeidsgiver } from '@types';
+import { ArbeidsaktivitetType, ArbeidsgiverMedAnsettelseperioder } from '@types';
import { AppText } from '../../i18n';
import EndretTag from '../tags/EndretTag';
import NyTag from '../tags/NyTag';
import './arbeidsaktivitetBlockHeader.scss';
+import AnsettelsesperioderInfo from './AnsettelsesperioderInfo';
interface Props {
navn: string;
- arbeidsgiver?: Arbeidsgiver;
+ arbeidsgiver?: ArbeidsgiverMedAnsettelseperioder;
type: ArbeidsaktivitetType;
erUkjentAktivitet?: boolean;
endret?: {
@@ -38,24 +38,13 @@ const ArbeidsaktivitetBlockHeader: React.FunctionComponent = ({
{type === ArbeidsaktivitetType.arbeidstaker && arbeidsgiver !== undefined ? (
-
+
-
- {arbeidsgiver.ansattFom && (
-
- )}
- {arbeidsgiver.ansattTom && (
-
- )}
+
+
) : undefined}
{(endret || erUkjentAktivitet) && (
diff --git a/apps/endringsmelding-pleiepenger/src/app/components/tags/KortUkeTag.tsx b/apps/endringsmelding-pleiepenger/src/app/components/tags/KortUkeTag.tsx
index 5da7782372..d41e34b2fc 100644
--- a/apps/endringsmelding-pleiepenger/src/app/components/tags/KortUkeTag.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/components/tags/KortUkeTag.tsx
@@ -1,18 +1,27 @@
-import { Tag, TagProps } from '@navikt/ds-react';
+import { Tag, TagProps, Tooltip } from '@navikt/ds-react';
import React from 'react';
import { useAppIntl } from '../../i18n';
interface Props extends Omit {
children?: React.ReactNode;
+ tooltip?: string;
}
-const KortUkeTag: React.FunctionComponent = ({ children, ...rest }) => {
+const KortUkeTag: React.FunctionComponent = ({ children, tooltip, ...rest }) => {
const { text } = useAppIntl();
- return (
+
+ const tag = (
{children || text('tags.kortUke')}
);
+ return tooltip ? (
+ <>
+ {tag}
+ >
+ ) : (
+ tag
+ );
};
export default KortUkeTag;
diff --git a/apps/endringsmelding-pleiepenger/src/app/dev/scenarioer.ts b/apps/endringsmelding-pleiepenger/src/app/dev/scenarioer.ts
index 4fc96bd1c9..6212ec3757 100644
--- a/apps/endringsmelding-pleiepenger/src/app/dev/scenarioer.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/dev/scenarioer.ts
@@ -4,13 +4,15 @@ export type ScenarioType =
| 'arbeidsgiver-og-frilanser'
| 'arbeidsgivere-og-frilanser'
| 'arbeidsgiver-ikke-i-sak'
- | 'flere-saker-kun-en-aktiv'
+ | 'arbeidsgiver-ikke-i-sak-flere-ansettelser'
| 'debug'
| 'selvstendig-næringsdrivende'
| 'flere-saker'
| 'ingen-sak'
| 'arbeidsaktivitet-uten-arbeidsgiver'
- | 'ugyldig-k9-format';
+ | 'ugyldig-k9-format'
+ | 'en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold'
+ | 'en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold';
export interface Scenario {
name: string;
@@ -46,9 +48,9 @@ export const scenarioer: Scenario[] = [
harTilgang: true,
},
{
- name: 'Flere saker, kun én aktiv',
- value: 'flere-saker-kun-en-aktiv',
- harTilgang: true,
+ name: 'Arbeidsgiver som ikke er i sak med flere ansettelser',
+ value: 'arbeidsgiver-ikke-i-sak-flere-ansettelser',
+ harTilgang: false,
},
{
name: 'Selvstendig næringsdrivende',
@@ -80,6 +82,16 @@ export const scenarioer: Scenario[] = [
value: 'ugyldig-k9-format',
harTilgang: false,
},
+ {
+ name: 'Arbeidsgiver med to ansettelser samme uke med opphold',
+ value: 'en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold',
+ harTilgang: false,
+ },
+ {
+ name: 'Arbeidsgiver med to ansettelser samme uke uten opphold',
+ value: 'en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold',
+ harTilgang: true,
+ },
];
export const defaultScenario = scenarioer[0];
diff --git "a/apps/endringsmelding-pleiepenger/src/app/hooks/useS\303\270knadInitialData.ts" "b/apps/endringsmelding-pleiepenger/src/app/hooks/useS\303\270knadInitialData.ts"
index 31b1fc9d06..aca2acc62c 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/hooks/useS\303\270knadInitialData.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/hooks/useS\303\270knadInitialData.ts"
@@ -3,7 +3,7 @@ import { getMaybeEnv } from '@navikt/sif-common-env';
import { useEffectOnce } from '@navikt/sif-common-hooks';
import { DateRange } from '@navikt/sif-common-utils';
import {
- Arbeidsgiver,
+ ArbeidsgiverMedAnsettelseperioder,
IngenTilgangÅrsak,
K9Sak,
RequestStatus,
@@ -47,7 +47,7 @@ const prepInitialData = (
søker: Søker;
k9saker: K9Sak[];
antallSakerFørEndringsperiode: number;
- arbeidsgivere: Arbeidsgiver[];
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[];
lagretSøknadState?: SøknadStatePersistence;
},
tillattEndringsperiode: DateRange,
diff --git "a/apps/endringsmelding-pleiepenger/src/app/hooks/useS\303\270knadsdataStatus.ts" "b/apps/endringsmelding-pleiepenger/src/app/hooks/useS\303\270knadsdataStatus.ts"
index f965424539..461e6cc7f9 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/hooks/useS\303\270knadsdataStatus.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/hooks/useS\303\270knadsdataStatus.ts"
@@ -3,7 +3,7 @@ import isEqual from 'react-fast-compare';
import { useSøknadContext } from '@hooks';
import { useEffectOnce } from '@navikt/sif-common-hooks';
import { SoknadStepsConfig } from '@navikt/sif-common-soknad-ds';
-import { Arbeidsgiver, Søknadsdata } from '@types';
+import { ArbeidsgiverMedAnsettelseperioder, Søknadsdata } from '@types';
import { StepFormValues } from '../søknad/config/StepFormValues';
import { StepId } from '../søknad/config/StepId';
import { useStepFormValuesContext } from '../søknad/context/StepFormValuesContext';
@@ -18,7 +18,7 @@ const getPrecedingSteps = (currentStepIndex: number, stepConfig: SoknadStepsConf
const getStepSøknadsdataFromStepFormValues = (
step: StepId,
stepFormValues: StepFormValues,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
) => {
const formValues = stepFormValues[step];
if (!formValues) {
@@ -39,7 +39,7 @@ const isStepFormValuesAndStepSøknadsdataValid = (
step: StepId,
stepFormValues: StepFormValues,
søknadsdata: Søknadsdata,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
): boolean => {
if (stepFormValues[step]) {
const stepSøknadsdata = søknadsdata[step];
@@ -54,7 +54,7 @@ const isStepFormValuesAndStepSøknadsdataValid = (
export const useSøknadsdataStatus = (
stepId: StepId,
stepConfig: SoknadStepsConfig,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
) => {
const [invalidSteps, setInvalidSteps] = useState([]);
diff --git a/apps/endringsmelding-pleiepenger/src/app/i18n/appMessages.ts b/apps/endringsmelding-pleiepenger/src/app/i18n/appMessages.ts
index cec102af43..167b03f514 100644
--- a/apps/endringsmelding-pleiepenger/src/app/i18n/appMessages.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/i18n/appMessages.ts
@@ -29,7 +29,9 @@ const nb = {
'arbeidsaktivitetBlockHeader.nyttArbeidsforhold': 'Nytt arbeidsforhold',
'arbeidsaktivitetBlockHeader.arbeidsgiver.orgnummer': 'Organisasjonsnummer: {orgnr}',
- 'arbeidsaktivitetBlockHeader.arbeidsgiver.ansattFom': 'Ansatt: {dato}.',
+ 'arbeidsaktivitetBlockHeader.arbeidsgiver.ansettelsesperioder': 'Ansettelsesperioder',
+ 'arbeidsaktivitetBlockHeader.arbeidsgiver.ansattFomTom': 'Ansatt: {fom} - {tom}.',
+ 'arbeidsaktivitetBlockHeader.arbeidsgiver.ansattFom': 'Ansatt: {dato} - pågående',
'arbeidsaktivitetBlockHeader.arbeidsgiver.ansattTom': ' Sluttdato: {dato}.',
'ikkeAnsattMelding.tekst':
@@ -87,9 +89,10 @@ const nb = {
'Hvis du har søkt om pleiepenger for en periode frem i tid, eller for barn som ikke er folkeregistrert på deg, kan det ta tid før du kan bruke endringsmeldingen. Du kan foreløpig melde endringer i pleiepengesaken din via {SkrivTilOssLink}.',
'ingenTilgangPage.harIngenSak.3':
'Hvis du ønsker at en av våre veiledere skal undersøke hvorfor du ikke kan bruke endringsmeldingen, kan du kontakte oss på telefon 55 55 33 33.',
- 'ingenTilgangPage.harArbeidsgiverUtenArbeidsaktivitet.1':
- 'Du kan ikke bruke denne tjenesten. Dette er fordi vi har funnet et arbeidsforhold på deg, som ikke er registrert i pleiepengesaken din. Du må derfor sende en ny søknad, slik at saken og utbetalingene dine blir riktige.',
- 'ingenTilgangPage.harArbeidsgiverUtenArbeidsaktivitet.2':
+ 'ingenTilgangPage.harFlereAnsettelsesforholdHosUkjentArbeidsgiver.1':
+ 'Du kan ikke bruke denne tjenesten. Dette er fordi vi har funnet arbeidsforhold på deg som ikke er registrert i pleiepengesaken din, og hvor du har flere ansettelsesforhold. Du må derfor sende en ny søknad, slik at saken og utbetalingene dine blir riktige.',
+
+ 'ingenTilgangPage.harFlereAnsettelsesforholdHosUkjentArbeidsgiver.2':
'Hvis du mener at dette ikke stemmer, er det fint at du sender en melding til oss {SkrivTilOssLink}.',
'ingenTilgangPage.harArbeidstidSomSelvstendigNæringsdrivende.1':
'Du kan ikke bruke denne tjenesten per i dag. Dette er fordi tjenesten foreløpig ikke kan ta imot endringer fra selvstendig næringsdrivende. Vi jobber for å få det til, og selvstendig næringsdrivende blir også tilbudt denne tjenesten på et senere tidspunkt.',
@@ -99,6 +102,8 @@ const nb = {
'Du kan ikke bruke denne tjenesten fordi siste søknadsperiode gikk ut for mer enn enn {ANTALL_MÅNEDER_TILLATT_FOR_ENDRING} måneder siden. Du kan melde fra om endring i tjenesten {SkrivTilOssLink}, eller sende oss en ny søknad.',
'ingenTilgangPage.utenforEndringsperiode.2':
'Hvis du mener at dette ikke stemmer, er det fint at du sender en melding til oss {SkrivTilOssLink}.',
+ 'ingenTilgangPage.slutterOgStarterInneforSammeUke':
+ 'Vi ser at du har to ansettelsesforhold hos samme arbeidsgiver som slutter og starter samme uke. Da kan du desverre ikke bruke denne løsningen for å melde fra om endringer.',
'kvitteringPage.pageTitle': 'Endringsmelding er mottatt',
'kvitteringPage.title': 'Melding om endring er lagt til saken din',
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/ArbeidstidUker.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/ArbeidstidUker.tsx
index 5c8785768c..feec86b2bb 100644
--- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/ArbeidstidUker.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/ArbeidstidUker.tsx
@@ -35,7 +35,6 @@ const ArbeidstidUker: React.FunctionComponent = ({
arbeidstidKolonneTittel,
triggerResetValgCounter,
visEndringSomOpprinnelig,
-
onEndreUker,
}) => {
const { text, intl } = useAppIntl();
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/arbeidstidUker.scss b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/arbeidstidUker.scss
index 06372648e8..9512a5dd9a 100644
--- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/arbeidstidUker.scss
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/arbeidstidUker.scss
@@ -21,7 +21,6 @@
}
&__info {
font-size: 1.4rem;
- white-space: nowrap;
svg {
margin: 0 0.25rem;
}
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeInfo.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeInfo.tsx
index 65e7c44da2..d860efa8dc 100644
--- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeInfo.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeInfo.tsx
@@ -33,7 +33,11 @@ const ArbeidstidUkeInfo: React.FunctionComponent = ({ uke, medLabels = fa
const { endretProsent } = uke.endret;
return (
<>
- {medLabels && Arbeidstimer: }
+ {medLabels && (
+
+ Arbeidstimer:
+
+ )}
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeInfoListe.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeInfoListe.tsx
index 356866027b..4db0e0d012 100644
--- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeInfoListe.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeInfoListe.tsx
@@ -74,12 +74,12 @@ const ArbeidstidUkeInfoListe: React.FunctionComponent = ({ uke, visEndrin
)}
>
{erEndret && (
-
+
Endret fra
{uke.opprinnelig.faktisk && }
-
+
)}
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeListe.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeListe.tsx
index 28e654f6f7..c2fa3e32d8 100644
--- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeListe.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeListe.tsx
@@ -1,7 +1,7 @@
-import { BodyShort, Heading } from '@navikt/ds-react';
+import { BodyShort, Box, Heading, HStack } from '@navikt/ds-react';
import React, { ReactElement } from 'react';
import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block';
-import { dateFormatter } from '@navikt/sif-common-utils';
+import { getDateRangeText } from '@navikt/sif-common-utils';
import dayjs from 'dayjs';
import { SelectableListType } from '../../../hooks/useSelectableList';
import { AppText } from '../../../i18n';
@@ -9,6 +9,8 @@ import { ArbeidstidUkerItem } from '../types/ArbeidstidUkerItem';
import ArbeidstidUkeInfoListe from './ArbeidstidUkeInfoListe';
import UkeTags from './UkeTags';
import VelgArbeidsukeItem from './VelgArbeidsukeItem';
+import { useIntl } from 'react-intl';
+import { getKortUkeTooltipText } from './UkeInfoTooltip';
interface Props {
uker: ArbeidstidUkerItem[];
@@ -23,6 +25,7 @@ const ArbeidstidUkeListe: React.FunctionComponent = ({
selectableList,
renderEditButton,
}) => {
+ const intl = useIntl();
const {
isItemSelected,
setItemSelected,
@@ -52,10 +55,12 @@ const ArbeidstidUkeListe: React.FunctionComponent = ({
- {dateFormatter.compact(uke.periode.from)} - {` `}
- {dateFormatter.compact(uke.periode.to)}
+
+ {getDateRangeText(uke.periode, intl.locale)}
+
= ({
-
- {dateFormatter.compact(uke.periode.from)} - {` `}
- {dateFormatter.compact(uke.periode.to)}
-
+
{getDateRangeText(uke.periode, intl.locale)}
@@ -147,6 +144,7 @@ const ArbeidstidUkeTabell: React.FunctionComponent
= ({
{(uke.harFeriedager || uke.harFjernetFeriedager || uke.erKortUke) && (
= ({
)}
- {uke.erKortUke && }
+ {uke.erKortUke && }
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/KortUkeInfo.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/KortUkeInfo.tsx
new file mode 100644
index 0000000000..45da893352
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/KortUkeInfo.tsx
@@ -0,0 +1,16 @@
+import { Box } from '@navikt/ds-react';
+import { getDagerTekst } from '../../../utils';
+import { Arbeidsuke } from '../../../types';
+import { AppText } from '../../../i18n';
+
+interface Props {
+ arbeidsuke: Arbeidsuke;
+}
+
+const KortUkeInfo = ({ arbeidsuke }: Props) => (
+
+
+
+);
+
+export default KortUkeInfo;
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeInfo.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeInfoTooltip.tsx
similarity index 52%
rename from apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeInfo.tsx
rename to apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeInfoTooltip.tsx
index 73233391e2..2621fdc34c 100644
--- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeInfo.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeInfoTooltip.tsx
@@ -8,14 +8,19 @@ interface Props {
uke: ArbeidstidUkerItem;
}
-const UkeInfoIkon: React.FunctionComponent = ({ uke }) => {
- return (
-
-
-
-
-
- );
+export const getKortUkeTooltipText = (periode: DateRange): string => `Kort uke - ${getDagerPeriode(periode, false)}`;
+
+const UkeInfoTooltip: React.FunctionComponent = ({ uke }) => {
+ const { erKortUke } = uke;
+ if (erKortUke) {
+ return (
+
+
+
+
+
+ );
+ }
};
const getDagerPeriode = ({ from, to }: DateRange, visDato = true): string => {
@@ -27,4 +32,4 @@ const getDagerPeriode = ({ from, to }: DateRange, visDato = true): string => {
return `${fra} til ${til}`;
};
-export default UkeInfoIkon;
+export default UkeInfoTooltip;
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeTags.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeTags.tsx
index 1a0c285879..a88ea04ee1 100644
--- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeTags.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/UkeTags.tsx
@@ -5,16 +5,17 @@ import KortUkeTag from '../../../components/tags/KortUkeTag';
import TagsContainer from '../../../components/tags/tags-container/TagsContainer';
interface Props {
+ kortUkeTooltip?: string;
erKortUke?: boolean;
dagerMedFerie: Date[] | undefined;
dagerMedFjernetFerie?: Date[] | undefined;
visDagNavn?: boolean;
}
-const UkeTags = ({ dagerMedFerie = [], dagerMedFjernetFerie = [], visDagNavn, erKortUke }: Props) => {
+const UkeTags = ({ dagerMedFerie = [], dagerMedFjernetFerie = [], visDagNavn, erKortUke, kortUkeTooltip }: Props) => {
const tags: React.ReactNode[] = [];
if (erKortUke) {
- tags.push( );
+ tags.push( );
}
if (dagerMedFerie?.length > 0) {
tags.push(
@@ -39,7 +40,7 @@ const UkeTags = ({ dagerMedFerie = [], dagerMedFjernetFerie = [], visDagNavn, er
return (
<>
- {erKortUke && }
+ {erKortUke && }
{dagerMedFerie?.length > 0 && (
{visDagNavn
diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/endre-arbeidstid-form/EndreArbeidstidForm.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/endre-arbeidstid-form/EndreArbeidstidForm.tsx
index b457e8cc9b..b3353fac70 100644
--- a/apps/endringsmelding-pleiepenger/src/app/modules/endre-arbeidstid-form/EndreArbeidstidForm.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/modules/endre-arbeidstid-form/EndreArbeidstidForm.tsx
@@ -21,6 +21,7 @@ import {
import dayjs from 'dayjs';
import { AppIntlShape, AppText, useAppIntl } from '../../i18n';
import actionsCreator from '../../søknad/context/action/actionCreator';
+import KortUkeInfo from '../arbeidstid-uker/components/KortUkeInfo';
import UkeTags from '../arbeidstid-uker/components/UkeTags';
import { getArbeidstidSpørsmålDescription, getArbeidsukerPerÅr } from './endreArbeidstidFormUtils';
import { getEndreArbeidstidIntlValues } from './endreArbeidstidIntlValues';
@@ -155,7 +156,6 @@ const EndreArbeidstidForm: React.FunctionComponent = (
-
{dagerMedFjernetFerie && dagerMedFjernetFerie.length > 0 && (
@@ -198,16 +198,11 @@ const EndreArbeidstidForm: React.FunctionComponent = (
- {gjelderKortUke && (
+ {gjelderKortUke ? (
-
-
-
+
- )}
+ ) : null}
{timerEllerProsent === TimerEllerProsent.PROSENT && (
diff --git a/apps/endringsmelding-pleiepenger/src/app/pages/ingen-tilgang/IngenTilgangPage.stories.tsx b/apps/endringsmelding-pleiepenger/src/app/pages/ingen-tilgang/IngenTilgangPage.stories.tsx
index 01f0a2f200..97eb66b97b 100644
--- a/apps/endringsmelding-pleiepenger/src/app/pages/ingen-tilgang/IngenTilgangPage.stories.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/pages/ingen-tilgang/IngenTilgangPage.stories.tsx
@@ -21,10 +21,10 @@ export default meta;
type Story = StoryObj;
export const Default: Story = {
- name: 'harArbeidsgiverUtenArbeidsaktivitet',
+ name: 'harFlereAnsettelsesforholdHosUkjentArbeidsgiver',
args: {
søker,
- årsak: [IngenTilgangÅrsak.harArbeidsgiverUtenArbeidsaktivitet],
+ årsak: [IngenTilgangÅrsak.harFlereAnsettelsesforholdHosUkjentArbeidsgiver],
},
};
@@ -52,6 +52,14 @@ export const IngenSak: Story = {
},
};
+export const EnArbeidsgiverToAnsettelserSammeUkeMedOpphold: Story = {
+ name: 'enArbeidsgiverToAnsettelserSammeUkeMedOpphold',
+ args: {
+ søker,
+ årsak: [IngenTilgangÅrsak.enArbeidsgiverToAnsettelserSammeUkeMedOpphold],
+ },
+};
+
export const MerEnnEnSak: Story = {
name: 'harMerEnnEnSak',
args: {
diff --git a/apps/endringsmelding-pleiepenger/src/app/pages/ingen-tilgang/IngenTilgangPage.tsx b/apps/endringsmelding-pleiepenger/src/app/pages/ingen-tilgang/IngenTilgangPage.tsx
index 1790f82dab..7056a6c826 100644
--- a/apps/endringsmelding-pleiepenger/src/app/pages/ingen-tilgang/IngenTilgangPage.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/pages/ingen-tilgang/IngenTilgangPage.tsx
@@ -23,7 +23,7 @@ const getÅrsakMelding = (årsak: IngenTilgangÅrsak) => {
,
+ SkrivTilOssLink: ,
}}
/>
);
@@ -48,7 +48,7 @@ const getÅrsakMelding = (årsak: IngenTilgangÅrsak) => {
}}
+ values={{ SkrivTilOssLink: }}
/>
@@ -56,16 +56,16 @@ const getÅrsakMelding = (årsak: IngenTilgangÅrsak) => {
);
- case IngenTilgangÅrsak.harArbeidsgiverUtenArbeidsaktivitet:
+ case IngenTilgangÅrsak.harFlereAnsettelsesforholdHosUkjentArbeidsgiver:
return (
-
+
}}
+ id="ingenTilgangPage.harFlereAnsettelsesforholdHosUkjentArbeidsgiver.2"
+ values={{ SkrivTilOssLink: }}
/>
@@ -88,19 +88,31 @@ const getÅrsakMelding = (årsak: IngenTilgangÅrsak) => {
{skrivTilOssGenerell}
);
+ case IngenTilgangÅrsak.enArbeidsgiverToAnsettelserSammeUkeMedOpphold:
+ return (
+
+
+
+
+ {skrivTilOssGenerell}
+
+ );
case IngenTilgangÅrsak.søknadsperioderUtenforTillattEndringsperiode:
return (
}}
+ values={{
+ ANTALL_MÅNEDER_TILLATT_FOR_ENDRING,
+ SkrivTilOssLink: ,
+ }}
/>
}}
+ values={{ SkrivTilOssLink: }}
/>
diff --git a/apps/endringsmelding-pleiepenger/src/app/pages/kvittering/KvitteringPage.tsx b/apps/endringsmelding-pleiepenger/src/app/pages/kvittering/KvitteringPage.tsx
index 90644d12a3..0ddfaabfe6 100644
--- a/apps/endringsmelding-pleiepenger/src/app/pages/kvittering/KvitteringPage.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/pages/kvittering/KvitteringPage.tsx
@@ -23,7 +23,11 @@ const KvitteringPage = ({ onUnmount }: Props) => {
{children},
+ Lenke: (children) => (
+
+ {children}
+
+ ),
}}
/>
diff --git a/apps/endringsmelding-pleiepenger/src/app/pages/velkommen/BehandlingAvPersonopplysningerContent.tsx b/apps/endringsmelding-pleiepenger/src/app/pages/velkommen/BehandlingAvPersonopplysningerContent.tsx
index 4ae61fca85..49c8ecee24 100644
--- a/apps/endringsmelding-pleiepenger/src/app/pages/velkommen/BehandlingAvPersonopplysningerContent.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/pages/velkommen/BehandlingAvPersonopplysningerContent.tsx
@@ -47,7 +47,7 @@ const BehandlingAvPersonopplysningerContent: React.FunctionComponent = () => {
id="personopplysninger.5"
values={{
Link: (children) => (
-
+
{children}
),
diff --git a/apps/endringsmelding-pleiepenger/src/app/pages/velkommen/VelkommenPage.tsx b/apps/endringsmelding-pleiepenger/src/app/pages/velkommen/VelkommenPage.tsx
index 02d0a89c13..50225da40e 100644
--- a/apps/endringsmelding-pleiepenger/src/app/pages/velkommen/VelkommenPage.tsx
+++ b/apps/endringsmelding-pleiepenger/src/app/pages/velkommen/VelkommenPage.tsx
@@ -51,7 +51,10 @@ const VelkommenPage = () => {
{barnetsNavn}, samletSøknadsperiodeTekst }}
+ values={{
+ barnetsNavn: {barnetsNavn} ,
+ samletSøknadsperiodeTekst,
+ }}
/>
diff --git "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/arbeidstid/ArbeidstidForm.tsx" "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/arbeidstid/ArbeidstidForm.tsx"
index 72bc7495f5..d048ebc1e7 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/arbeidstid/ArbeidstidForm.tsx"
+++ "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/arbeidstid/ArbeidstidForm.tsx"
@@ -6,7 +6,7 @@ import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block';
import { getTypedFormComponents, ValidationError } from '@navikt/sif-common-formik-ds';
import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler';
import { ArbeiderIPeriodenSvar, ArbeidsaktivitetType, ArbeidstidEndringMap, SøknadContextState } from '@types';
-import { getArbeidsaktiviteterForUkjenteArbeidsforhold } from '@utils';
+import { getArbeidsaktiviteterForUkjenteArbeidsforhold, getEndringsdato, getTillattEndringsperiode } from '@utils';
import { AppText } from '../../../i18n';
import { getLenker } from '../../../lenker';
import PersistStepFormValues from '../../../modules/persist-step-form-values/PersistStepFormValues';
@@ -106,6 +106,7 @@ const ArbeidstidForm: React.FunctionComponent = ({ goBack }) => {
sak.søknadsperioder,
sak.arbeidsgivereIkkeISak,
aktiviteterValuesMap,
+ getTillattEndringsperiode(getEndringsdato()),
søknadsdata.ukjentArbeidsforhold,
),
...getAktiviteterSomSkalEndres(sak.arbeidsaktiviteter),
@@ -119,7 +120,9 @@ const ArbeidstidForm: React.FunctionComponent = ({ goBack }) => {
id="arbeidstidStep.ingenArbeidsaktiviteter"
values={{
Lenke: (txt: string) => (
- {txt}
+
+ {txt}
+
),
}}
/>
diff --git "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/arbeidstid/arbeidsaktivitet-form-part/components/ArbeidsaktivitetUtenforPeriodeInfo.tsx" "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/arbeidstid/arbeidsaktivitet-form-part/components/ArbeidsaktivitetUtenforPeriodeInfo.tsx"
index c21923640e..57c4b9e175 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/arbeidstid/arbeidsaktivitet-form-part/components/ArbeidsaktivitetUtenforPeriodeInfo.tsx"
+++ "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/arbeidstid/arbeidsaktivitet-form-part/components/ArbeidsaktivitetUtenforPeriodeInfo.tsx"
@@ -20,7 +20,7 @@ const ArbeidsaktivitetUtenforPeriodeInfo: React.FunctionComponent = ({
const intlValues = {
førDato: dateFormatter.full(tillattEndringsperiode.from),
etterDato: dateFormatter.full(tillattEndringsperiode.to),
- skrivTilOssLink: ,
+ skrivTilOssLink: ,
};
return (
diff --git "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/oppsummering/ArbeidstidArbeidstakerOppsummering.tsx" "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/oppsummering/ArbeidstidArbeidstakerOppsummering.tsx"
index 6bca966541..e6a5ccc18e 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/oppsummering/ArbeidstidArbeidstakerOppsummering.tsx"
+++ "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/oppsummering/ArbeidstidArbeidstakerOppsummering.tsx"
@@ -1,6 +1,6 @@
import { Heading } from '@navikt/ds-react';
import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block';
-import { ArbeiderIPeriodenSvar, Arbeidsgiver, ArbeidstakerApiData } from '@types';
+import { ArbeiderIPeriodenSvar, ArbeidsgiverMedAnsettelseperioder, ArbeidstakerApiData } from '@types';
import { AppText } from '../../../i18n';
import ArbeidstidUker from '../../../modules/arbeidstid-uker/ArbeidstidUker';
import { ArbeiderIPeriodenSvarIntlKey } from '../arbeidstid/arbeidsaktivitet-form-part/components/ArbeiderIPeriodenSpørsmål';
@@ -8,7 +8,7 @@ import { oppsummeringStepUtils } from './oppsummeringStepUtils';
type Props = {
arbeidstaker: ArbeidstakerApiData;
- arbeidsgivere: Arbeidsgiver[];
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[];
arbeidstidKolonneTittel?: string;
};
diff --git "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/oppsummering/ArbeidstidOppsummering.tsx" "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/oppsummering/ArbeidstidOppsummering.tsx"
index e52d946d4c..a4ae1d6a2c 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/oppsummering/ArbeidstidOppsummering.tsx"
+++ "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/oppsummering/ArbeidstidOppsummering.tsx"
@@ -1,7 +1,7 @@
import { Heading } from '@navikt/ds-react';
import React from 'react';
import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block';
-import { Arbeidsgiver, ArbeidstidApiData } from '@types';
+import { ArbeidsgiverMedAnsettelseperioder, ArbeidstidApiData } from '@types';
import ArbeidstidUker from '../../../modules/arbeidstid-uker/ArbeidstidUker';
import ArbeidstidArbeidstakerOppsummering from './ArbeidstidArbeidstakerOppsummering';
import { oppsummeringStepUtils } from './oppsummeringStepUtils';
@@ -9,7 +9,7 @@ import { AppText, useAppIntl } from '../../../i18n';
interface Props {
arbeidstid: ArbeidstidApiData;
- arbeidsgivere: Arbeidsgiver[];
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[];
}
const ArbeidstidOppsummering: React.FunctionComponent = ({ arbeidstid, arbeidsgivere }) => {
diff --git "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/ukjent-arbeidsforhold/UkjentArbeidsforholdForm.tsx" "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/ukjent-arbeidsforhold/UkjentArbeidsforholdForm.tsx"
index 1519ff65d1..9df972a9ca 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/ukjent-arbeidsforhold/UkjentArbeidsforholdForm.tsx"
+++ "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/ukjent-arbeidsforhold/UkjentArbeidsforholdForm.tsx"
@@ -10,7 +10,12 @@ import {
YesOrNo,
} from '@navikt/sif-common-formik-ds';
import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler';
-import { ArbeidsaktivitetType, Arbeidsgiver, SøknadContextState, UkjentArbeidsforholdSøknadsdata } from '@types';
+import {
+ ArbeidsaktivitetType,
+ ArbeidsgiverMedAnsettelseperioder,
+ SøknadContextState,
+ UkjentArbeidsforholdSøknadsdata,
+} from '@types';
import ArbeidsaktivitetBlock from '../../../components/arbeidsaktivitet-block/ArbeidsaktivitetBlock';
import IkkeAnsattMelding from '../../../components/ikke-ansatt-melding/IkkeAnsattMelding';
import InfoNormalarbeidstid from '../../../components/info-normalarbeidstid/InfoNormalarbeidstid';
@@ -58,8 +63,8 @@ const { FormikWrapper, Form } = getTypedFormComponents<
>();
interface Props {
- arbeidsgivere: Arbeidsgiver[];
- arbeidsgivereIkkeISak: Arbeidsgiver[];
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[];
+ arbeidsgivereIkkeISak: ArbeidsgiverMedAnsettelseperioder[];
ukjentArbeidsforholdSøknadsdata?: UkjentArbeidsforholdSøknadsdata;
stepId: StepId;
goBack?: () => void;
diff --git "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/ukjent-arbeidsforhold/ukjentArbeidsforholdStepUtils.ts" "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/ukjent-arbeidsforhold/ukjentArbeidsforholdStepUtils.ts"
index 27387a64e8..38bdb5959c 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/ukjent-arbeidsforhold/ukjentArbeidsforholdStepUtils.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/s\303\270knad/steps/ukjent-arbeidsforhold/ukjentArbeidsforholdStepUtils.ts"
@@ -1,7 +1,7 @@
import { getNumberFromNumberInputValue, IntlErrorObject, YesOrNo } from '@navikt/sif-common-formik-ds';
import { getNumberValidator, getYesOrNoValidator } from '@navikt/sif-common-formik-ds/src/validation';
import { decimalDurationToDuration, durationToDecimalDuration } from '@navikt/sif-common-utils';
-import { Arbeidsforhold, Arbeidsgiver, UkjentArbeidsforholdSøknadsdata } from '@types';
+import { Arbeidsforhold, ArbeidsgiverMedAnsettelseperioder, UkjentArbeidsforholdSøknadsdata } from '@types';
import {
UkjentArbeidsforholdFormValues,
UkjentArbeidsgiverFormField,
@@ -25,7 +25,7 @@ const arbeidsforholdSøknadsdataToFormValues = (
const ukjentArbeidsgiverFormValuesToSøknadsdata = (
formValues: UkjentArbeidsforholdArbeidsgiverFormValues,
- arbeidsgiver?: Arbeidsgiver,
+ arbeidsgiver?: ArbeidsgiverMedAnsettelseperioder,
): Arbeidsforhold | undefined => {
if (!arbeidsgiver) {
return undefined;
@@ -54,7 +54,7 @@ const ukjentArbeidsgiverFormValuesToSøknadsdata = (
export const getUkjentArbeidsforholdStepInitialValues = (
ukjentArbeidsforholdSøknadsdata: UkjentArbeidsforholdSøknadsdata | undefined,
formValues: UkjentArbeidsforholdFormValues | undefined,
- arbeidsgivereIkkeISak: Arbeidsgiver[],
+ arbeidsgivereIkkeISak: ArbeidsgiverMedAnsettelseperioder[],
): UkjentArbeidsforholdFormValues => {
if (formValues) {
return formValues;
@@ -79,7 +79,7 @@ export const getUkjentArbeidsforholdStepInitialValues = (
export const getUkjentArbeidsforholdSøknadsdataFromFormValues = (
values: UkjentArbeidsforholdFormValues,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
): UkjentArbeidsforholdSøknadsdata => {
const arbeidsforhold: Arbeidsforhold[] = [];
Object.keys(values.arbeidsforhold).forEach((key) => {
diff --git a/apps/endringsmelding-pleiepenger/src/app/types/Arbeidsgiver.ts b/apps/endringsmelding-pleiepenger/src/app/types/Arbeidsgiver.ts
deleted file mode 100644
index 9eb45da42f..0000000000
--- a/apps/endringsmelding-pleiepenger/src/app/types/Arbeidsgiver.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface Arbeidsgiver {
- key: string /** orgnummer prefixet med a_ */;
- organisasjonsnummer: string;
- navn: string;
- ansattFom?: Date;
- ansattTom?: Date;
-}
diff --git a/apps/endringsmelding-pleiepenger/src/app/types/ArbeidsgiverMedAnsettelseperioder.ts b/apps/endringsmelding-pleiepenger/src/app/types/ArbeidsgiverMedAnsettelseperioder.ts
new file mode 100644
index 0000000000..4831b5f9ad
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/app/types/ArbeidsgiverMedAnsettelseperioder.ts
@@ -0,0 +1,8 @@
+import { MaybeDateRange } from '@navikt/sif-common-utils';
+
+export interface ArbeidsgiverMedAnsettelseperioder {
+ key: string /** orgnummer prefixet med a_ */;
+ organisasjonsnummer: string;
+ navn: string;
+ ansettelsesperioder: MaybeDateRange[];
+}
diff --git "a/apps/endringsmelding-pleiepenger/src/app/types/IngenTilgang\303\205rsak.ts" "b/apps/endringsmelding-pleiepenger/src/app/types/IngenTilgang\303\205rsak.ts"
index dd30569002..afeb2b4c75 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/types/IngenTilgang\303\205rsak.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/types/IngenTilgang\303\205rsak.ts"
@@ -4,6 +4,7 @@ export enum IngenTilgangÅrsak {
'søknadsperioderUtenforTillattEndringsperiode' = 'søknadsperioderUtenforTillattEndringsperiode',
'harMerEnnEnSak' = 'harMerEnnEnSak',
'harIngenPerioder' = 'harIngenPerioder',
- 'harArbeidsgiverUtenArbeidsaktivitet' = 'harArbeidsgiverUtenArbeidsaktivitet',
'harArbeidstidSomSelvstendigNæringsdrivende' = 'harArbeidstidSomSelvstendigNæringsdrivende',
+ 'enArbeidsgiverToAnsettelserSammeUkeMedOpphold' = 'harAnsettelsesforholdSomSlutterOgStarterInneforSammeUke',
+ 'harFlereAnsettelsesforholdHosUkjentArbeidsgiver' = 'harFlereAnsettelsesforholdHosUkjentArbeidsgiver',
}
diff --git a/apps/endringsmelding-pleiepenger/src/app/types/Sak.ts b/apps/endringsmelding-pleiepenger/src/app/types/Sak.ts
index 4394a04670..a46f6d7073 100644
--- a/apps/endringsmelding-pleiepenger/src/app/types/Sak.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/types/Sak.ts
@@ -1,6 +1,6 @@
import { DateRange, Duration, ISODate, ISODateRangeMap } from '@navikt/sif-common-utils';
import { FeriedagMap } from '../søknad/steps/lovbestemt-ferie/LovbestemtFerieStep';
-import { Arbeidsgiver } from './Arbeidsgiver';
+import { ArbeidsgiverMedAnsettelseperioder } from './ArbeidsgiverMedAnsettelseperioder';
import { K9SakBarn } from './K9Sak';
export interface Sak {
@@ -9,7 +9,7 @@ export interface Sak {
/** Settes til true hvis det finnes en arbeidsgiver som ikke har arbeidstid i sak */
harArbeidsgivereIkkeISak: boolean;
/** Alle arbeidsgivere som ikke finnes i sak, men som finnes i Aa-reg */
- arbeidsgivereIkkeISak: Arbeidsgiver[];
+ arbeidsgivereIkkeISak: ArbeidsgiverMedAnsettelseperioder[];
/** Alle aktiviteter som ikke har arbeidsgiver i AA-reg */
arbeidsaktivitetMedUkjentArbeidsgiver: ArbeidsaktivitetUkjentArbeidsgiver[];
/** Alle arbeidsaktiviteter i sak. Arbeidsgivere flates ut og legges sammen med evt. frilans og selvstendig */
@@ -62,6 +62,7 @@ export interface Arbeidsuke {
faktisk?: ArbeidsukeTimer;
normalt: ArbeidsukeTimer;
antallDagerMedArbeidstid: number;
+ dagerSøktFor: Date[];
}
export type ArbeidsukeMap = ISODateRangeMap;
@@ -77,11 +78,12 @@ interface ArbeidsaktivitetBase {
perioderMedArbeidstid: PeriodeMedArbeidstid[];
harPerioderFørTillattEndringsperiode: boolean;
harPerioderEtterTillattEndringsperiode: boolean;
+ ansettelsesperioderInnenforEndringsperiode: DateRange[];
}
export interface ArbeidsaktivitetArbeidstaker extends ArbeidsaktivitetBase {
type: ArbeidsaktivitetType.arbeidstaker;
- arbeidsgiver: Arbeidsgiver;
+ arbeidsgiver: ArbeidsgiverMedAnsettelseperioder;
erUkjentArbeidsforhold: boolean;
}
export interface ArbeidsaktivitetUkjentArbeidsgiver {
diff --git "a/apps/endringsmelding-pleiepenger/src/app/types/S\303\270knadContextState.ts" "b/apps/endringsmelding-pleiepenger/src/app/types/S\303\270knadContextState.ts"
index 1ea6986245..963b1588d7 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/types/S\303\270knadContextState.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/types/S\303\270knadContextState.ts"
@@ -1,7 +1,7 @@
import { DateRange } from '@navikt/sif-common-utils';
import { StepId } from '../søknad/config/StepId';
import { SøknadRoutes } from '../søknad/config/SøknadRoutes';
-import { Arbeidsgiver } from './Arbeidsgiver';
+import { ArbeidsgiverMedAnsettelseperioder } from './ArbeidsgiverMedAnsettelseperioder';
import { K9Sak } from './K9Sak';
import { Sak } from './Sak';
import { Søker } from './Søker';
@@ -15,7 +15,7 @@ export interface SøknadContextState {
k9saker: K9Sak[];
sak: Sak;
tillattEndringsperiode: DateRange;
- arbeidsgivere: Arbeidsgiver[];
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[];
søknadsdata: Søknadsdata;
søknadRoute?: SøknadRoutes;
endringsmeldingSendt?: boolean;
diff --git a/apps/endringsmelding-pleiepenger/src/app/types/index.ts b/apps/endringsmelding-pleiepenger/src/app/types/index.ts
index 71882538d3..0c2d8e138f 100644
--- a/apps/endringsmelding-pleiepenger/src/app/types/index.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/types/index.ts
@@ -1,7 +1,7 @@
export * from './ArbeiderIPeriodenSvar';
export * from './Arbeidsforhold';
export * from './ArbeidstidEndring';
-export * from './Arbeidsgiver';
+export * from './ArbeidsgiverMedAnsettelseperioder';
export * from './ArbeidsgiverIkkeFunnetError';
export * from './ArbeidstidSøknadsdata';
export * from './EndringType';
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/getSakFromK9Sak.test.ts b/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/getSakFromK9Sak.test.ts
index 148b9a39c1..c1b771f634 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/getSakFromK9Sak.test.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/getSakFromK9Sak.test.ts
@@ -9,7 +9,12 @@ import {
ISODuration,
ISODurationToDuration,
} from '@navikt/sif-common-utils';
-import { Arbeidsgiver, ArbeidstidEnkeltdagMap, FaktiskOgNormalArbeidstid, K9SakArbeidstidPeriodeMap } from '@types';
+import {
+ ArbeidsgiverMedAnsettelseperioder,
+ ArbeidstidEnkeltdagMap,
+ FaktiskOgNormalArbeidstid,
+ K9SakArbeidstidPeriodeMap,
+} from '@types';
import { _getSakFromK9Sak } from '../getSakFromK9Sak';
const {
@@ -38,15 +43,15 @@ describe('getSakFromK9Sak', () => {
const endringsperiode: DateRange = { from: ISODateToDate(isoFrom), to: ISODateToDate(isoTo) };
it('beholder uendret endringsperiode hvis bruker er fortsatt ansatt', () => {
const result = getEndringsperiodeForArbeidsgiver(endringsperiode, {
- ansattTom: undefined,
- } as Arbeidsgiver);
+ ansettelsesperioder: [{ to: undefined }],
+ } as ArbeidsgiverMedAnsettelseperioder);
expect(dateToISODate(result.from)).toEqual(isoFrom);
expect(dateToISODate(result.to)).toEqual(isoTo);
});
it('justerer endringsperiode hvis sluttdato er før endringsperiode sluttdato', () => {
const result = getEndringsperiodeForArbeidsgiver(endringsperiode, {
- ansattTom: ISODateToDate(isoSluttdato),
- } as Arbeidsgiver);
+ ansettelsesperioder: [{ to: ISODateToDate(isoSluttdato) }],
+ } as ArbeidsgiverMedAnsettelseperioder);
expect(dateToISODate(result.from)).toEqual(isoFrom);
expect(dateToISODate(result.to)).toEqual(isoSluttdato);
});
@@ -188,6 +193,9 @@ describe('getSakFromK9Sak', () => {
});
describe('getArbeidsukerFromEnkeltdager', () => {
+ const ansettelsesperioder: DateRange[] = [
+ { from: ISODateToDate('2022-01-01'), to: ISODateToDate('2023-01-31') },
+ ];
const arbeidstid: FaktiskOgNormalArbeidstid = {
faktisk: faktiskArbeidTimerPerDag,
normalt: jobberNormaltTimerPerDag,
@@ -213,21 +221,21 @@ describe('getSakFromK9Sak', () => {
};
it('returnerer riktig for én enkeltdag', () => {
- const result = getArbeidsukerFromEnkeltdager(enkeltdag);
+ const result = getArbeidsukerFromEnkeltdager(enkeltdag, ansettelsesperioder);
expect(result.length).toEqual(1);
const uke = result[0];
expect(dateRangeToISODateRange(uke.periode)).toEqual('2022-01-03/2022-01-03');
expect(uke.antallDagerMedArbeidstid).toEqual(1);
});
it('returnerer riktig for dager som går over én hel uke', () => {
- const result = getArbeidsukerFromEnkeltdager(helUke);
+ const result = getArbeidsukerFromEnkeltdager(helUke, ansettelsesperioder);
expect(result.length).toEqual(1);
const uke = result[0];
expect(dateRangeToISODateRange(uke.periode)).toEqual('2022-01-03/2022-01-07');
expect(uke.antallDagerMedArbeidstid).toEqual(5);
});
it('returnerer riktig for dager som går mer enn én uker', () => {
- const result = getArbeidsukerFromEnkeltdager(flereUker);
+ const result = getArbeidsukerFromEnkeltdager(flereUker, ansettelsesperioder);
expect(result.length).toEqual(2);
const uke1 = result[0];
const uke2 = result[1];
@@ -290,9 +298,9 @@ describe('getSakFromK9Sak', () => {
ISODateRangeToDateRange('2020-01-01/2020-02-01'),
ISODateRangeToDateRange('2020-04-01/2020-05-01'),
];
- const arbeidsgiver: Arbeidsgiver = {
- ansattFom: ISODateToDate('2019-01-01'),
- } as Arbeidsgiver;
+ const arbeidsgiver: ArbeidsgiverMedAnsettelseperioder = {
+ ansettelsesperioder: [{ from: ISODateToDate('2019-01-01') }],
+ } as ArbeidsgiverMedAnsettelseperioder;
describe('uten ansattTom', () => {
it('returnerer true når ansattFom er før søknadsperiode', () => {
@@ -301,7 +309,9 @@ describe('getSakFromK9Sak', () => {
it('returnerer true når ansattFom er mellom to søknadsperiode', () => {
expect(
erArbeidsgiverInnenforSøknadsperioder(
- { ansattFom: ISODateToDate('2020-02-03') } as Arbeidsgiver,
+ {
+ ansettelsesperioder: [{ from: ISODateToDate('2020-02-03') }],
+ } as ArbeidsgiverMedAnsettelseperioder,
søknadsperioder,
),
).toBeTruthy();
@@ -309,7 +319,9 @@ describe('getSakFromK9Sak', () => {
it('returnerer true når ansattFom er i en søknadsperiode', () => {
expect(
erArbeidsgiverInnenforSøknadsperioder(
- { ansattFom: ISODateToDate('2020-03-02') } as Arbeidsgiver,
+ {
+ ansettelsesperioder: [{ from: ISODateToDate('2020-03-02') }],
+ } as ArbeidsgiverMedAnsettelseperioder,
søknadsperioder,
),
).toBeTruthy();
@@ -317,7 +329,9 @@ describe('getSakFromK9Sak', () => {
it('returnerer false når ansattFom er etter søknadsperiode', () => {
expect(
erArbeidsgiverInnenforSøknadsperioder(
- { ansattFom: ISODateToDate('2020-05-02') } as Arbeidsgiver,
+ {
+ ansettelsesperioder: [{ from: ISODateToDate('2020-05-02') }],
+ } as ArbeidsgiverMedAnsettelseperioder,
søknadsperioder,
),
).toBeFalsy();
@@ -328,9 +342,10 @@ describe('getSakFromK9Sak', () => {
expect(
erArbeidsgiverInnenforSøknadsperioder(
{
- ansattFom: ISODateToDate('2019-01-01'),
- ansattTom: ISODateToDate('2023-01-01'),
- } as Arbeidsgiver,
+ ansettelsesperioder: [
+ { from: ISODateToDate('2019-01-01'), to: ISODateToDate('2023-01-01') },
+ ],
+ } as ArbeidsgiverMedAnsettelseperioder,
søknadsperioder,
),
).toBeTruthy();
@@ -339,9 +354,10 @@ describe('getSakFromK9Sak', () => {
expect(
erArbeidsgiverInnenforSøknadsperioder(
{
- ansattFom: ISODateToDate('2019-01-01'),
- ansattTom: ISODateToDate('2020-03-01'),
- } as Arbeidsgiver,
+ ansettelsesperioder: [
+ { from: ISODateToDate('2019-01-01'), to: ISODateToDate('2020-03-01') },
+ ],
+ } as ArbeidsgiverMedAnsettelseperioder,
søknadsperioder,
),
).toBeTruthy();
@@ -350,9 +366,13 @@ describe('getSakFromK9Sak', () => {
expect(
erArbeidsgiverInnenforSøknadsperioder(
{
- ansattFom: ISODateToDate('2019-01-01'),
- ansattTom: ISODateToDate('2019-12-31'),
- } as Arbeidsgiver,
+ ansettelsesperioder: [
+ {
+ from: ISODateToDate('2019-01-01'),
+ to: ISODateToDate('2019-12-31'),
+ },
+ ],
+ } as ArbeidsgiverMedAnsettelseperioder,
søknadsperioder,
),
).toBeFalsy();
@@ -361,9 +381,10 @@ describe('getSakFromK9Sak', () => {
expect(
erArbeidsgiverInnenforSøknadsperioder(
{
- ansattFom: ISODateToDate('2020-03-01'),
- ansattTom: ISODateToDate('2020-03-02'),
- } as Arbeidsgiver,
+ ansettelsesperioder: [
+ { from: ISODateToDate('2020-03-01'), to: ISODateToDate('2020-03-02') },
+ ],
+ } as ArbeidsgiverMedAnsettelseperioder,
søknadsperioder,
),
).toBeFalsy();
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/tilgangskontroll.test.ts b/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/tilgangskontroll.test.ts
index 6f151cf20c..85c46f6eb7 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/tilgangskontroll.test.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/tilgangskontroll.test.ts
@@ -1,11 +1,32 @@
import { DateRange, ISODateRangeToDateRange, ISODurationToDuration } from '@navikt/sif-common-utils';
-import { Arbeidsgiver, K9SakArbeidstaker, K9SakArbeidstidPeriodeMap } from '@types';
+import { ArbeidsgiverMedAnsettelseperioder, K9SakArbeidstaker, K9SakArbeidstidPeriodeMap } from '@types';
import { tilgangskontroll, tilgangskontrollUtils } from '../tilgangskontroll';
import { vi } from 'vitest';
-const arbeidsgiver1: Arbeidsgiver = { key: 'a_1', organisasjonsnummer: '1' } as Arbeidsgiver;
-const arbeidsgiver2: Arbeidsgiver = { key: 'a_2', organisasjonsnummer: '2' } as Arbeidsgiver;
-const arbeidsgiver3: Arbeidsgiver = { key: 'a_3', organisasjonsnummer: '3' } as Arbeidsgiver;
+const ansettelsesperioder: DateRange[] = [ISODateRangeToDateRange('2022-01-01/2023-03-01')];
+
+const arbeidsgiver1: ArbeidsgiverMedAnsettelseperioder = {
+ key: 'a_1',
+ navn: 'a_1',
+ ansettelsesperioder,
+ organisasjonsnummer: '1',
+};
+const arbeidsgiver2: ArbeidsgiverMedAnsettelseperioder = {
+ key: 'a_2',
+ navn: 'a_2',
+ ansettelsesperioder,
+ organisasjonsnummer: '2',
+};
+
+const arbeidsgiverFlereAnsettelsesperioder: ArbeidsgiverMedAnsettelseperioder = {
+ key: 'a_4',
+ navn: 'a_4',
+ ansettelsesperioder: [
+ ISODateRangeToDateRange('2022-01-01/2023-02-01'),
+ ISODateRangeToDateRange('2023-02-01/2023-03-01'),
+ ],
+ organisasjonsnummer: '4',
+} as ArbeidsgiverMedAnsettelseperioder;
const arbeidstaker1: K9SakArbeidstaker = { organisasjonsnummer: '1' } as K9SakArbeidstaker;
const arbeidstaker2: K9SakArbeidstaker = { organisasjonsnummer: '2' } as K9SakArbeidstaker;
@@ -29,41 +50,49 @@ describe('tilgangskontroll', () => {
const tillattEndringsperiode = ISODateRangeToDateRange('2022-01-01/2023-03-01');
it('stopper ved ingen sak', () => {
- const result = tilgangskontroll([], tillattEndringsperiode);
+ const result = tilgangskontroll([], tillattEndringsperiode, []);
expect(result.kanBrukeSøknad).toBeFalsy();
});
it('stopper hvis bruker har flere enn én sak', () => {
- const result = tilgangskontroll([true, false] as any, tillattEndringsperiode);
+ const result = tilgangskontroll([true, false] as any, tillattEndringsperiode, []);
expect(result.kanBrukeSøknad).toBeFalsy();
});
});
-describe('harArbeidsgiverUtenArbeidstakerK9Sak', () => {
- it('returnerer true hvis arbeidsgiver ikke har arbeidsaktivitet i sak', () => {
- const result = tilgangskontrollUtils.harArbeidsgiverUtenArbeidsaktivitet(
- [arbeidsgiver3],
+describe('harFlereAnsettelsesforholdHosUkjentArbeidsgiver', () => {
+ /** TODO - oppdatere */
+ it('returnerer true hvis arbeidsgiver ikke har arbeidsaktivitet i sak og har flere ansettelseperioder', () => {
+ const result = tilgangskontrollUtils.harFlereAnsettelsesforholdHosUkjentArbeidsgiver(
+ [arbeidsgiverFlereAnsettelsesperioder],
[arbeidstaker1, arbeidstaker2],
);
expect(result).toBeTruthy();
});
it('returnerer false hvis alle arbeidsgivere har arbeidsaktivitet i sak', () => {
- const result = tilgangskontrollUtils.harArbeidsgiverUtenArbeidsaktivitet(
+ const result = tilgangskontrollUtils.harFlereAnsettelsesforholdHosUkjentArbeidsgiver(
[arbeidsgiver1, arbeidsgiver2],
[arbeidstaker1, arbeidstaker2],
);
expect(result).toBeFalsy();
});
+ it('returnerer true hvis arbeidsgiver ikke har arbeidsaktivitet i sak men har kun én ansettelseperiode', () => {
+ const result = tilgangskontrollUtils.harFlereAnsettelsesforholdHosUkjentArbeidsgiver(
+ [arbeidsgiver1],
+ [arbeidstaker1],
+ );
+ expect(result).toBeFalsy();
+ });
});
describe('harSakSøknadsperiodeInnenforTillattEndringsperiode', () => {
- const tillatEndringsperiode = ISODateRangeToDateRange('2022-01-02/2022-02-01');
+ const tillattEndringsperiode = ISODateRangeToDateRange('2022-01-02/2022-02-01');
const søknadsperiodeUtenfor: DateRange = ISODateRangeToDateRange('2022-01-01/2022-01-01');
const søknadsperiodeInnenfor: DateRange = ISODateRangeToDateRange('2022-01-02/2022-02-01');
it('returnerer true hvis søknadsperioder er innenfor tillatt endringsperiode', () => {
const result = tilgangskontrollUtils.harSøknadsperiodeInnenforTillattEndringsperiode(
søknadsperiodeInnenfor,
- tillatEndringsperiode,
+ tillattEndringsperiode,
);
expect(result).toBeTruthy();
});
@@ -71,7 +100,7 @@ describe('harSakSøknadsperiodeInnenforTillattEndringsperiode', () => {
it('returnerer false hvis søknadsperioder er før tillatt endringsperiode', () => {
const result = tilgangskontrollUtils.harSøknadsperiodeInnenforTillattEndringsperiode(
søknadsperiodeUtenfor,
- tillatEndringsperiode,
+ tillattEndringsperiode,
);
expect(result).toBeFalsy();
});
@@ -146,3 +175,32 @@ describe('ingenTilgangMeta', () => {
expect(result.erSN).toBeTruthy();
});
});
+
+describe('slutterOgStarterHosArbeidsgiverSammeUke', () => {
+ const uke2: DateRange = ISODateRangeToDateRange('2025-01-06/2025-01-12');
+ const uke4: DateRange = ISODateRangeToDateRange('2025-01-20/2025-01-26');
+ const uke3ManOns: DateRange = ISODateRangeToDateRange('2025-01-13/2025-01-15');
+ const uke3TorFre: DateRange = ISODateRangeToDateRange('2025-01-16/2025-01-17');
+ const uke3FreSøn: DateRange = ISODateRangeToDateRange('2025-01-17/2025-01-19');
+
+ it('returnerer false hvis det ikke er noen ansettelsesperiode', () => {
+ expect(tilgangskontrollUtils.perioderSlutterOgStarterSammeUkeMedOpphold([])).toBeFalsy();
+ });
+ it('returnerer false hvis det bare er én ansettelsesperiode', () => {
+ expect(tilgangskontrollUtils.perioderSlutterOgStarterSammeUkeMedOpphold([uke2])).toBeFalsy();
+ });
+ it('returnerer false hvis det to ansettelsesperiode med én uke mellom', () => {
+ expect(tilgangskontrollUtils.perioderSlutterOgStarterSammeUkeMedOpphold([uke2, uke4])).toBeFalsy();
+ });
+ it('returnerer false hvis det to ansettelsesperiode med er sammenhengende', () => {
+ expect(tilgangskontrollUtils.perioderSlutterOgStarterSammeUkeMedOpphold([uke3ManOns, uke3TorFre])).toBeFalsy();
+ });
+ it('returnerer true hvis to perioder slutter og starter innenfor samme uke men med opphold', () => {
+ expect(tilgangskontrollUtils.perioderSlutterOgStarterSammeUkeMedOpphold([uke3ManOns, uke3FreSøn])).toBeTruthy();
+ });
+ it('returnerer true hvis to det er mange perioder usortert og noen slutter og starter innenfor samme uke men med opphold', () => {
+ expect(
+ tilgangskontrollUtils.perioderSlutterOgStarterSammeUkeMedOpphold([uke2, uke4, uke3ManOns, uke3FreSøn]),
+ ).toBeTruthy();
+ });
+});
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/ukjentArbeidsgiverUtils.ts b/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/ukjentArbeidsgiverUtils.test.ts
similarity index 93%
rename from apps/endringsmelding-pleiepenger/src/app/utils/__tests__/ukjentArbeidsgiverUtils.ts
rename to apps/endringsmelding-pleiepenger/src/app/utils/__tests__/ukjentArbeidsgiverUtils.test.ts
index 7f4fb3d1ec..e38a0d8c9f 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/ukjentArbeidsgiverUtils.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/__tests__/ukjentArbeidsgiverUtils.test.ts
@@ -1,5 +1,4 @@
-import { DateRange } from '@navikt/sif-common-formik-ds';
-import { dateToISODate, ISODate, ISODateRangeToDateRange, ISODateToDate } from '@navikt/sif-common-utils';
+import { DateRange, dateToISODate, ISODate, ISODateRangeToDateRange, ISODateToDate } from '@navikt/sif-common-utils';
import { getSøknadsperioderForUkjentArbeidsforhold } from '../ukjentArbeidsforholdUtils';
describe('ukjentArbeidsforholdUtils', () => {
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/arbeidsukeUtils.ts b/apps/endringsmelding-pleiepenger/src/app/utils/arbeidsukeUtils.ts
index c81148c065..24f2442f21 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/arbeidsukeUtils.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/arbeidsukeUtils.ts
@@ -1,16 +1,12 @@
import {
dateFormatter,
DateRange,
- dateRangeToISODateRange,
durationToISODuration,
- durationUtils,
getDatesInDateRange,
ISODate,
- numberDurationAsDuration,
} from '@navikt/sif-common-utils';
-import { ArbeidstidEnkeltdagMap, Arbeidsuke, ArbeidsukeTimer } from '@types';
+import { ArbeidstidEnkeltdagMap, Arbeidsuke } from '@types';
import dayjs from 'dayjs';
-import { beregnSnittTimerPerDag } from './beregnUtils';
export const sorterArbeidsuker = (a1: Arbeidsuke, a2: Arbeidsuke): number => {
return dayjs(a1.periode.from).isBefore(a2.periode.from) ? -1 : 1;
@@ -56,43 +52,3 @@ export const arbeidsukerHarLikNormaltidPerDag = (arbeidsuker: Arbeidsuke[]): boo
export const getDagerFraEnkeltdagMap = (arbeidstidEnkeltdager: ArbeidstidEnkeltdagMap): ISODate[] => {
return Object.keys(arbeidstidEnkeltdager).sort();
};
-
-/**
- * Mapper periode og enkeltdager med arbeid om til Arbeidsuke. Summerer tid per dag om til timer per uke
- * @param periode DateRange for uken
- * @param arbeidstidEnkeltdagerIUken Enkeltdager med arbeidstid innenfor uken
- * @returns Arbeidsuke
- */
-export const getArbeidsukeFromEnkeltdagerIUken = (
- uke: DateRange,
- arbeidstidEnkeltdagerIUken: ArbeidstidEnkeltdagMap,
-): Arbeidsuke => {
- const dagerSøktFor = Object.keys(arbeidstidEnkeltdagerIUken);
- const antallDagerMedArbeidstid = dagerSøktFor.length;
- const normalt = dagerSøktFor.map((key) => arbeidstidEnkeltdagerIUken[key].normalt);
- const normaltSummertHeleUken = numberDurationAsDuration(durationUtils.summarizeDurations(normalt));
- const faktiskEnkeltdager = dagerSøktFor.map((key) => arbeidstidEnkeltdagerIUken[key].faktisk);
- const harFaktiskArbeidstid = faktiskEnkeltdager.some((f) => f !== undefined);
- const faktiskSummertHeleUken = harFaktiskArbeidstid
- ? numberDurationAsDuration(durationUtils.summarizeDurations(faktiskEnkeltdager))
- : undefined;
- const faktisk: ArbeidsukeTimer | undefined = faktiskSummertHeleUken
- ? {
- uke: faktiskSummertHeleUken,
- dag: beregnSnittTimerPerDag(faktiskSummertHeleUken, antallDagerMedArbeidstid),
- }
- : undefined;
-
- const arbeidsuke: Arbeidsuke = {
- isoDateRange: dateRangeToISODateRange(uke),
- periode: uke,
- arbeidstidEnkeltdager: arbeidstidEnkeltdagerIUken,
- faktisk,
- normalt: {
- uke: normaltSummertHeleUken,
- dag: beregnSnittTimerPerDag(normaltSummertHeleUken, antallDagerMedArbeidstid),
- },
- antallDagerMedArbeidstid: dagerSøktFor.length,
- };
- return arbeidsuke;
-};
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/getSakFromK9Sak.ts b/apps/endringsmelding-pleiepenger/src/app/utils/getSakFromK9Sak.ts
index 575af27f71..7ea66bbf6e 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/getSakFromK9Sak.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/getSakFromK9Sak.ts
@@ -11,10 +11,13 @@ import {
getIsoWeekDateRangeForDate,
getLastDateInDateRanges,
isDateInDateRange,
+ isDateInDateRanges,
ISODateRangeToDateRange,
ISODateToDate,
joinAdjacentDateRanges,
+ MaybeDateRange,
numberDurationAsDuration,
+ sortMaybeDateRange,
} from '@navikt/sif-common-utils';
import {
Arbeidsaktivitet,
@@ -23,7 +26,7 @@ import {
ArbeidsaktivitetFrilanser,
ArbeidsaktivitetSelvstendigNæringsdrivende,
ArbeidsaktivitetType,
- Arbeidsgiver,
+ ArbeidsgiverMedAnsettelseperioder,
ArbeidsgiverIkkeFunnetError,
ArbeidstidEnkeltdagMap,
Arbeidsuke,
@@ -62,7 +65,7 @@ interface _PeriodisertK9FormatArbeidstidPerioder {
*/
export const getSakFromK9Sak = (
k9sak: K9Sak,
- alleArbeidsgivere: Arbeidsgiver[],
+ alleArbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
tillattEndringsperiode: DateRange,
): Sak => {
const { arbeidstakerList, frilanserArbeidstidInfo, selvstendigNæringsdrivendeArbeidstidInfo } =
@@ -135,8 +138,8 @@ export const getSakFromK9Sak = (
/** Henter utk9SakArbeidstakere med arbeidsgiver funnet i AA-reg */
export const getArbeidsaktiviteterMedKjentArbeidsgiver = (
k9SakArbeidstakere: K9SakArbeidstaker[],
- arbeidsgivere: Arbeidsgiver[],
-) => {
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
+): K9SakArbeidstaker[] => {
return k9SakArbeidstakere.filter((a) =>
arbeidsgivere.some((arbg) => arbg.organisasjonsnummer === a.organisasjonsnummer),
);
@@ -145,7 +148,7 @@ export const getArbeidsaktiviteterMedKjentArbeidsgiver = (
/** Henter utk9SakArbeidstakere hvor arbeidsgiver IKKE er funnet i AA-reg */
export const getArbeidsaktiviteterMedUkjentArbeidsgiver = (
k9SakArbeidstakere: K9SakArbeidstaker[],
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
) => {
return k9SakArbeidstakere.filter(
(a) => arbeidsgivere.some((arbg) => arbg.organisasjonsnummer === a.organisasjonsnummer) === false,
@@ -160,11 +163,13 @@ export const getArbeidsaktiviteterMedUkjentArbeidsgiver = (
*/
const getEndringsperiodeForArbeidsgiver = (
tillattEndringsperiode: DateRange,
- arbeidsgiver: Arbeidsgiver,
+ arbeidsgiver: ArbeidsgiverMedAnsettelseperioder,
): DateRange => {
+ const { ansettelsesperioder } = arbeidsgiver;
+ const sisteAnsattTom = ansettelsesperioder.sort(sortMaybeDateRange).reverse()[0]?.to;
return {
...tillattEndringsperiode,
- to: arbeidsgiver.ansattTom || tillattEndringsperiode.to,
+ to: sisteAnsattTom || tillattEndringsperiode.to,
};
};
@@ -282,17 +287,25 @@ const fjernArbeidstidEnkeltdagerUtenforPeriode = (
return enkeltdagerMap;
};
+const getDagerIkkeAnsattIPeriode = (periode: DateRange, ansettelsesperioder?: DateRange[]): Date[] => {
+ if (!ansettelsesperioder) {
+ return [];
+ }
+ return getDatesInDateRange(periode).filter((d) => !isDateInDateRanges(d, ansettelsesperioder));
+};
+
/**
* Mapper periode og enkeltdager med arbeid om til Arbeidsuke. Summerer tid per dag om til timer per uke
- * @param periode DateRange for uken
+ * @param ansattUke DateRange for uken, justert ned til perioden en er ansatt
* @param arbeidstidEnkeltdagerIUken Enkeltdager med arbeidstid
* @returns Arbeidsuke
*/
-const getArbeidsukeFromEnkeltdagerIUken = (
- periode: DateRange,
+export const getArbeidsukeFromEnkeltdagerIUken = (
+ ansattUke: DateRange,
arbeidstidEnkeltdager: ArbeidstidEnkeltdagMap,
): Arbeidsuke => {
- const arbeidstidEnkeltdagerIUken = fjernArbeidstidEnkeltdagerUtenforPeriode(periode, arbeidstidEnkeltdager);
+ /** Forsikre seg om at ingen enkeltdager er utenfor uken */
+ const arbeidstidEnkeltdagerIUken = fjernArbeidstidEnkeltdagerUtenforPeriode(ansattUke, arbeidstidEnkeltdager);
const dagerSøktFor = Object.keys(arbeidstidEnkeltdagerIUken);
const antallDagerMedArbeidstid = dagerSøktFor.length;
const faktisk = dagerSøktFor.map((key) => arbeidstidEnkeltdagerIUken[key].faktisk);
@@ -301,9 +314,11 @@ const getArbeidsukeFromEnkeltdagerIUken = (
const faktiskSummertHeleUken = numberDurationAsDuration(durationUtils.summarizeDurations(faktisk));
const arbeidsuke: Arbeidsuke = {
- isoDateRange: dateRangeToISODateRange(periode),
- periode: periode,
+ isoDateRange: dateRangeToISODateRange(ansattUke),
+ periode: ansattUke,
arbeidstidEnkeltdager: arbeidstidEnkeltdagerIUken,
+ dagerSøktFor: dagerSøktFor.map(ISODateToDate),
+ antallDagerMedArbeidstid: dagerSøktFor.length,
faktisk: {
uke: faktiskSummertHeleUken,
dag: beregnSnittTimerPerDag(faktiskSummertHeleUken, antallDagerMedArbeidstid),
@@ -312,33 +327,39 @@ const getArbeidsukeFromEnkeltdagerIUken = (
uke: normaltSummertHeleUken,
dag: beregnSnittTimerPerDag(normaltSummertHeleUken, antallDagerMedArbeidstid),
},
- antallDagerMedArbeidstid: dagerSøktFor.length,
};
return arbeidsuke;
};
-const setArbeidsukeStartdatoTilFørsteDagSøktFor = (arbeidsuke: Arbeidsuke): Arbeidsuke => {
- const dagerSøktFor = getDagerFraEnkeltdagMap(arbeidsuke.arbeidstidEnkeltdager);
- const periode: DateRange = { ...arbeidsuke.periode, from: ISODateToDate(dagerSøktFor[0]) };
- return {
- ...arbeidsuke,
- periode,
- isoDateRange: dateRangeToISODateRange(periode),
- };
-};
-
-const setArbeidsukeSluttdatoTilSisteDagSøktFor = (arbeidsuke: Arbeidsuke): Arbeidsuke => {
+/** Fjerner dager det ikke er søkt for i en arbeidsuke. Men inkluderer lørdag og søndag */
+const trimArbeidsukePeriodeTilDagerSøktForEllerHelUke = (
+ arbeidsuke: Arbeidsuke,
+ erSisteUkeIPeriode: boolean,
+ ansettelsesperioder: DateRange[],
+): Arbeidsuke => {
const dagerSøktFor = getDagerFraEnkeltdagMap(arbeidsuke.arbeidstidEnkeltdager);
const periode: DateRange = {
- ...arbeidsuke.periode,
+ from: ISODateToDate(dagerSøktFor[0]),
to: ISODateToDate(dagerSøktFor[dagerSøktFor.length - 1]),
};
+ if (!erSisteUkeIPeriode && dayjs(periode.to).isoWeekday() === 5) {
+ const søndag = dayjs(periode.to).add(2, 'day').toDate();
+ const lørdag = dayjs(periode.to).add(1, 'day').toDate();
+ if (isDateInDateRanges(søndag, ansettelsesperioder)) {
+ // Kontroller om en er ansatt søndag
+ periode.to = søndag;
+ } else if (isDateInDateRanges(lørdag, ansettelsesperioder)) {
+ // Kontroller om en er ansatt lørdag
+ periode.to = lørdag;
+ }
+ }
return {
...arbeidsuke,
periode,
isoDateRange: dateRangeToISODateRange(periode),
};
};
+
/**
* Grupperer arbeidsdager inn i uker
* Hver uke er hele uker, inklusiv helg, med unntak av første og siste uke som
@@ -347,7 +368,10 @@ const setArbeidsukeSluttdatoTilSisteDagSøktFor = (arbeidsuke: Arbeidsuke): Arbe
* @param enkeltdager
* @returns Array av arbeidsuker
*/
-const getArbeidsukerFromEnkeltdager = (enkeltdager: ArbeidstidEnkeltdagMap): Arbeidsuke[] => {
+const getArbeidsukerFromEnkeltdager = (
+ enkeltdager: ArbeidstidEnkeltdagMap,
+ ansettelsesperioder: DateRange[],
+): Arbeidsuke[] => {
const ukerMap: {
[key: string]: {
dagerMap: ArbeidstidEnkeltdagMap;
@@ -360,7 +384,17 @@ const getArbeidsukerFromEnkeltdager = (enkeltdager: ArbeidstidEnkeltdagMap): Arb
const { faktisk, normalt } = enkeltdager[isoDate];
/** Midlertidig nøkkel som tar hele uken */
- const isoDateRange = dateRangeToISODateRange(getIsoWeekDateRangeForDate(date));
+ const uke = getIsoWeekDateRangeForDate(date);
+ /** Litt tungvindt måte å fjerne dager på, men virker frem til hele løsningen tar bedre høyde for ansettelsesperioder */
+ const dagerAnsattIUken = getDatesInDateRange(uke).filter((d) => isDateInDateRanges(d, ansettelsesperioder));
+ if (dagerAnsattIUken.length === 0) {
+ throw new Error('Dag utenfor ansettelsesperiode');
+ }
+ const ansattUke: DateRange = {
+ from: dagerAnsattIUken[0],
+ to: dagerAnsattIUken[dagerAnsattIUken.length - 1],
+ };
+ const isoDateRange = dateRangeToISODateRange(ansattUke);
if (ukerMap[isoDateRange] === undefined) {
ukerMap[isoDateRange] = {
dagerMap: {},
@@ -380,8 +414,17 @@ const getArbeidsukerFromEnkeltdager = (enkeltdager: ArbeidstidEnkeltdagMap): Arb
});
/** Juster start og sluttdato til første og siste dag søkt for (dag med arbeidstid) */
- arbeidsuker[0] = setArbeidsukeStartdatoTilFørsteDagSøktFor(arbeidsuker[0]);
- arbeidsuker[arbeidsuker.length - 1] = setArbeidsukeSluttdatoTilSisteDagSøktFor(arbeidsuker[arbeidsuker.length - 1]);
+ const antallUker = arbeidsuker.length;
+ if (antallUker > 0) {
+ arbeidsuker.forEach((arbeidsuke, index) => {
+ const erSisteUke = index === antallUker - 1;
+ arbeidsuker[index] = trimArbeidsukePeriodeTilDagerSøktForEllerHelUke(
+ arbeidsuke,
+ erSisteUke,
+ ansettelsesperioder,
+ );
+ });
+ }
return arbeidsuker;
};
@@ -394,14 +437,25 @@ const getArbeidsukerFromEnkeltdager = (enkeltdager: ArbeidstidEnkeltdagMap): Arb
const getPerioderMedArbeidstid = (
arbeidstidPeriodeMap: K9SakArbeidstidPeriodeMap,
tillattEndringsperiode: DateRange,
+ ansettelsesperioderInnenforEndringsperiode: DateRange[],
): PeriodeMedArbeidstid[] => {
const perioder = trimArbeidstidTilTillattEndringsperiode(arbeidstidPeriodeMap, tillattEndringsperiode);
return grupperArbeidstidPerioder(perioder).map((gruppertPeriode) => {
const enkeltdagerIPeriode = getArbeidstidEnkeltdagMapFromPerioder(gruppertPeriode.arbeidstidPerioder);
- const arbeidsuker = getArbeidsukerMapFromArbeidsuker(getArbeidsukerFromEnkeltdager(enkeltdagerIPeriode));
+ const arbeidsdagerSomKanEndres = getArbeidsdagerInneforEndringsperiodeOgAnsettelsesperioder(
+ enkeltdagerIPeriode,
+ tillattEndringsperiode,
+ ansettelsesperioderInnenforEndringsperiode,
+ );
+ const uker = getArbeidsukerFromEnkeltdager(
+ arbeidsdagerSomKanEndres,
+ ansettelsesperioderInnenforEndringsperiode,
+ );
+ const periodeSomKanEndres: DateRange = { from: uker[0].periode.from, to: uker[uker.length - 1].periode.to };
+ const arbeidsuker = getArbeidsukerMapFromArbeidsuker(uker);
const periode: PeriodeMedArbeidstid = {
- ...gruppertPeriode.periode,
+ ...periodeSomKanEndres,
arbeidsuker,
};
return periode;
@@ -449,12 +503,17 @@ const harPerioderEtterEndringsperiode = (
const getArbeidsaktivitetPerioderPart = (
arbeidstidPerioder: K9SakArbeidstidPeriodeMap,
endringsperiode: DateRange,
+ ansettelsesperioderInnenforEndringsperiode: DateRange[],
): Pick<
Arbeidsaktivitet,
'perioderMedArbeidstid' | 'harPerioderEtterTillattEndringsperiode' | 'harPerioderFørTillattEndringsperiode'
> => {
return {
- perioderMedArbeidstid: getPerioderMedArbeidstid(arbeidstidPerioder, endringsperiode),
+ perioderMedArbeidstid: getPerioderMedArbeidstid(
+ arbeidstidPerioder,
+ endringsperiode,
+ ansettelsesperioderInnenforEndringsperiode,
+ ),
harPerioderFørTillattEndringsperiode: harPerioderFørEndringsperiode(arbeidstidPerioder, endringsperiode),
harPerioderEtterTillattEndringsperiode: harPerioderEtterEndringsperiode(arbeidstidPerioder, endringsperiode),
};
@@ -469,7 +528,7 @@ const getArbeidsaktivitetPerioderPart = (
*/
const getArbeidsaktivitetArbeidstaker = (
arbeidstaker: K9SakArbeidstaker,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
endringsperiode: DateRange,
): ArbeidsaktivitetArbeidstaker => {
const {
@@ -486,16 +545,39 @@ const getArbeidsaktivitetArbeidstaker = (
throw error;
}
const endringsperiodeForArbeidsgiver = getEndringsperiodeForArbeidsgiver(endringsperiode, arbeidsgiver);
+ const ansettelsesperioderInnenforEndringsperiode = ensureAnsettelsesperioderIsValidDateRange(
+ arbeidsgiver.ansettelsesperioder,
+ endringsperiode,
+ );
return {
key: arbeidsgiver.key,
arbeidsgiver,
type: ArbeidsaktivitetType.arbeidstaker,
navn: arbeidsgiver.navn,
erUkjentArbeidsforhold: false,
- ...getArbeidsaktivitetPerioderPart(perioder, endringsperiodeForArbeidsgiver),
+ ansettelsesperioderInnenforEndringsperiode,
+ ...getArbeidsaktivitetPerioderPart(
+ perioder,
+ endringsperiodeForArbeidsgiver,
+ ansettelsesperioderInnenforEndringsperiode,
+ ),
};
};
+/** Går gjennom og endrer ansettelsesperioder til gyldig DateRange
+ * Bruker tillattEndringsperiode som erstatning hvis ansettelsesperiode mangler daga
+ */
+
+const ensureAnsettelsesperioderIsValidDateRange = (
+ ansettelsesperioder: MaybeDateRange[],
+ endringsperiode: DateRange,
+): DateRange[] => {
+ return ansettelsesperioder.map((a) => ({
+ from: a.from || endringsperiode.from,
+ to: a.to || endringsperiode.to,
+ }));
+};
+
/**
*
* @param frilanserArbeidstidInfo
@@ -511,7 +593,8 @@ const getArbeidsaktivitetFrilanser = (
key: ArbeidsaktivitetType.frilanser,
type: ArbeidsaktivitetType.frilanser,
navn: 'Frilanser',
- ...getArbeidsaktivitetPerioderPart(frilanserArbeidstidInfo.perioder, endringsperiode),
+ ansettelsesperioderInnenforEndringsperiode: [], // Brukes ikke for frilanser
+ ...getArbeidsaktivitetPerioderPart(frilanserArbeidstidInfo.perioder, endringsperiode, [endringsperiode]),
}
: undefined;
};
@@ -531,30 +614,53 @@ const getArbeidsaktivitetSelvstendigNæringsdrivende = (
key: ArbeidsaktivitetType.selvstendigNæringsdrivende,
type: ArbeidsaktivitetType.selvstendigNæringsdrivende,
navn: 'Selvstendig næringsdrivende',
- ...getArbeidsaktivitetPerioderPart(selvstendigNæringsdrivendeArbeidstidInfo.perioder, endringsperiode),
+ ansettelsesperioderInnenforEndringsperiode: [], // Brukes ikke for SN
+ ...getArbeidsaktivitetPerioderPart(selvstendigNæringsdrivendeArbeidstidInfo.perioder, endringsperiode, [
+ endringsperiode,
+ ]),
}
: undefined;
};
+/**
+ * Sjekker om en er ansatt hos arbeidsgiver innenfor søknadsperioder
+ * @param arbeidsgiver
+ * @param søknadsperioder
+ * @returns boolean
+ */
+const erArbeidsgiverInnenforSøknadsperioder = (
+ arbeidsgiver: ArbeidsgiverMedAnsettelseperioder,
+ søknadsperioder: DateRange[],
+): boolean => {
+ const { ansettelsesperioder = [] } = arbeidsgiver;
+ return ansettelsesperioder.some((ansettelsesperiode) =>
+ erAnsattPeriodeInnenforSøknadsperioder(ansettelsesperiode, søknadsperioder),
+ );
+};
+
/**
* Sjekker om ansatt-periode hos arbeidsgiver er innenfor søknadsperioder
* @param arbeidsgiver
* @param søknadsperioder
* @returns boolean
*/
-const erArbeidsgiverInnenforSøknadsperioder = (arbeidsgiver: Arbeidsgiver, søknadsperioder: DateRange[]): boolean => {
+const erAnsattPeriodeInnenforSøknadsperioder = (
+ ansettelsesperiode: MaybeDateRange,
+ søknadsperioder: DateRange[],
+): boolean => {
const sisteSøknadsdag = getLastDateInDateRanges(søknadsperioder);
- if (!arbeidsgiver.ansattFom || !sisteSøknadsdag) {
+
+ if (!ansettelsesperiode.from || !sisteSøknadsdag) {
return false;
}
- if (!arbeidsgiver.ansattTom) {
- return dayjs(arbeidsgiver.ansattFom).isSameOrBefore(sisteSøknadsdag);
+ if (!ansettelsesperiode.to) {
+ return dayjs(ansettelsesperiode.from).isSameOrBefore(sisteSøknadsdag);
}
- const ansattPeriode: DateRange = {
- from: arbeidsgiver.ansattFom,
- to: arbeidsgiver.ansattTom || sisteSøknadsdag,
+ const periode: DateRange = {
+ from: ansettelsesperiode.from,
+ to: ansettelsesperiode.to || sisteSøknadsdag,
};
- return søknadsperioder.some((søknadsperiode) => dateRangesCollide([søknadsperiode, ansattPeriode]));
+ return søknadsperioder.some((søknadsperiode) => dateRangesCollide([søknadsperiode, periode]));
};
/**
@@ -603,4 +709,23 @@ export const _getSakFromK9Sak = {
getArbeidsukeFromEnkeltdagerIUken,
grupperArbeidstidPerioder,
trimArbeidstidTilTillattEndringsperiode,
+ getDagerIkkeAnsattIPeriode,
+};
+
+const getArbeidsdagerInneforEndringsperiodeOgAnsettelsesperioder = (
+ arbeidsdager: ArbeidstidEnkeltdagMap,
+ tillattEndringsperiode: DateRange,
+ ansettelsesperioderInnenforEndringsperiode: DateRange[],
+) => {
+ const arbeidsdagerInnenforPerioder: ArbeidstidEnkeltdagMap = {};
+ for (const [dato, info] of Object.entries(arbeidsdager)) {
+ const d = ISODateToDate(dato);
+ if (
+ isDateInDateRange(d, tillattEndringsperiode) &&
+ isDateInDateRanges(d, ansettelsesperioderInnenforEndringsperiode)
+ ) {
+ arbeidsdagerInnenforPerioder[dato] = info;
+ }
+ }
+ return arbeidsdagerInnenforPerioder;
};
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/getSakOgArbeidsgivereDebugInfo.ts b/apps/endringsmelding-pleiepenger/src/app/utils/getSakOgArbeidsgivereDebugInfo.ts
index b255e616a1..cd7fc5a92b 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/getSakOgArbeidsgivereDebugInfo.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/getSakOgArbeidsgivereDebugInfo.ts
@@ -1,5 +1,5 @@
import { DateRange } from '@navikt/sif-common-utils';
-import { Arbeidsgiver, K9Sak, K9SakArbeidstaker, Sak } from '@types';
+import { ArbeidsgiverMedAnsettelseperioder, K9Sak, K9SakArbeidstaker, Sak } from '@types';
import { maskString } from './maskString';
const maskK9Arbeidstaker = (k9Arbeidstaker: K9SakArbeidstaker) => {
@@ -39,10 +39,9 @@ const maskSak = (sak: Sak) => {
};
};
-const maskArbeidsgivere = (arbeidsgivere: Arbeidsgiver[]) => {
+const maskArbeidsgivere = (arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[]) => {
return arbeidsgivere.map((a) => ({
- ansattFom: a.ansattFom,
- ansattTom: a.ansattTom,
+ ansettelsesperioder: a.ansettelsesperioder,
a: maskString(a.key),
}));
};
@@ -50,7 +49,7 @@ const maskArbeidsgivere = (arbeidsgivere: Arbeidsgiver[]) => {
export const getSakOgArbeidsgivereDebugInfo = (
k9sak: K9Sak,
sak: Sak,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
endringsperiode: DateRange,
) => {
return {
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/initialDataUtils.ts b/apps/endringsmelding-pleiepenger/src/app/utils/initialDataUtils.ts
index 7943fbf04f..fd3034e9fe 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/initialDataUtils.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/initialDataUtils.ts
@@ -1,5 +1,8 @@
-import { DateRange } from '@navikt/sif-common-utils';
+import { DateRange, ISODateToDate, MaybeDateRange } from '@navikt/sif-common-utils';
import dayjs from 'dayjs';
+import { ArbeidsgiverMedAnsettelseperioder } from '../types';
+import { getArbeidsgiverKey } from './arbeidsgiverUtils';
+import { AARegArbeidsgiverOrganisasjon } from '../api/endpoints/arbeidsgivereEndpoint';
export const getPeriodeForArbeidsgiverOppslag = (
dateRangeAlleSaker: DateRange,
@@ -14,3 +17,28 @@ export const getPeriodeForArbeidsgiverOppslag = (
}
return dateRange;
};
+
+export const getArbeidsgivereFromArbeidsgiverOrganisasjoner = (
+ organisasjoner: AARegArbeidsgiverOrganisasjon[],
+): ArbeidsgiverMedAnsettelseperioder[] => {
+ const aaArbeidsgivereMap = new Map();
+ (organisasjoner || []).forEach((a) => {
+ const ansettelsesperiode: MaybeDateRange = {
+ from: a.ansattFom ? ISODateToDate(a.ansattFom) : undefined,
+ to: a.ansattTom ? ISODateToDate(a.ansattTom) : undefined,
+ };
+
+ if (aaArbeidsgivereMap.has(a.organisasjonsnummer)) {
+ aaArbeidsgivereMap.get(a.organisasjonsnummer)!.ansettelsesperioder!.push(ansettelsesperiode);
+ } else {
+ aaArbeidsgivereMap.set(a.organisasjonsnummer, {
+ key: getArbeidsgiverKey(a.organisasjonsnummer),
+ organisasjonsnummer: a.organisasjonsnummer,
+ navn: a.navn,
+ ansettelsesperioder: [ansettelsesperiode],
+ });
+ }
+ });
+
+ return Array.from(aaArbeidsgivereMap.values());
+};
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/k9SakUtils.ts b/apps/endringsmelding-pleiepenger/src/app/utils/k9SakUtils.ts
index 7ca7be4b32..88ced6093d 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/k9SakUtils.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/k9SakUtils.ts
@@ -1,5 +1,5 @@
import { DateRange, dateRangeUtils, getDateRangeFromDateRanges } from '@navikt/sif-common-utils';
-import { Arbeidsgiver, K9Sak, K9SakArbeidstaker } from '@types';
+import { ArbeidsgiverMedAnsettelseperioder, K9Sak, K9SakArbeidstaker } from '@types';
import dayjs from 'dayjs';
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter';
@@ -15,7 +15,7 @@ export const getSamletDateRangeForK9Saker = (saker: K9Sak[]): DateRange | undefi
};
export const finnesArbeidsgiverIK9Sak = (
- arbeidsgiver: Arbeidsgiver,
+ arbeidsgiver: ArbeidsgiverMedAnsettelseperioder,
arbeidsgivereISak: K9SakArbeidstaker[],
): boolean => {
return arbeidsgivereISak.some(
diff --git "a/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/__tests__/getDataBruktTilUtledning.test.ts" "b/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/__tests__/getDataBruktTilUtledning.test.ts"
index de4e266a2d..4e21bf310f 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/__tests__/getDataBruktTilUtledning.test.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/__tests__/getDataBruktTilUtledning.test.ts"
@@ -2,7 +2,7 @@ import { ISODateToDate } from '@navikt/sif-common-utils';
import {
ArbeiderIPeriodenSvar,
ArbeidsforholdAktivt,
- Arbeidsgiver,
+ ArbeidsgiverMedAnsettelseperioder,
ArbeidstidSøknadsdata,
TimerEllerProsent,
} from '../../../types';
@@ -31,12 +31,12 @@ describe('getDataBruktTilUtledningAnnetData', () => {
});
describe('getUkjentArbeidsforholdApiDataFromSøknadsdata', () => {
- const arbeidsgivere: Arbeidsgiver[] = [
+ const arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[] = [
{
organisasjonsnummer: '123',
key: 'a_123',
navn: 'Arbeidsgibvernavn',
- ansattFom: ISODateToDate('2001-01-01'),
+ ansettelsesperioder: [{ from: ISODateToDate('2001-01-01') }],
},
];
const arbeidstid: ArbeidstidSøknadsdata = {
@@ -58,11 +58,11 @@ describe('getUkjentArbeidsforholdApiDataFromSøknadsdata', () => {
});
describe('mapArbeidsforholdToArbeidsforholdApiData', () => {
- const arbeidsgiver: Arbeidsgiver = {
+ const arbeidsgiver: ArbeidsgiverMedAnsettelseperioder = {
organisasjonsnummer: '123',
key: 'a_123',
navn: 'Arbeidsgibvernavn',
- ansattFom: ISODateToDate('2001-01-01'),
+ ansettelsesperioder: [{ from: ISODateToDate('2001-01-01') }],
};
it('returnerer riktig hvis en ikke er ansatt i arbeidsforholdet', () => {
diff --git "a/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getApiDataFromS\303\270knadsdata.ts" "b/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getApiDataFromS\303\270knadsdata.ts"
index ce5651523a..a351d43ce2 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getApiDataFromS\303\270knadsdata.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getApiDataFromS\303\270knadsdata.ts"
@@ -1,15 +1,16 @@
import { dateToISODate } from '@navikt/sif-common-utils';
-import { Arbeidsgiver, Sak, SøknadApiData, Søknadsdata, ValgteEndringer } from '@types';
+import { ArbeidsgiverMedAnsettelseperioder, Sak, SøknadApiData, Søknadsdata, ValgteEndringer } from '@types';
import { getArbeidstidApiDataFromSøknadsdata } from './getArbeidstidApiDataFromSøknadsdata';
import { getDataBruktTilUtledningAnnetDataApiData, getDataBruktTilUtledningApiData } from './getDataBruktTilUtledning';
import { getLovbestemtFerieApiDataFromSøknadsdata } from './getLovbestemtFerieApiDataFraSøknadsdata';
+import { getEndringsdato, getTillattEndringsperiode } from '../endringsperiode';
export const getApiDataFromSøknadsdata = (
søkerNorskIdent: string,
søknadsdata: Søknadsdata,
sak: Sak,
valgteEndringer: ValgteEndringer,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
): SøknadApiData | undefined => {
const { id, arbeidstid, lovbestemtFerie, ukjentArbeidsforhold } = søknadsdata;
@@ -31,6 +32,7 @@ export const getApiDataFromSøknadsdata = (
lovbestemtFerie: lovbestemtFerie ? getLovbestemtFerieApiDataFromSøknadsdata(lovbestemtFerie) : undefined,
arbeidstid: arbeidstid
? getArbeidstidApiDataFromSøknadsdata(
+ getTillattEndringsperiode(getEndringsdato()),
sak.søknadsperioder,
arbeidstid.arbeidsaktivitet,
sak.arbeidsaktiviteter,
diff --git "a/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getArbeidstidApiDataFromS\303\270knadsdata.ts" "b/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getArbeidstidApiDataFromS\303\270knadsdata.ts"
index 1b0f52d18d..319fd37e8a 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getArbeidstidApiDataFromS\303\270knadsdata.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getArbeidstidApiDataFromS\303\270knadsdata.ts"
@@ -13,7 +13,7 @@ import {
Arbeidsaktiviteter,
ArbeidsaktivitetType,
ArbeiderIPeriodenSvar,
- Arbeidsgiver,
+ ArbeidsgiverMedAnsettelseperioder,
ArbeidstakerApiData,
ArbeidstidApiData,
ArbeidstidEndring,
@@ -48,9 +48,9 @@ const getEndretArbeidstid = (
): ArbeidstidPeriodeApiDataMap => {
const perioderMedEndretArbeidstid: ArbeidstidPeriodeApiDataMap = {};
- const endringKeys = Object.keys(endringUkeMap).sort();
+ const endringUkeKeys = Object.keys(endringUkeMap).sort();
- endringKeys.forEach((isoDateRange) => {
+ endringUkeKeys.forEach((isoDateRange) => {
const endring = endringUkeMap[isoDateRange];
const arbeidsuker = getAlleArbeidsukerIPerioder(arbeidsaktivitet.perioderMedArbeidstid);
const arbeidsuke = arbeidsuker[isoDateRange];
@@ -95,10 +95,11 @@ const getArbeidsaktivitetArbeidstidInfo = (
};
export const getArbeidstidApiDataFromSøknadsdata = (
+ endringsperiode: DateRange,
søknadsperioder: DateRange[],
arbeidsaktivitetEndring: ArbeidstidArbeidsaktivitetMap,
arbeidsaktiviteter: Arbeidsaktiviteter,
- arbeidsgivereIkkeISak: Arbeidsgiver[],
+ arbeidsgivereIkkeISak: ArbeidsgiverMedAnsettelseperioder[],
ukjentArbeidsforhold?: UkjentArbeidsforholdSøknadsdata,
): ArbeidstidApiData => {
const frilansAktivitetEndring = arbeidsaktivitetEndring[ArbeidsaktivitetType.frilanser]?.endringer;
@@ -148,6 +149,7 @@ export const getArbeidstidApiDataFromSøknadsdata = (
søknadsperioder,
arbeidsgiver,
arbeidsforhold,
+ endringsperiode,
);
const arbeidsuker = getArbeidsukerIArbeidsaktivitet(arbeidsaktivitet);
diff --git "a/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getDataBruktTilUtledning.ts" "b/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getDataBruktTilUtledning.ts"
index 9d89b43b0f..e1adc0c196 100644
--- "a/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getDataBruktTilUtledning.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/app/utils/s\303\270knadsdataToApiData/getDataBruktTilUtledning.ts"
@@ -2,7 +2,7 @@ import { durationToISODuration } from '@navikt/sif-common-utils';
import {
ArbeiderIPeriodenSvar,
Arbeidsforhold,
- Arbeidsgiver,
+ ArbeidsgiverMedAnsettelseperioder,
ArbeidstidSøknadsdata,
DataBruktTilUtledningApiData,
DataBruktTilUtledningApiDataAnnetData as DataBruktTilUtledningAnnetDataApiData,
@@ -15,7 +15,7 @@ import { getOrgNummerFromArbeidsgiverKey } from '../arbeidsgiverUtils';
export const getDataBruktTilUtledningApiData = (
ukjentArbeidsforhold: UkjentArbeidsforholdSøknadsdata | undefined,
arbeidstid: ArbeidstidSøknadsdata | undefined,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
): DataBruktTilUtledningApiData => {
return {
ukjenteArbeidsforhold: getUkjentArbeidsforholdApiDataFromSøknadsdata(
@@ -35,7 +35,7 @@ export const getDataBruktTilUtledningAnnetDataApiData = (
export const mapArbeidsforholdToArbeidsforholdApiData = (
arbeidsforhold: Arbeidsforhold,
- arbeidsgiver: Arbeidsgiver,
+ arbeidsgiver: ArbeidsgiverMedAnsettelseperioder,
arbeiderIPerioden?: ArbeiderIPeriodenSvar,
): UkjentArbeidsforholdApiData => {
const organisasjonsnummer = getOrgNummerFromArbeidsgiverKey(arbeidsforhold.arbeidsgiverKey);
@@ -63,7 +63,7 @@ export const mapArbeidsforholdToArbeidsforholdApiData = (
export const getUkjentArbeidsforholdApiDataFromSøknadsdata = (
ukjenteArbeidsforhold: Arbeidsforhold[] | undefined,
arbeidstid: ArbeidstidSøknadsdata | undefined,
- arbeidsgivere: Arbeidsgiver[],
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
): UkjentArbeidsforholdApiData[] => {
if (ukjenteArbeidsforhold === undefined) {
return [];
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/tilgangskontroll.ts b/apps/endringsmelding-pleiepenger/src/app/utils/tilgangskontroll.ts
index c6e621285e..68c819c4fa 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/tilgangskontroll.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/tilgangskontroll.ts
@@ -1,6 +1,6 @@
-import { DateRange, durationToDecimalDuration } from '@navikt/sif-common-utils';
+import { DateRange, durationToDecimalDuration, ensureDateRange, sortDateRange } from '@navikt/sif-common-utils';
import {
- Arbeidsgiver,
+ ArbeidsgiverMedAnsettelseperioder,
IngenTilgangÅrsak,
K9Sak,
K9SakArbeidstaker,
@@ -26,7 +26,11 @@ type TilgangTillatt = {
export type TilgangKontrollResultat = TilgangNektet | TilgangTillatt;
-export const tilgangskontroll = (saker: K9Sak[], tillattEndringsperiode: DateRange): TilgangKontrollResultat => {
+export const tilgangskontroll = (
+ saker: K9Sak[],
+ tillattEndringsperiode: DateRange,
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
+): TilgangKontrollResultat => {
/** Har ingen saker */
if (saker.length === 0) {
return {
@@ -57,6 +61,16 @@ export const tilgangskontroll = (saker: K9Sak[], tillattEndringsperiode: DateRan
ingenTilgangÅrsak.push(IngenTilgangÅrsak.harArbeidstidSomSelvstendigNæringsdrivende);
}
+ /** Bruker har ansettelsperioder hos samme arbeidsgiver som starter og stopper samme uke, med opphold mellom */
+ if (harAnsettelsesforholdSomStarterOgSlutterSammeUkeMedOpphold(sak, tillattEndringsperiode, arbeidsgivere)) {
+ ingenTilgangÅrsak.push(IngenTilgangÅrsak.enArbeidsgiverToAnsettelserSammeUkeMedOpphold);
+ }
+
+ /** Bruker har flere ansettelsperioder hos ukjent arbeidsgiver */
+ if (harFlereAnsettelsesforholdHosUkjentArbeidsgiver(arbeidsgivere, sak.ytelse.arbeidstid.arbeidstakerList)) {
+ ingenTilgangÅrsak.push(IngenTilgangÅrsak.harFlereAnsettelsesforholdHosUkjentArbeidsgiver);
+ }
+
if (ingenTilgangÅrsak.length > 0) {
return {
kanBrukeSøknad: false,
@@ -91,12 +105,16 @@ const getIngenTilgangMeta = (arbeidstid: K9SakArbeidstid): IngenTilgangMeta => {
};
};
-const harArbeidsgiverUtenArbeidsaktivitet = (
- arbeidsgivere: Arbeidsgiver[],
+const harFlereAnsettelsesforholdHosUkjentArbeidsgiver = (
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
k9SakArbeidstaker: K9SakArbeidstaker[] = [],
): boolean => {
return arbeidsgivere.some((arbeidsgiver) => {
- return finnesArbeidsgiverIK9Sak(arbeidsgiver, k9SakArbeidstaker) === false;
+ const erUkjentArbeidsgiver = finnesArbeidsgiverIK9Sak(arbeidsgiver, k9SakArbeidstaker) === false;
+ if (!erUkjentArbeidsgiver) {
+ return false;
+ }
+ return arbeidsgiver.ansettelsesperioder.length > 1;
});
};
@@ -114,8 +132,51 @@ const harSøknadsperiodeInnenforTillattEndringsperiode = (
: false;
};
+const harAnsettelsesforholdSomStarterOgSlutterSammeUkeMedOpphold = (
+ sak: K9Sak,
+ tillattEndringsperiode: DateRange,
+ arbeidsgivere: ArbeidsgiverMedAnsettelseperioder[],
+): boolean => {
+ const orgnrISak = (sak.ytelse.arbeidstid.arbeidstakerList || []).map((a) => a.organisasjonsnummer);
+ return arbeidsgivere
+ .filter((a) => orgnrISak.includes(a.organisasjonsnummer))
+ .some((arbeidsgiver) => {
+ const ansettelserInnenforEndringsperiode = arbeidsgiver.ansettelsesperioder.map((d) =>
+ ensureDateRange(d, tillattEndringsperiode),
+ );
+ return perioderSlutterOgStarterSammeUkeMedOpphold(ansettelserInnenforEndringsperiode);
+ });
+};
+
+/**
+ * Går gjennom array for å se om det er perioder som slutter og starter innenfor samme
+ * uke, og hvor det er opphold på en dag mellom periodene.
+ * @param ansettelsesperioder DateRange
+ * @returns boolean
+ */
+const perioderSlutterOgStarterSammeUkeMedOpphold = (ansettelsesperioder: DateRange[]) => {
+ return ansettelsesperioder.sort(sortDateRange).some((periode, index) => {
+ if (index === 0) {
+ return false;
+ }
+ const forrigePeriode = ansettelsesperioder[index - 1];
+
+ /** Slutter og starter periodene innenfor samme uke */
+ if (!dayjs(periode.from).isSame(dayjs(forrigePeriode.to), 'isoWeek')) {
+ return false;
+ }
+ /** Periodene er sammenhengende */
+ if (dayjs(periode.from).diff(forrigePeriode.to, 'day') === 1) {
+ return false;
+ }
+
+ return true;
+ });
+};
+
export const tilgangskontrollUtils = {
getIngenTilgangMeta,
- harArbeidsgiverUtenArbeidsaktivitet,
harSøknadsperiodeInnenforTillattEndringsperiode,
+ harFlereAnsettelsesforholdHosUkjentArbeidsgiver,
+ perioderSlutterOgStarterSammeUkeMedOpphold,
};
diff --git a/apps/endringsmelding-pleiepenger/src/app/utils/ukjentArbeidsforholdUtils.ts b/apps/endringsmelding-pleiepenger/src/app/utils/ukjentArbeidsforholdUtils.ts
index 9e07727350..c34c7c5399 100644
--- a/apps/endringsmelding-pleiepenger/src/app/utils/ukjentArbeidsforholdUtils.ts
+++ b/apps/endringsmelding-pleiepenger/src/app/utils/ukjentArbeidsforholdUtils.ts
@@ -3,6 +3,7 @@ import {
dateRangeToISODateRange,
dateToISODate,
Duration,
+ ensureDateRange,
getDateRangeFromDateRanges,
getDateRangesWithinDateRange,
getDatesInDateRange,
@@ -13,7 +14,7 @@ import {
Arbeidsaktivitet,
ArbeidsaktivitetType,
ArbeidsforholdAktivt,
- Arbeidsgiver,
+ ArbeidsgiverMedAnsettelseperioder,
ArbeidstidEnkeltdagMap,
ArbeidstidPerDag,
ArbeidsukeMap,
@@ -21,8 +22,9 @@ import {
UkjentArbeidsforholdSøknadsdata,
} from '@types';
import { ArbeidsaktivitetFormValuesMap } from '../søknad/steps/arbeidstid/ArbeidstidForm';
-import { getArbeidsukeFromEnkeltdagerIUken } from './arbeidsukeUtils';
+// import { getArbeidsukeFromEnkeltdagerIUken } from './arbeidsukeUtils';
import { beregnSnittTimerPerDag } from './beregnUtils';
+import { getArbeidsukeFromEnkeltdagerIUken } from './getSakFromK9Sak';
export const getSøknadsperioderForUkjentArbeidsforhold = (
søknadsperioder: DateRange[],
@@ -30,6 +32,7 @@ export const getSøknadsperioderForUkjentArbeidsforhold = (
ansattTom: Date | undefined,
): DateRange[] => {
const alleSøknadsperioder: DateRange = getDateRangeFromDateRanges(søknadsperioder);
+ /** TODO - sjekke denne opp mot flere ansattelsesperioder */
const ansettelsesperiode = {
from: ansattFom || alleSøknadsperioder.from,
to: ansattTom || alleSøknadsperioder.to,
@@ -39,15 +42,16 @@ export const getSøknadsperioderForUkjentArbeidsforhold = (
export const getPerioderMedArbeidstidForUkjentArbeidsforhold = (
søknadsperioder: DateRange[],
- { ansattFom, ansattTom }: Arbeidsgiver,
+ ansettelsesperiode: DateRange,
normalarbeidstidPerUke: Duration,
faktiskArbeidstidPerUke: Duration | undefined,
): PeriodeMedArbeidstid[] => {
const søknadsperioderForArbeidsforhold = getSøknadsperioderForUkjentArbeidsforhold(
søknadsperioder,
- ansattFom,
- ansattTom,
+ ansettelsesperiode.from,
+ ansettelsesperiode.to,
);
+
const perioderMedArbeidstid: PeriodeMedArbeidstid[] = [];
const arbeidstidPerDag: ArbeidstidPerDag = {
@@ -62,7 +66,9 @@ export const getPerioderMedArbeidstidForUkjentArbeidsforhold = (
getDatesInDateRange(uke, true).forEach((date) => {
enkeldagerMap[dateToISODate(date)] = arbeidstidPerDag;
});
- arbeidsuker[dateRangeToISODateRange(uke)] = getArbeidsukeFromEnkeltdagerIUken(uke, enkeldagerMap);
+ if (Object.keys(enkeldagerMap).length > 0) {
+ arbeidsuker[dateRangeToISODateRange(uke)] = getArbeidsukeFromEnkeltdagerIUken(uke, enkeldagerMap);
+ }
});
perioderMedArbeidstid.push({
arbeidsuker,
@@ -87,13 +93,27 @@ export const getFaktiskArbeidstidPerUkeForUkjentArbeidsforhold = (
}
};
+/**
+ * Henter ut Arbeidsaktiviet for ukjent arbeidsforhold
+ * @param søknadsperioder Alle perioder som er søkt for
+ * @param arbeidsgiver Arbeidsgiveren det gjelder som ikke er registrert i sak
+ * @param arbeidsforhold Arbeidsforhold utledet tidligere - holder om en er ansatt eller ikke, og evt. normalarbeidstid. Hentes på eget steg
+ * @param endringsperiode tidsrommet som en kan gjøre endringer i
+ * @param arbeiderIPerioden om bruker sier en arbeider, arbeider delvis eller arbeider ikke i perioden
+ * @returns Arbeidsaktivitet
+ */
export const getArbeidsaktivitetForUkjentArbeidsforhold = (
søknadsperioder: DateRange[],
- arbeidsgiver: Arbeidsgiver,
+ arbeidsgiver: ArbeidsgiverMedAnsettelseperioder,
arbeidsforhold: ArbeidsforholdAktivt,
+ endringsperiode: DateRange,
arbeiderIPerioden?: ArbeiderIPeriodenSvar,
): Arbeidsaktivitet => {
const faktiskArbeidstid = getFaktiskArbeidstidPerUkeForUkjentArbeidsforhold(arbeidsforhold, arbeiderIPerioden);
+ if (arbeidsgiver.ansettelsesperioder.length !== 1) {
+ throw 'Ukjent arbeidsforhold kan kun ha en ansettelsesperiode';
+ }
+ const ansettelsesperiode = ensureDateRange(arbeidsgiver.ansettelsesperioder[0], endringsperiode);
const aktivitet: Arbeidsaktivitet = {
key: arbeidsgiver.key,
@@ -103,9 +123,10 @@ export const getArbeidsaktivitetForUkjentArbeidsforhold = (
navn: arbeidsgiver.navn,
harPerioderEtterTillattEndringsperiode: false,
harPerioderFørTillattEndringsperiode: false,
+ ansettelsesperioderInnenforEndringsperiode: [ansettelsesperiode],
perioderMedArbeidstid: getPerioderMedArbeidstidForUkjentArbeidsforhold(
søknadsperioder,
- arbeidsgiver,
+ ansettelsesperiode,
arbeidsforhold.normalarbeidstid.timerPerUke,
faktiskArbeidstid,
),
@@ -115,8 +136,9 @@ export const getArbeidsaktivitetForUkjentArbeidsforhold = (
export const getArbeidsaktiviteterForUkjenteArbeidsforhold = (
søknadsperioder: DateRange[],
- arbeidsgivereIkkeISak: Arbeidsgiver[],
+ arbeidsgivereIkkeISak: ArbeidsgiverMedAnsettelseperioder[],
arbeidsaktivitetFormValues: ArbeidsaktivitetFormValuesMap,
+ endringsperiode: DateRange,
ukjentArbeidsforhold?: UkjentArbeidsforholdSøknadsdata,
): Arbeidsaktivitet[] => {
const aktiviteter: Arbeidsaktivitet[] = [];
@@ -134,6 +156,7 @@ export const getArbeidsaktiviteterForUkjenteArbeidsforhold = (
søknadsperioder,
arbeidsgiver,
arbeidsforhold,
+ endringsperiode,
arbeiderIPerioden,
),
);
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/app/arbeidsukerMockData.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/app/arbeidsukerMockData.ts
index a82e19841e..2891baf704 100644
--- a/apps/endringsmelding-pleiepenger/src/mocks/data/app/arbeidsukerMockData.ts
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/app/arbeidsukerMockData.ts
@@ -7,6 +7,7 @@ import {
getDatesInDateRange,
ISODateRange,
ISODateRangeToDateRange,
+ ISODateToDate,
} from '@navikt/sif-common-utils';
import { ArbeidstidEnkeltdagMap, Arbeidsuke } from '@types';
@@ -33,6 +34,7 @@ const getMockArbeidsuke = (
isoDateRange,
periode,
arbeidstidEnkeltdager,
+ dagerSøktFor: dagerSøktFor.map(ISODateToDate),
normalt: {
uke: decimalDurationToDuration(durationToDecimalDuration(normaltPerDag) * antallDagerMedArbeidstid),
dag: normaltPerDag,
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/ArbeidsgiverIkkeISakFlereAnsettelser.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/ArbeidsgiverIkkeISakFlereAnsettelser.ts
new file mode 100644
index 0000000000..acb4dd2797
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/ArbeidsgiverIkkeISakFlereAnsettelser.ts
@@ -0,0 +1,10 @@
+import { ScenarioData } from '..';
+import arbeidsgiver from './arbeidsgiver-mock';
+import sak from './sak-mock';
+import søker from './søker-mock';
+
+export const ArbeidsgiverIkkeISakFlereAnsettelser: ScenarioData = {
+ sak,
+ arbeidsgiver,
+ søker,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/arbeidsgiver-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/arbeidsgiver-mock.ts
new file mode 100644
index 0000000000..a45b295c82
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/arbeidsgiver-mock.ts
@@ -0,0 +1,8 @@
+export default {
+ organisasjoner: [
+ { navn: 'Dykkert svømmeutstyr', organisasjonsnummer: '947064649', ansattFom: '2008-10-01' },
+ { navn: 'Vinge flyfly', organisasjonsnummer: '947064640', ansattFom: '2008-10-01' },
+ { navn: 'IKKE-I-SAK-AS 1', organisasjonsnummer: '947064642', ansattFom: '2023-02-05', ansattTom: '2023-04-05' },
+ { navn: 'IKKE-I-SAK-AS 1', organisasjonsnummer: '947064642', ansattFom: '2023-04-06' },
+ ],
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/sak-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/sak-mock.ts
new file mode 100644
index 0000000000..5f9c1a3f8f
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/sak-mock.ts
@@ -0,0 +1,343 @@
+export default [
+ {
+ barn: {
+ fødselsdato: '2017-03-03',
+ fornavn: 'NORA',
+ mellomnavn: null,
+ etternavn: 'Nordmann',
+ aktørId: '2559652436225',
+ identitetsnummer: '03831799748',
+ },
+ søknad: {
+ søknadId: 'generert',
+ versjon: '1.0.0.',
+ mottattDato: '2023-01-18T08:13:37.525Z',
+ søker: { norskIdentitetsnummer: '00000000000' },
+ ytelse: {
+ type: 'PLEIEPENGER_SYKT_BARN',
+ barn: { norskIdentitetsnummer: '00000000000', fødselsdato: null },
+ søknadsperiode: ['2022-01-01/2024-09-31'],
+ endringsperiode: [],
+ trekkKravPerioder: [],
+ opptjeningAktivitet: {},
+ dataBruktTilUtledning: null,
+ infoFraPunsj: null,
+ bosteder: { perioder: {}, perioderSomSkalSlettes: {} },
+ utenlandsopphold: { perioder: {}, perioderSomSkalSlettes: {} },
+ beredskap: { perioder: {}, perioderSomSkalSlettes: {} },
+ nattevåk: { perioder: {}, perioderSomSkalSlettes: {} },
+ tilsynsordning: {
+ perioder: {
+ '2022-12-01/2023-01-31': { etablertTilsynTimerPerDag: 'PT8H' },
+ '2023-02-14/2023-03-16': { etablertTilsynTimerPerDag: 'PT8H' },
+ },
+ },
+ lovbestemtFerie: {
+ perioder: {
+ '2023-01-12/2023-01-15': {
+ skalHaFerie: false,
+ },
+ },
+ },
+ arbeidstid: {
+ arbeidstakerList: [
+ {
+ norskIdentitetsnummer: null,
+ organisasjonsnummer: '947064649',
+ arbeidstidInfo: {
+ perioder: {
+ '2022-01-01/2022-03-25': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-03-28/2022-04-01': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-04-04/2022-04-08': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-04-11/2022-04-15': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-04-18/2022-04-22': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-04-25/2022-04-29': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-05-02/2022-05-06': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-05-09/2022-05-13': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-05-16/2022-05-20': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-05-23/2022-05-27': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-05-30/2022-06-03': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-06-06/2022-06-10': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-06-13/2022-06-17': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-06-20/2022-06-24': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-06-27/2022-06-30': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-07-01/2022-07-01': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-07-04/2022-07-07': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-07-08/2022-07-08': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-07-11/2022-07-14': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-07-15/2022-07-15': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-07-18/2022-07-21': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-07-22/2022-07-22': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-07-25/2022-07-28': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-07-29/2022-07-29': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-08-01/2022-08-04': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-08-05/2022-08-05': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-08-08/2022-08-11': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-08-12/2022-08-12': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-08-15/2022-08-18': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-08-19/2022-08-19': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-08-22/2022-08-25': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-08-26/2022-08-26': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-08-29/2022-08-31': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-09-01/2022-09-01': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2022-09-02/2022-09-02': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT4H30M',
+ },
+ '2022-09-05/2022-09-05': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-09-06/2022-09-06': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT2H30M',
+ },
+ '2022-09-07/2022-09-08': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-09-09/2022-09-09': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT5H',
+ },
+ '2022-09-12/2022-09-13': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-09-14/2022-09-14': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT4H',
+ },
+ '2022-09-15/2022-09-15': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT3H30M',
+ },
+ '2022-09-16/2022-09-16': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-09-19/2022-09-22': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-09-23/2022-09-23': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-09-26/2022-09-29': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2022-09-30/2022-09-30': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT7H30M',
+ },
+ '2022-10-03/2024-12-30': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ },
+ },
+ },
+ {
+ norskIdentitetsnummer: null,
+ organisasjonsnummer: '947064640',
+ arbeidstidInfo: {
+ perioder: {
+ '2022-09-01/2022-09-30': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2022-10-03/2022-12-30': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2023-01-01/2023-01-15': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ '2023-01-16/2023-03-12': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT4H30M',
+ },
+ '2023-03-13/2023-09-31': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT1H30M',
+ },
+ },
+ },
+ },
+ ],
+ frilanserArbeidstidInfo: {
+ perioder: {
+ '2022-06-25/2022-12-31': {
+ jobberNormaltTimerPerDag: 'PT0S',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2023-01-02/2023-01-06': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2023-01-09/2023-01-13': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2023-01-16/2023-01-20': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2023-01-23/2023-01-27': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2023-01-30/2023-02-03': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2023-02-06/2023-02-10': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2023-02-13/2023-02-17': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2023-02-20/2023-02-24': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2023-02-27/2023-03-03': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2023-03-06/2023-03-10': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT3H',
+ },
+ '2023-03-13/2023-03-17': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2023-03-20/2023-03-24': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2023-03-27/2023-09-31': {
+ jobberNormaltTimerPerDag: 'PT3H',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ },
+ },
+ selvstendigNæringsdrivendeArbeidstidInfo: {},
+ },
+ uttak: { perioder: {} },
+ omsorg: { relasjonTilBarnet: null, beskrivelseAvOmsorgsrollen: null },
+ },
+ språk: 'nb',
+ journalposter: [],
+ begrunnelseForInnsending: { tekst: null },
+ },
+ },
+];
diff --git "a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/s\303\270ker-mock.ts" "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/s\303\270ker-mock.ts"
new file mode 100644
index 0000000000..2dd3e1c484
--- /dev/null
+++ "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak-flere-ansettelser/s\303\270ker-mock.ts"
@@ -0,0 +1,8 @@
+export default {
+ aktørId: '234',
+ fødselsnummer: '30086421581',
+ fødselsdato: '2001-02-01',
+ fornavn: 'NORA',
+ mellomnavn: null,
+ etternavn: 'KRONJUVEL',
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak/arbeidsgiver-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak/arbeidsgiver-mock.ts
index d1f2d8394d..767079758f 100644
--- a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak/arbeidsgiver-mock.ts
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/arbeidsgiver-ikke-i-sak/arbeidsgiver-mock.ts
@@ -2,7 +2,7 @@ export default {
organisasjoner: [
{ navn: 'Dykkert svømmeutstyr', organisasjonsnummer: '947064649', ansattFom: '2008-10-01' },
{ navn: 'Vinge flyfly', organisasjonsnummer: '947064640', ansattFom: '2008-10-01' },
- { navn: 'IKKE-I-SAK-AS 1', organisasjonsnummer: '947064642', ansattFom: '2023-02-01' },
+ { navn: 'IKKE-I-SAK-AS 1', organisasjonsnummer: '947064642', ansattFom: '2023-02-05' },
{ navn: 'IKKE-I-SAK-AS 2', organisasjonsnummer: '947064643', ansattFom: '2023-02-01' },
],
};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/arbeidsgiver-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/arbeidsgiver-mock.ts
index a5c1abb86b..f1f6838bf5 100644
--- a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/arbeidsgiver-mock.ts
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/arbeidsgiver-mock.ts
@@ -1,5 +1,8 @@
export default {
- organisasjoner: [],
- privateArbeidsgivere: null,
- frilansoppdrag: null,
+ frilansoppdrag: [],
+ organisasjoner: [
+ { ansattFom: '2005-01-09', ansattTom: '2024-11-01', navn: 'SAUEFABRIKK', organisasjonsnummer: '896929119' },
+ { ansattFom: '2024-12-12', ansattTom: null, navn: 'SAUEFABRIKK', organisasjonsnummer: '896929119' },
+ ],
+ privateArbeidsgivere: [],
};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/sak-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/sak-mock.ts
index b341db01ac..23b0466153 100644
--- a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/sak-mock.ts
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/sak-mock.ts
@@ -1,28 +1,28 @@
export default [
{
barn: {
- fødselsdato: '2008-07-27',
- fornavn: 'RAVGUL',
+ fødselsdato: '2023-01-24',
+ fornavn: 'GEOMETRISK',
mellomnavn: null,
- etternavn: 'LØVETANN',
- aktørId: '2175638020356',
- identitetsnummer: '27870899799',
+ etternavn: 'RIST',
+ aktørId: '2487158514882',
+ identitetsnummer: '24412358038',
},
søknad: {
søknadId: 'generert',
versjon: '1.0.0',
- mottattDato: '2024-12-10T08:47:11.929Z',
+ mottattDato: '2025-01-24T07:51:23.794Z',
søker: {
norskIdentitetsnummer: '00000000000',
},
- språk: null,
+ språk: 'nb',
ytelse: {
type: 'PLEIEPENGER_SYKT_BARN',
barn: {
norskIdentitetsnummer: '00000000000',
fødselsdato: null,
},
- søknadsperiode: ['2024-12-03/2024-12-05'],
+ søknadsperiode: ['2024-11-01/2025-02-28'],
endringsperiode: [],
trekkKravPerioder: [],
opptjeningAktivitet: {},
@@ -47,23 +47,37 @@ export default [
},
tilsynsordning: {
perioder: {
- '2024-12-03/2024-12-05': {
+ '2024-11-01/2025-02-28': {
etablertTilsynTimerPerDag: 'PT0S',
},
},
},
lovbestemtFerie: {
- perioder: {
- '2024-12-04/2024-12-05': {
- skalHaFerie: false,
- },
- },
+ perioder: {},
},
arbeidstid: {
- arbeidstakerList: [],
+ arbeidstakerList: [
+ {
+ norskIdentitetsnummer: null,
+ organisasjonsnummer: '896929119',
+ organisasjonsnavn: null,
+ arbeidstidInfo: {
+ perioder: {
+ '2024-11-01/2024-11-30': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2024-12-01/2025-02-28': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ },
+ },
+ },
+ ],
frilanserArbeidstidInfo: {
perioder: {
- '2024-12-03/2024-12-05': {
+ '2024-11-01/2025-02-28': {
jobberNormaltTimerPerDag: 'PT0S',
faktiskArbeidTimerPerDag: 'PT0S',
},
diff --git "a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/s\303\270ker-mock.ts" "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/s\303\270ker-mock.ts"
index b80d44748e..0921da2df9 100644
--- "a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/s\303\270ker-mock.ts"
+++ "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/debug/s\303\270ker-mock.ts"
@@ -1,9 +1,8 @@
export default {
- aktørId: '2486083225079',
- fødselsdato: '1987-10-09',
- fødselsnummer: '09908799647',
- fornavn: 'NORA',
+ aktørId: '2912771641580',
+ etternavn: 'FJORD',
+ fornavn: 'TØFF',
+ fødselsdato: '1983-05-26',
+ fødselsnummer: '26458341337',
mellomnavn: null,
- etternavn: 'Etternavn',
- myndig: true,
};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/EnArbeidsgiverToAnsettelserSammeUkeMedOpphold.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/EnArbeidsgiverToAnsettelserSammeUkeMedOpphold.ts
new file mode 100644
index 0000000000..64031f82f0
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/EnArbeidsgiverToAnsettelserSammeUkeMedOpphold.ts
@@ -0,0 +1,10 @@
+import { ScenarioData } from '..';
+import arbeidsgiver from './arbeidsgiver-mock';
+import sak from './sak-mock';
+import søker from './søker-mock';
+
+export const EnArbeidsgiverToAnsettelserSammeUkeMedOpphold: ScenarioData = {
+ sak,
+ arbeidsgiver,
+ søker,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/arbeidsgiver-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/arbeidsgiver-mock.ts
new file mode 100644
index 0000000000..a148bdd78a
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/arbeidsgiver-mock.ts
@@ -0,0 +1,18 @@
+export default {
+ organisasjoner: [
+ {
+ organisasjonsnummer: '947064649',
+ navn: 'Norsk bedrift AS',
+ ansattFom: '2003-01-16',
+ ansattTom: '2022-01-11',
+ },
+ {
+ organisasjonsnummer: '947064649',
+ navn: 'Norsk bedrift AS',
+ ansattFom: '2022-01-13',
+ ansattTom: null,
+ },
+ ],
+ privateArbeidsgivere: null,
+ frilansoppdrag: null,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/sak-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/sak-mock.ts
new file mode 100644
index 0000000000..8b2cc9fe4d
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/sak-mock.ts
@@ -0,0 +1,114 @@
+export default [
+ {
+ barn: {
+ fødselsdato: '2017-03-03',
+ fornavn: 'NORA',
+ mellomnavn: null,
+ etternavn: 'Nordmann',
+ aktørId: '2559652436225',
+ identitetsnummer: '03831799748',
+ },
+ søknad: {
+ søknadId: 'generert',
+ versjon: '1.0.0.',
+ mottattDato: '2023-01-18T08:13:37.525Z',
+ søker: { norskIdentitetsnummer: '00000000000' },
+ ytelse: {
+ type: 'PLEIEPENGER_SYKT_BARN',
+ barn: { norskIdentitetsnummer: '00000000000', fødselsdato: null },
+ søknadsperiode: ['2022-12-01/2024-05-31'],
+ endringsperiode: [],
+ trekkKravPerioder: [],
+ opptjeningAktivitet: {},
+ dataBruktTilUtledning: null,
+ infoFraPunsj: null,
+ bosteder: { perioder: {}, perioderSomSkalSlettes: {} },
+ utenlandsopphold: {
+ perioder: {
+ '2018-12-30/2019-10-20': {
+ land: 'DNK',
+ årsak: 'barnetInnlagtIHelseinstitusjonForNorskOffentligRegning',
+ },
+ },
+ },
+ beredskap: { perioder: {}, perioderSomSkalSlettes: {} },
+ nattevåk: { perioder: {}, perioderSomSkalSlettes: {} },
+ tilsynsordning: {
+ perioder: {
+ '2022-12-01/2023-01-31': { etablertTilsynTimerPerDag: 'PT8H' },
+ '2023-02-14/2023-03-16': { etablertTilsynTimerPerDag: 'PT8H' },
+ },
+ },
+ lovbestemtFerie: {
+ perioder: {
+ '2023-01-01/2023-01-10': {
+ skalHaFerie: true,
+ },
+ '2023-01-12/2023-01-15': {
+ skalHaFerie: false,
+ },
+ },
+ },
+ arbeidstid: {
+ arbeidstakerList: [
+ {
+ norskIdentitetsnummer: null,
+ organisasjonsnummer: '947064649',
+ arbeidstidInfo: {
+ perioder: {
+ '2022-12-01/2022-12-02': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2022-12-05/2022-12-09': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2022-12-12/2022-12-16': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2022-12-19/2022-12-23': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2022-12-26/2022-12-30': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-02/2023-01-06': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-09/2023-01-13': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-16/2023-01-20': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-23/2023-01-27': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-30/2024-05-31': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ },
+ },
+ },
+ ],
+ frilanserArbeidstidInfo: {},
+ selvstendigNæringsdrivendeArbeidstidInfo: {},
+ },
+ uttak: { perioder: {} },
+ omsorg: { relasjonTilBarnet: null, beskrivelseAvOmsorgsrollen: null },
+ },
+ språk: 'nb',
+ journalposter: [],
+ begrunnelseForInnsending: { tekst: null },
+ },
+ },
+];
diff --git "a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/s\303\270ker-mock.ts" "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/s\303\270ker-mock.ts"
new file mode 100644
index 0000000000..b80d44748e
--- /dev/null
+++ "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/s\303\270ker-mock.ts"
@@ -0,0 +1,9 @@
+export default {
+ aktørId: '2486083225079',
+ fødselsdato: '1987-10-09',
+ fødselsnummer: '09908799647',
+ fornavn: 'NORA',
+ mellomnavn: null,
+ etternavn: 'Etternavn',
+ myndig: true,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/EnArbeidsgiverToAnsettelserSammeUkeUtenOpphold.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/EnArbeidsgiverToAnsettelserSammeUkeUtenOpphold.ts
new file mode 100644
index 0000000000..579142c282
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/EnArbeidsgiverToAnsettelserSammeUkeUtenOpphold.ts
@@ -0,0 +1,10 @@
+import { ScenarioData } from '..';
+import arbeidsgiver from './arbeidsgiver-mock';
+import sak from './sak-mock';
+import søker from './søker-mock';
+
+export const EnArbeidsgiverToAnsettelserSammeUkeUtenOpphold: ScenarioData = {
+ sak,
+ arbeidsgiver,
+ søker,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/arbeidsgiver-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/arbeidsgiver-mock.ts
new file mode 100644
index 0000000000..049ad63a0c
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/arbeidsgiver-mock.ts
@@ -0,0 +1,18 @@
+export default {
+ organisasjoner: [
+ {
+ organisasjonsnummer: '947064649',
+ navn: 'Norsk bedrift AS',
+ ansattFom: '2003-01-16',
+ ansattTom: '2022-12-05',
+ },
+ {
+ organisasjonsnummer: '947064649',
+ navn: 'Norsk bedrift AS',
+ ansattFom: '2023-01-01',
+ ansattTom: null,
+ },
+ ],
+ privateArbeidsgivere: null,
+ frilansoppdrag: null,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/sak-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/sak-mock.ts
new file mode 100644
index 0000000000..8b2cc9fe4d
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/sak-mock.ts
@@ -0,0 +1,114 @@
+export default [
+ {
+ barn: {
+ fødselsdato: '2017-03-03',
+ fornavn: 'NORA',
+ mellomnavn: null,
+ etternavn: 'Nordmann',
+ aktørId: '2559652436225',
+ identitetsnummer: '03831799748',
+ },
+ søknad: {
+ søknadId: 'generert',
+ versjon: '1.0.0.',
+ mottattDato: '2023-01-18T08:13:37.525Z',
+ søker: { norskIdentitetsnummer: '00000000000' },
+ ytelse: {
+ type: 'PLEIEPENGER_SYKT_BARN',
+ barn: { norskIdentitetsnummer: '00000000000', fødselsdato: null },
+ søknadsperiode: ['2022-12-01/2024-05-31'],
+ endringsperiode: [],
+ trekkKravPerioder: [],
+ opptjeningAktivitet: {},
+ dataBruktTilUtledning: null,
+ infoFraPunsj: null,
+ bosteder: { perioder: {}, perioderSomSkalSlettes: {} },
+ utenlandsopphold: {
+ perioder: {
+ '2018-12-30/2019-10-20': {
+ land: 'DNK',
+ årsak: 'barnetInnlagtIHelseinstitusjonForNorskOffentligRegning',
+ },
+ },
+ },
+ beredskap: { perioder: {}, perioderSomSkalSlettes: {} },
+ nattevåk: { perioder: {}, perioderSomSkalSlettes: {} },
+ tilsynsordning: {
+ perioder: {
+ '2022-12-01/2023-01-31': { etablertTilsynTimerPerDag: 'PT8H' },
+ '2023-02-14/2023-03-16': { etablertTilsynTimerPerDag: 'PT8H' },
+ },
+ },
+ lovbestemtFerie: {
+ perioder: {
+ '2023-01-01/2023-01-10': {
+ skalHaFerie: true,
+ },
+ '2023-01-12/2023-01-15': {
+ skalHaFerie: false,
+ },
+ },
+ },
+ arbeidstid: {
+ arbeidstakerList: [
+ {
+ norskIdentitetsnummer: null,
+ organisasjonsnummer: '947064649',
+ arbeidstidInfo: {
+ perioder: {
+ '2022-12-01/2022-12-02': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2022-12-05/2022-12-09': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2022-12-12/2022-12-16': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2022-12-19/2022-12-23': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2022-12-26/2022-12-30': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-02/2023-01-06': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-09/2023-01-13': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-16/2023-01-20': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-23/2023-01-27': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ '2023-01-30/2024-05-31': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT4H32M24S',
+ },
+ },
+ },
+ },
+ ],
+ frilanserArbeidstidInfo: {},
+ selvstendigNæringsdrivendeArbeidstidInfo: {},
+ },
+ uttak: { perioder: {} },
+ omsorg: { relasjonTilBarnet: null, beskrivelseAvOmsorgsrollen: null },
+ },
+ språk: 'nb',
+ journalposter: [],
+ begrunnelseForInnsending: { tekst: null },
+ },
+ },
+];
diff --git "a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/s\303\270ker-mock.ts" "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/s\303\270ker-mock.ts"
new file mode 100644
index 0000000000..b80d44748e
--- /dev/null
+++ "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/s\303\270ker-mock.ts"
@@ -0,0 +1,9 @@
+export default {
+ aktørId: '2486083225079',
+ fødselsdato: '1987-10-09',
+ fødselsnummer: '09908799647',
+ fornavn: 'NORA',
+ mellomnavn: null,
+ etternavn: 'Etternavn',
+ myndig: true,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-perioder/arbeidsgiver-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-perioder/arbeidsgiver-mock.ts
index 74e2a56eec..d96164a10d 100644
--- a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-perioder/arbeidsgiver-mock.ts
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/en-arbeidsgiver-to-perioder/arbeidsgiver-mock.ts
@@ -4,7 +4,6 @@ export default {
organisasjonsnummer: '947064649',
navn: 'Norsk bedrift AS',
ansattFom: '2003-01-16',
- ansattTom: null,
},
],
privateArbeidsgivere: null,
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/index.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/index.ts
index d07e3ca605..834fc633e5 100644
--- a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/index.ts
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/index.ts
@@ -1,19 +1,20 @@
import { ScenarioType } from '../../../app/dev/scenarioer';
import { ArbeidsaktivitetUtenArbeidsgiver } from './arbeidsaktivitet-uten-arbeidsgiver/ArbeidsaktivitetUtenArbeidsgiver';
+import { ArbeidsgiverIkkeISakFlereAnsettelser } from './arbeidsgiver-ikke-i-sak-flere-ansettelser/ArbeidsgiverIkkeISakFlereAnsettelser';
import { ArbeidsgiverIkkeISak } from './arbeidsgiver-ikke-i-sak/ArbeidsgiverIkkeISak';
import { ArbeidsgiverOgFrilanser } from './arbeidsgiver-og-frilanser/ArbeidsgiverOgFrilanser';
import { ArbeidsgivereOgFrilanser } from './arbeidsgivere-og-frilanser/ArbeidsgivereOgFrilanser';
import { Debug } from './debug/Debug';
import { EnArbeidsgiverEnPeriode } from './en-arbeidsgiver-en-periode/EnArbeidsgiverEnPeriode';
+import { EnArbeidsgiverToAnsettelserSammeUkeMedOpphold } from './en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold/EnArbeidsgiverToAnsettelserSammeUkeMedOpphold';
+import { EnArbeidsgiverToAnsettelserSammeUkeUtenOpphold } from './en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold/EnArbeidsgiverToAnsettelserSammeUkeUtenOpphold';
import { EnArbeidsgiverToPerioder } from './en-arbeidsgiver-to-perioder/EnArbeidsgiverToPerioder';
import { FlereSaker } from './flere-saker/FlereSaker';
import { IngenSak } from './ingen-sak/IngenSak';
import { SelvstendigNæringsdrivende } from './selvstendig-næringsdrivende/SelvstendigNæringsdrivende';
import { UgyldigK9Format } from './ugyldig-k9-format/UgyldigK9Format';
-type ScenarioMap = {
- [key: string]: ScenarioData;
-};
+type ScenarioMap = Record;
export const mockData: ScenarioMap = {
['en-arbeidsgiver-en-periode']: EnArbeidsgiverEnPeriode,
@@ -25,8 +26,11 @@ export const mockData: ScenarioMap = {
['ingen-sak']: IngenSak,
['debug']: Debug,
['arbeidsgiver-ikke-i-sak']: ArbeidsgiverIkkeISak,
+ ['arbeidsgiver-ikke-i-sak-flere-ansettelser']: ArbeidsgiverIkkeISakFlereAnsettelser,
['arbeidsaktivitet-uten-arbeidsgiver']: ArbeidsaktivitetUtenArbeidsgiver,
['ugyldig-k9-format']: UgyldigK9Format,
+ ['en-arbeidsgiver-to-ansettelser-samme-uke-med-opphold']: EnArbeidsgiverToAnsettelserSammeUkeMedOpphold,
+ ['en-arbeidsgiver-to-ansettelser-samme-uke-uten-opphold']: EnArbeidsgiverToAnsettelserSammeUkeUtenOpphold,
};
export interface ScenarioData {
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/IkkeAnsattMandagMidt.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/IkkeAnsattMandagMidt.ts
new file mode 100644
index 0000000000..01172f41fa
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/IkkeAnsattMandagMidt.ts
@@ -0,0 +1,10 @@
+import { ScenarioData } from '../../';
+import arbeidsgiver from './arbeidsgiver-mock';
+import sak from './sak-mock';
+import søker from './søker-mock';
+
+export const IkkeAnsattMandagMidtI: ScenarioData = {
+ sak,
+ arbeidsgiver,
+ søker,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/arbeidsgiver-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/arbeidsgiver-mock.ts
new file mode 100644
index 0000000000..ec99dc2658
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/arbeidsgiver-mock.ts
@@ -0,0 +1,9 @@
+/** Første periode viser tom søndag 3.11, selv om en slutter før 1.11 */
+export default {
+ frilansoppdrag: [],
+ organisasjoner: [
+ { ansattFom: '2005-01-09', ansattTom: '2024-11-01', navn: 'SAUEFABRIKK', organisasjonsnummer: '896929119' },
+ { ansattFom: '2024-12-05', ansattTom: null, navn: 'SAUEFABRIKK', organisasjonsnummer: '896929119' },
+ ],
+ privateArbeidsgivere: [],
+};
diff --git a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/sak-mock.ts b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/sak-mock.ts
new file mode 100644
index 0000000000..23b0466153
--- /dev/null
+++ b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/sak-mock.ts
@@ -0,0 +1,104 @@
+export default [
+ {
+ barn: {
+ fødselsdato: '2023-01-24',
+ fornavn: 'GEOMETRISK',
+ mellomnavn: null,
+ etternavn: 'RIST',
+ aktørId: '2487158514882',
+ identitetsnummer: '24412358038',
+ },
+ søknad: {
+ søknadId: 'generert',
+ versjon: '1.0.0',
+ mottattDato: '2025-01-24T07:51:23.794Z',
+ søker: {
+ norskIdentitetsnummer: '00000000000',
+ },
+ språk: 'nb',
+ ytelse: {
+ type: 'PLEIEPENGER_SYKT_BARN',
+ barn: {
+ norskIdentitetsnummer: '00000000000',
+ fødselsdato: null,
+ },
+ søknadsperiode: ['2024-11-01/2025-02-28'],
+ endringsperiode: [],
+ trekkKravPerioder: [],
+ opptjeningAktivitet: {},
+ dataBruktTilUtledning: null,
+ annetDataBruktTilUtledning: null,
+ infoFraPunsj: null,
+ bosteder: {
+ perioder: {},
+ perioderSomSkalSlettes: {},
+ },
+ utenlandsopphold: {
+ perioder: {},
+ perioderSomSkalSlettes: {},
+ },
+ beredskap: {
+ perioder: {},
+ perioderSomSkalSlettes: {},
+ },
+ nattevåk: {
+ perioder: {},
+ perioderSomSkalSlettes: {},
+ },
+ tilsynsordning: {
+ perioder: {
+ '2024-11-01/2025-02-28': {
+ etablertTilsynTimerPerDag: 'PT0S',
+ },
+ },
+ },
+ lovbestemtFerie: {
+ perioder: {},
+ },
+ arbeidstid: {
+ arbeidstakerList: [
+ {
+ norskIdentitetsnummer: null,
+ organisasjonsnummer: '896929119',
+ organisasjonsnavn: null,
+ arbeidstidInfo: {
+ perioder: {
+ '2024-11-01/2024-11-30': {
+ jobberNormaltTimerPerDag: 'PT7H30M',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ '2024-12-01/2025-02-28': {
+ jobberNormaltTimerPerDag: 'PT8H',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ },
+ },
+ },
+ ],
+ frilanserArbeidstidInfo: {
+ perioder: {
+ '2024-11-01/2025-02-28': {
+ jobberNormaltTimerPerDag: 'PT0S',
+ faktiskArbeidTimerPerDag: 'PT0S',
+ },
+ },
+ },
+ selvstendigNæringsdrivendeArbeidstidInfo: null,
+ },
+ uttak: {
+ perioder: {},
+ },
+ omsorg: {
+ relasjonTilBarnet: null,
+ beskrivelseAvOmsorgsrollen: null,
+ },
+ erSammenMedBarnet: null,
+ },
+ journalposter: [],
+ begrunnelseForInnsending: {
+ tekst: null,
+ },
+ kildesystem: null,
+ },
+ },
+];
diff --git "a/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/s\303\270ker-mock.ts" "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/s\303\270ker-mock.ts"
new file mode 100644
index 0000000000..0921da2df9
--- /dev/null
+++ "b/apps/endringsmelding-pleiepenger/src/mocks/data/scenario/opphold/ikke-ansatt-mandag-midt-i/s\303\270ker-mock.ts"
@@ -0,0 +1,8 @@
+export default {
+ aktørId: '2912771641580',
+ etternavn: 'FJORD',
+ fornavn: 'TØFF',
+ fødselsdato: '1983-05-26',
+ fødselsnummer: '26458341337',
+ mellomnavn: null,
+};
diff --git a/apps/endringsmelding-pleiepenger/src/storybook/data/arbeidsgivereMock.ts b/apps/endringsmelding-pleiepenger/src/storybook/data/arbeidsgivereMock.ts
index 5c987052fa..d75de02677 100644
--- a/apps/endringsmelding-pleiepenger/src/storybook/data/arbeidsgivereMock.ts
+++ b/apps/endringsmelding-pleiepenger/src/storybook/data/arbeidsgivereMock.ts
@@ -1,16 +1,16 @@
-import { Arbeidsgiver } from '../../app/types/Arbeidsgiver';
+import { ArbeidsgiverMedAnsettelseperioder } from '../../app/types/ArbeidsgiverMedAnsettelseperioder';
-export const arbeidsgivereMock: Arbeidsgiver[] = [
+export const arbeidsgivereMock: ArbeidsgiverMedAnsettelseperioder[] = [
{
key: 'a_805824352',
navn: 'Dykkert svømmeutstyr',
organisasjonsnummer: '805824352',
- ansattFom: new Date('2008-10-01'),
+ ansettelsesperioder: [{ from: new Date('2008-10-01') }],
},
{
key: 'a_839942907',
navn: 'Flaks og fly',
organisasjonsnummer: '839942907',
- ansattFom: new Date('2008-10-01'),
+ ansettelsesperioder: [{ from: new Date('2008-10-01') }],
},
];
diff --git a/apps/endringsmelding-pleiepenger/src/storybook/data/sakMock.ts b/apps/endringsmelding-pleiepenger/src/storybook/data/sakMock.ts
index 1a32ad2d86..f781c87b5f 100644
--- a/apps/endringsmelding-pleiepenger/src/storybook/data/sakMock.ts
+++ b/apps/endringsmelding-pleiepenger/src/storybook/data/sakMock.ts
@@ -9,13 +9,13 @@ export const sakMock: Sak = {
key: 'a_947064642',
organisasjonsnummer: '947064642',
navn: 'IKKE-I-SAK-AS 1',
- ansattFom: new Date('2023-02-01T00:00:00.000Z'),
+ ansettelsesperioder: [{ from: new Date('2023-02-01T00:00:00.000Z') }],
},
{
key: 'a_947064643',
organisasjonsnummer: '947064643',
navn: 'IKKE-I-SAK-AS 2',
- ansattFom: new Date('2023-02-01T00:00:00.000Z'),
+ ansettelsesperioder: [{ from: new Date('2023-02-01T00:00:00.000Z') }],
},
],
harArbeidsgivereIkkeISak: false,
@@ -49,11 +49,14 @@ export const sakMock: Sak = {
key: 'a_839942907',
organisasjonsnummer: '839942907',
navn: 'HÅRREISENDE FRISØR',
- ansattFom: new Date('2002-05-09T00:00:00.000Z'),
+ ansettelsesperioder: [{ from: new Date('2002-05-09T00:00:00.000Z') }],
},
type: ArbeidsaktivitetType.arbeidstaker,
navn: 'HÅRREISENDE FRISØR',
erUkjentArbeidsforhold: false,
+ ansettelsesperioderInnenforEndringsperiode: [
+ { from: new Date('2002-05-09T00:00:00.000Z'), to: new Date('2025-05-09T00:00:00.000Z') },
+ ],
perioderMedArbeidstid: [
{
from: new Date('2024-02-26T00:00:00.000Z'),
@@ -65,6 +68,7 @@ export const sakMock: Sak = {
from: new Date('2024-02-26T00:00:00.000Z'),
to: new Date('2024-02-29T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-02-26': {
faktisk: {
@@ -141,6 +145,7 @@ export const sakMock: Sak = {
from: new Date('2024-03-25T00:00:00.000Z'),
to: new Date('2024-03-31T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-03-25': {
faktisk: {
@@ -221,6 +226,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-01T00:00:00.000Z'),
to: new Date('2024-04-07T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-01': {
faktisk: {
@@ -301,6 +307,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-08T00:00:00.000Z'),
to: new Date('2024-04-14T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-08': {
faktisk: {
@@ -381,6 +388,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-15T00:00:00.000Z'),
to: new Date('2024-04-21T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-15': {
faktisk: {
@@ -461,6 +469,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-22T00:00:00.000Z'),
to: new Date('2024-04-28T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-22': {
faktisk: {
@@ -541,6 +550,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-29T00:00:00.000Z'),
to: new Date('2024-05-05T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-29': {
faktisk: {
@@ -621,6 +631,7 @@ export const sakMock: Sak = {
from: new Date('2024-05-06T00:00:00.000Z'),
to: new Date('2024-05-12T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-05-06': {
faktisk: {
@@ -701,6 +712,7 @@ export const sakMock: Sak = {
from: new Date('2024-05-13T00:00:00.000Z'),
to: new Date('2024-05-19T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-05-13': {
faktisk: {
@@ -781,6 +793,7 @@ export const sakMock: Sak = {
from: new Date('2024-05-20T00:00:00.000Z'),
to: new Date('2024-05-26T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-05-20': {
faktisk: {
@@ -861,6 +874,7 @@ export const sakMock: Sak = {
from: new Date('2024-05-27T00:00:00.000Z'),
to: new Date('2024-05-31T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-05-27': {
faktisk: {
@@ -946,6 +960,9 @@ export const sakMock: Sak = {
key: 'selvstendigNæringsdrivende',
type: ArbeidsaktivitetType.selvstendigNæringsdrivende,
navn: 'Selvstendig næringsdrivende',
+ ansettelsesperioderInnenforEndringsperiode: [
+ { from: new Date('2024-04-08T00:00:00.000Z'), to: new Date('2024-04-09T00:00:00.000Z') },
+ ],
perioderMedArbeidstid: [
{
from: new Date('2024-04-08T00:00:00.000Z'),
@@ -957,6 +974,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-08T00:00:00.000Z'),
to: new Date('2024-04-09T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-08': {
faktisk: {
@@ -1030,11 +1048,14 @@ export const sakMock: Sak = {
key: 'a_839942907',
organisasjonsnummer: '839942907',
navn: 'HÅRREISENDE FRISØR',
- ansattFom: new Date('2002-05-09T00:00:00.000Z'),
+ ansettelsesperioder: [{ from: new Date('2002-05-09T00:00:00.000Z') }],
},
type: ArbeidsaktivitetType.arbeidstaker,
navn: 'HÅRREISENDE FRISØR',
erUkjentArbeidsforhold: false,
+ ansettelsesperioderInnenforEndringsperiode: [
+ { from: new Date('2002-05-09T00:00:00.000Z'), to: new Date('2025-05-09T00:00:00.000Z') },
+ ],
perioderMedArbeidstid: [
{
from: new Date('2024-02-26T00:00:00.000Z'),
@@ -1046,6 +1067,7 @@ export const sakMock: Sak = {
from: new Date('2024-02-26T00:00:00.000Z'),
to: new Date('2024-02-29T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-02-26': {
faktisk: {
@@ -1122,6 +1144,7 @@ export const sakMock: Sak = {
from: new Date('2024-03-25T00:00:00.000Z'),
to: new Date('2024-03-31T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-03-25': {
faktisk: {
@@ -1202,6 +1225,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-01T00:00:00.000Z'),
to: new Date('2024-04-07T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-01': {
faktisk: {
@@ -1282,6 +1306,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-08T00:00:00.000Z'),
to: new Date('2024-04-14T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-08': {
faktisk: {
@@ -1362,6 +1387,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-15T00:00:00.000Z'),
to: new Date('2024-04-21T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-15': {
faktisk: {
@@ -1442,6 +1468,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-22T00:00:00.000Z'),
to: new Date('2024-04-28T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-22': {
faktisk: {
@@ -1522,6 +1549,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-29T00:00:00.000Z'),
to: new Date('2024-05-05T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-29': {
faktisk: {
@@ -1602,6 +1630,7 @@ export const sakMock: Sak = {
from: new Date('2024-05-06T00:00:00.000Z'),
to: new Date('2024-05-12T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-05-06': {
faktisk: {
@@ -1682,6 +1711,7 @@ export const sakMock: Sak = {
from: new Date('2024-05-13T00:00:00.000Z'),
to: new Date('2024-05-19T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-05-13': {
faktisk: {
@@ -1762,6 +1792,7 @@ export const sakMock: Sak = {
from: new Date('2024-05-20T00:00:00.000Z'),
to: new Date('2024-05-26T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-05-20': {
faktisk: {
@@ -1842,6 +1873,7 @@ export const sakMock: Sak = {
from: new Date('2024-05-27T00:00:00.000Z'),
to: new Date('2024-05-31T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-05-27': {
faktisk: {
@@ -1926,6 +1958,9 @@ export const sakMock: Sak = {
key: 'selvstendigNæringsdrivende',
type: ArbeidsaktivitetType.selvstendigNæringsdrivende,
navn: 'Selvstendig næringsdrivende',
+ ansettelsesperioderInnenforEndringsperiode: [
+ { from: new Date('2024-04-08T00:00:00.000Z'), to: new Date('2024-04-09T00:00:00.000Z') },
+ ],
perioderMedArbeidstid: [
{
from: new Date('2024-04-08T00:00:00.000Z'),
@@ -1937,6 +1972,7 @@ export const sakMock: Sak = {
from: new Date('2024-04-08T00:00:00.000Z'),
to: new Date('2024-04-09T00:00:00.000Z'),
},
+ dagerSøktFor: [],
arbeidstidEnkeltdager: {
'2024-04-08': {
faktisk: {
diff --git a/packages/sif-common-utils/src/dateRangeUtils.ts b/packages/sif-common-utils/src/dateRangeUtils.ts
index c12a8ede9b..f988efcd30 100644
--- a/packages/sif-common-utils/src/dateRangeUtils.ts
+++ b/packages/sif-common-utils/src/dateRangeUtils.ts
@@ -743,6 +743,13 @@ export const getFirstDateInDateRanges = (dateRanges: DateRange[]): Date | undefi
return dates[0];
};
+export const ensureDateRange = (maybeDateRange: MaybeDateRange, fallbackDateRange: DateRange): DateRange => {
+ return {
+ from: maybeDateRange.from || fallbackDateRange.from,
+ to: maybeDateRange.to || fallbackDateRange.to,
+ };
+};
+
// const dateRangeDifference = (range1: DateRange[], range2: DateRange[]): DateRange[] {
// const difference: DateRange[] = [];
// range1.forEach((r1) => {
@@ -773,6 +780,7 @@ export const dateRangeUtils = {
dateRangeIsAdjacentToDateRange,
dateRangesCollide,
dateRangeToISODateRange,
+ ensureDateRange,
datesCollideWithDateRanges,
getDateRangeFromDates,
getDateRangeFromDateRanges,