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

Commit 2800809

Browse files
authored
PFP-5060 Funksjonalitet for å kopiere vilkårsvurdering (#1175)
* PFP-5060 Funksjonalitet for å kopiere vilkårsvurdering * PFP-5060 Funksjonalitet for å kopiere vilkårsvurdering. Endring etter review * PFP-5060 Funksjonalitet for å kopiere vilkårsvurdering. Endring etter review
1 parent 5e6fb03 commit 2800809

File tree

4 files changed

+152
-3
lines changed

4 files changed

+152
-3
lines changed

packages/prosess-tilbakekreving/i18n/nb_NO.json

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"TilbakekrevingPeriodeForm.VurderingAktsomhet": "Vurder i hvilken grad mottaker har handlet uaktsomt",
1818
"TilbakekrevingPeriodeForm.BelopetMottattIGodTro": "Beløpet mottatt i god tro",
1919
"TilbakekrevingPeriodeForm.VurderingMottattIGodTro": "Begrunn hvorfor mottaker er i god tro",
20+
"TilbakekrevingPeriodeForm.KopierVilkårsvurdering": "Kopier vilkårsvurdering fra",
2021

2122
"TilbakekrevingTimeline.ImageText": "Personinformasjon",
2223
"TilbakekrevingTimeline.Woman": "Kvinne",

packages/prosess-tilbakekreving/src/components/TilbakekrevingForm.jsx

+1
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ export class TilbakekrevingFormImpl extends Component {
237237
behandlingVersjon={behandlingVersjon}
238238
alleKodeverk={alleKodeverk}
239239
beregnBelop={beregnBelop}
240+
vilkarsVurdertePerioder={vilkarsVurdertePerioder}
240241
/>
241242
)}
242243
</>

packages/prosess-tilbakekreving/src/components/TilbakekrevingPeriodeForm.jsx

+49-3
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,20 @@ import React, { Component } from 'react';
22
import PropTypes from 'prop-types';
33
import { connect } from 'react-redux';
44
import { bindActionCreators } from 'redux';
5-
import { clearFields, formPropTypes, FormSection } from 'redux-form';
5+
import {
6+
clearFields, formPropTypes, FormSection, change,
7+
} from 'redux-form';
68
import { FormattedMessage, injectIntl } from 'react-intl';
9+
import moment from 'moment';
710
import { Element, Normaltekst, Undertekst } from 'nav-frontend-typografi';
811
import { Column, Row } from 'nav-frontend-grid';
912
import { Hovedknapp, Knapp } from 'nav-frontend-knapper';
1013

