87 lines
3.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.invoiceListQuerySchema = exports.invoiceQueryParamsSchema = exports.billingSummarySchema = exports.paymentInvoiceRequestSchema = exports.invoiceSsoLinkSchema = exports.invoiceListSchema = exports.invoicePaginationSchema = exports.invoiceSchema = exports.invoiceItemSchema = exports.invoiceStatusSchema = void 0;
const zod_1 = require("zod");
exports.invoiceStatusSchema = zod_1.z.enum([
"Draft",
"Pending",
"Paid",
"Unpaid",
"Overdue",
"Cancelled",
"Refunded",
"Collections",
]);
exports.invoiceItemSchema = zod_1.z.object({
id: zod_1.z.number().int().positive("Invoice item id must be positive"),
description: zod_1.z.string().min(1, "Description is required"),
amount: zod_1.z.number(),
quantity: zod_1.z.number().int().positive("Quantity must be positive").optional(),
type: zod_1.z.string().min(1, "Item type is required"),
serviceId: zod_1.z.number().int().positive().optional(),
});
exports.invoiceSchema = zod_1.z.object({
id: zod_1.z.number().int().positive("Invoice id must be positive"),
number: zod_1.z.string().min(1, "Invoice number is required"),
status: exports.invoiceStatusSchema,
currency: zod_1.z.string().min(1, "Currency is required"),
currencySymbol: zod_1.z.string().min(1, "Currency symbol is required").optional(),
total: zod_1.z.number(),
subtotal: zod_1.z.number(),
tax: zod_1.z.number(),
issuedAt: zod_1.z.string().optional(),
dueDate: zod_1.z.string().optional(),
paidDate: zod_1.z.string().optional(),
pdfUrl: zod_1.z.string().optional(),
paymentUrl: zod_1.z.string().optional(),
description: zod_1.z.string().optional(),
items: zod_1.z.array(exports.invoiceItemSchema).optional(),
daysOverdue: zod_1.z.number().int().nonnegative().optional(),
});
exports.invoicePaginationSchema = zod_1.z.object({
page: zod_1.z.number().int().nonnegative(),
totalPages: zod_1.z.number().int().nonnegative(),
totalItems: zod_1.z.number().int().nonnegative(),
nextCursor: zod_1.z.string().optional(),
});
exports.invoiceListSchema = zod_1.z.object({
invoices: zod_1.z.array(exports.invoiceSchema),
pagination: exports.invoicePaginationSchema,
});
exports.invoiceSsoLinkSchema = zod_1.z.object({
url: zod_1.z.string().url(),
expiresAt: zod_1.z.string(),
});
exports.paymentInvoiceRequestSchema = zod_1.z.object({
invoiceId: zod_1.z.number().int().positive(),
paymentMethodId: zod_1.z.number().int().positive().optional(),
gatewayName: zod_1.z.string().optional(),
amount: zod_1.z.number().positive().optional(),
});
exports.billingSummarySchema = zod_1.z.object({
totalOutstanding: zod_1.z.number(),
totalOverdue: zod_1.z.number(),
totalPaid: zod_1.z.number(),
currency: zod_1.z.string(),
currencySymbol: zod_1.z.string().optional(),
invoiceCount: zod_1.z.object({
total: zod_1.z.number().int().min(0),
unpaid: zod_1.z.number().int().min(0),
overdue: zod_1.z.number().int().min(0),
paid: zod_1.z.number().int().min(0),
}),
});
exports.invoiceQueryParamsSchema = zod_1.z.object({
page: zod_1.z.coerce.number().int().positive().optional(),
limit: zod_1.z.coerce.number().int().positive().max(100).optional(),
status: exports.invoiceStatusSchema.optional(),
dateFrom: zod_1.z.string().datetime().optional(),
dateTo: zod_1.z.string().datetime().optional(),
});
const invoiceListStatusSchema = zod_1.z.enum(["Paid", "Unpaid", "Cancelled", "Overdue", "Collections"]);
exports.invoiceListQuerySchema = zod_1.z.object({
page: zod_1.z.coerce.number().int().positive().optional(),
limit: zod_1.z.coerce.number().int().positive().max(100).optional(),
status: invoiceListStatusSchema.optional(),
});
//# sourceMappingURL=schema.js.map