import { z } from "zod" const relationFieldSchema = z .object({ value: z.string(), label: z.string() }) .nullable() const billPartItemSchema = z.object({ part_id: z.number(), title: z.string(), quantity: z.number().min(1), rate: z.number().min(0), description: z.string().optional(), }) const billServiceItemSchema = z.object({ service_id: z.number(), title: z.string(), quantity: z.number().min(1), rate: z.number().min(0), description: z.string().optional(), }) const billExpenseItemSchema = z.object({ expense_id: z.number(), title: z.string(), quantity: z.number().min(1), rate: z.number().min(0), description: z.string().optional(), }) const billFormSchema = z.object({ vendor: relationFieldSchema, purchase_order: relationFieldSchema, job_card: relationFieldSchema, payment_term: relationFieldSchema, department: relationFieldSchema, title: z.string().min(1, "Title is required"), bill_number: z.string().optional(), bill_date: z.string().optional(), bill_due_date: z.string().optional(), status: z.string().optional(), notes: z.string().optional(), part_items: z.array(billPartItemSchema).optional(), service_items: z.array(billServiceItemSchema).optional(), expense_items: z.array(billExpenseItemSchema).optional(), }) type BillFormValues = z.infer type BillPartItem = z.infer type BillServiceItem = z.infer type BillExpenseItem = z.infer export { billFormSchema, relationFieldSchema, billPartItemSchema, billServiceItemSchema, billExpenseItemSchema } export type { BillFormValues, BillPartItem, BillServiceItem, BillExpenseItem }