CREATE OR REPLACE FORCE VIEW "DM_PEDEFATU" ("CDANOBI", "CDMESBI", "DSOPERAC", "DSDESC", "CDFILIAL", "DSCPF_CNPJ", "CDCLIENTE", "SGESTADO", "CDPRODUTO", "QTDE", "VRUNIT", "VRTOTAL") AS 
  SELECT CDANOBI,
        CDMESBI,
        A.CDTIPOOPER||'-'||TIPOOPERAC.NMTIPOOPER||'('||IDSISTEMA||')' DSOPERAC,
        DECODE(IDSTATUS ,'P','Não Transmitida(NF Pendente) - Saída: '||DTENTRSAID,'NF:'||NRNOTAFISC||' - Saída: '||DTENTRSAID||' Emissão: '||DTEMISSAO) DSDESC,
        CDFILIAL,
        (CASE 
           WHEN CLIENTE.IDTPIJURCLIE = 'J' THEN 'CNPJ: '||SUBSTR(CLIENTE.NRINSJURCLIE,0,2)||'.'||SUBSTR(CLIENTE.NRINSJURCLIE,3,3)||'.'||SUBSTR(CLIENTE.NRINSJURCLIE,6,3)||'/'||SUBSTR(CLIENTE.NRINSJURCLIE,9,4)||'-'||SUBSTR(CLIENTE.NRINSJURCLIE,13,2)
           WHEN CLIENTE.IDTPIJURCLIE = 'F' THEN 'CPF: '||SUBSTR(CLIENTE.NRINSJURCLIE,1,3)||'.'||SUBSTR(CLIENTE.NRINSJURCLIE,4,3)||'.'||SUBSTR(CLIENTE.NRINSJURCLIE,7,3)||'-'||SUBSTR(CLIENTE.NRINSJURCLIE,10,2)
           ELSE 'OUTROS: '||CLIENTE.NRINSJURCLIE
        END) DSCPF_CNPJ,
        A.CDCLIENTE,
        SGESTADO,
        CDPRODUTO,
        QTDE,
        VRUNIT,
        VRTOTAL
   FROM(SELECT TO_CHAR(NF.DTENTRSAID,'YYYY') CDANOBI,
               TO_CHAR(NF.DTENTRSAID,'MM') CDMESBI,
               NF.IDSISTEMA,
               NF.CDTIPOOPER,
               NF.DTEMISSAO,
               NF.DTENTRSAID,
               NF.IDENTRSAIDOP,
               NF.NRNOTAFISC,
               NF.CDFILIAL,
               NF.CDCLIENTE,
               NF.IDSTATUS,
               EN.SGESTADO,
               IT.CDPRODUTO,
               SUM(NVL(IT.QTITEMPROD,0))                    AS QTDE ,
               SUM(IT.VRUNITITEM)/COUNT(NVL(IT.NRPEDIDO,1)) AS VRUNIT,
               DECODE(SUM(IT.VRUNITITEM),0,SUM(IT.VRTOTAITEM),SUM(NVL(IT.QTITEMPROD,0)) * SUM(IT.VRUNITITEM)/COUNT(NVL(IT.NRPEDIDO,1))) VRTOTAL
          FROM ITEMPRODUTO IT,
               NOTAFISCAL NF,
               PRODUTO PR,
               ENDECLIE EN
         WHERE IT.CDPRODUTO = PR.CDPRODUTO
           AND IT.CDFILIAL    = NF.CDFILIAL
           AND NF.DTENTRSAID BETWEEN TRUNC(SYSDATE-360,'MM') AND LAST_DAY(SYSDATE)
           AND IT.NRLANCTONF   = NF.NRLANCTONF
           AND NF.CDCLIENTE    = EN.CDCLIENTE
           AND EN.IDTPENDECLIE = 'P'
           AND NF.IDENTRSAIDOP = 'S'
           AND NF.IDSTATUS    IN ('A','E','P')
           AND NF.IDSISTEMA   <> 'REC'
           AND NF.IDORIGDESTNF = 'C'
         GROUP BY NF.CDFILIAL,
                  NF.IDSISTEMA,
                  NF.CDTIPOOPER,
                  NF.IDENTRSAIDOP,
                  NF.CDCLIENTE,
                  EN.SGESTADO,
                  NF.DTENTRSAID,
                  NF.DTEMISSAO,
                  NF.NRNOTAFISC,
                  IT.CDPRODUTO,
                  NF.IDSTATUS ) A, TIPOOPERAC, CLIENTE
  WHERE A.CDTIPOOPER = TIPOOPERAC.CDTIPOOPER
    AND A.IDENTRSAIDOP = TIPOOPERAC.IDENTRSAIDOP
    AND A.CDCLIENTE = CLIENTE.CDCLIENTE
  ORDER BY CDANOBI,
           CDMESBI,
           CDFILIAL,
           A.CDCLIENTE,
           SGESTADO,
           CDPRODUTO
/
--BLOCO DE AUTO-COFIGURAÇÃO DE FATOS E DIMENSÕES
BEGIN
   --FATOS--
      CRIA_FATOS('DM_PEDEFATU',   'QTDE',          'Quant.',           'Quantidade',                     'Faturamento por NFs');
      CRIA_FATOS('DM_PEDEFATU',   'VRUNIT',        'Vr. Unitário',     'Valor Unitário(habilitar média)','Faturamento por NFs');
      CRIA_FATOS('DM_PEDEFATU',   'VRTOTAL',       'Vr. Faturamento',  'Valor da Base de Cálculo',       'Faturamento por NFs');
      
      --DIMENSÕES
      CRIA_DIME('DM_PEDEFATU', 'CDANOBI',       'Ano',             NULL,      NULL,        NULL,       NULL);
      CRIA_DIME('DM_PEDEFATU', 'CDMESBI',       'Mês',             NULL,      NULL,        NULL,       NULL);
      CRIA_DIME('DM_PEDEFATU', 'DSOPERAC',      'Operação',        NULL,      NULL,        NULL,       NULL);
      CRIA_DIME('DM_PEDEFATU', 'DSDESC',        'Descrição',       NULL,      NULL,        NULL,       NULL);
      CRIA_DIME('DM_PEDEFATU', 'DSCPF_CNPJ',    'CNPJ/CPF',        NULL,      NULL,        NULL,       NULL);
      CRIA_DIME('DM_PEDEFATU', 'SGESTADO',      'Estado',          NULL,      NULL,        NULL,       NULL);    
      CRIA_DIME ('DM_PEDEFATU','CDFILIAL',      'Filial',          'FILIAL',   'CDFILIAL',      'NMFILIAL',       '');
      CRIA_DIME ('DM_PEDEFATU','CDCLIENTE',     'Cliente',         'CLIENTE',  'CDCLIENTE',     'NMFANTCLIE',     '');
      CRIA_DIME ('DM_PEDEFATU','CDPRODUTO',     'Produto',         'PRODUTO',  'CDPRODUTO',     'NMPRODUTO',      '');
END;
/
 
