
--IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[P_EST_PROD_EST_TRIB_CONF_GRP_LOTE_APLICAR]') AND type in (N'P', N'PC'))
--DROP PROCEDURE [dbo].[P_EST_PROD_EST_TRIB_CONF_GRP_LOTE_APLICAR]
--GO
--/*
--=======================================================================================
--'Job.................:  
--'Função..............: 
--'Objetivo............: Insert em EST_PROD_EST_TRIB_CONF_GRP
--'Tabelas.............: 
--'Dt Modificação......: 03/01/2023
--'Modificação.........: Adicionando condição de delete caso haja um grupo de tributação com as mesmas condições
--'=======================================================================================
--Tag #A001 - Alteração do codigo  
--Tag #I001 - Inclusão de novo codigo 
--*/
--CREATE PROCEDURE [dbo].[P_EST_PROD_EST_TRIB_CONF_GRP_LOTE_APLICAR](@FLAG_CONSULTAR	INT, 
--																		@FLAG_REFAZ INT,	
--																		@SQL_FILTRO NVARCHAR(MAX), 
--																		@CD_CTR		NVARCHAR(500) = '')
--AS
--BEGIN
--   SET NOCOUNT ON
   
--   DECLARE @SQL_EXEC NVARCHAR(MAX)

--	IF OBJECT_ID('TEMPDB..#TBL_EST_PROD_TRIB_GRP') IS NOT NULL
--		BEGIN
--			DROP TABLE #TBL_EST_PROD_TRIB_GRP
--		END

--   CREATE TABLE  #TBL_EST_PROD_TRIB_GRP (CD_EMP            INT,
--										 CD_PROD           INT,
--										 CD_CTR            INT,
--										 DS_PROD           VARCHAR(200),
--										 NR_NCM            VARCHAR(50),
--										 LISTA_PROD        INT,
--										 LISTA_PROD_NAME   VARCHAR(50))


--	 SET @SQL_EXEC = N'INSERT INTO #TBL_EST_PROD_TRIB_GRP 
--								SELECT 
--									  DISTINCT EST_PROD.CD_EMP, EST_PROD.CD_PROD, 
--									  EST_TRIB_CONF_GRP.CD_CTR AS CD_CTR , 
--												  EST_PROD.DS_PROD, EST_PROD.NR_NCM, EST_PROD.LISTA_PROD,
--												  CASE WHEN EST_PROD.LISTA_PROD = 0 THEN  
--															   ''POSITIVA''
--														WHEN EST_PROD.LISTA_PROD = 1 THEN  
--															   ''NEGATIVA''
--												   WHEN EST_PROD.LISTA_PROD = 2 THEN  
--															   ''NEUTRA''
--														ELSE
--														''NAO USA LISTA''
--												  END AS LISTA_PROD_NAME                                                 
--								FROM EST_PROD    
--									 INNER JOIN EST_PROD_EST_ARV_MERCADOLOGICA ON 
--											  EST_PROD.CD_EMP = EST_PROD_EST_ARV_MERCADOLOGICA.CD_EMP AND
--											  EST_PROD.CD_PROD = EST_PROD_EST_ARV_MERCADOLOGICA.CD_PROD
									  
--									 INNER JOIN EST_TRIB_CONF_GRP_NCM ON 
--											  EST_TRIB_CONF_GRP_NCM.NR_NCM  COLLATE SQL_Latin1_General_CP1_CI_AS       = DBO.F_LIMPA_ZERO_ESQUERDA(EST_PROD.NR_NCM) COLLATE SQL_Latin1_General_CP1_CI_AS
								   
--									 INNER JOIN EST_TRIB_CONF_GRP ON 
--											  EST_TRIB_CONF_GRP_NCM.CD_EMP        = EST_TRIB_CONF_GRP.CD_EMP AND 
--											  EST_TRIB_CONF_GRP.CD_CLASS_FISC = EST_PROD.CD_CLASS_FISC AND                                            
--											  EST_TRIB_CONF_GRP.TP_LISTA      = EST_PROD.LISTA_PROD  
											  
