From d9a5cca2b04401d7d7b7fe5a34258e094d50499b Mon Sep 17 00:00:00 2001 From: Aleksei Poroshin Date: Wed, 4 Dec 2024 11:00:28 +0100 Subject: [PATCH 1/7] La til brev i behandlet jp --- .../SendBrevBehandletJp.tsx | 55 +++++++++++++++++++ .../sendBrevBehandletJp.less | 7 +++ src/app/components/brev/BrevComponent.tsx | 21 ++++++- src/app/constants/routes.js | 1 + src/app/containers/JournalpostRouter.tsx | 2 + .../JournalpostAlleredeBehandlet.tsx | 21 +++++++ src/app/i18n/nb.json | 4 ++ 7 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx create mode 100644 src/app/brev-behandlet-journalpost/sendBrevBehandletJp.less diff --git a/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx b/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx new file mode 100644 index 000000000..affb9efc2 --- /dev/null +++ b/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx @@ -0,0 +1,55 @@ +import React, { useEffect } from 'react'; + +import { FormattedMessage } from 'react-intl'; +import { useSelector } from 'react-redux'; +import { useLocation, useNavigate } from 'react-router-dom'; +import { Heading } from '@navikt/ds-react'; + +import { RootStateType } from 'app/state/RootState'; +import { ROUTES } from 'app/constants/routes'; +import BrevComponent from 'app/components/brev/BrevComponent'; + +import './sendBrevBehandletJp.less'; + +const SendBrevBehandletJp: React.FC = () => { + const navigate = useNavigate(); + + const location = useLocation(); + + const journalpost = useSelector((state: RootStateType) => state.felles.journalpost); + + // Redirect tilbake ved side reload + useEffect(() => { + if (!journalpost) { + navigate(location.pathname.replace(ROUTES.BREV_BEHANDLET_JP, '')); + } + }, []); + + if (!journalpost) { + return null; + } + + const { journalpostId, sak, norskIdent } = journalpost; + + if (!norskIdent || !sak?.sakstype) { + return null; + } + + return ( +
+ + + + + +
+ ); +}; + +export default SendBrevBehandletJp; diff --git a/src/app/brev-behandlet-journalpost/sendBrevBehandletJp.less b/src/app/brev-behandlet-journalpost/sendBrevBehandletJp.less new file mode 100644 index 000000000..8a0e27846 --- /dev/null +++ b/src/app/brev-behandlet-journalpost/sendBrevBehandletJp.less @@ -0,0 +1,7 @@ +.sendBrevBehandletJp { + margin-top: 2.5rem; + + .submitButton.navds-button { + margin-top: 0.5rem; + } +} diff --git a/src/app/components/brev/BrevComponent.tsx b/src/app/components/brev/BrevComponent.tsx index 42f4b9a9c..714fbdee5 100644 --- a/src/app/components/brev/BrevComponent.tsx +++ b/src/app/components/brev/BrevComponent.tsx @@ -1,5 +1,6 @@ import React, { useEffect, useState } from 'react'; import { Formik, Form } from 'formik'; +import { useNavigate } from 'react-router-dom'; import hash from 'object-hash'; import { FormattedMessage } from 'react-intl'; import { Alert, Button, ErrorMessage, Modal } from '@navikt/ds-react'; @@ -31,6 +32,7 @@ interface BrevProps { journalpostId?: string; sendBrevUtenModal?: boolean; brevFraModal?: boolean; + tilbake?: boolean; setVisBrevIkkeSendtInfoboks?: (erBrevSendt: boolean) => void; brevSendtCallback?: () => void; @@ -45,6 +47,7 @@ const BrevComponent: React.FC = ({ journalpostId, sendBrevUtenModal, brevFraModal: brewFraModal, + tilbake, setVisBrevIkkeSendtInfoboks, brevSendtCallback, lukkJournalpostOppgave, @@ -64,6 +67,8 @@ const BrevComponent: React.FC = ({ const [submitet, setSubmitet] = useState(false); const [previewMessageFeil, setPreviewMessageFeil] = useState(undefined); + const navigate = useNavigate(); + useEffect(() => { fetch(`${ApiPath.BREV_MALER}?sakstype=${sakstype}&avsenderApplikasjon=K9PUNSJ`, { credentials: 'include', @@ -338,7 +343,7 @@ const BrevComponent: React.FC = ({ type={sendBrevUtenModal ? 'submit' : 'button'} icon={} > - + {lukkJournalpostOppgave !== undefined && ( @@ -349,7 +354,19 @@ const BrevComponent: React.FC = ({ onClick={() => lukkJournalpostOppgave()} type={'button'} > - + + + )} + + {tilbake && ( + )} diff --git a/src/app/constants/routes.js b/src/app/constants/routes.js index ce2121fae..23fe2f5dd 100644 --- a/src/app/constants/routes.js +++ b/src/app/constants/routes.js @@ -18,4 +18,5 @@ export const ROUTES = { KORRIGERING_ROOT: 'korrigering/', VELG_SOKNAD: 'soknader/', PUNCH: `skjema/:id/`, + BREV_BEHANDLET_JP: 'brev-behandlet-journalpost/', }; diff --git a/src/app/containers/JournalpostRouter.tsx b/src/app/containers/JournalpostRouter.tsx index 2446d0556..e527e7c40 100644 --- a/src/app/containers/JournalpostRouter.tsx +++ b/src/app/containers/JournalpostRouter.tsx @@ -26,6 +26,7 @@ import ErrorFallback from './ErrorFallback'; import KorrigeringAvInntektsmeldingContainer from 'app/søknader/korrigeringAvInntektsmelding/containers/KorrigeringAvInntektsmeldingContainer'; import SendBrevPåFagsak from 'app/brev-fagsak/SendBrevPåFagsak'; import BehandlingAvJournaførtJp from '../fordeling/Komponenter/BehandlingAvJournaførtJp'; +import SendBrevBehandletJp from 'app/brev-behandlet-journalpost/SendBrevBehandletJp'; const JournalpostRouter: React.FC = () => { const { journalpostid } = useParams<{ journalpostid: string }>(); @@ -140,6 +141,7 @@ const JournalpostRouter: React.FC = () => { /> } /> + } /> } /> diff --git a/src/app/fordeling/Komponenter/JournalpostAlleredeBehandlet/JournalpostAlleredeBehandlet.tsx b/src/app/fordeling/Komponenter/JournalpostAlleredeBehandlet/JournalpostAlleredeBehandlet.tsx index 92cab4848..f604405fb 100644 --- a/src/app/fordeling/Komponenter/JournalpostAlleredeBehandlet/JournalpostAlleredeBehandlet.tsx +++ b/src/app/fordeling/Komponenter/JournalpostAlleredeBehandlet/JournalpostAlleredeBehandlet.tsx @@ -26,12 +26,16 @@ import DokumentTypeVelgerForKopiering from '../DokumentTypeVelgerForKopiering'; import ValgAvBehandlingsÅr from '../ValgAvBehandlingsÅr'; import AnnenPart from '../AnnenPart'; import ToSøkere from '../ToSøkere'; +import { useNavigate } from 'react-router'; +import { ROUTES } from 'app/constants/routes'; const JournalpostAlleredeBehandlet: React.FC = () => { const [visKanIkkeKopiere, setVisKanIkkeKopiere] = useState(false); const [behandlingsAar, setBehandlingsAar] = useState(undefined); const [toSokereIJournalpost, setToSokereIJournalpost] = useState(false); + const navigate = useNavigate(); + const dispatch = useDispatch>(); const setIdentAction = (søkerId: string, pleietrengendeId?: string, annenSokerIdent?: string) => @@ -152,6 +156,13 @@ const JournalpostAlleredeBehandlet: React.FC = () => { window.location.href = getEnvironmentVariable('K9_LOS_URL'); }; + const handleGåToSendBrev = () => { + // Redirect to brev side + navigate( + `${ROUTES.JOURNALPOST_ROOT.replace(':journalpostid/*', journalpost.journalpostId)}/${ROUTES.BREV_BEHANDLET_JP}`, + ); + }; + const visPleietrengende = !kopierJournalpostSuccess && isDokumenttypeMedPleietrengende; const skalHenteBarn = @@ -276,6 +287,16 @@ const JournalpostAlleredeBehandlet: React.FC = () => { )} + + ); diff --git a/src/app/i18n/nb.json b/src/app/i18n/nb.json index e95cae8bd..c25d9ad15 100644 --- a/src/app/i18n/nb.json +++ b/src/app/i18n/nb.json @@ -228,6 +228,7 @@ "fordeling.journalpostAlleredeBehandlet.tomtIdentIJp.feil": "Det oppsto en feil.", "fordeling.journalpostAlleredeBehandlet.kanIkkeSendeInn.info": "Denne journalposten kan ikke håndteres flere ganger. Ved behov for korrigering, kopier journalposten. Det vil da opprettes en ny oppgave i Los.", "fordeling.journalpostAlleredeBehandlet.kopierJournalpost.btn": "Kopier journalpost", + "fordeling.journalpostAlleredeBehandlet.sendBrevLenke.btn": "Send brev", "fordeling.journalpostAlleredeBehandlet.tilbakeTilLOS.btn": "Tilbake til LOS", "fordeling.journalpostAlleredeBehandlet.kanIkkeKopieres.info.tittel": "Journalposten kan ikke kopieres. En journalpost kan kun kopieres dersom den oppfyller alle de følgende kriteriene.", "fordeling.journalpostAlleredeBehandlet.kanIkkeKopieres.info.1": "Må være inngående journalpost", @@ -803,9 +804,12 @@ "sendBrevPåFagsak.header": "Send brev og lukk oppgave i LOS", + "sendBrevBehandletJournalpost.header": "Send brev", + "brevComponent.btn.forhåndsvisBrev": "Forhåndsvis brev", "brevComponent.btn.lukkOppgave": "Lukk oppgave", "brevComponent.btn.sendBrev": "Send brev", + "brevComponent.btn.tilbake": "Tilbake", "brevComponent.alert.visSammeBrevError": " Brevet er sendt. Du må endre mottaker eller innhold for å sende nytt brev.", "brevComponent.alert.sendBrevFeilet": "Sending av brev feilet.", "brevComponent.alert.brevErSendt": "Brev sendt! Du kan nå sende nytt brev til annen mottaker.", From 1d13da67267fcf0bf8ed81c6e89a23214cb23670 Mon Sep 17 00:00:00 2001 From: Aleksei Poroshin Date: Wed, 4 Dec 2024 11:48:43 +0100 Subject: [PATCH 2/7] Send brev uten sak --- src/app/i18n/nb.json | 7 ++++--- .../SendBrevIAvsluttetSak.tsx | 20 ++++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/app/i18n/nb.json b/src/app/i18n/nb.json index c25d9ad15..f2ff06adb 100644 --- a/src/app/i18n/nb.json +++ b/src/app/i18n/nb.json @@ -790,8 +790,8 @@ "opprettJournalpostInngang.ingress": "Skal du gjøre rettelser i punsj, kan du opprette ny journalpost her.", "opprettJournalpostInngang.link": "Opprett journalpost", - "sendBrevIAvsluttetSakInngang.header": "Send brev i avsluttet sak", - "sendBrevIAvsluttetSakInngang.ingress": "Trenger du å sende brev etter saken er avsluttet, kan du sende brev her.", + "sendBrevIAvsluttetSakInngang.header": "Send brev", + "sendBrevIAvsluttetSakInngang.ingress": "Trenger du å sende brev etter saken er avsluttet eller uten sak, kan du sende brev her.", "sendBrevIAvsluttetSakInngang.link": "Send brev", "sendBrevIAvsluttetSak.error.hentingAvFagsakFeilet": "Henting av fagsaker feilet.", "sendBrevIAvsluttetSak.error.ugyldigFødselsnummer": "Fødselsnummeret er ugyldig", @@ -800,7 +800,8 @@ "sendBrevIAvsluttetSak.velgFagsak.velg": "Velg", "sendBrevIAvsluttetSak.velgFagsak.options": "{fagsakId} (K9 {sakstypeNavn})", "sendBrevIAvsluttetSak.gåTilLOSModal.header": "Brevet er sendt. Du blir nå tatt til LOS.", - "sendBrevIAvsluttetSak.header": "Send brev i avsluttet sak", + "sendBrevIAvsluttetSak.header": "Send brev", + "sendBrevIAvsluttetSak.sendUtenFagsak.checkbox": "Send brev uten fagsak", "sendBrevPåFagsak.header": "Send brev og lukk oppgave i LOS", diff --git a/src/app/send-brev-i-avsluttetSak/SendBrevIAvsluttetSak.tsx b/src/app/send-brev-i-avsluttetSak/SendBrevIAvsluttetSak.tsx index 3da40deb8..3ea7ca043 100644 --- a/src/app/send-brev-i-avsluttetSak/SendBrevIAvsluttetSak.tsx +++ b/src/app/send-brev-i-avsluttetSak/SendBrevIAvsluttetSak.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { FormattedMessage } from 'react-intl'; -import { ErrorMessage, Heading, Loader, Modal, Select, TextField } from '@navikt/ds-react'; +import { Checkbox, ErrorMessage, Heading, Loader, Modal, Select, TextField } from '@navikt/ds-react'; import SuccessIcon from 'app/assets/SVG/SuccessIcon'; import BrevComponent from 'app/components/brev/BrevComponent'; @@ -20,6 +20,7 @@ const SendBrevIAvsluttetSak = () => { const [valgtFagsak, setValgtFagsak] = useState(''); const [visLosModal, setVisLosModal] = useState(false); const [fødselsnummerError, setFødselsnummerError] = useState(false); + const [sendBrevUtenFagsak, setSendBrevUtenFagsak] = useState(false); const gyldigLengdePåSøkerId = søkerId.length === 11; @@ -94,7 +95,7 @@ const SendBrevIAvsluttetSak = () => { } - disabled={fagsaker.length === 0 || sendBrevUtenFagsak} + disabled={fagsaker.length === 0} onChange={(event) => setValgtFagsak(event.target.value)} size="small" > @@ -120,30 +118,17 @@ const SendBrevIAvsluttetSak = () => { {isFetchingFagsaker && } - { - setSendBrevUtenFagsak(!sendBrevUtenFagsak); - }} - checked={sendBrevUtenFagsak} - > - - - {henteFagsakFeilet && ( )} - {(valgtFagsak || sendBrevUtenFagsak) && ( + {valgtFagsak && ( setVisLosModal(true)} /> )} From fbddb8150efea3ec8348a2efaecb810cf252f72c Mon Sep 17 00:00:00 2001 From: Aleksei Poroshin Date: Wed, 4 Dec 2024 18:19:16 +0100 Subject: [PATCH 6/7] valg av tema --- .../SendBrevBehandletJp.tsx | 12 ++++++++++-- .../JournalpostAlleredeBehandlet.tsx | 10 ++++++++++ src/app/i18n/nb.json | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx b/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx index affb9efc2..fd6f5586d 100644 --- a/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx +++ b/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx @@ -8,6 +8,7 @@ import { Heading } from '@navikt/ds-react'; import { RootStateType } from 'app/state/RootState'; import { ROUTES } from 'app/constants/routes'; import BrevComponent from 'app/components/brev/BrevComponent'; +import { getForkortelseFraFordelingDokumenttype } from 'app/utils'; import './sendBrevBehandletJp.less'; @@ -17,6 +18,7 @@ const SendBrevBehandletJp: React.FC = () => { const location = useLocation(); const journalpost = useSelector((state: RootStateType) => state.felles.journalpost); + const fordelingState = useSelector((state: RootStateType) => state.fordelingState); // Redirect tilbake ved side reload useEffect(() => { @@ -31,7 +33,13 @@ const SendBrevBehandletJp: React.FC = () => { const { journalpostId, sak, norskIdent } = journalpost; - if (!norskIdent || !sak?.sakstype) { + const forkortelseFraFordelingDokumenttype = fordelingState.dokumenttype + ? getForkortelseFraFordelingDokumenttype(fordelingState.dokumenttype) + : undefined; + + const sakstype = sak?.sakstype || forkortelseFraFordelingDokumenttype; + + if (!norskIdent || !sakstype) { return null; } @@ -43,7 +51,7 @@ const SendBrevBehandletJp: React.FC = () => { { fordelingState.dokumenttype !== FordelingDokumenttype.OMSORGSPENGER_UT && fordelingState.dokumenttype !== FordelingDokumenttype.KORRIGERING_IM; + const sendBrevDisabled = + !fellesState.journalpost?.sak?.sakstype && + (!fordelingState.dokumenttype || fordelingState.dokumenttype === FordelingDokumenttype.OMSORGSPENGER); + return ( <>
@@ -178,6 +182,11 @@ const JournalpostAlleredeBehandlet: React.FC = () => { + {!fellesState.journalpost?.sak?.sakstype && ( + + + + )} { const prevDokumentType = fordelingState.dokumenttype; @@ -294,6 +303,7 @@ const JournalpostAlleredeBehandlet: React.FC = () => { onClick={handleGåToSendBrev} data-test-id="sendBrevLenkeBtn" type="button" + disabled={sendBrevDisabled} > diff --git a/src/app/i18n/nb.json b/src/app/i18n/nb.json index c25d9ad15..078362c71 100644 --- a/src/app/i18n/nb.json +++ b/src/app/i18n/nb.json @@ -234,6 +234,7 @@ "fordeling.journalpostAlleredeBehandlet.kanIkkeKopieres.info.1": "Må være inngående journalpost", "fordeling.journalpostAlleredeBehandlet.kanIkkeKopieres.info.2": "Kan ikke være kopi av en annen journalpost", "fordeling.journalpostAlleredeBehandlet.kanIkkeKopieres.info.3": "Kan ikke være inntektsmelding uten søknad", + "fordeling.journalpostAlleredeBehandlet.sendBrevInfo": "For å sende et brev, må du velge ytelsestype.", "fosterbarn.btn.slett": "Slett", "fosterbarn.btn.leggTil": "Legg til fosterbarn", From 810838d9fd407c803ae582cf4b643472c9b3a321 Mon Sep 17 00:00:00 2001 From: Aleksei Poroshin Date: Tue, 10 Dec 2024 13:16:54 +0100 Subject: [PATCH 7/7] fix --- src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx b/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx index fd6f5586d..1e9b663ce 100644 --- a/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx +++ b/src/app/brev-behandlet-journalpost/SendBrevBehandletJp.tsx @@ -52,7 +52,7 @@ const SendBrevBehandletJp: React.FC = () => {