# PROJECT LOG (Bitácora de Proyecto)

Este archivo sirve como memoria persistente y punto de sincronización para todos los agentes de IA (Antigravity, Cursor, etc.) y desarrolladores humanos que trabajen en el proyecto.

## 📝 Protocolo de Uso
1.  **Lectura:** Al iniciar una sesión, consultar las últimas entradas para entender el estado actual del sistema.
2.  **Escritura:** Al completar una tarea significativa, agregar una nueva entrada al final siguiendo el formato establecido.

## 📅 Historial de Cambios

### [2026-01-11] - @Antigravity (Frontend/Integración)
**Estado:** ✅ Completado
**Cambios Realizados:**
1.  **Mejora UI Notificaciones:** Se rediseñaron los "toasts" de notificación en `layouts/app.blade.php`. Ahora son más grandes, legibles y usan el estilo "Glass Premium".
2.  **Iconos de Productos:** Se actualizaron los iconos en `inventario/modals/product-form.blade.php`.
    - Se reemplazó la lista hardcoded anterior por un objeto Alpine.js `iconCategories` más robusto.
    - Se agregaron emojis específicos para Frutas (Arándanos, Manzana Verde, etc.), Despensa (Ghee, Cacao) y Frescos.
    - Se corrigió la lógica de selección de iconos en el modal.

**Próximos Pasos Sugeridos:**
- Verificar que los nuevos iconos se guarden correctamente en la base de datos (campo `icono` en tabla `productos`).
- Revisar si otros modales (ej: categorías) requieren una actualización visual similar.

---

### [2026-01-11] - @Antigravity (UX/Bugfix)
**Estado:** ✅ Completado
**Cambios Realizados:**
1.  **Optimización de Búsqueda (UX):** Se aumentó el tiempo de espera (debounce) a **1000ms** en los buscadores de:
    - Inventario (inventario/index.blade.php)
    - Historial (inventario/historial.blade.php)
    - Usuarios (usuarios/index.blade.php)
    *Objetivo:* Evitar recargas constantes y pérdida de foco mientras el usuario escribe.
2.  **Corrección Auditoría Rápida:**
    - Se solucionó el error 500 al guardar auditorías (InventarioController.php).
    - Se implementaron notificaciones nativas ('notify') en el modal de auditoría.

---

### [2026-01-11] - @Antigravity (Requerimientos Futuros)
**Estado:** 📝 Documentadovn**Actividad:** Análisis de flujo de inventario para módulo de pedidos.
**Hallazgos:**
1. Se identificó la necesidad de separar el stock en 3 estados: Inicial, Vendido/Comprometido, y Despachado.
2. Se creó documento documentations/ANALISIS_INVENTARIO_DIARIO.md con la lógica extraída de la imagen de control manual.
3. Requerimiento crítico detectado: Alertas/Bloqueos al momento de la venta si Cantidad > (Inicial - Vendido).

---

### [2026-01-11] - @Antigravity (Finalización Inventario)
**Estado:** ✅ Módulo Inventario 100% Estable
**Hitos Completados:**
1.  **Funcionalidad Masiva:** Exportación nativa a **Excel (.xlsx)** y CSV implementada mediante librería Maatwebsite\Excel.
2.  **UX Impecable:**
    - Ajuste de *debounce* (1000ms) en todos los buscadores del sistema.
    - Rediseño del modal 'Ajuste Rápido' con estética Premium (Morado).
    - Corrección de eventos en modales de exportación.
3.  **Estabilidad:**
    - Se verifica funcionamiento total de filtros, tablas, modales y lógica de negocio.
    - Se confirma alineación con estándares de diseño .cursorrules.

**Acción de Respaldo:** Se procede a crear rama de seguridad para congelar esta versión estable.
---

### [2026-01-11] - @Antigravity (Finalización Inventario)
**Estado:** ✅ Módulo Inventario 100% Estable
**Hitos Completados:**
1.  **Funcionalidad Masiva:** Exportación nativa a **Excel (.xlsx)** y CSV implementada.
2.  **UX Impecable:**
    - Ajuste de *debounce* (1000ms) en todos los buscadores del sistema.
    - Rediseño del modal 'Ajuste Rápido' con estética Premium (Morado).
    - Corrección de eventos en modales de exportación.
3.  **Estabilidad:**
    - Verificación total de filtros, tablas, modales y lógica de negocio.
    - Conformidad con estándares .cursorrules.

**Acción de Respaldo:** Se ha procedido a crear rama de seguridad para congelar esta versión estable.
---

### [2026-01-11] - @Agent_Git (Merge & Rules Update)
**Estado:** ✅ Merge eat/inventario-finalizado -> main
**Acciones:**
1.  **Fusión de Código:** Se integraron los cambios de Inventario (Excel, UX, Modales) a la rama principal.
2.  **Actualización de Reglas:** Se modificó .cursorrules (Sección: Logística) para incluir la **Validación Estricta de Stock** (Bloqueo si Pedido > Disponible), asegurando que futuros desarrollos en el módulo de Pedidos respeten esta restricción.
---

### [2026-01-11] - @Antigravity (Gestión de Usuarios - Restauración y Refinamiento)
**Estado:** ✅ Módulo Usuarios 100% Funcional y Estilizado
**Cambios Críticos:**
1.  **Restauración de Vistas:** Recuperación de `index.blade.php` y reparación de errores 404 en acciones masivas.
2.  **Corrección Lógica:** Implementación de lógica idempotente para "Disponibilidad Masiva" en `UserController`.
3.  **Persistencia de Datos:** Solución al error de guardado de "Dirección" agregando el campo a `$fillable` en `User.php`.

**Mejoras UI/UX (Feedback Round 2):**
1.  **Filtros por Pestañas:** Implementación de tabs (Todos | Activos | Inactivos) para mejorar la usabilidad.
2.  **Estándares Visuales:** 
    - Icono de WhatsApp ajustado a verde/pequeño (`w-5 h-5`).
    - Botones del modal de usuario estandarizados con estilos Premium.
    - Modal de confirmación masiva ajustado (`max-w-xs`) para evitar desproporción.
3.  **Feedback Visual:** Alineación correcta de botones de acción masiva y mensaje de "No se encontraron usuarios" centrado.

**Respaldo:** Código congelado en rama `feat/usuarios-final-fixes`.
---

