# Instalación del cierre final del CRM

## 1. Respaldos obligatorios

Antes de copiar archivos o ejecutar SQL:

1. Respaldar el portal completo.
2. Exportar la base `ventasin_crm_prod` con estructura y datos.
3. Confirmar que el usuario configurado en `DB_CRM_USER` tiene privilegios sobre `ventasin_crm_prod`.

## 2. Copiar archivos

Descomprimir el ZIP y copiar su contenido sobre la raíz del portal, conservando exactamente la estructura de carpetas. El ZIP contiene únicamente archivos nuevos o modificados.

No eliminar carpetas ni reemplazar el portal completo.

## 3. Ejecutar la migración

Seleccionar `ventasin_crm_prod` en phpMyAdmin y ejecutar:

`database/migrations/2026_crm_cierre_requerimientos_comercial.sql`

La migración es incremental: crea elementos faltantes, agrega columnas e índices y actualiza catálogos sin eliminar datos existentes.

## 4. Permisos de almacenamiento

El proceso web debe poder escribir en:

- `storage/crm/cotizaciones/pdf`
- `storage/crm/cotizaciones/ordenes_venta`
- `storage/crm/visitas/fachadas`
- `storage/crm/importaciones`
- `storage/crm/logs`

Las carpetas se crean cuando se usan; el directorio `storage` debe permitir escritura al usuario del servidor web.

## 5. Automatizaciones

Programar el script desde cron cada 10 minutos, ajustando la ruta real del proyecto:

```cron
*/10 * * * * /usr/bin/php /ruta/al/portal/scripts/cron_crm_mantenimiento.php >/dev/null 2>&1
```

El script procesa recordatorios de agenda y cotizaciones, vencimientos y actualización de estados de clientes. Usa bloqueo para evitar ejecuciones simultáneas y escribe en `storage/crm/logs`.

## 6. Activación

1. Cerrar sesión y volver a entrar.
2. Recargar el navegador con `Ctrl + F5`.
3. Probar los módulos de Comercial > CRM.
4. Configurar equipos, líderes, parámetros y catálogos antes de operación masiva.

## 7. Retiro operativo de módulos legacy

Después de aceptar las pruebas, retirar desde el administrador de permisos las opciones antiguas de Cronograma comercial, Registro de visitas, Ruta de ejecutivos y Clientes inactivos. No se eliminan sus tablas ni archivos porque conservan histórico; la operación diaria debe realizarse exclusivamente en CRM.

## Reversión

No ejecutar eliminaciones manuales. Restaurar los respaldos de archivos y base de datos tomados antes de la instalación. El archivo de rollback incluido es intencionalmente no destructivo.
