feat: actualizar Tablero CDC con administracion de listas
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user