### [2026-01-11] - @Antigravity (Módulo Clientes)
**Estado:** 🚧 En Progreso (90%) - Rama: eat/modulo-clientes-views (Subida)
**Implementación Vista Clientes:**
1.  **Arquitectura Modular:** Se implementaron Vistas y Controladores siguiendo el patrón de Partial Views (ilters, 	able) y Modales (client-form).
2.  **UX Premium:**
    - Filtros con **Debounce (1000ms)** y selectores reactivos.
    - Modal de Cliente con diseño **Indigo** y Pestañas (Datos/Configuración).
    - Badges visuales para clientes VIP/Recurrentes.
3.  **Backend Robusto:**
    - Integración con tabla 	arifas_domicilio para selector de Zonas.
    - Implementación de Store/UpdateClienteRequest para validaciones estrictas.
    - Transacciones DB atómicas para creación Cliente+Dirección.
4.  **Correcciones:**
    - Solución a InvalidArgumentException en index.blade.php migrando de <x-app-layout> a @extends('layouts.app').

### [2026-01-12 08:05:00] - @Antigravity (Refinamiento Gestión Usuarios)
**Estado:** ✅ Completado (100%)
**Cambios Realizados & Lógica Aplicada:**
1.  **Integridad de Datos Automática:** Se implementó una corrección automática en el backend (index method) que asegura que usuarios sin vehículo y sin rol de 'Domiciliario' nunca permanezcan con disponible=1, evitando 'usuarios fantasma' en los filtros.
2.  **Lógica de Filtros Refinada:** Se corrigió el comportamiento del dropdown 'Para Domicilios' para prevenir selecciones fantasma y garantizar filtrado exacto.
3.  **Protección de Auto-Gestión:**
    - El usuario autenticado abora ES visible en la lista.
    - Se ocultaron las acciones destructivas (Desactivar, Eliminar) exclusivamente para el usuario en sesión.
4.  **Coherencia Visual (UI):**
    - Icono de disponibilidad actualizado a **Azul Real** (mismo tono que ajustes de inventario).
    - El icono es visible para cualquier usuario marcado como disponible, facilitando la detección de datos erróneos.
5.  **Seguridad Operativa:** Al desactivar un usuario, su disponibilidad se apaga automáticamente.

**Conclusión:** Módulo de Usuarios validado, funcional y asegurado contra errores de operación básicos.

### [2026-01-12 08:06:00] - @Antigravity (Actualización Global de Hitos)
**Estado:** Reporte de Progreso Integral
**Resumen de Avances Globales (Incluyendo Tareas Colaterales):**
1. **Importación Dinámica de Clientes:** Implementado preview en tiempo real para el módulo de clientes, con detección automática de columnas y feedback visual instantáneo.
2. **Estandarización UI Modelos:** Se unificó el diseño de todos los modales (Inventario, Usuarios, Clientes) bajo el sistema 'Glass Premium' de Tailwind 4.0.
3. **Módulo Inventario Finalizado:**
   - Auditoría Rápida: Funcionalidad completa con registro de diferencias.
   - Ajuste Rápido: Modal optimizado para operación ágil.
   - Exportación: Soporte nativo Excel/CSV validado.
   - Filtros & Búsqueda: UX mejorada con 'debounce' para evitar sobrecarga.
4. **Módulo Usuarios Finalizado:**
   - Filtros Avanzados: Lógica de disponibilidad y roles corregida.
   - Seguridad: Protección contra auto-eliminación y limpieza automática de estados inconsistentes.

**Siguientes Pasos Prioritarios:**
- Revisión final de integración con tabla de tarifas de domicilio.
- Pruebas de carga masiva en módulo de clientes.
### [2026-01-12] - @Antigravity (Clientes & Priorización - Planificación y Refinamiento UI)
**Estado:** ✅ Planificación Completada & Refinamiento UI Implementado
**Acciones:**
1.  **Planificación de Reglas de Negocio:**
    - Se creó **Plan de Implementación** (`documentations/PLAN_IMPLEMENTACION_CLIENTES_PRIORIDAD.md`) detallando cambios en BD y Algoritmo para Clasificación de Clientes y Priorización de Pedidos.
    - Se actualizó `REQUERIMIENTOS_PLATAFORMA.md` con la nueva lógica (Clientes: General/Corporativo/Preferencial; Algoritmo de Prioridad).
    - Se actualizó `.cursorrules` con las reglas de negocio críticas correspondientes.

2.  **Refinamiento UI/UX (Módulo Clientes):**
    - **Modal Importación (`import-clients.blade.php`):** Reestructurado con Flexbox para corregir problemas de altura y scroll. Añadida columna VIP y preview mejorado.
    - **Modal Formulario (`client-form.blade.php`):** Actualizado con lógica de pestañas (Datos/Configuración), inputs estilizados, y soporte para campos VIP/Recurrente.
    - **Filtros (`filters.blade.php`):** Nuevo diseño estilo 'Glass Premium' con selector de tipo de cliente (VIP/Normal) y búsqueda integrada.
    - **Tabla (`table.blade.php`):** Diseño actualizado con badges de clasificación y acciones unificadas.

3.  **Layout Guest (`guest.blade.php`):** Creado nuevo layout para vistas públicas/autenticación con soporte de tema oscuro y notificaciones Alpine.js.

**Próximos Pasos (Según Plan):**
- Ejecutar migraciones de BD para `tipo_cliente` y `cliente_producto_precios`.
- Implementar lógica backend de Priorización de Pedidos.

---

### [2026-01-13 11:15:00] - @Antigravity (Ajustes UI Importar/Exportar)
**Estado:** ✅ Completado
**Acciones:**
1.  **Estandarización de Botones "Datos":**
    - Se reemplazaron los botones simples de "Importar" por un botón desplegable de "Datos" en los módulos de **Usuarios** y **Clientes**, replicando el patrón exitoso del módulo de **Inventario**.
    - El nuevo botón ofrece opciones unificadas para "Importar" y "Exportar".
2.  **Nuevos Modales de Exportación:**
    - **Usuarios (`usuarios/modals/export.blade.php`):** Creado modal con tema Azul y filtro por Rol de Usuario.
    - **Clientes (`clientes/modals/export.blade.php`):** Creado modal con tema Índigo y placeholders para tipos de cliente (General, Preferencial, Corporativo), alineado con futuros ajustes de base de datos.
3.  **Consistencia Estética:** Todos los elementos siguen los estándares "Glass Premium" y utilizan las paletas de colores específicas de cada módulo.

