# Log de Migraciones Ejecutadas

Este archivo documenta las migraciones de base de datos ejecutadas.
**NO subir scripts migrate_*.php al repositorio después de ejecutarlos.**

---

## Migraciones Ejecutadas

### 2026-02-03: Quick Tasks / Simple Tasks
- **Archivo original**: `migrate_tasks_simple.php` (eliminado)
- **Cambios aplicados**:
  - Columna `task_type` ENUM('simple','full') en `tasks`
  - Columna `category` ENUM('personal','internal') en `tasks`
  - Columna `is_insistent` TINYINT(1) en `tasks`
  - Columna `scheduled_time` TIME en `tasks`
  - Índices: `idx_tasks_type`, `idx_tasks_insistent`
- **Estado**: ✅ Ejecutado

### 2026-02-03: Daily Checklist System
- **Archivo original**: `migrate_daily_checklist.php` (eliminado)
- **Cambios aplicados**:
  - Tabla `routines` creada (rutinas recurrentes)
  - Tabla `daily_items` creada (ejecución diaria)
  - Columnas adicionales en `tasks` (si no existían)
- **Estado**: ✅ Ejecutado

### 2026-02-03: User-Employee-Task Architecture
- **Archivo original**: `migrate_user_employee.php` (eliminado)
- **Cambios aplicados**:
  - Columna `employee_id` en `users` (FK a employees)
  - Índice único `users_employee_uq`
  - Columna `assigned_employee_id` en `tasks`
  - Índice `idx_tasks_assigned_emp`
  - Estado `SUPERVISADO` agregado al ENUM de `tasks.status`
- **Estado**: ✅ Ejecutado

### 2026-02-03: Verificación y Completado de Schema (Pruebas Funcionales)
- **Archivo original**: `run_migrations.php` (eliminado tras ejecución)
- **Cambios aplicados**:
  - Confirmó/completó columnas en `tasks`: `task_type`, `category`, `is_insistent`, `scheduled_time`
  - Confirmó/creó tabla `routines` (templates de rutinas)
  - Confirmó/creó tabla `daily_items` (ejecución diaria del checklist)
- **Contexto**: Ejecutado durante pruebas funcionales post-auditoría
- **Estado**: ✅ Ejecutado

### 2026-02-03: Eliminación de Tipo de Cambio
- **Archivo original**: `drop_exchange.php` (eliminado tras ejecución)
- **Cambios aplicados**:
  - `DROP TABLE exchange_rates`
  - Eliminados: `exchange_rate_fetch.php`, `exchange_rate_save.php`, `exchange_rate.php`, `exchange_rate_sunat.php`
  - Definición removida de `app/db/schema.php`
- **Motivo**: Funcionalidad no utilizada en el sistema
- **Estado**: ✅ Ejecutado

### 2026-02-03: Adelantos (Anticipos) - Auditoría Clientes
- **Archivo original**: `migrate_advances.php` (eliminado tras ejecución)
- **Cambios aplicados**:
  - Tabla `advances` creada (anticipos de clientes)
  - Tabla `advance_allocations` creada (aplicación de adelantos a documentos/receivables)
  - FK RESTRICT en client_id (protege integridad)
- **Motivo**: Completar modelo de relaciones Cliente como HUB
- **Estado**: ✅ Ejecutado

### 2026-02-04: Pagos y Allocaciones (Opción 1 - Modelo Financiero)
- **Archivo original**: `migrate_payments.php` (eliminado tras ejecución)
- **Cambios aplicados**:
  - Tabla `payments` creada (pagos de clientes)
    - client_id, payment_date, amount, currency, method, bank_account_id, reference, proof_url, notes
    - status ENUM('applied','partial','available'), applied_amount
  - Tabla `payment_allocations` creada (aplicación de pagos a receivables)
    - payment_id, receivable_id, amount, allocation_date, notes
  - FK `quote_items_package_fk` agregado (quote_items.package_id → service_packages.id)
- **Motivo**: Implementar Opción 1 del modelo financiero (receivables = documentos + CxC)
- **Estado**: ✅ Ejecutado

### 2026-02-05: Sistema de Vacaciones de Empleados
- **Archivo original**: `_migrate_vacations.php` (eliminado tras ejecución)
- **Cambios aplicados**:
  - Tabla `employee_vacation_periods` creada (periodos de vacaciones por empleado)
    - employee_id, start_date, end_date, year, generated_days, status ENUM('active','closed'), notes
  - Tabla `employee_vacation_movements` creada (movimientos de vacaciones)
    - employee_id, period_id, type ENUM('earned','used','discount'), start_date, end_date, days, notes, created_by
  - Inicializados periodos para 10 empleados activos existentes
  - Creados movimientos iniciales 'earned' con 15 días por empleado
- **Motivo**: Gestión de vacaciones del personal basada en periodos y movimientos calculables
- **Estado**: ✅ Ejecutado

---

## Procedimiento para Nuevas Migraciones

1. Crear script `migrate_[nombre].php` en raíz del proyecto
2. Ejecutar manualmente: `php migrate_[nombre].php`
3. Verificar cambios en la base de datos
4. Documentar en este archivo
5. **ELIMINAR el script de migración** (no debe quedar en el repo)

---

## Notas

- Las migraciones son idempotentes (verifican si columnas/tablas existen antes de crearlas)
- Schema completo definido en `app/db/schema.php`
- Sync automático disponible en `app/db/db_sync.php`
