Untitled

mail@pastecode.io avatar
unknown
typescript
15 days ago
5.8 kB
5
Indexable
Never
// utils

import MKV from "./index";
import * as KV from "../kodeverk";

export const erBehandlingAvSed = (sakstype, behandlingstema) => {
  switch (behandlingstema) {
    case MKV.Koder.behandlinger.behandlingstema.REGISTRERING_UNNTAK_NORSK_TRYGD_UTSTASJONERING:
    case MKV.Koder.behandlinger.behandlingstema.REGISTRERING_UNNTAK_NORSK_TRYGD_ØVRIGE:
    case MKV.Koder.behandlinger.behandlingstema.BESLUTNING_LOVVALG_NORGE:
    case MKV.Koder.behandlinger.behandlingstema.BESLUTNING_LOVVALG_ANNET_LAND:
    case MKV.Koder.behandlinger.behandlingstema.ANMODNING_OM_UNNTAK_HOVEDREGEL:
      return sakstype === MKV.Koder.sakstyper.EU_EOS;
    default:
      return false;
  }
};

export const lovvalgsbestemmelseTilObjekt = (bestemmelseKode) => {
  return KV.kodeTilObjekt(bestemmelseKode, MKV.Kodekombinasjoner.alleLovvalg);
};

export const erStorbritanniaKonvBestemmelse = (bestemmelseKode) =>
  Boolean(MKV.Koder.lovvalgsbestemmelser.lovvalgbestemmelser_konv_efta_storbritannia[bestemmelseKode]);

export const enesteLandErStorbritannia = (landkoder) =>
  landkoder?.length === 1 && landkoder[0] === MKV.Koder.landkoder.GB;

export const erUtsendt = (behandlingstema) =>
  [
    MKV.Koder.behandlinger.behandlingstema.UTSENDT_ARBEIDSTAKER,
    MKV.Koder.behandlinger.behandlingstema.UTSENDT_SELVSTENDIG,
  ].includes(behandlingstema);

export const kanHaFlereSoknadsland = (behandlingstema) =>
  [
    MKV.Koder.behandlinger.behandlingstema.ARBEID_FLERE_LAND,
    MKV.Koder.behandlinger.behandlingstema.BESLUTNING_LOVVALG_NORGE,
    MKV.Koder.behandlinger.behandlingstema.BESLUTNING_LOVVALG_ANNET_LAND,
  ].includes(behandlingstema);

export const erAvsluttetEllerMidlertidigBeslutning = (behandlingsstatus) =>
  [
    MKV.Koder.behandlinger.behandlingsstatus.AVSLUTTET,
    MKV.Koder.behandlinger.behandlingsstatus.MIDLERTIDIG_LOVVALGSBESLUTNING,
  ].includes(behandlingsstatus);

export const erOpphørtEllerHenlagtEllerBortfaltEllerAnnullert = (saksstatus) =>
  [
    MKV.Koder.saksstatuser.OPPHØRT,
    MKV.Koder.saksstatuser.HENLAGT,
    MKV.Koder.saksstatuser.HENLAGT_BORTFALT,
    MKV.Koder.saksstatuser.ANNULLERT,
  ].includes(saksstatus);


// varsler

import * as Api from "../../../../services/api";
import { useFeatureToggle } from "../../../../featuretoggle";
import { MELOSYS_KONVENSJON_EFTA_LAND_OG_STORBRITANNIA } from "../../../../featuretoggle/toggleNavn";
import classNames from "classnames";
import * as Utils from "../../../../utils";
import MKV, { MKVUtils } from "../../../../melosyskodeverk";
import * as KV from "../../../../kodeverk";
import * as Nav from "../../../../navFrontend";

const { OVERSTYRT_AV_SAKSBEHANDLER } = MKV.Koder.begrunnelser.inngangsvilkaar;

