diff options
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), |
