From 0c388aa9fb3a8615fa5445dcd73e418cd5da07c5 Mon Sep 17 00:00:00 2001 From: "Anders.Vik.Lysne" Date: Wed, 8 Jan 2025 17:09:14 +0100 Subject: [PATCH] =?UTF-8?q?Vis=20kun=20kontonummer=20dersom=20bruker=20har?= =?UTF-8?q?=20tilgang=20p=C3=A5=20overordnet=20enhet.=20Fiks=20mock=20data?= =?UTF-8?q?=20slik=20at=20orgnr=20som=20returneres=20fra=20ereg=20stemmer?= =?UTF-8?q?=20med=20scenarioet=20som=20er=20valgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Pages/OmVirksomheten/OverordnetEnhet.tsx | 8 +- src/Pages/OmVirksomheten/Underenhet.tsx | 19 ++- src/api/enhetsregisteretApi.ts | 1 - src/mocks/handlers.ts | 127 +-------------- src/mocks/handlers/eregHandlers.ts | 153 ++++++++++++++++++ src/mocks/handlers/kontonummerHandler.ts | 3 +- src/mocks/msw.ts | 3 +- src/mocks/scenarios/dagligLederScenario.ts | 61 +++---- .../n\303\246rmesteLederScenario.ts" | 49 +++--- src/mocks/scenarios/regnskapsforerScenario.ts | 39 +++-- 10 files changed, 258 insertions(+), 205 deletions(-) create mode 100644 src/mocks/handlers/eregHandlers.ts diff --git a/src/Pages/OmVirksomheten/OverordnetEnhet.tsx b/src/Pages/OmVirksomheten/OverordnetEnhet.tsx index d2f869b52..b6d3b2bf3 100644 --- a/src/Pages/OmVirksomheten/OverordnetEnhet.tsx +++ b/src/Pages/OmVirksomheten/OverordnetEnhet.tsx @@ -10,15 +10,19 @@ import { KontaktinfoOverordnetEnhet } from './Kontaktinfo'; import { Hovedenhet } from '../../api/enhetsregisteretApi'; import { formatOrgNr } from '../../utils/util'; import { KontonummerOverordnetEnhet } from './Kontonummer'; +import { useOrganisasjonerOgTilgangerContext } from '../OrganisasjonerOgTilgangerProvider'; interface Props { overordnetenhet: Hovedenhet; } const OverordnetEnhet = ({ overordnetenhet }: Props) => { + const { organisasjoner } = useOrganisasjonerOgTilgangerContext(); const { forretningsadresse, postadresse } = overordnetenhet; const enhetstype = overordnetenhet.organisasjonsform?.kode === 'ORGL' ? 'Organisasjonsledd' : 'Hovedenhet'; + console.log("overorndet"); + console.log(overordnetenhet); return (
@@ -91,7 +95,9 @@ const OverordnetEnhet = ({ overordnetenhet }: Props) => { - + {organisasjoner[overordnetenhet.organisasjonsnummer].altinntilgang.endreBankkontonummerForRefusjoner && ( + + )}
); diff --git a/src/Pages/OmVirksomheten/Underenhet.tsx b/src/Pages/OmVirksomheten/Underenhet.tsx index 7d06cf396..3575acf3f 100644 --- a/src/Pages/OmVirksomheten/Underenhet.tsx +++ b/src/Pages/OmVirksomheten/Underenhet.tsx @@ -10,6 +10,7 @@ import { BodyShort, Heading, HStack, Label } from '@navikt/ds-react'; import { KontaktinfoUnderenhet } from './Kontaktinfo'; import { formatOrgNr } from '../../utils/util'; import { KontonummerUnderenhet } from './Kontonummer'; +import { useOrganisasjonerOgTilgangerContext } from '../OrganisasjonerOgTilgangerProvider'; interface Props { underenhet: UnderenhetType; @@ -17,12 +18,19 @@ interface Props { const Underenhet = ({ underenhet }: Props) => { const adresse = underenhet?.beliggenhetsadresse; + const { organisasjoner } = useOrganisasjonerOgTilgangerContext(); + console.log(underenhet) return ( <> - - + + @@ -74,9 +82,12 @@ const Underenhet = ({ underenhet }: Props) => { - + - + {organisasjoner[underenhet.overordnetEnhet].altinntilgang // kontonummer tilgangstyres på overordnet enhet, ikke på underenhet. Dersom bruker har tilgang på overordnet enhet, har hen også tilgang på underenhet (https://nav-it.slack.com/archives/CKZADNFBP/p1736263494923189) + .endreBankkontonummerForRefusjoner && ( + + )} ); diff --git a/src/api/enhetsregisteretApi.ts b/src/api/enhetsregisteretApi.ts index 2c7b78054..4a5a5b052 100644 --- a/src/api/enhetsregisteretApi.ts +++ b/src/api/enhetsregisteretApi.ts @@ -56,7 +56,6 @@ const Underenhet = z postadresse: true, forretningsadresse: true, hjemmeside: true, - overordnetEnhet: true, harRegistrertAntallAnsatte: true, antallAnsatte: true, beliggenhetsadresse: true, diff --git a/src/mocks/handlers.ts b/src/mocks/handlers.ts index 2df3b141f..89d9d8e59 100644 --- a/src/mocks/handlers.ts +++ b/src/mocks/handlers.ts @@ -1,8 +1,6 @@ import { storageHandlers } from './handlers/storageHandler'; import { kontaktinfoHandler } from './handlers/kontaktinfoHandler'; import { http, HttpResponse } from 'msw'; -import { orgnr } from './brukerApi/helpers'; -import { faker } from '@faker-js/faker'; import { hentKalenderavtalerResolver, hentNotifikasjonerResolver, @@ -11,11 +9,13 @@ import { hentSakByIdResolver, } from './brukerApi/resolvers'; import { kontonummerHandlers } from './handlers/kontonummerHandler'; +import { eregHandlers } from './handlers/eregHandlers'; +import { Demoprofil } from '../hooks/useDemoprofil'; /** * generelle handlers som har lik oppførsel uavhengig av profil. */ -export const handlers = [ +export const handlers = (demoprofil: Demoprofil) => [ // varslingStatusHandler http.post('/min-side-arbeidsgiver/api/varslingStatus/v1', () => HttpResponse.json({ @@ -68,126 +68,7 @@ export const handlers = [ ), // eregHandlers - http.get( - '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/underenheter/:orgnr', - ({ params }) => { - const parentOrgnummer = orgnr(); - const orgNr = params.orgnr; - return HttpResponse.json({ - organisasjonsnummer: params.orgnr, - navn: faker.company.name(), - organisasjonsform: { - kode: 'BEDR', - beskrivelse: 'Bedrift', - _links: { - self: { - href: '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/organisasjonsformer/BEDR', - }, - }, - }, - postadresse: { - land: 'Norge', - landkode: 'NO', - postnummer: '1358', - poststed: 'JAR', - adresse: [faker.location.streetAddress()], - kommune: 'BÆRUM', - kommunenummer: '3024', - }, - registreringsdatoEnhetsregisteret: '2010-12-15', - registrertIMvaregisteret: false, - naeringskode1: { - beskrivelse: 'Administrasjon av finansmarkeder', - kode: '66.110', - }, - antallAnsatte: 42, - overordnetEnhet: orgnr(), - oppstartsdato: '2010-12-15', - datoEierskifte: '2010-12-15', - beliggenhetsadresse: { - land: 'Norge', - landkode: 'NO', - postnummer: '7950', - poststed: 'ABELVÆR', - adresse: [faker.location.streetAddress()], - kommune: 'NÆRØYSUND', - kommunenummer: '5060', - }, - _links: { - self: { - href: - '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/underenheter/' + - orgNr, - }, - overordnetEnhet: { - href: - '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/enheter/' + - parentOrgnummer, - }, - }, - }); - } - ), - - http.get( - '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/enheter/:orgnr', - ({ params }) => - HttpResponse.json({ - organisasjonsnummer: params.orgnr, - navn: 'Presentabel Bygning', - organisasjonsform: { - kode: 'AS', - beskrivelse: 'Aksjeselskap', - _links: { - self: { - href: '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/organisasjonsformer/AS', - }, - }, - }, - hjemmeside: 'foo.bar.baz', - postadresse: { - land: 'Norge', - landkode: 'NO', - postnummer: '2652', - poststed: 'SVINGVOLL', - adresse: ['Sørskei-Tjernet 7'], - kommune: 'GAUSDAL', - kommunenummer: '3441', - }, - registreringsdatoEnhetsregisteret: '2004-12-15', - registrertIMvaregisteret: false, - naeringskode1: { - beskrivelse: 'Administrasjon av finansmarkeder', - kode: '66.110', - }, - antallAnsatte: 0, - forretningsadresse: { - land: 'Norge', - landkode: 'NO', - postnummer: '7950', - poststed: 'ABELVÆR', - adresse: ['Niels Brandtzægs veg 22'], - kommune: 'NÆRØYSUND', - kommunenummer: '5060', - }, - institusjonellSektorkode: { - kode: '3200', - beskrivelse: 'Banker', - }, - registrertIForetaksregisteret: false, - registrertIStiftelsesregisteret: false, - registrertIFrivillighetsregisteret: false, - konkurs: false, - underAvvikling: false, - underTvangsavviklingEllerTvangsopplosning: false, - maalform: 'Bokmål', - _links: { - self: { - href: '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/enheter/181488484', - }, - }, - }) - ), + ...eregHandlers(demoprofil), // sykefravaerstatistikkHandler http.get('/min-side-arbeidsgiver/api/sykefravaerstatistikk/:orgnr', () => diff --git a/src/mocks/handlers/eregHandlers.ts b/src/mocks/handlers/eregHandlers.ts new file mode 100644 index 000000000..23c2b0680 --- /dev/null +++ b/src/mocks/handlers/eregHandlers.ts @@ -0,0 +1,153 @@ +import { http, HttpResponse } from 'msw'; +import { orgnr } from '../brukerApi/helpers'; +import { faker } from '@faker-js/faker'; +import { Demoprofil } from '../../hooks/useDemoprofil'; +import { dagligLederOrganisasjon } from '../scenarios/dagligLederScenario'; +import { nærmesteLederOrganisasjon } from '../scenarios/nærmesteLederScenario'; +import { regnskapsforerOrganisasjoner } from '../scenarios/regnskapsforerScenario'; + +type organisasjon = { + orgnr: string; + navn: string; + organisasjonsform: string; + underenheter: organisasjon[]; +}; + +const organisasjoner: { + [key: Demoprofil]: organisasjon[]; +} = { + DagligLeder: [dagligLederOrganisasjon], + NarmesteLeder: [nærmesteLederOrganisasjon], + Regnskapsforer: regnskapsforerOrganisasjoner, +}; + +const parentOrgnr = (demoprofil: Demoprofil, underenhetOrgnr: string | readonly string[]) => { + const org = organisasjoner[demoprofil].find((o) => o.underenheter.some((u) => u.orgnr === underenhetOrgnr)); + if (!org) { + throw new Error(`Fant ikke organisasjon med orgnr ${orgnr}`); + } + return org.orgnr; +} + +export const eregHandlers = (demoprofil: Demoprofil) => [ + http.get( + '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/underenheter/:orgnr', + ({ params }) => { + const parentOrgnummer = parentOrgnr(demoprofil, params.orgnr); + const orgNr = params.orgnr; + return HttpResponse.json({ + organisasjonsnummer: params.orgnr, + navn: faker.company.name(), + organisasjonsform: { + kode: 'BEDR', + beskrivelse: 'Bedrift', + _links: { + self: { + href: '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/organisasjonsformer/BEDR', + }, + }, + }, + postadresse: { + land: 'Norge', + landkode: 'NO', + postnummer: '1358', + poststed: 'JAR', + adresse: [faker.location.streetAddress()], + kommune: 'BÆRUM', + kommunenummer: '3024', + }, + registreringsdatoEnhetsregisteret: '2010-12-15', + registrertIMvaregisteret: false, + naeringskode1: { + beskrivelse: 'Administrasjon av finansmarkeder', + kode: '66.110', + }, + antallAnsatte: 42, + overordnetEnhet: parentOrgnummer, + oppstartsdato: '2010-12-15', + datoEierskifte: '2010-12-15', + beliggenhetsadresse: { + land: 'Norge', + landkode: 'NO', + postnummer: '7950', + poststed: 'ABELVÆR', + adresse: [faker.location.streetAddress()], + kommune: 'NÆRØYSUND', + kommunenummer: '5060', + }, + _links: { + self: { + href: + '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/underenheter/' + + orgNr, + }, + overordnetEnhet: { + href: + '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/enheter/' + + parentOrgnummer, + }, + }, + }); + } + ), + + http.get( + '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/enheter/:orgnr', + ({ params }) => + HttpResponse.json({ + organisasjonsnummer: params.orgnr, + navn: 'Presentabel Bygning', + organisasjonsform: { + kode: 'AS', + beskrivelse: 'Aksjeselskap', + _links: { + self: { + href: '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/organisasjonsformer/AS', + }, + }, + }, + hjemmeside: 'foo.bar.baz', + postadresse: { + land: 'Norge', + landkode: 'NO', + postnummer: '2652', + poststed: 'SVINGVOLL', + adresse: ['Sørskei-Tjernet 7'], + kommune: 'GAUSDAL', + kommunenummer: '3441', + }, + registreringsdatoEnhetsregisteret: '2004-12-15', + registrertIMvaregisteret: false, + naeringskode1: { + beskrivelse: 'Administrasjon av finansmarkeder', + kode: '66.110', + }, + antallAnsatte: 0, + forretningsadresse: { + land: 'Norge', + landkode: 'NO', + postnummer: '7950', + poststed: 'ABELVÆR', + adresse: ['Niels Brandtzægs veg 22'], + kommune: 'NÆRØYSUND', + kommunenummer: '5060', + }, + institusjonellSektorkode: { + kode: '3200', + beskrivelse: 'Banker', + }, + registrertIForetaksregisteret: false, + registrertIStiftelsesregisteret: false, + registrertIFrivillighetsregisteret: false, + konkurs: false, + underAvvikling: false, + underTvangsavviklingEllerTvangsopplosning: false, + maalform: 'Bokmål', + _links: { + self: { + href: '/min-side-arbeidsgiver/mock/data.brreg.no/enhetsregisteret/api/enheter/181488484', + }, + }, + }) + ), +]; diff --git a/src/mocks/handlers/kontonummerHandler.ts b/src/mocks/handlers/kontonummerHandler.ts index d20952516..8fd887a40 100644 --- a/src/mocks/handlers/kontonummerHandler.ts +++ b/src/mocks/handlers/kontonummerHandler.ts @@ -39,7 +39,8 @@ export const kontonummerHandlers = [ http.post('/min-side-arbeidsgiver/api/kontonummerStatus/v1', () => HttpResponse.json({ - status: faker.helpers.maybe(() => 'OK', { probability: 0.99 }) ?? 'MANGLER_KONTONUMMER', + status: faker.helpers.maybe(() => 'OK', { probability: 0 }) ?? 'MANGLER_KONTONUMMER', + // status: faker.helpers.maybe(() => 'OK', { probability: 0.99 }) ?? 'MANGLER_KONTONUMMER', }) ), ]; diff --git a/src/mocks/msw.ts b/src/mocks/msw.ts index c4bee49ff..88f2e0826 100644 --- a/src/mocks/msw.ts +++ b/src/mocks/msw.ts @@ -9,8 +9,7 @@ export const startMSW = async () => { const { setupWorker } = await import('msw/browser'); const worker = setupWorker( ...demoScenarios, - ...handlers, - + ...handlers(demoprofil), http.get('/demoprofil', () => HttpResponse.json(demoprofil)), http.get('/min-side-arbeidsgiver/artikler', passthrough), http.post('/collect', () => HttpResponse.json()), diff --git a/src/mocks/scenarios/dagligLederScenario.ts b/src/mocks/scenarios/dagligLederScenario.ts index 4718e1eab..3f3150a82 100644 --- a/src/mocks/scenarios/dagligLederScenario.ts +++ b/src/mocks/scenarios/dagligLederScenario.ts @@ -31,48 +31,51 @@ const alleTilganger = [ '5078:1', // rekruttering '5278:1', // tilskuddsbrev '5902:1', // yrkesskade + '5902:1', // yrkesskade + '2896:87', // endreBankkontonummerForRefusjoner +]; +const underenheter = [ + { + orgnr: orgnr(), + underenheter: [], + navn: faker.company.name(), + organisasjonsform: 'AAFY', + }, + { + orgnr: orgnr(), + underenheter: [], + navn: faker.company.name(), + organisasjonsform: 'FLI', + }, + { + orgnr: orgnr(), + navn: faker.company.name(), + organisasjonsform: 'BEDR', + underenheter: [], + }, ]; +export const dagligLederOrganisasjon = { + orgnr: orgnr(), + navn: faker.company.name(), + organisasjonsform: 'AS', + underenheter, +}; + export const dagligLederScenario = [ http.get('/min-side-arbeidsgiver/api/userInfo/v2', () => { - const underenheter = [ - { - orgnr: orgnr(), - underenheter: [], - navn: faker.company.name(), - organisasjonsform: 'AAFY', - }, - { - orgnr: orgnr(), - underenheter: [], - navn: faker.company.name(), - organisasjonsform: 'FLI', - }, - { - orgnr: orgnr(), - navn: faker.company.name(), - organisasjonsform: 'BEDR', - underenheter: [], - }, - ]; - const organisasjon = { - orgnr: orgnr(), - navn: faker.company.name(), - organisasjonsform: 'AS', - underenheter, - }; return HttpResponse.json({ altinnError: false, - organisasjoner: [organisasjon], + organisasjoner: [dagligLederOrganisasjon], tilganger: fromEntries( - alleTilganger.map((tilgang) => [tilgang, underenheter.map((org) => org.orgnr)]) + alleTilganger.map((tilgang) => [tilgang, [dagligLederOrganisasjon.orgnr, ...underenheter.map((org) => org.orgnr)]]) ), digisyfoError: false, digisyfoOrganisasjoner: underenheter.map(({ orgnr, organisasjonsform, navn }) => ({ organisasjon: { OrganizationNumber: orgnr, Name: navn, - ParentOrganizationNumber: organisasjon.orgnr, + ParentOrganizationNumber: dagligLederOrganisasjon.orgnr, OrganizationForm: organisasjonsform, }, antallSykmeldte: faker.number.int({ min: 0, max: 10 }), diff --git "a/src/mocks/scenarios/n\303\246rmesteLederScenario.ts" "b/src/mocks/scenarios/n\303\246rmesteLederScenario.ts" index 241d9da70..14e1f291a 100644 --- "a/src/mocks/scenarios/n\303\246rmesteLederScenario.ts" +++ "b/src/mocks/scenarios/n\303\246rmesteLederScenario.ts" @@ -1,10 +1,10 @@ import { http, HttpResponse } from 'msw'; import { orgnr } from '../brukerApi/helpers'; import { faker } from '@faker-js/faker'; -import { fromEntries } from '../../utils/Record'; import { hentKalenderavtalerResolver, - hentNotifikasjonerResolver, hentSakByIdResolver, + hentNotifikasjonerResolver, + hentSakByIdResolver, hentSakerResolver, sakstyperResolver, } from '../brukerApi/resolvers'; @@ -24,38 +24,39 @@ const nærmesteLederKalenderavtaler = alleKalenderavtaler.filter(({ merkelapp }) nærmesteLederMerkelapper.includes(merkelapp as Merkelapp) ); +const underenheter = [ + { + orgnr: orgnr(), + navn: faker.company.name(), + organisasjonsform: 'BEDR', + underenheter: [], + }, + { + orgnr: orgnr(), + navn: faker.company.name(), + organisasjonsform: 'BEDR', + underenheter: [], + }, +]; +export const nærmesteLederOrganisasjon = { + orgnr: orgnr(), + navn: faker.company.name(), + organisasjonsform: 'AS', + underenheter, +}; + export const nærmesteLederScenario = [ http.get('/min-side-arbeidsgiver/api/userInfo/v2', () => { - const underenheter = [ - { - orgnr: orgnr(), - navn: faker.company.name(), - organisasjonsform: 'BEDR', - underenheter: [], - }, - { - orgnr: orgnr(), - navn: faker.company.name(), - organisasjonsform: 'BEDR', - underenheter: [], - }, - ]; - const organisasjon = { - orgnr: orgnr(), - navn: faker.company.name(), - organisasjonsform: 'AS', - underenheter, - }; return HttpResponse.json({ altinnError: false, - organisasjoner: [organisasjon], + organisasjoner: [nærmesteLederOrganisasjon], tilganger: {}, digisyfoError: false, digisyfoOrganisasjoner: underenheter.map(({ orgnr, organisasjonsform, navn }) => ({ organisasjon: { OrganizationNumber: orgnr, Name: navn, - ParentOrganizationNumber: organisasjon.orgnr, + ParentOrganizationNumber: nærmesteLederOrganisasjon.orgnr, OrganizationForm: organisasjonsform, }, antallSykmeldte: faker.number.int({ min: 0, max: 10 }), diff --git a/src/mocks/scenarios/regnskapsforerScenario.ts b/src/mocks/scenarios/regnskapsforerScenario.ts index 2c48d3d83..24c0cc97b 100644 --- a/src/mocks/scenarios/regnskapsforerScenario.ts +++ b/src/mocks/scenarios/regnskapsforerScenario.ts @@ -2,12 +2,12 @@ import { http, HttpResponse } from 'msw'; import { faker } from '@faker-js/faker'; import { orgnr } from '../brukerApi/helpers'; import { fromEntries } from '../../utils/Record'; -import { AltinnTilgang } from '../../hooks/useUserInfo'; import { alleSaker } from '../brukerApi/alleSaker'; import { Merkelapp } from '../brukerApi/alleMerkelapper'; import { hentKalenderavtalerResolver, - hentNotifikasjonerResolver, hentSakByIdResolver, + hentNotifikasjonerResolver, + hentSakByIdResolver, hentSakerResolver, sakstyperResolver, } from '../brukerApi/resolvers'; @@ -16,31 +16,30 @@ import { alleNotifikasjoner } from '../brukerApi/alleNotifikasjoner'; const tilganger = [ '4936:1', // inntektsmelding - '5902:1', // yrkesskade '5384:1', // ekspertbistand '4826:1', // utsendtArbeidstakerEØS ]; +const underenheter = Array.from({ + length: faker.number.int({ min: 0, max: 5 }), +}).map(() => ({ + orgnr: orgnr(), + underenheter: [], + navn: faker.company.name(), + organisasjonsform: 'BEDR', +})); + +export const regnskapsforerOrganisasjoner = Array.from({ length: 100 }).map(() => ({ + orgnr: orgnr(), + navn: faker.company.name(), + organisasjonsform: 'AS', + underenheter: underenheter +})); + const regnskapsforerUserInfoScenario = http.get('/min-side-arbeidsgiver/api/userInfo/v2', () => { - const underenheter: AltinnTilgang[] = []; - const organisasjoner = Array.from({ length: 100 }).map(() => ({ - orgnr: orgnr(), - navn: faker.company.name(), - organisasjonsform: 'AS', - underenheter: Array.from({ length: faker.number.int({ min: 0, max: 5 }) }).map(() => { - const underenhet = { - orgnr: orgnr(), - underenheter: [], - navn: faker.company.name(), - organisasjonsform: 'BEDR', - }; - underenheter.push(underenhet); - return underenhet; - }), - })); return HttpResponse.json({ altinnError: false, - organisasjoner: organisasjoner, + organisasjoner: regnskapsforerOrganisasjoner, tilganger: fromEntries( tilganger.map((tilgang) => [tilgang, underenheter.map((org) => org.orgnr)]) ),