
DROP VIEW VIEWOE;

create view VIEWOE( CODIGOEMP, CODIGOUNIDADE, TIPOEMPRESA, CODIGOEMPRESA, DATAPREVISTA, STATUSOE,
                    NUMEROPARCELA, SALDO, MOEDA) AS            
    SELECT 
       VNDAOECD.EMPRESA         AS CODIGOEMP,
       VNDAOECD.UNIDADE         AS CODIGOUNIDADE,
       VNDAOECD.TIPO_EMPRESA    AS TIPOEMPRESA,
       VNDAOECD.COD_EMPRESA     AS CODIGOEMPRESA,
       VNDAOECD.DATA_EMISSAO_OE AS DATAPREVISTA,
       VNDAOECD.STATUS_OE       AS STATUSOE, 
       COUNT(*) AS NUMEROPARCELA, 
       SUM(VNDAOEPC.QUANTIDADE_OE * (VNDAPEPC.APEPC_VALOR_ENC - VNDAPEPC.APEPC_VLR_DESCONTO)) 
       AS SALDO,
       VNDAPEPC.APEPC_MOEDA AS MOEDA  
    FROM  VNDAOECD, VNDAOEPC, VNDAPEPC
    WHERE VNDAOECD.EMPRESA   = VNDAOEPC.EMPRESA AND 
          VNDAOECD.UNIDADE   = VNDAOEPC.UNIDADE AND 
          VNDAOECD.NUMERO_OE = VNDAOEPC.NUMERO_OE AND 
          VNDAOEPC.EMPRESA        = VNDAPEPC.APEPC_EMPRESA AND
          VNDAOEPC.UNIDADE        = VNDAPEPC.APEPC_UNIDADE AND
          VNDAOEPC.NUMERO_PEDIDO  = VNDAPEPC.APEPC_PEDIDO AND 
          VNDAOEPC.LINHA_PEDIDO   = VNDAPEPC.APEPC_LINHA AND 
          VNDAOEPC.ENTREGA_PEDIDO = VNDAPEPC.APEPC_PARCELA 
    GROUP BY VNDAOECD.EMPRESA, VNDAOECD.UNIDADE, VNDAOECD.TIPO_EMPRESA, VNDAOECD.COD_EMPRESA,  
          VNDAOECD.DATA_EMISSAO_OE, VNDAOECD.STATUS_OE, VNDAPEPC.APEPC_MOEDA;

COMMENT ON VIEW VIEWOE IS "Valor previsto em OEs por Empresa, Unidade, Tipo(C/F/R/T), CodigoEmpresa";
DROP VIEW VIEWOEREP;

create view VIEWOEREP( CODIGOEMP, CODIGOUNIDADE, TIPOREPRESENTANTE, CODIGOREPRESENTANTE, DATAPREVISTA, STATUSOE,
                    NUMEROPARCELA, SALDO, MOEDA) AS            
    SELECT 
       VNDAOECD.EMPRESA         AS CODIGOEMP,
       VNDAOECD.UNIDADE         AS CODIGOUNIDADE,
       VNDAOECD.TIPO_REPRE      AS TIPOREPRESENTANTE,
       VNDAOECD.REPRESENTANTE   AS CODIGOREPRESENTANTE,
       VNDAOECD.DATA_EMISSAO_OE AS DATAPREVISTA,
       VNDAOECD.STATUS_OE       AS STATUSOE, 
       COUNT(*)                 AS NUMEROPARCELA, 
       SUM(VNDAOEPC.QUANTIDADE_OE * (VNDAPEPC.APEPC_VALOR_ENC - VNDAPEPC.APEPC_VLR_DESCONTO)) 
       AS SALDO,
       VNDAPEPC.APEPC_MOEDA     AS MOEDA  
    FROM  VNDAOECD, VNDAOEPC, VNDAPEPC
    WHERE VNDAOECD.EMPRESA   = VNDAOEPC.EMPRESA AND 
          VNDAOECD.UNIDADE   = VNDAOEPC.UNIDADE AND 
          VNDAOECD.NUMERO_OE = VNDAOEPC.NUMERO_OE AND 
          VNDAOEPC.EMPRESA        = VNDAPEPC.APEPC_EMPRESA AND
          VNDAOEPC.UNIDADE        = VNDAPEPC.APEPC_UNIDADE AND
          VNDAOEPC.NUMERO_PEDIDO  = VNDAPEPC.APEPC_PEDIDO AND 
          VNDAOEPC.LINHA_PEDIDO   = VNDAPEPC.APEPC_LINHA AND 
          VNDAOEPC.ENTREGA_PEDIDO = VNDAPEPC.APEPC_PARCELA 
    GROUP BY VNDAOECD.EMPRESA, VNDAOECD.UNIDADE, VNDAOECD.TIPO_REPRE, VNDAOECD.REPRESENTANTE,  
          VNDAOECD.DATA_EMISSAO_OE, VNDAOECD.STATUS_OE, VNDAPEPC.APEPC_MOEDA;