**Estado Actual:** La interfaz de gestión de datos y su lógica de exportación están completas para Inventario, Usuarios y Clientes.

---

### [2026-01-13 11:35:00] - @Antigravity (Lógica de Exportación Usuarios/Clientes)
**Estado:** ✅ Completado
**Acciones:**
1.  **Exportación de Usuarios:**
    - Se implementó `UsuariosExport.php` con soporte para filtros múltiples de roles y estado (Activo/Inactivo/Todos).
    - El modal de exportación ahora permite selección múltiple y tiene "Activos" por defecto.
2.  **Exportación de Clientes:**
    - Se implementó `ClientesExport.php` integrando información de direcciones y zonas.
    - Soporte para filtros por tipo de cliente (General, Preferencial, Corporativo).
3.  **Integración de Rutas y Controladores:**
    - Se añadieron los métodos `export()` en `UserController` y `ClienteController`.
    - Se habilitaron las rutas `/usuarios/export` y `/clientes/export`.

**Estado Actual:** Módulos de Usuarios e Inventario al 100%. Módulo de Clientes al 95% (pendiente lógica avanzada de tipos vinculada a BD).

### [2026-01-12 21:18:00] - @Antigravity (Fix UI & JS Usuarios)
**Estado:** ✅ Completado
**Cambios Críticos:**
1.  **Estabilidad Frontend:** Se solucionaron múltiples errores de Alpine.js en el módulo de usuarios corrigiendo un error de sintaxis en la definición del objeto `userManagement`. Esto restauró la funcionalidad completa de los modales y acciones masivas.
2.  **Estandarización UI Importación:**
    - Se aplicó la misma arquitectura de altura fija (`h-96` container, `h-64` textarea) utilizada en el módulo de Clientes al modal de Importación de Usuarios.
    - Esto asegura una experiencia visual consistente y previene problemas de desbordamiento en pantallas pequeñas.
    - Se actualizó el diseño del modal con un tema 'Emerald' acorde a su contexto funcional.

**Estado Actual:** Módulo de usuarios completamente funcional y alineado con los estándares de diseño del proyecto.

---

### [2026-01-13 11:05:00] - @Antigravity (Multimedia & Contenido Enriquecido)
**Estado:** ✅ Completado
**Hitos Técnicos:**
1.  **Multimedia:** Implementación de carga de fotografías de productos (Max 2MB) con almacenamiento organizado en `storage/app/public/products`.
2.  **Rich Text:** Integración de **Quill.js** para la gestión de descripciones con formato (negrillas, cursivas, listas), preparado para futura web pública.
3.  **UI/UX:**
    *   Nuevo modal "Detalles y Medios" con previsualización en tiempo real.
    *   Indicadores visuales (badges `FOTO` y `TEXTO`) en la tabla de inventario para rápida identificación de productos con contenido.
    *   Botón de acceso directo (📸) integrado en la columna de acciones.

**Conclusión:** El inventario ahora cuenta con capacidades CMS para alimentar catálogos web y mejorar la información de productos. Sincronizado con GitHub.

---

### [2026-01-13 06:15:00] - @Antigravity (Estabilidad & Seguridad Módulo Inventario)
**Estado:** ✅ Completado (100% Finalizado)
**Hitos Técnicos:**
1.  **Gestión de Datos:** Sincronización completa entre Exportador (Excel) e Importador Masivo. Mismo orden de columnas y mismos nombres.
2.  **Negocio:** Eliminación total de decimales en precios (Venta/Costo) en toda la plataforma (BD, UI, Excel).
3.  **Seguridad & Arquitectura:** 
    - Migración de base de datos movida a `documentations/migrations/` para control histórico fuera del core de Laravel.
    - Implementación de **Respaldo Automático** (`mysqldump`) cada vez que se ejecutan migraciones.
    - Eliminación de la ruta temporal de depuración `/run-migrations`.
4.  **UX Final:**
    - Cierre automático de modales tras descarga de archivos.
    - Nuevos campos (`Unidad`, `Corporativo`, `Alta Demanda`) plenamente integrados en UI y lógica de asignación.

**Conclusión:** El módulo de Inventario se entrega en estado estable y seguro. Próximo foco: Módulo de Pedidos e integración con las nuevas reglas de prioridad.

---

### [2026-03-16 12:00:00] - @Antigravity (Refactorización Zonas y Tarifas - Etapa 1)
**Estado:** ✅ Completado (Etapa 1: Tarifas y Estructura Base)
**Hitos Técnicos:**
1.  **Arquitectura de Datos:** 
    - Desacoplamiento de la tabla `tarifas_domicilio` en dos entidades: `tarifas` (valores económicos) y `zonas` (nombres geográficos).
    - Migración de MyISAM a InnoDB para asegurar integridad (FKs) y transaccionalidad.
2.  **Backend:**
    - Creación de modelos `Tarifa` (con softDeletes) y `Zona`.
    - Implementación de `TarifaController` y `ZonaController` con lógica en español y manejo de errores `try/catch`.
    - Validación robusta mediante `TarifaRequest`.
3.  **Frontend (Estilo Premium Harvest):**
    - Nueva interfaz de gestión con filtros dinámicos (Alpine.js).
    - Modales específicos por contexto: Naranja para Tarifas (Logística) e Índigo para Zonas (Ubicación).
    - Uso estricto de `.glass-card-premium` y `.modal-card` según `.cursorrules`.
4.  **Integración:**
    - Actualización de navegación lateral (Sidebar) dividiendo el módulo unificado en dos accesos independientes.
    - Poblado inicial de datos mediante `TarifaSeeder`.
---

### [2026-04-24] - @Antigravity (Estabilización del Tablero Logístico y Reglas de Negocio)
**Estado:** ✅ Completado
**Cambios Realizados:**
1.  **Unificación de Lógica de Stock (JIT - Just In Time):** 
    - Se implementó una regla híbrida: `Confirmado`, `Empaque`, `Ruta` y `Entregado` siempre reservan stock.
    - `Pendiente` y `Atención Requerida` **solo** reservan stock si la fecha de entrega es HOY.
    - Esto optimiza la disponibilidad de inventario para ventas inmediatas sin comprometer la preparación diaria.
2.  **Refinamiento del Dashboard "Hoy":**
    - Se excluyeron pedidos en `Borrador` y `Atención Requerida` de la vista operativa para evitar errores de despacho.
    - Sincronización total entre contadores KPI y registros de tabla.
