From a91dbf1b7fb173ee31becf6f91d28741fe40f296 Mon Sep 17 00:00:00 2001 From: "mihailo.vojinovic" Date: Wed, 11 Feb 2026 15:35:57 +0100 Subject: Fix optional dates in invoice schema --- src/models/invoice.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/models/invoice.ts') diff --git a/src/models/invoice.ts b/src/models/invoice.ts index 041c9c6..bfe99cf 100644 --- a/src/models/invoice.ts +++ b/src/models/invoice.ts @@ -8,14 +8,20 @@ export const LineItemSchema = z.object({ rate: z.number(), }); +const optionalDate = z.preprocess((v) => { + if (v === "" || v === null) return undefined; + if (v instanceof Date && isNaN(v.getTime())) return undefined; + return v; +}, z.coerce.date().optional()); + export const InvoiceSchema = z.object({ invoice_number: z.number(), from: z.string(), bill_to: z.string().optional(), ship_to: z.string().optional(), - date: z.coerce.date().optional(), + date: optionalDate, payment_terms: z.string().optional(), - due_date: z.coerce.date().optional(), + due_date: optionalDate, po_number: z.string().optional(), currency: CurrencyEnum, line_items: z.array(LineItemSchema), -- cgit v1.3.1