COMMENT ON VIEW VIEWOEREP IS "Valor previsto em OEs por Empresa, Unidade, Representante";
DROP VIEW VIEWPEDIDO;

create view VIEWPEDIDO( CODIGOEMP, CODIGOUNIDADE, TIPOEMPRESA, CODIGOEMPRESA, CODIGOAPLICACAO, CODIGOCATEGORIA, DATAPREVISTA, STATUSPAR, NUMEROPARCELA, SALDO, MOEDA) AS 
   SELECT 
      VNDAPECD.APECD_EMPRESA AS CODIGOEMP,
      VNDAPECD.APECD_UNIDADE AS CODIGOUNIDADE,
      VNDAPECD.APECD_TIPO_CLI AS TIPOEMPRESA,
      VNDAPECD.APECD_CLIENTE AS CODIGOEMPRESA,
      VNDAPEIT.APEIT_APLICACAO AS CODIGOAPLICACAO, 
      GRLAFAVE.AFAVE_DESEMBOLSO AS CODIGOCATEGORIA,
      VNDAPEPC.APEPC_DATA_PREV AS DATAPREVISTA,
      VNDAPEPC.APEPC_STATUS AS STATUSPAR,
      COUNT(*) AS NUMEROPARCELAS,
      SUM((VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE)*
          (VNDAPEPC.APEPC_VALOR_ENC-VNDAPEPC.APEPC_VLR_DESCONTO)) AS SALDO,
      VNDAPEPC.APEPC_MOEDA AS MOEDA
   FROM  VNDAPEPC, VNDAPEIT, VNDAPECD, VNDADFIT, GRLAFAVE 
   WHERE VNDAPEPC.APEPC_QTD_PEDIDA <> VNDAPEPC.APEPC_QTD_ENTREGUE AND 
         VNDAPEIT.APEIT_EMPRESA   = VNDAPEPC.APEPC_EMPRESA AND
         VNDAPEIT.APEIT_UNIDADE   = VNDAPEPC.APEPC_UNIDADE AND
         VNDAPEIT.APEIT_PEDIDO    = VNDAPEPC.APEPC_PEDIDO AND 
         VNDAPEIT.APEIT_LINHA     = VNDAPEPC.APEPC_LINHA AND 
         VNDAPEIT.APEIT_EMPRESA   = VNDAPECD.APECD_EMPRESA AND
         VNDAPEIT.APEIT_UNIDADE   = VNDAPECD.APECD_UNIDADE AND
         VNDAPEIT.APEIT_PEDIDO    = VNDAPECD.APECD_PEDIDO AND 
         VNDAPEIT.APEIT_COD_ITEM  = VNDADFIT.ADFIT_COD_ITEM AND
         VNDADFIT.ADFIT_FAM_VENDA = GRLAFAVE.AFAVE_CODIGO AND
         VNDAPEPC.APEPC_STATUS   <> 'C' AND
         VNDAPEPC.APEPC_STATUS   <> 'E' 
   GROUP BY VNDAPECD.APECD_EMPRESA, VNDAPECD.APECD_UNIDADE, VNDAPECD.APECD_TIPO_CLI, VNDAPECD.APECD_CLIENTE, 
         VNDAPEIT.APEIT_APLICACAO, GRLAFAVE.AFAVE_DESEMBOLSO, VNDAPEPC.APEPC_DATA_PREV, VNDAPEPC.APEPC_STATUS,  
         VNDAPEPC.APEPC_MOEDA;

