SMS-Administracion de usuarios-Error en asignacion temporal

Este escenario se presenta cuando se quiere agregar temporalmente a un usuario de otra tienda y al momento de guardar los datos marca error en la pantalla de asignacion temporal.

Las posibles causas son las siguientes.

  • Existe el consecutivo del empleado en la BD del reloj checador, para el nuevo usuario que se quiere agregar, por lo que aplica depurarlo.
  • El numero de nomina del usuario que se quiere asignar ya existe en la tabla empleados o en alguna tabla relacionada, si existe lo depuramos

Para mitigar primeramente validamos si es tema del consecutivo del empleado para ello ejecutamos la siguiente consulta en la BD de la tienda que reporta, si la ejecucion nos regresa resultrados, desconmentarizamos las lineas apartir de –DECLARE @sql2 NVARCHAR(MAX); y volvemos a ejecutar, con ello solucionamos el problema del consecutivo.

--Identifica y depura consecutivo de empleado en la  BD del reloj.
DECLARE @store smallint = (SELECT StoreNumber FROM Store WHERE StoreType = 1);
DECLARE @Index int = 0;

IF (SELECT COUNT(*) FROM [dbo].[EmployeeGapRowsView]) > 0
BEGIN
    -- Hay gaps
    SELECT TOP 1 @Index = [RowNumber]
    FROM [dbo].[EmployeeGapRowsView]
    OPTION (FAST 1);
END
ELSE
BEGIN
    IF (IDENT_CURRENT('Employee') + IDENT_INCR('Employee')) > (SELECT MAX([EmployeeNo]) FROM [dbo].[Employee])
    BEGIN
        -- El identity va en el orden correcto
        SET @Index = IDENT_CURRENT('Employee') + IDENT_INCR('Employee');
    END
END

-- Utilizando consulta dinámica para construir el nombre de la tabla
DECLARE @sql NVARCHAR(MAX);
SET @sql = 'SELECT * FROM [Reloj_sms_' + CAST(@store AS varchar(10)) + '].dbo.UserInfo WITH (NOLOCK) WHERE Userid = ' + CAST(@Index AS NVARCHAR(10));


-- Ejecutar la consulta dinámica
EXEC sp_executesql @sql;

 ----Depurando cnsecutivo del reloj checador si es que existe.
DECLARE @sql2 NVARCHAR(MAX);
SET @sql2 = 'DELETE FROM [Reloj_sms_' + CAST(@store AS varchar(10)) + '].dbo.UserInfo  WHERE Userid = ' + CAST(@Index AS NVARCHAR(10));

 ----Ejecutar la consulta dinámica
EXEC sp_executesql @sql2;

En caso que la consulta anterior no hayamos tenido resultados, lo que sigue es validar si el numero de nomina existe en alguna tabla de las siguientes, si existe procedemos a depurar los registros en la tabla donde tengamos resultados.

DECLARE @PayrollId	nvarchar (8) = 1057200
select * from HM_Employee where payrollid = @PayrollId 
select TermDate, * from employee where  payrollid = @PayrollId 
select *   from aspnetusers where  UserName = @PayrollId 
select * from Reloj_sms_8766.dbo.UserInfo  where usercode = @PayrollId 
select *  from dbo.EmployeeAbsences where EmployeeNo = 789 -- se toma el campo employeeNo en caso de que exista
select *   from AspNetUserRoles where UserId = 'E54EC5C7-539B-4DEB-B03B-454251A3B835' -- Se toma el dato del campo ID de la tabla aspnetusers en caso de que exista
select *   from Mobile.NotificationUser where  UserId =  'E54EC5C7-539B-4DEB-B03B-454251A3B835' -- Se toma el dato del campo ID de la tabla aspnetusers en caso de que exista


--DECLARE @PayrollId	nvarchar (8) = 1057200
--delete HM_Employee where payrollid = @PayrollId 
--delete employee where  payrollid = @PayrollId 
--delete aspnetusers where  UserName = @PayrollId 
--delete Reloj_sms_8766.dbo.UserInfo  where usercode = @PayrollId 
--delete dbo.EmployeeAbsences where EmployeeNo = 789 
--delete AspNetUserRoles where UserId = 'E54EC5C7-539B-4DEB-B03B-454251A3B835' 
--delete Mobile.NotificationUser where  UserId =  'E54EC5C7-539B-4DEB-B03B-454251A3B835' 

Una vez realizado los pasos anteriores revisamos con el usuario de tienda y solicitamos que valide de nuevo que ya pueda realizar la asignacion temporal del usuario.

El ticket se cierra en el *Servicio Gestión de Tiendas (SMS) CI afectado SMS – Administración de Usuarios

Loading

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *