aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/models/invoice.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/models/invoice.ts b/src/models/invoice.ts
new file mode 100644
index 0000000..d6e47c1
--- /dev/null
+++ b/src/models/invoice.ts
@@ -0,0 +1,28 @@
+import z from "zod";
+
+export const Currency = z.enum(["USD", "EUR", "RSD"]);
+
+export const LineItem = z.object({
+ description: z.string(),
+ quantity: z.number(),
+ rate: z.number(),
+});
+
+export const Invoice = z.object({
+ invoice_number: z.number(),
+ from: z.string(),
+ bill_to: z.string().optional(),
+ ship_to: z.string().optional(),
+ date: z.coerce.date().optional(),
+ payment_terms: z.string().optional(),
+ due_date: z.coerce.date().optional(),
+ po_number: z.string().optional(),
+ currency: Currency,
+ line_items: z.array(LineItem),
+ notes: z.string().optional(),
+ terms: z.string().optional(),
+});
+
+export type Currency = z.infer<typeof Currency>;
+export type Invice = z.infer<typeof Invoice>;
+export type LineItem = z.infer<typeof LineItem>;