Guest User

Untitled

a guest
Mar 3rd, 2020
153
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DECLARE @Latitude FLOAT = {{input.lat}}
  2. DECLARE @Longitude FLOAT = {{input.lng}}
  3. DECLARE @Radius FLOAT = {{input.radius}}
  4. DECLARE @TpoPrdCodigo INT = {{input.product}}
  5.  
  6. /**************************** DECLARAÇÃO DE VARIAVEIS E TABELAS ****************************/
  7. DECLARE @GestaoFrota CHAR(1) = NULL
  8.  
  9.  
  10. DECLARE @TEMP_FONE TABLE
  11. (
  12. Codigoestabelecimento INT
  13. , Telefone VARCHAR(50)
  14. )
  15.  
  16. DECLARE @TEMP_PRODUTO TABLE
  17. (
  18. Codigoproduto INT
  19. , Nomeproduto VARCHAR(250)
  20. )
  21.  
  22. /**************************** AGRUPAR PRODUTOS ****************************/
  23. IF ISNULL(@TpoPrdCodigo, 0) IN(-4, 0) -- Todos os Produtos /Correspondente Bancário
  24. BEGIN
  25. INSERT INTO @TEMP_PRODUTO
  26. SELECT
  27. Tpoprdcodigo
  28. , Nome
  29. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  30. WHERE Status = 'A'
  31. AND Empresaorigem IS NOT NULL
  32. END
  33.  
  34. IF @TpoPrdCodigo = 62 -- Alimentação
  35. BEGIN
  36. INSERT INTO @TEMP_PRODUTO
  37. SELECT
  38. Tpoprdcodigo
  39. , Nome
  40. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  41. WHERE Tp.Tpoprdcodigo IN
  42. ( 62 -- Alimentação Up Brasil
  43. , 78 -- UP PLAN Alimentação
  44. , 80 -- Vale Mais Alimentação
  45. , 82 -- Cesta Básica Up Brasil
  46. , 87 -- Alimentação Up Não Pat
  47. , 95 -- Up Valemais
  48. )
  49. END
  50.  
  51.  
  52. IF @TpoPrdCodigo = 6 -- Convênio
  53. BEGIN
  54. INSERT INTO @TEMP_PRODUTO
  55. SELECT
  56. Tpoprdcodigo
  57. , Nome
  58. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  59. WHERE Tp.Tpoprdcodigo IN( 6 -- Convênio (UP GO)
  60. )
  61. END
  62.  
  63. IF @TpoPrdCodigo = 63 -- Refeição
  64. BEGIN
  65. INSERT INTO @TEMP_PRODUTO
  66. SELECT
  67. Tpoprdcodigo
  68. , Nome
  69. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  70. WHERE Tp.Tpoprdcodigo IN
  71. ( 63 -- Refeição Up Brasil
  72. , 72 -- Voucher Refeição Up Brasil
  73. , 79 -- UP PLAN Refeição
  74. , 81 -- Vale Mais Refeição
  75. , 88 -- Refeição Up Não Pat
  76. )
  77. END
  78.  
  79. IF @TpoPrdCodigo = 59 -- Frete Eletrônico
  80. BEGIN
  81. INSERT INTO @TEMP_PRODUTO
  82. SELECT
  83. Tpoprdcodigo
  84. , Nome
  85. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  86. WHERE Tp.Tpoprdcodigo IN(59 -- Frete Eletrônico
  87. )
  88. END
  89.  
  90. IF @TpoPrdCodigo = 60 -- Gestão de Frota
  91. BEGIN
  92. INSERT INTO @TEMP_PRODUTO
  93. SELECT
  94. Tpoprdcodigo
  95. , Nome
  96. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  97. WHERE Tp.Tpoprdcodigo IN( 6 -- Convênio
  98. , 60 -- Gestão de Frota
  99. , 94 -- Up Valemais Gestão de Frota
  100. )
  101. SET @GestaoFrota = 'S'
  102. END
  103.  
  104. IF @TpoPrdCodigo = 64 -- Cultura Up Brasil
  105. BEGIN
  106. INSERT INTO @TEMP_PRODUTO
  107. SELECT
  108. Tpoprdcodigo
  109. , Nome
  110. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  111. WHERE Tp.Tpoprdcodigo IN(64 -- Cultura Up Brasil
  112. )
  113. END
  114.  
  115. IF @TpoPrdCodigo = 66 -- NATAL
  116. BEGIN
  117. INSERT INTO @TEMP_PRODUTO
  118. SELECT
  119. Tpoprdcodigo
  120. , Nome
  121. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  122. WHERE Tp.Tpoprdcodigo IN( 66 -- Natal Up Brasil
  123. ,90 --Vale Mais Natal
  124. )
  125. END
  126.  
  127. IF @TpoPrdCodigo = 67 -- Presente
  128. BEGIN
  129. INSERT INTO @TEMP_PRODUTO
  130. SELECT
  131. Tpoprdcodigo
  132. , Nome
  133. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  134. WHERE Tp.Tpoprdcodigo IN( 67 -- Presente Up Brasil
  135. ,85 -- UP PLAN Presente
  136. ,89 -- VALE MAIS PRESENTE
  137. )
  138. END
  139.  
  140. IF @TpoPrdCodigo = 68 -- Premiação
  141. BEGIN
  142. INSERT INTO @TEMP_PRODUTO
  143. SELECT
  144. Tpoprdcodigo
  145. , Nome
  146. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  147. WHERE Tp.Tpoprdcodigo IN( 68 -- Premiação Up Brasil
  148. ,84 -- UP PLAN Premiação
  149. )
  150. END
  151.  
  152. IF @TpoPrdCodigo = 73 -- Combustível Up Brasil
  153. BEGIN
  154. INSERT INTO @TEMP_PRODUTO
  155. SELECT
  156. Tpoprdcodigo
  157. , Nome
  158. FROM Processadora.Dbo.Tiposprodutos Tp WITH (Nolock)
  159. WHERE Tp.Tpoprdcodigo IN( 73 -- Combustível Up Brasil
  160. , 83 -- UP PLAN Combustível
  161. , 91 -- VALE MAIS COMBUSTIVEL
  162. )
  163. END
  164.  
  165. /**************************** BUSCA DE ESTABELECIMENTO DE ACORDO COM OS FILTROS ****************************/
  166. SELECT
  167. E.Numero AS Codigo
  168. , E.Cnpj
  169. , LTRIM(RTRIM(ISNULL(E.Nome, E.Razaosocial))) AS Nome
  170. , CASE E.Status
  171. WHEN 'A' THEN 'Ativo'
  172. WHEN 'B' THEN 'Bloqueado'
  173. ELSE 'Cancelado'
  174. END AS Status
  175. , LTRIM(RTRIM(E.Endereco))+', '+LTRIM(RTRIM(E.Bairro))+', '+LTRIM(RTRIM(E.Cidade))+' - '+LTRIM(RTRIM(E.Estado)) AS Endereco
  176. , 6371 * ACOS(CASE
  177. WHEN COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat)) > 1 THEN 1
  178. WHEN COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat)) < 0 THEN 0
  179. ELSE COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat))
  180. END) AS Distancia
  181. , Lat AS Latitude
  182. , Lng AS Longitude
  183. INTO
  184. #Temp
  185. FROM Processadora.Dbo.Estabelecimentos E WITH (Nolock)
  186. WHERE E.Lat IS NOT NULL
  187. AND E.Lat BETWEEN @Latitude - @Radius * 111.045 AND @Latitude + @Radius * 111.045
  188. AND E.Lng BETWEEN @Longitude - @Radius * 111.045 * COS(RADIANS(@Latitude)) AND @Longitude + @Radius * 111.045 * COS(RADIANS(@Latitude))
  189. AND NOT EXISTS
  190. (
  191. SELECT
  192. *
  193. FROM Acquirer.Dbo.Historicomigracaoestabelecimento H WITH (Nolock)
  194. WHERE E.Numero = H.Codigoestabelecimento
  195. )
  196. AND EXISTS
  197. (
  198. SELECT
  199. *
  200. FROM Processadora.Dbo.Estabelecimentostiposprodutos Etp WITH (Nolock)
  201. INNER JOIN @TEMP_PRODUTO Tp ON Etp.Tpoprdcodigo = Tp.Codigoproduto and Etp.Status = 'A'
  202. WHERE Etp.Estcodigo = E.Estcodigo
  203. )
  204. UNION ALL
  205. SELECT
  206. E.Codigoestabelecimento AS Codigo
  207. , E.Cnpj
  208. , LTRIM(RTRIM(ISNULL(E.Nome, E.Razaosocial))) AS Nome
  209. , Es.Descricao AS Status
  210. , LTRIM(RTRIM(Ee.Logradouro+', '+Ee.Numero))+', '+LTRIM(RTRIM(Ee.Bairro))+', '+LTRIM(RTRIM(Ee.Cidade))+' - '+LTRIM(RTRIM(Ee.Uf)) AS Endereco
  211. , 6371 * ACOS(CASE
  212. WHEN COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat)) > 1 THEN 1
  213. WHEN COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat)) < 0 THEN 0
  214. ELSE COS(RADIANS(@Latitude)) * COS(RADIANS(E.Lat)) * COS(RADIANS(E.Lng) - RADIANS(@Longitude)) + SIN(RADIANS(@Latitude)) * SIN(RADIANS(E.Lat))
  215. END) AS Distancia
  216. , Lat AS Latitude
  217. , Lng AS Longitude
  218. FROM Acquirer.Dbo.Estabelecimento E WITH (Nolock)
  219. INNER JOIN Acquirer.Dbo.Estabelecimentoendereco Ee WITH (Nolock) ON Ee.Codigoestabelecimento = E.Codigoestabelecimento
  220. AND Codigotipoendereco = 1
  221. INNER JOIN Acquirer.Dbo.Entidadestatus Es WITH (Nolock) ON E.Codigoentidadestatus = Es.Codigoentidadestatus
  222. WHERE E.Lat IS NOT NULL
  223. AND E.Lat BETWEEN @Latitude - @Radius * 111.045 AND @Latitude + @Radius * 111.045
  224. AND E.Lng BETWEEN @Longitude - @Radius * 111.045 * COS(RADIANS(@Latitude)) AND @Longitude + @Radius * 111.045 * COS(RADIANS(@Latitude))
  225. AND EXISTS
  226. (
  227. SELECT
  228. *
  229. FROM Acquirer.Dbo.Estabelecimentotipoproduto Etp WITH (Nolock)
  230. INNER JOIN @TEMP_PRODUTO Tp ON Etp.Codigoproduto = Tp.Codigoproduto and Etp.Codigoprodutostatus = 1
  231. WHERE Etp.Codigoestabelecimento = E.Codigoestabelecimento
  232. )
  233.  
  234. /**************************** VERIFICAÇÃO DO PRODUTO GESTÃO DE FROTA ****************************/
  235. IF @TpoPrdCodigo = 60 -- GESTÃO DE FROTA
  236. BEGIN
  237. DELETE T
  238. FROM #TEMP T
  239. WHERE
  240. NOT EXISTS
  241. (
  242. SELECT
  243. *
  244. FROM Policard_603078.Dbo.Fornecedor F WITH (Nolock)
  245. WHERE F.Codigo_Novo = T.Codigo
  246. AND ISNULL(F.Stshabilitafrota, 'N') = @GestaoFrota
  247. AND NOT EXISTS
  248. (
  249. SELECT
  250. *
  251. FROM Acquirer.Dbo.Historicomigracaoestabelecimento H WITH (Nolock)
  252. WHERE F.Codigo_Novo = H.Codigoestabelecimento
  253. )
  254. )
  255. END
  256.  
  257. /**************************** VERIFICAÇÃO CORRESPONDENTE BANCÁRIO ****************************/
  258. IF @TpoPrdCodigo = -4 -- Correspondente Bancário
  259. BEGIN
  260. DELETE T
  261. FROM #TEMP T
  262. WHERE
  263. NOT EXISTS
  264. (
  265. -- CORRESPONDENTE BANCÁRIO BRADESCO ACQUIRER OLD
  266. SELECT
  267. E.Numero AS Codigoestabelecimento
  268. FROM Processadora.dbo.Estabelecimentos E WITH (Nolock)
  269. WHERE E.Codprospeccao > 0
  270. AND E.Codstatuscb = 1 -- CB - Implantado
  271. AND T.Codigo = E.Numero
  272. AND NOT EXISTS
  273. (
  274. SELECT
  275. *
  276. FROM Acquirer.Dbo.Historicomigracaoestabelecimento H WITH (Nolock)
  277. WHERE E.Numero = H.Codigoestabelecimento
  278. )
  279. UNION ALL
  280. -- CORRESPONDENTE BANCÁRIO ITAÚ ACQUIRER OLD
  281. SELECT
  282. E.Numero AS Codigoestabelecimento
  283. FROM Processadora.dbo.Estabelecimentos E WITH (Nolock)
  284. INNER JOIN Processadora.dbo.Cb_Dadoscorrespondente AS Cdc WITH (Nolock) ON E.Estcodigo = Cdc.Estcodigo
  285. AND Cdc.Statuscb = 1 -- CB - Implantado
  286. WHERE T.Codigo = E.Numero
  287. AND NOT EXISTS
  288. (
  289. SELECT
  290. *
  291. FROM Acquirer.Dbo.Historicomigracaoestabelecimento H WITH (Nolock)
  292. WHERE E.Numero = H.Codigoestabelecimento
  293. )
  294. UNION ALL
  295. -- CORRESPONDENTE BANCÁRIO BRADESCO ACQUIRER NEW
  296. SELECT
  297. Ecb.Codigoestabelecimento
  298. FROM Acquirer.Dbo.Estabelecimentocorrespondentebancariobradesco Ecb WITH (Nolock)
  299. WHERE Ecb.Codigoestabelecimento = T.Codigo
  300. AND Ecb.Codigostatuscorrespondentebancario = 1 -- CB - Implantado
  301. UNION ALL
  302. -- CORRESPONDENTE BANCÁRIO ITAÚ ACQUIRER NEW
  303. SELECT
  304. Eci.Codigoestabelecimento
  305. FROM Acquirer.Dbo.Estabelecimentocorrespondentebancarioitau Eci WITH (Nolock)
  306. WHERE Eci.Codigoestabelecimento = T.Codigo
  307. AND Eci.Codigostatuscorrespondentebancario = 1 -- CB - Implantado
  308. )
  309. END
  310.  
  311. SELECT
  312. Codigo
  313. , Cnpj
  314. , Nome
  315. , Status
  316. , Endereco
  317. , Distancia
  318. , Latitude
  319. , Longitude
  320. , ROW_NUMBER() OVER(ORDER BY Est.Distancia) AS Rnumber
  321. FROM #TEMP Est
  322. WHERE Est.Distancia <= @Radius
  323. GROUP BY
  324. Codigo
  325. , Cnpj
  326. , Nome
  327. , Status
  328. , Endereco
  329. , Distancia
  330. , Latitude
  331. , Longitude
  332.  
  333. DROP TABLE #TEMP
RAW Paste Data