/*
Criação da view para consolidar os produtos parametrizados para o SupplyTek de acordo com preços iguais. 
Se vários produtos de compras tiverem o mesmo preço, serão agrupados pelo produto de estoque e seus tamanhos concatenados.
Se os produtos de compras forem de preços diferentes, eles serão exibidos de forma independente.

A chave primaria de cada item será a concatenação do cdproduto (depois de aplicado as regras), marca, preço do item sem vírgula/ponto e cdforneced

Criação:
25/05/2020 Petterson Rodrigues Galdino

Alterações:
25/01/2021 Petterson Rodrigues Galdino - Retirada da tabela ITEMCOLE da consulta, tendo assim ganho de performance. Os campos que precisavam da ITEMCOLE estão sendo 
salvos na tabela PRODSUPPLY

*/

CREATE OR REPLACE FORCE VIEW V_CATALOG ("NRSEQ", "CDCATEGORIA", "CDSUBCATEGORIA", "CDFILCOT", "NRCOLEPRECO", "CDREGIAO", "CDFORNECED", "CDPRODUTO", "CDMARCA", "VRPRECUNIITM", "DSTAMANHO", "CDCOMPRADOR") AS
SELECT CDPRODUTO||CDMARCA||REPLACE(REPLACE(VRPRECUNIITM, ',',''), '.', '')||CDFORNECED AS NRSEQ, CDCATEGORIA,
       CDSUBCATEGORIA, CDFILCOT, NRCOLEPRECO, CDREGIAO, CDFORNECED, CDPRODUTO, CDMARCA, VRPRECUNIITM, DSTAMANHO, CDCOMPRADOR
  FROM (SELECT PRODSUPPLY.CDCATEGORIA,
               PRODSUPPLY.CDSUBCATEGORIA,
               PRODSUPPLY.CDFILCOT,
               PRODSUPPLY.NRCOLEPRECO,
               PRODSUPPLY.CDREGIAO,
               PRODSUPPLY.CDFORNECED,
               DECODE(NVL(PRODUTO.IDTAMANHO, 'UNICO'), 'UNICO', PRODSUPPLY.CDPRODUTO, PRODUTO.CDPRODESTO) CDPRODUTO,
               PRODSUPPLY.CDMARCA,
               PRODSUPPLY.VRPRECUNIITM,
               LISTAGG(PRODUTO.IDTAMANHO, ';') WITHIN GROUP(ORDER BY PRODUTO.IDTAMANHO ) DSTAMANHO,
               COLETAPR.CDOPERADOR AS CDCOMPRADOR
          FROM PRODSUPPLY, PRODUTO, COLETAPR
         WHERE PRODSUPPLY.CDFILCOT = COLETAPR.CDFILIAL
           AND PRODSUPPLY.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
           AND PRODSUPPLY.CDPRODUTO = PRODUTO.CDPRODUTO
           AND PRODSUPPLY.VRPRECUNIITM > 0
           AND PRODSUPPLY.IDATIVO = 'S'
         GROUP BY PRODSUPPLY.CDCATEGORIA, PRODSUPPLY.CDSUBCATEGORIA, PRODSUPPLY.CDFILCOT, PRODSUPPLY.NRCOLEPRECO, PRODSUPPLY.CDREGIAO,
                  PRODSUPPLY.CDFORNECED,DECODE(NVL(PRODUTO.IDTAMANHO, 'UNICO'), 'UNICO', PRODSUPPLY.CDPRODUTO, PRODUTO.CDPRODESTO),
                  PRODSUPPLY.CDMARCA, PRODSUPPLY.VRPRECUNIITM, COLETAPR.CDOPERADOR
         ORDER BY 5,7,6,10)
/