Advertisement
Guest User

Untitled

a guest
Feb 25th, 2016
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 101.31 KB | None | 0 0
  1. with
  2. saldofin_deptos_ignorar as (
  3. select d.iddepartamento from glb.departamento d where substr(d.classificacao,1,3) in ('110')
  4. ),
  5. realizado as (
  6. select
  7. tb.*,
  8. gcl.idgrupo
  9. from(
  10. select
  11. cast( to_char(ib.datamovimento,'yyyymm') as integer) as anomes
  12. ,cast( to_char(ib.datamovimento,'dd') as integer) as dia
  13. ,substr(d.classificacao,1,3) as linha
  14. ,gf.uf
  15. ,pg.idsituacaoproduto
  16. ,sum( case when ib.idvendedor <> 810 then ib.totalpresente * case when ib.idoperacaoproduto = 101040 then -1 else 1 end else 0 end ) as sf
  17. ,sum( case when ib.idvendedor <> 810 then ib.totalfuturo * case when ib.idoperacaoproduto = 101040 then -1 else 1 end else 0 end ) as cf
  18. ,sum( case when ib.idvendedor <> 810 then ib.totalcustomedio * case when ib.idoperacaoproduto = 101040 then -1 else 1 end else 0 end ) as cm
  19. ,sum( case when ib.idvendedor <> 810 then ib.totaldesejadopresente * case when ib.idoperacaoproduto = 101040 then -1 else 1 end else 0 end ) as desejado
  20. ,sum( case when ib.idvendedor <> 810 then (ib.totalfuturo - ib.totalpresente) * case when ib.idoperacaoproduto = 101040 then -1 else 1 end else 0 end ) as juros
  21. ,sum( case when ib.idvendedor <> 810 then ib.totalpis * case when ib.idoperacaoproduto = 101040 and :anomes >= 201211 then -1 else 1 end else 0 end ) as pis
  22. ,sum( case when ib.idvendedor <> 810 then ib.totalcofins * case when ib.idoperacaoproduto = 101040 and :anomes >= 201211 then -1 else 1 end else 0 end ) as cofins
  23. ,sum( case when ib.idvendedor <> 810 then (ib.totalbasecalculoicms * case when ib.idoperacaoproduto = 101040 and :anomes >= 201211 then -1 else 1 end * (case when not ib.aliquotaicms is null then ib.aliquotaicms else 0 end) /100) else 0 end ) as icms
  24. from rst.itembase ib
  25. left join glb.produto p on p.idproduto = ib.idproduto
  26. left join glb.produtograde pg on pg.idproduto = ib.idproduto and pg.idgradex = ib.idgradex and pg.idgradey = ib.idgradey
  27. left join glb.departamento d on d.iddepartamento = p.iddepartamento
  28. left join gazin.gzgrupofilial gf on gf.idfilial = ib.idfilial
  29. where ib.idfilial = :idfilial
  30. and ib.datamovimento between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1
  31. and ib.idoperacaoproduto in (102010,101040)
  32. and not ib.idvendedor = 6781
  33. group by 1,2,3,4,5
  34. )tb
  35. left join gazin.ccg_gerente_grupo_comissao_linha gcl on gcl.linhas = linha
  36. where gcl.idgrupo in (1,2,3,4,5)
  37. )
  38. ,metarecebimento as (
  39. select
  40. *
  41. from dblink( 'hostaddr=10.0.253.11 port=6432 dbname=ccg user=ccg password=pst3811','select idfilial, coalesce(metavencido,0) as metavencido from avg.filial_meta_mensal where coalesce(metavencido,0)>0 and idgrupo= 0 and anomes='||:anomes ) as bla( idfilial integer, metavencido public.moeda )
  42. )
  43. ,metavenda as ( select gazin.ccg_get_meta_venda_filial(:idfilial,:anomes) as metavenda)
  44.  
  45. ,vendedor as (select gazin.ccg_get_vendedor_filial(:idfilial,:anomes) as vend)
  46.  
  47. ,metalinha as (
  48. select
  49. gc.idgrupo as grupo
  50. ,gc.descricao as idgrupo
  51. ,round((gcp.participacao / 100),4) as indice
  52. ,round(gcp.participacao, 4) as participacao
  53. ,gc.peso
  54. from gazin.ccg_gerente_grupo_comissao_participacao gcp
  55. left join gazin.ccg_gerentes_grupo_comissao gc on gcp.idgrupo = gc.idgrupo
  56. where gcp.idfilial = :idfilial and gcp.idgrupo in (1,2,3,4,5) and gcp.anomes = cast(:anomes as integer)
  57. )
  58.  
  59. ,metadia as (
  60. select
  61. 'Do dia ' ||to_char(md.dodia,'00') ||' ao '||to_char(md.atedia,'00') as idgrupo
  62. ,dodia
  63. ,atedia
  64. ,md.participacao /100 as indice
  65. ,md.participacao
  66. ,md.peso
  67. from gazin.ccg_gerentes_meta_dias md
  68. where md.anomes = :anomes
  69. )
  70.  
  71. ,excecao as (
  72. select
  73. *
  74. from gazin.gerente_excessao_metas_mensal ge
  75. where ge.idfilial = :idfilial
  76. and ge.anomes = :anomes
  77. )
  78.  
  79. ,vencido AS (
  80. select
  81. sum(case when vencido then valorcontabil else 0 end) as valorvencido30dias
  82. ,sum(case when vencido then 0 else valorcontabil end) as valoravencer30dias
  83. ,sum(case when vencido then valorcontabil else 0 end) + sum(case when vencido then 0 else valorcontabil end) as valortotal
  84. from (
  85. select
  86. tp.idfilial,
  87. tp.idprocessotitulo,
  88. (date(date( date(:anomes||'01') +interval '1 month') -1) - tp.datavencimento) >= 0 as vencido,
  89. trunc((date(date( date(:anomes||'01') +interval '1 month') -1) - tp.datavencimento) / 30) as dias,
  90. sum(tp.saldocapital + coalesce(tp.saldojuro,0)) as valorcontabil
  91. from rst.tituloparcela tp
  92. /*left join rst.titulo t on t.idtipotitulo = tp.idtipotitulo
  93. and t.idfilial = tp.idfilial
  94. and t.idtitulo = tp.idtitulo*/
  95. where
  96. tp.idfilial = :idfilial
  97. and tp.idtipotitulo = 1
  98. and ( date( date(:anomes||'01') +interval '1 month') -1 < tp.databaixa or tp.databaixa is null )
  99. and date( date(:anomes||'01') +interval '1 month') -1 >= tp.datainicial
  100. group by 1,2,3,4
  101. ) tb
  102. inner join gazin.ccg_gerente_processos_fiado c on tb.idprocessotitulo= c.idprocesso and c.anomes = :anomes -- '201408'
  103. )
  104. ,perdas AS (
  105.  
  106. SELECT tp.idfilial,
  107. to_char(tp.databaixa, 'yyyymm') as anomes,
  108. SUM(tp.valorpago) AS perdido180
  109. FROM rst.tituloparcela tp
  110. WHERE tp.databaixa between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1
  111. and tp.idtipotitulo = 1
  112. and tp.idfilial = :idfilial
  113. AND tp.idprocessobaixa IN (SELECT pro.idprocesso FROM glb.processo pro WHERE pro.idoperacao = 302040 and pro.idprocesso not in (3099))
  114. GROUP BY 1,2
  115.  
  116. )
  117. ,recperda AS (
  118. SELECT tp.idfilial,
  119. to_char(tp.databaixa, 'yyyymm') as anomes,
  120. SUM(tp.valorpago) AS recperdido
  121. FROM rst.tituloparcela tp
  122. inner join glb.processoparametro p on p.idprocesso=tp.idprocessotitulo and p.idparametro = 200 and p.valor = '7'
  123. /*LEFT JOIN rst.titulo t ON t.idtipotitulo = tp.idtipotitulo
  124. AND t.idfilial = tp.idfilial
  125. AND t.idtitulo = tp.idtitulo*/
  126. WHERE tp.databaixa between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1
  127. and tp.idfilial = :idfilial
  128. and tp.idtipotitulo = 1
  129. --and t.idtipocarteira = 7
  130. and tp.idprocessobaixa <> 3099
  131. and not tp.idprocessobaixa in (SELECT pro.idprocesso FROM glb.processo pro WHERE pro.idoperacao = 302060)
  132. GROUP BY 1,2
  133. )
  134. ,saldofin as (
  135. select
  136. coalesce(sum(tb.saldo * tb.custom), 0) as saldofin
  137. from(
  138. select
  139. tb.idfilial as idfilial,
  140. cast(split_part(tb.saldos,';',1) as numeric) as saldo,
  141. cast(split_part(tb.saldos,';',2) as numeric) as custom
  142. from (
  143. select
  144. tb.*
  145. ,( select
  146. round(tb.saldo,6)||';'||round(tb.custom,4)
  147. from ( SELECT
  148. case when ib.quantidade>0 then ib.totalcustomedio/ib.quantidade else 0 end as custom
  149. ,ib.saldo
  150. FROM rst.itembase ib
  151. WHERE ib.idproduto = tb.idproduto
  152. and ib.idgradex = tb.idgradex
  153. and ib.idgradey = tb.idgradey
  154. and ib.idfilial = tb.idfilial
  155. and ib.idlocalsaldo =1
  156. and ib.datamovimento <= tb.posicao
  157. and ib.idoperacaoproduto > 0
  158. order by ib.idfilial, ib.idproduto, ib.idgradex, ib.idgradey, ib.idlocalsaldo, datamovimento desc, idmovimento desc
  159. limit 1
  160. ) tb
  161. ) as saldos
  162. from (
  163. select
  164. tb.*
  165. ,(
  166. select
  167. case when :anomes < 201504 or current_date <= date(:anomes||'15') then date(date(:anomes||'01')+interval '1 month') - 1
  168. else date(:anomes||'15') end
  169. ) as posicao
  170. --,date(date(:anomes||'01')+interval '1 month') - 1 as posicao
  171. from (
  172. select
  173. pg.idfilial,
  174. pg.idproduto,
  175. pg.idgradex,
  176. pg.idgradey
  177. from rst.produtogradefilial pg
  178. left join glb.produto p on p.idproduto = pg.idproduto
  179. left join glb.produtocomprador pc on pc.idproduto = pg.idproduto
  180. where pg.idfilial = :idfilial
  181. and not p.iddepartamento in (select * from saldofin_deptos_ignorar where :anomes >= 201408 )
  182. group by pg.idfilial,pg.idproduto,pg.idgradex,pg.idgradey
  183. ) tb
  184. ) tb
  185. ) tb
  186. ) tb
  187. order by 1
  188. )
  189. ,linhas AS (
  190. select
  191. 'Linhas' as grupo,
  192. variavel,
  193. 1 as ordem,
  194. participacaometa,
  195. participacaorealizada,
  196. valormeta,
  197. valorrealizado,
  198. percrealizado,
  199. pontos,
  200. case when pt = (select count(1) from gazin.ccg_gerentes_grupo_comissao where idgrupo <> 99) then comissao + (fixo * peso / 100) else comissao end as comissao
  201. from(
  202. select
  203. tb.*
  204. ,case when (pontos = 1) then (fixo * peso /100) else 0 end as comissao
  205. ,sum(pontos) over () as pt
  206. from (
  207. select
  208. tb.*
  209. ,case when variavel = 'Sem Comissão' then 0 else (select f.faixasalario from gazin.ccg_gerente_faixa_salario f where valortotal between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) end as fixo
  210. from(
  211. select
  212. cast(tb.idgrupo as varchar) as variavel
  213. ,participacao as participacaometa
  214. ,case when sum(sf) over (partition by 0) >0 then round((sf / sum(sf) over (partition by 0)) *100,2) else 0 end as participacaorealizada
  215. ,coalesce(valormeta,0) as valormeta
  216. ,round(sf,2) as valorrealizado
  217. ,round(case when tb.valormeta>0 then sf/tb.valormeta * 100 else 0 end,2) as percrealizado
  218. ,round(case when case when tb.valormeta>0 then sf/tb.valormeta * 100 else 0 end >=100 then 1 else 0 end,2) as pontos
  219. ,peso
  220. ,sum(sf) over () as valortotal
  221. ,case when sum(valormeta) over () > 0 then sum(sf) over () / sum(valormeta) over () * 100 else 0 end perctotal
  222. from (
  223. select
  224. m.idgrupo
  225. ,m.peso
  226. ,sum(m.participacao) as participacao
  227. ,sum( (select metavenda from metavenda) * m.indice) as valormeta
  228. ,sum(coalesce( ( select sum(sf) from realizado where realizado.idgrupo = m.grupo ) ,0)) as sf
  229. from metalinha m
  230. group by 1,2
  231. ) tb
  232. )tb
  233. )tb
  234. )tb
  235. )
  236. ,dias AS (
  237. select
  238. 'Dias' as grupo,
  239. variavel,
  240. 1 as ordem,
  241. participacaometa,
  242. participacaorealizada,
  243. valormeta,
  244. valorrealizado,
  245. percrealizado,
  246. pontos,
  247. comissao
  248. from(
  249. select
  250. tb.*
  251. ,case when (pontos = 1 or perctotal >= 100) then (fixo * peso /100) else 0 end as comissao
  252. from(
  253. select
  254. tb.*
  255. ,(select f.faixasalario from gazin.ccg_gerente_faixa_salario f where valortotal between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  256. from(
  257. select
  258. tb.idgrupo as variavel
  259. ,participacao as participacaometa
  260. ,round(( case when sum(sf) over (partition by 0) >0 then sf / sum(sf) over (partition by 0) else 0 end ) *100,2) as participacaorealizada
  261. ,coalesce(valormeta,0) as valormeta
  262. ,round(sf,2) as valorrealizado
  263. ,round(case when tb.valormeta>0 then sf/tb.valormeta * 100 else 0 end,2) as percrealizado
  264. ,round(case when case when tb.valormeta>0 then sf/tb.valormeta * 100 else 0 end >=100 then 1 else 0 end,2) as pontos
  265. ,peso
  266. ,sum(sf) over () as valortotal
  267. ,case when sum(valormeta) over () > 0 then sum(sf) over () / sum(valormeta) over () * 100 else 0 end perctotal
  268. from (
  269. select
  270. idgrupo
  271. ,peso
  272. ,sum(participacao) as participacao
  273. ,sum( (select metavenda from metavenda) * metadia.indice) as valormeta
  274. ,sum(coalesce( ( select sum(sf) from realizado where dia between metadia.dodia and metadia.atedia ) ,0)) as sf
  275. from metadia
  276. group by 1,2
  277. ) tb
  278. )tb
  279. )tb
  280. )tb
  281.  
  282. union
  283.  
  284. select
  285. 'Dias' as grupo,
  286. 'Bônus ' || round(bo.percmeta,2) ||'%' as variavel,
  287. 2 as ordem,
  288. 0 as participacaometa,
  289. 0 as participacaorealizada,
  290. 0 as valormeta,
  291. 0 as valorrealizado,
  292. 0 as percrealizado,
  293. 0 as pontos,
  294. coalesce((
  295. select
  296. comissao * gb.percbonus / 100
  297. from(
  298. select
  299. max(b.idbonus) as idbonus
  300. from gazin.ccg_gerente_bonus b
  301. where b.anomes = :anomes
  302. and perctotal >= b.percmeta
  303. ) ttb
  304. left join gazin.ccg_gerente_bonus gb on gb.idbonus = ttb.idbonus
  305. where gb.idbonus = bo.idbonus
  306. ),0) as comissao
  307. from(
  308. select
  309. perctotal,
  310. sum(case when (pontos = 1 or perctotal >= 100) then (fixo * peso /100) else 0 end) as comissao
  311. from(
  312. select
  313. tb.*
  314. ,(select f.faixasalario from gazin.ccg_gerente_faixa_salario f where valortotal between f.dofaturamento and f.atefaturamento and f.anomes = 201504) as fixo
  315. from(
  316. select
  317. tb.idgrupo as variavel
  318. ,round(case when case when tb.valormeta>0 then sf/tb.valormeta * 100 else 0 end >=100 then 1 else 0 end,2) as pontos
  319. ,peso
  320. ,sum(sf) over () as valortotal
  321. ,case when sum(valormeta) over () > 0 then sum(sf) over () / sum(valormeta) over () * 100 else 0 end perctotal
  322. from (
  323. select
  324. idgrupo
  325. ,peso
  326. ,sum(participacao) as participacao
  327. ,sum( (select metavenda from metavenda) * metadia.indice) as valormeta
  328. ,sum(coalesce( ( select sum(sf) from realizado where dia between metadia.dodia and metadia.atedia ) ,0)) as sf
  329. from metadia
  330. group by 1,2
  331. ) tb
  332. )tb
  333. )tb
  334. group by 1
  335. )tb
  336. left join gazin.ccg_gerente_bonus bo on bo.anomes = :anomes
  337. )
  338.  
  339.  
  340.  
  341.  
  342. ,vencidoccg as (
  343. select
  344. *
  345. from dblink( 'hostaddr=10.0.253.11 port=6432 dbname=ccg user=ccg password=pst3811'
  346. ,'select
  347. idfilial,
  348. anomes,
  349. vencido30dias,
  350. valoravencer30dias,
  351. valormeta,
  352. valorrealizado,
  353. valortotal,
  354. percrealizado,
  355. comissao
  356. from gerente.fiado
  357. where anomes='||:anomes
  358. ||' and idfilial ='||:idfilial ) as bla( idfilial INTEGER,
  359. anomes INTEGER,
  360. vencido30dias public.moeda,
  361. valoravencer30dias public.moeda,
  362. valormeta public.moeda,
  363. valorrealizado public.moeda,
  364. valortotal public.moeda,
  365. percrealizado public.moeda,
  366. comissao public.moeda )
  367.  
  368.  
  369. )
  370.  
  371. ,perdasreal as (
  372. select
  373. case when carteira<>0 then round(((perdido - rec) / carteira) * 100,2) else 0 end as percreal
  374. from(
  375. select
  376. sum(perdido) as perdido,
  377. sum(rec) as rec,
  378. sum(carteira) as carteira
  379. from(
  380. select
  381. sum(perdido180) as perdido,
  382. 0 as rec,
  383. 0 as carteira
  384. from perdas
  385.  
  386. union
  387.  
  388. select
  389. 0 as perdido,
  390. sum(recperdido) as rec,
  391. 0 as carteira
  392. from recperda
  393.  
  394. union
  395.  
  396. select
  397. 0 as perdido,
  398. 0 as rec,
  399. sum(valortotal) as carteira
  400. from vencido
  401. )tb
  402. )tb
  403. )
  404.  
  405. ,carteira AS (
  406.  
  407. select
  408. 'Carteira' as grupo
  409. ,'Fiado' as variavel
  410. ,1 as ordem
  411. ,0 as participacaometa
  412. ,round(tb.sf, 2) as participacaorealizada
  413. ,coalesce(valormeta,0) as valormeta
  414. ,round(percvencido,2) as valorrealizado
  415. ,round(case when tb.valormeta>0 then (1 - ((percvencido-tb.valormeta)/tb.valormeta)) * 100 else 0 end,2) as percrealizado
  416. --,round(coalesce(percvencido,0),2) as percrealizado
  417. ,round(case when percvencido <= valormeta then 1 else 0 end,2) as pontos
  418. ,case when excecao = 1 then (fixo * peso /100) else case when percvencido <= valormeta then case when peso > 0 then (fixo * peso /100) else 0 end else 0 end end as comissao
  419. from(
  420. select
  421. coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 0 and gmi.idtipometa = 0)
  422. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 0 and gm.idtipometa = 0)) as valormeta
  423. ,coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 0 and gmi.idtipometa = 0)
  424. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 0 and gm.idtipometa = 0)) as peso
  425. ,sum(case when (valorvencido30dias+valoravencer30dias)<>0 then valorvencido30dias/(valorvencido30dias+valoravencer30dias) *100 else 0 end) as percvencido
  426. ,sum(valortotal) as sf
  427. ,(select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  428. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  429. ,(
  430. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 0 limit 1
  431. ) as excecao
  432. from vencido
  433. )tb
  434. where :anomes < 201407
  435.  
  436. union
  437.  
  438. select
  439. 'Carteira' as grupo
  440. ,'Fiado' as variavel
  441. ,1 as ordem
  442. ,0 as participacaometa
  443. ,round(tb.sf, 2) as participacaorealizada
  444. ,coalesce(valormeta,0) as valormeta
  445. ,round(percvencido,2) as valorrealizado
  446. ,round(case when tb.valormeta>0 then (1 - ((percvencido-tb.valormeta)/tb.valormeta)) * 100 else 0 end,2) as percrealizado
  447. ,round(case when percvencido <= valormeta then 1 else 0 end,2) as pontos
  448. ,case when excecao = 1 then (fixo * peso /100) else case when percvencido <= valormeta then case when peso > 0 then (fixo * peso /100) else 0 end else 0 end end as comissao
  449. from(
  450. select
  451. (select metavencido from metarecebimento m where m.idfilial =:idfilial ) as valormeta
  452. ,coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 0 and gmi.idtipometa = 0)
  453. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 0 and gm.idtipometa = 0)) as peso
  454. ,vencido as percvencido --sum(case when (valorvencido30dias+valoravencer30dias)<>0 then valorvencido30dias/(valorvencido30dias+valoravencer30dias) *100 else 0 end) as percvencido
  455. ,0 as sf --sum(valortotal) as sf
  456. ,(select f.faixasalario from gazin.ccg_gerente_faixa_salario f where (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  457. ,( select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 0 limit 1 ) as excecao
  458. from (
  459. select
  460. tb.*
  461. from (
  462. select
  463. sum(case when vencido then valorcontabil else 0 end) as vencido
  464. from (
  465. select
  466. tp.idfilial,
  467. (date(date( date(:anomes||'01') +interval '1 month') -1) - tp.datavencimento) >= 0 as vencido,
  468. --trunc((date(date( date(:anomes||'01') +interval '1 month') -1) - tp.datavencimento) / 30) as dias,
  469. sum(tp.saldocapital + coalesce(tp.saldojuro,0)) as valorcontabil
  470. from rst.tituloparcela tp
  471. left join rst.titulo t on t.idtipotitulo = tp.idtipotitulo
  472. and t.idfilial = tp.idfilial
  473. and t.idtitulo = tp.idtitulo
  474. where ( date( date(:anomes||'01') +interval '1 month') -1 < tp.databaixa or tp.databaixa is null )
  475. and tp.idfilial = :idfilial
  476. and tp.idtipotitulo = 1
  477. and t.idprocesso in (select idprocesso from gazin.ccg_gerente_processos_fiado where anomes = :anomes)
  478. and date( date(:anomes||'01') +interval '1 month') -1 >= tp.datainicial
  479. and not exists(select 1 from gazin.ccg_historico_recebimento where idfilial = :idfilial and anomes = :anomes and anomes <> cast( to_char(current_date,'yyyymm') as integer) )
  480. and exists(select metavencido from metarecebimento m where m.idfilial =:idfilial and coalesce(metavencido,0) >0 limit 1)
  481. group by 1,2
  482. ) tb
  483. ) tb
  484. union
  485. select
  486. sum(valorvencido) as vencido
  487. from gazin.ccg_historico_recebimento r
  488. where r.anomes = :anomes
  489. and idfilial = :idfilial
  490. and exists(select metavencido from metarecebimento m where m.idfilial =:idfilial and coalesce(metavencido,0) >0 limit 1)
  491. and exists(select 1 from gazin.ccg_historico_recebimento where idfilial = :idfilial and anomes = :anomes and anomes <> cast( to_char(current_date,'yyyymm') as integer) )
  492. ) tb
  493. where not vencido is null
  494. )tb
  495. where :anomes >= 201407
  496.  
  497.  
  498. union
  499. /* recebimento perdar a partir de 01/02/2016*/
  500. select
  501. 'Carteira' as grupo
  502. ,'Rec. Perdido' as variavel
  503. ,4 as ordem
  504. ,0 as participacaometa
  505. ,0 as participacaorealizada
  506. ,coalesce(valormeta,0) as valormeta
  507. ,round(tb.sf,2) as valorrealizado
  508. ,round(case when tb.valormeta>0 then (1 - ((tb.valormeta-sf)/tb.valormeta)) * 100 else 0 end,2) as percrealizado
  509. --,round(coalesce(percentualvenda,0),2) as percrealizado
  510. ,round(case when tb.sf >= valormeta then 1 else 0 end,2) as pontos
  511. ,case when tb.sf >= valormeta then case when peso > 0 then (fixo * peso /100) else 0 end else 0 end as comissao
  512. from(
  513. select
  514. tb.*
  515. ,case when valorvenda <> 0 then sf/valorvenda else 0 end * 100 as percentualvenda
  516. from(
  517. select
  518. coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 2 and gmi.idtipometa = 1)
  519. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 2 and gm.idtipometa = 1)) as valormeta
  520. ,coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 2 and gmi.idtipometa = 1)
  521. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 2 and gm.idtipometa = 1)) as peso
  522. ,(select sum(sf) from realizado) as valorvenda
  523. ,sum(recperdido) as sf
  524. ,(select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  525. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  526.  
  527. ,(
  528. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 3 limit 1
  529. ) as excecao
  530. from recperda
  531. )tb
  532. )tb
  533.  
  534. union
  535.  
  536. select
  537. 'Carteira' as grupo
  538. ,'Juros' as variavel
  539. ,2 as ordem
  540. ,0 as participacaometa
  541. ,0 as participacaorealizada
  542. ,round(coalesce(case when valormeta <> 0 then metavenda * valormeta / 100 else 0 end,0),2) as valormeta
  543. ,round(tb.juros,2) as valorrealizado
  544. ,round(case when
  545. case when valormeta <> 0
  546. then metavenda * valormeta / 100 else 0 end >0
  547. then (1 - ((case when valormeta <> 0 then metavenda * valormeta / 100 else 0 end - juros)/case when valormeta <> 0 then metavenda * valormeta / 100 else 0 end)) * 100
  548. else 0 end,2) as percrealizado
  549. ,round(case when tb.juros >= case when valormeta <> 0 then metavenda * valormeta / 100 else 0 end then 1 else 0 end,2) as pontos
  550. ,case when excecao = 1 then (fixo * peso /100) else case when tb.juros >= case when valormeta <> 0 then metavenda * valormeta / 100 else 0 end then case when peso > 0 then (fixo * peso /100) else 0 end else 0 end end as comissao
  551. from(
  552. select
  553. round(coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 3 and gmi.idtipometa = 0)
  554. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 3 and gm.idtipometa = 0)),2) as valormeta
  555. ,coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 3 and gmi.idtipometa = 0)
  556. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 3 and gm.idtipometa = 0)) as peso
  557. ,case when sum(sf)<>0 then ( (sum(cf)-( sum(sf)) ) / sum(sf) ) * 100 else 0 end as percjuros
  558. ,(select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  559. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  560. ,round((select metavenda from metavenda),2) as metavenda
  561. ,sum(juros) as juros
  562. ,sum(sf) as sf
  563. ,(
  564. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 3 limit 1
  565. ) as excecao
  566. from realizado
  567. )tb
  568.  
  569. union
  570.  
  571. select
  572. 'Carteira' as grupo,
  573. 'Perdas Real' as variavel,
  574. 3 as ordem,
  575. (select sum(recperdido) from recperda) as participacaometa,
  576. (select sum(perdido180) as perdido from perdas) as participacaorealizada,
  577. valormeta,
  578. valorrealizado,
  579. round(case when tb.valormeta>0 then (1 - ((tb.valorrealizado-tb.valormeta)/tb.valormeta)) * 100 else 0 end,2) as percrealizado,
  580. round(case when valorrealizado <= valormeta then 1 else 0 end,2) as pontos,
  581. case when excecao = 1 then (fixo * peso /100) else case when valorrealizado <= valormeta then case when peso > 0 then (fixo * peso /100) else 0 end else 0 end end as comissao
  582. from(
  583. select
  584. round(coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 6 and gmi.idtipometa = 0)
  585. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 6 and gm.idtipometa = 0)),2) as valormeta,
  586. coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 6 and gmi.idtipometa = 0)
  587. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 6 and gm.idtipometa = 0)) as peso,
  588. coalesce(percreal,0) as valorrealizado,
  589. (select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  590. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  591. ,(
  592. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 6 limit 1
  593. ) as excecao
  594. from perdasreal
  595. where :anomes<201602
  596. )tb
  597.  
  598. union
  599.  
  600. select
  601. 'Carteira' as grupo
  602. ,'Desconto em Produtos' as variavel
  603. ,4 as ordem
  604. ,0 as participacaometa
  605. ,round(tb.desconto,2) as participacaorealizada
  606. ,tb.valormeta
  607. ,round(tb.percdesconto,2) as valorrealizado
  608. ,round(case when tb.valormeta>0 then (1 - ((tb.percdesconto-tb.valormeta)/tb.valormeta)) * 100 else 0 end,2) as percrealizado
  609. ,round(case when percdesconto <= valormeta then 1 else 0 end,2) as pontos
  610. ,case when excecao = 1 then (fixo * peso /100) else case when percdesconto <= valormeta then case when peso > 0 then (fixo * peso /100) else 0 end else 0 end end as comissao
  611. from(
  612. select
  613. peso
  614. ,fixo
  615. ,coalesce(valormeta,0) as valormeta
  616. ,desejado-sf as desconto
  617. ,excecao
  618. ,case when sf <> 0 then ((desejado-sf)/sf) else 0 end *100 as percdesconto
  619. from(
  620. select
  621. coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 5 and gmi.idtipometa = 0)
  622. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 5 and gm.idtipometa = 0)) as valormeta
  623. ,coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 5 and gmi.idtipometa = 0)
  624. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 5 and gm.idtipometa = 0)) as peso
  625. ,sum(desejado) as desejado
  626. ,sum(sf) as sf
  627. ,(select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  628. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  629. ,(
  630. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 5 limit 1
  631. ) as excecao
  632. from realizado
  633. )tb
  634. )tb
  635. )
  636. ,semgiro as (
  637. select
  638. sum(saldofinsg) as valorsemgiro
  639. from (
  640.  
  641. select
  642. round(case when (tb.posicao - case when tb.ultmov <>'' then date(tb.ultmov) else tb.posicao end ) > dsg.dias then tb.saldo * tb.custom else 0 end,2) as saldofinsg
  643. from (
  644.  
  645. select
  646. tb.idfilial as idfilial,
  647. tb.idproduto,
  648. tb.idgradex,
  649. tb.idgradey,
  650. tb.posicao,
  651. cast(split_part(tb.saldos,';',1) as numeric) as saldo,
  652. cast(split_part(tb.saldos,';',2) as numeric) as custo,
  653. cast(split_part(tb.saldos,';',3) as numeric) as custoent,
  654. cast(split_part(tb.saldos,';',4) as numeric) as custom,
  655. cast(split_part(tb.saldos,';',5) as numeric) as customgr,
  656. case when split_part(tb.saldos,';',6)='' then null else split_part(tb.saldos,';',6) end as ultmov
  657. from (
  658.  
  659. select
  660. tb.*
  661. ,(
  662. select
  663. round(tb.saldo,6)||';'||round(tb.custo,4)||';'||round(tb.custoent,4)||';'||round(tb.custom,4)||';'||round(tb.customgr,4)||';'||to_char(ultimomovimento,'yyyy-mm-dd')
  664. from (
  665. SELECT
  666. case when ib.quantidade>0 then ib.totalprecocusto/ib.quantidade else 0 end as custo,
  667. case when ib.quantidade>0 then ib.totalcustoentrada/ib.quantidade else 0 end as custoent,
  668. case when ib.quantidade>0 then ib.totalcustomedio/ib.quantidade else 0 end as custom ,
  669. case when ib.quantidade>0 then ib.totalcustomediogr/ib.quantidade else 0 end as customgr,
  670. ib.datamovimento as ultimomovimento,
  671. ib.saldo
  672. FROM
  673. rst.itembase ib
  674. left join glb.produto pd on (ib.idproduto = pd.idproduto)
  675. left join glb.produtograde pg on (pg.idproduto = pd.idproduto and pg.idgradex = ib.idgradex and pg.idgradey = ib.idgradey)
  676. left join glb.departamento dp on (dp.iddepartamento = pd.iddepartamento)
  677.  
  678. WHERE ib.idfilial = tb.idfilial
  679. and ib.datamovimento <= tb.posicao
  680. and ib.idoperacaoproduto > 0
  681. and ib.idlocalsaldo =1
  682. and ib.idproduto = tb.idproduto
  683. and ib.idgradex = tb.idgradex
  684. and ib.idgradey = tb.idgradey
  685. order by ib.idfilial, ib.idproduto, ib.idgradex, ib.idgradey, ib.idlocalsaldo, datamovimento desc, idmovimento desc
  686. limit 1
  687. ) tb
  688. ) as saldos
  689.  
  690. from (
  691. select
  692. pg.idfilial,
  693. pg.idproduto,
  694. pg.idgradex,
  695. pg.idgradey,
  696. date(date(:anomes||'01')+interval '1 month') - 1 as posicao
  697. from glb.produtograde pd
  698. inner join rst.produtogradefilial pg on (pg.idproduto = pd.idproduto and pg.idgradex = pd.idgradex and pg.idgradey = pd.idgradey)
  699. where pd.idsituacaoproduto =1
  700. and pg.idfilial in (:idfilial)
  701. group by pg.idfilial,pg.idproduto,pg.idgradex,pg.idgradey
  702. ) tb
  703.  
  704. ) tb
  705.  
  706. ) tb
  707.  
  708. left join glb.produto p on p.idproduto = tb.idproduto
  709. left join glb.marca m on m.idmarca = p.idmarca
  710. left join glb.departamento d on d.iddepartamento = p.iddepartamento
  711. LEFT JOIN gazin.compras_departamento_dias_sem_giro dsg ON dsg.linha = substr(d.classificacao,1,3)
  712.  
  713. ) tb
  714. )
  715. ,foralinha as (
  716.  
  717. select
  718.  
  719. sum( cast(split_part(tb.saldos,';',4) as numeric) * cast(split_part(tb.saldos,';',1) as numeric) ) as custom
  720. from (
  721.  
  722. select
  723. tb.*
  724. ,(
  725. select
  726. round(tb.saldo,6)||';'||round(tb.custo,4)||';'||round(tb.custoent,4)||';'||round(tb.custom,4)||';'||round(tb.customgr,4)||';'||to_char(ultimomovimento,'yyyy-mm-dd')
  727. from (
  728. SELECT
  729. case when ib.quantidade>0 then ib.totalprecocusto/ib.quantidade else 0 end as custo,
  730. case when ib.quantidade>0 then ib.totalcustoentrada/ib.quantidade else 0 end as custoent,
  731. case when ib.quantidade>0 then ib.totalcustomedio/ib.quantidade else 0 end as custom ,
  732. case when ib.quantidade>0 then ib.totalcustomediogr/ib.quantidade else 0 end as customgr,
  733. ib.datamovimento as ultimomovimento,
  734. ib.saldo
  735. FROM
  736. rst.itembase ib
  737. left join glb.produto pd on (ib.idproduto = pd.idproduto)
  738. left join glb.produtograde pg on (pg.idproduto = pd.idproduto and pg.idgradex = ib.idgradex and pg.idgradey = ib.idgradey)
  739. left join glb.departamento dp on (dp.iddepartamento = pd.iddepartamento)
  740.  
  741. WHERE ib.idfilial = tb.idfilial
  742. and ib.datamovimento <= tb.posicao
  743. and ib.idoperacaoproduto > 0
  744. and ib.idlocalsaldo =1
  745. and ib.idproduto = tb.idproduto
  746. and ib.idgradex = tb.idgradex
  747. and ib.idgradey = tb.idgradey
  748. order by ib.idfilial, ib.idproduto, ib.idgradex, ib.idgradey, ib.idlocalsaldo, datamovimento desc, idmovimento desc
  749. limit 1
  750. ) tb
  751. ) as saldos
  752.  
  753. from (
  754. select
  755. pg.idfilial,
  756. pg.idproduto,
  757. pg.idgradex,
  758. pg.idgradey,
  759. date(date(:anomes||'01')+interval '1 month') - 1 as posicao
  760. from glb.produtograde pd
  761. inner join rst.produtogradefilial pg on (pg.idproduto = pd.idproduto and pg.idgradex = pd.idgradex and pg.idgradey = pd.idgradey)
  762. where pg.idfilial in (:idfilial)
  763. and pd.idsituacaoproduto in (2,3)
  764. and case when pd.ultimaalteracao is not null then pd.ultimaalteracao <= date(date(:anomes||'01')+interval '1 month') - 1 else true end
  765. group by pg.idfilial,pg.idproduto,pg.idgradex,pg.idgradey
  766. ) tb
  767.  
  768. ) tb
  769. )
  770. ,auditoria as (
  771. select gazin.ccg_get_auditoria_estoque(:idfilial, cast(:anomes as varchar), 1) as nota
  772. )
  773. ,estoque AS (
  774.  
  775. select
  776. 'Estoque' as grupo
  777. ,'Total Estoque' as variavel
  778. ,1 as ordem
  779. ,0 as participacaometa
  780. ,0 as participacaorealizada
  781. ,valormeta
  782. ,valorrealizado
  783. ,case when valorrealizado > 0 then percrealizado else 0 end as percrealizado
  784. ,pontos
  785. ,case when excecao = 1 then fixo / 100 * peso else case when pontos = 1 and valorrealizado > 0 then fixo / 100 * peso else 0 end end as comissao
  786. from(
  787. select
  788. coalesce(valormeta,0) as valormeta
  789. ,round(saldofin,2) as valorrealizado
  790. ,round(case when tb.valormeta>0 then (1 - ((saldofin-tb.valormeta)/tb.valormeta)) * 100 else 0 end,2) as percrealizado
  791. ,peso
  792. ,fixo
  793. ,excecao
  794. ,round(case when case when tb.valormeta>0 then saldofin/tb.valormeta * 100 else 0 end <=100 then 1 else 0 end,2) as pontos
  795. from(
  796. select
  797. coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 4 and gmi.idtipometa = 1)
  798. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 4 and gm.idtipometa = 1)) as valormeta,
  799. coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 4 and gmi.idtipometa = 1)
  800. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 4 and gm.idtipometa = 1)) as peso,
  801. saldofin,
  802. (select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  803. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  804. ,(
  805. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 4 limit 1
  806. ) as excecao
  807. from saldofin
  808. )tb
  809. )tb
  810.  
  811. union
  812.  
  813. select
  814. 'Estoque' as grupo
  815. ,'Produtos S/ Giro' as variavel
  816. ,2 as ordem
  817. ,0 as participacaometa
  818. ,0 as participacaorealizada
  819. ,valormeta
  820. ,valorrealizado
  821. ,case when valorrealizado > 0 then percrealizado else 0 end as percrealizado
  822. ,pontos
  823. ,case when excecao = 1 then fixo / 100 * peso else case when pontos = 1 and valorrealizado > 0 then fixo / 100 * peso else 0 end end as comissao
  824. FROM(
  825. select
  826. coalesce(valormeta,0) as valormeta,
  827. coalesce(valorsemgiro,0) as valorrealizado,
  828. round(case when tb.valormeta>0 then (1 - ((valorsemgiro-tb.valormeta)/tb.valormeta)) * 100 else 0 end,2) as percrealizado,
  829. peso,
  830. fixo,
  831. excecao,
  832. round(case when case when tb.valormeta>0 then (1 - ((valorsemgiro-tb.valormeta)/tb.valormeta)) * 100 else 0 end >=100 then 1 else 0 end,2) as pontos
  833. from(
  834. select
  835. coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 9 and gmi.idtipometa = 1)
  836. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 9 and gm.idtipometa = 1)) as valormeta,
  837. coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 9 and gmi.idtipometa = 1)
  838. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 9 and gm.idtipometa = 1)) as peso,
  839. valorsemgiro,
  840. (select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  841. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  842. ,(
  843. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 9 limit 1
  844. ) as excecao
  845. from semgiro
  846. )tb
  847. )tb
  848.  
  849. union
  850.  
  851. select
  852. 'Estoque' as grupo
  853. ,'Produtos Fora de Linha' as variavel
  854. ,3 as ordem
  855. ,0 as participacaometa
  856. ,0 as participacaorealizada
  857. ,valormeta
  858. ,valorrealizado
  859. ,case when valorrealizado > 0 then percrealizado else 0 end as percrealizado
  860. ,pontos
  861. ,case when excecao = 1 then fixo / 100 * peso else case when pontos = 1 and valorrealizado <= valormeta then fixo / 100 * peso else 0 end end as comissao
  862. FROM(
  863. select
  864. coalesce(valormeta,0) as valormeta,
  865. coalesce(custom,0) as valorrealizado,
  866. round(case when tb.valormeta>0 then (1 - ((custom-tb.valormeta)/tb.valormeta)) * 100 else 0 end,2) as percrealizado,
  867. peso,
  868. fixo,
  869. excecao,
  870. round(case when case when tb.valormeta>0 then (1 - ((custom-tb.valormeta)/tb.valormeta)) * 100 else 0 end >=100 then 1 else 0 end,2) as pontos
  871. from(
  872. select
  873. coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 8 and gmi.idtipometa = 1)
  874. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 8 and gm.idtipometa = 1)) as valormeta,
  875. coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 8 and gmi.idtipometa = 1)
  876. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 8 and gm.idtipometa = 1)) as peso,
  877. custom,
  878. (select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  879. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  880. ,(
  881. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 8 limit 1
  882. ) as excecao
  883. from foralinha
  884. )tb
  885. )tb
  886.  
  887. union
  888.  
  889. select
  890. 'Estoque' as grupo
  891. ,'Auditoria' as variavel
  892. ,4 as ordem
  893. ,0 as participacaometa
  894. ,0 as participacaorealizada
  895. ,valormeta
  896. ,valorrealizado
  897. ,case when valorrealizado > 0 then percrealizado else 0 end as percrealizado
  898. ,pontos
  899. ,case when excecao = 1 then fixo / 100 * peso else case when percrealizado >= 100 then fixo / 100 * peso else 0 end end as comissao
  900. FROM(
  901. select
  902. coalesce(valormeta,0) as valormeta,
  903. coalesce(nota,0) as valorrealizado,
  904. round(case when tb.valormeta>0 then (1 - ((tb.valormeta-nota)/tb.valormeta)) * 100 else 0 end,2) as percrealizado,
  905. peso,
  906. fixo,
  907. excecao,
  908. round(case when nota >= 8 then 1 else 0 end,2) as pontos
  909. from(
  910. select
  911. coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 7 and gmi.idtipometa = 1)
  912. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 7 and gm.idtipometa = 1)) as valormeta,
  913. coalesce((select gmi.peso from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 7 and gmi.idtipometa = 1)
  914. ,(select gm.peso from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 7 and gm.idtipometa = 1)) as peso,
  915. nota,
  916. (select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  917. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo,
  918. (
  919. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 7 limit 1
  920. ) as excecao
  921. from auditoria
  922. )tb
  923. )tb
  924. )
  925. ,reembolsomargem as (
  926. select
  927. gr.valor
  928. from gazin.ccg_gerente_reembolsomargem gr
  929. where gr.anomes = :anomes
  930. and gr.uf = (
  931. select
  932. ci.uf
  933. from glb.filial fl
  934. left join glb.endereco ed on ed.idcnpj_cpf = fl.idcnpj_cpf and ed.idtipoendereco = 1
  935. left join glb.cidade ci on ci.idcidade = ed.idcidade
  936. where fl.idfilial = :idfilial)
  937. )
  938. ,margem AS (
  939. select
  940. 'Margem' as grupo
  941. ,'Faturamento Bruto' as variavel
  942. ,1 as ordem
  943. ,0 as participacaometa
  944. ,0 as participacaorealizada
  945. ,round(coalesce(case when metajuros <> 0 then metavenda * metajuros / 100 else 0 end + metavenda,0),2) as valormeta
  946. ,round(faturamento,2) as valorrealizado
  947. ,round(case when case when metajuros <> 0 then metavenda * metajuros / 100 else 0 end + metavenda <> 0 then faturamento/(case when metajuros <> 0 then metavenda * metajuros / 100 else 0 end + metavenda) * 100 else 0 end,2) as percrealizado
  948. ,0 as pontos
  949. ,0 as comissao
  950. FROM(
  951. select
  952. coalesce((select metavenda from metavenda),0) as metavenda
  953. ,round((select gmi.valormeta as valormeta from gazin.ccg_gerente_metas_individual gmi
  954. where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 3 and gmi.idtipometa = 0),2) as metajuros
  955. ,sum(sf) as sf
  956. ,sum(juros + sf) as faturamento
  957. from
  958. realizado
  959. )tb
  960.  
  961. UNION
  962.  
  963. SELECT
  964. 'Margem' as grupo
  965. ,'Faturamento S/ Financeiro' as variavel
  966. ,2 as ordem
  967. ,0 as participacaometa
  968. ,0 as participacaorealizada
  969. ,coalesce(metavenda,0) as valormeta
  970. ,round(vendasf,2) as valorrealizado
  971. ,round(case when tb.metavenda>0 then vendasf/tb.metavenda * 100 else 0 end,2) as percrealizado
  972. ,round(case when case when tb.metavenda>0 then vendasf/tb.metavenda * 100 else 0 end >=100 then 1 else 0 end,2) as pontos
  973. ,0 as comissao
  974. FROM(
  975. SELECT
  976. (select metavenda from metavenda) as metavenda
  977. ,sum(sf) as vendasf
  978. from
  979. realizado
  980. )tb
  981.  
  982. union
  983.  
  984. SELECT
  985. 'Margem' as grupo
  986. ,'Custo Mercadoria Vendida' as variavel
  987. ,3 as ordem
  988. ,0 as participacaometa
  989. ,0 as participacaorealizada
  990. ,0 as valormeta
  991. ,round(cm,2) * -1 as valorrealizado
  992. ,0 as percrealizado
  993. ,0 as pontos
  994. ,0 as comissao
  995. FROM(
  996. SELECT
  997. sum(case when idgrupo = 4 then cm+(cm * /*(case when uf in ('MS', 'PR') and anomes>= 201311 then 45 * 1.0 else 70 * 1.0 end/100)*/
  998. (select COALESCE(valor,0) from reembolsomargem) / 100
  999. ) else cm end) as cm
  1000. from
  1001. realizado
  1002. )tb
  1003.  
  1004. UNION
  1005.  
  1006. select
  1007. 'Margem' as grupo
  1008. ,'Impostos' as variavel
  1009. ,4 as ordem
  1010. ,0 as participacaometa
  1011. ,0 as participacaorealizada
  1012. ,0 as valormeta
  1013. ,round(imposto ,2) * -1 as valorrealizado
  1014. ,0 as percrealizado
  1015. ,0 as pontos
  1016. ,0 as comissao
  1017. FROM(
  1018. select
  1019. sum(pis+cofins+icms) as imposto
  1020. from
  1021. realizado
  1022. )tb
  1023.  
  1024. UNION
  1025.  
  1026. select
  1027. 'Margem' as grupo
  1028. ,'Gratificações C/ Encargos' as variavel
  1029. ,5 as ordem
  1030. ,0 as participacaometa
  1031. ,0 as participacaorealizada
  1032. ,0 as valormeta
  1033. ,round(sum(valorrealizado),2) * -1 as valorrealizado
  1034. ,0 as percrealizado
  1035. ,0 as pontos
  1036. ,0 as comissao
  1037. FROM(
  1038. select
  1039. case
  1040. when idgrupo = 1 then ((sf * 1.50 /100)* 1.65)
  1041. when idgrupo = 2 then ((sf * 4.00 /100)* 1.65)
  1042. when idgrupo = 3 then ((sf * 5.00 /100)* 1.65)
  1043. when idgrupo = 4 then ((sf * 5.00 /100)* 1.65)
  1044. when idgrupo = 5 then ((sf * 1.50 /100)* 1.65)
  1045. end as valorrealizado
  1046. from
  1047. realizado r
  1048. --left join gazin.ccg_gerente_grupo_comissao_linha gcl on gcl.linhas = linha --and gcl.anomes = r.anomes
  1049. )tb
  1050.  
  1051. union
  1052.  
  1053. select
  1054. 'Margem' as grupo
  1055. ,'Vendas Fora de Linha' as variavel
  1056. ,6 as ordem
  1057. ,0 as participacaometa
  1058. ,0 as participacaorealizada
  1059. ,valormeta
  1060. ,coalesce(valorrealizado,0) as valorrealizado
  1061. ,round(case when tb.valormeta>0 then (1 - ((tb.valormeta-valorrealizado)/tb.valormeta)) * 100 else 0 end,2) as percrealizado
  1062. ,0 as pontos
  1063. ,0 as comissao
  1064. from(
  1065. select
  1066. coalesce((select gmi.valormeta from gazin.ccg_gerente_metas_individual gmi where gmi.idfilial = :idfilial and gmi.anomes = cast(:anomes as integer) and gmi.idmeta = 10 and gmi.idtipometa = 1)
  1067. ,(select gm.valormeta from gazin.ccg_gerente_metas gm where gm.anomes = cast(:anomes as integer) and gm.idmeta = 10 and gm.idtipometa = 1)) as valormeta
  1068. ,round(sum(cf),2) as valorrealizado
  1069. FROM
  1070. realizado r
  1071. where r.idsituacaoproduto = 3
  1072. )tb
  1073.  
  1074. union
  1075.  
  1076. select
  1077. 'Margem' as grupo
  1078. ,'*' as variavel
  1079. ,7 as ordem
  1080. ,0 as participacaometa
  1081. ,0 as participacaorealizada
  1082. ,0 as valormeta
  1083. ,0 as valorrealizado
  1084. ,0 as percrealizado
  1085. ,0 as pontos
  1086. ,0 as comissao
  1087.  
  1088. union
  1089.  
  1090. select
  1091. 'Margem' as grupo
  1092. ,descricao as variavel
  1093. ,8 as ordem
  1094. ,0 as participacaometa
  1095. ,0 as participacaorealizada
  1096. ,coalesce(metagrupo, 0) as valormeta
  1097. ,round(margem,2) as valorrealizado
  1098. ,round( case when cf>0 then margem/cf else 0 end *100,2) as percrealizado
  1099. ,round(case when cf>0 and (margem/cf*100) >= metagrupo then 1 else 0 end,2) as pontos
  1100. ,0 as comissao
  1101. from(
  1102. select
  1103. descricao
  1104. ,metagrupo
  1105. ,cf
  1106. ,cftotal
  1107. ,(cf - impostos - cm - encargos) as margem
  1108. ,cftotal-cmtotal-pistotal-cofinstotal-icmstotal-sum(encargos) over () as margemtotal
  1109. from(
  1110. select
  1111. descricao
  1112. ,metagrupo
  1113. ,sf
  1114. ,cf
  1115. ,pis
  1116. ,cofins
  1117. ,icms
  1118. ,case when idgrupo = 4 then cm+(cm * /*(case when uf in ('MS', 'PR') and anomes>= 201311 then 45 * 1.0 else 70 * 1.0 end/100) */
  1119. COALESCE((select valor from reembolsomargem),0) / 100
  1120. ) else cm end cm
  1121. ,(pis+cofins+icms) as impostos
  1122. ,case
  1123. when idgrupo = 1 then ((sf * 1.50 /100)* 1.65)
  1124. when idgrupo = 2 then ((sf * 4.00 /100)* 1.65)
  1125. when idgrupo = 3 then ((sf * 5.00 /100)* 1.65)
  1126. when idgrupo = 4 then ((sf * 5.00 /100)* 1.65)
  1127. when idgrupo = 5 then ((sf * 1.50 /100)* 1.65)
  1128. end as encargos
  1129. ,sum(sf) over () as sftotal
  1130. ,sum(cf) over () as cftotal
  1131. ,sum(case when idgrupo = 4 then cm+(cm * /*(case when uf in ('MS', 'PR') and anomes>= 201311 then 45 else 70 end/100)*/
  1132. COALESCE((select valor from reembolsomargem),0) / 10
  1133. ) else cm end) over () as cmtotal
  1134. ,sum(pis) over () as pistotal
  1135. ,sum(cofins) over () as cofinstotal
  1136. ,sum(icms) over () as icmstotal
  1137. from(
  1138. select
  1139. r.idgrupo
  1140. ,ggc.descricao
  1141. ,r.anomes
  1142. ,r.uf
  1143. ,(select gmm.valormeta from gazin.ccg_gerente_metamargem_individual gmm where gmm.idfilial = :idfilial and gmm.anomes = :anomes and gmm.idgrupo = r.idgrupo) as metagrupo
  1144. ,sum(r.sf) as sf
  1145. ,sum(r.cf) as cf
  1146. ,sum(r.cm) as cm
  1147. ,sum(r.pis) as pis
  1148. ,sum(r.cofins) as cofins
  1149. ,sum(r.icms) as icms
  1150. from realizado r
  1151. --left join gazin.ccg_gerente_grupo_comissao_linha gcl on gcl.linhas = linha --and gcl.anomes = r.anomes
  1152. left join gazin.ccg_gerentes_grupo_comissao ggc on ggc.idgrupo = r.idgrupo
  1153. where r.idgrupo is not null
  1154. group by 1,2,3,4,5
  1155. )tb
  1156. )tb
  1157. order by 1
  1158. )tb
  1159.  
  1160. union
  1161.  
  1162.  
  1163. select
  1164. 'Margem' as grupo
  1165. ,'Margem' as variavel
  1166. ,9 as ordem
  1167. ,0 as participacaometa
  1168. ,0 as participacaorealizada
  1169. ,coalesce(meta, 0) as valormeta
  1170. ,round(margem,2) as valorrealizado
  1171. ,round( case when cf >0 then margem/cf*100 else 0 end ,2) as percrealizado
  1172. ,round(case when cf>0 and (margem/cf*100) >= meta then 1 else 0 end,2) as pontos
  1173. ,case when excecao = 1 then (fixo * peso / 100) else case when cf >0 and (margem/cf*100) >= meta then (fixo * peso /100) else 0 end end as comissao
  1174. from(
  1175. select
  1176. meta
  1177. ,excecao
  1178. ,cf
  1179. ,(cf + foralinha - impostos - cm - encargos) as margem
  1180. ,peso
  1181. ,fixo
  1182. from(
  1183. select
  1184. meta
  1185. ,peso
  1186. ,excecao
  1187. ,(select f.faixasalario from gazin.ccg_gerente_faixa_salario f where
  1188. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes) as fixo
  1189. ,sum(sf) as sf
  1190. ,sum(cf) as cf
  1191. ,sum(case when idgrupo = 4 then cm+(cm * /*(case when uf in ('MS', 'PR') and anomes>= 201311 then 45 * 1.0 else 70 * 1.0 end/100)*/
  1192. (select valor from reembolsomargem) / 100
  1193. ) else cm end) as cm
  1194. ,sum(pis)+sum(cofins)+sum(icms) as impostos
  1195. ,sum(case
  1196. when idgrupo = 1 then ((sf * 1.50 /100)* 1.65)
  1197. when idgrupo = 2 then ((sf * 4.00 /100)* 1.65)
  1198. when idgrupo = 3 then ((sf * 5.00 /100)* 1.65)
  1199. when idgrupo = 4 then ((sf * 5.00 /100)* 1.65)
  1200. when idgrupo = 5 then ((sf * 1.50 /100)* 1.65)
  1201. end) as encargos,
  1202. coalesce((select sum(cf) from realizado where idsituacaoproduto = 3),0) as foralinha
  1203. from(
  1204. select
  1205. r.idgrupo
  1206. ,r.anomes
  1207. ,r.uf
  1208. ,(select gmm.valormeta from gazin.ccg_gerente_metamargem_geral gmm where gmm.idfilial = :idfilial and gmm.anomes = :anomes) as meta
  1209. ,(select gmm.peso from gazin.ccg_gerente_metamargem_geral gmm where gmm.idfilial = :idfilial and gmm.anomes = :anomes) as peso
  1210. ,sum(r.sf) as sf
  1211. ,sum(r.cf) as cf
  1212. ,sum(r.cm) as cm
  1213. ,sum(r.pis) as pis
  1214. ,sum(r.cofins) as cofins
  1215. ,sum(r.icms) as icms
  1216. ,(
  1217. select 1 from excecao where idfilial = :idfilial and anomes = :anomes and idmeta = 11 limit 1
  1218. ) as excecao
  1219. from realizado r
  1220. --left join gazin.ccg_gerentes_grupo_comissao gc on gc.idgrupo = linha --and gcl.anomes = r.anomes
  1221. group by 1,2,3,4,5
  1222. )tb
  1223. group by 1,2,3,4
  1224. )tb
  1225. order by 1
  1226. )tb
  1227. )
  1228. ,grupocomissao AS (
  1229. select
  1230. scg.*
  1231. ,gs.descricao as descgruposervico
  1232. ,sgc.descricao as descgrupocomissao
  1233. ,s.descricao as descservico
  1234. from
  1235. gazin.ccg_servico_comissao_grupo scg
  1236. left join gazin.ccg_grupo_servico gs on gs.idgruposervico = scg.idgruposervico
  1237. left join gazin.ccg_servico_grupo_comissao sgc on sgc.idgrupo = scg.idgrupo
  1238. left join glb.servico s on s.idservico = scg.idservico
  1239. where scg.anomes = :anomes
  1240. )
  1241. ,aproveitamento AS (
  1242. select
  1243. s.ididentificador
  1244. ,gc.idgruposervico
  1245. ,deaproveitamento
  1246. ,ateaproveitamento
  1247. ,faixacomissao
  1248. ,faixagarantia
  1249. FROM gazin.ccg_servico_aproveitamento s
  1250. left join grupocomissao gc on gc.ididentificador = s.ididentificador
  1251. )
  1252. ,vendas AS (
  1253. select
  1254. tb.idfilial
  1255. ,tb.idvendedor
  1256. ,to_char(tb.datamovimento, 'yyyymm') as anomes
  1257. ,tb.idpromocao
  1258. ,tb.idtipopessoa
  1259. ,tb.linha
  1260. ,tb.sublinha
  1261. ,tb.quantidade
  1262. ,tb.totalpresente
  1263. ,tb.totalreembolso
  1264. ,tb.reembolsopromocao
  1265. ,tb.totalfuturo
  1266. ,tb.totalcustomedio
  1267. ,tb.impostos
  1268. ,tb.comissao
  1269. ,tb.totalprazos
  1270. ,tb.valortitulos
  1271. ,case when tb.totalpresente <>0 then 100-( tb.totalcustomedio / tb.totalpresente *100 ) else 0 end as rentabilidade_sf
  1272. ,case when tb.totalfuturo <>0 then 100-( tb.totalcustomedio / tb.totalfuturo *100 ) else 0 end as rentabilidade_cf
  1273. ,tb.totalfuturo - tb.totalpresente as financeiro
  1274. ,case when tb.totalpresente <>0 then ( (tb.totalfuturo - tb.totalpresente) /tb.totalpresente*100 ) else 0 end as perc_financeiro
  1275. ,case when tb.totalprazos<>0 then tb.valortitulos/ tb.totalprazos else 0 end as prazomedio
  1276. ,0 as idproduto
  1277. ,tb.totaldesejadopresente
  1278. ,elegivelgarantia
  1279. ,idsituacaoproduto
  1280. from (
  1281. select
  1282.  
  1283. tb.idfilial
  1284. ,tb.idvendedor
  1285. ,tb.datamovimento
  1286. ,tb.idpromocao
  1287. ,tb.idtipopessoa
  1288. ,tb.linha
  1289. ,tb.sublinha
  1290. ,tb.elegivelgarantia
  1291. ,tb.idsituacaoproduto
  1292. ,sum(tb.quantidade) as quantidade
  1293. ,sum(tb.totalpresente) as totalpresente
  1294. ,sum(tb.totalreembolso) as totalreembolso
  1295. ,sum(tb.reembolsopromocao) as reembolsopromocao
  1296. ,sum(tb.totalfuturo) as totalfuturo
  1297. ,sum(tb.totalcustomedio) as totalcustomedio
  1298. ,sum(tb.impostos) as impostos
  1299. ,sum(tb.comissao) as comissao
  1300. ,sum(cast( split_part( tb.prazomedio,';',1 ) as numeric)) as totalprazos
  1301. ,sum(cast( split_part( tb.prazomedio,';',2 ) as numeric)) as valortitulos
  1302. ,sum(tb.totaldesejadopresente) as totaldesejadopresente
  1303. from (
  1304.  
  1305. select
  1306. ib.idfilial
  1307. ,coalesce(ib.idvendedor,0) as idvendedor
  1308. ,ib.datamovimento
  1309. ,(coalesce(ib.idpromocao,0)) as idpromocao
  1310. ,coalesce(pes.idtipopessoa,0) as idtipopessoa
  1311. ,substr(d.classificacao,1,3) as linha
  1312. ,substr(d.classificacao,1,5) as sublinha
  1313. --and not COALESCE(i.idprocessomestre,1) in (9657 ,9658, 9659 /*, 9695,9696,9689*/ ) -- conta como venda
  1314. ,case when ib.idprocessomestre in ( 9657 ,9658, 9659,9678, 9679, 9685, 9695,9696,9689 ) then 0 else 1 end as elegivelgarantia /* vendas recuperado 9657 ,9658, 9659,9678, 9679, 9685,9695,9689,9696*/
  1315. ,pg.idsituacaoproduto
  1316. --,ib.idproduto
  1317. ,ib.quantidade * case when ib.idoperacaoproduto = 101040 then -1 else 1 end as quantidade
  1318. ,ib.totalpresente * case when ib.idoperacaoproduto = 101040 then -1 else 1 end as totalpresente
  1319. ,ib.totalreembolso * case when ib.idoperacaoproduto = 101040 then -1 else 1 end as totalreembolso
  1320. ,ib.reembolsopromocao * case when ib.idoperacaoproduto = 101040 then -1 else 1 end as reembolsopromocao
  1321. ,ib.totalfuturo * case when ib.idoperacaoproduto = 101040 then -1 else 1 end as totalfuturo
  1322. ,ib.totalcustomedio * case when ib.idoperacaoproduto = 101040 then -1 else 1 end as totalcustomedio
  1323.  
  1324. ,(ib.totalcofins + ib.totalpis) * case when ib.idoperacaoproduto = 101040 then -1 else 1 end +
  1325. (ib.totalbasecalculoicms * ib.aliquotaicms/100) * case when ib.idoperacaoproduto = 101040 then -1 else 1 end +
  1326. (ib.totalitem * ib.aliquotaipi/100) * case when ib.idoperacaoproduto = 101040 then -1 else 1 end
  1327. AS impostos
  1328.  
  1329.  
  1330.  
  1331. ,case when ib.totalpresente<>0 and ((ib.idpromocao is null) or (ib.percentualcomissao = -1) or (coalesce(v.idgrupo,0)<>0)) then
  1332. public.calcular_percentualcomissaovendas(case when v.idgrupo > 0
  1333. then v.idgrupo
  1334. else gf.idgrupo
  1335. end,
  1336. ib.datamovimento,
  1337. d.classificacao,
  1338. ib.idproduto,
  1339. n.idprocessomestre,
  1340. round( (100-( case when ib.idoperacaoproduto = 102010
  1341. then ib.totalcustomedio
  1342. else ib.totalcustoentrada
  1343. end / ib.totalpresente * 100)),2 ) )
  1344. else ib.percentualcomissao end/100 * ib.totalpresente * case when ib.idoperacaoproduto = 101040 then -1 else 1 end as comissao
  1345.  
  1346. ,(
  1347.  
  1348. select
  1349. sum( ( ( case when (select sum( ib2.totalitem ) from rst.itembase ib2 where ib2.idfilial = ib.idfilial and ib2.idpedidovenda = ib.idpedidovenda )<> 0 then ib.totalitem / (select sum( ib2.totalitem ) from rst.itembase ib2 where ib2.idfilial = ib.idfilial and ib2.idpedidovenda = ib.idpedidovenda ) else 0 end ) * tp.valorcontabil ) )
  1350.  
  1351. ||';'||sum( ( case when (select sum( ib2.totalitem ) from rst.itembase ib2 where ib2.idfilial = ib.idfilial and ib2.idpedidovenda = ib.idpedidovenda ) <>0 then ib.totalitem/ (select sum( ib2.totalitem ) from rst.itembase ib2 where ib2.idfilial = ib.idfilial and ib2.idpedidovenda = ib.idpedidovenda ) else 0 end * tp.valorcontabil)* (tp.datavencimento - t.datainclusao) )
  1352.  
  1353.  
  1354. from rst.notatitulo nt
  1355. left join rst.tituloparcela tp on tp.idtipotitulo = nt.idtipotitulo
  1356. and tp.idfilial = nt.idfilial
  1357. and tp.idtitulo = nt.idtitulo
  1358.  
  1359. left join rst.titulo t on t.idtipotitulo = nt.idtipotitulo
  1360. and t.idfilial = nt.idfilial
  1361. and t.idtitulo = nt.idtitulo
  1362.  
  1363. where nt.idtipotitulo =1
  1364. and nt.idfilial = ib.idfilial
  1365. and nt.idregistronota = ib.idregistronota
  1366. and t.idtipocarteira <> 7
  1367. and tp.idparcialtitulo = 0
  1368. ) as prazomedio
  1369. ,ib.totaldesejadopresente * case when ib.idoperacaoproduto = 101040 then -1 else 1 end as totaldesejadopresente
  1370.  
  1371. from rst.itembase ib
  1372. left join glb.pessoa pes on pes.idcnpj_cpf = ib.idcnpj_cpf
  1373. left join glb.vendedor v on v.idvendedor = ib.idvendedor
  1374. LEFT JOIN glb.grupofilial gf on ib.idfilialorigem=gf.idfilial and gf.idtipogrupo= 10
  1375. left join rst.nota n on n.idfilial = ib.idfilial and n.idregistronota = ib.idregistronota
  1376. left join glb.produto p on p.idproduto = ib.idproduto
  1377. left join glb.produtograde pg on pg.idproduto = ib.idproduto and pg.idgradex = ib.idgradex and pg.idgradey = ib.idgradey
  1378. left join glb.departamento d on d.iddepartamento = p.iddepartamento
  1379. where ib.idfilial = :idfilial
  1380. and ib.datamovimento between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1
  1381. and ib.idoperacaoproduto in ( 102010,101040 )
  1382.  
  1383. ) tb
  1384. group by 1,2,3,4,5,6,7,8,9
  1385. ) tb
  1386. order by 1,2,3,4,5
  1387. ),
  1388. elegivelgarantia AS (
  1389. select
  1390. v.idfilial
  1391. ,idvendedor
  1392. ,anomes
  1393. ,sum(v.totalpresente) as elegivel
  1394. from vendas v
  1395. where v.anomes = :anomes
  1396. and v.idfilial = :idfilial
  1397. and not v.linha between '150' and '150999999'
  1398. and not v.linha between '119' and '119999999'
  1399. and v.idtipopessoa = 1
  1400. and coalesce(v.elegivelgarantia,0) = 1
  1401. group by 1,2,3
  1402. ),
  1403. vendaservico AS (
  1404. select
  1405. its.idfilial
  1406. ,its.idvendedor
  1407. ,to_char(its.datamovimento, 'yyyymm') as anomes
  1408. ,s.idgruposervico
  1409. ,its.idservico
  1410. ,sum( case when its.idoperacaoservico in (201020) then -1 else case when its.idoperacaoservico = 201025 then 0 else 1 end end * ( its.percentualcomissao/100 * its.totalpresente)) as comissao
  1411. ,sum( case when its.idoperacaoservico in (201020) then -1 else case when its.idoperacaoservico = 201025 then 0 else 1 end end ) as servico_vendido
  1412. ,sum( its.totalpresente * case when its.idoperacaoservico in (201020)
  1413. then -1
  1414. else case when its.idoperacaoservico = 201025
  1415. then 0
  1416. else 1
  1417. end
  1418. end ) as servico_presente
  1419. ,sum( its.totalfuturo * case when its.idoperacaoservico in (201020) then -1 else case when its.idoperacaoservico = 201025 then 0 else 1 end end) as servico_futuro
  1420.  
  1421. ,sum( its.totalpresente * case when its.idoperacaoservico = 201025 then 1 else 0 end ) as perdas
  1422.  
  1423. from rst.itemservico its
  1424. left join glb.servico s on s.idservico = its.idservico
  1425. left join rst.itembase i on (i.idfilial=its.idfilial and i.iditembase=its.iditembase)
  1426. where its.idfilial = :idfilial
  1427. and its.datamovimento between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1
  1428. and its.idoperacaoservico in ( 201020,201025,202010,202020 )
  1429. and ( s.idgruposervico != 1 or not its.idprocessomestre in ( 9657 ,9658, 9659,9678, 9679, 9685, 9695,9696,9689 ) )
  1430. group by 1,2 ,3 ,4 , 5
  1431. ),
  1432. elegivelprotecao AS (
  1433. select
  1434. tb.idfilial
  1435. --,tb.idvendedor
  1436. ,to_char(tb.datamovimento, 'yyyymm') as anomes
  1437. ,2 as idgruposervico
  1438. ,sum(elegivel) - sum(elegivelcancelado) as elegivel
  1439.  
  1440. from (
  1441.  
  1442. select
  1443. pv.idfilial
  1444. ,pv.idvendedor
  1445. ,t.datainclusao as datamovimento
  1446. ,pv.idpedidovenda
  1447. ,1 as elegivel
  1448. ,0 as elegivelcancelado
  1449. from rst.pedidovenda pv
  1450. left join rst.titulopedidovenda nt on nt.idfilial = pv.idfilial
  1451. and nt.idpedidovenda = pv.idpedidovenda
  1452. left join rst.titulo t on t.idtipotitulo = nt.idtipotitulo
  1453. and t.idfilial = nt.idfilial
  1454. and t.idtitulo = nt.idtitulo
  1455. where pv.idfilial = :idfilial
  1456. and (t.datainclusao between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1 )
  1457. and exists( select 1
  1458. from glb.servico s
  1459. where s.idgruposervico =2
  1460. and public.validar_venda_servico( s.idservico,
  1461. t.idcnpj_cpf,
  1462. t.totalvalorcontabil,
  1463. t.quantidadeparcelas,
  1464. t.datainclusao,
  1465. pv.idprocesso ))
  1466.  
  1467. group by 1,2,3, 4
  1468.  
  1469. union
  1470.  
  1471. select
  1472. pv.idfilial
  1473. ,pv.idvendedor
  1474. ,pv.datacancelamento as datamovimento
  1475. ,pv.idpedidovenda
  1476. ,0 as elegivel
  1477. ,1 as elegivelcancelado
  1478.  
  1479. from rst.pedidovenda pv
  1480. left join rst.titulopedidovenda nt on nt.idfilial = pv.idfilial
  1481. and nt.idpedidovenda = pv.idpedidovenda
  1482. left join rst.titulo t on t.idtipotitulo = nt.idtipotitulo
  1483. and t.idfilial = nt.idfilial
  1484. and t.idtitulo = nt.idtitulo
  1485. left join glb.servico s on true and s.idgruposervico = 2
  1486. where pv.idfilial = :idfilial
  1487. and pv.idsituacaopedidovenda = 5
  1488. and (pv.datacancelamento between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1 )
  1489. and exists( select 1
  1490. from glb.servico s
  1491. where s.idgruposervico = 2
  1492. and public.validar_venda_servico( s.idservico,
  1493. t.idcnpj_cpf,
  1494. t.totalvalorcontabil,
  1495. t.quantidadeparcelas,
  1496. pv.databaixa,
  1497. pv.idprocesso ))
  1498. group by 1,2,3,4
  1499.  
  1500. ) tb
  1501.  
  1502.  
  1503. group by 1,2
  1504.  
  1505. order by 1,2
  1506. )
  1507. ,seguros AS (
  1508. select
  1509. sum(valor) as valor
  1510. from gazin.segurosparanatec s
  1511. where s.idfilial = :idfilial
  1512. and s.datamovimento between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1
  1513. )
  1514. ,consorcio AS (
  1515. select
  1516. tiposervico
  1517. ,sum(valor) as valor
  1518. from
  1519. (select
  1520. s.tiposervico
  1521. ,sum(s.valor) as valor
  1522. from gazin.gzvendasparanatec s
  1523. where s.idfilial = :idfilial
  1524. and s.datamovimento between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1
  1525. group by 1
  1526.  
  1527. union
  1528.  
  1529. select
  1530. idtipoconsorcio as tiposervico,
  1531. 0 as valor
  1532. from gazin.gztipoconsorcio
  1533.  
  1534. )tb
  1535. group by 1
  1536. )
  1537. ,garantia AS (
  1538. select
  1539. gc.descgrupocomissao as grupo
  1540. ,gc.descgruposervico as variavel
  1541. ,1 as ordem
  1542. ,tb.idgruposervico
  1543. ,meta
  1544. ,qtd
  1545. ,vendas
  1546. ,elegivel
  1547. ,aprov as percrealizado
  1548. ,faixacomissao
  1549. ,round(case when faixacomissao <> 0 then vendas * faixacomissao/100 else 0 end,2) comissao
  1550. ,case when aprov >= meta then 1 else 0 end pontos
  1551. from(
  1552. select
  1553. tb.idgruposervico
  1554. ,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,tb.idgruposervico)) as meta
  1555. ,qtd
  1556. ,vendas
  1557. ,elegivel
  1558. ,round(case when elegivel <> 0 then (vendas*1.0/elegivel*1.0) *100 else 0 end,2) as aprov
  1559.  
  1560. from(
  1561. select
  1562. -- cast(idgruposervico as integer) as
  1563. idgruposervico,
  1564. sum(qtd) as qtd,
  1565. sum(vendas) as vendas,
  1566. sum(elegivel) as elegivel
  1567. from(
  1568. select
  1569. idvendedor,
  1570. idgruposervico,
  1571. sum(qtd) as qtd,
  1572. sum(vendas) as vendas,
  1573. sum(elegivel) as elegivel
  1574. from(
  1575. select
  1576. idvendedor,
  1577. 1 as idgruposervico,
  1578. 0 as qtd,
  1579. 0 as vendas,
  1580. sum(elegivel) as elegivel
  1581. from elegivelgarantia
  1582. group by 1,2
  1583.  
  1584. union
  1585.  
  1586. select
  1587. idvendedor,
  1588. vs.idgruposervico,
  1589. sum(vs.servico_vendido) as qtd,
  1590. sum(vs.servico_presente),
  1591. 0 as elegivel
  1592. from vendaservico vs
  1593. where vs.idgruposervico = 1
  1594. group by 1,2
  1595. )tb
  1596. group by 1,2
  1597. )tb
  1598. --where vendas > 0
  1599. group by 1
  1600. )tb
  1601. )tb
  1602. left join aproveitamento a on a.idgruposervico = tb.idgruposervico and tb.aprov between deaproveitamento and ateaproveitamento
  1603. left join grupocomissao gc on gc.idgruposervico = tb.idgruposervico
  1604. )
  1605. ,protecao as (
  1606. select
  1607. gc.descgrupocomissao as grupo
  1608. ,cast('Proteção' as varchar) as variavel
  1609. ,2 as ordem
  1610. ,tb.idgruposervico
  1611. ,meta
  1612. ,qtd
  1613. ,vendas
  1614. ,elegivel
  1615. ,aprov
  1616. ,faixacomissao
  1617. ,aprov as percrealizado
  1618. ,aprovgarantia
  1619. ,round(faixacomissao*qtd,2) comissao
  1620. ,case when qtd >= meta then 1 else 0 end pontos
  1621. from(
  1622. select
  1623. idgruposervico
  1624. ,meta
  1625. ,qtd
  1626. ,vendas
  1627. ,elegivel
  1628. ,round(case when elegivel <> 0 then qtd/elegivel *100 else 0 end,2) as aprov
  1629. ,(select faixacomissao from garantia) as aprovgarantia
  1630. from(
  1631. select
  1632. vs.idgruposervico
  1633. ,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,vs.idgruposervico)) as meta
  1634. ,sum(vs.servico_vendido) as qtd
  1635. ,sum(vs.servico_presente) as vendas
  1636. ,round((select sum(elegivel) from elegivelprotecao),2) as elegivel
  1637. from
  1638. vendaservico vs
  1639. where vs.idgruposervico in (2)
  1640. group by 1,2
  1641. )tb
  1642. )tb
  1643. left join aproveitamento a on a.idgruposervico = tb.idgruposervico and case when meta <> 0 then aprov * 100 / meta else 0 end between deaproveitamento and ateaproveitamento and a.faixagarantia = aprovgarantia
  1644. left join grupocomissao gc on gc.idgruposervico = tb.idgruposervico
  1645. )
  1646. ,independentes AS (
  1647. select
  1648. grupo
  1649. ,cast('Premiado - 1,99' as varchar) as variavel
  1650. ,1 as ordem
  1651. ,tb.idservico
  1652. ,meta
  1653. ,qtd
  1654. ,vendas
  1655. ,faixacomissao
  1656. ,percrealizado
  1657. ,basecomissao
  1658. ,round(case when faixacomissao <> 0 then basecomissao * faixacomissao/100 else 0 end,2) comissao
  1659. ,case when vendas >= meta then 1 else 0 end pontos
  1660. from(
  1661. select
  1662. gc.descgrupocomissao as grupo
  1663. ,tb.idservico
  1664. ,meta
  1665. --,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,tb.idservico)) as meta
  1666. ,qtd
  1667. ,vendas
  1668. ,case when meta <> 0 then qtd * 100 / meta else 0 end as percrealizado
  1669. ,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador
  1670. and (case when meta <> 0 then qtd * 100 / meta else 0 end between deaproveitamento and ateaproveitamento) ) as faixacomissao
  1671. --,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador) as faixacomissao
  1672. ,(garantia+protecao) as basecomissao
  1673. from(
  1674. select
  1675. 234 as idservico
  1676. ,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,14,234)) *
  1677. (select vend from vendedor) as meta
  1678. ,coalesce((select sum(comissao) from garantia),0) as garantia
  1679. ,coalesce((select sum(comissao) from protecao),0) as protecao
  1680. ,sum(vs.servico_vendido) as qtd
  1681. ,sum(vs.servico_presente) as vendas
  1682. from
  1683. vendaservico vs
  1684. where vs.idservico in (114,234)
  1685. group by 1
  1686. )tb
  1687. left join grupocomissao gc on gc.idservico = tb.idservico
  1688. )tb
  1689.  
  1690. union
  1691.  
  1692. select
  1693. grupo
  1694. ,cast('Premiado - 4,99' as varchar) as variavel
  1695. ,2 as ordem
  1696. ,tb.idservico
  1697. ,meta
  1698. ,qtd
  1699. ,vendas
  1700. ,faixacomissao
  1701. ,percrealizado
  1702. ,basecomissao
  1703. ,round(case when faixacomissao <> 0 then basecomissao * faixacomissao/100 else 0 end,2) comissao
  1704. ,case when vendas >= meta then 1 else 0 end pontos
  1705. from(
  1706. select
  1707. gc.descgrupocomissao as grupo
  1708. ,tb.idservico
  1709. ,meta
  1710. --,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,tb.idservico)) as meta
  1711. ,qtd
  1712. ,vendas
  1713. ,case when meta <> 0 then qtd * 100 / meta else 0 end as percrealizado
  1714. ,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador
  1715. and (case when meta <> 0 then qtd * 100 / meta else 0 end between deaproveitamento and ateaproveitamento) ) as faixacomissao
  1716. --,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador) as faixacomissao
  1717. ,(garantia+protecao) as basecomissao
  1718. from(
  1719. select
  1720. 199 as idservico
  1721. ,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,14,235)) *
  1722. (select vend from vendedor) as meta
  1723. ,coalesce((select sum(comissao) from garantia),0) as garantia
  1724. ,coalesce((select sum(comissao) from protecao),0) as protecao
  1725. ,sum(vs.servico_vendido) as qtd
  1726. ,sum(vs.servico_presente) as vendas
  1727. from
  1728. vendaservico vs
  1729. where vs.idservico in (199,235)
  1730. group by 1
  1731. )tb
  1732. left join grupocomissao gc on gc.idservico = tb.idservico
  1733. )tb
  1734.  
  1735. union
  1736.  
  1737. select
  1738. grupo
  1739. ,cast(variavel as varchar) as variavel
  1740. ,3 as ordem
  1741. ,tb.idgruposervico
  1742. ,meta
  1743. ,qtd
  1744. ,vendas
  1745. ,faixacomissao
  1746. ,percrealizado
  1747. ,basecomissao
  1748. ,round(case when faixacomissao <> 0 then basecomissao * faixacomissao/100 else 0 end,2) comissao
  1749. ,case when vendas >= meta then 1 else 0 end pontos
  1750. from(
  1751. select
  1752. gc.descgrupocomissao as grupo
  1753. ,'Residencial' as variavel
  1754. ,tb.idgruposervico
  1755. ,meta
  1756. --,(select gazin.ccg_get_meta_gruposervico_filial(:idfilial,:anomes,tb.idgruposervico)) as meta
  1757. ,qtd
  1758. ,vendas
  1759. ,case when meta > 0 then qtd * 100 / meta else 0 end as percrealizado
  1760. ,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador
  1761. and (case when meta <> 0 then qtd * 100 / meta else 0 end between deaproveitamento and ateaproveitamento) ) as faixacomissao
  1762. ,(garantia+protecao) as basecomissao
  1763. --,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador) as faixacomissao
  1764. --,(garantia+protecao) as basecomissao
  1765. from(
  1766. select
  1767. vs.idgruposervico
  1768. ,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,vs.idgruposervico)) *
  1769. (select vend from vendedor) as meta
  1770. ,coalesce((select sum(comissao) from garantia),0) as garantia
  1771. ,coalesce((select sum(comissao) from protecao),0) as protecao
  1772. ,sum(vs.servico_vendido) as qtd
  1773. ,sum(vs.servico_presente) as vendas
  1774. from
  1775. vendaservico vs
  1776. where vs.idgruposervico in (3)
  1777. group by 1
  1778. )tb
  1779. left join grupocomissao gc on gc.idgruposervico = tb.idgruposervico
  1780. )tb
  1781. where qtd > 0
  1782.  
  1783. union
  1784.  
  1785. select
  1786. grupo
  1787. ,cast(variavel as varchar) as variavel
  1788. ,4 as ordem
  1789. ,tb.idgruposervico
  1790. ,meta
  1791. ,0 as qtd
  1792. ,vendas
  1793. ,faixacomissao
  1794. ,percrealizado
  1795. ,basecomissao
  1796. ,round(case when faixacomissao <> 0 then basecomissao * faixacomissao/100 else 0 end,2) comissao
  1797. ,case when vendas >= meta then 1 else 0 end pontos
  1798. from(
  1799. select
  1800. gc.descgrupocomissao as grupo
  1801. ,gc.descgruposervico as variavel
  1802. ,tb.idgruposervico
  1803. ,meta
  1804. ,vendas
  1805. ,case when meta <> 0 then vendas * 100 / meta else 0 end as percrealizado
  1806. ,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador
  1807. and (case when meta <> 0 then vendas * 100 / meta else 0 end between deaproveitamento and ateaproveitamento) ) as faixacomissao
  1808. ,(garantia+protecao) as basecomissao
  1809. from(
  1810. select
  1811. 500 as idgruposervico
  1812. ,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,500)) *
  1813. (select vend from vendedor) as meta
  1814. ,coalesce((select sum(comissao) from garantia),0) as garantia
  1815. ,coalesce((select sum(comissao) from protecao),0) as protecao
  1816. ,sum(vs.valor) as vendas
  1817. from
  1818. seguros vs
  1819. group by 1
  1820. )tb
  1821. left join grupocomissao gc on gc.idgruposervico = tb.idgruposervico
  1822. where meta>0
  1823. )tb
  1824.  
  1825.  
  1826. union
  1827.  
  1828.  
  1829. select
  1830. grupo
  1831. ,variavel
  1832. ,5 as ordem
  1833. ,tb.idgruposervico
  1834. ,meta
  1835. ,0 as qtd
  1836. ,vendas
  1837. ,null as faixacomissao
  1838. ,percrealizado
  1839. ,null as basecomissao
  1840. ,case when vendas >= meta
  1841. then ( ( (0.25/100) * coalesce(vendas,0) ) + 100 )
  1842. else ( (0.25/100) * coalesce(vendas,0) )
  1843. end as comissao
  1844. ,case when vendas >= meta then 1 else 0 end pontos
  1845. from(
  1846. select
  1847. 'Servicos Independentes' as grupo
  1848. ,'GazinCred' as variavel
  1849. ,tb.idgruposervico
  1850. ,meta
  1851. ,vendas
  1852. ,case when meta <> 0 then vendas * 100 / meta else 0 end as percrealizado
  1853. ,case when (select gazin.ccg_get_vendedor_filial(:idfilial,:anomes)) <> 0
  1854. then
  1855. case
  1856. when (((select vend from vendedor)*1.0) / (select gazin.ccg_get_vendedor_filial(:idfilial,:anomes))) < (select vend from vendedor)
  1857. then null
  1858. else 100
  1859. end
  1860. else 0 end as comissao
  1861. from(
  1862. select
  1863. 501 as idgruposervico
  1864. ,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,501)) * (select vend from vendedor) as meta
  1865. ,sum(vs.valor) as vendas
  1866. from (
  1867. select
  1868. sum(valorliberado) as valor
  1869. from gazin.gzmovimentoge s
  1870. where s.idfilial = :idfilial
  1871. and s.dataefetiva between date(:anomes||'01') and date( date(:anomes||'01') +interval '1 month') -1
  1872. ) vs
  1873. )tb
  1874. where date(:anomes||'01') >= date('2014-07-01')
  1875. )tb
  1876.  
  1877. union
  1878.  
  1879. select
  1880. grupo
  1881. ,cast('Premiado - 36,90' as varchar) as variavel
  1882. ,6 as ordem
  1883. ,tb.idservico
  1884. ,meta
  1885. ,qtd
  1886. ,vendas
  1887. ,faixacomissao
  1888. ,percrealizado
  1889. ,basecomissao
  1890. ,round(case when faixacomissao <> 0 then basecomissao * faixacomissao/100 else 0 end,2) comissao
  1891. ,case when vendas >= meta then 1 else 0 end pontos
  1892. from(
  1893. select
  1894. gc.descgrupocomissao as grupo
  1895. ,tb.idservico
  1896. ,meta
  1897. --,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,tb.idservico)) as meta
  1898. ,qtd
  1899. ,vendas
  1900. ,case when meta <> 0 then qtd * 100 / meta else 0 end as percrealizado
  1901. ,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador
  1902. and (case when meta <> 0 then qtd * 100 / meta else 0 end between deaproveitamento and ateaproveitamento) ) as faixacomissao
  1903. --,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador) as faixacomissao
  1904. ,(garantia+protecao) as basecomissao
  1905. from(
  1906. select
  1907. 261 as idservico
  1908. ,(select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,14,261)) *
  1909. (select vend from vendedor) as meta
  1910. ,coalesce((select sum(comissao) from garantia),0) as garantia
  1911. ,coalesce((select sum(comissao) from protecao),0) as protecao
  1912. ,sum(vs.servico_vendido) as qtd
  1913. ,sum(vs.servico_presente) as vendas
  1914. from
  1915. vendaservico vs
  1916. where vs.idservico in (261)
  1917. group by 1
  1918. )tb
  1919. left join grupocomissao gc on gc.idservico = tb.idservico
  1920. )tb
  1921.  
  1922. )
  1923. ,grupoconsorcio as (
  1924. select
  1925. grupo
  1926. ,variavel
  1927. ,ordem
  1928. ,tb.idgruposervico
  1929. ,meta
  1930. ,0 as qtd
  1931. ,vendas
  1932. ,faixacomissao
  1933. ,case when faixacomissao <> 0 then
  1934. case when vendas >= meta then
  1935. case when tb.idgruposervico = 502 then vendas * (faixacomissao * 2) / 100
  1936. else vendas * (faixacomissao) / 100 end
  1937. else vendas * faixacomissao / 100 end
  1938. else 0 end as comissao
  1939. ,case when vendas >= meta then 1 else 0 end pontos
  1940. from(
  1941. select
  1942. gc.descgrupocomissao as grupo
  1943. ,gc.descgruposervico as variavel
  1944. ,tb.idgruposervico
  1945. ,meta * vend as meta
  1946. ,vendas
  1947. ,row_number() over (order by tb.idgruposervico asc) as ordem
  1948. ,(select faixacomissao from aproveitamento where ididentificador = gc.ididentificador) as faixacomissao
  1949. from(
  1950. select
  1951. tc.idgruposervico
  1952. ,case when tc.idgruposervico = 502 then
  1953. coalesce((select gazin.ccg_get_meta_eletro(:idfilial,:anomes,tc.idgruposervico)),0)
  1954. else 0 end as meta
  1955. ,(select vend from vendedor) as vend
  1956. ,sum(vs.valor) as vendas
  1957. from
  1958. consorcio vs
  1959. left join gazin.gztipoconsorcio tc on tc.idtipoconsorcio = vs.tiposervico
  1960. group by 1
  1961. )tb
  1962. left join grupocomissao gc on gc.idgruposervico = tb.idgruposervico
  1963. )tb
  1964. )
  1965. ,consorciomaisbonus as (
  1966. select
  1967. *
  1968. from grupoconsorcio
  1969.  
  1970. union
  1971.  
  1972. select
  1973. 'Consorcio' as grupo
  1974. ,'Consorcio Geral' as variavel
  1975. ,ordem
  1976. ,0 as idgruposervico
  1977. ,meta * vend as meta
  1978. ,0 as qtd
  1979. ,valor as vendas
  1980. ,0 as faixacomissao
  1981. ,0 as comissao
  1982. ,0 as pontos
  1983. from(
  1984. select
  1985. max(ordem) + 1 as ordem,
  1986. (select gazin.ccg_get_meta_servico_filial(:idfilial,:anomes,502)) as meta,
  1987. sum(vendas) as valor,
  1988. (select vend from vendedor) as vend
  1989. from grupoconsorcio
  1990. )tb
  1991.  
  1992. union
  1993.  
  1994. select
  1995. 'Consorcio' as grupo,
  1996. 'Bonus '|| trim(to_char(gcb.valorinicial, '9G999G990D99')) || ' a ' || trim(to_char(gcb.valorfinal, '9G999G990D99')) as variavel,
  1997. row_number() over (order by gcb.ibonusservico)+1+(select max(ordem) from grupoconsorcio) as ordem,
  1998. 0 as idgruposervico,
  1999. 0 as meta,
  2000. 0 as qtd,
  2001. 0 as vendas,
  2002. 0 as faixacomissao,
  2003. case when coalesce(gc.vendas,0) > 0 then gcb.valorbonus else 0 end as comissao,
  2004. 0 as pontos
  2005. from gazin.ccg_gerente_servico_bonus gcb
  2006. left join lateral (
  2007. select
  2008. sum(gc.vendas) as vendas
  2009. from grupoconsorcio gc
  2010. ) gc on gc.vendas between gcb.valorinicial and gcb.valorfinal
  2011. where gcb.anomes = :anomes
  2012. )
  2013.  
  2014. ,painel AS (
  2015. select
  2016. 'Painel' as grupo
  2017. ,case
  2018. when grupo in ('Dias','Linhas','Carteira','Estoque','Margem') then '01 - Produtos'
  2019. when grupo in ('Servicos Complementares','Servicos Independentes','Consorcio') then '02 - Serviços'
  2020. else '03 - Resultado'
  2021. end as variavel
  2022. ,case
  2023. when grupo = 'Dias' then 'Curva de Vendas'
  2024. when grupo = 'Linhas' then 'Grupo de Produtos'
  2025. when grupo = 'Carteira' then 'Carteira, Perdas e Descontos'
  2026. when grupo = 'Estoque' then 'Estoque de Produtos'
  2027. when grupo = 'Margem' then 'Margem Contribuição'
  2028. when grupo = 'Salário' then 'Remuneração Fixo S/ Vendas'
  2029. else grupo
  2030. end as agrupador
  2031. ,case
  2032. when grupo in ('Dias','Linhas','Carteira','Estoque','Margem') then 1
  2033. when grupo in ('Servicos Complementares','Servicos Independentes','Consorcio') then 2
  2034. else 3
  2035. end as ordem
  2036. ,case
  2037. when grupo = 'Dias' then 2
  2038. when grupo = 'Linhas' then 3
  2039. when grupo = 'Carteira' then 4
  2040. when grupo = 'Estoque' then 5
  2041. when grupo = 'Margem' then 6
  2042. when grupo = 'Salário' then 1
  2043. when grupo = 'Servicos Complementares' then 8
  2044. when grupo = 'Servicos Independentes' then 9
  2045. when grupo = 'Consorcio' then 10
  2046. end as participacaometa
  2047. ,0 as participacaorealizada
  2048. ,0 as valormeta
  2049. ,0 as valorrealizado
  2050. ,0 as percrealizado
  2051. ,0 as pontos
  2052. ,comissao
  2053. from(
  2054. select
  2055. cast(l.grupo as varchar) as grupo
  2056. ,sum(l.comissao) as comissao
  2057. from linhas l
  2058. group by 1
  2059.  
  2060. union
  2061.  
  2062. select
  2063. cast(d.grupo as varchar) as grupo
  2064. ,sum(d.comissao) as comissao
  2065. from dias d
  2066. group by 1
  2067.  
  2068. union
  2069.  
  2070. select
  2071. cast(e.grupo as varchar) as grupo
  2072. ,sum(e.comissao) as comissao
  2073. from estoque e
  2074. group by 1
  2075.  
  2076. union
  2077.  
  2078. select
  2079. cast(c.grupo as varchar) as grupo
  2080. ,sum(c.comissao) as comissao
  2081. from carteira c
  2082. group by 1
  2083.  
  2084. union
  2085.  
  2086. select
  2087. cast(m.grupo as varchar) as grupo
  2088. ,sum(m.comissao) as comissao
  2089. from margem m
  2090. group by 1
  2091.  
  2092. union
  2093.  
  2094. select
  2095. 'Salário' as grupo
  2096. ,f.faixasalario as comissao
  2097. from gazin.ccg_gerente_faixa_salario f
  2098. where
  2099. (select sum(sf) from realizado ) between f.dofaturamento and f.atefaturamento and f.anomes = :anomes
  2100. union
  2101.  
  2102. select
  2103. cast(grupo as varchar) as grupo
  2104. ,sum(comissao) as comissao
  2105. from(
  2106. select
  2107. grupo
  2108. ,sum(comissao) as comissao
  2109. from
  2110. garantia
  2111. group by 1
  2112.  
  2113. union
  2114.  
  2115. select
  2116. cast(grupo as varchar) as grupo
  2117. ,sum(comissao) as comissao
  2118. from
  2119. protecao
  2120. group by 1
  2121. )tb
  2122. group by 1
  2123.  
  2124. union
  2125.  
  2126. select
  2127. cast(grupo as varchar) as grupo
  2128. ,sum(comissao) as comissao
  2129. from
  2130. independentes
  2131. group by 1
  2132.  
  2133. union
  2134.  
  2135. select
  2136. cast(grupo as varchar) as grupo
  2137. ,sum(comissao) as comissao
  2138. from
  2139. consorciomaisbonus
  2140. group by 1
  2141.  
  2142.  
  2143. )tb
  2144. order by 1,2
  2145. )
  2146. ,evolucaoserv AS (
  2147. select
  2148. s.deaproveitamento
  2149. ,s.ateaproveitamento
  2150. ,s.faixacomissao
  2151. from
  2152. gazin.ccg_servico_comissao_grupo scg
  2153. left join gazin.ccg_servico_aproveitamento s on scg.ididentificador = s.ididentificador
  2154. where
  2155. scg.idgruposervico = 1
  2156. and scg.anomes = :anomes
  2157. )
  2158. ,marcacaoserv AS (
  2159. select
  2160. linha
  2161. ,deaproveitamento
  2162. ,ateaproveitamento
  2163. ,faixacomissao
  2164. ,faixagarantia
  2165. ,classe
  2166. from(
  2167. select
  2168. row_number() over (order by deaproveitamento asc) as linha
  2169. ,deaproveitamento
  2170. ,ateaproveitamento
  2171. ,faixacomissao
  2172. ,round(faixagarantia,2) as faixagarantia
  2173. ,(case when faixagarantia = faixacomissao /* deaproveitamento and ateaproveitamento*/ then 'x-amarelo' else '' end) as classe
  2174. from(
  2175. select
  2176. deaproveitamento
  2177. ,ateaproveitamento
  2178. ,faixacomissao
  2179. ,(select faixacomissao from garantia) as faixagarantia
  2180. from
  2181. evolucaoserv
  2182. )tb
  2183. order by 1
  2184. )tb
  2185. )
  2186. ,evolucaovenda as (
  2187. select
  2188. *
  2189. from gazin.ccg_gerente_faixa_salario fs
  2190. where fs.anomes = :anomes
  2191. )
  2192. ,marcacaovenda AS (
  2193. select
  2194. linha
  2195. ,dofaturamento
  2196. ,atefaturamento
  2197. ,faixasalario
  2198. ,venda
  2199. ,classe
  2200. from(
  2201. select
  2202. row_number() over (order by dofaturamento asc) as linha
  2203. ,dofaturamento
  2204. ,atefaturamento
  2205. ,faixasalario
  2206. ,round(venda,2) as venda
  2207. ,(case when venda between dofaturamento and atefaturamento then 'x-amarelo' else '' end) as classe
  2208. from(
  2209. select
  2210. dofaturamento
  2211. ,atefaturamento
  2212. ,faixasalario
  2213. ,(select sum(sf) from realizado) as venda
  2214. from
  2215. evolucaovenda
  2216. )tb
  2217. order by 1
  2218. )tb
  2219. )
  2220. ,evolucaoprotecao AS (
  2221. select
  2222. s.deaproveitamento
  2223. ,s.ateaproveitamento
  2224. ,s.faixacomissao
  2225. ,s.faixagarantia
  2226. from
  2227. gazin.ccg_servico_comissao_grupo scg
  2228. left join gazin.ccg_servico_aproveitamento s on scg.ididentificador = s.ididentificador
  2229. where
  2230. scg.idgruposervico = 2
  2231. and scg.anomes = :anomes
  2232. order by s.faixagarantia,s.deaproveitamento
  2233. )
  2234. ,marcacaoprotecao AS (
  2235. select
  2236. linha
  2237. ,deaproveitamento
  2238. ,ateaproveitamento
  2239. ,faixacomissao
  2240. ,faixagarantia
  2241. ,faixaprotecao
  2242. ,garantia
  2243. ,classe
  2244. from(
  2245. select
  2246. row_number() over (order by faixagarantia,deaproveitamento asc) as linha
  2247. ,deaproveitamento
  2248. ,ateaproveitamento
  2249. ,faixacomissao
  2250. ,faixaprotecao
  2251. ,faixagarantia
  2252. ,round(garantia,2) as garantia
  2253. ,(case when faixaprotecao between deaproveitamento and ateaproveitamento and faixagarantia = garantia then 'x-amarelo' else '' end) as classe
  2254. from(
  2255. select
  2256. deaproveitamento
  2257. ,ateaproveitamento
  2258. ,faixacomissao
  2259. ,faixagarantia
  2260. ,(select faixacomissao from garantia) as garantia
  2261. ,(select case when meta>0 then (1 - ((meta-percrealizado)/meta)) * 100 else 0 end from protecao) as faixaprotecao
  2262. from
  2263. evolucaoprotecao
  2264. order by faixagarantia,deaproveitamento
  2265. )tb
  2266. where garantia = faixagarantia
  2267. order by faixagarantia,deaproveitamento
  2268. )tb
  2269. order by faixagarantia,deaproveitamento
  2270. )
  2271.  
  2272. select
  2273. tb.*
  2274. ,sum( tb.pontos ) over (partition by grupo) as pontosgrupo
  2275. from (
  2276.  
  2277. select
  2278. 'Evolucao Protecao' as grupo,
  2279. 'Protecao' as variavel,
  2280. cast(linha as varchar) as agrupador,
  2281. 1 as ordem,
  2282. deaproveitamento as participacaometa,
  2283. ateaproveitamento as participacaorealizada,
  2284. faixacomissao as valormeta,
  2285. faixagarantia as valorrealizado,
  2286. 0 as percrealizado,
  2287. 0 as pontos,
  2288. 0 as comissao,
  2289. (case
  2290. when linha = (select linha from marcacaoprotecao where classe = 'x-amarelo') - 1 then 'x-vermelho'
  2291. when linha = (select linha from marcacaoprotecao where classe = 'x-amarelo') + 1 then 'x-azul-c'
  2292. when classe = 'x-amarelo' then 'x-amarelo'
  2293. else ''
  2294. end) as marcacao
  2295. from marcacaoprotecao
  2296. --where linha between (select linha from marcacaoprotecao where classe = 'x-amarelo') -3 and (select linha from marcacaoprotecao where classe = 'x-amarelo') +3
  2297.  
  2298. union
  2299.  
  2300. select
  2301. 'Evolucao Servico' as grupo,
  2302. 'Servico' as variavel,
  2303. '' as agrupador,
  2304. 1 as ordem,
  2305. deaproveitamento as participacaometa,
  2306. ateaproveitamento as participacaorealizada,
  2307. faixacomissao as valormeta,
  2308. faixagarantia as valorrealizado,
  2309. 0 as percrealizado,
  2310. 0 as pontos,
  2311. 0 as comissao,
  2312. (case
  2313. when linha = (select linha from marcacaoserv where classe = 'x-amarelo') - 1 then 'x-vermelho'
  2314. when linha = (select linha from marcacaoserv where classe = 'x-amarelo') + 1 then 'x-azul-c'
  2315. when classe = 'x-amarelo' then 'x-amarelo'
  2316. else ''
  2317. end) as marcacao
  2318. from marcacaoserv
  2319.  
  2320. union
  2321.  
  2322. select
  2323. 'Evolucao Venda' as grupo,
  2324. 'Venda' as variavel,
  2325. '' as agrupador,
  2326. 2 as ordem,
  2327. dofaturamento as participacaometa,
  2328. atefaturamento as participacaorealizada,
  2329. faixasalario as valormeta,
  2330. venda as valorrealizado,
  2331. 0 as percrealizado,
  2332. 0 as pontos,
  2333. 0 as comissao,
  2334. (case
  2335. when linha = (select linha from marcacaovenda where classe = 'x-amarelo') - 1 then 'x-vermelho'
  2336. when linha = (select linha from marcacaovenda where classe = 'x-amarelo') + 1 then 'x-azul-c'
  2337. when classe = 'x-amarelo' then 'x-amarelo'
  2338. else ''
  2339. end) as marcacao
  2340. from marcacaovenda
  2341. where linha between (select linha from marcacaovenda where classe = 'x-amarelo') -3 and (select linha from marcacaovenda where classe = 'x-amarelo') +6
  2342.  
  2343. union
  2344.  
  2345. select
  2346. cast(grupo as varchar) as grupo,
  2347. cast(variavel as varchar) as variavel,
  2348. '' as agrupador,
  2349. ordem,
  2350. participacaometa,
  2351. participacaorealizada,
  2352. valormeta,
  2353. valorrealizado,
  2354. percrealizado,
  2355. pontos,
  2356. comissao,
  2357. '' as marcacao
  2358. from(
  2359. select
  2360. cast(grupo as varchar) as grupo,
  2361. cast(variavel as varchar) as variavel,
  2362. ordem,
  2363. participacaometa,
  2364. participacaorealizada,
  2365. valormeta,
  2366. valorrealizado,
  2367. percrealizado,
  2368. pontos,
  2369. comissao
  2370. from linhas
  2371.  
  2372. union
  2373.  
  2374. select
  2375. cast(grupo as varchar) as grupo,
  2376. cast(variavel as varchar) as variavel,
  2377. ordem,
  2378. participacaometa,
  2379. participacaorealizada,
  2380. valormeta,
  2381. valorrealizado,
  2382. percrealizado,
  2383. pontos,
  2384. comissao
  2385. from dias
  2386.  
  2387. union
  2388.  
  2389. select
  2390. cast(grupo as varchar) as grupo,
  2391. cast(variavel as varchar) as variavel,
  2392. ordem,
  2393. participacaometa,
  2394. participacaorealizada,
  2395. valormeta,
  2396. valorrealizado,
  2397. percrealizado,
  2398. pontos,
  2399. comissao
  2400. from carteira
  2401.  
  2402. union
  2403.  
  2404. select
  2405. cast(grupo as varchar) as grupo,
  2406. cast(variavel as varchar) as variavel,
  2407. ordem,
  2408. participacaometa,
  2409. participacaorealizada,
  2410. valormeta,
  2411. valorrealizado,
  2412. percrealizado,
  2413. pontos,
  2414. comissao
  2415. from estoque
  2416.  
  2417. union
  2418.  
  2419. select
  2420. cast(grupo as varchar) as grupo,
  2421. cast(variavel as varchar) as variavel,
  2422. ordem,
  2423. participacaometa,
  2424. participacaorealizada,
  2425. valormeta,
  2426. valorrealizado,
  2427. percrealizado,
  2428. pontos,
  2429. comissao
  2430. from margem
  2431. )tb
  2432.  
  2433. union
  2434.  
  2435. select
  2436. cast(grupo as varchar) as grupo,
  2437. cast(variavel as varchar) as variavel,
  2438. agrupador,
  2439. ordem,
  2440. participacaometa,
  2441. participacaorealizada,
  2442. valormeta,
  2443. valorrealizado,
  2444. percrealizado,
  2445. pontos,
  2446. comissao,
  2447. '' as marcacao
  2448. from
  2449. painel
  2450.  
  2451. union
  2452.  
  2453. select
  2454. 'Painel' as grupo,
  2455. '01 - Produtos' as variavel,
  2456. 'Produtos Total' as agrupador,
  2457. 1 as ordem,
  2458. 7 as participacaometa,
  2459. 0 as participacaorealizada,
  2460. 0 as valormeta,
  2461. 0 as valorrealizado,
  2462. 0 as percrealizado,
  2463. 0 as pontos,
  2464. sum(comissao) as comissao,
  2465. '' as marcacao
  2466. from
  2467. painel
  2468. where ordem = 1
  2469.  
  2470. union
  2471.  
  2472. select
  2473. 'Painel' as grupo,
  2474. '02 - Serviços' as variavel,
  2475. 'Servicos Total' as agrupador,
  2476. 2 as ordem,
  2477. 11 as participacaometa,
  2478. 0 as participacaorealizada,
  2479. 0 as valormeta,
  2480. 0 as valorrealizado,
  2481. 0 as percrealizado,
  2482. 0 as pontos,
  2483. sum(comissao) as comissao,
  2484. '' as marcacao
  2485. from
  2486. painel
  2487. where ordem = 2
  2488.  
  2489. union
  2490.  
  2491. select
  2492. 'Painel' as grupo,
  2493. '03 - Resultado' as variavel,
  2494. 'Gratificacao Total' as agrupador,
  2495. 4 as ordem,
  2496. 12 as participacaometa,
  2497. 0 as participacaorealizada,
  2498. 0 as valormeta,
  2499. 0 as valorrealizado,
  2500. 0 as percrealizado,
  2501. 0 as pontos,
  2502. sum(comissao) as comissao,
  2503. '' as marcacao
  2504. from
  2505. painel
  2506.  
  2507. UNION
  2508.  
  2509. select
  2510. cast(grupo as varchar) as grupo,
  2511. cast(variavel as varchar) as variavel,
  2512. '' as agrupador,
  2513. ordem,
  2514. qtd as participacaometa,
  2515. faixacomissao as participacaorealizada,
  2516. meta as valormeta,
  2517. vendas as valorrealizado,
  2518. percrealizado,
  2519. aprov as pontos,
  2520. comissao,
  2521. '' as marcacao
  2522. from(
  2523. select
  2524. grupo
  2525. ,variavel
  2526. ,ordem
  2527. ,meta
  2528. ,qtd
  2529. ,vendas
  2530. ,percrealizado
  2531. ,faixacomissao
  2532. ,comissao
  2533. ,aprov
  2534. from(
  2535. select
  2536. grupo
  2537. ,variavel
  2538. ,ordem
  2539. ,meta
  2540. ,qtd
  2541. ,vendas
  2542. ,percrealizado
  2543. ,faixacomissao
  2544. ,comissao
  2545. ,round(case when meta>0 then (1 - ((meta-percrealizado)/meta)) * 100 else 0 end,2) as aprov
  2546. from
  2547. garantia
  2548.  
  2549. union
  2550.  
  2551. select
  2552. grupo
  2553. ,variavel
  2554. ,ordem
  2555. ,meta
  2556. ,qtd
  2557. ,vendas
  2558. ,percrealizado
  2559. ,faixacomissao
  2560. ,comissao
  2561. ,round(case when meta>0 then (1 - ((meta-percrealizado)/meta)) * 100 else 0 end,2) as aprov
  2562. from
  2563. protecao
  2564. )tb
  2565.  
  2566. union
  2567.  
  2568. select
  2569. grupo
  2570. ,variavel
  2571. ,ordem
  2572. ,coalesce(meta,0) as meta
  2573. ,coalesce(qtd,0) as qtd
  2574. ,coalesce(vendas,0) as vendas
  2575. ,coalesce(percrealizado,0) as percrealizado
  2576. ,coalesce(faixacomissao,0) as faixacomissao
  2577. ,coalesce(comissao,0) as comissao
  2578. ,basecomissao as aprov
  2579. from
  2580. independentes
  2581.  
  2582. union
  2583.  
  2584. select
  2585. grupo
  2586. ,variavel
  2587. ,ordem
  2588. ,meta
  2589. ,qtd
  2590. ,vendas
  2591. ,0 as percrealizado
  2592. ,faixacomissao
  2593. ,comissao
  2594. ,0 as aprov
  2595. from
  2596. consorciomaisbonus
  2597. )tb
  2598.  
  2599. )tb
  2600. order by grupo,ordem,variavel,agrupador,participacaometa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement