-- Asignación base de permisos para roles operativos.
-- No elimina permisos existentes.

INSERT IGNORE INTO roles_permisos (id_rol, id_permiso)
SELECT r.id_rol, p.id_permiso
FROM roles r
INNER JOIN permisos p
WHERE r.nombre = 'Supervisor'
  AND (
       (p.modulo='dashboard' AND p.accion='ver')
    OR (p.modulo='clientes' AND p.accion IN ('ver','crear','editar','credito','cobrar'))
    OR (p.modulo='pedidos' AND p.accion IN ('ver','crear','asignar','anular'))
    OR (p.modulo='reparto' AND p.accion IN ('ver','entregar','cobrar','gastos'))
    OR (p.modulo='operaciones' AND p.accion IN ('ver','crear','anular'))
    OR (p.modulo='caja' AND p.accion IN ('ver','gestionar'))
    OR (p.modulo='envases' AND p.accion IN ('ver','movimientos'))
    OR (p.modulo='inventario' AND p.accion IN ('ver','movimientos'))
    OR (p.modulo='compras' AND p.accion IN ('ver','crear'))
    OR (p.modulo='reportes' AND p.accion='ver')
    OR (p.modulo='rrhh' AND p.accion IN ('ver','gestionar'))
    OR (p.modulo='liquidacion' AND p.accion IN ('ver','cerrar'))
    OR (p.modulo='facturacion' AND p.accion IN ('emitir','anular'))
  );

INSERT IGNORE INTO roles_permisos (id_rol, id_permiso)
SELECT r.id_rol, p.id_permiso
FROM roles r
INNER JOIN permisos p
WHERE r.nombre = 'Operador'
  AND (
       (p.modulo='dashboard' AND p.accion='ver')
    OR (p.modulo='clientes' AND p.accion IN ('ver','crear','editar','credito'))
    OR (p.modulo='pedidos' AND p.accion IN ('ver','crear','asignar'))
    OR (p.modulo='reparto' AND p.accion='entregar')
    OR (p.modulo='operaciones' AND p.accion IN ('ver','crear'))
  );

INSERT IGNORE INTO roles_permisos (id_rol, id_permiso)
SELECT r.id_rol, p.id_permiso
FROM roles r
INNER JOIN permisos p
WHERE r.nombre = 'Cajero'
  AND (
       (p.modulo='dashboard' AND p.accion='ver')
    OR (p.modulo='clientes' AND p.accion IN ('ver','cobrar','credito'))
    OR (p.modulo='pedidos' AND p.accion='ver')
    OR (p.modulo='operaciones' AND p.accion='ver')
    OR (p.modulo='reparto' AND p.accion='cobrar')
    OR (p.modulo='caja' AND p.accion IN ('ver','gestionar'))
  );

INSERT IGNORE INTO roles_permisos (id_rol, id_permiso)
SELECT r.id_rol, p.id_permiso
FROM roles r
INNER JOIN permisos p
WHERE r.nombre = 'Repartidor'
  AND (
       (p.modulo='dashboard' AND p.accion='ver')
    OR (p.modulo='clientes' AND p.accion='ver')
    OR (p.modulo='pedidos' AND p.accion='ver')
    OR (p.modulo='reparto' AND p.accion IN ('ver','entregar','cobrar','gastos'))
    OR (p.modulo='caja' AND p.accion='ver')
    OR (p.modulo='envases' AND p.accion='ver')
  );
