diff --git a/src/components/RecurringExpense/RecurringExpenseSchema.js b/src/components/RecurringExpense/RecurringExpenseSchema.js index b7c312a2..7c5e3b9e 100644 --- a/src/components/RecurringExpense/RecurringExpenseSchema.js +++ b/src/components/RecurringExpense/RecurringExpenseSchema.js @@ -1,16 +1,65 @@ import { boolean, z } from "zod"; import { INR_CURRENCY_CODE } from "../../utils/constants"; +// export const PaymentRecurringExpense = (expenseTypes) => { +// return z +// .object({ +// title: z.string().min(1, { message: "Project is required" }), + +// description: z.string().min(1, { message: "Description is required" }), + +// payee: z.string().min(1, { message: "Supplier name is required" }), + +// notifyTo: z.string().min(1, { message: "Notification is required" }), + +// currencyId: z +// .string() +// .min(1, { message: "Currency is required" }), + +// amount: z.coerce +// .number({ +// invalid_type_error: "Amount is required and must be a number", +// }) +// .min(1, "Amount must be Enter") +// .refine((val) => /^\d+(\.\d{1,2})?$/.test(val.toString()), { +// message: "Amount must have at most 2 decimal places", +// }), + +// strikeDate: z.string().min(1, { message: "Date is required" }), + +// projectId: z.string().min(1, { message: "Project is required" }), + +// paymentBufferDays: z.string().min(1, { message: "Buffer days is required" }), + +// numberOfIteration: z.string().min(1, { message: "Iteration is required" }), + +// expenseCategoryId: z +// .string() +// .min(1, { message: "Expense Category is required" }), + +// statusId: z.string().min(1, { message: "Please select a status" }), + +// frequency: z.string().min(1, { message: "Frequency is required" }), + +// isVariable: z.boolean().optional(), + +// }) +// }; + + export const PaymentRecurringExpense = (expenseTypes) => { return z.object({ - title: z.string().min(1, { message: "Title is required" }).transform((val) => val.trim()), - description: z.string().min(1, { message: "Description is required" }).transform((val) => val.trim()), - payee: z.string().min(1, { message: "Payee name is required" }).transform((val) => val.trim()), - notifyTo: z.string().min(1, { message: "Notification e-mail is required" }).transform((val) => val.trim()), + title: z.string().min(1, { message: "Project is required" }), + + description: z.string().min(1, { message: "Description is required" }), + + payee: z.string().min(1, { message: "Supplier name is required" }), + + notifyTo: z.string().min(1, { message: "Notification is required" }), + currencyId: z .string() - .min(1, { message: "Currency is required" }) - .transform((val) => val.trim()), + .min(1, { message: "Currency is required" }), amount: z .number({ @@ -27,13 +76,11 @@ export const PaymentRecurringExpense = (expenseTypes) => { .min(1, { message: "Date is required" }) .refine((val) => !isNaN(Date.parse(val)), { message: "Invalid date format", - }) - .transform((val) => val.trim()), + }), projectId: z .string() - .min(1, { message: "Project is required" }) - .transform((val) => val.trim()), + .min(1, { message: "Project is required" }), paymentBufferDays: z .number({ @@ -51,28 +98,23 @@ export const PaymentRecurringExpense = (expenseTypes) => { expenseCategoryId: z .string() - .min(1, { message: "Expense Category is required" }) - .transform((val) => val.trim()), + .min(1, { message: "Expense Category is required" }), statusId: z .string() - .min(1, { message: "Please select a status" }) - .transform((val) => val.trim()), + .min(1, { message: "Please select a status" }), frequency: z .number({ required_error: "Frequency is required", invalid_type_error: "Frequency must be a number", }) - .refine((val) => [0, 1, 2, 3, 4, 5].includes(val), { - message: "Invalid frequency selected", - }), + .min(1, { message: "Frequency must be greater than 0" }), isVariable: z.boolean().optional(), }); }; - export const defaultRecurringExpense = { title: "", description: "", @@ -87,26 +129,30 @@ export const defaultRecurringExpense = { expenseCategoryId: "", statusId: "", frequency: 1, - isVariable: true, + isVariable: false, }; -export const SearchRecurringExpenseSchema = z.object({ - title: z.array(z.string()).optional(), - description: z.array(z.string()).optional(), - payee: z.array(z.string()).optional(), - notifyTo: z.array(z.string()).optional(), - currencyId: z.array(z.string()).optional(), - amount: z.array(z.string()).optional(), - strikeDate: z.string().optional(), - projectId: z.string().optional(), - paymentBufferDays: z.string().optional(), - numberOfIteration: z.string().optional(), - expenseCategoryId: z.string().optional(), - statusId: z.string().optional(), - frequency: z.string().optional(), - isVariable: z.string().optional(), -}); - +// export const SearchPaymentRequestSchema = z.object({ +// projectIds: z.array(z.string()).optional(), +// statusIds: z.array(z.string()).optional(), +// createdByIds: z.array(z.string()).optional(), +// currencyIds: z.array(z.string()).optional(), +// expenseCategoryIds: z.array(z.string()).optional(), +// payees: z.array(z.string()).optional(), +// startDate: z.string().optional(), +// endDate: z.string().optional(), +// }); + +// export const defaultPaymentRequestFilter = { +// projectIds: [], +// statusIds: [], +// createdByIds: [], +// currencyIds: [], +// expenseCategoryIds: [], +// payees: [], +// startDate: null, +// endDate: null, +// };