CREATE VIEW [dbo].[W_NOTAS_REFERENCIADAS_DEV]
AS  
-- ID ModaSP-6070	- Edson Filenti - #3# - Ajuste ao selecionar Codigo da Filial de origem para o processo de troca nacional. Anteriormente utilizada o campo CODIGO_FILIAL, passará CODIGO_FILIAL_ORIGEM
-- ID 91172			- Rodrigo Souza - #2# - (27/08/2018) - Alterações para melhoria de performance.
-- TP 10622549		- Roberto Beda  - #1# - (11/10/2015) - Correção da clausula WHERE para que retorne as notas com TIPO_ORIGEM 8 (trocas e devoluções do dia).
SELECT DISTINCT   
            CHAVE_NFE = CASE WHEN I.CHAVE_NFE IS NULL THEN NULL ELSE I.CHAVE_NFE END ,  
            CHAVEACESSO =	(SELECT TOP 1 SUBSTRING(M.COD_MUNICIPIO_IBGE,1,2)   
								 FROM LCF_LX_MUNICIPIO M (NOLOCK)   
										INNER JOIN LCF_LX_UF U (NOLOCK) ON U.ID_UF = M.ID_UF    
								 WHERE  U.UF = F.UF AND M.DESC_MUNICIPIO = DBO.FX_REPLACE_CARACTER_ESPECIAL_NFE(DEFAULT,F.CIDADE) ) 
								 
								+ SUBSTRING(CONVERT(CHAR(10),I.EMISSAO,112),3,4) + RTRIM(F.CGC_CPF) 
								
								+ (SELECT RIGHT('0'+RTRIM(ES.NUMERO_MODELO_FISCAL),2) + CASE WHEN SN.COD_SERIE_SINTEGRA IS NOT NULL  THEN RIGHT('00'+RTRIM(CASE WHEN SN.COD_SERIE_SINTEGRA = 'U' OR SN.COD_SERIE_SINTEGRA = 'UN' THEN '0' ELSE SN.COD_SERIE_SINTEGRA END),3) ELSE RIGHT('00'+RTRIM(CASE WHEN SN.SERIE_NF = 'U' OR SN.SERIE_NF = 'UN' THEN '0' ELSE SN.SERIE_NF END),3) END   
									  FROM SERIES_NF SN (NOLOCK)  
										   INNER JOIN CTB_ESPECIE_SERIE ES (NOLOCK) ON SN.ESPECIE_SERIE = ES.ESPECIE_SERIE   
									  WHERE SERIE_NF = I.SERIE_NF ) 
									  
								+ RIGHT('00000000'+RTRIM(A.NF_NUMERO),9)
                            ,ISNULL(CONVERT(VARCHAR(40), H.NOME_CLIFOR)
                            ,G.CLIENTE_VAREJO) AS FILIAL
                            ,A.SERIE_NF AS SERIE	--#2# 
                            ,A.NF_NUMERO AS NF		--#2# 
                            ,'S' AS ORIGEM_ENTRADA_SAIDA
                            , NF_ORIGEM.NF_ORIGEM
                            , NF_ORIGEM.SERIE_NF_ORIGEM
                            , NF_ORIGEM.MODELO_FISCAL  
                            , NF_ORIGEM.NUMERO_ECF  
                            , NF_ORIGEM.NUMERO_COO
            
            FROM   
                  LOJA_NOTA_FISCAL_ITEM A (NOLOCK)  
            LEFT JOIN LOJA_NOTA_FISCAL B (NOLOCK)	ON B.NF_NUMERO = A.NF_NUMERO AND B.SERIE_NF = A.SERIE_NF AND B.CODIGO_FILIAL = A.CODIGO_FILIAL  
            LEFT JOIN LOJAS_VAREJO E ON E.CODIGO_FILIAL = A.CODIGO_FILIAL   
            LEFT JOIN CADASTRO_CLI_FOR F ON E.FILIAL = F.NOME_CLIFOR   
                  LEFT JOIN CLIENTES_VAREJO G (NOLOCK) ON B.CODIGO_CLIENTE = G.CODIGO_CLIENTE   
                  LEFT JOIN CADASTRO_CLI_FOR H (NOLOCK) ON B.COD_CLIFOR = H.COD_CLIFOR   
             INNER JOIN (SELECT F.CODIGO_FILIAL, F.NF_NUMERO AS NF_ORIGEM, F.SERIE_NF AS SERIE_NF_ORIGEM,  F.CHAVE_NFE  AS CHAVE_NFE_ORIGEM, 
								A.NUMERO_FISCAL_TROCA AS NF_TROCA, 
								A.SERIE_NF_ENTRADA AS SERIE_NF_TROCA
								,'2D' AS MODELO_FISCAL, ISNULL(E.ID_EQUIPAMENTO, 1) AS NUMERO_ECF , CONVERT(Int, E.NUMERO_CUPOM_FISCAL) AS NUMERO_COO  
							FROM 
								LOJA_VENDA_PGTO A
								INNER JOIN LOJA_VENDA B ON A.CODIGO_FILIAL = B.CODIGO_FILIAL AND A.TERMINAL = B.TERMINAL AND A.LANCAMENTO_CAIXA = B.LANCAMENTO_CAIXA 
								--#2##3#  Substituição por cross apply
								CROSS APPLY (	SELECT TOP 1 CODIGO_FILIAL_ORIGEM, DATA_VENDA_ORIGEM, TICKET_ORIGEM
												FROM LOJA_VENDA_TROCA_ORIGEM CA WHERE CA.CODIGO_FILIAL = B.CODIGO_FILIAL AND CA.DATA_VENDA = B.DATA_VENDA 
												AND CA.TICKET = B.TICKET 
												AND CA.TICKET <> CA.TICKET_ORIGEM ) AS C
								INNER JOIN LOJA_VENDA D ON D.CODIGO_FILIAL = C.CODIGO_FILIAL_ORIGEM AND D.DATA_VENDA = C.DATA_VENDA_ORIGEM AND D.TICKET = C.TICKET_ORIGEM 
								INNER JOIN LOJA_VENDA_PGTO E ON E.CODIGO_FILIAL = D.CODIGO_FILIAL AND E.TERMINAL = D.TERMINAL AND E.LANCAMENTO_CAIXA = D.LANCAMENTO_CAIXA 
								INNER JOIN LOJA_NOTA_FISCAL F ON F.CODIGO_FILIAL = E.CODIGO_FILIAL AND F.NF_NUMERO = E.NUMERO_FISCAL_VENDA AND F.SERIE_NF = E.SERIE_NF_SAIDA AND F.STATUS_NFE = '5'
						 ) AS NF_ORIGEM ON NF_ORIGEM.NF_TROCA = a.NF_NUMERO AND NF_ORIGEM.SERIE_NF_TROCA = a.SERIE_NF --#2# : Alteração de B.NF_NUMERO e B.SERIE_NF para A.NF_NUMERO e A.SERIE_NF
				
			INNER JOIN LOJA_NOTA_FISCAL I ON I.CODIGO_FILIAL = NF_ORIGEM.CODIGO_FILIAL AND I.NF_NUMERO = NF_ORIGEM.NF_ORIGEM AND I.SERIE_NF = NF_ORIGEM.SERIE_NF_ORIGEM
        WHERE   
		A.NF_NUMERO IS NOT NULL AND	 B.TIPO_ORIGEM IN (2, 8) AND B.RECEBIMENTO = 1	-- #1#