1114
import {
12-
RadioGroupField, RadioOption, TextAreaField, behandlingForm, behandlingFormValueSelector,
15+
RadioGroupField, RadioOption, TextAreaField, behandlingForm, behandlingFormValueSelector, SelectField,
1316
} from '@fpsak-frontend/form';
1417
import {
15-
formatCurrencyNoKr, hasValidText, maxLength, minLength, required,
18+
formatCurrencyNoKr, hasValidText, maxLength, minLength, required, DDMMYYYY_DATE_FORMAT,
1619
} from '@fpsak-frontend/utils';
1720
import {
1821
AdvarselModal, FlexColumn, FlexRow, VerticalSpacer,
@@ -61,6 +64,7 @@ export class TilbakekrevingPeriodeFormImpl extends Component {
6164
behandlingVersjon: PropTypes.number.isRequired,
6265
beregnBelop: PropTypes.func.isRequired,
6366
intl: PropTypes.shape().isRequired,
67+
vilkarsVurdertePerioder: PropTypes.arrayOf(PropTypes.shape()).isRequired,
6468
...formPropTypes,
6569
};
6670

@@ -114,6 +118,22 @@ export class TilbakekrevingPeriodeFormImpl extends Component {
114118
formProps.handleSubmit();
115119
};
116120

121+
onEndrePeriodeForKopi = (event, vurdertePerioder) => {
122+
const { change: changeValue } = this.props;
123+
124+
const fomTom = event.target.value.split('_');
125+
const kopierDenne = vurdertePerioder.find((per) => per.fom === fomTom[0] && per.tom === fomTom[1]);
126+
const vilkårResultatType = kopierDenne.valgtVilkarResultatType;
127+
const resultatType = kopierDenne[vilkårResultatType];
128+
129+
changeValue('valgtVilkarResultatType', vilkårResultatType, true, false);
130+
changeValue('begrunnelse', kopierDenne.begrunnelse, true, false);
131+
changeValue('vurderingBegrunnelse', kopierDenne.vurderingBegrunnelse, true, false);
132+
changeValue(vilkårResultatType, resultatType);
133+
134+
event.preventDefault();
135+
}
136+
117137
render() {
118138
const {
119139
valgtVilkarResultatType,
@@ -136,9 +156,11 @@ export class TilbakekrevingPeriodeFormImpl extends Component {
136156
behandlingVersjon,
137157
beregnBelop,
138158
intl,
159+
vilkarsVurdertePerioder,
139160
...formProps
140161
} = this.props;
141162
const { showModal } = this.state;
163+
const vurdertePerioder = vilkarsVurdertePerioder.filter((per) => !per.erForeldet && per.valgtVilkarResultatType != null);
142164
return (
143165
<div className={styles.container}>
144166
<TilbakekrevingTimelineData
@@ -165,6 +187,29 @@ export class TilbakekrevingPeriodeFormImpl extends Component {
165187
))}
166188
<TilbakekrevingAktivitetTabell ytelser={data.ytelser} />
167189
<VerticalSpacer twentyPx />
190+
{!readOnly && !data.erForeldet && vurdertePerioder.length > 0 && (
191+
<>
192+
<Row>
193+
<Column md="10">
194+
<Element>
195+
<FormattedMessage id="TilbakekrevingPeriodeForm.KopierVilkårsvurdering" />
196+
</Element>
197+
<SelectField
198+
name="perioderForKopi"
199+
selectValues={vurdertePerioder.map((per) => {
200+
const perId = `${per.fom}_${per.tom}`;
201+
const perValue = `${moment(per.fom).format(DDMMYYYY_DATE_FORMAT)} - ${moment(per.tom).format(DDMMYYYY_DATE_FORMAT)}`;
202+
return <option key={perId} value={perId}>{perValue}</option>;
203+
})}
204+
onChange={(event) => this.onEndrePeriodeForKopi(event, vurdertePerioder)}
205+
bredde="m"
206+
label=""
207+
/>
208+
</Column>
209+
</Row>
210+
<VerticalSpacer twentyPx />
211+
</>
212+
)}
168213
<Row>
169214
<Column md={data.erForeldet ? '12' : '6'}>
170215
<Row>
@@ -289,6 +334,7 @@ export class TilbakekrevingPeriodeFormImpl extends Component {
289334
const mapDispatchToProps = (dispatch) => ({
290335
...bindActionCreators({
291336
clearFields,
337+
change,
292338
}, dispatch),
293339
});
294340

packages/prosess-tilbakekreving/src/components/TilbakekrevingPeriodeForm.spec.jsx

+101
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from 'react';
22
import { expect } from 'chai';
33
import { shallow } from 'enzyme';
4+
import sinon from 'sinon';
45

56
import { intlMock } from '@fpsak-frontend/utils-test/src/intl-enzyme-test-helper';
67
import { reduxFormPropsMock } from '@fpsak-frontend/utils-test/src/redux-form-test-helper';
@@ -9,6 +10,7 @@ import sarligGrunn from '../kodeverk/sarligGrunn';
910
import aktsomhet from '../kodeverk/aktsomhet';
1011
import ForeldetFormPanel from './tilbakekrevingPeriodePaneler/ForeldetFormPanel';
1112
import { TilbakekrevingPeriodeFormImpl } from './TilbakekrevingPeriodeForm';
13+
import vilkarResultat from '../kodeverk/vilkarResultat';
1214

1315
describe('<TilbakekrevingPeriodeForm>', () => {
1416
const sarligGrunnTyper = [{
@@ -56,11 +58,110 @@ describe('<TilbakekrevingPeriodeForm>', () => {
5658
behandlingVersjon={1}
5759
beregnBelop={() => undefined}
5860
intl={intlMock}
61+
vilkarsVurdertePerioder={[]}
5962
{...reduxFormPropsMock}
6063
/>);
6164

6265
expect(wrapper.find(ForeldetFormPanel)).to.have.length(1);
6366
});
6467

68+
it('skal teste kopiering av vilkårsvudering for periode', () => {
69+
const periode = {
70+
erForeldet: false,
71+
begrunnelse: null,
72+
valgtVilkarResultatType: null,
73+
vurderingBegrunnelse: null,
74+
fom: '2020-04-01',
75+
tom: '2020-04-15',
76+
ytelser: [],
77+
};
78+
const vilkårsPerioder = [
79+
{
80+
erForeldet: false,
81+
begrunnelse: 'Begrunnelse periode 1',
82+
valgtVilkarResultatType: vilkarResultat.GOD_TRO,
83+
vurderingBegrunnelse: 'Vurdering periode 1',
84+
fom: '2020-03-01',
85+
tom: '2020-03-15',
86+
GOD_TRO: {
87+
erBelopetIBehold: false,
88+
},
89+
},
90+
{
91+
erForeldet: false,
92+
begrunnelse: 'Begrunnelse periode 2',
93+
valgtVilkarResultatType: vilkarResultat.FORSTO_BURDE_FORSTAATT,
94+
vurderingBegrunnelse: 'Vurdering periode 2',
95+
fom: '2020-03-15',
96+
tom: '2020-03-31',
97+
FORSTO_BURDE_FORSTAATT: {
98+
handletUaktsomhetGrad: aktsomhet.FORSETT,
99+
FORSETT: {
100+
skalDetTilleggesRenter: false,
101+
},
102+
},
103+
},
104+
{
105+
erForeldet: false,
106+
valgtVilkarResultatType: null,
107+
fom: '2020-04-01',
108+
tom: '2020-04-15',
109+
},
110+
{
111+
erForeldet: false,
112+
fom: '2020-04-15',
113+
tom: '2020-04-30',
114+
},
115+
];
116+
117+
const changeValue = sinon.spy();
118+
const wrapper = shallow(<TilbakekrevingPeriodeFormImpl
119+
periode={periode}
120+
data={periode}
121+
behandlingFormPrefix="behandling_V1"
122+
skjulPeriode={() => undefined}
123+
readOnly={false}
124+
erBelopetIBehold
125+
formName="testForm"
126+
tilbakekrevSelvOmBeloepErUnder4Rettsgebyr
127+
oppdaterPeriode={() => undefined}
128+
oppdaterSplittedePerioder={() => undefined}
129+
setNestePeriode={() => undefined}
130+
setForrigePeriode={() => undefined}
131+
antallPerioderMedAksjonspunkt={2}
132+
vilkarResultatTyper={[]}
133+
aktsomhetTyper={aktsomhetTyper}
134+
sarligGrunnTyper={sarligGrunnTyper}
135+
reduserteBelop={[]}
136+
behandlingId={1}
137+
behandlingVersjon={1}
138+
beregnBelop={() => undefined}
139+
intl={intlMock}
140+
vilkarsVurdertePerioder={vilkårsPerioder}
141+
{...reduxFormPropsMock}
142+
change={changeValue}
143+
/>);
144+
145+
// Tester om nedtrekksmenyen for perioder som kan kopieres vises
146+
const selectField = wrapper.find('[name="perioderForKopi"]');
147+
expect(selectField).to.have.lengthOf(1);
148+
const values = selectField.props().selectValues;
149+
expect(values).to.have.lengthOf(2);
150+
151+
selectField.props().onChange({
152+
preventDefault: () => {},
153+
target: {
154+
value: '2020-03-15_2020-03-31',
155+
},
156+
}, vilkårsPerioder);
157+
158+
const changeValueCalls = changeValue.getCalls();
159+
expect(changeValueCalls).to.have.length(4);
160+
expect(changeValueCalls[0].args[1]).to.be.eql(vilkårsPerioder[1].valgtVilkarResultatType);
161+
expect(changeValueCalls[1].args[1]).to.be.eql(vilkårsPerioder[1].begrunnelse);
162+
expect(changeValueCalls[2].args[1]).to.be.eql(vilkårsPerioder[1].vurderingBegrunnelse);
163+
expect(changeValueCalls[3].args[1]).to.be.eql(vilkårsPerioder[1][vilkarResultat.FORSTO_BURDE_FORSTAATT]);
164+
});
165+
65166
// TODO (TOR) Skriv fleire testar
66167
});

0 commit comments

Comments
 (0)