Skip to content

Commit

Permalink
kan legge til mer info for dry-run regulering
Browse files Browse the repository at this point in the history
  • Loading branch information
RamziAbuQassim committed May 3, 2024
1 parent 8a96903 commit 34955ac
Show file tree
Hide file tree
Showing 3 changed files with 138 additions and 48 deletions.
83 changes: 59 additions & 24 deletions src/api/reguleringApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,36 +32,71 @@ export async function startRegulering(args: { fraOgMedMåned: string; supplement
}

export async function dryRunRegulering(args: {
fraOgMedMåned: string;
grunnbeløp: number;
kjøringsdato: string;
omregningsfaktor: string;
startDatoRegulering: string;
gjeldendeSatsFraOgMed: string;
supplement: Nullable<File | string>;
nyttGrunnbeløp: Nullable<{
virkningstidspunkt: string;
ikrafttredelse: Nullable<string>;
grunnbeløp: string;
omregningsfaktor: string;
}>;
}) {
const url = `/reguleringer/automatisk/dry`;
const method = 'POST';

if (args.supplement instanceof File) {
const formData = new FormData();
formData.append('file', args.supplement);
formData.append('fraOgMedMåned', args.fraOgMedMåned);
formData.append('omregningsfaktor', args.omregningsfaktor);
formData.append('grunnbeløp', args.grunnbeløp.toString());
formData.append('kjøringsdato', args.kjøringsdato);

return apiClient({ url: url, method: method, body: formData });
if (!args.nyttGrunnbeløp) {
if (args.supplement instanceof File) {
const formData = new FormData();
formData.append('startDatoRegulering', args.startDatoRegulering);
formData.append('gjeldendeSatsFra', args.gjeldendeSatsFraOgMed);
formData.append('file', args.supplement);
return apiClient({ url: url, method: method, body: formData });
} else {
return apiClient({
url: url,
method: method,
body: {
startDatoRegulering: args.startDatoRegulering,
gjeldendeSatsFra: args.gjeldendeSatsFraOgMed,
dryRunGrunnbeløp: null,
supplement: args.supplement,
},
});
}
} else {
return apiClient({
url: url,
method: method,
body: {
fraOgMedMåned: args.fraOgMedMåned,
grunnbeløp: args.grunnbeløp,
omregningsfaktor: args.omregningsfaktor,
kjøringsdato: args.kjøringsdato,
csv: args.supplement,
},
});
if (args.supplement instanceof File) {
const formData = new FormData();

formData.append('startDatoRegulering', args.startDatoRegulering);
formData.append('gjeldendeSatsFra', args.gjeldendeSatsFraOgMed);
formData.append('file', args.supplement);

formData.append('virkningstidspunkt', args.nyttGrunnbeløp.virkningstidspunkt);
if (args.nyttGrunnbeløp.ikrafttredelse) {
formData.append('ikrafttredelse', args.nyttGrunnbeløp.ikrafttredelse);
}
formData.append('grunnbeløp', args.nyttGrunnbeløp.grunnbeløp);
formData.append('omregningsfaktor', args.nyttGrunnbeløp.omregningsfaktor);

return apiClient({ url: url, method: method, body: formData });
} else {
return apiClient({
url: url,
method: method,
body: {
startDatoRegulering: args.startDatoRegulering,
gjeldendeSatsFra: args.gjeldendeSatsFraOgMed,
dryRunGrunnbeløp: {
virkningstidspunkt: args.nyttGrunnbeløp.virkningstidspunkt,
ikrafttredelse: args.nyttGrunnbeløp.ikrafttredelse,
grunnbeløp: args.nyttGrunnbeløp.grunnbeløp,
omregningsfaktor: args.nyttGrunnbeløp.omregningsfaktor,
csv: args.supplement,
},
},
});
}
}
}

Expand Down
12 changes: 12 additions & 0 deletions src/pages/drift/components/regulering/G-regulering.module.less
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,18 @@
gap: @spacing;
}

.nyGrunnbeløpsForm {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: @spacing-s;
margin-bottom: @spacing-s;
}

.omregnignsfaktorLabel {
display: flex;
gap: @spacing-xxs;
}

.supplementContainer {
display: flex;
flex-direction: column;
Expand Down
91 changes: 67 additions & 24 deletions src/pages/drift/components/regulering/G-regulering.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import {
Radio,
Textarea,
Label,
Checkbox,
HelpText,
} from '@navikt/ds-react';
import { useState, useEffect } from 'react';

Expand All @@ -21,7 +23,7 @@ import { DatePicker, MonthPicker } from '~src/components/inputs/datePicker/DateP
import { pipe } from '~src/lib/fp';
import { useApiCall } from '~src/lib/hooks';
import { Nullable } from '~src/lib/types';
import { toIsoDateOnlyString, toIsoMonthOrNull } from '~src/utils/date/dateUtils';
import { toIsoDateOnlyString, toIsoMonthOrNull, toStringDateOrNull } from '~src/utils/date/dateUtils';

import styles from './G-regulering.module.less';

Expand Down Expand Up @@ -138,25 +140,41 @@ const ReguleringPanel = () => {

const DryRunPanel = () => {
const [dryRunStatus, dryRun] = useApiCall(dryRunRegulering);
const [startDatoDryRun, setStartDatoDryRun] = useState<Nullable<Date>>(null);

const [startDatoRgulering, setStartDatoRegulering] = useState<Nullable<Date>>(null);
const [gjeldendeSatsFra, setGjeldendeSatsFra] = useState<Nullable<Date>>(null);
const [supplementValue, setSupplementValue] = useState<Nullable<string | File>>(null);

const [nyGrunnbeløp, setNyGrunnbeløp] = useState<boolean>(false);
const [virkningstidspunkt, setVirkningstidspunkt] = useState<Nullable<Date>>(null);
const [ikrafttredelse, setIkrafttredelse] = useState<Nullable<Date>>(null);
const [gverdiDryRun, setGVerdiDryRun] = useState<Nullable<number>>(null);
const [omregningsfaktor, setOmregningsfaktor] = useState<Nullable<string>>(null);
const [kjøringsdato, setkjøringsdato] = useState<Nullable<Date>>(null);
const [supplementValue, setSupplementValue] = useState<Nullable<string | File>>(null);

const handleSubmit = () => {
if (startDatoDryRun && gverdiDryRun && omregningsfaktor && kjøringsdato) {
if (nyGrunnbeløp) {
if (virkningstidspunkt && gverdiDryRun && omregningsfaktor && gjeldendeSatsFra) {
dryRun({
startDatoRegulering: toIsoMonthOrNull(startDatoRgulering)!,
gjeldendeSatsFraOgMed: toIsoDateOnlyString(gjeldendeSatsFra!),
nyttGrunnbeløp: {
virkningstidspunkt: toIsoDateOnlyString(virkningstidspunkt)!,
ikrafttredelse: toStringDateOrNull(ikrafttredelse),
grunnbeløp: gverdiDryRun.toString(),
omregningsfaktor: omregningsfaktor,
},
supplement: supplementValue,
});
} else {
console.log('du må fylle ut alle feltene før du kan kjøre dry-run');
}
} else {
dryRun({
fraOgMedMåned: toIsoMonthOrNull(startDatoDryRun)!,
grunnbeløp: gverdiDryRun,
omregningsfaktor: omregningsfaktor,
kjøringsdato: toIsoDateOnlyString(kjøringsdato),
startDatoRegulering: toIsoMonthOrNull(startDatoRgulering)!,
gjeldendeSatsFraOgMed: toIsoDateOnlyString(gjeldendeSatsFra!),
nyttGrunnbeløp: null,
supplement: supplementValue,
});
} else {
console.log(
'reguleringsdato, g-verdi, omregningsfaktor og kjøringsdato må fylles ut før du kan kjøre dry-run',
);
}
};

Expand All @@ -166,21 +184,46 @@ const DryRunPanel = () => {
<div className={styles.inputContainers}>
<div className={styles.datoOgVerdiContainer}>
<MonthPicker
label="Velg reguleringsdato"
value={startDatoDryRun}
onChange={(dato) => setStartDatoDryRun(dato)}
label="Start dato for regulering"
value={startDatoRgulering}
onChange={(dato) => setStartDatoRegulering(dato)}
/>
<DatePicker label="Kjøringsdato" value={kjøringsdato} onChange={setkjøringsdato} />
</div>
<div className={styles.datoOgVerdiContainer}>
<TextField label="G-verdi" onChange={(v) => setGVerdiDryRun(Number(v.target.value))} />
<TextField
label="Omregningsfaktor (. som desimalltegn)"
onChange={(v) => setOmregningsfaktor(v.target.value)}
<DatePicker
label="Gjeldende sats fra og med"
hjelpetekst="Bestemmer hvilken gjelden sats som skal brukes i reguleringen"
value={gjeldendeSatsFra}
onChange={setGjeldendeSatsFra}
/>
</div>
</div>
<Checkbox onChange={() => setNyGrunnbeløp(!nyGrunnbeløp)} checked={nyGrunnbeløp}>
Legg til nytt grunnbeløp
</Checkbox>

{nyGrunnbeløp && (
<div className={styles.nyGrunnbeløpsForm}>
<DatePicker
label="Virkningstidspunkt"
value={virkningstidspunkt}
onChange={setVirkningstidspunkt}
/>
<DatePicker
label="Ikrafttredelse"
hjelpetekst="Settes til virkningstidspunkt dersom den ikke er utfylt"
value={ikrafttredelse}
onChange={setIkrafttredelse}
/>
<TextField label="G-verdi" onChange={(v) => setGVerdiDryRun(Number(v.target.value))} />
<TextField
label={
<div className={styles.omregnignsfaktorLabel}>
Omregningsfaktor <HelpText>Bruk punktum som desimaltegn</HelpText>
</div>
}
onChange={(v) => setOmregningsfaktor(v.target.value)}
/>
</div>
)}
</div>
<ReguleringsSupplement onSupplementChange={setSupplementValue} />

<Button onClick={handleSubmit} loading={RemoteData.isPending(dryRunStatus)}>
Expand Down

0 comments on commit 34955ac

Please sign in to comment.