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;