COMMENT ON VIEW VIEWPEDIDO IS "Valor Previsto em Pedidos por Empresa, Unidade, Tipo(C/F/R/T), CodigoEmpresa, Aplicacao, Categoria";
DROP VIEW VIEWPEDIDOCLI;

create view VIEWPEDIDOCLI( CODIGOEMP, CODIGOUNIDADE, PEDIDO, TIPOCLIENTE, CODIGOCLIENTE, STATUSPAR, EMABERTO, EMATRASO, MOEDA) AS 
   SELECT 
      VNDAPECD.APECD_EMPRESA AS CODIGOEMP,
      VNDAPECD.APECD_UNIDADE AS CODIGOUNIDADE,
      VNDAPECD.APECD_PEDIDO,
      VNDAPECD.APECD_TIPO_CLI AS TIPOCLIENTE,
      VNDAPECD.APECD_CLIENTE AS CODIGOCLIENTE,
      VNDAPEPC.APEPC_STATUS AS STATUSPAR,
      SUM((VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE)*
          (VNDAPEPC.APEPC_VALOR_ENC-VNDAPEPC.APEPC_VLR_DESCONTO)) AS EMABERTO,
      0 AS EMATRASO,
      VNDAPEPC.APEPC_MOEDA AS MOEDA
   FROM  VNDAPEPC, VNDAPECD
   WHERE VNDAPECD.APECD_EMPRESA = VNDAPEPC.APEPC_EMPRESA AND
         VNDAPECD.APECD_UNIDADE = VNDAPEPC.APEPC_UNIDADE AND
         VNDAPECD.APECD_PEDIDO  = VNDAPEPC.APEPC_PEDIDO AND 
          (NOW(*) - CAST (VNDAPEPC.APEPC_DATA_PREV AS DATETIME) ) < 1 AND 
         VNDAPEPC.APEPC_STATUS <> 'C'  AND 
        (VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE) > 0
   GROUP BY VNDAPECD.APECD_EMPRESA, VNDAPECD.APECD_UNIDADE, 
                           VNDAPECD.APECD_PEDIDO, VNDAPECD.APECD_TIPO_CLI, 
                           VNDAPECD.APECD_CLIENTE, VNDAPEPC.APEPC_STATUS, VNDAPEPC.APEPC_MOEDA
   UNION ALL
   SELECT 
      VNDAPECD.APECD_EMPRESA AS CODIGOEMP,
      VNDAPECD.APECD_UNIDADE AS CODIGOUNIDADE,
      VNDAPECD.APECD_PEDIDO,
      VNDAPECD.APECD_TIPO_CLI AS TIPOCLIENTE,
      VNDAPECD.APECD_CLIENTE AS CODIGOCLIENTE,
      VNDAPEPC.APEPC_STATUS AS STATUSPAR,
      0 AS EMABERTO,
      SUM((VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE)*
          (VNDAPEPC.APEPC_VALOR_ENC-VNDAPEPC.APEPC_VLR_DESCONTO)) AS EMATRASO,
      VNDAPEPC.APEPC_MOEDA AS MOEDA
   FROM  VNDAPEPC, VNDAPECD
   WHERE VNDAPECD.APECD_EMPRESA = VNDAPEPC.APEPC_EMPRESA AND
         VNDAPECD.APECD_UNIDADE = VNDAPEPC.APEPC_UNIDADE AND
         VNDAPECD.APECD_PEDIDO  = VNDAPEPC.APEPC_PEDIDO AND 
          (NOW(*) - CAST (VNDAPEPC.APEPC_DATA_PREV AS DATETIME) ) >= 1 AND
         VNDAPEPC.APEPC_STATUS <> 'C' AND 
        (VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE) > 0
   GROUP BY VNDAPECD.APECD_EMPRESA, VNDAPECD.APECD_UNIDADE, 
                           VNDAPECD.APECD_PEDIDO, VNDAPECD.APECD_TIPO_CLI, 
                           VNDAPECD.APECD_CLIENTE, VNDAPEPC.APEPC_STATUS, VNDAPEPC.APEPC_MOEDA;

