Advertisement
cozcaio

Untitled

Jul 6th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. with
  2. classmerc as (
  3.  select distinct(prod_codigo) as codprod,
  4.  (select a.grup_codigo from grupos a where a.grup_classificacao = substr(z.grup_classificacao, 1, 2)) as coddpto,
  5.  (select a.grup_codigo from grupos a where a.grup_classificacao = substr(z.grup_classificacao, 1, 4)) as codsecao,
  6.  (select a.grup_codigo from grupos a where a.grup_classificacao = substr(z.grup_classificacao, 1, 6)) as codcat,
  7.  prod_grup_codigo as codfamilia,
  8.  (select a.grup_descricao from grupos a where a.grup_classificacao = substr(z.grup_classificacao, 1, 2)) as descdpto,
  9.  (select a.grup_descricao from grupos a where a.grup_classificacao = substr(z.grup_classificacao, 1, 4)) as descsecao,
  10.  (select a.grup_descricao from grupos a where a.grup_classificacao = substr(z.grup_classificacao, 1, 6)) as desccat,
  11.  prod_grup_nome as descfamilia
  12. from produtos
  13. left join grupos z on (prod_grup_codigo=z.grup_codigo)
  14. ),
  15.  
  16. vendas as (
  17. select distinct(t1.mprd_prod_codigo) codprod,
  18.  coalesce(round(sum(t1.mprd_valor),2),0.00) as valor,
  19.  coalesce(round(sum(t1.mprd_valor) filter (where t1.mprd_dcto_codigo IN ('7336','7337','7338','7339') ),2),0.00) as clickshow,
  20.  coalesce(round(sum(t1.mprd_prcompra),2),0.00) as valor_prcompra
  21. from (MOVPRODDPERIODO) as t1
  22. where t1.mprd_datamvto between DATAINICIAL and DATAFINAL
  23.  and t1.mprd_unid_codigo='001'
  24.  and t1.mprd_dcto_codigo IN ('7165','7318','7320','7321','7325','7326','7327','7328','7329','7330','7331','7336','7337','7338','7339','7340','7343')
  25.  and t1.mprd_status='N'
  26. group by t1.mprd_prod_codigo
  27. ),
  28.  
  29. lojaloja as (
  30. select
  31.  distinct(pcpd_prod_codigo) as codprod,
  32.  
  33.  case when pcpd_tpsubtrib='P' then coalesce(round(sum(pcpd_valor) + (sum(pcpd_valor)*pcpd_subtrib/100),3),0.000)
  34.      when pcpd_tpsubtrib='V' then coalesce(round((sum(pcpd_valor) + pcpd_subtrib),3),0.000)
  35.      else coalesce(round(sum(pcpd_valor),3),0.000)
  36.      end as valor
  37.      
  38. from pedcomprac
  39. inner join pedcomprad on (pcpc_numped=pcpd_numped)
  40. where pcpc_datamvto between DATAINICIAL and DATAFINAL
  41.  and pcpc_dcto_codigo='6201'
  42.  and pcpc_status<>'C'
  43.  and pcpc_tipo='C'
  44.  and pcpc_obs not like 'Gerado Pela Baixa Parcial%'
  45. group by
  46. pcpd_prod_codigo, pcpd_tpsubtrib, pcpd_subtrib
  47. ),
  48.  
  49. estorno as (
  50. select distinct(t1.mprd_prod_codigo) codprod,
  51.  coalesce(round(sum(t1.mprd_valor),2),0.00) as valor
  52. from (MOVPRODDPERIODO) as t1
  53. where t1.mprd_datamvto between DATAINICIAL and DATAFINAL
  54.  and t1.mprd_unid_codigo='001'
  55.  and t1.mprd_dcto_codigo='7273'
  56.  and t1.mprd_status='N'
  57. group by t1.mprd_prod_codigo
  58. ),
  59.  
  60. pend as (
  61. select
  62. prod_codigo as codprod,
  63. coalesce((select
  64. sum(pest_qtde) - sum(pest_qtdebx)
  65. from pendest pe
  66.  where pest_status='P'
  67.  and (pest_unid_origem='001' or pest_unid_destino='001')
  68.  and pest_cpes_codigo in ('001','100','101','102','104','106','120','150','151','190','200','201','300','301','302','310','315','320','350','390','400','500','600','800','900')
  69.  and pe.pest_prod_codigo=po.prod_codigo
  70. limit 1
  71. ),0.000) as pendentes
  72. from produtos po
  73. order by prod_codigo
  74. ),
  75.  
  76. pu as (
  77. select
  78.  distinct(prun_prod_codigo) as codprod,
  79.  
  80.  case when (round(coalesce(((prun_estoque1+prun_estoque4)-pend.pendentes),0.00000),3))<0 then 0.000
  81.  else round(coalesce(((prun_estoque1+prun_estoque4)-pend.pendentes),0.00000),3)
  82.  end as estdisp_un,
  83.  
  84.  case when (round(coalesce((((prun_estoque1+prun_estoque4)-pend.pendentes) / prod_qemb),0)))<0 then 0
  85.  else round(coalesce((((prun_estoque1+prun_estoque4)-pend.pendentes) / prod_qemb),0))
  86.  end as estdisp_emb,
  87.  
  88.  case when (round(coalesce(((prun_estoque1+prun_estoque4)-pend.pendentes),0.00000),3))<0 then 0.00
  89.  else round(coalesce((((prun_estoque1+prun_estoque4)-pend.pendentes) * prun_prvenda),0.00),2)
  90.  end as vr_estdisp_prvenda,
  91.  
  92.  case when (round(coalesce(((prun_estoque1+prun_estoque4)-pend.pendentes),0.00000),3))<0 then 0.00
  93.  else round(coalesce((((prun_estoque1+prun_estoque4)-pend.pendentes) * prun_prultcomp),0.00),2)
  94.  end as vr_estdisp_prultcomp,
  95.  
  96.  round(coalesce((prun_estoque1+prun_estoque4),0.00000),3) as estfisico_un,
  97.  round(coalesce(((prun_estoque1+prun_estoque4) / prod_qemb),0)) as estfisico_emb,
  98.  
  99.  round(coalesce(((prun_estoque1+prun_estoque4) * prun_prvenda),0.00),2) as vr_estfisico_prvenda,
  100.  round(coalesce(((prun_estoque1+prun_estoque4) * prun_prultcomp),0.00),2) as vr_estfisico_prultcomp
  101.  
  102.  
  103.  from produn
  104.  left join produtos on (prod_codigo=prun_prod_codigo)
  105.  left join pend on (prun_prod_codigo=pend.codprod)
  106.  where prun_unid_codigo='001'
  107. )
  108.  
  109. select
  110.  distinct(t1.prod_codigo),
  111.  prod_descricao,
  112.  prod_complemento,
  113.  prod_marca,
  114.  prod_emb,
  115.  case when prod_qemb='0' then '1' else prod_qemb end as prod_qemb,
  116.  
  117.  case when prod_tipo='EST' then 'Estratégico'
  118.       when prod_tipo='NOR' then 'Normal'
  119.       else 'Sem Tipo'
  120.       end as prod_tipo,
  121.      
  122.  prod_grup_codigo,
  123.  
  124.  classmerc.descdpto,
  125.  classmerc.descsecao,
  126.  classmerc.desccat,
  127.  
  128.  prod_grup_nome,
  129.  prod_comp_codigo,
  130.  comp_nome,
  131.  prod_classe,
  132.    
  133.  case when vendas.valor is not null then vendas.valor
  134.  else '0.00'
  135.  end as valor_vendas,
  136.  
  137.  case when vendas.clickshow is not null then vendas.clickshow
  138.  else '0.00'
  139.  end as valor_vendas_clickshow,
  140.  
  141.  case when vendas.valor_prcompra is not null then vendas.valor_prcompra
  142.  else '0.00'
  143.  end as valor_vendas_prcompra,
  144.  
  145.  case when lojaloja.valor is not null then lojaloja.valor
  146.  else '0.00'
  147.  end as valor_lojaloja,
  148.  
  149.  case when (vendas.valor is not null and lojaloja.valor is not null) then vendas.valor + lojaloja.valor
  150.       when vendas.valor is null then lojaloja.valor
  151.       when lojaloja.valor is null then vendas.valor
  152.  else vendas.valor + lojaloja.valor
  153.  end as valor_total_geral,
  154.  
  155.  coalesce(round((vendas.valor / sum(vendas.valor) over ())*100,4),0.0000) as part_vendas,
  156.  coalesce(round((vendas.clickshow / sum(vendas.clickshow) over ())*100,4),0.0000) as part_vendas_clickshow,
  157.  coalesce(round((lojaloja.valor / sum(lojaloja.valor) over ())*100,4),0.0000) as part_lojaloja_valor,
  158.  
  159. /*
  160.  case when vendas.valor_prcompra=0
  161.    then ((100 - ((vendas.valor / 1) * 100)) + 100)
  162.    else ((100 - ((vendas.valor / vendas.valor_prcompra) * 100)) + 100)
  163.  end as cmvmov,
  164. */
  165.  
  166.  case when estorno.valor is not null then estorno.valor
  167.  else '0.00'
  168.  end as valor_estorno,
  169.  
  170.  pu.estdisp_emb,
  171.  pu.estfisico_emb,
  172.  
  173.  round(prun_prvenda,3) as prvenda_un,
  174.  round(coalesce((prun_prvenda * prod_qemb),0.000),3) as prvenda_emb,
  175.  
  176.  round(prun_prultcomp,3) as prcompra_un,
  177.  round(coalesce((prun_prultcomp * prod_qemb),0.000),3) as prcompra_emb,
  178.  
  179.  pu.vr_estfisico_prvenda,
  180.  pu.vr_estfisico_prultcomp,
  181.  
  182. /*
  183.  case when (pu.vr_estdisp_prultcomp=0 and pu.vr_estdisp_prvenda=0) then 0.000
  184.       when pu.vr_estdisp_prultcomp=0 then ((100 - ((pu.vr_estdisp_prvenda / 1) * 100)) + 100)
  185.        else ((100 - ((pu.vr_estdisp_prvenda / pu.vr_estdisp_prultcomp) * 100)) + 100)
  186.  end as cmvest,
  187. */
  188.  
  189.  case when (vendas.valor > lojaloja.valor) then 'Show'
  190.       when (lojaloja.valor is null and vendas.valor is not null) then 'Show'
  191.       when (vendas.valor < lojaloja.valor) then 'Loja a Loja'
  192.       when (vendas.valor is null and lojaloja.valor is not null) then 'Loja a Loja'
  193.       when (vendas.valor = lojaloja.valor) then 'Igual'
  194.       when (vendas.valor is null and lojaloja.valor is null) then 'Sem Registros'
  195.       else 'Sem Classificação'
  196.       end as modalidade_predominante
  197.      
  198. from produtos as t1
  199. INNER JOIN produn on (prun_prod_codigo=t1.prod_codigo and prun_unid_codigo='001')
  200. LEFT JOIN compradores on (comp_codigo=prod_comp_codigo)
  201. LEFT JOIN classmerc on (t1.prod_codigo=classmerc.codprod)
  202. LEFT JOIN vendas on (t1.prod_codigo=vendas.codprod)
  203. LEFT JOIN lojaloja on (t1.prod_codigo=lojaloja.codprod)
  204. LEFT JOIN estorno on (t1.prod_codigo=estorno.codprod)
  205. LEFT JOIN pend on (t1.prod_codigo=pend.codprod)
  206. LEFT JOIN pu on (t1.prod_codigo=pu.codprod)
  207. WHERE CONDICAOESCOPO
  208. group by
  209. t1.prod_codigo,
  210. prod_descricao,
  211. prod_complemento,
  212. prod_marca,
  213. prod_emb,
  214. prod_qemb,
  215. prod_tipo,
  216. prod_grup_codigo,
  217. classmerc.descdpto,
  218. classmerc.descsecao,
  219. classmerc.desccat,
  220. prod_grup_nome,
  221. prod_comp_codigo,
  222. comp_nome,
  223. prod_classe,
  224. vendas.valor,
  225. vendas.clickshow,
  226. vendas.valor_prcompra,
  227. estorno.valor,
  228. lojaloja.valor,
  229. pu.estdisp_emb,
  230. pu.estfisico_emb,
  231. prun_prvenda,
  232. prun_prultcomp,
  233. pu.vr_estfisico_prvenda,
  234. pu.vr_estfisico_prultcomp,
  235. classmerc.coddpto,
  236. classmerc.codsecao,
  237. classmerc.codcat
  238. order by part_vendas DESC, part_vendas, part_vendas_clickshow, part_lojaloja_valor nulls last
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement