Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE @Latitude FLOAT = {{input.lat}}
- DECLARE @Longitude FLOAT = {{input.lng}}
- DECLARE @Radius FLOAT = {{input.radius}}
- DECLARE @TpoPrdCodigo INT = {{input.product}}
- /**************************** DECLARAÇÃO DE VARIAVEIS E TABELAS ****************************/
- DECLARE @GestaoFrota CHAR(1) = NULL
- DECLARE @TEMP_FONE TABLE
- (
- Codigoestabelecimento INT
- , Telefone VARCHAR(50)
- )
- DECLARE @TEMP_PRODUTO TABLE
- (
- Codigoproduto INT
- , Nomeproduto VARCHAR(250)
- )
- /**************************** AGRUPAR PRODUTOS ****************************/
- IF ISNULL(@TpoPrdCodigo, 0) IN(-4, 0) -- Todos os Produtos /Correspondente Bancário
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Status = 'A'
- AND Empresaorigem IS NOT NULL
- END
- IF @TpoPrdCodigo = 62 -- Alimentação
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN
- ( 62 -- Alimentação Up Brasil
- , 78 -- UP PLAN Alimentação
- , 80 -- Vale Mais Alimentação
- , 82 -- Cesta Básica Up Brasil
- , 87 -- Alimentação Up Não Pat
- , 95 -- Up Valemais
- )
- END
- IF @TpoPrdCodigo = 6 -- Convênio
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN( 6 -- Convênio (UP GO)
- )
- END
- IF @TpoPrdCodigo = 63 -- Refeição
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN
- ( 63 -- Refeição Up Brasil
- , 72 -- Voucher Refeição Up Brasil
- , 79 -- UP PLAN Refeição
- , 81 -- Vale Mais Refeição
- , 88 -- Refeição Up Não Pat
- )
- END
- IF @TpoPrdCodigo = 59 -- Frete Eletrônico
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN(59 -- Frete Eletrônico
- )
- END
- IF @TpoPrdCodigo = 60 -- Gestão de Frota
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN( 6 -- Convênio
- , 60 -- Gestão de Frota
- , 94 -- Up Valemais Gestão de Frota
- )
- SET @GestaoFrota = 'S'
- END
- IF @TpoPrdCodigo = 64 -- Cultura Up Brasil
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN(64 -- Cultura Up Brasil
- )
- END
- IF @TpoPrdCodigo = 66 -- NATAL
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN( 66 -- Natal Up Brasil
- ,90 --Vale Mais Natal
- )
- END
- IF @TpoPrdCodigo = 67 -- Presente
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN( 67 -- Presente Up Brasil
- ,85 -- UP PLAN Presente
- ,89 -- VALE MAIS PRESENTE
- )
- END
- IF @TpoPrdCodigo = 68 -- Premiação
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN( 68 -- Premiação Up Brasil
- ,84 -- UP PLAN Premiação
- )
- END
- IF @TpoPrdCodigo = 73 -- Combustível Up Brasil
- BEGIN
- INSERT INTO @TEMP_PRODUTO
- SELECT
- Tpoprdcodigo
- , Nome
- FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
- WHERE Tp.Tpoprdcodigo IN( 73 -- Combustível Up Brasil
- , 83 -- UP PLAN Combustível
- , 91 -- VALE MAIS COMBUSTIVEL
- )
- END
- /**************************** BUSCA DE ESTABELECIMENTO DE ACORDO COM OS FILTROS ****************************/
- SELECT
- E.Numero AS Codigo
- , E.Cnpj
- , LTRIM(RTRIM(ISNULL(E.Nome, E.Razaosocial))) AS Nome
- , CASE E.Status
- WHEN 'A' THEN 'Ativo'
- WHEN 'B' THEN 'Bloqueado'
- ELSE 'Cancelado'
- END AS Status
- , LTRIM(RTRIM(E.Endereco))+', '+LTRIM(RTRIM(E.Bairro))+', '+LTRIM(RTRIM(E.Cidade))+' - '+LTRIM(RTRIM(E.Estado)) AS Endereco
- , 6371 * ACOS(CASE
- WHEN COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat)) > 1 THEN 1
- WHEN COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat)) < 0 THEN 0
- ELSE COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat))
- END) AS Distancia
- , Lat AS Latitude
- , Lng AS Longitude
- INTO
- #Temp
- FROM Processadora.Dbo.Estabelecimentos E WITH (Nolock)
- WHERE E.Lat IS NOT NULL
- AND E.Lat BETWEEN @Latitude - @Radius * 111.045 AND @Latitude + @Radius * 111.045
- AND E.Lng BETWEEN @Longitude - @Radius * 111.045 * COS(RADIANS(@Latitude)) AND @Longitude + @Radius * 111.045 * COS(RADIANS(@Latitude))
- AND NOT EXISTS
- (
- SELECT
- *
- FROM Acquirer.Dbo.Historicomigracaoestabelecimento H WITH (Nolock)
- WHERE E.Numero = H.Codigoestabelecimento
- )
- AND EXISTS
- (
- SELECT
- *
- FROM Processadora.Dbo.Estabelecimentostiposprodutos Etp WITH (Nolock)
- INNER JOIN @TEMP_PRODUTO Tp ON Etp.Tpoprdcodigo = Tp.Codigoproduto and Etp.Status = 'A'
- WHERE Etp.Estcodigo = E.Estcodigo
- )
- UNION ALL
- SELECT
- E.Codigoestabelecimento AS Codigo
- , E.Cnpj
- , LTRIM(RTRIM(ISNULL(E.Nome, E.Razaosocial))) AS Nome
- , Es.Descricao AS Status
- , LTRIM(RTRIM(Ee.Logradouro+', '+Ee.Numero))+', '+LTRIM(RTRIM(Ee.Bairro))+', '+LTRIM(RTRIM(Ee.Cidade))+' - '+LTRIM(RTRIM(Ee.Uf)) AS Endereco
- , 6371 * ACOS(CASE
- WHEN COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat)) > 1 THEN 1
- WHEN COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat)) < 0 THEN 0
- ELSE COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat))
- END) AS Distancia
- , Lat AS Latitude
- , Lng AS Longitude
- FROM Acquirer.Dbo.Estabelecimento E WITH (Nolock)
- INNER JOIN Acquirer.Dbo.Estabelecimentoendereco Ee WITH (Nolock) ON Ee.Codigoestabelecimento = E.Codigoestabelecimento
- AND Codigotipoendereco = 1
- INNER JOIN Acquirer.Dbo.Entidadestatus Es WITH (Nolock) ON E.Codigoentidadestatus = Es.Codigoentidadestatus
- WHERE E.Lat IS NOT NULL
- AND E.Lat BETWEEN @Latitude - @Radius * 111.045 AND @Latitude + @Radius * 111.045
- AND E.Lng BETWEEN @Longitude - @Radius * 111.045 * COS(RADIANS(@Latitude)) AND @Longitude + @Radius * 111.045 * COS(RADIANS(@Latitude))
- AND EXISTS
- (
- SELECT
- *
- FROM Acquirer.Dbo.Estabelecimentotipoproduto Etp WITH (Nolock)
- INNER JOIN @TEMP_PRODUTO Tp ON Etp.Codigoproduto = Tp.Codigoproduto and Etp.Codigoprodutostatus = 1
- WHERE Etp.Codigoestabelecimento = E.Codigoestabelecimento
- )
- /**************************** VERIFICAÇÃO DO PRODUTO GESTÃO DE FROTA ****************************/
- IF @TpoPrdCodigo = 60 -- GESTÃO DE FROTA
- BEGIN
- DELETE T
- FROM #TEMP T
- WHERE
- NOT EXISTS
- (
- SELECT
- *
- FROM Policard_603078.Dbo.Fornecedor F WITH (Nolock)
- WHERE F.Codigo_Novo = T.Codigo
- AND ISNULL(F.Stshabilitafrota, 'N') = @GestaoFrota
- AND NOT EXISTS
- (
- SELECT
- *
- FROM Acquirer.Dbo.Historicomigracaoestabelecimento H WITH (Nolock)
- WHERE F.Codigo_Novo = H.Codigoestabelecimento
- )
- )
- END
- /**************************** VERIFICAÇÃO CORRESPONDENTE BANCÁRIO ****************************/
- IF @TpoPrdCodigo = -4 -- Correspondente Bancário
- BEGIN
- DELETE T
- FROM #TEMP T
- WHERE
- NOT EXISTS
- (
- -- CORRESPONDENTE BANCÁRIO BRADESCO ACQUIRER OLD
- SELECT
- E.Numero AS Codigoestabelecimento
- FROM Processadora.dbo.Estabelecimentos E WITH (Nolock)
- WHERE E.Codprospeccao > 0
- AND E.Codstatuscb = 1 -- CB - Implantado
- AND T.Codigo = E.Numero
- AND NOT EXISTS
- (
- SELECT
- *
- FROM Acquirer.Dbo.Historicomigracaoestabelecimento H WITH (Nolock)
- WHERE E.Numero = H.Codigoestabelecimento
- )
- UNION ALL
- -- CORRESPONDENTE BANCÁRIO ITAÚ ACQUIRER OLD
- SELECT
- E.Numero AS Codigoestabelecimento
- FROM Processadora.dbo.Estabelecimentos E WITH (Nolock)
- INNER JOIN Processadora.dbo.Cb_Dadoscorrespondente AS Cdc WITH (Nolock) ON E.Estcodigo = Cdc.Estcodigo
- AND Cdc.Statuscb = 1 -- CB - Implantado
- WHERE T.Codigo = E.Numero
- AND NOT EXISTS
- (
- SELECT
- *
- FROM Acquirer.Dbo.Historicomigracaoestabelecimento H WITH (Nolock)
- WHERE E.Numero = H.Codigoestabelecimento
- )
- UNION ALL
- -- CORRESPONDENTE BANCÁRIO BRADESCO ACQUIRER NEW
- SELECT
- Ecb.Codigoestabelecimento
- FROM Acquirer.Dbo.Estabelecimentocorrespondentebancariobradesco Ecb WITH (Nolock)
- WHERE Ecb.Codigoestabelecimento = T.Codigo
- AND Ecb.Codigostatuscorrespondentebancario = 1 -- CB - Implantado
- UNION ALL
- -- CORRESPONDENTE BANCÁRIO ITAÚ ACQUIRER NEW
- SELECT
- Eci.Codigoestabelecimento
- FROM Acquirer.Dbo.Estabelecimentocorrespondentebancarioitau Eci WITH (Nolock)
- WHERE Eci.Codigoestabelecimento = T.Codigo
- AND Eci.Codigostatuscorrespondentebancario = 1 -- CB - Implantado
- )
- END
- SELECT
- Codigo
- , Cnpj
- , Nome
- , Status
- , Endereco
- , Distancia
- , Latitude
- , Longitude
- , ROW_NUMBER() OVER(ORDER BY Est.Distancia) AS Rnumber
- FROM #TEMP Est
- WHERE Est.Distancia <= @Radius
- GROUP BY
- Codigo
- , Cnpj
- , Nome
- , Status
- , Endereco
- , Distancia
- , Latitude
- , Longitude
- DROP TABLE #TEMP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement