Skip to content

Commit 1e038f8

Browse files
committed
Hent kontonummer ved manuell utbetaling
1 parent bf9987e commit 1e038f8

File tree

6 files changed

+97
-6
lines changed

6 files changed

+97
-6
lines changed

Diff for: frontend/mr-admin-flate/src/api/QueryKeys.ts

+1
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,5 @@ export const QueryKeys = {
5757
"utbetaling-for-gjennomforing",
5858
gjennomforingId,
5959
],
60+
kontonummerArrangor: (orgnr: string) => ["kontonummer", orgnr],
6061
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { useSuspenseQuery } from "@tanstack/react-query";
2+
import { QueryKeys } from "../QueryKeys";
3+
import { ArrangorService } from "@mr/api-client-v2";
4+
5+
export function useKontonummerForArrangor(orgnr: string) {
6+
return useSuspenseQuery({
7+
queryKey: QueryKeys.kontonummerArrangor(orgnr),
8+
queryFn: () => ArrangorService.getKontonummerForArrangor({ path: { orgnr } }),
9+
});
10+
}

Diff for: frontend/mr-admin-flate/src/pages/gjennomforing/utbetaling/OpprettUtbetalingForm.tsx

+49-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,16 @@ import {
55
ProblemDetail,
66
} from "@mr/api-client-v2";
77
import { jsonPointerToFieldPath } from "@mr/frontend-common/utils/utils";
8-
import { Button, Heading, HStack, Textarea, TextField, VStack } from "@navikt/ds-react";
8+
import {
9+
Button,
10+
Heading,
11+
HStack,
12+
Textarea,
13+
TextField,
14+
VStack,
15+
Link,
16+
Alert,
17+
} from "@navikt/ds-react";
918
import { useRef } from "react";
1019
import { FormProvider, useForm } from "react-hook-form";
1120
import { useNavigate } from "react-router";
@@ -19,6 +28,7 @@ import { addYear, isValidationError } from "@/utils/Utils";
1928

2029
interface Props {
2130
gjennomforing: GjennomforingDto;
31+
kontonummer?: string;
2232
}
2333

2434
const MIN_BEGRUNNELSE_LENGDE = 10;
@@ -81,9 +91,10 @@ const Schema = z
8191

8292
type InferredOpprettUtbetalingFormSchema = z.infer<typeof Schema>;
8393

