You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(auth): claves de permiso granulares para Supply/Almacén (F0 Supply) (#75)
RECON (14/08): show_inventory no gateaba nada en el código real — Supply
(Pedidos/Recepciones/Facturas/Almacén/CTB) solo tenía requiredRole:'manager'
a nivel de módulo, ningún item con requiredPermission. Proveedores, Platos y
Rentabilidad/Ingeniería de menús (Kitchen) igual. Los márgenes reales de
Ventas (Economía/Márgenes, Margen final, Food cost/Plato) sí tenían permiso
— show_ventas_analisis — pero nada que ver con show_inventory. Alcance
corregido con Julio antes de construir.
6 columnas nuevas en manager_permissions (2 migraciones — la segunda
corrige a la primera, que había metido show_costes en el backfill por
error de alcance; no se edita la migración ya aplicada):
show_recepcion, show_pedidos, show_proveedores, show_inventarios,
show_facturas — backward-compat: quien tenga show_inventory=true las
recibe en true.
show_costes — la sensible (costes/escandallos/márgenes). Nace en false
para todos, NO entra en el backfill, mismo criterio que show_salaries.
Cableado real (antes decorativo, ahora gatea de verdad):
- supply/module.tsx: Pedidos→show_pedidos, Recepciones→show_recepcion,
Facturas→show_facturas, Almacén→show_inventory ("ver el almacén y el
stock", su alcance reducido). Comunicar a CTB→requiredRole:'admin'
(decisión de Julio: no es operativa de local).
- kitchen/module.tsx: Proveedores→show_proveedores. Platos→show_costes
(decisión explícita: el escandallo se ve dentro de la pantalla normal
de editar el plato, sin separar datos — "el rol no entra ahí", no se
rediseña la pantalla). Rentabilidad e Ingeniería de menús→show_costes.
- ventas/module.tsx: Economía/Márgenes, Margen final y Food cost/Plato
exigen AHORA show_ventas_analisis Y show_costes (antes bastaba con
show_ventas_analisis, que las 2 plantillas ya tenían en true — dejaba
el food cost visible por esa vía aunque show_costes fuera false).
shell/types.ts: requiredPermission pasa de string a string | string[]
(array = AND, todas las claves exigidas) — necesario para el caso de
Ventas. Los 4 sitios que lo evalúan (ModuleSidebar, ShellTopBar,
ShellBottomNav, MobileModuleTabs) actualizados con el mismo check.
managerPermissionsService.ts: las 6 claves nuevas en DEFAULT_PERMISSIONS y
en los 4 mappers (rowToManagerPermissions, managerPermissionsToInsertRow,
patchToUpdateRow, permissionTemplateValuesToRow). Plantillas
"Responsable de local"/"Oficina": las 5 no-sensibles en true, show_costes
en false en las dos.
Corrección adicional aprobada por Julio sobre lo ya mergeado en #74:
show_informes_personal (gatea Nóminas) pasa a true en "Responsable de
local" — edita el cuadrante y aprueba vacaciones; no ver las horas de su
equipo sería incoherente. Se queda en false en "Oficina".
ManagerPermissionsModal.tsx: 6 toggles nuevos, sección "Compras y
Almacén" — no quedan decorativos, tienen editor individual desde el
primer commit (a diferencia de 6 columnas previas al 14/08 que siguen sin
toggle: showTasks/showScheduled/showTemplates/showIncidents/showAudits/
showHistory, deuda previa no tocada aquí).
Verificado: has_permission()/get_effective_permissions() reconocen las 6
columnas nuevas sin cambio de función (impersonación real vía MCP contra
la única fila existente en manager_permissions). tsc -b limpio (único
error restante: DailyCountWizard.tsx, huérfano, ajeno a esta rama).
0 commit comments