IF  EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[TRG_EST_PROD_FLAG_CONTROLADO]'))
DROP TRIGGER [dbo].[TRG_EST_PROD_FLAG_CONTROLADO]
GO


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [dbo].[TRG_EST_PROD_FLAG_CONTROLADO] ON [dbo].[EST_PROD] FOR  UPDATE AS
BEGIN

	-- VERIFICA SE O VALOR DA FLAG FOI ALTERADO
	IF NOT EXISTS (
		SELECT
			I.CD_EMP
		FROM
			INSERTED I
			INNER JOIN DELETED D ON
				I.CD_EMP = D.CD_EMP
				AND I.CD_PROD = D.CD_PROD
				AND I.CONTROLE_SNGPC = D.CONTROLE_SNGPC
	)
		-- SE A FLAG FOI ALTERADA
		BEGIN
			-- VERIFICA SE O PRODUTO JÁ EXISTE NA TABELA DE ATUALIZAÇÃO
			IF EXISTS (
				SELECT
					A.CD_EMP
				FROM
					EST_SNGPC_ATUALIZACAO A
					INNER JOIN INSERTED I ON
						A.CD_EMP      = I.CD_EMP
						AND A.CD_PROD = I.CD_PROD
			)
				-- SE O PRODUTO JÁ EXISTIR NA TABELA DE ATUALIZAÇÃO
				BEGIN
					-- ATUALIZA O REGISTRO NA TABELA DE ATUALIZAÇÃO
					UPDATE
						A
					SET
						A.FLAG_CONTROLADO   = I.CONTROLE_SNGPC
						, A.FLAG_PROCESSADO = 0
						, A.DT_ULT_ALT      = GETDATE()
						, A.CD_USU          = I.CD_USU
					FROM
						EST_SNGPC_ATUALIZACAO A
						INNER JOIN INSERTED I ON
							A.CD_EMP      = I.CD_EMP
							AND A.CD_PROD = I.CD_PROD
				END
			ELSE
				-- SE O PRODUTO NÃO EXISTIR NA TABELA DE ATUALIZAÇÃO
				BEGIN
					-- INSERE O PRODUTO NA TABELA DE ATUALIZAÇÃO
					INSERT INTO EST_SNGPC_ATUALIZACAO
					SELECT 
						CD_EMP
						, CD_PROD
						, CONTROLE_SNGPC 
						, 0
						, GETDATE()
						, CD_USU
					FROM
						INSERTED
				END;
		END;
END