84-
export function OpprettUtbetalingForm({ gjennomforing }: Props) {
94+
export function OpprettUtbetalingForm({ gjennomforing, kontonummer }: Props) {
8595
const form = useForm<InferredOpprettUtbetalingFormSchema>({
8696
resolver: zodResolver(Schema),
97+
defaultValues: { kontonummer },
8798
});
8899
const navigate = useNavigate();
89100
const utbetalingId = useRef(window.crypto.randomUUID());
@@ -175,15 +186,37 @@ export function OpprettUtbetalingForm({ gjennomforing }: Props) {
175186
<Heading size="small" level="2">
176187
Betalingsinformasjon
177188
</Heading>
178-
<VStack gap="5" align={"start"}>
189+
<VStack align={"start"}>
179190
<TextField
180191
size="small"
181-
label="Kontonummer"
192+
label="Kontonummer til arrangør"
182193
{...register("kontonummer")}
183194
minLength={11}
184195
maxLength={11}
185196
error={errors.kontonummer?.message}
197+
readOnly
198+
description="Kontonummer hentes automatisk fra Altinn"
186199
/>
200+
<small className="text-balance">
201+
Dersom kontonummer er feil må arrangør oppdatere kontonummer i Altinn. Les mer her
202+
om <EndreKontonummerLink />.
203+
</small>
204+
{!kontonummer ? (
205+
<Alert variant="warning" className="my-5">
206+
<VStack align="start" gap="2">
207+
<Heading spacing size="xsmall" level="3">
208+
Kontonummer mangler for arrangør
209+
</Heading>
210+
<p className="text-balance">
211+
Arrangøren har ikke registrert et kontonummer for utbetaling i Altinn.
212+
Arrangør må legge inn kontonummer før du kan opprette utbetaling til
213+
arrangøren. Les mer om <EndreKontonummerLink /> her.
214+
</p>
215+
</VStack>
216+
</Alert>
217+
) : null}
218+
</VStack>
219+
<VStack>
187220
<TextField
188221
size="small"
189222
label="Valgfritt KID-nummer"
@@ -210,3 +243,15 @@ export function OpprettUtbetalingForm({ gjennomforing }: Props) {
210243
</>
211244
);
212245
}
246+
247+
function EndreKontonummerLink() {
248+
return (
249+
<Link
250+
rel="noopener noreferrer"
251+
href="https://www.nav.no/arbeidsgiver/endre-kontonummer#hvordan"
252+
target="_blank"
253+
>
254+
endring av kontonummer for refusjoner fra Nav
255+
</Link>
256+
);
257+
}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import { Link, useParams } from "react-router";
22
import { useAdminGjennomforingById } from "../../../api/gjennomforing/useAdminGjennomforingById";
33
import { OpprettUtbetalingForm } from "./OpprettUtbetalingForm";
4+
import { useKontonummerForArrangor } from "../../../api/arrangor/useKontonummerForArrangor";
45

56
export function OpprettUtbetalingPage() {
67
const { gjennomforingId } = useParams();
78
const { data: gjennomforing } = useAdminGjennomforingById(gjennomforingId!);
9+
const { data: kontonummer } = useKontonummerForArrangor(
10+
gjennomforing.arrangor.organisasjonsnummer,
11+
);
812

913
return (
1014
<div className="flex flex-col gap-4">
1115
<Link to={`/gjennomforinger/${gjennomforingId}/utbetalinger`}>Tilbake</Link>
12-
<OpprettUtbetalingForm gjennomforing={gjennomforing} />
16+
<OpprettUtbetalingForm gjennomforing={gjennomforing} kontonummer={kontonummer.data} />
1317
</div>
1418
);
1519
}

Diff for: mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/arrangor/ArrangorRoutes.kt

+11-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package no.nav.mulighetsrommet.api.arrangor
33
import arrow.core.Either
44
import io.ktor.http.*
55
import io.ktor.server.application.*
6-
import io.ktor.server.plugins.*
76
import io.ktor.server.request.*
87
import io.ktor.server.response.*
98
import io.ktor.server.routing.*
@@ -13,6 +12,7 @@ import no.nav.mulighetsrommet.api.ApiDatabase
1312
import no.nav.mulighetsrommet.api.arrangor.db.DokumentKoblingForKontaktperson
1413
import no.nav.mulighetsrommet.api.arrangor.model.ArrangorKontaktperson
1514
import no.nav.mulighetsrommet.api.arrangor.model.ArrangorTil
15+
import no.nav.mulighetsrommet.api.clients.kontoregisterOrganisasjon.KontoregisterOrganisasjonClient
1616
import no.nav.mulighetsrommet.api.parameters.getPaginationParams
1717
import no.nav.mulighetsrommet.api.responses.*
1818
import no.nav.mulighetsrommet.brreg.BrregError
@@ -27,6 +27,7 @@ import java.util.*
2727
fun Route.arrangorRoutes() {
2828
val db: ApiDatabase by inject()
2929
val arrangorService: ArrangorService by inject()
30+
val kontoregisterOrganisasjonClient: KontoregisterOrganisasjonClient by inject()
3031

3132
route("arrangorer") {
3233
post("{orgnr}") {
@@ -47,6 +48,15 @@ fun Route.arrangorRoutes() {
4748
call.respondWithStatusResponse(response)
4849
}
4950

51+
get("{orgnr}/kontonummer") {
52+
val orgnr = call.parameters.getOrFail("orgnr").let { Organisasjonsnummer(it) }
53+
val kontonummer = kontoregisterOrganisasjonClient.getKontonummerForOrganisasjon(orgnr)
54+
55+
kontonummer.map { call.respond(it.kontonr) }.mapLeft {
56+
call.respond(HttpStatusCode.InternalServerError, "Klarte ikke hente kontonummer for arrangør")
57+
}
58+
}
59+
5060
get {
5161
val filter = getArrangorFilter()
5262
val pagination = getPaginationParams()

Diff for: mulighetsrommet-api/src/main/resources/web/openapi.yaml

+21
Original file line numberDiff line numberDiff line change
@@ -1491,6 +1491,27 @@ paths:
14911491
schema:
14921492
$ref: "#/components/schemas/Arrangor"
14931493

1494+
1495+
/api/v1/intern/arrangorer/{orgnr}/kontonummer:
1496+
get:
1497+
tags:
1498+
- Arrangor
1499+
operationId: getKontonummerForArrangor
1500+
parameters:
1501+
- in: path
1502+
name: orgnr
1503+
required: true
1504+
schema:
1505+
type: string
1506+
description: 9-sifret organisasjonsnummer
1507+
responses:
1508+
200:
1509+
description: Kontonummer for arrangør
1510+
content:
1511+
text/plain:
1512+
schema:
1513+
type: string
1514+
14941515
/api/v1/intern/arrangorer/{id}/kontaktpersoner:
14951516
get:
14961517
tags:

0 commit comments

Comments
 (0)