30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import { z } from "zod/v4";
|
|
|
|
import { ArrayElement } from "@repo/rdx-utils";
|
|
import {
|
|
CreateCustomerInvoiceRequestSchema,
|
|
GetCustomerInvoiceByIdResponseSchema,
|
|
ListCustomerInvoicesResponseDTO,
|
|
UpdateCustomerInvoiceByIdRequestSchema,
|
|
} from "../../common";
|
|
|
|
// Esquemas (Zod) provenientes del servidor
|
|
export const CustomerInvoiceSchema = GetCustomerInvoiceByIdResponseSchema.omit({
|
|
metadata: true,
|
|
});
|
|
export const CustomerInvoiceCreateSchema = CreateCustomerInvoiceRequestSchema;
|
|
export const CustomerInvoiceUpdateSchema = UpdateCustomerInvoiceByIdRequestSchema;
|
|
|
|
// Tipos (derivados de Zod o DTOs del backend)
|
|
export type CustomerInvoice = z.infer<typeof CustomerInvoiceSchema>;
|
|
export type CustomerInvoiceItem = ArrayElement<CustomerInvoice["items"]>;
|
|
|
|
export type CustomerInvoiceCreateInput = z.infer<typeof CustomerInvoiceCreateSchema>; // Cuerpo para crear
|
|
export type CustomerInvoiceUpdateInput = z.infer<typeof CustomerInvoiceUpdateSchema>; // Cuerpo para actualizar
|
|
|
|
// Resultado de consulta con criteria (paginado, etc.)
|
|
export type CustomerInvoicesPage = ListCustomerInvoicesResponseDTO;
|
|
|
|
// Ítem simplificado dentro del listado (no toda la entidad)
|
|
export type CustomerInvoiceSummary = Omit<ArrayElement<CustomerInvoicesPage["items"]>, "metadata">;
|