2022-11-12 12:40:49 +03:00

147 lines
5.7 KiB
TypeScript

import { MAX_FRANCHISE, MAX_LEASING_PERIOD } from 'constants/values';
import dayjs from 'dayjs';
import { z } from 'zod';
const ValuesSchema = z.object({
lead: z.string().nullable(),
opportunity: z.string().nullable(),
quote: z.string().nullable(),
recalcWithRevision: z.boolean(),
product: z.string().nullable(),
clientRisk: z.string().nullable(),
clientType: z.string().nullable(),
leaseObjectPrice: z.number().min(0).max(1_000_000_000),
supplierCurrency: z.string().nullable(),
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().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().min(50).max(99),
seasonType: z.number().nullable(),
highSeasonStart: z.number().nullable(),
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().min(1).max(1000),
withTrailer: z.boolean(),
leaseObjectUsed: z.boolean(),
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().min(1994).max(dayjs().year()),
engineType: z.number().nullable(),
leaseObjectCategory: z.number().nullable(),
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().min(0).max(20),
dealerBroker: z.string().nullable(),
dealerBrokerRewardCondition: z.string().nullable(),
dealerBrokerRewardSumm: z.number().min(0).max(20),
indAgent: z.string().nullable(),
indAgentRewardCondition: z.string().nullable(),
indAgentRewardSumm: z.number().min(0).max(20),
calcDoubleAgent: z.string().nullable(),
calcDoubleAgentRewardCondition: z.string().nullable(),
calcDoubleAgentRewardSumm: z.number().min(0).max(20),
calcBroker: z.string().nullable(),
calcBrokerRewardCondition: z.string().nullable(),
calcBrokerRewardSum: z.number().min(0).max(20),
calcFinDepartment: z.string().nullable(),
finDepartmentRewardCondtion: z.string().nullable(),
finDepartmentRewardSumm: z.number().min(0).max(20),
GPSBrand: z.string().nullable(),
GPSModel: z.string().nullable(),
regionRegistration: z.string().nullable(),
townRegistration: z.string().nullable(),
infuranceOPF: z.number().nullable(),
insKaskoType: z.number().nullable(),
insDecentral: z.boolean(),
insFranchise: z.number().min(0).max(MAX_FRANCHISE),
insUnlimitDrivers: z.boolean(),
insAgeDrivers: z.number(),
insExpDrivers: z.number(),
INNForCalc: z.number(),
lastPaymentRedemption: z.boolean(),
priceWithDiscount: z.boolean(),
fullPriceWithDiscount: z.boolean(),
costIncrease: z.boolean(),
insurance: z.boolean(),
registrationQuote: z.boolean(),
technicalCardQuote: z.boolean(),
NSIB: z.boolean(),
quoteName: z.string().nullable(),
quoteContactGender: z.number().nullable(),
quoteRedemptionGraph: z.boolean(),
showFinGAP: z.boolean(),
tarif: z.string().nullable(),
creditRate: z.number().min(0).max(99.99),
rate: z.string().nullable(),
requirementTelematic: z.number().nullable(),
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().min(0),
calcType: z.number().nullable(),
totalPayments: z.number().min(0),
objectRegistration: z.number().nullable(),
objectRegionRegistration: z.string().nullable(),
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(),
legalClientRegion: z.string().nullable(),
legalClientTown: z.string().nullable(),
subsidy: z.string().nullable(),
fuelCard: z.string().nullable(),
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 */
kpUrl: z.string().nullable(),
leadUrl: z.string().nullable(),
opportunityUrl: z.string().nullable(),
quoteUrl: z.string().nullable(),
/** Readonly Values */
leaseObjectRiskName: z.string().nullable(),
insKaskoPriceLeasePeriod: z.number().min(0),
irrInfo: z.string().nullable(),
registrationDescription: z.string().nullable(),
depreciationGroup: z.string().nullable(),
subsidySum: z.number().min(0),
plPriceRub: z.number(),
discountRub: z.number(),
});
export default ValuesSchema;