CREATE PROCEDURE P_EST_SNGPC_TRATAMENTO_PENDENCIAS AS
	-- Remove as pendências de entrada dos produtos não controlados
	DELETE
		A
	FROM 
		EST_NF_ENT_IT_EST_SNGPC_PENDENTE A
		INNER JOIN EST_SNGPC_ATUALIZACAO B ON
			A.CD_EMP      = B.CD_EMP
			AND A.CD_PROD = B.CD_PROD
	WHERE
		B.FLAG_CONTROLADO = 0
		AND B.FLAG_PROCESSADO = 0

	-- Remove as pendências de saída dos produtos não controlados
	DELETE
		A
	FROM 
		EST_NF_SAI_IT_EST_SNGPC_PENDENTE A
		INNER JOIN EST_SNGPC_ATUALIZACAO B ON
			A.CD_EMP      = B.CD_EMP
			AND A.CD_PROD = B.CD_PROD
	WHERE
		B.FLAG_CONTROLADO = 0
		AND B.FLAG_PROCESSADO = 0

	-- Remove as pendências de vendas dos produtos não controlados
	DELETE
		A
	FROM 
		PDV_VD_IT_EST_SNGPC_PENDENTE A
		INNER JOIN PDV_VD_IT B ON
			A.CD_EMP = B.CD_EMP
			AND A.CD_FILIAL = B.CD_FILIAL
			AND A.CD_VD = B.CD_VD
			AND A.CD_IT = B.CD_IT
		INNER JOIN EST_SNGPC_ATUALIZACAO C ON
			B.CD_EMP      = C.CD_EMP
			AND B.CD_PROD = C.CD_PROD
	WHERE
		C.FLAG_CONTROLADO = 0
		AND C.FLAG_PROCESSADO = 0

	-- Insere as pendências de entrada dos produtos controlados dos últimos 30 dias
	INSERT INTO EST_NF_ENT_IT_EST_SNGPC_PENDENTE
	SELECT
		A.CD_EMP
		, A.CD_FILIAL
		, A.CD_NF
		, A.CD_PROD
		, GETDATE()
	FROM
		EST_NF_ENT INNER JOIN EST_NF_ENT_IT A ON
			EST_NF_ENT.CD_EMP = A.CD_EMP AND
			EST_NF_ENT.CD_FILIAL = A.CD_FILIAL AND
			EST_NF_ENT.CD_NF = A.CD_NF
		INNER JOIN EST_SNGPC_ATUALIZACAO B ON
			A.CD_EMP      = B.CD_EMP
			AND A.CD_PROD = B.CD_PROD
		LEFT JOIN EST_NF_ENT_IT_EST_SNGPC_PENDENTE AS C ON
			A.CD_EMP        = C.CD_EMP
			AND A.CD_FILIAL = C.CD_FILIAL
			AND A.CD_NF     = C.CD_NF
			AND A.CD_PROD   = C.CD_PROD
		LEFT JOIN EST_SNGPC_ENTRADA AS D ON
			A.CD_EMP        = D.CD_EMP
			AND A.CD_FILIAL = D.CD_FILIAL
			AND A.CD_NF     = D.CD_NF
			AND A.CD_PROD   = D.CD_PROD
	WHERE
		B.FLAG_CONTROLADO = 1
		AND B.FLAG_PROCESSADO = 0
		AND EST_NF_ENT.DT_ENT >= DATEADD(DAY, - 30, GETDATE())
		AND C.CD_EMP IS NULL
		AND D.CD_EMP IS NULL

	-- Insere as pendências de saída dos produtos controlados dos últimos 30 dias
	INSERT INTO EST_NF_SAI_IT_EST_SNGPC_PENDENTE
	SELECT
		A.CD_EMP
		, A.CD_FILIAL
		, A.CD_NF
		, A.CD_PROD
		, A.CD_IT
		, GETDATE()
	FROM
		EST_NF_SAI_IT A
		INNER JOIN EST_NF_SAI B ON
			A.CD_EMP        = B.CD_EMP
			AND A.CD_FILIAL = B.CD_FILIAL
			AND A.CD_NF     = B.CD_NF
		INNER JOIN EST_SNGPC_ATUALIZACAO C ON
			A.CD_EMP      = C.CD_EMP
			AND A.CD_PROD = C.CD_PROD
		LEFT JOIN EST_NF_SAI_IT_EST_SNGPC_PENDENTE AS D ON
			A.CD_EMP        = D.CD_EMP
			AND A.CD_FILIAL = D.CD_FILIAL
			AND A.CD_NF     = D.CD_NF
			AND A.CD_PROD   = D.CD_PROD
			AND A.CD_IT     = D.CD_IT
		LEFT JOIN EST_NF_SAI_IT_EST_SNGPC_SAIDA AS E ON
			A.CD_EMP        = E.CD_EMP
			AND A.CD_FILIAL = E.CD_FILIAL
			AND A.CD_NF     = E.CD_NF
			AND A.CD_PROD   = E.CD_PROD
			AND A.CD_IT     = E.CD_IT
	WHERE
		C.FLAG_CONTROLADO = 1
		AND C.FLAG_PROCESSADO = 0
		AND B.DT_EMI_NF >= DATEADD(DAY, - 30, GETDATE())
		AND D.CD_EMP IS NULL
		AND E.CD_EMP IS NULL

	-- Insere as pendências de venda dos produtos controlados dos últimos 30 dias
	INSERT INTO PDV_VD_IT_EST_SNGPC_PENDENTE
	SELECT
		A.CD_EMP
		, A.CD_FILIAL
		, A.CD_VD
		, A.CD_IT
		, GETDATE()
	FROM
		PDV_VD_IT A
		INNER JOIN EST_SNGPC_ATUALIZACAO B ON
			A.CD_EMP      = B.CD_EMP
			AND A.CD_PROD = B.CD_PROD
		LEFT JOIN PDV_VD_IT_EST_SNGPC_PENDENTE AS C ON
			A.CD_EMP        = C.CD_EMP
			AND A.CD_FILIAL = C.CD_FILIAL
			AND A.CD_VD     = C.CD_VD
			AND A.CD_IT     = C.CD_IT
		LEFT JOIN PDV_VD_IT_EST_SNGPC_SAIDA AS D ON
			A.CD_EMP        = D.CD_EMP
			AND A.CD_FILIAL = D.CD_FILIAL
			AND A.CD_VD     = D.CD_VD
			AND A.CD_IT     = D.CD_IT
	WHERE
		B.FLAG_CONTROLADO = 1
		AND B.FLAG_PROCESSADO = 0
		AND A.DT_VD >= DATEADD(DAY, - 30, GETDATE())
		AND C.CD_EMP IS NULL
		AND D.CD_EMP IS NULL

	-- Atualiza os registros processados
	UPDATE
		EST_SNGPC_ATUALIZACAO
	SET
		FLAG_PROCESSADO = 1