COMMENT ON VIEW VIEWPEDIDOCLI IS "Valor Previsto/Atraso em Pedidos por Empresa, Unidade, Tipo(C/F/R/T), CodigoEmpresa";drop view VIEWPEDIDODOC;

create view VIEWPEDIDODOC( CODIGOEMP, CODIGOUNIDADE, PEDIDO, TIPOCLIENTE, CODIGOCLIENTE, REPRESENTANTE, CONDPAG, PERCDESC, DATAPREV, LINHA, TIPOITEM, DESTINOITEM, CODITEM, APLICACAO, CATEGORIA, PARCELA, STATUSPAR, PERCCOMIS, MOEDA, EMABERTO) AS 
   SELECT 
      VNDAPECD.APECD_EMPRESA,
      VNDAPECD.APECD_UNIDADE,
      VNDAPECD.APECD_PEDIDO,
      VNDAPECD.APECD_TIPO_CLI,
      VNDAPECD.APECD_CLIENTE,
      VNDAPECD.APECD_REPRE,
      VNDAPECD.APECD_COND_PGTO,
      VNDAPECD.APECD_DESCONTO,
      VNDAPEPC.APEPC_DATA_PREV,
      VNDAPEIT.APEIT_LINHA,
      CSTADCIT.ADCIT_TIPO_ITEM, 
      CSTADCIT.ADCIT_DESTINO, 
      VNDADFIT.ADFIT_COD_ITEM, 
      VNDAPEIT.APEIT_APLICACAO, 
      GRLAFAVE.AFAVE_DESEMBOLSO,
      VNDAPEPC.APEPC_PARCELA,
      VNDAPEPC.APEPC_STATUS,
      VNDAPEPC.APEPC_PERC_COMI,
      VNDAPEPC.APEPC_MOEDA, 
     ((VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE)*
      (VNDAPEPC.APEPC_VALOR_ENC-VNDAPEPC.APEPC_VLR_DESCONTO)) AS EMABERTO 
   FROM  VNDAPEPC, VNDAPEIT, VNDAPECD, VNDADFIT, GRLAFAVE, CSTADCIT, INFOCREDCFT, SITUACAOCRED
   WHERE VNDAPECD.APECD_EMPRESA = VNDAPEPC.APEPC_EMPRESA AND
         VNDAPECD.APECD_UNIDADE = VNDAPEPC.APEPC_UNIDADE AND
         VNDAPECD.APECD_PEDIDO  = VNDAPEPC.APEPC_PEDIDO AND 
         VNDAPEIT.APEIT_EMPRESA = VNDAPEPC.APEPC_EMPRESA AND
         VNDAPEIT.APEIT_UNIDADE = VNDAPEPC.APEPC_UNIDADE AND
         VNDAPEIT.APEIT_PEDIDO  = VNDAPEPC.APEPC_PEDIDO AND 
         VNDAPEIT.APEIT_LINHA   = VNDAPEPC.APEPC_LINHA AND 
         VNDAPEIT.APEIT_COD_ITEM  = VNDADFIT.ADFIT_COD_ITEM AND
         VNDADFIT.ADFIT_FAM_VENDA = GRLAFAVE.AFAVE_CODIGO AND
         CSTADCIT.ADCIT_EMPRESA = VNDAPEIT.APEIT_EMPRESA AND
         CSTADCIT.ADCIT_UNIDADE = VNDAPEIT.APEIT_UNIDADE AND
         CSTADCIT.ADCIT_COD_ITEM  = VNDAPEIT.APEIT_COD_ITEM AND 
         VNDAPEPC.APEPC_STATUS    <> 'C' AND         
         VNDAPEPC.APEPC_STATUS    <> 'E' AND  
         VNDAPEPC.APEPC_DATA_CANCEL = '00000000'  AND
        (VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE) > 0 AND
         INFOCREDCFT.TIPOEMPRESA   =  VNDAPECD.APECD_TIPO_CLI AND
         INFOCREDCFT.CODIGOEMPRESA =  VNDAPECD.APECD_CLIENTE AND
         INFOCREDCFT.SITUACAOCRED  = SITUACAOCRED.CODIGO AND
         SITUACAOCRED.PERMITENFF   = 'S' AND
         EXISTS (SELECT * FROM UNIDADE WHERE
             UNIDADE.CODIGOEMP = VNDAPECD.APECD_EMPRESA AND
             UNIDADE.CODIGO = VNDAPECD.APECD_UNIDADE) AND
         EXISTS (SELECT * FROM CATEGORIA WHERE
             CATEGORIA.CODIGO = GRLAFAVE.AFAVE_DESEMBOLSO AND
             CATEGORIA.GRUPO = 'R') AND
         NOT EXISTS (SELECT * FROM VNDAPEEV WHERE
             VNDAPEEV.APEEV_EMPRESA = VNDAPECD.APECD_EMPRESA AND
             VNDAPEEV.APEEV_UNIDADE = VNDAPECD.APECD_UNIDADE AND
             VNDAPEEV.APEEV_PEDIDO  = VNDAPECD.APECD_PEDIDO );