3.  **Mejoras en UI y Flujo de Trabajo:**
    - **Acciones Masivas Inteligentes:** El botón "Atención" ahora funciona como interruptor (toggle) permitiendo resolver incidencias masivamente (Atención <-> Pendiente).
    - **Confirmación Manual:** Nuevo modal dedicado para confirmación de pedidos directamente desde la tabla de acciones.
4.  **Integridad y Seguridad:**
    - Resolución de `ReferenceError: url is not defined` en operaciones masivas.
    - Bloqueo de edición para pedidos ya despachados (`En Ruta`, `Entregado`) tanto en Backend como en Frontend.
    - Estabilización del ciclo de vida de Alpine.js para eliminar errores de inicialización.

**Conclusión:** La rama `feature/bulk-orders-rules` es ahora financieramente estable y logísticamente coherente, lista para su despliegue a producción.

---

### [2026-04-08] - @Antigravity (Estandarización UI/UX - Módulos Logística)
**Estado:** ✅ Completado
**Cambios Realizados:**
1.  **Unificación de Modales de Eliminación:** Se estandarizaron los botones y modales de eliminación en los módulos de **Tarifas** y **Zonas**, eliminando la dependencia de SweetAlert2 (que causaba fallos) y adoptando el patrón nativo del módulo de **Inventarios**.
2.  **Refinamiento Estético:** Se ajustaron las dimensiones y estilos para garantizar una visual 100% consistente:
    - **Dimensiones:** `w-96` con padding `p-8` y redondeado `rounded-3xl`.
    - **Botones:** Botón de cancelar en tono `red-50` y botón de acción con sombra proyectada `shadow-red-500/30`.

**📌 Estándar Técnico de Implementación (Referencia para Futuros Desarrollos):**
Para evitar "alucinaciones" o fallos de dependencia en futuros módulos, se establece el siguiente patrón para acciones destructivas:
- **Estructura:** No usar librerías externas (Swal). Utilizar el componente local `@include('modulo.modals.delete')`.
- **Estado (Alpine.js):** Incluir siempre el objeto `deleteModal: { open: false, action: '', nombre: '' }` en el `Manager` del módulo.
- **Seguridad:** La eliminación debe realizarse mediante un formulario HTML estándar con `@csrf` y `@method('DELETE')`, asegurando compatibilidad total con los controladores de Laravel y evitando problemas de cabeceras AJAX.

**Hitos:**
- [x] Módulo Tarifas: Botón eliminar funcional y estético.
- [x] Módulo Zonas: Botón eliminar funcional y estético.

### [2026-04-24] - @Antigravity (Estabilización y UX - Dashboard Kanban)
**Estado:** ✅ Completado (Etapa 1: Estabilización)
**Cambios Realizados:**
1.  **Estabilización de Alpine.js**: Se corrigieron errores de inicialización y scope en el `orderManager`, asegurando que todos los componentes (modales, tablas dinámicas) funcionen sin errores de consola.
2.  **Optimización Visual y UX**:
    - **Modo Dashboard**: Se implementó una vista limpia por defecto que muestra solo los KPIs. El flujo Kanban ahora es opcional mediante un toggle ("Ver Flujo Kanban").
    - **Compactación**: Reducción de relleno y tamaños de fuente en las tarjetas de pedidos para aumentar la densidad de información.
    - **Scroll Interno**: Las columnas del Kanban ahora tienen altura máxima y scroll interno, evitando el crecimiento excesivo de la página.
3.  **Sincronización de KPIs en Tiempo Real**:
    - Unificación de lógica en `PedidoController::calculateKpis` para garantizar consistencia entre la carga inicial y las actualizaciones vía API.
    - Los encabezados de las columnas del Kanban ahora son reactivos y se actualizan instantáneamente junto con los KPIs principales.
    - Corrección del KPI "Atrasados" para que sea dinámico y responda correctamente a los cambios de fecha.
4.  **Corrección de Rutas**: Reordenamiento de rutas en `web.php` para resolver conflictos de "Method Not Allowed" (405) en acciones masivas.

### [2026-04-24] - @Antigravity (Modularización Final - Dashboard Kanban)
**Estado:** ✅ Completado (Etapa 2: Refactorización Estructural)
**Cambios Realizados:**
1.  **Atomización de Vistas**: Se completó la extracción de bloques lógicos masivos de `kanban.blade.php`, reduciendo el archivo principal de ~1400 líneas a solo ~60 líneas.
2.  **Arquitectura de Componentes**:
    - **Partials**: Extracción de `scripts.blade.php` (lógica Alpine), `kpi-cards.blade.php` (indicadores reactivos), `kanban-board.blade.php` (flujo drag & drop) y `table-view.blade.php` (detalles y filtros).
    - **Modals**: Modularización de modales específicos (`confirm-manual`, `bulk-reschedule`, `bulk-payment`) en archivos independientes para facilitar su mantenimiento.
3.  **Cumplimiento de Estándares**: El archivo `kanban.blade.php` ahora cumple estrictamente con la regla de las 300 líneas definida en `.cursorrules`, mejorando la legibilidad y el tiempo de carga del IDE.
4.  **Preservación de Reactividad**: Se validó que las directivas Alpine.js (`x-data`, `x-text`, `x-model`) mantienen su enlace de datos a través de las inclusiones de Blade, garantizando que el Dashboard siga siendo 100% interactivo.

**Próximos Pasos**:
- Monitorear rendimiento con carga masiva de datos (1000+ pedidos).
- Continuar con la optimización del módulo de Rutas siguiendo este mismo patrón de diseño modular.

### [2026-04-08] - @Antigravity (Documentación y Coordinación)
**Estado:** ✅ Módulos Base Validados
**Cambios Realizados:**
1. **Actualización de Documentación:** Se formaliza en `REQUERIMIENTOS_PLATAFORMA.md` el buen funcionamiento del 100% de las herramientas de: **Inventarios, Usuarios, Tarifas y Zonas**. Los módulos de Clientes, Pedidos y Rutas pasan a estado oficial de "En Construcción" según validación.
2. **Definiciones Visuales (`.cursorrules`):** Se establece la norma UI de que todas las páginas principales deben mantener el gradiente `from-brand-orange to-brand-wine` para uniformidad global en sus textos, previniendo incoherencias con colores de sección.
3. **Conectividad:** Se restableció y comprobó con éxito la conexión MCP vinculando nuestro perfil al repositorio remoto de Github `webmastersacg/jointrust_2026`.

