tbxSaleBonus fill and validation

This commit is contained in:
Chika 2020-12-14 16:59:58 +03:00
parent 37b8eddda2
commit d96b30a192
4 changed files with 70 additions and 4 deletions

View File

@ -94,8 +94,9 @@ const elementsProps: TElements<ElementProps> = {
},
tbxSaleBonus: {
min: '0.00',
max: '1.30',
// max: '1.30',
step: '0.1',
precision: 2,
},
tbxFirstPaymentPerc: {
min: '0',

View File

@ -1,9 +1,9 @@
import CrmService from 'client/services/CrmService';
import CalculationStore from 'client/stores/CalculationStore';
import { getUser } from 'client/tools/user';
import initialOwnerQuery from './queries/ownerQuery';
import insuranceQuery from './queries/insuranceQuery';
import optionsQuery from './queries/optionsQuery';
import initialOwnerQuery from './queries/ownerQuery';
import staticDataQuery from './queries/staticDataQuery';
import systemUserQuery from './queries/systemUserQuery';
@ -45,7 +45,7 @@ export default () =>
options: { ...insuranceCompanies },
});
var supplierCurrency = CalculationStore.options.selectSupplierCurrency?.find(
const supplierCurrency = CalculationStore.options.selectSupplierCurrency?.find(
x => x.isocurrencycode === 'RUB',
);
if (supplierCurrency)
@ -54,6 +54,27 @@ export default () =>
supplierCurrency.transactioncurrencyid,
);
const evo_sot_coefficient_type = staticEntities.evo_sot_coefficient_type.find(
x => x.evo_id === 'BONUS_LEASING',
);
const evo_coefficient_bonus = staticEntities.evo_coefficient.find(
x =>
x.evo_job_titleid === systemuser.evo_job_titleid &&
x.evo_sot_coefficient_typeid ===
evo_sot_coefficient_type?.evo_sot_coefficient_typeid,
);
if (
evo_coefficient_bonus &&
evo_coefficient_bonus.evo_sot_coefficient
) {
CalculationStore.setValue(
'saleBonus',
evo_coefficient_bonus.evo_sot_coefficient * 100,
);
}
resolve();
},
)

View File

@ -1,3 +1,5 @@
import { merge } from 'lodash';
const staticData = {};
const staticDataAction = {
@ -5,7 +7,7 @@ const staticDataAction = {
return this.staticData[dataName];
},
applyStaticData(data) {
this.staticData = { ...this.staticData, ...data };
this.staticData = merge(this.staticData, data);
},
};

View File

@ -1070,6 +1070,48 @@ const reactionEffects: IReactionEffect[] = [
},
}),
calculationStore => ({
expression: () => {
const { saleBonus } = calculationStore.values;
return saleBonus;
},
effect: saleBonus => {
const systemuser = calculationStore?.staticData?.systemuser;
if (systemuser) {
const evo_sot_coefficient_type = calculationStore?.staticData?.evo_sot_coefficient_type?.find(
x => x.evo_id === 'BONUS_LEASING',
);
const evo_coefficient_bonus = calculationStore?.staticData?.evo_coefficient?.find(
x =>
x.evo_job_titleid === systemuser[0].evo_job_titleid &&
x.evo_sot_coefficient_typeid ===
evo_sot_coefficient_type?.evo_sot_coefficient_typeid,
);
if (
evo_coefficient_bonus &&
evo_coefficient_bonus.evo_sot_coefficient
) {
const max_sale_bonus =
evo_coefficient_bonus.evo_sot_coefficient * 100;
if (parseFloat(saleBonus) > max_sale_bonus) {
calculationStore.setValidation('tbxSaleBonus', false);
openNotification({
type: 'error',
title: 'Ошибка',
description:
'Размер бонуса МПЛ не может быть выше установленного по СОТ',
})();
return;
} else {
calculationStore.setValidation('tbxSaleBonus', undefined);
}
}
}
},
}),
calculationStore => ({
expression: () => {
const { configuration } = calculationStore.values;