diff --git a/frontend/src/lib/auth.tsx b/frontend/src/lib/auth.tsx index c6951a3..c2141c3 100644 --- a/frontend/src/lib/auth.tsx +++ b/frontend/src/lib/auth.tsx @@ -14,38 +14,40 @@ const ROLE_RANK: Record = { cosmetologia: 50, psicologa: 50, farmacia: 50, - entrenador: 10, + administracion: 10, marketing: 10, lectura: 10, }; // Visibilidad del menú por ruta. Si una ruta no está listada, se muestra a todos los roles. +// 'administracion' (administración de la clínica) ve toda la operación excepto +// /configuracion (solo admin del sistema), /mis-ventas, /cumpleanos y /wacrm/*. const MENU_ROLES: Record = { - '/': ['admin', 'recepcion', 'medico', 'lectura'], - '/agenda': ['admin', 'recepcion', 'medico'], + '/': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'], + '/agenda': ['admin', 'recepcion', 'medico', 'administracion'], '/mis-ventas': ['medico'], - '/pacientes': ['admin', 'recepcion', 'medico', 'lectura'], - '/pos': ['admin', 'recepcion'], - '/visitas': ['admin', 'recepcion', 'medico'], - '/consultas': ['admin', 'recepcion', 'medico'], - '/expedientes': ['admin', 'recepcion', 'medico'], - '/medicos': ['admin', 'recepcion'], - '/servicios': ['admin', 'recepcion', 'medico', 'lectura'], - '/productos': ['admin', 'recepcion', 'lectura'], // deprecated: redirige a /inventario - '/ventas': ['admin', 'recepcion'], - '/pagos': ['admin', 'recepcion'], - '/monedero': ['admin', 'recepcion', 'lectura'], - '/inventario': ['admin', 'recepcion', 'lectura'], - '/cortes': ['admin', 'recepcion'], - '/reportes': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=comisiones': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=horas-agenda': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=paquetes': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=exportar': ['admin', 'recepcion', 'lectura'], + '/pacientes': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'], + '/pos': ['admin', 'recepcion', 'administracion'], + '/visitas': ['admin', 'recepcion', 'medico', 'administracion'], + '/consultas': ['admin', 'recepcion', 'medico', 'administracion'], + '/expedientes': ['admin', 'recepcion', 'medico', 'administracion'], + '/medicos': ['admin', 'recepcion', 'administracion'], + '/servicios': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'], + '/productos': ['admin', 'recepcion', 'lectura', 'administracion'], // deprecated: redirige a /inventario + '/ventas': ['admin', 'recepcion', 'administracion'], + '/pagos': ['admin', 'recepcion', 'administracion'], + '/monedero': ['admin', 'recepcion', 'lectura', 'administracion'], + '/inventario': ['admin', 'recepcion', 'lectura', 'administracion'], + '/cortes': ['admin', 'recepcion', 'administracion'], + '/reportes': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=comisiones': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=horas-agenda': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=paquetes': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=exportar': ['admin', 'recepcion', 'lectura', 'administracion'], '/configuracion': ['admin'], '/cumpleanos': ['admin', 'recepcion'], '/wacrm/messages': ['admin', 'recepcion'], @@ -183,7 +185,7 @@ export const ROLE_LABELS: Record = { cosmetologia: 'Cosmetología', psicologa: 'Psicóloga', farmacia: 'Farmacia', - entrenador: 'Entrenador', + administracion: 'Administración', marketing: 'Marketing', lectura: 'Lectura', }; diff --git a/frontend/src/services/odoo.ts b/frontend/src/services/odoo.ts index 5f72ec1..8dd26e3 100644 --- a/frontend/src/services/odoo.ts +++ b/frontend/src/services/odoo.ts @@ -556,7 +556,7 @@ export interface WacrmLead { created_at: string | null; } -export type FrontendRole = 'admin' | 'medico' | 'recepcion' | 'enfermeria' | 'cosmetologia' | 'psicologa' | 'farmacia' | 'entrenador' | 'marketing' | 'lectura'; +export type FrontendRole = 'admin' | 'medico' | 'recepcion' | 'enfermeria' | 'cosmetologia' | 'psicologa' | 'farmacia' | 'administracion' | 'marketing' | 'lectura'; export interface FrontendUser { id: number; diff --git a/odoo-addons/skeen_whatsapp/roles.py b/odoo-addons/skeen_whatsapp/roles.py index 2165852..4fc04c8 100644 --- a/odoo-addons/skeen_whatsapp/roles.py +++ b/odoo-addons/skeen_whatsapp/roles.py @@ -6,7 +6,7 @@ como desde controladores sin problemas de orden de carga. La matriz se persiste en ir.config_parameter 'skeen.menu_roles' como JSON {href: [roles...]}. Si no existe, se usan los defaults de DEFAULT_MENU_ROLES -(mismos que MENU_ROLES hardcodeado del frontend) y los 6 roles nuevos heredan +(mismos que MENU_ROLES hardcodeado del frontend) y los 5 roles nuevos heredan el mismo set de secciones que 'lectura'. """ @@ -20,7 +20,7 @@ ROLE_SELECTION = [ ('cosmetologia', 'Cosmetología'), ('psicologa', 'Psicóloga'), ('farmacia', 'Farmacia'), - ('entrenador', 'Entrenador'), + ('administracion', 'Administración'), ('marketing', 'Marketing'), ('lectura', 'Lectura'), ] @@ -35,7 +35,7 @@ ROLE_RANKS = { 'cosmetologia': 50, 'psicologa': 50, 'farmacia': 50, - 'entrenador': 10, + 'administracion': 10, 'marketing': 10, 'lectura': 10, } @@ -43,32 +43,35 @@ ROLE_RANKS = { MENU_ROLES_KEY = 'skeen.menu_roles' # Defaults = MENU_ROLES de src/lib/auth.tsx (4 roles originales). +# 'administracion' (personal de administración de la clínica) ve toda la +# operación EXCEPTO /configuracion (solo admin del sistema), /mis-ventas, +# /cumpleanos y /wacrm/*. DEFAULT_MENU_ROLES = { - '/': ['admin', 'recepcion', 'medico', 'lectura'], - '/agenda': ['admin', 'recepcion', 'medico'], + '/': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'], + '/agenda': ['admin', 'recepcion', 'medico', 'administracion'], '/mis-ventas': ['medico'], - '/pacientes': ['admin', 'recepcion', 'medico', 'lectura'], - '/pos': ['admin', 'recepcion'], - '/visitas': ['admin', 'recepcion', 'medico'], - '/consultas': ['admin', 'recepcion', 'medico'], - '/expedientes': ['admin', 'recepcion', 'medico'], - '/medicos': ['admin', 'recepcion'], - '/servicios': ['admin', 'recepcion', 'medico', 'lectura'], - '/productos': ['admin', 'recepcion', 'lectura'], - '/ventas': ['admin', 'recepcion'], - '/pagos': ['admin', 'recepcion'], - '/monedero': ['admin', 'recepcion', 'lectura'], - '/inventario': ['admin', 'recepcion', 'lectura'], - '/cortes': ['admin', 'recepcion'], - '/reportes': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=comisiones': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=horas-agenda': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=paquetes': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura'], - '/reportes?tab=exportar': ['admin', 'recepcion', 'lectura'], + '/pacientes': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'], + '/pos': ['admin', 'recepcion', 'administracion'], + '/visitas': ['admin', 'recepcion', 'medico', 'administracion'], + '/consultas': ['admin', 'recepcion', 'medico', 'administracion'], + '/expedientes': ['admin', 'recepcion', 'medico', 'administracion'], + '/medicos': ['admin', 'recepcion', 'administracion'], + '/servicios': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'], + '/productos': ['admin', 'recepcion', 'lectura', 'administracion'], + '/ventas': ['admin', 'recepcion', 'administracion'], + '/pagos': ['admin', 'recepcion', 'administracion'], + '/monedero': ['admin', 'recepcion', 'lectura', 'administracion'], + '/inventario': ['admin', 'recepcion', 'lectura', 'administracion'], + '/cortes': ['admin', 'recepcion', 'administracion'], + '/reportes': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=comisiones': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=horas-agenda': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=paquetes': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura', 'administracion'], + '/reportes?tab=exportar': ['admin', 'recepcion', 'lectura', 'administracion'], '/configuracion': ['admin'], '/cumpleanos': ['admin', 'recepcion'], '/wacrm/messages': ['admin', 'recepcion'], @@ -76,7 +79,7 @@ DEFAULT_MENU_ROLES = { } # Roles nuevos que por default ven lo mismo que 'lectura'. -READ_ONLY_NEW_ROLES = ('enfermeria', 'cosmetologia', 'psicologa', 'farmacia', 'entrenador', 'marketing') +READ_ONLY_NEW_ROLES = ('enfermeria', 'cosmetologia', 'psicologa', 'farmacia', 'marketing') def default_menu_roles():