**Próximos Pasos Recomendados:**
- Iniciar con el despliegue lógico y UI del módulo de **Clientes (CRM)**, ajustando el historial de pedidos y destinatarios.
- Construir la sección de **Pedidos** (Vista Kanban, validación de inventario en tiempo real y Lógica FIFO).
- Finalizar estructura de Logística y Rutas para conectar a las zonas previamente dibujadas.

### [2026-04-22] - @Antigravity (Fixes Módulo Pedidos)
**Estado:** ✅ Completado
**Problemas Resueltos:**
1.  **Congelamiento del Formulario:** Se detectó que las llamadas `fetch` fallaban al usar rutas absolutas (`/pedidos/...`) cuando la app se ejecutaba en un subdirectorio. Se corrigió usando `baseUrl` dinámico en Alpine.js.
2.  **Exclusividad de Estados:** Se implementó lógica de exclusión mutua entre "Borrador" e "isAttention" (Marcar Revisión) mediante watchers de Alpine.js para evitar inconsistencias en el flujo.
3.  **Transiciones de Estado:** Se corrigió el bug donde un pedido no salía de 'borrador' al ser actualizado. Ahora el estado se recalcula automáticamente basado en la fecha (Hoy -> Pendiente, Futuro -> Agendado) al desmarcar los estados especiales.
4.  **Limpieza UI:** Se eliminaron selectores redundantes al final del modal y se ajustó el z-index de los resultados de búsqueda para evitar solapamientos visuales.

**Cambios Técnicos:**
- **kanban.blade.php**: Adición de `baseUrl`, `isDraft` y watchers de exclusión. Refactorización de `submitOrder` para cálculo dinámico de status.
- **create-order.blade.php**: Limpieza de HTML redundante y mejora de z-index en dropdowns.

---

### [2026-04-22] - @Antigravity (Estabilización Avanzada Pedidos)
**Estado:** ✅ Completado
**Problemas Resueltos:**
1.  **Error de Carga (map of undefined):** Corregido fallo al editar pedidos en borrador/atención al sincronizar el controlador con el nombre de ruta `edit-json` y consolidar la lógica de agrupación de productos.
2.  **Validación de Duplicados:** Implementada alerta en tiempo real cuando un cliente ya tiene pedidos para la misma fecha, permitiendo al usuario decidir si continuar o cancelar para evitar errores operativos.
3.  **Soporte de Direcciones en Edición:** Ahora el sistema permite crear una dirección nueva "al vuelo" durante la edición de un pedido existente, resolviendo el error de validación 422.
4.  **Persistencia de Souvenirs:** Se habilitó el campo `souvenirs` en el modelo `Pedido` para asegurar que tarjetas y empaques se guarden correctamente al actualizar.
5.  **Robustez de Totales:** Se mejoró la lógica de captura de precios para usar el precio histórico de venta si existe, evitando el error `NaN`.
6.  **Manejo de Errores Global:** Las llamadas AJAX ahora capturan errores del servidor y los muestran como notificaciones visuales, eliminando la sensación de "bloqueo" del sistema.

**Cambios Técnicos:**
- **PedidoController.php**: Consolidación de `editJson`, soporte para `nueva_direccion` en `update`, y adición de `checkDuplicate`.
- **Pedido.php**: Adición de `souvenirs` a `fillable` y `casts` (array).
- **kanban.blade.php**: Implementación de `checkDuplicateOrders`, corrección de mapeo de `orderDate`, y mejora de reset de formulario.
- **routes/web.php**: Adición de la ruta para chequeo de duplicados.

---

### [2026-04-22] - @Antigravity (Sistema de Souvenirs Dinámicos)
**Estado:** ✅ Completado
**Mejoras Implementadas:**
1.  **Gestión Centralizada:** Se migró el sistema de souvenirs (tarjetas, moños, kits) de una lista estática a una tabla de base de datos (`souvenirs`), permitiendo al usuario configurar nombres, precios e iconos libremente.
2.  **Interfaz Administrativa:** Se creó un nuevo módulo en `/souvenirs-admin` con capacidad de CRUD completo, diseñado con la estética premium del sistema.
3.  **Integración con Pedidos:** El formulario de creación/edición de pedidos ahora consulta dinámicamente los souvenirs disponibles, asegurando que los precios aplicados sean siempre los vigentes en la base de datos.
4.  **Cálculo Automatizado:** Se actualizó la lógica en el backend (`PedidoController`) para validar y sumar el costo de souvenirs desde la tabla maestra durante el guardado y actualización.

**Archivos Modificados:**
- **database/migrations**: Creación de la tabla `souvenirs`.
- **app/Models/Souvenir.php**: Nuevo modelo con soporte para casting de precios y estados.
- **app/Http/Controllers/SouvenirController.php**: API para gestión de souvenirs.
- **app/Http/Controllers/PedidoController.php**: Refactorización de lógica de costos para usar BD.
- **resources/views/souvenirs/index.blade.php**: Nueva interfaz administrativa.
- **resources/views/pedidos/kanban.blade.php**: Carga dinámica de souvenirs en Alpine.js.
- **routes/web.php**: Registro de nuevas rutas administrativas y de API.
- **resources/views/layouts/app.blade.php**: Inclusión de "Souvenirs" en el menú lateral.

---

### [2026-04-23] - @Antigravity (Estabilización, Pesos Variables & Pulido de UI)
**Estado:** ✅ Completado
**Avances Registrados:**
1.  **Refactorización Alpine.js**: Se migró el componente `orderManager` a `Alpine.data` para resolver errores de inicialización y asegurar una carga global robusta.
2.  **Sistema de Pesos Variables (Híbrido)**:
    - Integración de productos vendidos por peso manteniendo control de inventario por unidades físicas.
    - Implementación de persistencia de `peso_total` en `detalles_pedido` para cálculos precisos.
    - Lógica de reconstrucción de precios en `editJson` para permitir la edición fluida de pedidos variables.
3.  **Tablero Kanban & UX**:
    - Restauración de columnas funcionales (Atención, Pendiente, Confirmado, Empaque, Ruta) con Drag & Drop.
    - Se estableció la vista de "Hoy" como carga predeterminada mediante tablas dinámicas optimizadas.
    - Ajuste del modal de Confirmación Manual (más compacto y centrado).
