Crear Nuevo Negocio
Exportar contenido
Abre el wizard de configuración para crear y configurar un nuevo negocio desde cero.
- Clic en “Crear Nuevo Negocio” (botón outline con icono Plus) — se abre el wizard.
- Sigue los pasos del wizard de configuración (igual que onboarding).
- Completa la información del nuevo negocio.
- Finaliza el wizard — el nuevo negocio se crea y se activa automáticamente.
Nota: El wizard es el mismo que el onboarding inicial. Ver documentación de Onboarding.
Pasos del wizard
Sección titulada «Pasos del wizard»| Paso | Contenido |
|---|---|
| 1. Datos del Negocio | Nombre, razón social, NIF/CIF, tipo de negocio |
| 2. Información Fiscal | Régimen fiscal, IRPF (si aplica) |
| 3. Dirección | Dirección completa con autocompletado |
| 4. Contacto | Email, teléfono, sitio web |
| 5. Plan y Pago | Selección de plan de suscripción |
Límites según plan
Sección titulada «Límites según plan»| Plan | Negocios permitidos |
|---|---|
| Free | 1 |
| Starter | 1 |
| Professional | 3 |
| Enterprise | Ilimitados |
Importante: Si alcanzas el límite de tu plan, necesitas actualizar la suscripción para crear más negocios.
Cómo sé que lo hice bien
Sección titulada «Cómo sé que lo hice bien»- El wizard se cierra automáticamente.
- Toast de confirmación: “Negocio creado. El nuevo negocio se ha configurado correctamente”.
- Cambias automáticamente al nuevo negocio creado.
- El nuevo negocio aparece en el selector de negocios.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa | Solución |
|---|---|---|
| ”Has alcanzado el límite de negocios” | Plan no permite más negocios | Actualiza tu plan de suscripción |
| ”El NIF/CIF ya está registrado” | Tax ID duplicado | Usa otro NIF/CIF |
| ”Error al crear negocio” | Error de servidor | Intenta de nuevo o contacta soporte |
Detalles técnicos — Crear Nuevo Negocio
Sección titulada «Detalles técnicos — Crear Nuevo Negocio»Ver componente del wizard
Componente: NewBusinessFormSheet.tsx
Archivo: src/features/_shared/components/business/NewBusinessFormSheet.tsx
Props:
interface NewBusinessFormSheetProps { open: boolean; onOpenChange: (open: boolean) => void; onSuccess: (businessId: string) => void; existingDraft?: PendingBusiness; initialStep?: 'business-data' | 'fiscal-data' | 'address' | 'contact' | 'plan';}Estados del wizard:
type WizardStep = | 'business-data' // Datos generales | 'fiscal-data' // Información fiscal | 'address' // Dirección | 'contact' // Contacto | 'plan'; // Plan y pagoVer flujo de creación
Función: handleWizardSuccess()
Flujo completo:
1. Guardar datos en tabla businesses2. Crear relación en user_businesses con role='owner'3. Guardar business_type en profiles del usuario4. Procesar pago si plan de pago5. Cambiar contexto a nuevo negocio: switchToBusiness(businessId)6. Refrescar datos de autenticación: refreshBusinessData()7. Invalidar cache de React Query8. Cerrar wizard9. Mostrar toast de confirmaciónInserción en base de datos:
-- 1. Crear negocioINSERT INTO businesses ( name, legal_name, tax_id, email, phone, website, address, city, province, postal_code, country, currency, tax_regime, default_irpf_percentage, is_professional_freelancer) VALUES (...);
-- 2. Crear relación usuario-negocioINSERT INTO user_businesses (user_id, business_id, role)VALUES ('<user_id>', '<business_id>', 'owner');
-- 3. Actualizar tipo de negocio en perfilUPDATE profilesSET business_type = '<tipo>'WHERE user_id = '<user_id>';Ver validación de límites
Hook: usePendingBusinesses()
Función: canCreateNew
Lógica:
// Verifica límite según plan de suscripciónconst canCreateNew = useMemo(() => { const planLimits = { 'free': 1, 'starter': 1, 'professional': 3, 'enterprise': 999, };
const currentCount = availableBusinesses.length; const limit = planLimits[subscriptionPlan] || 1;
return currentCount < limit;}, [availableBusinesses, subscriptionPlan]);Query para contar negocios activos:
SELECT COUNT(*)FROM businesses bJOIN user_businesses ub ON b.id = ub.business_idWHERE ub.user_id = '<user_id>' AND b.deleted_at IS NULL;