Skip to content
This repository was archived by the owner on Sep 29, 2020. It is now read-only.

Commit b03663b

Browse files
committed
TFP-3535: Frontend nytt steg i beregning
1 parent 3f64ae2 commit b03663b

15 files changed

+557
-17
lines changed

packages/behandling-fp/src/panelDefinisjoner/faktaPaneler/FordelingFaktaPanelDef.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class FordelingFaktaPanelDef extends FaktaPanelDef {
1010

1111
getTekstKode = () => 'FordelBeregningsgrunnlag.Title'
1212

13-
getAksjonspunktKoder = () => [aksjonspunktCodes.FORDEL_BEREGNINGSGRUNNLAG]
13+
getAksjonspunktKoder = () => [aksjonspunktCodes.FORDEL_BEREGNINGSGRUNNLAG, aksjonspunktCodes.VURDER_REFUSJON_BERGRUNN]
1414

1515
getKomponent = (props) => <FordelBeregningsgrunnlagFaktaIndex {...props} />
1616

packages/fakta-fordel-beregningsgrunnlag/i18n/nb_NO.json

+38-1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,15 @@
6666
"BeregningInfoPanel.FordelBG.Inntekt": "Inntekt",
6767
"BeregningInfoPanel.FordelBG.Beregningsgrunnlag": "Grunnlag",
6868

69+
"BeregningInfoPanel.RefusjonBG.Tittel": "Endring i refusjon",
70+
"BeregningInfoPanel.RefusjonBG.Aktivitet": "Aktivitet",
71+
"BeregningInfoPanel.RefusjonBG.TidligereUtb": "Tidligere utbetalinger",
72+
"BeregningInfoPanel.RefusjonBG.Direkteutbetaling": "Direkteutbetaling",
73+
"BeregningInfoPanel.RefusjonBG.Periode": "{fom} - {tom}",
74+
"BeregningInfoPanel.RefusjonBG.Arbeidsgiver": "<b>{ag}</b> krever refusjon fra og med {dato}",
75+
"BeregningInfoPanel.RefusjonBG.RefusjonFra": "Endringen i refusjon skal tre i kraft fra og med",
76+
"BeregningInfoPanel.RefusjonBG.Begrunnelse": "Begrunnelse",
77+
6978
"ValidationMessage.NotEmpty": "Feltet må fylles ut",
7079
"ValidationMessage.MinLength": "Du må skrive minst {length} tegn",
7180
"ValidationMessage.MaxLength": "Du kan skrive maksimalt {length} tegn",
@@ -105,6 +114,34 @@
105114
"ValidationMessage.MerEn100Prosent": "Samlet utbetalingsgrad og andel i arbeid bør ikke overskride 100%.",
106115
"ValidationMessage.MerEnNullUtaksprosent" : "Uttak av foreldrepenger i denne perioden er avslått, utbetalingsgrad kan ikke være større enn 0.",
107116
"ValidationMessage.MerEn100ProsentOgOgyldigUtsettlse" : "Samlet utbetalingsgrad og andel i arbeid bør ikke overskride 100%. Søker har ikke 100% stilling, vurder om perioden kan utsettes.",
108-
"ValidationMessage.InvalidOrganisasjonsnummer": "Ugyldig organisasjonsnummer."
117+
"ValidationMessage.InvalidOrganisasjonsnummer": "Ugyldig organisasjonsnummer.",
118+
119+
"Calendar.Day.0": "søndag",
120+
"Calendar.Day.1": "mandag",
121+
"Calendar.Day.2": "tirsdag",
122+
"Calendar.Day.3": "onsdag",
123+
"Calendar.Day.4": "torsdag",
124+
"Calendar.Day.5": "fredag",
125+
"Calendar.Day.6": "lørdag",
126+
"Calendar.Day.Short.0": "søn",
127+
"Calendar.Day.Short.1": "man",
128+
"Calendar.Day.Short.2": "tir",
129+
"Calendar.Day.Short.3": "ons",
130+
"Calendar.Day.Short.4": "tor",
131+
"Calendar.Day.Short.5": "fre",
132+
"Calendar.Day.Short.6": "lør",
133+
"Calendar.Month.0": "Januar",
134+
"Calendar.Month.1": "Februar",
135+
"Calendar.Month.2": "Mars",
136+
"Calendar.Month.3": "April",
137+
"Calendar.Month.4": "Mai",
138+
"Calendar.Month.5": "Juni",
139+
"Calendar.Month.6": "Juli",
140+
"Calendar.Month.7": "August",
141+
"Calendar.Month.8": "September",
142+
"Calendar.Month.9": "Oktober",
143+
"Calendar.Month.10": "November",
144+
"Calendar.Month.11": "Desember"
145+
109146

110147
}

packages/fakta-fordel-beregningsgrunnlag/src/components/FordelBeregningsgrunnlagPanel.jsx

+33-15
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@ import { kodeverkObjektPropType } from '@fpsak-frontend/prop-types';
44
import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes';
55
import FordelingForm from './FordelingForm';
66
import fordelBeregningsgrunnlagAksjonspunkterPropType from '../propTypes/fordelBeregningsgrunnlagAksjonspunkterPropType';
7+
import VurderEndringRefusjonForm from './refusjon/VurderEndringRefusjonForm';
78

89
const {
910
FORDEL_BEREGNINGSGRUNNLAG,
11+
VURDER_REFUSJON_BERGRUNN,
1012
} = aksjonspunktCodes;
1113

1214
export const BEGRUNNELSE_FORDELING_NAME = 'begrunnelseFordeling';
1315

14-
const harIkkeFordelInfo = (bg) => {
15-
if (!bg) {
16-
return true;
17-
}
18-
return bg.faktaOmFordeling ? !bg.faktaOmFordeling.fordelBeregningsgrunnlag : true;
19-
};
20-
const getFordelAksjonspunkt = (aksjonspunkter) => (aksjonspunkter ? aksjonspunkter.find((ap) => ap.definisjon.kode === FORDEL_BEREGNINGSGRUNNLAG) : undefined);
16+
const harFordelInfo = (bg) => (bg && bg.faktaOmFordeling ? bg.faktaOmFordeling.fordelBeregningsgrunnlag : false);
17+
18+
const harRefusjonInfo = (bg) => bg && bg.refusjonTilVurdering;
19+
20+
const getAksjonspunkt = (aksjonspunkter, def) => (aksjonspunkter && def ? aksjonspunkter.find((ap) => ap.definisjon.kode === def) : undefined);
2121

2222
/**
2323
* FordelBeregningsgrunnlagPanel
@@ -59,24 +59,42 @@ export class FordelBeregningsgrunnlagPanel extends Component {
5959
submitEnabled,
6060
},
6161
} = this;
62-
const fordelAP = getFordelAksjonspunkt(aksjonspunkter);
63-
if (harIkkeFordelInfo(beregningsgrunnlag) || !fordelAP) {
64-
return null;
65-
}
62+
const fordelAP = getAksjonspunkt(aksjonspunkter, FORDEL_BEREGNINGSGRUNNLAG);
63+
const refusjonAP = getAksjonspunkt(aksjonspunkter, VURDER_REFUSJON_BERGRUNN);
64+
const skalViseFordeling = fordelAP && harFordelInfo(beregningsgrunnlag);
65+
const skalViseRefusjon = refusjonAP && harRefusjonInfo(beregningsgrunnlag);
6666
return (
67-
<FordelingForm
67+
<>
68+
{skalViseRefusjon
69+
&& (
70+
<VurderEndringRefusjonForm
6871
submitEnabled={submitEnabled}
6972
submittable={submittable}
7073
readOnly={readOnly}
7174
submitCallback={submitCallback}
7275
behandlingId={behandlingId}
7376
behandlingVersjon={behandlingVersjon}
74-
alleKodeverk={alleKodeverk}
75-
alleMerknaderFraBeslutter={alleMerknaderFraBeslutter}
7677
beregningsgrunnlag={beregningsgrunnlag}
77-
behandlingType={behandlingType}
7878
aksjonspunkter={aksjonspunkter}
7979
/>
80+
)}
81+
{skalViseFordeling
82+
&& (
83+
<FordelingForm
84+
submitEnabled={submitEnabled}
85+
submittable={submittable}
86+
readOnly={readOnly}
87+
submitCallback={submitCallback}
88+
behandlingId={behandlingId}
89+
behandlingVersjon={behandlingVersjon}
90+
alleKodeverk={alleKodeverk}
91+
alleMerknaderFraBeslutter={alleMerknaderFraBeslutter}
92+
beregningsgrunnlag={beregningsgrunnlag}
93+
behandlingType={behandlingType}
94+
aksjonspunkter={aksjonspunkter}
95+
/>
96+
)}
97+
</>
8098
);
8199
}
82100
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import React from 'react';
2+
import { FormattedMessage } from 'react-intl';
3+
import { Normaltekst } from 'nav-frontend-typografi';
4+
import { Table, TableColumn, TableRow } from '@fpsak-frontend/shared-components';
5+
import { dateFormat, TIDENES_ENDE } from '@fpsak-frontend/utils';
6+
7+
import { refusjonAndelTilVurderingPropType } from '../../propTypes/beregningsgrunnlagPropType';
8+
import styles from './tidligereUtbetalingRad.less';
9+
10+
const visningsnavn = (andel) => {
11+
if (andel.arbeidsgiverNavn) {
12+
return andel.arbeidsgiverNavn;
13+
} if (andel.arbeidsgiverId && andel.arbeidsgiverId.arbeidsgiverOrgnr) {
14+
return andel.arbeidsgiverId.arbeidsgiverOrgnr;
15+
} if (andel.arbeidsgiverId && andel.arbeidsgiverId.arbeidsgiverAktørId) {
16+
return andel.arbeidsgiverId.arbeidsgiverAktørId;
17+
}
18+
return undefined;
19+
};
20+
21+
const tidligereUtbetaling = (utbetaling) => {
22+
if (!utbetaling) {
23+
return undefined;
24+
}
25+
if (utbetaling.erTildeltRefusjon) {
26+
return visningsnavn(andel);
27+
}
28+
return <FormattedMessage id="BeregningInfoPanel.RefusjonBG.Direkteutbetaling" />;
29+
};
30+
31+
const tidligereUtbetalingDato = (utbetaling) => {
32+
if (!utbetaling) {
33+
return undefined;
34+
}
35+
const utbTom = utbetaling.tom === TIDENES_ENDE ? undefined : utbetaling.tom;
36+
return (
37+
<FormattedMessage
38+
id="BeregningInfoPanel.RefusjonBG.Periode"
39+
values={{ fom: dateFormat(utbetaling.fom), tom: utbTom ? dateFormat(utbTom) : '' }}
40+
/>
41+
);
42+
};
43+
44+
export const TidligereUtbetalingRad = ({
45+
refusjonAndel,
46+
}) => (
47+
<TableRow>
48+
<TableColumn>
49+
{visningsnavn(refusjonAndel)}
50+
</TableColumn>
51+
<TableColumn>
52+
<Table headerTextCodes={[]} noHover classNameTable={styles.utbetalingTabell}>
53+
{ refusjonAndel.tidligereUtbetalinger.map((utbetaling) => (
54+
<TableRow key={utbetaling.fom + utbetaling.erTildeltRefusjon}>
55+
<TableColumn>
56+
<Normaltekst>{tidligereUtbetaling(utbetaling)}</Normaltekst>
57+
</TableColumn>
58+
<TableColumn>
59+
<Normaltekst>{tidligereUtbetalingDato(utbetaling)}</Normaltekst>
60+
</TableColumn>
61+
</TableRow>
62+
))}
63+
</Table>
64+
</TableColumn>
65+
</TableRow>
66+
);
67+
TidligereUtbetalingRad.propTypes = {
68+
refusjonAndel: refusjonAndelTilVurderingPropType,
69+
};
70+
71+
export default TidligereUtbetalingRad;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import React from 'react';
2+
import { Table } from '@fpsak-frontend/shared-components';
3+
import { Column, Row } from 'nav-frontend-grid';
4+
5+
import beregningsgrunnlagPropType from '../../propTypes/beregningsgrunnlagPropType';
6+
import styles from './tidligereUtbetalinger.less';
7+
import TidligereUtbetalingRad from './TidligereUtbetalingRad';
8+
9+
export const TidligereUtbetalinger = ({
10+
beregningsgrunnlag,
11+
}) => {
12+
const { andeler } = beregningsgrunnlag.refusjonTilVurdering;
13+
return (
14+
<>
15+
<Row>
16+
<Column xs="8">
17+
<Table
18+
headerTextCodes={['BeregningInfoPanel.RefusjonBG.Aktivitet', 'BeregningInfoPanel.RefusjonBG.TidligereUtb']}
19+
noHover
20+
classNameTable={styles.tabell}
21+
>
22+
{ andeler.map((andel) => (
23+
<TidligereUtbetalingRad
24+
refusjonAndel={andel}
25+
readOnly
26+
key={andel.arbeidsgiverNavn}
27+
/>
28+
))}
29+
</Table>
30+
</Column>
31+
</Row>
32+
</>
33+
);
34+
};
35+
TidligereUtbetalinger.propTypes = {
36+
beregningsgrunnlag: beregningsgrunnlagPropType.isRequired,
37+
};
38+
39+
export default TidligereUtbetalinger;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
import { formPropTypes } from 'redux-form';
4+
import { connect } from 'react-redux';
5+
import { FormattedMessage } from 'react-intl';
6+
import { Undertittel } from 'nav-frontend-typografi';
7+
import { VerticalSpacer } from '@fpsak-frontend/shared-components';
8+
import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes';
9+
import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus';
10+
import { FaktaBegrunnelseTextField, FaktaSubmitButton } from '@fpsak-frontend/fakta-felles';
11+
import { behandlingForm } from '@fpsak-frontend/form';
12+
import fordelBeregningsgrunnlagAksjonspunkterPropType from '../../propTypes/fordelBeregningsgrunnlagAksjonspunkterPropType';
13+
import beregningsgrunnlagPropType from '../../propTypes/beregningsgrunnlagPropType';
14+
import TidligereUtbetalinger from './TidligereUtbetalinger';
15+
import VurderEndringRefusjonRad, { lagNøkkel } from './VurderEndringRefusjonRad';
16+
17+
const FORM_NAME = 'VURDER_REFUSJON_BERGRUNN_FORM';
18+
const BEGRUNNELSE_FIELD = 'VURDER_REFUSJON_BERGRUNN_BEGRUNNELSE';
19+
20+
const {
21+
VURDER_REFUSJON_BERGRUNN,
22+
} = aksjonspunktCodes;
23+
24+
const finnAksjonspunkt = (aksjonspunkter) => (aksjonspunkter ? aksjonspunkter.find((ap) => ap.definisjon.kode === VURDER_REFUSJON_BERGRUNN) : undefined);
25+
26+
export const VurderEndringRefusjonFormImpl = ({
27+
submitEnabled,
28+
submittable,
29+
readOnly,
30+
behandlingId,
31+
behandlingVersjon,
32+
beregningsgrunnlag,
33+
aksjonspunkter,
34+
...formProps
35+
}) => {
36+
const { andeler } = beregningsgrunnlag.refusjonTilVurdering;
37+
const ap = finnAksjonspunkt(aksjonspunkter);
38+
const isAksjonspunktClosed = ap ? isAksjonspunktOpen(ap.status.kode) : false;
39+
return (
40+
<>
41+
<form onSubmit={formProps.handleSubmit}>
42+
<Undertittel><FormattedMessage id="BeregningInfoPanel.RefusjonBG.Tittel" /></Undertittel>
43+
<VerticalSpacer sixteenPx />
44+
<TidligereUtbetalinger beregningsgrunnlag={beregningsgrunnlag} />
45+
{ andeler.map((andel) => (
46+
<VurderEndringRefusjonRad
47+
refusjonAndel={andel}
48+
readOnly={readOnly}
49+
key={andel.arbeidsgiverNavn}
50+
/>
51+
))}
52+
<>
53+
<VerticalSpacer twentyPx />
54+
<FaktaBegrunnelseTextField
55+
name={BEGRUNNELSE_FIELD}
56+
isDirty={formProps.dirty}
57+
isSubmittable={submittable}
58+
isReadOnly={readOnly}
59+
hasBegrunnelse={!!(ap && ap.begrunnelse)}
60+
/>
61+
62+
<VerticalSpacer twentyPx />
63+
<FaktaSubmitButton
64+
formName={formProps.form}
65+
isSubmittable={submittable && submitEnabled}
66+
isReadOnly={readOnly}
67+
hasOpenAksjonspunkter={!isAksjonspunktClosed}
68+
behandlingId={behandlingId}
69+
behandlingVersjon={behandlingVersjon}
70+
/>
71+
</>
72+
</form>
73+
</>
74+
);
75+
};
76+
77+
export const buildInitialValues = (bg, aksjonspunkter) => {
78+
const { andeler } = bg.refusjonTilVurdering;
79+
const initialValues = {};
80+
andeler.forEach((andel) => {
81+
initialValues[lagNøkkel(andel)] = VurderEndringRefusjonRad.buildInitialValues(andel);
82+
});
83+
const refusjonAP = finnAksjonspunkt(aksjonspunkter);
84+
initialValues[BEGRUNNELSE_FIELD] = refusjonAP && refusjonAP.begrunnelse ? refusjonAP.begrunnelse : '';
85+
return initialValues;
86+
};
87+
88+
export const transformValues = (values, bg) => {
89+
const { andeler } = bg.refusjonTilVurdering;
90+
const transformedAndeler = andeler.map((andel) => VurderEndringRefusjonRad.transformValues(values, andel));
91+
return {
92+
begrunnelse: values[BEGRUNNELSE_FIELD],
93+
kode: VURDER_REFUSJON_BERGRUNN,
94+
fastsatteAndeler: transformedAndeler,
95+
};
96+
};
97+
98+
VurderEndringRefusjonFormImpl.propTypes = {
99+
submitCallback: PropTypes.func.isRequired,
100+
readOnly: PropTypes.bool.isRequired,
101+
submittable: PropTypes.bool.isRequired,
102+
submitEnabled: PropTypes.bool.isRequired,
103+
behandlingId: PropTypes.number.isRequired,
104+
behandlingVersjon: PropTypes.number.isRequired,
105+
beregningsgrunnlag: beregningsgrunnlagPropType,
106+
aksjonspunkter: PropTypes.arrayOf(fordelBeregningsgrunnlagAksjonspunkterPropType).isRequired,
107+
...formPropTypes,
108+
};
109+
110+
const mapStateToProps = (initialState, initialProps) => {
111+
const onSubmit = (values) => initialProps.submitCallback([transformValues(values, initialProps.beregningsgrunnlag)]);
112+
return (state, ownProps) => {
113+
const initialValues = buildInitialValues(ownProps.beregningsgrunnlag, ownProps.aksjonspunkter);
114+
return ({
115+
initialValues,
116+
onSubmit,
117+
});
118+
};
119+
};
120+
121+
export default connect(mapStateToProps)(behandlingForm({
122+
form: FORM_NAME,
123+
enableReinitialize: true,
124+
})(VurderEndringRefusjonFormImpl));

0 commit comments

Comments
 (0)