4.  **Identidad Visual & Navegación**:
    - Renombrado del ítem de menú lateral de "Ajustes WhatsApp" a "**Mensajes**".
    - Mejora de contraste en botones de acción: **Índigo** para confirmación manual y **Esmeralda** (con sombra y hover definido) para WhatsApp.
5.  **Mantenimiento de Código**:
    - Limpieza de redundancia en íconos SVG y corrección de etiquetas HTML mal cerradas en el listado de pedidos.

**Archivos Modificados:**
- **PedidoController.php**: Robustez en filtrado `hoy`, persistencia de `peso_total` y corrección de lógica de edición.
- **kanban.blade.php**: Refactor Alpine.js, limpieza de HTML, ajuste de colores y contrastes.
- **resources/views/layouts/app.blade.php**: Actualización de la nomenclatura del menú lateral.
- **modals/create-order.blade.php**: Soporte visual para báscula y pesos variables.

**Estado de la Plataforma:** El módulo de Pedidos se encuentra totalmente operativo, con una interfaz pulida y soporte robusto para la venta de productos variables.

---

### [2026-04-23] - @Antigravity (Corrección de Ruta Dashboard)
**Estado:** ✅ Completado
**Problemas Resueltos:**
1.  **Error 404 en /dashboard**: Se identificó que la ruta `/dashboard` no estaba definida en `routes/web.php` a pesar de que la vista existía y el sistema de autenticación intentaba redirigir allí tras el login.
2.  **Verificación de Acceso**: Se restauró el acceso al panel principal de analíticas para usuarios administradores.

**Archivos Modificados:**
- **routes/web.php**: Definición de la ruta `/dashboard` con retorno de la vista correspondiente dentro del grupo de middleware `auth`.

**Estado de la Plataforma:** Acceso al Dashboard restaurado y servicios locales verificados.

---

### [2026-04-24] - @Antigravity (Optimización CRM, Inventarios y Acciones Masivas)
**Estado:** ✅ Completado
**Mejoras Implementadas:**
1.  **Optimización CRM (Zonas y Geocodificación):**
    - **Recálculo Global:** Se habilitó el parámetro `force_all` en la detección masiva de zonas, permitiendo corregir datos históricos.
    - **Enriquecimiento de Datos:** Extracción automática de **Barrios** (`neighborhood` / `sublocality_level_1`) mediante la API de Google Maps, normalizando la información de entrega.
    - **Mapa Geoespacial:** Implementación de marcadores dinámicos de clientes en el mapa global de zonas, con visibilidad inteligente basada en el zoom (Nivel 14+).
2.  **Enriquecimiento de Catálogo (Atributos Logísticos):**
    - **Nuevas Clasificaciones:** Se integraron los flags `es_corporativo`, `es_alta_demanda` y `es_precio_variable` en el modelo `Producto`.
    - **Visualización Proactiva:** Inclusión de badges visuales (🏢 CORP, 🔥 ALTA, ⚖️ VAR) en la tabla de inventario para mejorar la toma de decisiones operativa.
    - **Sincronización Total:** Actualización de controladores (store/update), importadores y exportadores de Excel para soportar estos nuevos atributos.
3.  **Acciones Masivas en Pedidos:**
    - **Bulk Operations:** Implementación de rutas y lógica en `PedidoController` para el cambio de estado y eliminación masiva de pedidos desde el tablero Kanban, optimizando la gestión de grandes volúmenes de datos.

**Archivos Modificados:**
- **ClienteController.php**: Lógica de geocodificación avanzada y extracción de barrios.
- **ZonaController.php**: Endpoint `/zonas-markers` para visualización de clientes.
- **InventarioController.php**: Soporte para nuevos atributos de producto y persistencia.
- **PedidoController.php**: Métodos `bulkStatus` y `bulkDelete`.
- **inventario/table.blade.php**: Badges visuales de productos.
- **zonas/index.blade.php**: Integración de marcadores en Google Maps.
- **routes/web.php**: Registro de nuevas rutas de acciones masivas y markers.

---

### [2026-04-24] - @Antigravity (Reglas de Negocio Masivas y Refactor UI de Pedidos)
**Estado:** ✅ Completado
**Mejoras Implementadas:**
1.  **Reglas de Operación Masiva:**
    *   **Validación de Borradores:** Se impide la confirmación masiva de pedidos en estado 'borrador' que no contengan productos, mostrando una notificación de error.
    *   **Alertas de Revisión:** Implementación de confirmación específica para pedidos en 'Atención Requerida', advirtiendo que pasarán directamente a despacho.
    *   **Seguridad en Eliminación:** Se integró un sistema de alertas críticas al intentar eliminar registros ya confirmados o procesados (Individual y Masivo), protegiendo la integridad del inventario.
2.  **Refactor Visual e Interactividad (UX):**
    *   **KPIs Dinámicos:** Los indicadores principales ahora reflejan su estado activo mediante colores semánticos (bg-indigo-50, etc.) y anillos de enfoque, eliminando la ambigüedad visual.
    *   **Higiene de Selección:** La selección masiva se resetea automáticamente al cambiar de tabla/KPI para evitar acciones accidentales sobre registros ocultos.
    *   **Acciones de Fila:** Inclusión de botón de eliminación directa en la tabla de pedidos, vinculado al modal de confirmación premium.
3.  **Gestión Avanzada de Atrasados y Pagos:**
    *   **Reprogramación Masiva:** Nueva funcionalidad para mover pedidos atrasados a una fecha futura mediante un modal dedicado, facilitando la limpieza del dashboard de pedidos vencidos.
    *   **Cambio Masivo de Pago:** Implementación de ajuste por lotes para el método de pago (Efectivo/Transferencia), optimizando el cierre de caja y la conciliación financiera.

**Archivos Modificados:**
- **kanban.blade.php**: Nuevos modales de acción masiva, lógica de Alpine.js para reprogramación y pagos.
- **PedidoController.php**: Endpoints `bulkReschedule` y `bulkPaymentMethod` con transacciones de base de datos.
- **web.php**: Registro de rutas API para las nuevas operaciones por lote.
- **PROJECT_LOG.md**: Actualización de bitácora de desarrollo.

---

### [2026-04-24] - @Antigravity (Corrección Crítica: Bucle Infinito en Geocodificación)
**Estado:** ✅ Resuelto (Hotfix)

**Incidente:** 
Se detectó un bucle infinito en el proceso de "Detección Masiva de Zonas" (CRM) al usar la opción **"Recalcular todo"**. El sistema procesó repetidamente los mismos 100 registros iniciales debido a que el `offset` no avanzaba, resultando en ~1600 peticiones redundantes a la API de Google Maps.

**Correcciones Implementadas:**
1.  **Lógica de Offset Dinámico:** Se ajustó `executeBulkDetection` en `index.blade.php` para que el desplazamiento (`offset`) se calcule en función del progreso real (`current`) cuando se activa el modo de recalculación total.
2.  **Protección de API:** La corrección asegura que cada cliente se geocodifique una sola vez por sesión, evitando el desperdicio de cuota de la API de Google Maps.
3.  **Seguridad en el Bucle:** Se eliminaron condiciones redundantes en la recursión y se añadió una cláusula de interrupción si el servidor no devuelve registros nuevos.

**Archivos Modificados:**
- **resources/views/clientes/index.blade.php**: Corrección de la lógica de recursión y cálculo de offset en el CRM.
- **resources/views/clientes/modals/confirm-modal.blade.php**: Mejora en la interactividad y accesibilidad del checkbox de "Recalcular todo".

**Próximos Pasos:**
- Monitorear el consumo de la consola de Google Cloud para validar la eficiencia tras el parche.
- Continuar con la modularización de `kanban.blade.php` una vez estabilizados los procesos de pedidos.

---

### [2026-04-24] - @Antigravity (Optimización de Despacho y Gestión de Horarios)
**Estado:** ✅ Completado

**Mejoras Implementadas:**
1.  **Algoritmo de Ruteo Inteligente:**
    *   **Priorización Horaria:** El sistema ahora detecta automáticamente pedidos con `hora_preferente_entrega` y los posiciona al inicio de la cola de asignación.
    *   **Agrupamiento Geográfico:** Una vez priorizados los horarios, el algoritmo agrupa por `Zona` y `Barrio` para minimizar desplazamientos innecesarios de los domiciliarios.
2.  **Interfaz de Centro de Despacho (UX):**
    *   **Apartado de Prioridad:** Nueva sección visual "Prioridad: Con Horario" con indicadores animados (pulse) para órdenes con restricciones de tiempo.
    *   **Badges Informativos:** Inclusión de etiquetas de hora en las tarjetas de pedidos (tanto en lista de espera como asignados) para facilitar la auditoría visual de la ruta.
3.  **Seguridad Logística:** El orden de asignación en la base de datos ahora sigue estrictamente la secuencia optimizada generada por el frontend.

**Archivos Modificados:**
- **resources/views/rutas/despacho.blade.php**: Nuevo diseño de sidebar, badges de horario y actualización del script `dispatchManager`.
- **app/Models/Pedido.php**: Validación de campos para soporte de horarios.

**Próximos Pasos:**
- Ejecutar pruebas de estrés con rutas de 50+ pedidos por domiciliario.
- Evaluar integración de Google Maps Directions API para cálculo de distancias reales en la siguiente fase.

---

**Estado de la Plataforma:** El CRM y el Centro de Despacho cuentan ahora con lógica de procesamiento inteligente. Siguiente hito: Modularización estructural del Kanban de Pedidos.

### [2026-04-24] - @Antigravity (Gestión de Horarios y Opción Desconfirmar)
**Estado:** ✅ Completado

**Cambios Realizados:**
1.  **Hora Preferente de Entrega**:
    - Integración completa del campo `hora_preferente_entrega` en la creación, edición y visualización (Kanban/Tabla) de pedidos.
    - Soporte para priorización automática en el centro de despacho.
2.  **Opción "Desconfirmar Pedido"**:
    - Implementación de la funcionalidad para revertir pedidos confirmados al estado 'Pendiente'.
    - **Reversión de Inventario**: Al desconfirmar, el stock de los productos se incrementa automáticamente en el inventario.
    - **Seguridad**: Se añadió una alerta de confirmación previa a la acción para evitar errores operativos.
3.  **Corrección Crítica de UI (Alpine.js)**:
    - Se resolvió un error de scope que impedía la apertura de modales (como el de Reprogramación Masiva). El problema radicaba en un cierre prematuro del contenedor principal de datos.
4.  **Badges de Visibilidad**: Añadidos indicadores de hora preferente en las tarjetas del Kanban y en el listado tabular para mejorar la eficiencia del despacho.

**Archivos Modificados:**
- **PedidoController.php**: Lógica de reversión de stock en `updateStatus`.
- **kanban.blade.php**: Corrección del scope Alpine.js.
- **scripts.blade.php**: Nueva función `unconfirmOrder`.
- **kanban-board.blade.php & table-view.blade.php**: Inclusión de botones y badges de "Desconfirmar" y horarios.

**Estado de la Plataforma:** Sistema de pedidos estabilizado y con nuevas capacidades de gestión de excepciones y logística horaria.

## Registro de Cambios - 2026-04-24

### 1. Optimización de Mensajería WhatsApp
- **Túnel de Datos Base64**: Se implementó la codificación Base64 para el tránsito de listas de productos, eliminando la corrupción de emojis en servidores WAMP.
- **Robustez de Codificación**: Limpieza de BOM en plantillas JSON y uso de secuencias de escape Unicode en controladores PHP.
- **Frontend Sync**: Actualización de Alpine.js para decodificar UTF-8 Base64 de forma segura.

### 2. Módulo de Mantenimiento Crítico
- **Corrección de Esquema**: Se corrigió el nombre de la tabla de detalles de pedido (`detalles_pedido`) resolviendo errores de reseteo.
- **Reinicio Total**: Ampliada la lógica de `resetFull` para limpiar rutas y plantillas recurrentes, garantizando un estado cero real.

### 3. Auditoría Geográfica y Consistencia (User Update)
- **GeoAudit Engine**: Implementación de auditoría de coordenadas contra polígonos de zona y clusters de barrios.
- **Indicadores Visuales**: Añadidos estados de validación (✅ Correcto, 🚩 Fuera de Zona, 📍 Outlier de Barrio) en la tabla de clientes.
- **UI Reactiva**: Integración de disparadores de auditoría en la carga dinámica de la tabla.

### 4. Refinamiento de UX
- **Notificaciones**: Reemplazo de `alert()` nativos por eventos de notificación personalizados en Clientes y Despacho.
- **Confirmaciones**: Mejora en los flujos de confirmación de reenvío y acciones críticas.

