# Seguimiento de Impuestos GLM Aplicación interna para mantener el calendario tributario regional, administrar destinatarios y alimentar el flujo automático de recordatorios por Gmail y WhatsApp. ## Incluye - Login con Google y control de acceso desde Supabase. - Calendario histórico 2026 migrado a PostgreSQL/Supabase. - Creación, consulta, edición y eliminación lógica de obligaciones antes de su primer aviso. - Bloqueo automático de edición y eliminación después del primer recordatorio enviado. - País obligatorio y categorías limitadas a **Nómina** y **Administración**. - Regla de alertas: **miércoles estrictamente anterior y el mismo día**, incluidos sábados y domingos. - Contactos almacenados en Supabase y administrables desde la app. - Países visibles aunque todavía no tengan contactos. - Filtro buscable por país y búsqueda por nombre en Contactos. - Búsqueda por nombre o país en Lista. - Webhook de producción configurado para n8n. - Workflow de n8n para Gmail + WhatsApp con correo HTML GLM. ## 1. Crear la base de datos Ejecuta completo: ```text supabase/Seguimiento-de-Impuestos-GLM.sql ``` El script crea tablas, RLS, funciones, bitácora anti-duplicados, bloqueo de eventos notificados, accesos iniciales, contactos y las 294 obligaciones históricas de 2026. Si ya habías ejecutado una versión anterior del script completo, ejecuta solamente: ```text supabase/actualizacion_eventos_bloqueados.sql ``` ## 2. Configurar frontend Copia `.env.example` como `.env` y completa la llave pública de Supabase. La `service_role` nunca debe ponerse en Vite. ```bash npm install npm run dev ``` URL local: ```text http://localhost:5173/calendario-impuestos/ ``` Build: ```bash npm run build npm run preview ``` ## 3. Configurar n8n Importa: ```text n8n/Seguimiento-de-Impuestos-GLM.json ``` Luego sigue `n8n/CONFIGURACION.md`. El único ajuste dentro del canvas es seleccionar la credencial de Gmail; las demás claves se leen de variables de entorno. ## Enrutamiento - **Regional** recibe todas las obligaciones. - **Nómina** recibe únicamente obligaciones de Nómina de su país. - **Administración** recibe únicamente obligaciones de Administración de su país. - El flujo consulta los contactos en Supabase en cada ejecución; agregar un contacto en la app no requiere modificar n8n. ## Despliegue Vite conserva la base: ```ts base: "/calendario-impuestos/"; ``` ## Actualización final de calendario y Nómina - Cuando un día tiene más de tres obligaciones, el enlace **Ver todos** abre una vista con la lista completa; desde allí se puede abrir cada obligación. - El script `supabase/actualizacion_final_calendario_y_nomina.sql` agrega a Mati Soto Valenzuela e Iveth Herrera como contactos regionales especializados en Nómina. - Los contactos regionales con área `nomina` reciben obligaciones de Nómina de todos los países. Los contactos con área `regional` continúan recibiendo todas las categorías. - El número de Mati se guarda como `18094037571`, agregando el prefijo internacional `1` requerido para WhatsApp.