Crear Cliente
Exportar contenido
Registra un nuevo cliente con datos fiscales y de contacto para emitir facturas y presupuestos.
- Clic en ”+ Nuevo Cliente” (boton superior derecha) — se abre el formulario.
- Completa la pestana “Informacion Basica” con datos obligatorios (ver tabla abajo).
- (Opcional) Pestana “Profesional” — configura retenciones e impuestos especiales.
- (Opcional) Pestana “Internacional” — para clientes UE o exportacion.
- Clic en “Guardar” — cliente creado.
Campos obligatorios — Informacion Basica
Sección titulada «Campos obligatorios — Informacion Basica»| Campo | Regla | Descripcion | Ejemplo |
|---|---|---|---|
| Nombre/Razon social | Si | Nombre completo o razon social | Acme Software, S.L. |
| CIF/NIF | Si | Identificador fiscal valido (letra control) | A12345678 o 12345678Z |
| Condicional | Email O Telefono (al menos uno) | contacto@acme.com | |
| Telefono | Condicional | Telefono O Email (al menos uno) | +34 912 345 678 |
| Direccion | Si | Domicilio fiscal completo | Calle Mayor 1, 3B |
| Codigo Postal | Si | CP del domicilio | 28001 |
| Ciudad | Si | Ciudad del domicilio | Madrid |
| Provincia | Si | Provincia del domicilio | Madrid |
| Pais | Si | Pais del domicilio (por defecto: Espana) | Espana |
Campos opcionales — Informacion Basica
Sección titulada «Campos opcionales — Informacion Basica»| Campo | Descripcion | Ejemplo |
|---|---|---|
| Persona de contacto | Nombre del responsable | Juan Perez |
| Notas | Observaciones internas | Cliente preferente, pago a 60 dias |
Campos opcionales — Pestana Profesional
Sección titulada «Campos opcionales — Pestana Profesional»| Campo | Descripcion | Valor por defecto |
|---|---|---|
| ¿Es profesional? | Marca si el cliente es empresa o autonomo | No |
| % Retencion por defecto | Porcentaje de IRPF en facturas (si es profesional) | 15% |
| ¿Autonomo nuevo? | Marca si es autonomo con retencion reducida (7%) | No |
| ¿Aplica recargo de equivalencia? | Marca si el cliente esta en regimen de recargo | No |
Campos opcionales — Pestana Internacional
Sección titulada «Campos opcionales — Pestana Internacional»| Campo | Descripcion | Ejemplo |
|---|---|---|
| ¿Es cliente UE? | Marca para clientes Union Europea | Si |
| Numero IVA Intracomunitario | NIF-IVA europeo | ESA12345678 |
| ¿Es exportacion? | Marca para clientes fuera de la UE | No |
Como se que lo hice bien
Sección titulada «Como se que lo hice bien»- El cliente aparece en la lista principal con estado Activo (punto verde).
- Toast de confirmacion: “Cliente creado correctamente”.
- Puedes buscar el cliente por nombre o CIF/NIF.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa | Solucion |
|---|---|---|
| ”El nombre es requerido” | Campo vacio | Introduce nombre o razon social |
| ”CIF/NIF invalido. Verifica el formato y digito de control” | Formato incorrecto o letra de control erronea | Verifica: 8 digitos + letra (NIF) o letra + 7 digitos + control (CIF) |
| “Debes proporcionar al menos un correo electronico o un telefono” | Email Y telefono vacios | Completa al menos uno de los dos campos |
| ”Formato de email invalido” | Email mal escrito | Verifica formato: usuario@dominio.com |
| ”Formato de telefono invalido. Debe tener al menos 9 digitos” | Telefono muy corto | Introduce telefono completo con prefijo |
| ”El codigo postal es requerido” | Campo vacio | Introduce codigo postal |
| ”La ciudad es requerida” | Campo vacio | Introduce ciudad |
| ”La provincia es requerida” | Campo vacio | Introduce provincia |
🔧 Detalles Tecnicos — Crear Cliente
Validaciones:
| Codigo | Regla |
|---|---|
| VAL-01 | name NOT NULL, min 2 chars, max 200 chars |
| VAL-02 | cif_nif NOT NULL, min 1 char, max 20 chars, formato espanol valido (letra control) |
| VAL-03 | email OR phone NOT NULL (al menos uno requerido) |
| VAL-04 | email formato valido si proporcionado (max 255 chars) |
| VAL-05 | phone min 9 digitos si proporcionado (max 20 chars) |
| VAL-06 | address NOT NULL, min 1 char, max 500 chars |
| VAL-07 | postal_code NOT NULL, min 1 char, max 10 chars |
| VAL-08 | city NOT NULL, min 1 char, max 100 chars |
| VAL-09 | province NOT NULL, min 1 char, max 100 chars |
| VAL-10 | country NOT NULL, min 1 char, max 100 chars |
| VAL-11 | default_retention_percentage 0-100 si proporcionado |
Tablas involucradas:
| Tabla | Columnas clave | FK |
|---|---|---|
customers | id, business_id, name, cif_nif, email, phone, address, postal_code, city, province, country, contact_person, notes, is_active, is_professional, default_retention_percentage, is_new_freelancer, applies_equivalence_surcharge, is_eu_business, vat_number, is_export | businesses |
Schema Zod:
- Ubicacion:
/src/schemas/validation.ts(lineas 4-96) customerSchema— Validacion completa con regla refinada para email O telefono
Validacion CIF/NIF:
- Funcion:
validateSpanishTaxId()en/src/utils/validators.ts - NIF: 8 digitos + letra control (algoritmo DNI)
- CIF: Letra inicial (A-W) + 7 digitos + caracter control
Queries de diagnostico:
-- Cliente recien creadoSELECT * FROM customersWHERE business_id = '<business_id>'ORDER BY created_at DESC LIMIT 1;
-- Verificar duplicados por CIF/NIFSELECT id, name, cif_nif, emailFROM customersWHERE business_id = '<business_id>' AND cif_nif = '<cif_nif>';Adapter:
- Archivo:
/src/features/customers/api/customer-adapter.ts - Metodo:
create(data: CustomerCreateData): Promise<Customer> - Transforma datos del formulario a formato de BD
Eventos:
customerCreatedEvent— Publicado tras insercion exitosa- Payload:
{ customerId, customerName, email }
Componentes:
- Formulario:
CustomerFormSheet.tsx - Validaciones:
ValidatedInputconcustomerSchema - Autocompletado direccion: Hook
useGooglePlaces()
Edge Functions:
whatsapp-create-customer— Crear cliente via WhatsApp