**Archivos Modificados:**
- **WhatsAppController.php** & **SettingController.php**: Codificación y escapes.
- **SystemMaintenanceController.php**: Corrección de tablas.
- **clientes/index.blade.php** & **table.blade.php**: GeoAudit y notificaciones.
- **rutas/despacho.blade.php**: Notificaciones y confirmaciones.
- **whatsapp_templates.json**: Limpieza de codificación.

---

### [2026-05-19] - @Antigravity (Módulo de Liquidación de Planillas y Nómina de Domiciliarios)
**Estado:** ✅ Completado
**Cambios Realizados:**
1. **Base de Datos y Migraciones**: 
   - Se creó la migración `2026_05_20_000000_add_payroll_settlement_to_delivery_system.php` para incorporar la columna de tarifa de pago domiciliario a nivel de zonas (`zonas.pago_domiciliario`, default 8000) y de detalle de ruta (`ruta_detalles.pago_domiciliario`), junto a campos de liquidación en rutas (`rutas.auxilio_combustible`, `rutas.base_efectivo`, `rutas.efectivo_rutas_pasadas`, `rutas.ajustes`, `rutas.estado_liquidacion` y `rutas.observaciones_liquidacion`).
2. **Modelos**:
   - `Zona.php`: Agregado `pago_domiciliario` a fillables y casts.
   - `Ruta.php`: Agregados nuevos campos de liquidación, cast de `ajustes` como `array` e inclusión del campo `pago_domiciliario` en el pivote de la relación `pedidos()`. Corregido un typo preexistente en `$this->total_recaudado`.
   - `RutaDetalle.php`: Agregado `pago_domiciliario` a fillable.
3. **Lógica de Controladores**:
   - `ZonaController.php`: Validación y almacenamiento del campo `pago_domiciliario` en las acciones de creación y actualización de zonas. Implementación de ordenamiento dinámico por Nombre, Clientes (`direcciones_count`) y Prioridad (`orden_prioridad`) ascendente o descendente.
   - `RutaController.php`: Al crear/guardar una ruta, el controlador copia automáticamente la tarifa por defecto configurada en la zona asignada a la dirección del pedido hacia el pivote de detalles.
   - `PlanillaLiquidacionController.php`: Creado para manejar el listado de planillas con filtros avanzados (fecha, domiciliario, estado), consulta de detalles, guardado de borrador y cierre/bloqueo o reapertura de liquidación. Se solucionó un error de base de datos (`QueryException`) al corregir la consulta de domiciliarios que buscaba la columna inexistente `role` y ordenaba por `name` (se actualizó para usar la relación `rol` y ordenar/mostrar por `nombre`).
4. **Vistas y Navegación**:
   - `app.blade.php`: Agregado enlace para "Liquidación Planillas" en el menú lateral (desktop y móvil).
   - `zona-form.blade.php` e `index.blade.php` (zonas): Agregado campo de entrada para configurar la tarifa de pago del domiciliario por pedido.
   - `table.blade.php` (zonas): Se rediseñó la columna de tarifas para mostrar de manera explícita el costo del domicilio del cliente y el pago correspondiente al domiciliario. Se agregaron controles de ordenamiento interactivos en la cabecera.
   - `index.blade.php` (zonas): Se agregó el menú desplegable y botón de cambio de orden en el panel de filtros para ordenar zonas de forma alfabética (A-Z, Z-A), por cantidad de clientes o por prioridad.
   - `planillas/index.blade.php`: Creado panel de control premium (Glassmorphic) para gestionar las planillas de liquidación, con un modal AlpineJS interactivo para el recálculo automático de nómina y conciliación de caja en tiempo real. Incorporado estilo y estructura de impresión física (`@media print`). Se corrigieron las referencias a `$dom->name` y `domiciliario->name` por `nombre` para evitar fallos de lectura en el listado y filtro.
5. **Sincronización**:
   - Se copiaron y organizaron todas las modificaciones del módulo en la carpeta de distribución FTP (`export_ftp/`).

**Archivos Modificados / Creados:**
- `database/migrations/2026_05_20_000000_add_payroll_settlement_to_delivery_system.php`
- `app/Models/Zona.php`
- `app/Http/Controllers/ZonaController.php`
- `app/Models/Ruta.php`
- `app/Models/RutaDetalle.php`
- `app/Http/Controllers/RutaController.php`
- `app/Http/Controllers/PlanillaLiquidacionController.php`
- `routes/web.php`
- `resources/views/layouts/app.blade.php`
- `resources/views/zonas/modals/zona-form.blade.php`
- `resources/views/zonas/index.blade.php`
- `resources/views/zonas/table.blade.php`
- `resources/views/planillas/index.blade.php`
- `export_ftp/` (Sección espejo actualizada con las versiones estables)

---

### [2026-05-19] - @Antigravity (Sincronización de Filtros y Estandarización de Modal de Liquidación)
**Estado:** ✅ Completado
**Cambios Realizados:**
1. **Filtros Sincrónicos**:
   - Se configuraron los filtros de la vista de planillas para actuar de manera totalmente sincrónica (recarga automática instantánea en cambio/selección de Domiciliario, Fecha Desde, Fecha Hasta y Estado de Liquidación) al agregar los eventos `@change="fetchPlanillas"`.
2. **Estandarización del Modal de Liquidación**:
   - Se adaptaron los estilos del modal de liquidación para cumplir rigurosamente con las especificaciones de diseño del sistema:
     - Envoltura del modal con la directiva `<template x-teleport="body">` para aislar el elemento del DOM principal.
     - Implementación de fondo oscuro difuminado con blur (`backdrop-blur-sm bg-slate-900/60`).
     - Eliminación del cierre al hacer clic fuera del modal (se configuró como static backdrop).
     - Rediseño de la cabecera del modal para incluir un fondo sólido índigo (`bg-indigo-600`), icono SVG rotado correspondiente, y título con detalles de la planilla.
     - Inclusión de un botón "Cancelar" con estilo de acción negativa (texto que cambia a color rojo y fondo suave en hover), posicionado a la izquierda del grupo de acciones del pie de página.
     - Ajuste del radio de redondeo a `rounded-3xl` (1.5rem) para mayor sobriedad.
3. **Sincronización FTP**:
   - Copia exacta de los archivos modificados a la carpeta espejo `export_ftp/`.

**Archivos Modificados:**
- `resources/views/planillas/index.blade.php`
- `export_ftp/resources/views/planillas/index.blade.php`