--									 INNER JOIN EST_PROD_EST_TRIB_CLASS_FISC_PRC_REGIAO_FISCAL CLASS_FISC_REGIAO ON 
--											  EST_TRIB_CONF_GRP.CD_EMP            = CLASS_FISC_REGIAO.CD_EMP        AND
--											  EST_TRIB_CONF_GRP.CD_REGIAO_FISCAL  = CLASS_FISC_REGIAO.CD_REGIAO_FISCAL AND 
--											  EST_TRIB_CONF_GRP.CD_CLASS_FISC     = CLASS_FISC_REGIAO.CD_CLASS_FISC  AND
--											  EST_PROD.CD_PROD                    = CLASS_FISC_REGIAO.CD_PROD
													
--								WHERE ' + @SQL_FILTRO

--		EXEC (@SQL_EXEC)

--        SET @SQL_EXEC = N'INSERT INTO #TBL_EST_PROD_TRIB_GRP 
--                                    SELECT 
--                                          DISTINCT EST_PROD.CD_EMP, EST_PROD.CD_PROD, 
--                                          EST_TRIB_CONF_GRP.CD_CTR AS CD_CTR , 
--                                                      EST_PROD.DS_PROD, EST_PROD.NR_NCM, EST_PROD.LISTA_PROD,
--                                                      CASE WHEN EST_PROD.LISTA_PROD = 0 THEN  
--                                                                   ''POSITIVA''
--                                                            WHEN EST_PROD.LISTA_PROD = 1 THEN  
--                                                                   ''NEGATIVA''
--                                                       WHEN EST_PROD.LISTA_PROD = 2 THEN  
--                                                                   ''NEUTRA''
--                                                            ELSE
--                                                            ''NAO USA LISTA''
--                                                      END AS LISTA_PROD_NAME                                                 
--                                    FROM EST_PROD    
--                                         INNER JOIN EST_PROD_EST_ARV_MERCADOLOGICA ON 
--                                                  EST_PROD.CD_EMP = EST_PROD_EST_ARV_MERCADOLOGICA.CD_EMP AND
--                                                  EST_PROD.CD_PROD = EST_PROD_EST_ARV_MERCADOLOGICA.CD_PROD
                                          
--                                         INNER JOIN EST_TRIB_CONF_GRP_NCM ON 
--                                                  EST_TRIB_CONF_GRP_NCM.NR_NCM  COLLATE SQL_Latin1_General_CP1_CI_AS       = EST_PROD.NR_NCM COLLATE SQL_Latin1_General_CP1_CI_AS 
--                                        INNER JOIN EST_TRIB_CONF_GRP ON EST_TRIB_CONF_GRP_NCM.CD_EMP        = EST_TRIB_CONF_GRP.CD_EMP 
--																			  AND EST_TRIB_CONF_GRP.TP_LISTA      = EST_PROD.LISTA_PROD
--																			  AND EST_TRIB_CONF_GRP.CD_CLASS_FISC = EST_PROD.CD_CLASS_FISC
--										LEFT OUTER JOIN #TBL_EST_PROD_TRIB_GRP TEMP ON EST_PROD.CD_EMP = TEMP.CD_EMP
--																					   AND EST_PROD.CD_PROD = TEMP.CD_PROD
--										LEFT OUTER JOIN EST_PROD_EST_TRIB_CLASS_FISC_PRC_REGIAO_FISCAL CLASS_FISC_REGIAO ON 
--																										  EST_TRIB_CONF_GRP.CD_EMP   = CLASS_FISC_REGIAO.CD_EMP  AND
--																										  EST_PROD.CD_PROD           = CLASS_FISC_REGIAO.CD_PROD   
--                                  WHERE TEMP.CD_EMP IS NULL AND CLASS_FISC_REGIAO.CD_EMP IS NULL AND ' + @SQL_FILTRO

--		EXEC (@SQL_EXEC)
---------------------------------------------------------------------------------------------------------       
--		IF @FLAG_CONSULTAR = 1
--		BEGIN
--			SELECT DISTINCT 
--					CD_EMP, 
--					CD_PROD, 
--					DS_PROD, 
--					NR_NCM, 
--					LISTA_PROD, 
--					LISTA_PROD_NAME 
--			FROM #TBL_EST_PROD_TRIB_GRP
--			ORDER BY DS_PROD
--			RETURN;
--		END

