irr: min/max formula

This commit is contained in:
Chika 2022-05-30 18:19:27 +03:00
parent 1c61af5162
commit 6f498a411d
3 changed files with 35 additions and 12 deletions

View File

@ -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);

View File

@ -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');

View File

@ -146,6 +146,7 @@ export type ValuesNames =
export type ComputedValuesNames =
| 'leaseObjectRiskName'
| 'insKaskoPriceLeasePeriod'
| 'irr'
| 'irrInfo'
| 'registrationDescription'
| 'plPriceRub'