-- Nueva pantalla "Consulta de Movimiento de Stock" (Kardex por producto), agregada
-- al grupo "4 - Operaciones" como primer item. El menu lateral se gatea 100% desde
-- menu_groups/menu_items/menu_role_access (ver 010_menu_sync.sql) -- sin fila nueva
-- aca, applyRoleMenu() en el frontend oculta cualquier view_key que no exista en la
-- matriz, asi que quedaba invisible para todos los roles (incluido admin).

-- 1) Correr el resto de "ops" un lugar para que stock_kardex quede primero.
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.sort_order = 2 WHERE mi.view_key = 'tareas';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.sort_order = 3 WHERE mi.view_key = 'reubicacion';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.sort_order = 4 WHERE mi.view_key = 'fragmentacion_optica';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.sort_order = 5 WHERE mi.view_key = 'conteo';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.sort_order = 6 WHERE mi.view_key = 'ajustes';

-- 2) Nuevo menu_item.
INSERT INTO menu_items (group_id, view_key, name, sort_order, is_active)
SELECT g.id, 'stock_kardex', 'Consulta de Movimiento de Stock', 1, 1
FROM menu_groups g
WHERE g.code = 'ops'
  AND NOT EXISTS (SELECT 1 FROM menu_items WHERE view_key = 'stock_kardex');

-- 3) Hereda el mismo acceso por rol que "tareas" (misma audiencia operativa).
INSERT INTO menu_role_access (menu_item_id, role, access_type)
SELECT ni.id, old_access.role, old_access.access_type
FROM menu_items ni
JOIN (
  SELECT a.role, a.access_type
  FROM menu_role_access a
  JOIN menu_items i ON i.id = a.menu_item_id
  WHERE i.view_key = 'tareas'
) old_access ON 1=1
WHERE ni.view_key = 'stock_kardex'
AND NOT EXISTS (
  SELECT 1 FROM menu_role_access existing
  WHERE existing.menu_item_id = ni.id AND existing.role = old_access.role
);