interface VarslerProps {
  oppfyllerInngangsvilkar: boolean;
  inngangsvilkaar: Api.Vilkar.Vilkaar | undefined;
  landkoder: Array<string>;
  behandlingstema: string;
}

const Varsler = ({ oppfyllerInngangsvilkar, inngangsvilkaar, landkoder, behandlingstema }: VarslerProps) => {
  const konvensjonStorbritanniaToggleEnabled = useFeatureToggle(MELOSYS_KONVENSJON_EFTA_LAND_OG_STORBRITANNIA);
  const inngangsvilkaarBegrunnelseKoder = inngangsvilkaar?.begrunnelseKoder || [];

  const inngangsvilkaarErOverstyrtAvSaksbehandler =
    inngangsvilkaarBegrunnelseKoder.includes(OVERSTYRT_AV_SAKSBEHANDLER);

  const inngangsvilkaarErOverstyrtEllerIkkeOppfylt =
    inngangsvilkaarErOverstyrtAvSaksbehandler || !oppfyllerInngangsvilkar;

  const inngangsvilkaarErOppfyltOgIkkeOverstyrt = oppfyllerInngangsvilkar && !inngangsvilkaarErOverstyrtAvSaksbehandler;

  const oppfyllerInngangsvilkarCl = classNames({
    liste__element: true,
    "liste__element--oppfylt": inngangsvilkaarErOppfyltOgIkkeOverstyrt,
    "liste__element--ikkeoppfylt": inngangsvilkaarErOverstyrtEllerIkkeOppfylt,
  });

  if (Utils._isEmpty(inngangsvilkaar)) {
    return (
      <ul className="betingelser__liste">
        <li className={oppfyllerInngangsvilkarCl}>Teknisk feil, finner ingen inngangsvilkår.</li>
      </ul>
    );
  }

  const oppfyltTekst = `Søknaden oppfyller${
    inngangsvilkaarErOppfyltOgIkkeOverstyrt ? " " : " ikke "
  }inngangsvilkårene for EU/EØS-saker etter forordning 883/2004.`;

  const visbareInngangsvilkaarBegrunnelseKoder = inngangsvilkaarBegrunnelseKoder.filter(
    (kode) => kode !== OVERSTYRT_AV_SAKSBEHANDLER
  );

  const visStorbritanniaKonvensjonTekst =
    konvensjonStorbritanniaToggleEnabled &&
    MKVUtils.erUtsendt(behandlingstema) &&
    MKVUtils.enesteLandErStorbritannia(landkoder);

  return (
    <div className="vurderinginngang_eu_eos">
      <ul className="betingelser__liste">
        <li className={oppfyllerInngangsvilkarCl}>{oppfyltTekst}</li>
        {inngangsvilkaarErOverstyrtEllerIkkeOppfylt &&
          visbareInngangsvilkaarBegrunnelseKoder.map((begrunnelseKode) => (
            <li key={begrunnelseKode} className={oppfyllerInngangsvilkarCl}>
              {KV.kodeTilTerm(begrunnelseKode, MKV.KTObjects.begrunnelser.inngangsvilkaar)}
            </li>
          ))}
      </ul>
      {inngangsvilkaarErOverstyrtEllerIkkeOppfylt && (
        <Nav.Alert variant="info">
          {visStorbritanniaKonvensjonTekst && (
            <p className="storbritannia-konv-tekst">
              Husk at du må vurdere om inngangsvilkårene i konvensjonen med Storbritannia av 30. juni 2023, eller
              separasjonsavtalen av 28. januar 2020, er oppfylt.
            </p>
          )}
          Du har to valg:
          <ul>
            <li>Hvis inngangsvilkår ikke er oppfylt, må du avslutte saken fra behandlingsmenyen</li>
            <li>Hvis inngangsvilkår er oppfylt, kan du fortsette behandlingen som normalt</li>
          </ul>
        </Nav.Alert>
      )}
    </div>
  );
};

export default Varsler;
Leave a Comment