COMMENT ON VIEW VIEWPEDIDODOC IS "Pedidos de Venda para gerao de Titulo a Receber";
DROP VIEW VIEWPEDREP;

create view VIEWPEDREP( CODIGOEMP, CODIGOUNIDADE, TIPOREPRESENTANTE, CODIGOREPRESENTANTE, CODIGOAPLICACAO, CODIGOCATEGORIA, DATAPREVISTA, STATUSPAR, NUMEROPARCELA, SALDO, MOEDA) AS 
   SELECT 
      VNDAPECD.APECD_EMPRESA    AS CODIGOEMP,
      VNDAPECD.APECD_UNIDADE    AS CODIGOUNIDADE,
      VNDAPECD.APECD_TIPO_REPRE AS TIPOREPRESENTANTE,
      VNDAPECD.APECD_REPRE      AS CODIGOREPRESENTANTE,
      VNDAPEIT.APEIT_APLICACAO  AS CODIGOAPLICACAO, 
      GRLAFAVE.AFAVE_DESEMBOLSO AS CODIGOCATEGORIA,
      VNDAPEPC.APEPC_DATA_PREV  AS DATAPREVISTA,
      VNDAPEPC.APEPC_STATUS     AS STATUSPAR,
      COUNT(*)                  AS NUMEROPARCELAS,
      SUM((VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE)*
          (VNDAPEPC.APEPC_VALOR_ENC-VNDAPEPC.APEPC_VLR_DESCONTO)) AS SALDO,
      VNDAPEPC.APEPC_MOEDA      AS MOEDA
   FROM  VNDAPEPC, VNDAPEIT, VNDAPECD, VNDADFIT, GRLAFAVE 
   WHERE VNDAPEPC.APEPC_QTD_PEDIDA <> VNDAPEPC.APEPC_QTD_ENTREGUE AND 
         VNDAPEIT.APEIT_EMPRESA   = VNDAPEPC.APEPC_EMPRESA AND
         VNDAPEIT.APEIT_UNIDADE   = VNDAPEPC.APEPC_UNIDADE AND
         VNDAPEIT.APEIT_PEDIDO    = VNDAPEPC.APEPC_PEDIDO AND 
         VNDAPEIT.APEIT_LINHA     = VNDAPEPC.APEPC_LINHA AND 
         VNDAPEIT.APEIT_EMPRESA   = VNDAPECD.APECD_EMPRESA AND
         VNDAPEIT.APEIT_UNIDADE   = VNDAPECD.APECD_UNIDADE AND
         VNDAPEIT.APEIT_PEDIDO    = VNDAPECD.APECD_PEDIDO AND 
         VNDAPEIT.APEIT_COD_ITEM  = VNDADFIT.ADFIT_COD_ITEM AND
         VNDADFIT.ADFIT_FAM_VENDA = GRLAFAVE.AFAVE_CODIGO AND
         VNDAPEPC.APEPC_STATUS <> 'C' AND
         VNDAPEPC.APEPC_STATUS <> 'E' 
   GROUP BY VNDAPECD.APECD_EMPRESA, VNDAPECD.APECD_UNIDADE, VNDAPECD.APECD_TIPO_REPRE, VNDAPECD.APECD_REPRE, 
         VNDAPEIT.APEIT_APLICACAO, GRLAFAVE.AFAVE_DESEMBOLSO, VNDAPEPC.APEPC_DATA_PREV, VNDAPEPC.APEPC_STATUS,  
         VNDAPEPC.APEPC_MOEDA;

