-- Sincroniza menu_groups/menu_items (usados por la matriz de Permisos por Rol en
-- Usuarios) con la estructura REAL del menu lateral en public/index.html. Este
-- metadata veniia arrastrando drift de varios reordenamientos de menu anteriores
-- a esta migracion (Entrada/Almacenamiento/Salida/Calidad ya no coincidian, y
-- faltaba el grupo Parametros creado hoy) -- la matriz de permisos mostraba items
-- agrupados bajo encabezados viejos, aunque el menu real y los permisos en si
-- (que se gatean por view_key, no por group_id) nunca se vieron afectados.

-- 1) Corregir nombre/orden de los grupos existentes.
UPDATE menu_groups SET name = '1 - Entrada', sort_order = 1 WHERE code = 'entrada';
UPDATE menu_groups SET name = '2 - Almacenamiento', sort_order = 2 WHERE code = 'almacen';
UPDATE menu_groups SET name = '3 - Salida', sort_order = 3 WHERE code = 'salida';
UPDATE menu_groups SET name = '4 - Operaciones', sort_order = 4 WHERE code = 'ops';
UPDATE menu_groups SET name = '5 - Calidad', sort_order = 5 WHERE code = 'calidad';
UPDATE menu_groups SET name = '6 - DINAVISA / Compliance', sort_order = 6 WHERE code = 'dinavisa';
UPDATE menu_groups SET name = '8 - Sistema', sort_order = 8 WHERE code = 'sistema';

-- 2) Crear el grupo Parametros (no existia). menu_groups.id es tinyint sin
--    AUTO_INCREMENT (PK asignada a mano) -- se usa explicitamente el siguiente
--    id libre (8; los existentes van del 1 al 7).
INSERT INTO menu_groups (id, code, name, color, sort_order, is_active)
SELECT 8, 'parametros', '7 - Parámetros', 'parametros', 7, 1
WHERE NOT EXISTS (SELECT 1 FROM menu_groups WHERE code = 'parametros');

-- 3) Reasignar cada item a su grupo/orden real actual.
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'entrada'
  SET mi.group_id = g.id, mi.sort_order = 1 WHERE mi.view_key = 'recepcion';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'entrada'
  SET mi.group_id = g.id, mi.sort_order = 2 WHERE mi.view_key = 'recepcion_optica';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'entrada'
  SET mi.group_id = g.id, mi.sort_order = 3 WHERE mi.view_key = 'print_labels';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'entrada'
  SET mi.group_id = g.id, mi.sort_order = 4 WHERE mi.view_key = 'devoluciones';

UPDATE menu_items mi JOIN menu_groups g ON g.code = 'almacen'
  SET mi.group_id = g.id, mi.sort_order = 1 WHERE mi.view_key = 'putaway';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'almacen'
  SET mi.group_id = g.id, mi.sort_order = 2 WHERE mi.view_key = 'stock';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'almacen'
  SET mi.group_id = g.id, mi.sort_order = 3 WHERE mi.view_key = 'contenedores';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'almacen'
  SET mi.group_id = g.id, mi.sort_order = 4 WHERE mi.view_key = 'almacenes';

UPDATE menu_items mi JOIN menu_groups g ON g.code = 'salida'
  SET mi.group_id = g.id, mi.sort_order = 1 WHERE mi.view_key = 'picking';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'salida'
  SET mi.group_id = g.id, mi.sort_order = 2 WHERE mi.view_key = 'picking_optica';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'salida'
  SET mi.group_id = g.id, mi.sort_order = 3 WHERE mi.view_key = 'ondas';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'salida'
  SET mi.group_id = g.id, mi.sort_order = 4 WHERE mi.view_key = 'prepmanual';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'salida'
  SET mi.group_id = g.id, mi.sort_order = 5 WHERE mi.view_key = 'zonepick';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'salida'
  SET mi.group_id = g.id, mi.sort_order = 6 WHERE mi.view_key = 'packing';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'salida'
  SET mi.group_id = g.id, mi.sort_order = 7 WHERE mi.view_key = 'expedicion';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'salida'
  SET mi.group_id = g.id, mi.sort_order = 8 WHERE mi.view_key = 'crear_st';

UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.group_id = g.id, mi.sort_order = 1 WHERE mi.view_key = 'tareas';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.group_id = g.id, mi.sort_order = 2 WHERE mi.view_key = 'reubicacion';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.group_id = g.id, mi.sort_order = 3 WHERE mi.view_key = 'fragmentacion_optica';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.group_id = g.id, mi.sort_order = 4 WHERE mi.view_key = 'conteo';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.group_id = g.id, mi.sort_order = 5 WHERE mi.view_key = 'ajustes';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'ops'
  SET mi.group_id = g.id, mi.sort_order = 6 WHERE mi.view_key = 'reportes';

-- Calidad y DINAVISA no cambiaron de contenido, solo se corrigio arriba
-- nombre/orden del grupo. Sus items no necesitan reasignacion.

UPDATE menu_items mi JOIN menu_groups g ON g.code = 'parametros'
  SET mi.group_id = g.id, mi.sort_order = 1 WHERE mi.view_key = 'zonif_familia';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'parametros'
  SET mi.group_id = g.id, mi.sort_order = 2 WHERE mi.view_key = 'zona_familia';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'parametros'
  SET mi.group_id = g.id, mi.sort_order = 3 WHERE mi.view_key = 'zona_subgrupo';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'parametros'
  SET mi.group_id = g.id, mi.sort_order = 4 WHERE mi.view_key = 'picking_min';

UPDATE menu_items mi JOIN menu_groups g ON g.code = 'sistema'
  SET mi.group_id = g.id, mi.sort_order = 1 WHERE mi.view_key = 'sap';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'sistema'
  SET mi.group_id = g.id, mi.sort_order = 2 WHERE mi.view_key = 'usuarios';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'sistema'
  SET mi.group_id = g.id, mi.sort_order = 3 WHERE mi.view_key = 'bins';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'sistema'
  SET mi.group_id = g.id, mi.sort_order = 4 WHERE mi.view_key = 'import_sap';
UPDATE menu_items mi JOIN menu_groups g ON g.code = 'sistema'
  SET mi.group_id = g.id, mi.sort_order = 5 WHERE mi.view_key = 'backup';

-- 4) Items que ya no existen en el menu real (removidos en sesiones anteriores):
--    quedan inactivos en vez de borrados, para no perder el historico de permisos
--    ya configurado por rol si algun dia se reactivan.
UPDATE menu_items SET is_active = 0 WHERE view_key IN ('agendas', 'transferencias');
