# Módulo de administración del tarifario — Tablero CDC ## Qué incorpora - Botón **Tarifario** inmediatamente antes de **+ Nuevo**. - El botón depende exclusivamente de `tablero_cdc_allowed_users.can_manage_tariff_catalog`. - Administración de las secciones generales existentes: - Tarifario Gráfico CDC. - Estrategia y Creatividad. - Creación de nuevas secciones generales. - Creación de tarifarios especiales vinculados a cualquier cliente activo del Tablero CDC. - Edición, desactivación y reactivación de secciones y tarifas. - Las tarifas especiales se muestran únicamente cuando el proyecto tiene seleccionado el cliente asociado. - Cada tarifario especial utiliza selección múltiple de piezas con montos fijos y puede permitir un costo manual adicional. - Los proyectos históricos no se modifican. ## Orden de instalación 1. Ejecutar completo `supabase_tariff_admin_module.sql` en Supabase. 2. Confirmar que las consultas de verificación muestran a Isaac, Gerardo y Alicia con `can_manage_tariff_catalog = true`. 3. Ejecutar `npm run build` o utilizar el `dist` incluido, que ya contiene el módulo. 4. Probar localmente con XAMPP. 5. Publicar el `dist` validado. ## Dar acceso a otra persona La persona debe existir primero como usuario activo del Tablero CDC. Luego ejecutar: ```sql update public.tablero_cdc_allowed_users set can_manage_tariff_catalog = true, updated_at = now() where lower(trim(email)) = lower(trim('correo@gomezleemarketing.com')); ``` ## Quitar acceso al módulo ```sql update public.tablero_cdc_allowed_users set can_manage_tariff_catalog = false, updated_at = now() where lower(trim(email)) = lower(trim('correo@gomezleemarketing.com')); ``` Después del cambio, el usuario debe recargar la aplicación. Si tenía una sesión abierta desde antes, puede cerrar sesión y volver a entrar para que el permiso se lea nuevamente. ## Verificar quién tiene acceso ```sql select email, full_name, is_active, can_manage_tariff_catalog from public.tablero_cdc_allowed_users where can_manage_tariff_catalog = true order by full_name, email; ``` ## Pruebas recomendadas 1. Isaac, Gerardo y Alicia ven el botón **Tarifario**. 2. Un usuario sin el permiso no ve el botón y tampoco puede escribir en las tablas por RLS. 3. Editar una tarifa de una sección general y verificarla dentro de un proyecto de un cliente normal. 4. Crear una sección general nueva, agregar una tarifa y verificar que aparezca en el estimador interno. 5. Crear un tarifario por cliente, asociarlo a un cliente de prueba y agregar dos piezas con montos fijos. 6. Abrir un proyecto de ese cliente y verificar selección múltiple, subtotal y costo manual. 7. Abrir un proyecto de otro cliente y confirmar que el tarifario especial no aparezca. 8. Desactivar una tarifa y comprobar que deja de ofrecerse sin borrar costos históricos. ## Compatibilidad con el sincronizador del Sheet - Las tarifas administradas desde la app se marcan con `managed_by = 'app'`. - El sincronizador de n8n no puede sobrescribir tarifas que ya hayan sido administradas desde la app. - La desactivación masiva del Sheet solo afecta las tarifas gestionadas por el Sheet en las secciones originales. - Las nuevas secciones y los tarifarios especiales permanecen protegidos.