COMMENT ON VIEW VIEWPEDREP IS "Valor Previsto em Pedidos por Empresa, Unidade, Representante, Aplicacao, Categoria";
DROP VIEW VIEWPEDREPCLI;

create view VIEWPEDREPCLI( CODIGOEMP, CODIGOUNIDADE, TIPOREPRESENTANTE, CODIGOREPRESENTANTE, TIPOCLIENTE, CODIGOCLIENTE, PERCCOMISSAO, MERCADO, TIPOMERCADO, STATUSPAR, SALDO, MOEDA) AS 
   SELECT 
      VNDAPECD.APECD_EMPRESA AS CODIGOEMP,
      VNDAPECD.APECD_UNIDADE AS CODIGOUNIDADE,
      VNDAPECD.APECD_TIPO_REPRE AS TIPOREPRESENTANTE,
      VNDAPECD.APECD_REPRE AS CODIGOREPRESENTANTE,
      VNDAPECD.APECD_TIPO_CLI AS TIPOCLIENTE,
      VNDAPECD.APECD_CLIENTE AS CODIGOCLIENTE,
      AVG(VNDAPEPC.APEPC_PERC_COMI) AS PERCCOMISSAO, 
      VNDAPECD.APECD_MERCADO  AS MERCADO,
      VNDAPECD.APECD_TIPO  AS TIPOMERCADO,
      VNDAPEPC.APEPC_STATUS AS STATUSPAR,
      SUM((VNDAPEPC.APEPC_QTD_PEDIDA-VNDAPEPC.APEPC_QTD_ENTREGUE)*
          (VNDAPEPC.APEPC_VALOR_ENC-VNDAPEPC.APEPC_VLR_DESCONTO)) AS SALDO,
      VNDAPEPC.APEPC_MOEDA AS MOEDA
   FROM  VNDAPEPC, VNDAPECD
   WHERE VNDAPECD.APECD_EMPRESA = VNDAPEPC.APEPC_EMPRESA AND
         VNDAPECD.APECD_UNIDADE = VNDAPEPC.APEPC_UNIDADE AND
         VNDAPECD.APECD_PEDIDO  = VNDAPEPC.APEPC_PEDIDO AND 
         VNDAPEPC.APEPC_STATUS <> 'C' 
   GROUP BY VNDAPECD.APECD_EMPRESA, VNDAPECD.APECD_UNIDADE, VNDAPECD.APECD_TIPO_REPRE, VNDAPECD.APECD_REPRE, 
            VNDAPECD.APECD_TIPO_CLI, VNDAPECD.APECD_CLIENTE, VNDAPECD.APECD_MERCADO,  
            VNDAPECD.APECD_TIPO, VNDAPEPC.APEPC_STATUS, VNDAPEPC.APEPC_MOEDA;

COMMENT ON VIEW VIEWPEDREPCLI IS "Valor Previsto em Pedidos por Empresa, Unidade, Representante, Cliente, Mercado";