irr: min/max formula
This commit is contained in:
parent
1c61af5162
commit
6f498a411d
@ -81,13 +81,12 @@ export default function (this: ICalculationStore) {
|
||||
console.log('preparedData', preparedData);
|
||||
|
||||
const getAdditionalData = () => {
|
||||
const tarif = this.getOption('selectTarif');
|
||||
if (tarif) {
|
||||
return {
|
||||
minCashflowMSFONominal: tarif.evo_min_irr,
|
||||
maxCashflowMSFONominal: tarif.evo_max_irr,
|
||||
};
|
||||
}
|
||||
return {
|
||||
//@ts-ignore
|
||||
minCashflowMSFONominal: this.irr().min,
|
||||
//@ts-ignore
|
||||
maxCashflowMSFONominal: this.irr().max,
|
||||
};
|
||||
};
|
||||
|
||||
var additionalData = getAdditionalData.call(this);
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import { formatNumber } from 'core/tools/format';
|
||||
import { ICalculationStore } from 'core/types/Calculation/Store';
|
||||
import { ComputedValuesNames } from 'core/types/Calculation/Store/values';
|
||||
import { convertPrice } from './lib/tools';
|
||||
@ -8,7 +9,7 @@ const LEASE_OBJECT_RISK = {
|
||||
100000002: 'Высокий',
|
||||
};
|
||||
|
||||
type ComputedEffect = (this: ICalculationStore) => string | number | undefined;
|
||||
type ComputedEffect = (this: ICalculationStore) => any;
|
||||
|
||||
export const insKaskoPriceLeasePeriod: ComputedEffect = function () {
|
||||
const { leasingPeriod } = this.values;
|
||||
@ -49,12 +50,34 @@ const computedEffects: Record<ComputedValuesNames, ComputedEffect> = {
|
||||
return LEASE_OBJECT_RISK[evo_leasingobject_risk];
|
||||
},
|
||||
insKaskoPriceLeasePeriod,
|
||||
irrInfo: function () {
|
||||
|
||||
irr: function () {
|
||||
const product = this.getOption('selectProduct');
|
||||
const tarif = this.getOption('selectTarif');
|
||||
if (tarif && tarif.evo_min_irr && tarif.evo_max_irr) {
|
||||
return `Min: ${tarif.evo_min_irr}% - Max: ${tarif.evo_max_irr}%`;
|
||||
const { bonusCoefficient } = this.values;
|
||||
|
||||
let min = 0;
|
||||
let max = 0;
|
||||
|
||||
if (product?.evo_cut_proportion_bonus_director && bonusCoefficient < 1) {
|
||||
min =
|
||||
(tarif?.evo_min_irr || 0) -
|
||||
(1 - bonusCoefficient || 0) *
|
||||
(tarif?.evo_cut_irr_with_bonus_coefficient || 0);
|
||||
} else {
|
||||
min = tarif?.evo_min_irr || 0;
|
||||
}
|
||||
return '-';
|
||||
|
||||
max = tarif?.evo_max_irr || 0;
|
||||
|
||||
return { min, max };
|
||||
},
|
||||
irrInfo: function () {
|
||||
//@ts-ignore
|
||||
return `Min: ${formatNumber(this.irr().min)}% - Max: ${formatNumber(
|
||||
//@ts-ignore
|
||||
this.irr().max,
|
||||
)}%`;
|
||||
},
|
||||
registrationDescription: function () {
|
||||
const registration = this.getOption('selectRegistration');
|
||||
|
||||
@ -146,6 +146,7 @@ export type ValuesNames =
|
||||
export type ComputedValuesNames =
|
||||
| 'leaseObjectRiskName'
|
||||
| 'insKaskoPriceLeasePeriod'
|
||||
| 'irr'
|
||||
| 'irrInfo'
|
||||
| 'registrationDescription'
|
||||
| 'plPriceRub'
|
||||
|
||||
Reference in New Issue
Block a user