ALTER TABLE AS_USRPWD ADD UPW_PermitirEditarNotasNoPropias TINYINT NOT NULL DEFAULT 1;

-----------------------------------------------
-- PROCESO DE LIMPIEZA DE AS_TRAMITADORES
-----------------------------------------------

-- (1) Verifica si hay tramitadores asignados a objetos no válidos
SELECT *
FROM AS_TRAMITADORES
WHERE Fusion_OBJ_id IS NULL OR Fusion_OBJ_id = 0;

-- (2) Elimina todas esas asignaciones
DELETE FROM AS_TRAMITADORES
WHERE Fusion_OBJ_id IS NULL OR Fusion_OBJ_id = 0;

-- (3) Verifica si hay asignaciones de tramitadores duplicadas
SELECT 
  TRA_TipoObj,
  Fusion_OBJ_id,
  EmpID,
  COUNT(*) AS total,
  STRING_AGG(CAST(TRA_Id AS NVARCHAR(MAX)), ', ') AS TRA_Ids
FROM AS_TRAMITADORES
GROUP BY TRA_TipoObj, Fusion_OBJ_id, EmpID
HAVING COUNT(*) > 1

-- (4) Borrar registros con TRA_Id más antiguo (Obtenidos de la query anterior a 29/05/2025)
DELETE FROM AS_TRAMITADORES WHERE TRA_Id IN (
80027,
72420,
80036,
80164,
97016,
286657,
286830,
287248,
286566,
286574,
286572,
333302,
333303,
333304,
333309,
333329,
744502,
750595,
791248,
791246,
835343,
850387,
850909,
877941,
914696,
960310,
976615,
987557,
997999,
1005367,
1013183,
1015409,
1021381,
1023479,
1041715,
1050077,
1059465,
1065766,
1069029,
1080986,
1084422,
1104331,
1106898,
1127686,
1159984,
1365605,
1368058,
1380891,
1402892,
1408895,
1415177
);

-- (5) Verifica si no hay asignaciones de tramitadores duplicadas (debería de retornar 0 filas)
SELECT 
  TRA_TipoObj,
  Fusion_OBJ_id,
  EmpID,
  COUNT(*) AS total,
  STRING_AGG(CAST(TRA_Id AS NVARCHAR(MAX)), ', ') AS TRA_Ids
FROM AS_TRAMITADORES
GROUP BY TRA_TipoObj, Fusion_OBJ_id, EmpID
HAVING COUNT(*) > 1
  
-- (6) Añadir la Unique key
ALTER TABLE AS_TRAMITADORES
ADD CONSTRAINT UQ_Tramitadores_Unico
UNIQUE (TRA_TipoObj, Fusion_OBJ_id, EmpID); 