Uecko_ERP/modules/customer-invoices/src/web/schemas/customer-invoices.api.schema.ts
2025-10-06 19:40:37 +02:00

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">;