# Contrato de Base de Datos CRM - Etapa 1

## Principio principal

El CRM usa una base de datos independiente:

```text
ventasin_crm_prod
```

La base del portal:

```text
ventasin_portalvi_prod
```

se mantiene como fuente de usuarios, roles, permisos, menú y datos históricos del portal. La información operativa nueva del CRM se guarda en `ventasin_crm_prod`.

## Integración con el portal

El CRM se muestra dentro del menú:

```text
Comercial > CRM
```

No se crea un módulo principal separado llamado CRM.

## Fuentes de verdad

| Información | Fuente de verdad nueva |
|---|---|
| Clientes CRM | `crm_clientes` |
| Contactos | `crm_contactos` |
| Oportunidades | `crm_oportunidades` |
| Etapas pipeline | `crm_pipeline_etapas` |
| Actividades / agenda | `crm_actividades` |
| Historial actividades | `crm_actividad_historial` |
| Cotizaciones | `crm_cotizaciones` / `crm_cotizacion_detalle` |
| Visitas | `crm_visitas` |
| Rutas | `crm_rutas` |
| Puntos de ubicación | `crm_ubicaciones` |
| Campañas | `crm_campanias` / `crm_campania_clientes` |
| Importaciones | `crm_importaciones` / `crm_importacion_errores` |
| API ERP | `crm_api_*` |

## Tablas antiguas

Las tablas antiguas se conservan como respaldo histórico y no deben eliminarse en esta etapa:

- `cc_agenda`
- `cc_agenda_historial`
- `cc_clientes_inactivos`
- `cc_gestiones`
- `cc_productos_historico`
- `registrovisitas`
- `rutas_asesor`
- `seguimientos`
- `seguimiento_observaciones`

Después de ejecutar la migración, los nuevos módulos CRM deben consultar principalmente `ventasin_crm_prod`.

## Relación con usuarios y roles

No se duplican usuarios ni roles en CRM. Los campos `responsable_usuario_id`, `creado_por`, `asignado_por`, etc. referencian IDs de usuarios existentes en `ventasin_portalvi_prod.usuario`.

## Relación con ERP

El ERP sigue siendo la fuente oficial futura para terceros, pedidos, facturas, devoluciones, cartera e histórico comercial. En esta etapa se dejan tablas base para importaciones y API, pero la integración completa queda para Etapa 2.

## Reglas para continuar

1. No crear otra tabla de clientes si ya existe `crm_clientes`.
2. No crear otra tabla de actividades si ya existe `crm_actividades`.
3. No crear otro sistema de rutas si ya existe `crm_rutas`.
4. No crear otro sistema de ubicaciones si ya existe `crm_ubicaciones`.
5. Si se requiere ampliar funcionalidad, usar `ALTER TABLE` incremental o nuevas tablas complementarias bien justificadas.
6. Las migraciones de Etapa 2 y Etapa 3 deben ser incrementales, no reemplazar el SQL de Etapa 1.
