config/schema: add min/max props

This commit is contained in:
Chika 2022-11-12 12:40:49 +03:00
parent 878ec1d62a
commit 9a73d95598

View File

@ -1,3 +1,5 @@
import { MAX_FRANCHISE, MAX_LEASING_PERIOD } from 'constants/values';
import dayjs from 'dayjs';
import { z } from 'zod';
const ValuesSchema = z.object({
@ -8,65 +10,65 @@ const ValuesSchema = z.object({
product: z.string().nullable(),
clientRisk: z.string().nullable(),
clientType: z.string().nullable(),
leaseObjectPrice: z.number(),
leaseObjectPrice: z.number().min(0).max(1_000_000_000),
supplierCurrency: z.string().nullable(),
supplierDiscountRub: z.number(),
supplierDiscountPerc: z.number(),
leasingPeriod: z.number(),
firstPaymentPerc: z.number(),
firstPaymentRub: z.number(),
lastPaymentPerc: z.number(),
lastPaymentRub: z.number(),
supplierDiscountRub: z.number().min(0).max(1_000_000_000),
supplierDiscountPerc: z.number().min(0).max(100),
leasingPeriod: z.number().min(13).max(MAX_LEASING_PERIOD),
firstPaymentPerc: z.number().min(0).max(50),
firstPaymentRub: z.number().min(0).max(1_000_000_000),
lastPaymentPerc: z.number().min(0).max(70),
lastPaymentRub: z.number().min(0).max(1_000_000_000),
lastPaymentRule: z.number().nullable(),
importProgram: z.string().nullable(),
importProgramSum: z.number(),
addEquipmentPrice: z.number(),
redemptionPaymentSum: z.number(),
importProgramSum: z.number().min(0),
addEquipmentPrice: z.number().min(0),
redemptionPaymentSum: z.number().min(1000).max(2000),
balanceHolder: z.number().nullable(),
graphType: z.number().nullable(),
parmentsDecreasePercent: z.number(),
parmentsDecreasePercent: z.number().min(50).max(99),
seasonType: z.number().nullable(),
highSeasonStart: z.number().nullable(),
comissionPerc: z.number(),
comissionRub: z.number(),
saleBonus: z.number(),
IRR_Perc: z.number(),
comissionPerc: z.number().min(0).max(100),
comissionRub: z.number().min(0).max(1_000_000_000),
saleBonus: z.number().min(0),
IRR_Perc: z.number().min(0).max(500),
leaseObjectType: z.string().nullable(),
deliveryTime: z.number().nullable(),
leaseObjectCount: z.number(),
leaseObjectCount: z.number().min(1).max(1000),
withTrailer: z.boolean(),
leaseObjectUsed: z.boolean(),
maxMass: z.number(),
countSeats: z.number(),
maxSpeed: z.number(),
maxMass: z.number().min(0).max(999_999),
countSeats: z.number().min(0).max(2000),
maxSpeed: z.number().min(0).max(2000),
brand: z.string().nullable(),
model: z.string().nullable(),
configuration: z.string().nullable(),
leaseObjectYear: z.number(),
leaseObjectYear: z.number().min(1994).max(dayjs().year()),
engineType: z.number().nullable(),
leaseObjectCategory: z.number().nullable(),
leaseObjectMotorPower: z.number(),
engineVolume: z.number(),
leaseObjectMotorPower: z.number().min(0).max(20_000),
engineVolume: z.number().min(0).max(99.9999),
leaseObjectUseFor: z.number().nullable(),
dealer: z.string().nullable(),
dealerPerson: z.string().nullable(),
dealerRewardCondition: z.string().nullable(),
dealerRewardSumm: z.number(),
dealerRewardSumm: z.number().min(0).max(20),
dealerBroker: z.string().nullable(),
dealerBrokerRewardCondition: z.string().nullable(),
dealerBrokerRewardSumm: z.number(),
dealerBrokerRewardSumm: z.number().min(0).max(20),
indAgent: z.string().nullable(),
indAgentRewardCondition: z.string().nullable(),
indAgentRewardSumm: z.number(),
indAgentRewardSumm: z.number().min(0).max(20),
calcDoubleAgent: z.string().nullable(),
calcDoubleAgentRewardCondition: z.string().nullable(),
calcDoubleAgentRewardSumm: z.number(),
calcDoubleAgentRewardSumm: z.number().min(0).max(20),
calcBroker: z.string().nullable(),
calcBrokerRewardCondition: z.string().nullable(),
calcBrokerRewardSum: z.number(),
calcBrokerRewardSum: z.number().min(0).max(20),
calcFinDepartment: z.string().nullable(),
finDepartmentRewardCondtion: z.string().nullable(),
finDepartmentRewardSumm: z.number(),
finDepartmentRewardSumm: z.number().min(0).max(20),
GPSBrand: z.string().nullable(),
GPSModel: z.string().nullable(),
regionRegistration: z.string().nullable(),
@ -74,7 +76,7 @@ const ValuesSchema = z.object({
infuranceOPF: z.number().nullable(),
insKaskoType: z.number().nullable(),
insDecentral: z.boolean(),
insFranchise: z.number(),
insFranchise: z.number().min(0).max(MAX_FRANCHISE),
insUnlimitDrivers: z.boolean(),
insAgeDrivers: z.number(),
insExpDrivers: z.number(),
@ -92,26 +94,26 @@ const ValuesSchema = z.object({
quoteRedemptionGraph: z.boolean(),
showFinGAP: z.boolean(),
tarif: z.string().nullable(),
creditRate: z.number(),
creditRate: z.number().min(0).max(99.99),
rate: z.string().nullable(),
requirementTelematic: z.number().nullable(),
minPriceChange: z.number(),
maxPriceChange: z.number(),
importerRewardPerc: z.number(),
importerRewardRub: z.number(),
minPriceChange: z.number().min(0).max(34_999_990),
maxPriceChange: z.number().min(0).max(34_999_990),
importerRewardPerc: z.number().min(0).max(99.99),
importerRewardRub: z.number().min(0).max(1_000_000_000),
disableChecks: z.boolean(),
registration: z.string().nullable(),
insNSIB: z.string().nullable(),
technicalCard: z.string().nullable(),
telematic: z.string().nullable(),
tracker: z.string().nullable(),
mileage: z.number(),
mileage: z.number().min(0),
calcType: z.number().nullable(),
totalPayments: z.number(),
totalPayments: z.number().min(0),
objectRegistration: z.number().nullable(),
objectRegionRegistration: z.string().nullable(),
vehicleTaxInYear: z.number(),
vehicleTaxInLeasingPeriod: z.number(),
vehicleTaxInYear: z.number().min(0).max(9_999_999),
vehicleTaxInLeasingPeriod: z.number().min(0).max(9_999_999),
objectCategoryTax: z.number().nullable(),
objectTypeTax: z.number().nullable(),
typePTS: z.number().nullable(),
@ -119,9 +121,9 @@ const ValuesSchema = z.object({
legalClientTown: z.string().nullable(),
subsidy: z.string().nullable(),
fuelCard: z.string().nullable(),
leaseObjectPriceWthtVAT: z.number(),
VATInLeaseObjectPrice: z.number(),
engineHours: z.number(),
leaseObjectPriceWthtVAT: z.number().min(0).max(1_000_000_000),
VATInLeaseObjectPrice: z.number().min(0).max(1_000_000_000),
engineHours: z.number().min(0).max(10),
bonusCoefficient: z.number(),
/** Link Values */
@ -132,11 +134,11 @@ const ValuesSchema = z.object({
/** Readonly Values */
leaseObjectRiskName: z.string().nullable(),
insKaskoPriceLeasePeriod: z.number(),
insKaskoPriceLeasePeriod: z.number().min(0),
irrInfo: z.string().nullable(),
registrationDescription: z.string().nullable(),
depreciationGroup: z.string().nullable(),
subsidySum: z.number(),
subsidySum: z.number().min(0),
plPriceRub: z.number(),
discountRub: z.number(),
});