stores: specify values types for ValuesStore
This commit is contained in:
parent
eea6598211
commit
5ae2a6ca53
@ -1,38 +1,36 @@
|
||||
import { makeAutoObservable } from 'mobx';
|
||||
import { RootStore } from '../../root';
|
||||
import { Values } from './types';
|
||||
|
||||
export type CalculationValues = Partial<Record<Values, any>>;
|
||||
import { Values, ValuesTypes } from './types';
|
||||
|
||||
export class ValuesStore {
|
||||
root: RootStore;
|
||||
#values: CalculationValues = {};
|
||||
#values: Partial<ValuesTypes> = {};
|
||||
|
||||
constructor(rootStore: RootStore) {
|
||||
makeAutoObservable(this);
|
||||
this.root = rootStore;
|
||||
}
|
||||
|
||||
hydrate = (initialValues: CalculationValues) => {
|
||||
hydrate = (initialValues: Partial<ValuesTypes>) => {
|
||||
this.#values = initialValues;
|
||||
};
|
||||
|
||||
getValue(valueName: Values) {
|
||||
getValue<K extends Values>(valueName: K): Partial<ValuesTypes>[K] {
|
||||
return this.#values[valueName];
|
||||
}
|
||||
|
||||
getValues<K extends Values>(valuesNames: readonly K[]) {
|
||||
return valuesNames.reduce((values, valueName) => {
|
||||
values[valueName] = this.#values[valueName];
|
||||
values[valueName] = this.getValue(valueName);
|
||||
return values;
|
||||
}, {} as Record<K, any>);
|
||||
}, {} as Pick<Partial<ValuesTypes>, typeof valuesNames[number]>);
|
||||
}
|
||||
|
||||
setValue(valueName: Values, value: any) {
|
||||
this.#values[valueName] = value;
|
||||
}
|
||||
|
||||
setValues(values: CalculationValues, options: { replace?: boolean }) {
|
||||
setValues(values: Partial<ValuesTypes>, options: { replace?: boolean }) {
|
||||
if (options.replace) this.#values = values;
|
||||
this.#values = Object.assign(this.#values, values);
|
||||
}
|
||||
|
||||
@ -1,149 +1,255 @@
|
||||
export type Values =
|
||||
| 'lead'
|
||||
| 'opportunity'
|
||||
| 'quote'
|
||||
| 'recalcWithRevision'
|
||||
| 'product'
|
||||
| 'clientRisk'
|
||||
| 'clientType'
|
||||
| 'leaseObjectPrice'
|
||||
| 'supplierCurrency'
|
||||
| 'supplierDiscountRub'
|
||||
| 'supplierDiscountPerc'
|
||||
| 'leasingPeriod'
|
||||
| 'firstPaymentPerc'
|
||||
| 'firstPaymentRub'
|
||||
| 'lastPaymentPerc'
|
||||
| 'lastPaymentRub'
|
||||
| 'lastPaymentRule'
|
||||
| 'redemptionPaymentSum'
|
||||
| 'balanceHolder'
|
||||
| 'graphType'
|
||||
| 'parmentsDecreasePercent'
|
||||
| 'seasonType'
|
||||
| 'highSeasonStart'
|
||||
| 'comissionPerc'
|
||||
| 'comissionRub'
|
||||
| 'saleBonus'
|
||||
| 'IRR_Perc'
|
||||
| 'paymentGraph'
|
||||
| 'leaseObjectType'
|
||||
| 'deliveryTime'
|
||||
| 'leaseObjectRisk'
|
||||
| 'depreciationGroup'
|
||||
| 'leaseObjectCount'
|
||||
| 'withTrailer'
|
||||
| 'leaseObjectUsed'
|
||||
| 'maxMass'
|
||||
| 'countSeats'
|
||||
| 'maxSpeed'
|
||||
| 'brand'
|
||||
| 'model'
|
||||
| 'configuration'
|
||||
| 'leaseObjectYear'
|
||||
| 'engineType'
|
||||
| 'leaseObjectCategory'
|
||||
| 'leaseObjectMotorPower'
|
||||
| 'engineVolume'
|
||||
| 'leaseObjectUseFor'
|
||||
| 'dealer'
|
||||
| 'dealerPerson'
|
||||
| 'dealerRewardCondition'
|
||||
| 'dealerRewardSumm'
|
||||
| 'dealerBroker'
|
||||
| 'dealerBrokerRewardCondition'
|
||||
| 'dealerBrokerRewardSumm'
|
||||
| 'indAgent'
|
||||
| 'indAgentRewardCondition'
|
||||
| 'indAgentRewardSumm'
|
||||
| 'calcDoubleAgent'
|
||||
| 'calcDoubleAgentRewardCondition'
|
||||
| 'calcDoubleAgentRewardSumm'
|
||||
| 'calcBroker'
|
||||
| 'calcBrokerRewardCondition'
|
||||
| 'calcBrokerRewardSum'
|
||||
| 'calcFinDepartment'
|
||||
| 'finDepartmentRewardCondtion'
|
||||
| 'finDepartmentRewardSumm'
|
||||
| 'GPSBrand'
|
||||
| 'GPSModel'
|
||||
| 'regionRegistration'
|
||||
| 'townRegistration'
|
||||
| 'infuranceOPF'
|
||||
| 'insKaskoType'
|
||||
| 'insDecentral'
|
||||
| 'insFranchise'
|
||||
| 'insUnlimitDrivers'
|
||||
| 'insAgeDrivers'
|
||||
| 'insExpDrivers'
|
||||
| 'INNForCalc'
|
||||
| 'lastPaymentRedemption'
|
||||
| 'priceWithDiscount'
|
||||
| 'fullPriceWithDiscount'
|
||||
| 'costIncrease'
|
||||
| 'insurance'
|
||||
| 'registrationQuote'
|
||||
| 'technicalCardQuote'
|
||||
| 'NSIB'
|
||||
| 'quoteName'
|
||||
| 'quoteContactGender'
|
||||
| 'quoteRedemptionGraph'
|
||||
| 'showFinGAP'
|
||||
| 'tarif'
|
||||
| 'creditRate'
|
||||
| 'rate'
|
||||
| 'requirementTelematic'
|
||||
| 'maxPriceChange'
|
||||
| 'importerRewardPerc'
|
||||
| 'importerRewardRub'
|
||||
| 'disableChecks'
|
||||
| 'registration'
|
||||
| 'insNSIB'
|
||||
| 'technicalCard'
|
||||
| 'telematic'
|
||||
| 'tracker'
|
||||
| 'mileage'
|
||||
| 'calcType'
|
||||
| 'totalPayments'
|
||||
| 'objectRegistration'
|
||||
| 'objectRegionRegistration'
|
||||
| 'vehicleTaxInYear'
|
||||
| 'vehicleTaxInLeasingPeriod'
|
||||
| 'objectCategoryTax'
|
||||
| 'objectTypeTax'
|
||||
| 'typePTS'
|
||||
| 'legalClientRegion'
|
||||
| 'legalClientTown'
|
||||
| 'subsidy'
|
||||
| 'subsidySum'
|
||||
| 'fuelCard'
|
||||
| 'minPriceChange'
|
||||
| 'leaseObjectPriceWthtVAT'
|
||||
| 'VATInLeaseObjectPrice'
|
||||
| 'engineHours'
|
||||
export interface ValuesTypes {
|
||||
lead: string;
|
||||
opportunity: string;
|
||||
quote: string;
|
||||
recalcWithRevision: boolean;
|
||||
product: string;
|
||||
clientRisk: string;
|
||||
clientType: string;
|
||||
leaseObjectPrice: number;
|
||||
supplierCurrency: string;
|
||||
supplierDiscountRub: number;
|
||||
supplierDiscountPerc: number;
|
||||
leasingPeriod: number;
|
||||
firstPaymentPerc: number;
|
||||
firstPaymentRub: number;
|
||||
lastPaymentPerc: number;
|
||||
lastPaymentRub: number;
|
||||
lastPaymentRule: 100_000_000 | 100_000_001 | 100_000_002;
|
||||
redemptionPaymentSum: number;
|
||||
balanceHolder: 100_000_000 | 100_000_001;
|
||||
graphType:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004;
|
||||
|
||||
parmentsDecreasePercent: number;
|
||||
seasonType:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004
|
||||
| 100_000_005
|
||||
| 100_000_006
|
||||
| 100_000_007;
|
||||
highSeasonStart:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004
|
||||
| 100_000_005
|
||||
| 100_000_006
|
||||
| 100_000_007
|
||||
| 100_000_008
|
||||
| 100_000_009
|
||||
| 100_000_010
|
||||
| 100_000_011
|
||||
| 100_000_012;
|
||||
comissionPerc: number;
|
||||
comissionRub: number;
|
||||
saleBonus: number;
|
||||
IRR_Perc: number;
|
||||
leaseObjectType: string;
|
||||
deliveryTime:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004
|
||||
| 100_000_005
|
||||
| 100_000_006
|
||||
| 100_000_007
|
||||
| 100_000_008
|
||||
| 100_000_009
|
||||
| 100_000_010
|
||||
| 100_000_011
|
||||
| 100_000_012;
|
||||
depreciationGroup: string;
|
||||
leaseObjectCount: number;
|
||||
withTrailer: boolean;
|
||||
leaseObjectUsed: boolean;
|
||||
maxMass: number;
|
||||
countSeats: number;
|
||||
maxSpeed: number;
|
||||
brand: string;
|
||||
model: string;
|
||||
configuration: string;
|
||||
leaseObjectYear: number;
|
||||
engineType:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004;
|
||||
leaseObjectCategory:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004;
|
||||
leaseObjectMotorPower: number;
|
||||
engineVolume: number;
|
||||
leaseObjectUseFor:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004
|
||||
| 100_000_005
|
||||
| 100_000_006
|
||||
| 100_000_007
|
||||
| 100_000_008
|
||||
| 100_000_009
|
||||
| 100_000_010
|
||||
| 100_000_011
|
||||
| 100_000_012
|
||||
| 100_000_013
|
||||
| 100_000_014
|
||||
| 100_000_015
|
||||
| 100_000_016
|
||||
| 100_000_017
|
||||
| 100_000_018
|
||||
| 100_000_019;
|
||||
dealer: string;
|
||||
dealerPerson: string;
|
||||
dealerRewardCondition: string;
|
||||
dealerRewardSumm: number;
|
||||
dealerBroker: string;
|
||||
dealerBrokerRewardCondition: string;
|
||||
dealerBrokerRewardSumm: number;
|
||||
indAgent: string;
|
||||
indAgentRewardCondition: string;
|
||||
indAgentRewardSumm: number;
|
||||
calcDoubleAgent: string;
|
||||
calcDoubleAgentRewardCondition: string;
|
||||
calcDoubleAgentRewardSumm: number;
|
||||
calcBroker: string;
|
||||
calcBrokerRewardCondition: string;
|
||||
calcBrokerRewardSum: number;
|
||||
calcFinDepartment: string;
|
||||
finDepartmentRewardCondtion: string;
|
||||
finDepartmentRewardSumm: number;
|
||||
GPSBrand: string;
|
||||
GPSModel: string;
|
||||
regionRegistration: string;
|
||||
townRegistration: string;
|
||||
infuranceOPF: 100_000_000 | 100_000_001;
|
||||
insKaskoType: 100_000_000 | 100_000_001;
|
||||
insDecentral: boolean;
|
||||
insFranchise: number;
|
||||
insUnlimitDrivers: boolean;
|
||||
insAgeDrivers: number;
|
||||
insExpDrivers: number;
|
||||
INNForCalc: number;
|
||||
lastPaymentRedemption: boolean;
|
||||
priceWithDiscount: boolean;
|
||||
fullPriceWithDiscount: boolean;
|
||||
costIncrease: boolean;
|
||||
insurance: boolean;
|
||||
registrationQuote: boolean;
|
||||
technicalCardQuote: boolean;
|
||||
NSIB: boolean;
|
||||
quoteName: string;
|
||||
quoteContactGender: 100_000_000 | 100_000_001;
|
||||
quoteRedemptionGraph: boolean;
|
||||
showFinGAP: boolean;
|
||||
tarif: string;
|
||||
creditRate: number;
|
||||
rate: string;
|
||||
requirementTelematic:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004
|
||||
| 100_000_005
|
||||
| 100_000_006
|
||||
| 100_000_007;
|
||||
minPriceChange: number;
|
||||
maxPriceChange: number;
|
||||
importerRewardPerc: number;
|
||||
importerRewardRub: number;
|
||||
disableChecks: boolean;
|
||||
registration: string;
|
||||
insNSIB: string;
|
||||
technicalCard: string;
|
||||
telematic: string;
|
||||
tracker: string;
|
||||
mileage: number;
|
||||
calcType: 100_000_000 | 100_000_001;
|
||||
totalPayments: number;
|
||||
objectRegistration: 100_000_000 | 100_000_001;
|
||||
objectRegionRegistration: string;
|
||||
vehicleTaxInYear: number;
|
||||
vehicleTaxInLeasingPeriod: number;
|
||||
objectCategoryTax:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004
|
||||
| 100_000_005
|
||||
| 100_000_006
|
||||
| 100_000_007
|
||||
| 100_000_008
|
||||
| 100_000_009
|
||||
| 100_000_010
|
||||
| 100_000_011
|
||||
| 100_000_012
|
||||
| 100_000_013
|
||||
| 100_000_014
|
||||
| 100_000_015
|
||||
| 100_000_016
|
||||
| 100_000_017
|
||||
| 100_000_018
|
||||
| 100_000_019
|
||||
| 100_000_020;
|
||||
objectTypeTax:
|
||||
| 100_000_000
|
||||
| 100_000_001
|
||||
| 100_000_002
|
||||
| 100_000_003
|
||||
| 100_000_004
|
||||
| 100_000_005;
|
||||
typePTS: 100_000_000 | 100_000_001;
|
||||
legalClientRegion: string;
|
||||
legalClientTown: string;
|
||||
subsidy: string;
|
||||
subsidySum: number;
|
||||
fuelCard: string;
|
||||
leaseObjectPriceWthtVAT: number;
|
||||
VATInLeaseObjectPrice: number;
|
||||
engineHours: number;
|
||||
|
||||
/** Result Values */
|
||||
| 'resultTotalGraphwithNDS'
|
||||
| 'resultPlPrice'
|
||||
| 'resultPriceUpPr'
|
||||
| 'resultIRRGraphPerc'
|
||||
| 'resultIRRNominalPerc'
|
||||
| 'resultInsKasko'
|
||||
| 'resultInsOsago'
|
||||
| 'resultDopProdSum'
|
||||
| 'resultFirstPayment'
|
||||
| 'resultLastPayment'
|
||||
| 'resultTerm'
|
||||
| 'resultAB_FL'
|
||||
| 'resultAB_UL'
|
||||
| 'resultBonusMPL'
|
||||
| 'resultDopMPLLeasing'
|
||||
| 'resultBonusDopProd'
|
||||
| 'resultBonusSafeFinance'
|
||||
| 'resultFirstPaymentRiskPolicy'
|
||||
resultTotalGraphwithNDS: number;
|
||||
resultPlPrice: number;
|
||||
resultPriceUpPr: number;
|
||||
resultIRRGraphPerc: number;
|
||||
resultIRRNominalPerc: number;
|
||||
resultInsKasko: number;
|
||||
resultInsOsago: number;
|
||||
resultDopProdSum: number;
|
||||
resultFirstPayment: number;
|
||||
resultLastPayment: number;
|
||||
resultTerm: number;
|
||||
resultAB_FL: number;
|
||||
resultAB_UL: number;
|
||||
resultBonusMPL: number;
|
||||
resultDopMPLLeasing: number;
|
||||
resultBonusDopProd: number;
|
||||
resultBonusSafeFinance: number;
|
||||
resultFirstPaymentRiskPolicy: number;
|
||||
|
||||
/** Link Values */
|
||||
| 'kpUrl'
|
||||
| 'leadUrl'
|
||||
| 'opportunityUrl'
|
||||
| 'quoteUrl';
|
||||
kpUrl: string;
|
||||
leadUrl: string;
|
||||
opportunityUrl: string;
|
||||
quoteUrl: string;
|
||||
}
|
||||
|
||||
export type Values = keyof ValuesTypes;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user