import { UniqueID } from "@repo/rdx-ddd"; import type { CreateCustomerParams } from "../../shared"; import type { CustomerCreateForm } from "../entities"; /** * Construye un payload de creación de cliente a partir de los datos * del formulario y los campos sucios. * * Reglas: * - el payload debe ser un objeto con solo las propiedades que han cambiado (campos sucios). * - no debe incluir campos que no han cambiado. * - el shape del payload debe coincidir con el de CustomerCreatePayload, * es decir, orientado a la API. * - no debe tener transformaciones ni campos adicionales, solo los que vienen del * formulario y están sucios. * * @param formData - Los datos del formulario de creación de cliente. * @returns Un objeto que se puede enviar a la API para crear un cliente, * */ export const buildCreateCustomerParams = (formData: CustomerCreateForm): CreateCustomerParams => { // La API de creación de cliente requiere un ID único para el nuevo cliente const id = UniqueID.generateNewID().toString(); return { id, data: { id, reference: formData.reference, is_company: formData.isCompany ? "1" : "0", name: formData.name, trade_name: formData.tradeName, tin: formData.tin, default_taxes: formData.defaultTaxes.join(";"), street: formData.street, street2: formData.street2, city: formData.city, province: formData.province, postal_code: formData.postalCode, country: formData.country, email_primary: formData.primaryEmail, email_secondary: formData.secondaryEmail, phone_primary: formData.primaryPhone, phone_secondary: formData.secondaryPhone, mobile_primary: formData.primaryMobile, mobile_secondary: formData.secondaryMobile, fax: formData.fax, website: formData.website, legal_record: formData.legalRecord, language_code: formData.languageCode, currency_code: formData.currencyCode, }, }; };