--		IF @FLAG_REFAZ = 1
--		BEGIN
--			IF @CD_CTR <> '' 
--			BEGIN
--				DELETE A 
--				FROM 
--					EST_PROD_EST_TRIB_CONF_GRP A
--				WHERE A.CD_CTR  IN (SELECT ID FROM UFD_PRM_IN_STRING(@CD_CTR))
--			END 
--		END 
---------------------------------------------------------------------------------------------------------
--		--DELETE FROM EST_PROD_EST_TRIB_CONF_GRP
--		--WHERE EXISTS (SELECT T.CD_EMP 
--		--					FROM #TBL_EST_PROD_TRIB_GRP T
--		--					WHERE T.CD_EMP           = EST_PROD_EST_TRIB_CONF_GRP.CD_EMP
--		--								AND T.CD_PROD = EST_PROD_EST_TRIB_CONF_GRP.CD_PROD
--		--								AND T.CD_CTR = EST_PROD_EST_TRIB_CONF_GRP.CD_CTR)  
--		-- Tag #A001

--		IF OBJECT_ID('TEMPDB..#DELETE_TMP') IS NOT NULL
--			BEGIN
--				DROP TABLE #DELETE_TMP
--			END 

--		SELECT DISTINCT 
--						 T3.CD_CTR
--						,T3.CD_REGIAO_FISCAL
--						,T3.FLAG_TRIB_DARE
--						,T3.TP_LISTA
--						,T3.CD_CLASS_FISC
--						,T3.CD_EMP
--						,T1.CD_PROD

--		INTO #DELETE_TMP

--		FROM	#TBL_EST_PROD_TRIB_GRP T1
						
--				INNER JOIN EST_TRIB_CONF_GRP T2 (NOLOCK) ON 
--				T2.CD_EMP = T1.CD_EMP 
--				AND T2.CD_CTR = T1.CD_CTR

--				LEFT JOIN EST_TRIB_CONF_GRP T3 (NOLOCK) ON 
--				T3.CD_EMP = T2.CD_EMP 
--				AND T3.CD_REGIAO_FISCAL = T2.CD_REGIAO_FISCAL
--				AND T3.FLAG_TRIB_DARE = T2.FLAG_TRIB_DARE
--				AND T3.TP_LISTA = T2.TP_LISTA
--				AND T3.CD_CLASS_FISC = T2.CD_CLASS_FISC

--		WHERE	T2.CD_EMP = T1.CD_EMP 				
--				AND T3.CD_CTR <> T1.CD_CTR 

--		DELETE 
--		FROM EST_PROD_EST_TRIB_CONF_GRP 
--		WHERE CONCAT(CD_EMP,'-',CD_CTR,'-',CD_PROD) IN (SELECT CONCAT(CD_EMP,'-',CD_CTR,'-',CD_PROD) FROM #DELETE_TMP)
		
--		IF OBJECT_ID('TEMPDB..#DELETE_TMP') IS NOT NULL
--			BEGIN
--				DROP TABLE #DELETE_TMP
--			END 
							
--		INSERT INTO EST_PROD_EST_TRIB_CONF_GRP(CD_EMP,  CD_PROD,  CD_CTR)
--		SELECT DISTINCT 
--              T.CD_EMP, 
--              T.CD_PROD, 
--              T.CD_CTR
--		FROM 
--			#TBL_EST_PROD_TRIB_GRP T
--			LEFT JOIN EST_PROD_EST_TRIB_CONF_GRP GRP_PROD ON
--				T.CD_EMP	= GRP_PROD.CD_EMP AND 
--				T.CD_PROD	= GRP_PROD.CD_PROD AND 
--				T.CD_CTR	= GRP_PROD.CD_CTR
--		--WHERE
--		--	GRP_PROD.CD_EMP IS NULL;

---------------------------------------------------------------------------------------------------------
--END

