Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.59 KB | None | 0 0
  1. with filtros as (
  2.  
  3. select ? as vendedor
  4. , COALESCE(CAST(COALESCE(NULLIF(?, ''), '1900-01-01 00:00:00') AS TIMESTAMP) , null) as datainicial
  5. , COALESCE(CAST(COALESCE(NULLIF(?, ''), '3900-01-01 00:00:00') AS TIMESTAMP) , null) as datafinal
  6. , ? as filial
  7. )
  8. , ban as (
  9.  
  10. select distinct on (df.pkdocumentofiscal) df.pkdocumentofiscal, vv.fkvendedor as pkvendedor, SUM(round(cast(pv.valor as numeric), 2)) over (partition by df.pkdocumentofiscal) as valor, ban.numero, ban.nome, tp.nome as tipopagamento
  11. from documentofiscal df
  12. left outer join vendavendedor vv on (df.fkvenda = vv.fkvenda)
  13. left outer join parcelavenda pv on (df.fkvenda = pv.fkvenda and pv.status not in (999, 10, 1102, 1101, 7963)
  14. )
  15. left outer join conta cont on (cont.pkconta = pv.fkconta)
  16. left outer join banco ban on (cont.fkbanco = ban.pkbanco)
  17. LEFT OUTER JOIN TipoPagamento AS tp ON (pv.fkTipoPagamento = tp.pkTipoPagamento)
  18.  
  19.  
  20. )
  21.  
  22. , dfv as (
  23.  
  24. select distinct df.pkdocumentofiscal, sum (CAST(COALESCE(dfi.valorTotalGeral, 0)
  25. - ( CASE WHEN dfi.retemPIS THEN COALESCE(dfi.pisValor, 0) ELSE 0 END )
  26. - ( CASE WHEN dfi.retemIssqn THEN COALESCE(dfi.issqnValor, 0) ELSE 0 END )
  27. - ( CASE WHEN dfi.retemCSLL THEN COALESCE(dfi.CSLLvalor, 0) ELSE 0 END )
  28. - ( CASE WHEN dfi.retemIR THEN COALESCE(dfi.IRvalor, 0) ELSE 0 END )
  29. - ( CASE WHEN dfi.retemCpom THEN COALESCE(dfi.CpomVALOR, 0) ELSE 0 END )
  30. - ( CASE WHEN dfi.retemCofins THEN COALESCE(dfi.CofinsVALOR, 0) ELSE 0 END )
  31.  
  32.  
  33.  
  34. as numeric ))
  35. + COALESCE(dfp.totalicmsstfcpvalor, 0)
  36.  
  37. as valor
  38. , sum (CAST(COALESCE(dfi.valorTotalGeral, 0)
  39. - ( CASE WHEN dfi.retemPIS THEN COALESCE(dfi.pisValor, 0) ELSE 0 END )
  40. - ( CASE WHEN dfi.retemIssqn THEN COALESCE(dfi.issqnValor, 0) ELSE 0 END )
  41. - ( CASE WHEN dfi.retemCSLL THEN COALESCE(dfi.CSLLvalor, 0) ELSE 0 END )
  42. - ( CASE WHEN dfi.retemIR THEN COALESCE(dfi.IRvalor, 0) ELSE 0 END )
  43. - ( CASE WHEN dfi.retemCpom THEN COALESCE(dfi.CpomVALOR, 0) ELSE 0 END )
  44. - ( CASE WHEN dfi.retemCofins THEN COALESCE(dfi.CofinsVALOR, 0) ELSE 0 END )
  45.  
  46. as numeric ))
  47. + COALESCE(dfp.totalicmsstfcpvalor, 0)
  48.  
  49. as valorDesconto
  50. from documentofiscal df
  51. left outer join documentofiscalitem dfi on (dfi.fkdocumentofiscal = df.pkdocumentofiscal and dfi.status not in (999, 10))
  52. left outer join documentofiscalproduto dfp on (dfp.pkdocumentofiscalproduto = df.fkdocumentofiscalproduto)
  53.  
  54. group by df.pkdocumentofiscal, COALESCE(dfp.totalicmsstfcpvalor, 0)
  55.  
  56.  
  57. )
  58. , e as (
  59. select v.pkvendedor, ve.fkpessoa, ve.pkvendedor as pkvendedorequipe
  60. FROM comissao.comissao c
  61. left outer join comissao.equipecomissao f on (f.comissao_id = c.id and f.status = 0)
  62. INNER join vendedor v on (cast(v.pkvendedor as varchar) = c.vendedor_efk)
  63. INNER join vendedor ve on (cast(ve.pkvendedor as varchar) = f.vendedor_efk)
  64. where c.status = 0
  65. AND f.status = 0
  66. )
  67.  
  68. , totaldf as (
  69. select distinct rank () over (partition by ban.pkvendedor, df.pkdocumentofiscal order by ban.valor) as r ,
  70. df.numero as "Numero"
  71. , COALESCE(pf.nome, pj.razaosocial) as "Cliente"
  72. , fkDestXMun as idcidade
  73. , ban.pkvendedor
  74. , ban.valor AS VALOR
  75.  
  76. from vendedor v
  77.  
  78. left outer join e ef on (ef.pkvendedor = v.pkvendedor )
  79. inner join ban ban on ((v.pkvendedor = ban.pkvendedor or ef.pkvendedorequipe = ban.pkvendedor) )
  80. left outer join e e on (e.pkvendedorequipe = ban.pkvendedor and v.pkvendedor <> e.pkvendedor)
  81. inner join documentofiscal df on (ban.pkdocumentofiscal = df.pkdocumentofiscal)
  82. LEFT OUTER JOIN dfv dfv ON (dfv.pkdocumentofiscal = df.pkdocumentofiscal)
  83. LEFT OUTER JOIN Filial fi ON (fi.pkfilial = df.fkfilial)
  84. LEFT OUTER JOIN Pessoa pe ON (pe.pkpessoa = df.fkDestinatario)
  85. LEFT OUTER JOIN Filial f ON (f.fkpessoa = pe.pkpessoa)
  86. LEFT OUTER JOIN pessoafisica pf ON (pe.fkpessoafisica = pf.pkpessoafisica)
  87. LEFT OUTER JOIN pessoajuridica pj ON (pe.fkpessoajuridica = pj.pkpessoajuridica)
  88. inner join pessoa pev on (v.fkpessoa = pev.pkpessoa)
  89. inner join pessoafisica pfv on (pfv.pkpessoafisica = pev.fkpessoafisica)
  90. inner join pessoa vpev on (e.fkpessoa = vpev.pkpessoa)
  91. inner join pessoafisica vpfv on (vpfv.pkpessoafisica = vpev.fkpessoafisica)
  92. inner join notafiscal n on (n.fkdocumentofiscal = df.pkdocumentofiscal)
  93. LEFT OUTER join documentofiscalitem dfi on (dfi.fkdocumentofiscal = df.pkdocumentofiscal)
  94. LEFT OUTER join OperacaoImpostoNatureza oi on (oi.pkOperacaoImpostoNatureza = dfi.fkOperacaoImpostoNatureza)
  95. LEFT OUTER join OperacaoImpostos o on (oi.fkOperacaoImpostos = o.pkOperacaoImpostos)
  96. , filtros filtros
  97. where true
  98.  
  99. and df.emissao >= filtros.datainicial
  100. AND df.emissao <= filtros.datafinal
  101. AND pfv.nome ilike ('%' || filtros.vendedor || '%')
  102. AND fi.nome ilike ('%' || filtros.filial || '%')
  103.  
  104. and ((n.situacao = 6294 and o.codigo ilike '1000') or (df.tipoprodutoservico in (8094, 8091)))
  105. and df.status not in (999, 10)
  106. and f is null
  107.  
  108. )
  109. , total as (
  110. select sum(valor) as v
  111. from totaldf totaldf
  112. )
  113.  
  114. , vr as (
  115. select v.pkvendedor, COALESCE(SUM(totaldf.valor), 0) as v
  116. FROM vendedor v
  117. left outer join e e on (e.pkvendedor = v.pkvendedor )
  118. LEFT OUTER JOIN totaldf totaldf ON ((v.pkvendedor = totaldf.pkvendedor or e.pkvendedorequipe = totaldf.pkvendedor))
  119. group by v.pkvendedor
  120. )
  121.  
  122.  
  123. , c as (
  124. select v.pkvendedor
  125. , COALESCE(CAST(COALESCE(NULLIF(REPLACE(REPLACE(TRIM(replace(f.valor, '&nbsp;', '')), '.', ''), ',', '.') , ''), '0') AS NUMERIC), CAST( 0 AS NUMERIC)) as valor
  126. , COALESCE(CAST(COALESCE(NULLIF(REPLACE(REPLACE(TRIM(replace(f.porcentagem, '&nbsp;', '')), '.', ''), ',', '.') , ''), '0') AS NUMERIC), CAST( 0 AS NUMERIC)) as porcentagem
  127. , COALESCE(CAST(COALESCE(NULLIF(REPLACE(REPLACE(TRIM(replace(f.valor, '&nbsp;', '')), '.', ''), ',', '.') , ''), '0') AS NUMERIC), CAST( 0 AS NUMERIC)) <= vr.v as verdadeiro
  128. , CASE WHEN COALESCE(CAST(COALESCE(NULLIF(REPLACE(REPLACE(TRIM(replace(f.valor, '&nbsp;', '')), '.', ''), ',', '.') , ''), '0') AS NUMERIC), CAST( 0 AS NUMERIC)) <= vr.v THEN 0 else RANK() over (partition by v.pkvendedor order by COALESCE(CAST(COALESCE(NULLIF(REPLACE(REPLACE(TRIM(replace(f.valor, '&nbsp;', '')), '.', ''), ',', '.') , ''), '0') AS NUMERIC), CAST( 0 AS NUMERIC))) END as cc
  129. FROM total total, comissao.comissao c
  130. left outer join comissao.faixacomissao f on (f.comissao_id = c.id and f.status = 0)
  131. INNER join vendedor v on (cast(v.pkvendedor as varchar) = c.vendedor_efk)
  132. inner join vr vr on (vr.pkvendedor = v.pkvendedor)
  133. where c.status = 0
  134. AND f.tipo = (CASE WHEN total.v <= COALESCE(CAST(REPLACE(REPLACE(TRIM(c.valorate), '.', ''), ',', '.') AS NUMERIC), CAST( 0 AS NUMERIC)) or COALESCE(CAST(REPLACE(REPLACE(TRIM(c.valorate), '.', ''), ',', '.') AS NUMERIC), CAST( 0 AS NUMERIC)) = 0 or c.valorate is null THEN 1 ELSE 2 END)
  135.  
  136. )
  137. , cm as (
  138. select v.pkvendedor
  139. , COALESCE(CAST(COALESCE(NULLIF(REPLACE(REPLACE(TRIM(replace(f.valor, '&nbsp;', '')), '.', ''), ',', '.') , ''), '0') AS NUMERIC), CAST( 0 AS NUMERIC)) as valor
  140. , COALESCE(CAST(COALESCE(NULLIF(REPLACE(REPLACE(TRIM(replace(f.porcentagem, '&nbsp;', '')), '.', ''), ',', '.') , ''), '0') AS NUMERIC), CAST( 0 AS NUMERIC)) as porcentagem
  141. FROM comissao.comissao c
  142. inner join comissao.faixacomissao f on (f.comissao_id = c.id and f.status = 0)
  143. INNER join vendedor v on (cast(v.pkvendedor as varchar) = c.vendedor_efk)
  144. where c.status = 0
  145. AND f.tipo = 3
  146.  
  147. )
  148.  
  149.  
  150.  
  151.  
  152. , f as (
  153.  
  154. select distinct
  155. rank () over (partition by v.pkvendedor, df.pkdocumentofiscal order by c.verdadeiro, c.cc, c.valor desc) as r ,
  156. 'Comissões' as o,
  157. c.valor as valorate,
  158. vr.v as totalregiao,
  159. total.v as total,
  160. df.emissao,
  161. '' as produto,
  162. fi.nome as filial,
  163. pfv.nome
  164. , df.numero as numero
  165. , COALESCE(pf.nome, pj.razaosocial) as cliente
  166. , REPLACE(TO_CHAR(ban.valor, '99999999999D99'), '.', ',') AS valor
  167. , REPLACE(TO_CHAR(c.porcentagem, '99999999999D99'), '.', ',') AS porcentagem
  168. , COALESCE(NULLIF(TRIM(REPLACE(TO_CHAR(coalesce(c.porcentagem, 0) / 100 * coalesce(ban.valor, 9), '99999999999D99'), '.', ',')), ',00'), '0,00') AS valorcomissao
  169.  
  170. from vendedor v
  171.  
  172.  
  173. left outer join vr vr on (vr.pkvendedor = v.pkvendedor )
  174. left outer join e ef on (ef.pkvendedor = v.pkvendedor )
  175. left outer join c c on (c.pkvendedor = v.pkvendedor)
  176. inner join ban ban on ((v.pkvendedor = ban.pkvendedor or ef.pkvendedorequipe = ban.pkvendedor) and ban.valor < c.valor )
  177. inner join documentofiscal df on (ban.pkdocumentofiscal = df.pkdocumentofiscal)
  178. LEFT OUTER JOIN dfv dfv ON (dfv.pkdocumentofiscal = df.pkdocumentofiscal)
  179. LEFT OUTER JOIN Filial fi ON (fi.pkfilial = df.fkfilial)
  180. LEFT OUTER JOIN Pessoa pe ON (pe.pkpessoa = df.fkDestinatario)
  181. LEFT OUTER JOIN Filial f ON (f.fkpessoa = pe.pkpessoa)
  182. LEFT OUTER JOIN pessoafisica pf ON (pe.fkpessoafisica = pf.pkpessoafisica)
  183. LEFT OUTER JOIN pessoajuridica pj ON (pe.fkpessoajuridica = pj.pkpessoajuridica)
  184. inner join pessoa pev on (v.fkpessoa = pev.pkpessoa)
  185. inner join pessoafisica pfv on (pfv.pkpessoafisica = pev.fkpessoafisica)
  186. inner join notafiscal n on (n.fkdocumentofiscal = df.pkdocumentofiscal)
  187. LEFT OUTER join documentofiscalitem dfi on (dfi.fkdocumentofiscal = df.pkdocumentofiscal)
  188. LEFT OUTER join OperacaoImpostoNatureza oi on (oi.pkOperacaoImpostoNatureza = dfi.fkOperacaoImpostoNatureza)
  189. LEFT OUTER join OperacaoImpostos o on (oi.fkOperacaoImpostos = o.pkOperacaoImpostos)
  190. , total total
  191. , filtros filtros
  192. where true
  193.  
  194. and df.emissao >= filtros.datainicial
  195. AND df.emissao <= filtros.datafinal
  196. AND pfv.nome ilike ('%' || filtros.vendedor || '%')
  197. AND fi.nome ilike ('%' || filtros.filial || '%')
  198. and ((n.situacao = 6294 and o.codigo ilike '1000') or (df.tipoprodutoservico in (8094, 8091)))
  199. and df.status not in (999, 10)
  200. and f is null
  201.  
  202. UNION
  203.  
  204. select distinct
  205. rank () over (partition by v.pkvendedor, df.pkdocumentofiscal order by c.verdadeiro, c.cc, c.valor desc) as r ,
  206. 'Promoção' as o,
  207. c.valor as valorate,
  208. vr.v as totalregiao,
  209. total.v as total,
  210. df.emissao,
  211. p.nome || ' Qtd ' || dfi.quantidade as produto,
  212. fi.nome as filial,
  213. pfv.nome
  214. , df.numero as numero
  215. , COALESCE(pf.nome, pj.razaosocial) as cliente
  216. , cp.valor AS valor
  217. , REPLACE(TO_CHAR(
  218. COALESCE(CAST(REPLACE(REPLACE(TRIM(replace(cp.porcentagem, '&nbsp;', '')), '.', ''), ',', '.') AS NUMERIC), CAST( 0 AS NUMERIC)) / 100 * dfi.valorunitario * dfi.quantidade
  219. , '99999999999D99'), '.', ',') AS porcentagem
  220. , REPLACE(TO_CHAR( COALESCE(CAST(REPLACE(REPLACE(TRIM(replace(cp.valor, '&nbsp;', '')), '.', ''), ',', '.') AS NUMERIC), CAST( 0 AS NUMERIC)) * dfi.quantidade , '99999999999D99'), '.', ',') AS valorcomissao
  221.  
  222. from vendedor v
  223.  
  224.  
  225. left outer join vr vr on (vr.pkvendedor = v.pkvendedor )
  226. left outer join e ef on (ef.pkvendedor = v.pkvendedor )
  227. left outer join c c on (c.pkvendedor = v.pkvendedor)
  228. inner join ban ban on ((v.pkvendedor = ban.pkvendedor or ef.pkvendedorequipe = ban.pkvendedor) and ban.valor < c.valor )
  229. inner join documentofiscal df on (ban.pkdocumentofiscal = df.pkdocumentofiscal)
  230. LEFT OUTER JOIN dfv dfv ON (dfv.pkdocumentofiscal = df.pkdocumentofiscal)
  231. LEFT OUTER JOIN Filial fi ON (fi.pkfilial = df.fkfilial)
  232. LEFT OUTER JOIN Pessoa pe ON (pe.pkpessoa = df.fkDestinatario)
  233. LEFT OUTER JOIN Filial f ON (f.fkpessoa = pe.pkpessoa)
  234. LEFT OUTER JOIN pessoafisica pf ON (pe.fkpessoafisica = pf.pkpessoafisica)
  235. LEFT OUTER JOIN pessoajuridica pj ON (pe.fkpessoajuridica = pj.pkpessoajuridica)
  236. inner join pessoa pev on (v.fkpessoa = pev.pkpessoa)
  237. inner join pessoafisica pfv on (pfv.pkpessoafisica = pev.fkpessoafisica)
  238. inner join notafiscal n on (n.fkdocumentofiscal = df.pkdocumentofiscal)
  239. LEFT OUTER join documentofiscalitem dfi on (dfi.fkdocumentofiscal = df.pkdocumentofiscal)
  240. LEFT OUTER join produto p on (p.pkproduto = dfi.fkproduto)
  241. inner join comissao.promocao cp on (cp.produto_efk = CAST(p.pkproduto as TEXT) AND cp.status = 0)
  242. LEFT OUTER join OperacaoImpostoNatureza oi on (oi.pkOperacaoImpostoNatureza = dfi.fkOperacaoImpostoNatureza)
  243. LEFT OUTER join OperacaoImpostos o on (oi.fkOperacaoImpostos = o.pkOperacaoImpostos)
  244. , total total
  245. , filtros filtros
  246. where true
  247.  
  248. and df.emissao >= filtros.datainicial
  249. AND df.emissao <= filtros.datafinal
  250. AND pfv.nome ilike ('%' || filtros.vendedor || '%')
  251. AND fi.nome ilike ('%' || filtros.filial || '%')
  252.  
  253. and ((n.situacao = 6294 and o.codigo ilike '1000') or (df.tipoprodutoservico in (8094, 8091)))
  254. and df.status not in (999, 10)
  255. and f is null
  256. )
  257. select
  258. o as tipo
  259. , nome as "Vendedor"
  260. , filial as "Filial"
  261. , emissao as "Emissão"
  262. , numero as "Nota"
  263. , produto as "Promoção"
  264. , cliente as "Cliente"
  265. , valor as "Valor"
  266. , porcentagem as "% Comissão"
  267. , valorcomissao as "Valor Comissão"
  268.  
  269. from f where r = 1
  270. order by o, nome, numero
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement