SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'WMAN_PlanillaUsuarioBtn_PutInfo') )
DROP PROCEDURE WMAN_PlanillaUsuarioBtn_PutInfo
GO

CREATE PROCEDURE WMAN_PlanillaUsuarioBtn_PutInfo
	@id_oper INT,
	@id_plant INT
AS

BEGIN
	DECLARE @MensajeError VARCHAR(255) = ''
	DECLARE @valor_llave INT
	DECLARE @Contador INT           -- Variable contador
	SET @Contador = 1   
	DECLARE @Regs INT               -- Variable para el Numero de Registros a procesar
	DECLARE @campo INT				--id
	
		-- Crear select * from Acceso   SELECT * FROM syswinFOR
		
		--SELECT id_tip_oper, LTRIM(RTRIM(nombre))nombre, descripcion FROM Tip_Operador --3  --PLANTILLAS
	
		--SELECT id_oper, nombre, descripcion FROM Operador ORDER BY nombre --107  --USUARIOS
		
		--SELECT * FROM Acceso_Tipo where id_tip_oper = 3
			--SELECT * FROM Acceso_Opc_Tipo where id_tip_oper = 3
		
		
		--SELECT * FROM Acceso		--SELECT * FROM Acceso_Tipo
		--SELECT * FROM Acceso_Opc	--SELECT * FROM Acceso_Opc_Tipo
		
			DELETE FROM Acceso WHERE id_oper = @id_oper
			DELETE FROM Acceso_Opc WHERE id_oper = @id_oper
			
		
			CREATE TABLE #TempAcceso(
			ID INT Identity(1,1),
			id_datos INT
			)
			
			
			--Pasamos datos a la tabla temporal
			INSERT INTO #TempAcceso(id_datos)(SELECT id_datos FROM Acceso_Tipo WHERE id_tip_oper = @id_plant)
			
			SET @Regs = (SELECT COUNT(*) FROM Acceso_Tipo WHERE id_tip_oper = @id_plant)
			
			WHILE @Contador <= @Regs
			BEGIN
			
			SELECT @campo = t.id_datos FROM #TempAcceso t WHERE t.ID = @Contador
			
					SET IDENTITY_INSERT Acceso ON
					
						SET @valor_llave= IDENT_CURRENT ('Acceso');
						--select @valor_llave
						SET @valor_llave = @valor_llave+1
						
						UPDATE syswinFOR
						SET valor_llave = @valor_llave
						WHERE desc_tabla = 'Acceso'
					
						INSERT INTO Acceso (id_acceso_oper,id_datos, id_oper)
						VALUES(@valor_llave,@campo,@id_oper)
						
					SET IDENTITY_INSERT Acceso OFF
						
				SET @Contador = @Contador + 1
			END
			
			SET @Contador = 1
			
			CREATE TABLE #TempAccesoOpc(
			ID INT Identity(1,1),
			id_opc INT
			)
			
			--Pasamos datos a la tabla temporal
			INSERT INTO #TempAccesoOpc(id_opc)(SELECT id_opc FROM Acceso_Opc_Tipo WHERE id_tip_oper = @id_plant)

			SET @Regs = (SELECT COUNT(*) FROM Acceso_Opc_Tipo WHERE id_tip_oper = @id_plant)
			
			WHILE @Contador <= @Regs
			BEGIN
			
			SELECT @campo = t.id_opc FROM #TempAccesoOpc t WHERE t.ID = @Contador
			
					SET IDENTITY_INSERT Acceso_Opc ON
					
						SET @valor_llave= IDENT_CURRENT ('Acceso_Opc');
						--select @valor_llave
						SET @valor_llave = @valor_llave+1
						
						UPDATE syswinFOR
						SET valor_llave = @valor_llave
						WHERE desc_tabla = 'Acceso_Opc'
					
						INSERT INTO Acceso_Opc (id_acceso_opc,id_opc, id_oper)
						VALUES(@valor_llave,@campo,@id_oper)
						
					SET IDENTITY_INSERT Acceso_Opc OFF
						
				SET @Contador = @Contador + 1
			END
				
	SELECT @id_oper AS Id
	
	RETURN

	ERROR:
		RAISERROR (@MensajeError, 16, 1)

END
GO