unlimited: add new results values
This commit is contained in:
parent
9f0c126ffb
commit
b7f0a3e6cf
@ -4,6 +4,12 @@ export const id = 'output';
|
||||
export const title = 'Результаты';
|
||||
|
||||
export const titles: Record<keyof ResultValues, string> = {
|
||||
_resultContractEconomy: 'Экономика',
|
||||
_resultContractEconomyWithVAT: 'Экономика, с НДС',
|
||||
_resultPi: 'PI',
|
||||
_resultSumCredit: 'Сумма кредита',
|
||||
_resultSumCreditPayment: 'Сумма платежей по кредиту',
|
||||
_resultVatRecoverable: 'НДС к возмещению',
|
||||
resultAB_FL: 'АВ ФЛ, без НДФЛ.',
|
||||
resultAB_UL: 'АВ ЮЛ, с НДС.',
|
||||
resultBonusDopProd: 'Бонус МПЛ за доп.продукты, без НДФЛ',
|
||||
@ -37,6 +43,12 @@ const percentFormatter = Intl.NumberFormat('ru', {
|
||||
}).format;
|
||||
|
||||
export const formatters = {
|
||||
_resultContractEconomy: moneyFormatter,
|
||||
_resultContractEconomyWithVAT: moneyFormatter,
|
||||
_resultPi: percentFormatter,
|
||||
_resultSumCredit: moneyFormatter,
|
||||
_resultSumCreditPayment: moneyFormatter,
|
||||
_resultVatRecoverable: moneyFormatter,
|
||||
resultAB_FL: moneyFormatter,
|
||||
resultAB_UL: moneyFormatter,
|
||||
resultBonusDopProd: moneyFormatter,
|
||||
|
||||
@ -4,6 +4,7 @@ import { useStore } from '@/stores/hooks';
|
||||
import { min } from '@/styles/mq';
|
||||
import { toJS } from 'mobx';
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import { omit } from 'radash';
|
||||
import styled from 'styled-components';
|
||||
import { Text } from 'ui/elements';
|
||||
import { Box } from 'ui/grid';
|
||||
@ -18,8 +19,16 @@ const Grid = styled(Box)`
|
||||
`;
|
||||
|
||||
const Results = observer(() => {
|
||||
const { $results } = useStore();
|
||||
const values = toJS($results.values);
|
||||
const { $results, $process } = useStore();
|
||||
|
||||
const resultsValues = toJS($results.values);
|
||||
// eslint-disable-next-line no-negated-condition
|
||||
const values = !$process.has('Unlimited')
|
||||
? omit(
|
||||
resultsValues,
|
||||
Object.keys(resultsValues).filter((x) => x.includes('_'))
|
||||
)
|
||||
: resultsValues;
|
||||
|
||||
return (
|
||||
<Grid>
|
||||
|
||||
@ -427,6 +427,10 @@ const ColumnsSchema = z.object({
|
||||
sum: z.number(),
|
||||
values: z.number().array(),
|
||||
}),
|
||||
vatRecoverableColumn: z.object({
|
||||
sum: z.number(),
|
||||
values: z.number().array(),
|
||||
}),
|
||||
});
|
||||
|
||||
export const ResponseCalculateSchema = z.object({
|
||||
|
||||
@ -1,6 +1,12 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
export const ResultValuesSchema = z.object({
|
||||
_resultContractEconomy: z.number(),
|
||||
_resultContractEconomyWithVAT: z.number(),
|
||||
_resultPi: z.number(),
|
||||
_resultSumCredit: z.number(),
|
||||
_resultSumCreditPayment: z.number(),
|
||||
_resultVatRecoverable: z.number(),
|
||||
resultAB_FL: z.number(),
|
||||
resultAB_UL: z.number(),
|
||||
resultBonusDopProd: z.number(),
|
||||
|
||||
@ -21,16 +21,16 @@ export function transformCalculateResults({
|
||||
length: preparedValues.nmper,
|
||||
},
|
||||
(_, i) => ({
|
||||
cashflowMsfoColumn: columns.cashflowMsfoColumn.values[i + 1],
|
||||
cashflowMsfoWithCfColumn: columns.cashflowMsfoWithCfColumn.values[i + 1],
|
||||
creditPaymentColumn: columns.creditPaymentColumn.values[i + 1],
|
||||
interestColumn: columns.interestColumn.values[i + 1],
|
||||
cashflowMsfoColumn: columns?.cashflowMsfoColumn.values[i + 1],
|
||||
cashflowMsfoWithCfColumn: columns?.cashflowMsfoWithCfColumn.values[i + 1],
|
||||
creditPaymentColumn: columns?.creditPaymentColumn.values[i + 1],
|
||||
interestColumn: columns?.interestColumn.values[i + 1],
|
||||
key: String(i + 1),
|
||||
ndsCompensation: columns.vatColumn.values[i + 1],
|
||||
ndsCompensation: columns?.vatColumn.values[i + 1],
|
||||
num: i + 1,
|
||||
paymentSum: columns.sumWithVatColumn.values[i + 1],
|
||||
piColumn: columns.piColumn.values[i + 1],
|
||||
redemptionAmount: columns.sumRepaymentColumn.values[i + 1],
|
||||
paymentSum: columns?.sumWithVatColumn.values[i + 1],
|
||||
piColumn: columns?.piColumn.values[i + 1],
|
||||
redemptionAmount: columns?.sumRepaymentColumn.values[i + 1],
|
||||
})
|
||||
);
|
||||
|
||||
@ -39,6 +39,12 @@ export function transformCalculateResults({
|
||||
resultPayments[0].ndsCompensation -= subsidySum - subsidySum / (1 + VAT);
|
||||
|
||||
const resultValues: OutputData['resultValues'] = {
|
||||
_resultContractEconomy: postValues.contractEconomy,
|
||||
_resultContractEconomyWithVAT: postValues.contractEconomyWithVAT,
|
||||
_resultPi: columns?.piColumn.values[0],
|
||||
_resultSumCredit: columns?.sumCreditColumn.values[1],
|
||||
_resultSumCreditPayment: columns?.creditPaymentColumn.values[0],
|
||||
_resultVatRecoverable: columns?.vatRecoverableColumn.values[0],
|
||||
resultAB_FL: ((preparedValues.agentsSum + preparedValues.doubleAgentsSum) / ESN) * (1 - NDFL),
|
||||
resultAB_UL:
|
||||
(preparedValues.deliverySum +
|
||||
@ -50,11 +56,11 @@ export function transformCalculateResults({
|
||||
(columns?.npvBonusExpensesColumn?.values[1] / (1 + preparedValues?.salaryRate)) * (1 - NDFL)
|
||||
),
|
||||
resultBonusMPL: Math.abs(
|
||||
(columns.npvBonusExpensesColumn.values[2] / (1 + preparedValues.salaryRate)) * (1 - NDFL)
|
||||
(columns?.npvBonusExpensesColumn.values[2] / (1 + preparedValues.salaryRate)) * (1 - NDFL)
|
||||
),
|
||||
resultBonusSafeFinance: preparedValues?.bonusFinGAP * (1 - NDFL),
|
||||
resultDopMPLLeasing: Math.abs(
|
||||
(columns.extraBonusSumColumn.values[2] / (1 + preparedValues.salaryRate)) * (1 - NDFL)
|
||||
(columns?.extraBonusSumColumn.values[2] / (1 + preparedValues.salaryRate)) * (1 - NDFL)
|
||||
),
|
||||
resultDopProdSum:
|
||||
preparedValues.rats +
|
||||
@ -65,8 +71,8 @@ export function transformCalculateResults({
|
||||
preparedValues.insuranceFinGAPNmper,
|
||||
resultFirstPayment: preparedValues.firstPaymentSum * (1 + VAT) - inputValues.subsidySum,
|
||||
resultFirstPaymentRiskPolicy: preparedValues?.firstPayment,
|
||||
resultIRRGraphPerc: columns.sumColumn.irr,
|
||||
resultIRRNominalPerc: columns.cashflowMsfoColumn.nominal,
|
||||
resultIRRGraphPerc: columns?.sumColumn.irr,
|
||||
resultIRRNominalPerc: columns?.cashflowMsfoColumn.nominal,
|
||||
resultInsKasko: preparedValues.insuranceKasko,
|
||||
resultInsOsago: preparedValues.insuranceOsago,
|
||||
resultLastPayment: last(columns?.sumWithVatColumn?.values) || 0,
|
||||
@ -75,9 +81,9 @@ export function transformCalculateResults({
|
||||
(preparedValues.ratBonus + preparedValues.nsBonus + preparedValues.nsibBonus) *
|
||||
preparedValues.marketRate *
|
||||
preparedValues.districtRate +
|
||||
Math.abs(columns.npvBonusExpensesColumn.values[0]) +
|
||||
Math.abs(columns?.npvBonusExpensesColumn.values[0]) +
|
||||
Math.abs(
|
||||
columns.extraBonusSumColumn.values[0] +
|
||||
columns?.extraBonusSumColumn.values[0] +
|
||||
preparedValues.importerSum +
|
||||
preparedValues.agentsSum +
|
||||
preparedValues.deliverySum +
|
||||
@ -91,7 +97,7 @@ export function transformCalculateResults({
|
||||
inputValues.importProgramSum,
|
||||
resultPriceUpPr: postValues.priceUP_Year_PR,
|
||||
resultTerm: preparedValues.nmper,
|
||||
resultTotalGraphwithNDS: columns.sumWithVatColumn.values[0] - inputValues.subsidySum,
|
||||
resultTotalGraphwithNDS: columns?.sumWithVatColumn.values[0] - inputValues.subsidySum,
|
||||
};
|
||||
|
||||
const values: OutputData['values'] = {
|
||||
|
||||
@ -1,6 +1,12 @@
|
||||
import type { ResultValues } from './types';
|
||||
|
||||
export const defaultResultsValues: ResultValues = {
|
||||
_resultContractEconomy: 0,
|
||||
_resultContractEconomyWithVAT: 0,
|
||||
_resultPi: 0,
|
||||
_resultSumCredit: 0,
|
||||
_resultSumCreditPayment: 0,
|
||||
_resultVatRecoverable: 0,
|
||||
resultAB_FL: 0,
|
||||
resultAB_UL: 0,
|
||||
resultBonusDopProd: 0,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user