diff options
| author | mihailo.vojinovic <mihailonvojinovic@gmail.com> | 2026-02-11 15:35:57 +0100 |
|---|---|---|
| committer | mihailo.vojinovic <mihailonvojinovic@gmail.com> | 2026-02-11 15:35:57 +0100 |
| commit | a91dbf1b7fb173ee31becf6f91d28741fe40f296 (patch) | |
| tree | 74033ed4450df434ebdecdad285412bb29e614ac /src/models | |
| parent | bfba69179b078c24036ef8da02b5a87b288594ce (diff) | |
| download | invoice-a91dbf1b7fb173ee31becf6f91d28741fe40f296.tar.gz invoice-a91dbf1b7fb173ee31becf6f91d28741fe40f296.zip | |
Fix optional dates in invoice schema
Diffstat (limited to 'src/models')
| -rw-r--r-- | src/models/invoice.ts | 10 |
1 files changed, 8 insertions, 2 deletions
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), |
