2026-04-03 22:06:54 +00:00
|
|
|
import { z } from "zod/v4";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Este esquema es para validar los datos del formulario de actualización de cliente.
|
|
|
|
|
* No tiene por qué coincidir con el shape de la entidad ni con el de la API.
|
|
|
|
|
* Solo define los campos que se muestran en el formulario y sus validaciones.
|
|
|
|
|
*
|
|
|
|
|
* Reglas:
|
|
|
|
|
* - no meter transformaciones silenciosas raras en el esquema (ej: .toUpperCase())
|
|
|
|
|
* - nombres en camelCase
|
|
|
|
|
* - tipos orientados a UI/form
|
|
|
|
|
* - sin campos de solo lectura que no se editen
|
|
|
|
|
* - sin shape DTO
|
|
|
|
|
* - sin detalles impuestos por el widget
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
export const CustomerUpdateFormSchema = z.object({
|
2026-04-04 16:58:32 +00:00
|
|
|
reference: z.string(),
|
2026-04-03 22:06:54 +00:00
|
|
|
isCompany: z.boolean(),
|
|
|
|
|
name: z.string().min(1, "El nombre es obligatorio"),
|
2026-04-04 16:58:32 +00:00
|
|
|
tradeName: z.string(),
|
2026-04-03 22:06:54 +00:00
|
|
|
tin: z.string(),
|
|
|
|
|
|
|
|
|
|
defaultTaxes: z.array(z.string()),
|
|
|
|
|
|
2026-04-04 16:58:32 +00:00
|
|
|
street: z.string(),
|
|
|
|
|
street2: z.string(),
|
|
|
|
|
city: z.string(),
|
|
|
|
|
province: z.string(),
|
|
|
|
|
postalCode: z.string(),
|
|
|
|
|
country: z.string().min(1, "El país es obligatorio"),
|
2026-04-03 22:06:54 +00:00
|
|
|
|
2026-04-04 16:58:32 +00:00
|
|
|
primaryEmail: z.email("Email inválido"),
|
|
|
|
|
secondaryEmail: z.email("Email inválido"),
|
2026-04-03 22:06:54 +00:00
|
|
|
|
2026-04-04 16:58:32 +00:00
|
|
|
primaryPhone: z.string(),
|
|
|
|
|
secondaryPhone: z.string(),
|
|
|
|
|
primaryMobile: z.string(),
|
|
|
|
|
secondaryMobile: z.string(),
|
2026-04-03 22:06:54 +00:00
|
|
|
|
2026-04-04 16:58:32 +00:00
|
|
|
fax: z.string(),
|
|
|
|
|
website: z.url("URL inválida"),
|
2026-04-03 22:52:56 +00:00
|
|
|
|
2026-04-04 16:58:32 +00:00
|
|
|
legalRecord: z.string(),
|
2026-04-03 22:06:54 +00:00
|
|
|
|
|
|
|
|
languageCode: z.string().min(1, "El idioma es obligatorio"),
|
|
|
|
|
currencyCode: z.string().min(1, "La moneda es obligatoria"),
|
|
|
|
|
});
|