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