/* eslint-disable object-curly-newline */ import type { Values } from 'stores/results/types'; import { formatMoney, formatNumber, formatPercent } from 'tools/format'; import { pipe } from 'tools/function'; import { round } from 'tools/number'; export const id = 'output'; export const title = 'Результаты'; export const titles: Record = { resultTotalGraphwithNDS: 'Итого по графику, с НДС', resultPlPrice: 'Стоимость ПЛ с НДС', resultPriceUpPr: 'Удорожание, год', resultIRRGraphPerc: 'IRR по графику клиента, %', resultIRRNominalPerc: 'IRR (номинал), %', resultInsKasko: 'КАСКО, НС, ДГО в графике', resultInsOsago: 'ОСАГО в графике', resultDopProdSum: 'Общая сумма доп.продуктов', resultFirstPayment: 'Первый платеж', resultLastPayment: 'Последний платеж', resultTerm: 'Срок, мес.', resultAB_FL: 'АВ ФЛ, без НДФЛ.', resultAB_UL: 'АВ ЮЛ, с НДС.', resultBonusMPL: 'Бонус МПЛ за лизинг, без НДФЛ', resultDopMPLLeasing: 'Доп.бонус МПЛ за лизинг, без НДФЛ', resultBonusDopProd: 'Бонус МПЛ за доп.продукты, без НДФЛ', resultBonusSafeFinance: 'Бонус за Safe Finance без НДФЛ', resultFirstPaymentRiskPolicy: 'Первый платеж по риск политике, %', }; const moneyFormatters = Object.fromEntries( ( [ 'resultTotalGraphwithNDS', 'resultPlPrice', 'resultInsKasko', 'resultInsOsago', 'resultDopProdSum', 'resultFirstPayment', 'resultLastPayment', 'resultAB_FL', 'resultAB_UL', 'resultBonusMPL', 'resultDopMPLLeasing', 'resultBonusDopProd', 'labelSubsidySum', 'resultBonusSafeFinance', 'resultPriceUpPr', ] as Values[] ).map((a) => [a, (value: number) => pipe(round, formatMoney)(value)]) ); const percentFormatters = Object.fromEntries( (['resultIRRGraphPerc', 'resultIRRNominalPerc', 'resultFirstPaymentRiskPolicy'] as Values[]).map( (a) => [a, (value: number) => pipe(round, formatPercent)(value)] ) ); const defaultFormatters = { resultTerm: (value: number) => formatNumber(value), }; export const formatters = Object.assign(moneyFormatters, percentFormatters, defaultFormatters);