garage-erp/apps/dashboard/modules/credit-notes/credit-note.schema.ts
Mohammad Khyata 38565298fc update forms
Co-authored-by: Copilot <copilot@github.com>
2026-05-07 21:02:15 +03:00

32 lines
1.0 KiB
TypeScript

import { z } from "zod"
import { CreditNoteStatus } from "@garage/api"
const relationFieldSchema = z
.object({ value: z.string(), label: z.string() })
.nullable()
const optionalStringMax255Schema = z.preprocess(
(value) => (value === "" || value == null ? undefined : value),
z.string().max(255, "Must be at most 255 characters").optional(),
)
const creditNoteFormSchema = z.object({
// ── Required fields ──
subject: z.string().trim().min(1, "Subject is required").max(255, "Subject must be at most 255 characters"),
// ── Relations ──
customer: relationFieldSchema,
department: relationFieldSchema,
// ── Optional fields ──
date: z.string().min(1, "Date is required").date("Enter a valid date"),
status: z.enum(CreditNoteStatus).optional(),
notes: z.string().optional(),
credit_invoice: optionalStringMax255Schema,
})
type CreditNoteFormValues = z.infer<typeof creditNoteFormSchema>
export { creditNoteFormSchema, relationFieldSchema }
export type { CreditNoteFormValues }