25 lines
866 B
TypeScript
25 lines
866 B
TypeScript
import type { ProcessContext } from '../types';
|
||
import helper from './lib/helper';
|
||
import ValuesSchema from '@/config/schema/values';
|
||
import { round } from 'tools';
|
||
import { z } from 'zod';
|
||
|
||
export function createValidationSchema(context: ProcessContext) {
|
||
const { getCoefficient } = helper(context);
|
||
|
||
return ValuesSchema.pick({ product: true, saleBonus: true }).superRefine(
|
||
async ({ product, saleBonus }, ctx) => {
|
||
const coefficient = await getCoefficient(product);
|
||
const maxBonus = (coefficient?.evo_sot_coefficient || 0) * 100;
|
||
|
||
if (round(saleBonus, 2) > round(maxBonus, 2)) {
|
||
ctx.addIssue({
|
||
code: z.ZodIssueCode.custom,
|
||
message: 'Размер бонуса МПЛ не может быть выше установленного по СОТ',
|
||
path: ['tbxSaleBonus'],
|
||
});
|
||
}
|
||
}
|
||
);
|
||
}
|