    begin
         select count(distinct D.IDPEDIDO),
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

            join CLIENTE C
              on C.IDCLIENTE = D.IDCLIENTE


          where IT.IDFILIAL = :IDFILIAL
            and IT.TROCA = 'N'
            and D.SITUACAOPEDIDO between :SITUACAOINI and :SITUACAOFIM
            and D.DATAPEDIDO between :DTINI and :DTFIM
            and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
            and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
            and C.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
            and P.IDFORNECEDOR = :IDFORNECEDOR
            and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
            and D.IDREPRESENTANTE = :IDREPRESENTANTE
            and C.IDATIVIDADE between :IDATIVIDADEINI and :IDATIVIDADEFIM
            and C.IDSUB_ATIVIDADE between :IDSUB_ATIVIDADEINI and :IDSUB_ATIVIDADEFIM
            and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
            into :VDEV_QTDE, :VDEV_PRECOVENDA;

          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
          if (:vDEV_QTDE is null) then vDEV_QTDE = 0;

          TOTALVENDIDO = (:TOTALVENDIDO-:vDEV_PRECOVENDA);
          QTDEVENDIDO = (:QTDEVENDIDO-:vDEV_QTDE);
      suspend;
   end
end^


ALTER PROCEDURE REL_VENDAPRODUTO_REGIAO_SINT (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDREGIAO SMALLINT,
    NOME VARCHAR(45),
    VALORVENDIDO NUMERIC(16,2))
AS
DECLARE VARIABLE VDEV_PRECOVENDA NUMERIC(14,2);
begin
  for select R.IDREGIAO, COLLATEBR(R.NOME), sum(IT.QTDEPEDIDO*IT.PRECOVENDA) from ITENSPEDIDO IT
      right join PEDIDO PE
         on PE.IDFILIAL = :IDFILIAL
        and PE.IDPEDIDO = IT.IDPEDIDO
        and PE.IDFOLHA = IT.IDFOLHA

      join CLIENTE C
        on C.IDCLIENTE = PE.IDCLIENTE

      join CIDADE CI
        on CI.IDCIDADE = C.IDCIDADE

      join REGIAO R
        on R.IDREGIAO = CI.IDREGIAO

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and CI.IDREGIAO between :IDREGIAOINI and :IDREGIAOFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by R.IDREGIAO, COLLATEBR(R.NOME)
      into :IDREGIAO, :NOME, :VALORVENDIDO
  do
    begin
         select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

              join CLIENTE C
                on C.IDCLIENTE = D.IDCLIENTE
        
              join CIDADE CI
                on CI.IDCIDADE = C.IDCIDADE

           where IT.IDFILIAL = :IDFILIAL
             and IT.TROCA = 'N'
             and D.SITUACAOPEDIDO = 'V'
             and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
             and CI.IDREGIAO = :IDREGIAO
             and D.DATAPEDIDO between :DATAINI and :DATAFIM
             into :vDEV_PRECOVENDA;

          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
          VALORVENDIDO = (:VALORVENDIDO-:vDEV_PRECOVENDA);
      suspend;
    end
end^


ALTER PROCEDURE REL_VENDAS_CENTROCUSTO (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER)
RETURNS (
    IDCENTROCUSTO SMALLINT,
    NOMECENTROCUSTO VARCHAR(45),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    QTDEVENDIDA NUMERIC(10,3),
    PRECOVENDA NUMERIC(15,2),
    FATORCONVERSAO INTEGER)
AS
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA numeric(14,2);
begin
  /*    PEDIDO    */
  for select PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO),
      IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
      sum(IT.PRECOVENDA*IT.QTDEPEDIDO), P.FATORCONVERSAO  from ITENSPEDIDO IT

    right join PEDIDO PE
      on PE.IDFILIAL = :IDFILIAL
     and PE.IDPEDIDO = IT.IDPEDIDO
     and PE.IDFOLHA = IT.IDFOLHA

    join CENTROCUSTO CC
      on CC.IDCENTROCUSTO = PE.IDCENTROCUSTO
     
    left join PRODUTO P
      on P.IDFILIAL = :IDFILIAL
     and P.IDPRODUTO = IT.IDPRODUTO

    where IT.IDFILIAL = :IDFILIAL
      and IT.TROCA = 'N'
      and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
      and PE.DATAPEDIDO between :DTINI and :DTFIM
      and PE.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
      and PE.SITUACAOPEDIDO = 'V'
      and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
      and PE.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
      group by PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO),
               P.FATORCONVERSAO
               
     into :IDCENTROCUSTO, NOMECENTROCUSTO, :IDPRODUTO,
          :NOMEPRODUTO, :QTDEVENDIDA, :PRECOVENDA, :FATORCONVERSAO
  do
    begin
         select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

            where IT.IDFILIAL = :IDFILIAL
              and IT.TROCA = 'N'
              and IT.IDPRODUTO = :IDPRODUTO
              and D.DATAPEDIDO between :DTINI and :DTFIM
              and D.IDCENTROCUSTO = :IDCENTROCUSTO
              and D.SITUACAOPEDIDO = 'V'
              and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
              and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
             into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;

          if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;

          QTDEVENDIDA = (:QTDEVENDIDA-:vDEV_QTDEPEDIDO);
          PRECOVENDA = (:PRECOVENDA-:vDEV_PRECOVENDA);

      suspend;
    end
    
   /* DEVOLUCAO */
  for select D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO),
      IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
      sum(IT.PRECOVENDA*IT.QTDEPEDIDO), P.FATORCONVERSAO  from ITENSDEVOLUCAO IT
    right join DEVOLUCAO D
      on D.IDFILIAL = :IDFILIAL
     and D.IDPEDIDO = IT.IDPEDIDO
     and D.IDFOLHA = IT.IDFOLHA

    join CENTROCUSTO CC
      on CC.IDCENTROCUSTO = D.IDCENTROCUSTO

    left join PRODUTO P
      on P.IDFILIAL = :IDFILIAL
     and P.IDPRODUTO = IT.IDPRODUTO

    where IT.IDFILIAL = :IDFILIAL
      and IT.TROCA = 'N'
      and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
      and D.DATAPEDIDO between :DTINI and :DTFIM
      and D.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
      and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
      and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
      group by D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO),
               P.FATORCONVERSAO

     into :IDCENTROCUSTO, NOMECENTROCUSTO, :IDPRODUTO,
          :NOMEPRODUTO, :QTDEVENDIDA, :PRECOVENDA, :FATORCONVERSAO
  do
    suspend;
end^


ALTER PROCEDURE REL_VENDAS_CENTROCUSTO_MSCERCAS (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    IDOBRASINI INTEGER,
    IDOBRASFIM INTEGER)
RETURNS (
    IDCENTROCUSTO SMALLINT,
    NOMECENTROCUSTO VARCHAR(45),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    QTDEVENDIDA NUMERIC(10,3),
    PRECOVENDA NUMERIC(15,2),
    FATORCONVERSAO INTEGER)
AS
declare variable vdev_qtdepedido numeric(10,3);
declare variable vdev_precovenda numeric(14,2);
begin
  /*    PEDIDO    */
  if (:IDOBRASINI <= 0) then begin
      for select PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO),
          IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
          sum(IT.PRECOVENDA*IT.QTDEPEDIDO), P.FATORCONVERSAO  from ITENSPEDIDO IT
    
        right join PEDIDO PE
          on PE.IDFILIAL = :IDFILIAL
         and PE.IDPEDIDO = IT.IDPEDIDO
         and PE.IDFOLHA = IT.IDFOLHA
    
        join CENTROCUSTO CC
          on CC.IDCENTROCUSTO = PE.IDCENTROCUSTO
         
        left join PRODUTO P
          on P.IDFILIAL = :IDFILIAL
         and P.IDPRODUTO = IT.IDPRODUTO
    
        where IT.IDFILIAL = :IDFILIAL
          and IT.TROCA = 'N'
          and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
          and PE.DATAPEDIDO between :DTINI and :DTFIM
          and PE.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
          and PE.SITUACAOPEDIDO = 'V'
          and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
          and PE.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          group by PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO),
                   P.FATORCONVERSAO
                   
         into :IDCENTROCUSTO, NOMECENTROCUSTO, :IDPRODUTO,
              :NOMEPRODUTO, :QTDEVENDIDA, :PRECOVENDA, :FATORCONVERSAO
      do
        begin
             select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                    sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
    
                 right join DEVOLUCAO D
                   on D.IDFILIAL = :IDFILIAL
                  and D.IDPEDIDO = IT.IDPEDIDO
                  and D.IDFOLHA = IT.IDFOLHA
    
                left join PRODUTO P
                  on  P.IDPRODUTO = IT.IDPRODUTO
                  and P.IDFILIAL = IT.IDFILIAL
    
                where IT.IDFILIAL = :IDFILIAL
                  and IT.TROCA = 'N'
                  and IT.IDPRODUTO = :IDPRODUTO
                  and D.DATAPEDIDO between :DTINI and :DTFIM
                  and D.IDCENTROCUSTO = :IDCENTROCUSTO
                  and D.SITUACAOPEDIDO = 'V'
                  and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                  and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
                 into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
    
              if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
              if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
    
              QTDEVENDIDA = (:QTDEVENDIDA-:vDEV_QTDEPEDIDO);
              PRECOVENDA = (:PRECOVENDA-:vDEV_PRECOVENDA);
    
          suspend;
        end
        
       /* DEVOLUCAO */
      for select D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO),
          IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
          sum(IT.PRECOVENDA*IT.QTDEPEDIDO), P.FATORCONVERSAO  from ITENSDEVOLUCAO IT
        right join DEVOLUCAO D
          on D.IDFILIAL = :IDFILIAL
         and D.IDPEDIDO = IT.IDPEDIDO
         and D.IDFOLHA = IT.IDFOLHA
    
        join CENTROCUSTO CC
          on CC.IDCENTROCUSTO = D.IDCENTROCUSTO
    
        left join PRODUTO P
          on P.IDFILIAL = :IDFILIAL
         and P.IDPRODUTO = IT.IDPRODUTO
    
        where IT.IDFILIAL = :IDFILIAL
          and IT.TROCA = 'N'
          and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
          and D.DATAPEDIDO between :DTINI and :DTFIM
          and D.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
          and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
          group by D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO),
                   P.FATORCONVERSAO
    
         into :IDCENTROCUSTO, NOMECENTROCUSTO, :IDPRODUTO,
              :NOMEPRODUTO, :QTDEVENDIDA, :PRECOVENDA, :FATORCONVERSAO
      do
        suspend;
  end










  -- SE NAO FOR MARCADO
  else begin
      for select PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO),
          IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
          sum(IT.PRECOVENDA*IT.QTDEPEDIDO), P.FATORCONVERSAO  from ITENSPEDIDO IT
    
        right join PEDIDO PE
          on PE.IDFILIAL = :IDFILIAL
         and PE.IDPEDIDO = IT.IDPEDIDO
         and PE.IDFOLHA = IT.IDFOLHA
    
        join CENTROCUSTO CC
          on CC.IDCENTROCUSTO = PE.IDCENTROCUSTO
         
        left join PRODUTO P
          on P.IDFILIAL = :IDFILIAL
         and P.IDPRODUTO = IT.IDPRODUTO
    
        where IT.IDFILIAL = :IDFILIAL
          and IT.TROCA = 'N'
          and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
          and PE.DATAPEDIDO between :DTINI and :DTFIM
          and PE.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
          and PE.idobras between :idobrasini and :idobrasfim
          and PE.SITUACAOPEDIDO = 'V'
          and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
          and PE.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          group by PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO),
                   P.FATORCONVERSAO
                   
         into :IDCENTROCUSTO, NOMECENTROCUSTO, :IDPRODUTO,
              :NOMEPRODUTO, :QTDEVENDIDA, :PRECOVENDA, :FATORCONVERSAO
      do
        begin
             select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                    sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
    
                 right join DEVOLUCAO D
                   on D.IDFILIAL = :IDFILIAL
                  and D.IDPEDIDO = IT.IDPEDIDO
                  and D.IDFOLHA = IT.IDFOLHA
    
                left join PRODUTO P
                  on  P.IDPRODUTO = IT.IDPRODUTO
                  and P.IDFILIAL = IT.IDFILIAL
    
                where IT.IDFILIAL = :IDFILIAL
                  and IT.TROCA = 'N'
                  and IT.IDPRODUTO = :IDPRODUTO
                  and D.DATAPEDIDO between :DTINI and :DTFIM
                  and D.IDCENTROCUSTO = :IDCENTROCUSTO
                  and D.idobras between :idobrasini and :idobrasfim
                  and D.SITUACAOPEDIDO = 'V'
                  and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                  and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
                 into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
    
              if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
              if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
    
              QTDEVENDIDA = (:QTDEVENDIDA-:vDEV_QTDEPEDIDO);
              PRECOVENDA = (:PRECOVENDA-:vDEV_PRECOVENDA);
    
          suspend;
        end
        
       /* DEVOLUCAO */
      for select D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO),
          IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
          sum(IT.PRECOVENDA*IT.QTDEPEDIDO), P.FATORCONVERSAO  from ITENSDEVOLUCAO IT
        right join DEVOLUCAO D
          on D.IDFILIAL = :IDFILIAL
         and D.IDPEDIDO = IT.IDPEDIDO
         and D.IDFOLHA = IT.IDFOLHA
    
        join CENTROCUSTO CC
          on CC.IDCENTROCUSTO = D.IDCENTROCUSTO
    
        left join PRODUTO P
          on P.IDFILIAL = :IDFILIAL
         and P.IDPRODUTO = IT.IDPRODUTO
    
        where IT.IDFILIAL = :IDFILIAL
          and IT.TROCA = 'N'
          and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
          and D.DATAPEDIDO between :DTINI and :DTFIM
          and D.idobras between :idobrasini and :idobrasfim
          and D.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
          and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
          group by D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO),
                   P.FATORCONVERSAO
    
         into :IDCENTROCUSTO, NOMECENTROCUSTO, :IDPRODUTO,
              :NOMEPRODUTO, :QTDEVENDIDA, :PRECOVENDA, :FATORCONVERSAO
      do
        suspend;
  end
end^


ALTER PROCEDURE REL_VENDAS_CENTROCUSTO_SINT (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER)
RETURNS (
    IDCENTROCUSTO SMALLINT,
    NOMECENTROCUSTO VARCHAR(45),
    TOTALVENDA NUMERIC(15,2))
AS
DECLARE VARIABLE VDEV_PRECOVENDA NUMERIC(14,2);
begin
  /*    PEDIDO    */

  for select PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), sum(IT.QTDEPEDIDO*IT.PRECOVENDA) from ITENSPEDIDO IT

    right join PEDIDO PE
      on PE.IDFILIAL = :IDFILIAL
     and PE.IDPEDIDO = IT.IDPEDIDO
     and PE.IDFOLHA = IT.IDFOLHA
     
    join CENTROCUSTO CC
      on CC.IDCENTROCUSTO = PE.IDCENTROCUSTO

    where IT.IDFILIAL = :IDFILIAL
      and PE.DATAPEDIDO between :DTINI and :DTFIM
      and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
      and PE.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
      and PE.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
      and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
      and PE.SITUACAOPEDIDO = 'V'
      group by PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO)

     into :IDCENTROCUSTO, NOMECENTROCUSTO, :TOTALVENDA
  do
    begin
         select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

            where IT.IDFILIAL = :IDFILIAL
              and D.DATAPEDIDO between :DTINI and :DTFIM
              and D.IDCENTROCUSTO = :IDCENTROCUSTO
              and D.SITUACAOPEDIDO = 'V'
              and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
              and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
             into :vDEV_PRECOVENDA;

          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;

          TOTALVENDA = (:TOTALVENDA-:vDEV_PRECOVENDA);

      suspend;
    end
    
  for select D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), sum(IT.QTDEPEDIDO*IT.PRECOVENDA) from ITENSDEVOLUCAO IT
  
    right join DEVOLUCAO D
      on D.IDFILIAL = :IDFILIAL
     and D.IDPEDIDO = IT.IDPEDIDO
     and D.IDFOLHA = IT.IDFOLHA

    join CENTROCUSTO CC
      on CC.IDCENTROCUSTO = D.IDCENTROCUSTO

    where IT.IDFILIAL = :IDFILIAL
      and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
      and D.DATAPEDIDO between :DTINI and :DTFIM
      and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
      and D.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
      and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
      group by D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO)

     into :IDCENTROCUSTO, NOMECENTROCUSTO, :TOTALVENDA
  do
    suspend;
end^


ALTER PROCEDURE REL_VENDAS_CUSTO_SINTMSCERCAS (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    IDOBRASINI INTEGER,
    IDOBRASFIM INTEGER)
RETURNS (
    IDCENTROCUSTO SMALLINT,
    NOMECENTROCUSTO VARCHAR(45),
    TOTALVENDA NUMERIC(15,2))
AS
declare variable vdev_precovenda numeric(14,2);
begin
  /*    PEDIDO    */
  if (:IDOBRASINI <= 0) then begin
      for select PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), sum(IT.QTDEPEDIDO*IT.PRECOVENDA) from ITENSPEDIDO IT
    
        right join PEDIDO PE
          on PE.IDFILIAL = :IDFILIAL
         and PE.IDPEDIDO = IT.IDPEDIDO
         and PE.IDFOLHA = IT.IDFOLHA
         
        join CENTROCUSTO CC
          on CC.IDCENTROCUSTO = PE.IDCENTROCUSTO
    
        where IT.IDFILIAL = :IDFILIAL
          and PE.DATAPEDIDO between :DTINI and :DTFIM
          and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
          and PE.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
          and PE.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
          and PE.SITUACAOPEDIDO = 'V'
          group by PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO)
    
         into :IDCENTROCUSTO, NOMECENTROCUSTO, :TOTALVENDA
      do
        begin
             select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
    
                 right join DEVOLUCAO D
                   on D.IDFILIAL = :IDFILIAL
                  and D.IDPEDIDO = IT.IDPEDIDO
                  and D.IDFOLHA = IT.IDFOLHA
    
                left join PRODUTO P
                  on  P.IDPRODUTO = IT.IDPRODUTO
                  and P.IDFILIAL = IT.IDFILIAL
    
                where IT.IDFILIAL = :IDFILIAL
                  and D.DATAPEDIDO between :DTINI and :DTFIM
                  and D.IDCENTROCUSTO = :IDCENTROCUSTO
                  and D.SITUACAOPEDIDO = 'V'
                  and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                  and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
                 into :vDEV_PRECOVENDA;
    
              if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
    
              TOTALVENDA = (:TOTALVENDA-:vDEV_PRECOVENDA);
    
          suspend;
        end
        
      for select D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), sum(IT.QTDEPEDIDO*IT.PRECOVENDA) from ITENSDEVOLUCAO IT
      
        right join DEVOLUCAO D
          on D.IDFILIAL = :IDFILIAL
         and D.IDPEDIDO = IT.IDPEDIDO
         and D.IDFOLHA = IT.IDFOLHA
    
        join CENTROCUSTO CC
          on CC.IDCENTROCUSTO = D.IDCENTROCUSTO
    
        where IT.IDFILIAL = :IDFILIAL
          and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
          and D.DATAPEDIDO between :DTINI and :DTFIM
          and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and D.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
          and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
          group by D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO)
    
         into :IDCENTROCUSTO, NOMECENTROCUSTO, :TOTALVENDA
      do
        suspend;
  end


  -- se for escolhido a obra
  else begin
      for select PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), sum(IT.QTDEPEDIDO*IT.PRECOVENDA) from ITENSPEDIDO IT
    
        right join PEDIDO PE
          on PE.IDFILIAL = :IDFILIAL
         and PE.IDPEDIDO = IT.IDPEDIDO
         and PE.IDFOLHA = IT.IDFOLHA
         
        join CENTROCUSTO CC
          on CC.IDCENTROCUSTO = PE.IDCENTROCUSTO
    
        where IT.IDFILIAL = :IDFILIAL
          and PE.DATAPEDIDO between :DTINI and :DTFIM
          and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
          and PE.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
          and PE.idobras between :idobrasini and :idobrasfim
          and PE.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
          and PE.SITUACAOPEDIDO = 'V'
          group by PE.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO)
    
         into :IDCENTROCUSTO, NOMECENTROCUSTO, :TOTALVENDA
      do
        begin
             select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
    
                 right join DEVOLUCAO D
                   on D.IDFILIAL = :IDFILIAL
                  and D.IDPEDIDO = IT.IDPEDIDO
                  and D.IDFOLHA = IT.IDFOLHA
    
                left join PRODUTO P
                  on  P.IDPRODUTO = IT.IDPRODUTO
                  and P.IDFILIAL = IT.IDFILIAL
    
                where IT.IDFILIAL = :IDFILIAL
                  and D.DATAPEDIDO between :DTINI and :DTFIM
                  and D.IDCENTROCUSTO = :IDCENTROCUSTO
                  and D.idobras between :idobrasini and :idobrasfim
                  and D.SITUACAOPEDIDO = 'V'
                  and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                  and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
                 into :vDEV_PRECOVENDA;
    
              if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
    
              TOTALVENDA = (:TOTALVENDA-:vDEV_PRECOVENDA);
    
          suspend;
        end
        
      for select D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO), sum(IT.QTDEPEDIDO*IT.PRECOVENDA) from ITENSDEVOLUCAO IT
      
        right join DEVOLUCAO D
          on D.IDFILIAL = :IDFILIAL
         and D.IDPEDIDO = IT.IDPEDIDO
         and D.IDFOLHA = IT.IDFOLHA
    
        join CENTROCUSTO CC
          on CC.IDCENTROCUSTO = D.IDCENTROCUSTO
    
        where IT.IDFILIAL = :IDFILIAL
          and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
          and D.DATAPEDIDO between :DTINI and :DTFIM
          and D.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and D.idobras between :idobrasini and :idobrasfim
          and D.IDCENTROCUSTO between :IDCENTROCUSTOINI and :IDCENTROCUSTOFIM
          and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
          group by D.IDCENTROCUSTO, COLLATEBR(CC.DESCRICAO)
    
         into :IDCENTROCUSTO, NOMECENTROCUSTO, :TOTALVENDA
      do
        suspend;
  end
end^


ALTER PROCEDURE REL_VENDAS_FORMAPAGTO (
    IDFILIAL INTEGER,
    DTPEDIDOINI DATE,
    DTPEDIDOFIM DATE,
    IDREPREINI INTEGER,
    IDREPREFIM INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDFORMAPAGTO INTEGER,
    NOMEFORMAPAGTO VARCHAR(35),
    TOTALPEDIDO NUMERIC(14,2),
    TOTALDEVOLUCAO NUMERIC(14,2),
    TOTALBONIFICACAO NUMERIC(14,2),
    TOTALTROCA NUMERIC(14,2))
AS
begin
  for select F.IDFORMAPAGTO, F.DESCRICAO  from FORMAPAGTO F
       into :IDFORMAPAGTO, :NOMEFORMAPAGTO
  do
    begin
      select sum(R.TOTALPEDIDO) from REL_PEDIDO R
         where R.IDFILIAL = :IDFILIAL
           and R.SITUACAOPEDIDO = 'V'
           and R.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
           and R.IDFORMAPAGTO = :IDFORMAPAGTO
           and R.IDREPRESENTANTE between :IDREPREINI and :IDREPREFIM
           and R.DATAPEDIDO between :DTPEDIDOINI and :DTPEDIDOFIM
         into :TOTALPEDIDO;

      select sum(R.TOTALPEDIDO) from REL_DEVOLUCAO R
         where R.IDFILIAL = :IDFILIAL
           and R.SITUACAOPEDIDO = 'V'
           and R.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
           and R.IDFORMAPAGTO = :IDFORMAPAGTO
           and R.IDREPRESENTANTE between :IDREPREINI and :IDREPREFIM
           and R.DATAPEDIDO between :DTPEDIDOINI and :DTPEDIDOFIM
         into :TOTALDEVOLUCAO;

      select sum(R.TOTALPEDIDO) from REL_PEDIDO R
         where R.IDFILIAL = :IDFILIAL
           and R.SITUACAOPEDIDO = 'B'
           and R.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
           and R.IDFORMAPAGTO = :IDFORMAPAGTO
           and R.IDREPRESENTANTE between :IDREPREINI and :IDREPREFIM
           and R.DATAPEDIDO between :DTPEDIDOINI and :DTPEDIDOFIM
         into :TOTALBONIFICACAO;


      select sum(R.TOTALPEDIDO) from REL_PEDIDO R
         where R.IDFILIAL = :IDFILIAL
           and R.SITUACAOPEDIDO = 'T'
           and R.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
           and R.IDFORMAPAGTO = :IDFORMAPAGTO
           and R.IDREPRESENTANTE between :IDREPREINI and :IDREPREFIM
           and R.DATAPEDIDO between :DTPEDIDOINI and :DTPEDIDOFIM
         into :TOTALTROCA;
      suspend;
    end
end^


ALTER PROCEDURE REL_VENDAS_PRODUTOS (
    IDFILIAL INTEGER,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPRODUTO INTEGER,
    NM_PRODUTO VARCHAR(60),
    QTDE_A_VISTA NUMERIC(10,3),
    QTDE_A_PRAZO NUMERIC(10,3),
    VALOR_A_VISTA NUMERIC(16,2),
    VALOR_A_PRAZO NUMERIC(16,2),
    PRECO_UNITARIO_V NUMERIC(15,2),
    PRECO_UNITARIO_P NUMERIC(15,2))
AS
declare variable VALOR_A_PRAZO_V numeric(16,2);
declare variable QTDE_A_PRAZO_V numeric(10,3);
declare variable VALOR_A_VISTA_V numeric(16,2);
declare variable QTDE_A_VISTA_V numeric(10,3);
declare variable VALOR_A_PRAZO_D numeric(16,2);
declare variable QTDE_A_PRAZO_D numeric(10,3);
declare variable VALOR_A_VISTA_D numeric(16,2);
declare variable QTDE_A_VISTA_D numeric(10,3);
begin
  for select PR.IDPRODUTO, PR.ESPECIFICACAO from PRODUTO PR

  where PR.IDFILIAL = :IDFILIAL
    and PR.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
    and exists(select I.IDFILIAL from ITENSPEDIDO I

                 join PEDIDO P
                    on P.IDFILIAL = I.IDFILIAL
                   and P.IDPEDIDO = I.IDPEDIDO
                   and P.IDFOLHA = I.IDFOLHA

                 where I.IDFILIAL = PR.IDFILIAL
                   and I.IDPRODUTO = PR.IDPRODUTO
                   AND P.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
                   and P.DATAPEDIDO between :DTINI and :DTFIM
                   and P.SITUACAOPEDIDO = 'V')


--    and exists(select P.IDFILIAL from PEDIDO P
  into :IDPRODUTO, :NM_PRODUTO
  do
  begin
    VALOR_A_PRAZO = 0;
    VALOR_A_VISTA = 0;
    VALOR_A_PRAZO_V = 0;
    VALOR_A_VISTA_V = 0;
    VALOR_A_PRAZO_D = 0;
    VALOR_A_VISTA_D = 0;
    PRECO_UNITARIO_P = 0;
    PRECO_UNITARIO_V = 0;


      select sum(ITD.PRECOVENDA*ITD.QTDEPEDIDO), sum(ITD.QTDEPEDIDO*ITD.FATORCONVERSAO) from ITENSPEDIDO ITD
         join PEDIDO PD
            on PD.IDFILIAL = ITD.IDFILIAL
           and PD.IDPEDIDO = ITD.IDPEDIDO
           and PD.IDFOLHA = ITD.IDFOLHA

        where ITD.IDFILIAL = :IDFILIAL
          and ITD.IDPRODUTO = :IDPRODUTO
          AND PD.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and pd.DATAPEDIDO between :DTINI and :DTFIM
          AND PD.SITUACAOPEDIDO = 'V'
          and exists(select C.IDFILIAL from CONDICAOPAGTO C
                       where C.IDCONDICAOPAGTO = PD.IDCONDICAOPAGTO
                         and C.PRAZO <= 15)

      into :VALOR_A_VISTA_V, QTDE_A_VISTA_V;
      if (:VALOR_A_VISTA_V is null) then
      begin
        VALOR_A_VISTA_V = 0;
      end
      if (:QTDE_A_VISTA_V is null) then
      begin
        QTDE_A_VISTA_V = 0;
      end

      select sum(ITD.PRECOVENDA*ITD.QTDEPEDIDO), sum(ITD.QTDEPEDIDO*ITD.FATORCONVERSAO) from ITENSDEVOLUCAO ITD
         join DEVOLUCAO PD
            on PD.IDFILIAL = ITD.IDFILIAL
           and PD.IDPEDIDO = ITD.IDPEDIDO
           AND PD.IDFOLHA = ITD.IDFOLHA

        where ITD.IDFILIAL = :IDFILIAL
          and ITD.IDPRODUTO = :IDPRODUTO
          AND PD.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and pd.DATAPEDIDO between :DTINI and :DTFIM
          AND PD.SITUACAOPEDIDO = 'V'
          and exists(select C.IDFILIAL from CONDICAOPAGTO C
                       where C.IDCONDICAOPAGTO = PD.IDCONDICAOPAGTO
                         and C.PRAZO <= 15)
      into :VALOR_A_VISTA_D, QTDE_A_VISTA_D;
      if (:VALOR_A_VISTA_D is null) then
      begin
        VALOR_A_VISTA_D = 0;
      end

      if (:QTDE_A_VISTA_D is null) then
      begin
        QTDE_A_VISTA_D = 0;
      end

     select sum(ITP.PRECOVENDA*ITP.QTDEPEDIDO), sum(ITP.QTDEPEDIDO*ITP.FATORCONVERSAO) from ITENSPEDIDO ITP

         join PEDIDO PE
            on PE.IDFILIAL = ITP.IDFILIAL
           and PE.IDPEDIDO = ITP.IDPEDIDO
           and PE.IDFOLHA = ITP.IDFOLHA

        where ITP.IDFILIAL = :IDFILIAL
          and ITP.IDPRODUTO = :IDPRODUTO
          and PE.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and pe.DATAPEDIDO between :DTINI and :DTFIM
          AND PE.SITUACAOPEDIDO = 'V'
          and exists(select C.IDFILIAL from CONDICAOPAGTO C
                       where C.IDCONDICAOPAGTO = PE.IDCONDICAOPAGTO
                         and C.PRAZO > 15)

      into :VALOR_A_PRAZO_V, QTDE_A_PRAZO_V;
      if (:VALOR_A_PRAZO_V is null) then
      begin
        VALOR_A_PRAZO_V = 0;
      end

      if (:QTDE_A_PRAZO_V is null) then
      begin
        QTDE_A_PRAZO_V = 0;
      end

     select sum(ITP.PRECOVENDA*ITP.QTDEPEDIDO), sum(ITP.QTDEPEDIDO*ITP.FATORCONVERSAO) from ITENSDEVOLUCAO ITP

         join DEVOLUCAO PE
            on PE.IDFILIAL = ITP.IDFILIAL
           and PE.IDPEDIDO = ITP.IDPEDIDO
           and PE.IDFOLHA = ITP.IDFOLHA

        where ITP.IDFILIAL = :IDFILIAL
          and ITP.IDPRODUTO = :IDPRODUTO
          and PE.IDREPRESENTANTE between :IDREPRESENTANTEINI and :IDREPRESENTANTEFIM
          and pe.DATAPEDIDO between :DTINI and :DTFIM
          AND PE.SITUACAOPEDIDO = 'V'
          and exists(select C.IDFILIAL from CONDICAOPAGTO C
                       where C.IDCONDICAOPAGTO = PE.IDCONDICAOPAGTO
                         and C.PRAZO > 15)

      into :VALOR_A_PRAZO_D, QTDE_A_PRAZO_D;
      if (:VALOR_A_PRAZO_D is null) then
      begin
        VALOR_A_PRAZO_D = 0;
      end

      if (:QTDE_A_PRAZO_D is null) then
      begin
        QTDE_A_PRAZO_D = 0;
      end

      VALOR_A_PRAZO = VALOR_A_PRAZO_V - VALOR_A_PRAZO_D;
      QTDE_A_PRAZO = QTDE_A_PRAZO_V - QTDE_A_PRAZO_D;

      VALOR_A_VISTA = VALOR_A_VISTA_V - VALOR_A_VISTA_D;
      QTDE_A_VISTA = QTDE_A_VISTA_V - QTDE_A_VISTA_D;

      if (VALOR_A_VISTA <> 0) then
      begin
        PRECO_UNITARIO_V = VALOR_A_VISTA / QTDE_A_VISTA;
      end
      if (VALOR_A_PRAZO <> 0) then
      begin
        PRECO_UNITARIO_P = VALOR_A_PRAZO / QTDE_A_PRAZO;
      end

    if ((QTDE_A_PRAZO <> 0) or (QTDE_A_VISTA <> 0)) then
    begin
      suspend;
    end
  end
end^


ALTER PROCEDURE REL_VENDAS_REPRESENTANTE (
    IDFILIAL SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    SIT VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(45) CHARACTER SET NONE,
    VALORVENDIDO NUMERIC(14,2),
    CUSTONOTA NUMERIC(14,4),
    QTDEVENDIDA NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    CPF_SUPERVISOR VARCHAR(14),
    QTDEPEDIDO INTEGER)
AS
DECLARE VARIABLE VDEV_PRECOVENDA NUMERIC(14,2);
DECLARE VARIABLE VDEV_CUSTONOTA NUMERIC(14,2);
DECLARE VARIABLE VDEV_QTDE NUMERIC(10,3);
DECLARE VARIABLE VIDUNIDADEMEDIDA SMALLINT;
DECLARE VARIABLE VQTDEPEDIDO INTEGER;
begin
 for select PE.IDREPRESENTANTE, COLLATEBR(R.NOME), sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
                                                   sum(IT.CUSTONOTA*IT.QTDEPEDIDO),
                                                   sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                                                   PR.IDUNIDADEMEDIDA,
                                                   UM.FATORCONVERSAO, R.CPF_SUPERVISOR from ITENSPEDIDO IT
      right join PEDIDO PE
        on PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFILIAL = :IDFILIAL
       and PE.IDFOLHA = IT.IDFOLHA

     left join CLIENTE CL
      on CL.IDCLIENTE = PE.IDCLIENTE

      join REPRESENTANTE R
        on R.IDREPRESENTANTE = PE.IDREPRESENTANTE

      join PRODUTO PR
        on PR.IDFILIAL = :IDFILIAL
       and PR.IDPRODUTO = IT.IDPRODUTO

      join UNIDADEMEDIDA UM
        on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
       and UM.IDFILIAL = :IDFILIAL

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = :SIT
        and PE.idcliente between :IDCLIENTEINI and :idclientefim
        and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
        and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
        and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
        and exists(select T.ID from TABELA_AUXILIAR T
                    where T.ID = PR.IDSUB_GRUPO)

      group by PE.IDREPRESENTANTE, COLLATEBR(R.NOME), PR.IDUNIDADEMEDIDA, UM.FATORCONVERSAO, R.CPF_SUPERVISOR
      into :IDREPRESENTANTE, :NOMEREPRESENTANTE, :VALORVENDIDO, :CUSTONOTA, :QTDEVENDIDA, :VIDUNIDADEMEDIDA, :FATORCONVERSAO, :CPF_SUPERVISOR
  do
    begin
         select count(distinct P.IDCLIENTE) from PEDIDO P

            left join ITENSPEDIDO IT
              on IT.IDFILIAL = P.IDFILIAL
             and IT.IDPEDIDO = P.IDPEDIDO
             and IT.IDFOLHA = P.IDFOLHA

            left join PRODUTO PR
              on PR.IDPRODUTO = IT.IDPRODUTO
             and PR.IDFILIAL  = IT.IDFILIAL

            left join CLIENTE CL
            on CL.IDCLIENTE = P.IDCLIENTE
            
            join REPRESENTANTE R
            on R.IDREPRESENTANTE = P.IDREPRESENTANTE
            
            join UNIDADEMEDIDA UM
            on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
            and UM.IDFILIAL = :IDFILIAL

          where P.IDFILIAL = :IDFILIAL
            and IT.TROCA = 'N'
            and P.SITUACAOPEDIDO = :SIT
            and P.idcliente between :IDCLIENTEINI and :idclientefim
            and P.IDREPRESENTANTE = :IDREPRESENTANTE
            and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
            and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
            and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
            and P.DATAPEDIDO between :DATAINI and :DATAFIM
            and exists(select T.ID from TABELA_AUXILIAR T
                        where T.ID = PR.IDSUB_GRUPO)
         into :vQTDEPEDIDO;

         if (:VQTDEPEDIDO is null) then vQTDEPEDIDO = 0;
         QTDEPEDIDO = :vQTDEPEDIDO;


         select sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
                sum(IT.CUSTONOTA*IT.QTDEPEDIDO),
                sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

             left join CLIENTE CL
              on CL.IDCLIENTE = D.IDCLIENTE

            join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = :IDFILIAL

           where IT.IDFILIAL = :IDFILIAL
             and IT.TROCA = 'N'
             and D.SITUACAOPEDIDO = :SIT
             and P.IDUNIDADEMEDIDA = :VIDUNIDADEMEDIDA
             and D.idcliente between :IDCLIENTEINI and :idclientefim
             and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
             and D.IDREPRESENTANTE = :IDREPRESENTANTE
             and P.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
             and D.DATAPEDIDO between :DATAINI and :DATAFIM
             and exists(select T.ID from TABELA_AUXILIAR T
                        where T.ID = P.IDSUB_GRUPO)

           into :vDEV_PRECOVENDA, :vDEV_CUSTONOTA, :vDEV_QTDE;

          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
          if (:vDEV_CUSTONOTA is null) then vDEV_CUSTONOTA = 0;
          if (:vDEV_QTDE is null) then vDEV_QTDE = 0;

          QTDEVENDIDA = (QTDEVENDIDA-:vDEV_QTDE);
          VALORVENDIDO = (:VALORVENDIDO-:vDEV_PRECOVENDA);
          CUSTONOTA = (:CUSTONOTA-:vDEV_CUSTONOTA);

       suspend;
    end
end^


ALTER PROCEDURE REL_VENDAS_TABELAPRECO (
    IDFILIAL INTEGER,
    IDTABELA INTEGER,
    DTINICIAL DATE,
    DTFINAL DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(40) CHARACTER SET NONE,
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(40) CHARACTER SET NONE,
    IDTABELAPRECO INTEGER,
    TABELAPRECO VARCHAR(40) CHARACTER SET NONE,
    TOTALPEDIDO NUMERIC(16,2))
AS
DECLARE VARIABLE VDEV_PRECOVENDA NUMERIC(14,2);
begin
  for select P.IDPEDIDO, P.IDFOLHA, P.IDCLIENTE, COLLATEBR(C.NOME), P.IDREPRESENTANTE, COLLATEBR(R.NOME), P.IDTABELAPRECO, COLLATEBR(TB.DESCRICAO), P.TOTALPEDIDO from PEDIDO P
    join REPRESENTANTE R
      on R.IDREPRESENTANTE = P.IDREPRESENTANTE

    join CLIENTE C
      on C.IDCLIENTE = P.IDCLIENTE

    join TABELAPRECO TB
      on TB.IDTABELAPRECO = P.IDTABELAPRECO
     and TB.IDFILIAL = :IDFILIAL
     
     where P.IDFILIAL = :IDFILIAL
       and P.SITUACAOPEDIDO = 'V'
       and P.IDTABELAPRECO = :IDTABELA
       and P.DATAPEDIDO between :DTINICIAL and :DTFINAL
       into :IDPEDIDO, :IDFOLHA, :IDCLIENTE, :NOMECLIENTE, :IDREPRESENTANTE, :NOMEREPRESENTANTE, :IDTABELAPRECO, :TABELAPRECO, :TOTALPEDIDO
  do
    begin
         select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

           where IT.IDFILIAL = :IDFILIAL
             and D.IDPEDIDO = :IDPEDIDO
             and D.IDFOLHA = :IDFOLHA
             and D.IDCLIENTE = :IDCLIENTE
             into :vDEV_PRECOVENDA;

          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
          TOTALPEDIDO = (:TOTALPEDIDO-:vDEV_PRECOVENDA);

       if (TOTALPEDIDO <> 0) then
         suspend;

    end
end^


ALTER PROCEDURE REL_VENDASPRODUTO (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    SITUACAOINI VARCHAR(1),
    SITUACAOFIM VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60),
    UNIDADE NUMERIC(15,2),
    NOTAFISCAL INTEGER,
    E_PAO VARCHAR(1))
AS
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA numeric(10,2);
declare variable VDEV_UNIDADE numeric(10,3);
declare variable VTROCAINI varchar(1);
declare variable VTROCAFIM varchar(1);
begin
   if ((SITUACAOINI = 'A') and (SITUACAOFIM = 'Z')) then begin
      VTROCAINI = 'A';
      VTROCAFIM = 'Z';
   end
   else begin
      VTROCAINI = 'N';
      VTROCAFIM = 'N';
   end


       if (:SITUACAOINI = '*') then begin
           for select IT.IDPRODUTO,IT.NOMEPRODUTO,IT.FATORPRODUTO,
                      PE.IDREPRESENTANTE, IT.IDGRUPO, IT.NOMEGRUPO, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO, IT.IDFORNECEDOR, IT.NOMEFORNECEDOR,
                      sum((IT.QTDEPEDIDO*IT.FATORCONVERSAO)/IT.FATORPRODUTO),
                      sum(IT.PRECOVENDA*IT.QTDEPEDIDO)-coalesce( sum((select sum(RIP.PRECOVENDA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
                      sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO)-coalesce( sum((select sum(RIP.QTDEPEDIDO*RIP.FATORCONVERSAO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
                      PE.NOTAFISCAL, IT.ESTE_PRODUTO_E_PAO
               from REL_ITENS_PEDIDO IT
        
                 join REL_PEDIDO PE
                  on  PE.IDPEDIDO = IT.IDPEDIDO
                  and PE.IDFOLHA  = IT.IDFOLHA
                  and PE.IDFILIAL = IT.IDFILIAL
        
        
                where IT.IDFILIAL = :IDFILIAL
                  and PE.SITUACAOPEDIDO between :SITUACAOINI and :SITUACAOFIM
                  and PE.TIPO_PEDIDO = 'F'
                  and coalesce(IT.TROCA,'N') between :VTROCAINI and :VTROCAFIM
                  and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                  and IT.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                  and IT.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                  and coalesce(IT.IDSUB_GRUPO,0) between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                  and PE.DATAPEDIDO between :DATAINI and :DATAFIM
                   group by IT.IDPRODUTO,IT.NOMEPRODUTO,IT.FATORPRODUTO,
                            PE.IDREPRESENTANTE, IT.IDGRUPO, IT.NOMEGRUPO, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO, IT.IDFORNECEDOR, IT.NOMEFORNECEDOR,
                            PE.NOTAFISCAL, IT.ESTE_PRODUTO_E_PAO
                   order by IT.IDPRODUTO
                   into :IDPRODUTO, :NOMEPRODUTO, :FATORCONVERSAO,
                        :IDREPRESENTANTE, :IDGRUPO, :NOMEGRUPO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :IDFORNECEDOR, :NOMEFORNECEDOR, :unidade, :PRECOVENDA, :QTDEVENDIDA, :NOTAFISCAL, :E_PAO
           do
             suspend;

       end



       if (:SITUACAOINI <> '*') then begin
           for select IT.IDPRODUTO,IT.NOMEPRODUTO,IT.FATORPRODUTO,
                      PE.IDREPRESENTANTE, IT.IDGRUPO, IT.NOMEGRUPO, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO, IT.IDFORNECEDOR, IT.NOMEFORNECEDOR,
                      sum((IT.QTDEPEDIDO*IT.FATORCONVERSAO)/IT.FATORPRODUTO),

                      sum(IT.PRECOVENDA*IT.QTDEPEDIDO)    -coalesce( sum((select sum(RIP.PRECOVENDA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
                      sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO)-coalesce( sum((select sum(RIP.QTDEPEDIDO*RIP.FATORCONVERSAO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
                      PE.NOTAFISCAL, IT.ESTE_PRODUTO_E_PAO
               from REL_ITENS_PEDIDO IT
        
                 join REL_PEDIDO PE
                  on  PE.IDPEDIDO = IT.IDPEDIDO
                  and PE.IDFOLHA  = IT.IDFOLHA
                  and PE.IDFILIAL = IT.IDFILIAL
        
        
                where IT.IDFILIAL = :IDFILIAL
                  and PE.SITUACAOPEDIDO between :SITUACAOINI and :SITUACAOFIM
                  and coalesce(IT.TROCA,'N') between :VTROCAINI and :VTROCAFIM
                  and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                  and IT.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                  and IT.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                  and coalesce(IT.IDSUB_GRUPO,0) between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                  and PE.DATAPEDIDO between :DATAINI and :DATAFIM
                   group by IT.IDPRODUTO,IT.NOMEPRODUTO,IT.FATORPRODUTO,
                            PE.IDREPRESENTANTE, IT.IDGRUPO, IT.NOMEGRUPO, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO, IT.IDFORNECEDOR, IT.NOMEFORNECEDOR,
                            PE.NOTAFISCAL, IT.ESTE_PRODUTO_E_PAO
                   order by IT.IDPRODUTO
                   into :IDPRODUTO, :NOMEPRODUTO, :FATORCONVERSAO,
                        :IDREPRESENTANTE, :IDGRUPO, :NOMEGRUPO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :IDFORNECEDOR, :NOMEFORNECEDOR, :unidade, :PRECOVENDA, :QTDEVENDIDA, :NOTAFISCAL, :E_PAO
           do
             suspend;
       end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_ATIVIDADE (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDATIVIDADEINI SMALLINT,
    IDATIVIDADEFIM SMALLINT,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDATIVIDADE SMALLINT,
    NOMEATIVIDADE VARCHAR(25),
    VALORVENDIDO NUMERIC(15,2),
    TOTALGERAL NUMERIC(15,2),
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60))
AS
declare variable VTOTALGERAL numeric(15,2);
declare variable VTOTALDEVOLUCAO numeric(15,2);
declare variable VDEV_VALORVENDIDO numeric(15,2);
begin
    select sum(IT.QTDEPEDIDO*IT.PRECOVENDA)  from ITENSPEDIDO IT
    right join PEDIDO P
       on P.IDFILIAL = :IDFILIAL
      and P.IDPEDIDO = IT.IDPEDIDO
      and P.IDFOLHA = IT.IDFOLHA

     join CLIENTE C
       on C.IDCLIENTE = P.IDCLIENTE

     left join PRODUTO PR
       on PR.IDFILIAL = :IDFILIAL
      and PR.IDPRODUTO = IT.IDPRODUTO

    where IT.IDFILIAL = :IDFILIAL
      and IT.TROCA = 'N'
      and P.SITUACAOPEDIDO = 'V'
      and C.IDATIVIDADE between :IDATIVIDADEINI and :IDATIVIDADEFIM
      and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
      and P.DATAPEDIDO between :DTINI and :DTFIM
     into :vTOTALGERAL;


     -- DEVOLUCAO TOTAL
     select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

        right join DEVOLUCAO D
           on D.IDFILIAL = :IDFILIAL
          and D.IDPEDIDO = IT.IDPEDIDO
          and D.IDFOLHA = IT.IDFOLHA

         join CLIENTE C
           on C.IDCLIENTE = D.IDCLIENTE

         left join PRODUTO PR
           on PR.IDFILIAL = :IDFILIAL
          and PR.IDPRODUTO = IT.IDPRODUTO

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and D.SITUACAOPEDIDO = 'V'
        and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
        and C.IDATIVIDADE between :IDATIVIDADEINI and :IDATIVIDADEFIM
        and D.DATAPEDIDO between :DTINI and :DTFIM
       into :vTOTALDEVOLUCAO;

  for select P.IDCLIENTE, C.NOME, C.IDATIVIDADE, COLLATEBR(A.NOME),
             sum(IT.QTDEPEDIDO*IT.PRECOVENDA) from ITENSPEDIDO IT
    right join PEDIDO P
       on P.IDFILIAL = :IDFILIAL
      and P.IDPEDIDO = IT.IDPEDIDO
      and P.IDFOLHA = IT.IDFOLHA

     join CLIENTE C
       on C.IDCLIENTE = P.IDCLIENTE

     left join PRODUTO PR
       on PR.IDFILIAL = :IDFILIAL
      and PR.IDPRODUTO = IT.IDPRODUTO

     join ATIVIDADE A
       on A.IDATIVIDADE = C.IDATIVIDADE

    where IT.IDFILIAL = :IDFILIAL
      and IT.TROCA = 'N'
      and P.SITUACAOPEDIDO = 'V'
      and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
      and P.DATAPEDIDO between :DTINI and :DTFIM
      and C.IDATIVIDADE between :IDATIVIDADEINI and :IDATIVIDADEFIM
    group by P.IDCLIENTE, C.NOME, C.IDATIVIDADE, COLLATEBR(A.NOME)
     into :IDCLIENTE, :NOMECLIENTE, :IDATIVIDADE, :NOMEATIVIDADE, :VALORVENDIDO
  do
    begin
     -- DEVOLUCAO
     select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

        right join DEVOLUCAO D
           on D.IDFILIAL = :IDFILIAL
          and D.IDPEDIDO = IT.IDPEDIDO
          and D.IDFOLHA = IT.IDFOLHA

         join CLIENTE C
           on C.IDCLIENTE = D.IDCLIENTE

         left join PRODUTO PR
           on PR.IDFILIAL = :IDFILIAL
          and PR.IDPRODUTO = IT.IDPRODUTO

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and D.SITUACAOPEDIDO = 'V'
        and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
        and D.IDCLIENTE = :IDCLIENTE
        and C.IDATIVIDADE = :IDATIVIDADE
        and D.DATAPEDIDO between :DTINI and :DTFIM
       into :vDEV_VALORVENDIDO;

      if (vDEV_VALORVENDIDO is null) then vDEV_VALORVENDIDO = 0;
      if (TOTALGERAL is null) then TOTALGERAL = 0;
      if (vTOTALDEVOLUCAO is null) then vTOTALDEVOLUCAO = 0;
      if (VALORVENDIDO is null) then VALORVENDIDO = 0;
      TOTALGERAL = :vTOTALGERAL-vTOTALDEVOLUCAO;
      VALORVENDIDO = VALORVENDIDO-vDEV_VALORVENDIDO;
      suspend;
    end 
/*
    select sum(IT.QTDEPEDIDO*IT.PRECOVENDA)  from ITENSPEDIDO IT
    right join PEDIDO P
       on P.IDFILIAL = :IDFILIAL
      and P.IDPEDIDO = IT.IDPEDIDO
      and P.IDFOLHA = IT.IDFOLHA

     join CLIENTE C
       on C.IDCLIENTE = P.IDCLIENTE

     left join PRODUTO PR
       on PR.IDFILIAL = :IDFILIAL
      and PR.IDPRODUTO = IT.IDPRODUTO

    where IT.IDFILIAL = :IDFILIAL
      and IT.TROCA = 'N'
      and P.SITUACAOPEDIDO = 'V'
      and C.IDATIVIDADE between :IDATIVIDADEINI and :IDATIVIDADEFIM
      and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
      and P.DATAPEDIDO between :DTINI and :DTFIM
     into :vTOTALGERAL;


     -- DEVOLUCAO TOTAL
     select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

        right join DEVOLUCAO D
           on D.IDFILIAL = :IDFILIAL
          and D.IDPEDIDO = IT.IDPEDIDO
          and D.IDFOLHA = IT.IDFOLHA

         join CLIENTE C
           on C.IDCLIENTE = D.IDCLIENTE

         left join PRODUTO PR
           on PR.IDFILIAL = :IDFILIAL
          and PR.IDPRODUTO = IT.IDPRODUTO

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and D.SITUACAOPEDIDO = 'V'
        and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
        and C.IDATIVIDADE between :IDATIVIDADEINI and :IDATIVIDADEFIM
        and D.DATAPEDIDO between :DTINI and :DTFIM
       into :vTOTALDEVOLUCAO;

  for select C.IDATIVIDADE, COLLATEBR(A.NOME),
             sum(IT.QTDEPEDIDO*IT.PRECOVENDA)  from ITENSPEDIDO IT
    right join PEDIDO P
       on P.IDFILIAL = :IDFILIAL
      and P.IDPEDIDO = IT.IDPEDIDO
      and P.IDFOLHA = IT.IDFOLHA

     join CLIENTE C
       on C.IDCLIENTE = P.IDCLIENTE

     left join PRODUTO PR
       on PR.IDFILIAL = :IDFILIAL
      and PR.IDPRODUTO = IT.IDPRODUTO

     join ATIVIDADE A
       on A.IDATIVIDADE = C.IDATIVIDADE

    where IT.IDFILIAL = :IDFILIAL
      and IT.TROCA = 'N'
      and P.SITUACAOPEDIDO = 'V'
      and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
      and P.DATAPEDIDO between :DTINI and :DTFIM
      and C.IDATIVIDADE between :IDATIVIDADEINI and :IDATIVIDADEFIM
    group by C.IDATIVIDADE, COLLATEBR(A.NOME)
     into :IDATIVIDADE, :NOMEATIVIDADE, :VALORVENDIDO
  do
    begin
     -- DEVOLUCAO
     select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

        right join DEVOLUCAO D
           on D.IDFILIAL = :IDFILIAL
          and D.IDPEDIDO = IT.IDPEDIDO
          and D.IDFOLHA = IT.IDFOLHA

         join CLIENTE C
           on C.IDCLIENTE = D.IDCLIENTE

         left join PRODUTO PR
           on PR.IDFILIAL = :IDFILIAL
          and PR.IDPRODUTO = IT.IDPRODUTO

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and D.SITUACAOPEDIDO = 'V'
        and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
        and C.IDATIVIDADE = :IDATIVIDADE
        and D.DATAPEDIDO between :DTINI and :DTFIM
       into :vDEV_VALORVENDIDO;

      if (vDEV_VALORVENDIDO is null) then vDEV_VALORVENDIDO = 0;
      if (TOTALGERAL is null) then TOTALGERAL = 0;
      if (vTOTALDEVOLUCAO is null) then vTOTALDEVOLUCAO = 0;
      if (VALORVENDIDO is null) then VALORVENDIDO = 0;
      TOTALGERAL = :vTOTALGERAL-vTOTALDEVOLUCAO;
      VALORVENDIDO = VALORVENDIDO-vDEV_VALORVENDIDO;
      suspend;
    end */
end^


ALTER PROCEDURE REL_VENDASPRODUTO_CIDADE (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER)
RETURNS (
    IDREGIAO INTEGER,
    NOMEREGIAO VARCHAR(35) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    IDCIDADE INTEGER,
    NOMECIDADE VARCHAR(25) CHARACTER SET NONE,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    EMBALAGEM VARCHAR(10) CHARACTER SET NONE,
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER)
AS
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA numeric(14,2);
begin
  for select
        C.IDCIDADE,
        COLLATEBR(CI.NOME),
        CI.IDREGIAO,
        COLLATEBR(R.NOME),
        IT.IDPRODUTO,
        COLLATEBR(PR.ESPECIFICACAO),
        PR.EMBALAGEM,
        sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
        sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
        PR.FATORCONVERSAO from ITENSPEDIDO IT

      join PEDIDO PE
        on PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFILIAL = :IDFILIAL
       and PE.IDFOLHA = IT.IDFOLHA

      join CLIENTE C
        on C.IDCLIENTE = PE.IDCLIENTE

      left join CIDADE CI
        on CI.IDCIDADE = C.IDCIDADE

      left join REGIAO R
        on R.IDREGIAO = CI.IDREGIAO

      join PRODUTO PR
        on PR.IDFILIAL = :IDFILIAL
       and PR.IDPRODUTO = IT.IDPRODUTO

      left join UNIDADEMEDIDA UM
        on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
       and UM.IDFILIAL = :IDFILIAL

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and CI.IDREGIAO between :IDREGIAOINI and :IDREGIAOFIM
        and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
        and PR.IDFORNECEDOR between :IDFORINI and :IDFORFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by C.IDCIDADE, COLLATEBR(CI.NOME), CI.IDREGIAO, COLLATEBR(R.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, PR.FATORCONVERSAO
      into :IDCIDADE, :NOMECIDADE, :IDREGIAO, :NOMEREGIAO, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO
  do
    begin

         select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            join CLIENTE C
              on C.IDCLIENTE = D.IDCLIENTE

            join CIDADE CI
             on CI.IDCIDADE = C.IDCIDADE

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

           where IT.IDFILIAL = :IDFILIAL
             and IT.TROCA = 'N'
             and D.SITUACAOPEDIDO = 'V'
             and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
             and IT.IDPRODUTO = :IDPRODUTO
             and CI.IDREGIAO = :IDREGIAO
             and C.IDCIDADE = :IDCIDADE
             and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
             and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
             and D.DATAPEDIDO between :DATAINI and :DATAFIM
             into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;

          if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;

          QTDEPEDIDO = (:QTDEPEDIDO-:vDEV_QTDEPEDIDO);
          VALORPEDIDO = (:VALORPEDIDO-:vDEV_PRECOVENDA);
       suspend;
    end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_CIDADE_SINT (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER)
RETURNS (
    IDCIDADE INTEGER,
    NOMECIDADE VARCHAR(25),
    TOTALPEDIDO NUMERIC(16,2),
    QTDEPOPULACAO INTEGER,
    QTDECLIENTE INTEGER,
    QTDEPOSITIVADOS INTEGER)
AS
declare variable VDEV_TOTALPEDIDO numeric(14,2);
begin
  for select C.IDCIDADE, COLLATEBR(CI.NOME), CI.QTDEPOPULACAO,  sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
             -- QTDE DE CLIENTES
             (select count(*) from CLIENTE CLI
                where CLI.IDCIDADE = C.IDCIDADE
                  and CLI.EXCLUIDO is null
                  and CLI.SITUACAOCREDITO <> 'C')
             -- QTDE DE POSITIVADOS


             from ITENSPEDIDO IT
       join PEDIDO PE
        on PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFILIAL = :IDFILIAL
       and PE.IDFOLHA = IT.IDFOLHA

      left join CLIENTE C
        on C.IDCLIENTE = PE.IDCLIENTE

      join CIDADE CI
        on CI.IDCIDADE = C.IDCIDADE

      join PRODUTO PR
        on PR.IDFILIAL = :IDFILIAL
       and PR.IDPRODUTO = IT.IDPRODUTO

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and CI.IDREGIAO between :IDREGIAOINI and :IDREGIAOFIM
        and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
        and PR.IDFORNECEDOR between :IDFORINI and :IDFORFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by C.IDCIDADE, COLLATEBR(CI.NOME), CI.QTDEPOPULACAO

      into :IDCIDADE, :NOMECIDADE, :QTDEPOPULACAO, :TOTALPEDIDO, :QTDECLIENTE
  do
    begin

             select count(distinct P.IDCLIENTE) from PEDIDO P
                  left join ITENSPEDIDO ITE
                     on ITE.IDFILIAL = :IDFILIAL
                    and ITE.IDPEDIDO = P.IDPEDIDO
                    and ITE.IDFOLHA = P.IDFOLHA

                  left join PRODUTO PRO
                    on PRO.IDFILIAL = :IDFILIAL
                   and PRO.IDPRODUTO = ITE.IDPRODUTO

                  left join CLIENTE X
                    on X.IDFILIAL = :IDFILIAL
                   and X.IDCLIENTE = P.IDCLIENTE

                  join CIDADE CID
                    on CID.IDCIDADE = X.IDCIDADE

               where P.IDFILIAL = :IDFILIAL
                 and P.SITUACAOPEDIDO = 'V'
                 and P.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                 and X.IDCIDADE = :IDCIDADE
                 and CID.IDREGIAO between :IDREGIAOINI and :IDREGIAOFIM
                 and PRO.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                 and PRO.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                 and P.DATAPEDIDO between :DATAINI and :DATAFIM
            into :QTDEPOSITIVADOS;





         select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            join CLIENTE C
              on C.IDCLIENTE = D.IDCLIENTE

            join CIDADE CI
              on CI.IDCIDADE = C.IDCIDADE

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

           where IT.IDFILIAL = :IDFILIAL
             and IT.TROCA = 'N'
             and D.SITUACAOPEDIDO = 'V'
             and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
             and CI.IDREGIAO between :IDREGIAOINI and :IDREGIAOFIM
             and C.IDCIDADE = :IDCIDADE
             and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
             and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
             and D.DATAPEDIDO between :DATAINI and :DATAFIM
             into :VDEV_TOTALPEDIDO;

          if (:VDEV_TOTALPEDIDO is null) then VDEV_TOTALPEDIDO = 0;

          TOTALPEDIDO = (:TOTALPEDIDO-:VDEV_TOTALPEDIDO);

       suspend;
    end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_CLIENTE (
    IDFILIAL INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDCONVENIOINI SMALLINT,
    IDCONVENIOFIM SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDSUB_CONVENIOINI INTEGER,
    IDSUB_CONVENIOFIM INTEGER,
    IDROMANEIOINI INTEGER,
    IDROMANEIOFIM INTEGER,
    IDCONSIGNACAOINI INTEGER,
    IDCONSIGNACAOFIM INTEGER)
RETURNS (
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    EMBALAGEM VARCHAR(10) CHARACTER SET NONE,
    NOMECONVENIO VARCHAR(40) CHARACTER SET NONE,
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    IDCIDADE SMALLINT,
    CPF_SUPERVISOR VARCHAR(14),
    IDATIVIDADE INTEGER)
AS
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA numeric(14,2);
begin
  -- SE FOR COM ROMANEIO
  if (:IDROMANEIOINI > 0) then begin

      if (:IDCONSIGNACAOINI > 0 ) then begin
          for select PE.IDCLIENTE, COLLATEBR(C.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, COLLATEBR(CO.DESCRICAO),
                  sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO), PR.FATORCONVERSAO, C.IDCIDADE,
                  R.CPF_SUPERVISOR, C.idatividade  from ITENSPEDIDO IT
        
              right join PEDIDO PE
                 on PE.IDPEDIDO = IT.IDPEDIDO
                and PE.IDFILIAL = :IDFILIAL
                and PE.IDFOLHA = IT.IDFOLHA
        
              join CLIENTE C
                on C.IDCLIENTE = PE.IDCLIENTE
        
              join REPRESENTANTE R
                on R.IDREPRESENTANTE = PE.IDREPRESENTANTE
        
              join CONVENIO CO
                on CO.IDCONVENIO = C.IDCONVENIO
        
              join PRODUTO PR
                on PR.IDFILIAL = :IDFILIAL
               and PR.IDPRODUTO = IT.IDPRODUTO
        
              join UNIDADEMEDIDA UM
                on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
               and UM.IDFILIAL = :IDFILIAL
        
              where IT.IDFILIAL = :IDFILIAL
                and IT.TROCA = 'N'
                and PE.SITUACAOPEDIDO = 'V'
                and PE.IDROMANEIO between :IDROMANEIOINI and :IDROMANEIOFIM
                and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
                and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                and PE.IDCONSIGNACAO between :IDCONSIGNACAOINI and :IDCONSIGNACAOFIM
                and PR.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
                and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
                and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                and PE.DATAPEDIDO between :DATAINI and :DATAFIM
              group by PE.IDCLIENTE, COLLATEBR(C.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, COLLATEBR(CO.DESCRICAO),PR.FATORCONVERSAO, C.IDCIDADE, R.CPF_SUPERVISOR, c.idatividade
              into :IDCLIENTE, :NOMECLIENTE, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :NOMECONVENIO, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :IDCIDADE, :CPF_SUPERVISOR, :IDATIVIDADE
          do
            begin
                 select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                        sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
        
                     right join DEVOLUCAO D
                       on D.IDFILIAL = :IDFILIAL
                      and D.IDPEDIDO = IT.IDPEDIDO
                      and D.IDFOLHA = IT.IDFOLHA
        
                    join CLIENTE C
                      on C.IDCLIENTE = D.IDCLIENTE
        
                    left join PRODUTO P
                      on  P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                   where IT.IDFILIAL = :IDFILIAL
                     and IT.TROCA = 'N'
                     and D.SITUACAOPEDIDO = 'V'
                     and IT.IDPRODUTO = :IDPRODUTO
                     and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
                     and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
                     and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                     and D.IDCONSIGNACAO between :IDCONSIGNACAOINI and :IDCONSIGNACAOFIM
                     and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                     and D.IDCLIENTE = :IDCLIENTE
                     and D.DATAPEDIDO between :DATAINI and :DATAFIM
                     into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
        
                  if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
                  if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
        
                  QTDEPEDIDO = (:QTDEPEDIDO-:vDEV_QTDEPEDIDO);
                  VALORPEDIDO = (:VALORPEDIDO-:vDEV_PRECOVENDA);
        
              suspend;
            end
      end
      else begin
          for select PE.IDCLIENTE, COLLATEBR(C.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, COLLATEBR(CO.DESCRICAO),
                  sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO), PR.FATORCONVERSAO, C.IDCIDADE,
                  R.CPF_SUPERVISOR,C.idatividade  from ITENSPEDIDO IT
        
              right join PEDIDO PE
                 on PE.IDPEDIDO = IT.IDPEDIDO
                and PE.IDFILIAL = :IDFILIAL
                and PE.IDFOLHA = IT.IDFOLHA
        
              join CLIENTE C
                on C.IDCLIENTE = PE.IDCLIENTE
        
              join REPRESENTANTE R
                on R.IDREPRESENTANTE = PE.IDREPRESENTANTE
        
              join CONVENIO CO
                on CO.IDCONVENIO = C.IDCONVENIO
        
              join PRODUTO PR
                on PR.IDFILIAL = :IDFILIAL
               and PR.IDPRODUTO = IT.IDPRODUTO
        
              join UNIDADEMEDIDA UM
                on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
               and UM.IDFILIAL = :IDFILIAL
        
              where IT.IDFILIAL = :IDFILIAL
                and IT.TROCA = 'N'
                and PE.SITUACAOPEDIDO = 'V'
                and PE.IDROMANEIO between :IDROMANEIOINI and :IDROMANEIOFIM
                and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
                and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                and PR.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
                and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
                and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                and PE.DATAPEDIDO between :DATAINI and :DATAFIM
              group by PE.IDCLIENTE, COLLATEBR(C.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, COLLATEBR(CO.DESCRICAO),PR.FATORCONVERSAO, C.IDCIDADE, R.CPF_SUPERVISOR, c.idatividade
              into :IDCLIENTE, :NOMECLIENTE, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :NOMECONVENIO, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :IDCIDADE, :CPF_SUPERVISOR, :IDATIVIDADE
          do
            begin
                 select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                        sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
        
                     right join DEVOLUCAO D
                       on D.IDFILIAL = :IDFILIAL
                      and D.IDPEDIDO = IT.IDPEDIDO
                      and D.IDFOLHA = IT.IDFOLHA
        
                    join CLIENTE C
                      on C.IDCLIENTE = D.IDCLIENTE
        
                    left join PRODUTO P
                      on  P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                   where IT.IDFILIAL = :IDFILIAL
                     and IT.TROCA = 'N'
                     and D.SITUACAOPEDIDO = 'V'
                     and IT.IDPRODUTO = :IDPRODUTO
                     and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
                     and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
                     and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                     and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                     and D.IDCLIENTE = :IDCLIENTE
                     and D.DATAPEDIDO between :DATAINI and :DATAFIM
                     into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
        
                  if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
                  if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
        
                  QTDEPEDIDO = (:QTDEPEDIDO-:vDEV_QTDEPEDIDO);
                  VALORPEDIDO = (:VALORPEDIDO-:vDEV_PRECOVENDA);
        
              suspend;
            end
      end










  end
  else begin  -- SEM ROMANEIO



      if (:IDCONSIGNACAOINI > 0 ) then begin
          for select PE.IDCLIENTE, COLLATEBR(C.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, COLLATEBR(CO.DESCRICAO),
                  sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO), PR.FATORCONVERSAO, C.IDCIDADE,
                  R.CPF_SUPERVISOR, C.idatividade  from ITENSPEDIDO IT
        
              right join PEDIDO PE
                 on PE.IDPEDIDO = IT.IDPEDIDO
                and PE.IDFILIAL = :IDFILIAL
                and PE.IDFOLHA = IT.IDFOLHA
        
              join CLIENTE C
                on C.IDCLIENTE = PE.IDCLIENTE
        
              join REPRESENTANTE R
                on R.IDREPRESENTANTE = PE.IDREPRESENTANTE
        
              join CONVENIO CO
                on CO.IDCONVENIO = C.IDCONVENIO
        
              join PRODUTO PR
                on PR.IDFILIAL = :IDFILIAL
               and PR.IDPRODUTO = IT.IDPRODUTO
        
              join UNIDADEMEDIDA UM
                on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
               and UM.IDFILIAL = :IDFILIAL
        
              where IT.IDFILIAL = :IDFILIAL
                and IT.TROCA = 'N'
                and PE.SITUACAOPEDIDO = 'V'
                and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
                and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                and PR.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
                and PE.IDCONSIGNACAO between :IDCONSIGNACAOINI and :IDCONSIGNACAOFIM
                and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
                and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                and PE.DATAPEDIDO between :DATAINI and :DATAFIM
              group by PE.IDCLIENTE, COLLATEBR(C.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, COLLATEBR(CO.DESCRICAO),PR.FATORCONVERSAO, C.IDCIDADE, R.CPF_SUPERVISOR, c.idatividade
              into :IDCLIENTE, :NOMECLIENTE, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :NOMECONVENIO, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :IDCIDADE, :CPF_SUPERVISOR, :IDATIVIDADE
          do
            begin
                 select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                        sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
        
                     right join DEVOLUCAO D
                       on D.IDFILIAL = :IDFILIAL
                      and D.IDPEDIDO = IT.IDPEDIDO
                      and D.IDFOLHA = IT.IDFOLHA
        
                    join CLIENTE C
                      on C.IDCLIENTE = D.IDCLIENTE
        
                    left join PRODUTO P
                      on  P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                   where IT.IDFILIAL = :IDFILIAL
                     and IT.TROCA = 'N'
                     and D.SITUACAOPEDIDO = 'V'
                     and IT.IDPRODUTO = :IDPRODUTO
                     and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
                     and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
                     and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                     and D.IDCONSIGNACAO between :IDCONSIGNACAOINI and :IDCONSIGNACAOFIM
                     and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                     and D.IDCLIENTE = :IDCLIENTE
                     and D.DATAPEDIDO between :DATAINI and :DATAFIM
                     into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
        
                  if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
                  if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
        
                  QTDEPEDIDO = (:QTDEPEDIDO-:vDEV_QTDEPEDIDO);
                  VALORPEDIDO = (:VALORPEDIDO-:vDEV_PRECOVENDA);
        
              suspend;
            end
      end
      else begin
          for select PE.IDCLIENTE, COLLATEBR(C.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, COLLATEBR(CO.DESCRICAO),
                  sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO), PR.FATORCONVERSAO, C.IDCIDADE,
                  R.CPF_SUPERVISOR, c.idatividade  from ITENSPEDIDO IT
        
              right join PEDIDO PE
                 on PE.IDPEDIDO = IT.IDPEDIDO
                and PE.IDFILIAL = :IDFILIAL
                and PE.IDFOLHA = IT.IDFOLHA
        
              join CLIENTE C
                on C.IDCLIENTE = PE.IDCLIENTE
        
              join REPRESENTANTE R
                on R.IDREPRESENTANTE = PE.IDREPRESENTANTE
        
              join CONVENIO CO
                on CO.IDCONVENIO = C.IDCONVENIO
        
              join PRODUTO PR
                on PR.IDFILIAL = :IDFILIAL
               and PR.IDPRODUTO = IT.IDPRODUTO
        
              join UNIDADEMEDIDA UM
                on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
               and UM.IDFILIAL = :IDFILIAL
        
              where IT.IDFILIAL = :IDFILIAL
                and IT.TROCA = 'N'
                and PE.SITUACAOPEDIDO = 'V'
                and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
                and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                and PR.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
                and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
                and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                and PE.DATAPEDIDO between :DATAINI and :DATAFIM
              group by PE.IDCLIENTE, COLLATEBR(C.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, COLLATEBR(CO.DESCRICAO),PR.FATORCONVERSAO, C.IDCIDADE, R.CPF_SUPERVISOR, c.idatividade
              into :IDCLIENTE, :NOMECLIENTE, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :NOMECONVENIO, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :IDCIDADE, :CPF_SUPERVISOR, :IDATIVIDADE
          do
            begin
                 select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                        sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
        
                     right join DEVOLUCAO D
                       on D.IDFILIAL = :IDFILIAL
                      and D.IDPEDIDO = IT.IDPEDIDO
                      and D.IDFOLHA = IT.IDFOLHA
        
                    join CLIENTE C
                      on C.IDCLIENTE = D.IDCLIENTE
        
                    left join PRODUTO P
                      on  P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                   where IT.IDFILIAL = :IDFILIAL
                     and IT.TROCA = 'N'
                     and D.SITUACAOPEDIDO = 'V'
                     and IT.IDPRODUTO = :IDPRODUTO
                     and C.IDCONVENIO between :IDCONVENIOINI and :IDCONVENIOFIM
                     and C.IDSUBCONVENIO between :IDSUB_CONVENIOINI and :IDSUB_CONVENIOFIM
                     and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                     and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
                     and D.IDCLIENTE = :IDCLIENTE
                     and D.DATAPEDIDO between :DATAINI and :DATAFIM
                     into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
        
                  if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
                  if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
        
                  QTDEPEDIDO = (:QTDEPEDIDO-:vDEV_QTDEPEDIDO);
                  VALORPEDIDO = (:VALORPEDIDO-:vDEV_PRECOVENDA);
        
              suspend;
            end
      end
  end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_CONSIG (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    SITUACAOINI VARCHAR(1),
    SITUACAOFIM VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCONSIGINI INTEGER,
    IDCONSIGFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60))
AS
declare variable vdev_qtdepedido numeric(10,3);
declare variable vdev_precovenda NUMERIC(10,2);
declare variable vtrocaini varchar(1);
declare variable vtrocafim varchar(1);
begin
       if ((SITUACAOINI = 'A') and (SITUACAOFIM = 'Z')) then begin
          VTROCAINI = 'A';
          VTROCAFIM = 'Z';
       end
       else begin
          VTROCAINI = 'N';
          VTROCAFIM = 'N';
       end
    
    
       if (:SITUACAOINI = '*') then begin
           for select IT.IDPRODUTO,COLLATEBR(P.ESPECIFICACAO),sum(IT.PRECOVENDA*IT.QTDEPEDIDO),sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),P.FATORCONVERSAO,
                      PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME
               from ITENSPEDIDO IT
        
                    right join PEDIDO PE
                      on  PE.IDPEDIDO = IT.IDPEDIDO
                      and PE.IDFOLHA = IT.IDFOLHA
                      and PE.IDFILIAL = :IDFILIAL
        
                    left join PRODUTO P
                       on P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                    left join FORNECEDOR F
                      on F.IDFORNECEDOR = P.IDFORNECEDOR

                    join GRUPO G
                      on G.IDGRUPO = P.IDGRUPO
        
                    left join SUB_GRUPO S
                      on S.IDSUB_GRUPO = P.IDSUB_GRUPO
        
                    where IT.IDFILIAL = :IDFILIAL
                      and PE.SITUACAOPEDIDO = 'V'
                      and IT.TROCA between :VTROCAINI and :VTROCAFIM
                      and PE.TIPO_PEDIDO = 'F'
                      and PE.idconsignacao between :idconsigini and :idconsigfim
                      and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                      and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                      and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                      and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                      and PE.DATAPEDIDO between :DATAINI and :DATAFIM
                       group by IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), P.FATORCONVERSAO, PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME
                       order by IT.IDPRODUTO
                       into :IDPRODUTO, :NOMEPRODUTO,:PRECOVENDA, :QTDEVENDIDA, :FATORCONVERSAO,
                            :IDREPRESENTANTE, :IDGRUPO, :NOMEGRUPO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :IDFORNECEDOR, :NOMEFORNECEDOR
             do
               begin

        
                 select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                        sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
        
                     right  join DEVOLUCAO D
                       on D.IDFILIAL = :IDFILIAL
                      and D.IDPEDIDO = IT.IDPEDIDO
                      and D.IDFOLHA = IT.IDFOLHA
        
                    left join PRODUTO P
                      on  P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                     where IT.IDFILIAL = :IDFILIAL
                       and IT.IDPRODUTO = :IDPRODUTO
                       and IT.TROCA between :VTROCAINI and :VTROCAFIM
                       and D.SITUACAOPEDIDO between :SITUACAOINI and :SITUACAOFIM
                       and D.IDREPRESENTANTE = :IDREPRESENTANTE
                       and D.idconsignacao between :idconsigini and :idconsigfim
                       and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                       and P.IDGRUPO = :IDGRUPO
                       and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                       and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                       and D.DATAPEDIDO between :DATAINI and :DATAFIM
                     into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
        
                if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
                if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
                QTDEVENDIDA = :QTDEVENDIDA-:vDEV_QTDEPEDIDO;
                PRECOVENDA = :PRECOVENDA-:vDEV_PRECOVENDA;
        
                 if ((QTDEVENDIDA <> 0) and
                    (PRECOVENDA <> 0)) then begin
                   suspend;
                 end
               end
       end



       if (:SITUACAOINI <> '*') then begin
           for select IT.IDPRODUTO,COLLATEBR(P.ESPECIFICACAO),sum(IT.PRECOVENDA*IT.QTDEPEDIDO),sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),P.FATORCONVERSAO,
                      PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME
               from ITENSPEDIDO IT
        
                    right join PEDIDO PE
                      on  PE.IDPEDIDO = IT.IDPEDIDO
                      and PE.IDFOLHA = IT.IDFOLHA
                      and PE.IDFILIAL = :IDFILIAL
        
                    left join PRODUTO P
                       on P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                    left join FORNECEDOR F
                       on F.IDFORNECEDOR = P.IDFORNECEDOR

                    join GRUPO G
                      on G.IDGRUPO = P.IDGRUPO
        
                    left join SUB_GRUPO S
                      on S.IDSUB_GRUPO = P.IDSUB_GRUPO
        
                    where IT.IDFILIAL = :IDFILIAL
                      and PE.SITUACAOPEDIDO between :SITUACAOINI and :SITUACAOFIM
                      and IT.TROCA between :VTROCAINI and :VTROCAFIM
                      and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                      and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                      and PE.idconsignacao between :idconsigini and :idconsigfim
                      and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                      and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                      and PE.DATAPEDIDO between :DATAINI and :DATAFIM
                       group by IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), P.FATORCONVERSAO, PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME
                       order by IT.IDPRODUTO
                       into :IDPRODUTO, :NOMEPRODUTO,:PRECOVENDA, :QTDEVENDIDA, :FATORCONVERSAO,
                            :IDREPRESENTANTE, :IDGRUPO, :NOMEGRUPO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :IDFORNECEDOR, :NOMEFORNECEDOR
             do
               begin
        
        
                 select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                        sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
        
                     right  join DEVOLUCAO D
                       on D.IDFILIAL = :IDFILIAL
                      and D.IDPEDIDO = IT.IDPEDIDO
                      and D.IDFOLHA = IT.IDFOLHA
        
                    left join PRODUTO P
                      on  P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                     where IT.IDFILIAL = :IDFILIAL
                       and IT.IDPRODUTO = :IDPRODUTO
                       and IT.TROCA between :VTROCAINI and :VTROCAFIM
                       and D.SITUACAOPEDIDO between :SITUACAOINI and :SITUACAOFIM
                       and D.IDREPRESENTANTE = :IDREPRESENTANTE
                       and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                       and D.idconsignacao between :idconsigini and :idconsigfim
                       and P.IDGRUPO = :IDGRUPO
                       and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                       and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                       and D.DATAPEDIDO between :DATAINI and :DATAFIM
                     into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
        
                if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
                if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
                QTDEVENDIDA = :QTDEVENDIDA-:vDEV_QTDEPEDIDO;
                PRECOVENDA = :PRECOVENDA-:vDEV_PRECOVENDA;
        
                 if ((QTDEVENDIDA <> 0) and
                    (PRECOVENDA <> 0)) then begin
                   suspend;
                 end
               end
       end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_GRUPO (
    IDFILIAL INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM INTEGER,
    CPF_SUPERVISOR VARCHAR(14))
RETURNS (
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(40),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    EMBALAGEM VARCHAR(10),
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    TOTALVENDA NUMERIC(14,2),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    FATURAMENTO_CX NUMERIC(15,4))
AS
declare variable VTOTALVENDA numeric(14,2);
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA numeric(14,2);
declare variable VDEV_QTDECAIXA numeric(10,3);
declare variable VTOTALDEVOLUCAO numeric(14,2);
begin
  select sum(IT.PRECOVENDA*IT.QTDEPEDIDO)-coalesce(sum((select sum(RIP.PRECOVENDA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0)

   from REL_ITENS_PEDIDO IT

      join REL_PEDIDO PE
        on PE.IDFILIAL = :IDFILIAL
       and PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFOLHA = IT.IDFOLHA

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and IT.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
        and PE.IDCIDADE_CLIENTE between :IDCIDADEINI and :IDCIDADEFIM
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and IT.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      into :TOTALVENDA;

  for select IT.IDGRUPO, IT.NOMEGRUPO, IT.IDPRODUTO, IT.NOMEPRODUTO, IT.EMBALAGEM,
            sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO)-coalesce(sum((select sum(RIP.QTDEPEDIDO*RIP.FATORCONVERSAO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0) ,
            sum(IT.PRECOVENDA*IT.QTDEPEDIDO)-coalesce(sum((select sum(RIP.PRECOVENDA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
            IT.FATORPRODUTO, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO,
            sum((IT.QTDEPEDIDO*IT.FATORCONVERSAO)/IT.FATORPRODUTO)-coalesce(sum((select sum((RIP.QTDEPEDIDO*RIP.FATORCONVERSAO)/RIP.FATORPRODUTO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0)

            from REL_ITENS_PEDIDO IT
      right join REL_PEDIDO PE
        on PE.IDFILIAL = :IDFILIAL
       and PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFOLHA = IT.IDFOLHA

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and IT.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and IT.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
        and PE.IDCIDADE_CLIENTE between :IDCIDADEINI and :IDCIDADEFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by IT.IDGRUPO, IT.NOMEGRUPO, IT.IDPRODUTO, IT.NOMEPRODUTO, IT.EMBALAGEM,
               IT.FATORPRODUTO, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO
      into :IDGRUPO, :NOMEGRUPO, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :FATURAMENTO_CX
  do
    suspend;

  EXIT;

  for select PR.IDGRUPO, COLLATEBR(G.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM,
            sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO), PR.FATORCONVERSAO, PR.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO),
            sum((IT.QTDEPEDIDO*IT.FATORCONVERSAO)/PR.FATORCONVERSAO) from ITENSPEDIDO IT
      right join PEDIDO PE
        on PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFILIAL = :IDFILIAL
       and PE.IDFOLHA = IT.IDFOLHA

      join PRODUTO PR
        on PR.IDFILIAL = :IDFILIAL
       and PR.IDPRODUTO = IT.IDPRODUTO

      left join CLIENTE CL
        on CL.IDCLIENTE = PE.IDCLIENTE

      join GRUPO G
        on G.IDGRUPO = PR.IDGRUPO

      left join SUB_GRUPO S
        on S.IDSUB_GRUPO = PR.IDSUB_GRUPO

      join UNIDADEMEDIDA UM
        on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
       and UM.IDFILIAL = :IDFILIAL
      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and PR.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
        and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by PR.IDGRUPO, COLLATEBR(G.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, PR.FATORCONVERSAO, PR.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO)
      into :IDGRUPO, :NOMEGRUPO, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :FATURAMENTO_CX
  do
    begin
         select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
                sum((IT.QTDEPEDIDO*IT.FATORCONVERSAO)/P.FATORCONVERSAO)
                 from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

            left join CLIENTE CL
              on CL.IDCLIENTE = D.IDCLIENTE

             where IT.IDFILIAL = :IDFILIAL
               and IT.TROCA = 'N'
               and D.SITUACAOPEDIDO = 'V'
               and IT.IDPRODUTO = :IDPRODUTO
               and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
               and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
               and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
               and P.IDGRUPO = :IDGRUPO
               and D.DATAPEDIDO between :DATAINI and :DATAFIM
             into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA, :vDEV_QTDECAIXA;

         select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

             left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

            left join CLIENTE CL
              on CL.IDCLIENTE = D.IDCLIENTE

           where IT.IDFILIAL = :IDFILIAL
             and IT.TROCA = 'N'
             and D.SITUACAOPEDIDO = 'V'
             and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
             and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
             and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
             and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
             and D.DATAPEDIDO between :DATAINI and :DATAFIM
             into :vTOTALDEVOLUCAO;

        if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
        if (:vDEV_QTDEcaixa is null) then vDEV_QTDECAIXA = 0;
        if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
        if (:vTOTALDEVOLUCAO is null) then vTOTALDEVOLUCAO = 0;

        QTDEPEDIDO = :QTDEPEDIDO-:vDEV_QTDEPEDIDO;
        faturamento_cx = :faturamento_cx-:vDEV_QTDECAIXA;
        VALORPEDIDO = :VALORPEDIDO-:vDEV_PRECOVENDA;

        TOTALVENDA = (:vTOTALVENDA-:vTOTALDEVOLUCAO);
      suspend;
    end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_GRUPO_SINT (
    IDFILIAL SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDREPINI SMALLINT,
    IDREPFIM SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    VALORVENDIDO NUMERIC(14,2),
    TOTALVENDA NUMERIC(15,2))
AS
begin
 for select IT.IDGRUPO,
            IT.NOMEGRUPO,
            sum(IT.PRECOVENDA*IT.QTDEPEDIDO)-coalesce(sum((select sum(RIP.PRECOVENDA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0) from REL_ITENS_PEDIDO IT

       join REL_PEDIDO PE
        on PE.IDFILIAL = :IDFILIAL
       and PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFOLHA = IT.IDFOLHA

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and IT.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
        and PE.IDCIDADE_CLIENTE between :IDCIDADEINI and :IDCIDADEFIM
        and IT.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by IT.IDGRUPO, IT.NOMEGRUPO
      into :IDGRUPO, :NOMEGRUPO, :VALORVENDIDO
  do
    suspend;

end^


ALTER PROCEDURE REL_VENDASPRODUTO_NOTA (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    SITUACAOINI VARCHAR(1),
    SITUACAOFIM VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60),
    UNIDADE NUMERIC(15,2),
    NOTAFISCAL INTEGER,
    E_PAO VARCHAR(1))
AS
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA numeric(10,2);
declare variable VDEV_UNIDADE numeric(10,3);
declare variable VTROCAINI varchar(1);
declare variable VTROCAFIM varchar(1);
begin
       if ((SITUACAOINI = 'A') and (SITUACAOFIM = 'Z')) then begin
          VTROCAINI = 'A';
          VTROCAFIM = 'Z';
       end
       else begin
          VTROCAINI = 'N';
          VTROCAFIM = 'N';
       end
    
    
       if (:SITUACAOINI = '*') then begin
           for select IT.IDPRODUTO,COLLATEBR(P.ESPECIFICACAO),P.FATORCONVERSAO,
                      PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME,
                      sum((IT.QTDEPEDIDO*IT.FATORCONVERSAO)/P.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO),sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                      PE.IDNOTA, P.ESTE_PRODUTO_E_PAO
               from ITENSNOTA IT
        
                    right join NOTA PE
                      on  PE.IDPEDIDO = IT.IDPEDIDO
                      and PE.IDFOLHA = IT.IDFOLHA
                      and PE.IDFILIAL = :IDFILIAL
        
                    left join PRODUTO P
                       on P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                    left join FORNECEDOR F
                      on F.IDFORNECEDOR = P.IDFORNECEDOR

                    join GRUPO G
                      on G.IDGRUPO = P.IDGRUPO
        
                    left join SUB_GRUPO S
                      on S.IDSUB_GRUPO = P.IDSUB_GRUPO
        
                    where IT.IDFILIAL = :IDFILIAL
                      and PE.SITUACAOPEDIDO between :SITUACAOINI and :SITUACAOFIM
                      and IT.TROCA between :VTROCAINI and :VTROCAFIM
                      and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                      and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                      and PE.SITUACAONOTA is null
                      and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                      and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                      and PE.DATAPEDIDO between :DATAINI and :DATAFIM
                       group by IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), P.FATORCONVERSAO, PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME, PE.IDNOTA, P.ESTE_PRODUTO_E_PAO
                       order by IT.IDPRODUTO
                       into :IDPRODUTO, :NOMEPRODUTO, :FATORCONVERSAO,
                            :IDREPRESENTANTE, :IDGRUPO, :NOMEGRUPO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :IDFORNECEDOR, :NOMEFORNECEDOR, :unidade, :PRECOVENDA, :QTDEVENDIDA, :NOTAFISCAL, :E_PAO
             do
               begin
                   suspend;
               end
       end



       if (:SITUACAOINI <> '*') then begin
           for select IT.IDPRODUTO,COLLATEBR(P.ESPECIFICACAO),P.FATORCONVERSAO,
                      PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME, sum((IT.QTDEPEDIDO*IT.FATORCONVERSAO)/P.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO),sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                      PE.IDNOTA, P.ESTE_PRODUTO_E_PAO
               from ITENSNOTA IT
        
                    right join NOTA PE
                      on  PE.IDPEDIDO = IT.IDPEDIDO
                      and PE.IDFOLHA = IT.IDFOLHA
                      and PE.IDFILIAL = :IDFILIAL
        
                    left join PRODUTO P
                       on P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = IT.IDFILIAL
        
                    left join FORNECEDOR F
                       on F.IDFORNECEDOR = P.IDFORNECEDOR

                    join GRUPO G
                      on G.IDGRUPO = P.IDGRUPO
        
                    left join SUB_GRUPO S
                      on S.IDSUB_GRUPO = P.IDSUB_GRUPO
        
                    where IT.IDFILIAL = :IDFILIAL
                      and PE.SITUACAOPEDIDO between :SITUACAOINI and :SITUACAOFIM
                      and IT.TROCA between :VTROCAINI and :VTROCAFIM
                      and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
                      and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                      and PE.SITUACAONOTA is null
                      and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
                      and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
                      and PE.DATAPEDIDO between :DATAINI and :DATAFIM
                       group by IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), P.FATORCONVERSAO, PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME, PE.IDNOTA, P.ESTE_PRODUTO_E_PAO
                       order by IT.IDPRODUTO
                       into :IDPRODUTO, :NOMEPRODUTO,:FATORCONVERSAO,
                            :IDREPRESENTANTE, :IDGRUPO, :NOMEGRUPO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :IDFORNECEDOR, :NOMEFORNECEDOR, :unidade, :PRECOVENDA, :QTDEVENDIDA, :NOTAFISCAL, :E_PAO
             do
               begin
                   suspend;
               end
       end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_PDV (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60),
    UNIDADE NUMERIC(15,2))
AS
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA NUMERIC(10,2);
declare variable VTROCAINI varchar(1);
declare variable VTROCAFIM varchar(1);
begin
    for select IT.IDPRODUTO,COLLATEBR(P.ESPECIFICACAO),sum(IT.PRECOVENDA*IT.QTDEPEDIDO),sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),P.FATORCONVERSAO,
              PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME, sum((IT.QTDEPEDIDO*IT.FATORCONVERSAO)/P.FATORCONVERSAO)
       from ITENSPEDIDO IT
    
            right join PEDIDO PE
              on  PE.IDPEDIDO = IT.IDPEDIDO
              and PE.IDFOLHA = IT.IDFOLHA
              and PE.IDFILIAL = :IDFILIAL
    
            left join PRODUTO P
               on P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL
    
            left join FORNECEDOR F
               on F.IDFORNECEDOR = P.IDFORNECEDOR
    
            join GRUPO G
              on G.IDGRUPO = P.IDGRUPO
    
            left join SUB_GRUPO S
              on S.IDSUB_GRUPO = P.IDSUB_GRUPO
    
            where IT.IDFILIAL = :IDFILIAL
              and not PE.TIPO_PVD is null
              and PE.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
              and P.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
              and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
              and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
              and PE.DATAPEDIDO between :DATAINI and :DATAFIM
               group by IT.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), P.FATORCONVERSAO, PE.IDREPRESENTANTE, P.IDGRUPO, COLLATEBR(G.NOME), P.IDSUB_GRUPO, COLLATEBR(S.DESCRICAO), P.IDFORNECEDOR, F.NOME
               order by IT.IDPRODUTO
               into :IDPRODUTO, :NOMEPRODUTO,:PRECOVENDA, :QTDEVENDIDA, :FATORCONVERSAO,
                    :IDREPRESENTANTE, :IDGRUPO, :NOMEGRUPO, :IDSUB_GRUPO, :NOMESUB_GRUPO, :IDFORNECEDOR, :NOMEFORNECEDOR, :unidade
     do
       begin
    
    
         select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
    
             right  join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA
    
            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL
    
             where IT.IDFILIAL = :IDFILIAL
               and IT.IDPRODUTO = :IDPRODUTO
               and IT.TROCA between :VTROCAINI and :VTROCAFIM
               and D.IDREPRESENTANTE = :IDREPRESENTANTE
               and not D.TIPO_PVD is null
               and D.IDCLIENTE between :IDCLIENTEINI and :IDCLIENTEFIM
               and P.IDGRUPO = :IDGRUPO
               and P.IDSUB_GRUPO between :IDSUB_GRUPOINI and :IDSUB_GRUPOFIM
               and P.IDFORNECEDOR between :IDFORINI and :IDFORFIM
               and D.DATAPEDIDO between :DATAINI and :DATAFIM
             into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;
    
        if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
        if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
        QTDEVENDIDA = :QTDEVENDIDA-:vDEV_QTDEPEDIDO;
        PRECOVENDA = :PRECOVENDA-:vDEV_PRECOVENDA;
    
         if ((QTDEVENDIDA <> 0) and
            (PRECOVENDA <> 0)) then begin
           suspend;
         end
       end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_PESO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    NOMEREPRESENTANTE VARCHAR(40),
    IDUNIDADEMEDIDA INTEGER,
    PESO NUMERIC(10,3),
    EMBALAGEM VARCHAR(20),
    IDREPRESENTANTE INTEGER,
    FATORCONVERSAO INTEGER,
    ABREVIATURA VARCHAR(10),
    QTDECAIXA NUMERIC(16,3),
    NOMEFORNECEDOR VARCHAR(60),
    IDFORNECEDOR INTEGER,
    IDGRUPO INTEGER,
    IDSUBGRUPO INTEGER)
AS
declare variable VDEV_QTDEPEDIDO numeric(15,2);
begin
    for select IT.IDPRODUTO, IT.NOMEPRODUTO, PE.NOMEREPRESENTANTE,
       IT.IDUNIDADEMEDIDA_PRODUTO, IT.PESO, IT.EMBALAGEM,PE.IDREPRESENTANTE, IT.FATORPRODUTO, IT.ABREVIATURA_UN_PRODUTO,
       sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO)-coalesce(sum((select sum(RIP.QTDEPEDIDO*RIP.FATORCONVERSAO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
       IT.NOMEFORNECEDOR, IT.IDFORNECEDOR, IT.IDGRUPO, IT.IDSUB_GRUPO from REL_ITENS_PEDIDO IT
    
    join REL_PEDIDO PE
      on PE.IDFILIAL = :IDFILIAL
     and PE.IDPEDIDO = IT.IDPEDIDO
     and PE.IDFOLHA = IT.IDFOLHA

    where IT.IDFILIAL = :IDFILIAL
      and PE.DATAPEDIDO between :DTINI and :DTFIM
      and PE.SITUACAOPEDIDO = 'V'
      and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
      and IT.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
      and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
      group by IT.IDPRODUTO, IT.NOMEPRODUTO, PE.NOMEREPRESENTANTE,
               IT.IDUNIDADEMEDIDA_PRODUTO, IT.PESO, IT.EMBALAGEM,PE.IDREPRESENTANTE, IT.FATORPRODUTO, IT.ABREVIATURA_UN_PRODUTO,
               IT.NOMEFORNECEDOR, IT.IDFORNECEDOR, IT.IDGRUPO, IT.IDSUB_GRUPO
      into :IDPRODUTO, :NOMEPRODUTO, :NOMEREPRESENTANTE, :IDUNIDADEMEDIDA, :PESO, :EMBALAGEM, :IDREPRESENTANTE, :FATORCONVERSAO, :ABREVIATURA,
           :QTDECAIXA, :NOMEFORNECEDOR, :IDFORNECEDOR, :IDGRUPO, :IDSUBGRUPO
    do
      suspend;

end^


ALTER PROCEDURE REL_VENDASPRODUTO_REGIAO (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDREGIAO INTEGER,
    NOMEREGIAO VARCHAR(35),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    EMBALAGEM VARCHAR(10),
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER)
AS
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA numeric(14,2);
begin
  for select PE.IDREGIAO_CLIENTE, PE.DESCRICAO_REGIAO_CLIENTE, IT.IDPRODUTO, IT.NOMEPRODUTO, IT.EMBALAGEM,
            sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO)-coalesce(sum((select sum(RIP.QTDEPEDIDO*RIP.FATORCONVERSAO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
            sum(IT.PRECOVENDA*IT.QTDEPEDIDO)-coalesce(sum((select sum(RIP.PRECOVENDA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                               where RIP.IDFILIAL = IT.IDFILIAL
                                                                 and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                 and RIP.IDFOLHA  = IT.IDFOLHA
                                                                 and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
            IT.FATORPRODUTO from REL_ITENS_PEDIDO IT
      join REL_PEDIDO PE
        on PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFILIAL = :IDFILIAL
       and PE.IDFOLHA = IT.IDFOLHA

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and PE.IDREGIAO_CLIENTE between :IDREGIAOINI and :IDREGIAOFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by PE.IDREGIAO_CLIENTE, PE.DESCRICAO_REGIAO_CLIENTE, IT.IDPRODUTO, IT.NOMEPRODUTO, IT.EMBALAGEM, IT.FATORPRODUTO
      into :IDREGIAO, :NOMEREGIAO, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO
  do
    suspend;

  exit;
  for select CI.IDREGIAO, COLLATEBR(R.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM,
            sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO), PR.FATORCONVERSAO from ITENSPEDIDO IT
      right join PEDIDO PE
        on PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFILIAL = :IDFILIAL
       and PE.IDFOLHA = IT.IDFOLHA

      join CLIENTE C
        on C.IDCLIENTE = PE.IDCLIENTE

      join CIDADE CI
        on CI.IDCIDADE = C.IDCIDADE

      join REGIAO R
        on R.IDREGIAO = CI.IDREGIAO

      join PRODUTO PR
        on PR.IDFILIAL = :IDFILIAL
       and PR.IDPRODUTO = IT.IDPRODUTO

      join UNIDADEMEDIDA UM
        on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
       and UM.IDFILIAL = :IDFILIAL

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and CI.IDREGIAO between :IDREGIAOINI and :IDREGIAOFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by CI.IDREGIAO, COLLATEBR(R.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, PR.FATORCONVERSAO
      into :IDREGIAO, :NOMEREGIAO, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO
  do
    begin
         select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

              join CLIENTE C
                on C.IDCLIENTE = D.IDCLIENTE
        
              join CIDADE CI
                on CI.IDCIDADE = C.IDCIDADE

           where IT.IDFILIAL = :IDFILIAL
             and IT.TROCA = 'N'
             and D.SITUACAOPEDIDO = 'V'
             and IT.IDPRODUTO = :IDPRODUTO
             and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
             and CI.IDREGIAO = :IDREGIAO
             and D.DATAPEDIDO between :DATAINI and :DATAFIM
             into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;

          if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;

          QTDEPEDIDO = (:QTDEPEDIDO-:vDEV_QTDEPEDIDO);
          VALORPEDIDO = (:VALORPEDIDO-:vDEV_PRECOVENDA);

      suspend;
    end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_REGIAO_DATA (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER)
RETURNS (
    IDREGIAO INTEGER,
    NOMEREGIAO VARCHAR(35) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    EMBALAGEM VARCHAR(10) CHARACTER SET NONE,
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    DATAPEDIDO DATE)
AS
DECLARE VARIABLE VDEV_QTDEPEDIDO NUMERIC(10,3);
DECLARE VARIABLE VDEV_PRECOVENDA NUMERIC(14,2);
begin
  for select CI.IDREGIAO, COLLATEBR(R.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM,
            sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO), sum(IT.PRECOVENDA*IT.QTDEPEDIDO), PR.FATORCONVERSAO, PE.DATAPEDIDO from ITENSPEDIDO IT
      right join PEDIDO PE
        on PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFILIAL = :IDFILIAL
       and PE.IDFOLHA = IT.IDFOLHA

      join CLIENTE C
        on C.IDCLIENTE = PE.IDCLIENTE

      join CIDADE CI
        on CI.IDCIDADE = C.IDCIDADE

      join REGIAO R
        on R.IDREGIAO = CI.IDREGIAO

      join PRODUTO PR
        on PR.IDFILIAL = :IDFILIAL
       and PR.IDPRODUTO = IT.IDPRODUTO

      join UNIDADEMEDIDA UM
        on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
       and UM.IDFILIAL = :IDFILIAL

      where IT.IDFILIAL = :IDFILIAL
        and IT.TROCA = 'N'
        and PE.SITUACAOPEDIDO = 'V'
        and PE.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
        and IT.IDPRODUTO between :IDPRODUTOINI and :IDPRODUTOFIM
        and CI.IDREGIAO between :IDREGIAOINI and :IDREGIAOFIM
        and PE.DATAPEDIDO between :DATAINI and :DATAFIM
      group by CI.IDREGIAO, COLLATEBR(R.NOME), IT.IDPRODUTO, COLLATEBR(PR.ESPECIFICACAO), PR.EMBALAGEM, PR.FATORCONVERSAO, PE.DATAPEDIDO
      into :IDREGIAO, :NOMEREGIAO, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :DATAPEDIDO
  do
    begin
         select sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT

             right join DEVOLUCAO D
               on D.IDFILIAL = :IDFILIAL
              and D.IDPEDIDO = IT.IDPEDIDO
              and D.IDFOLHA = IT.IDFOLHA

            left join PRODUTO P
              on  P.IDPRODUTO = IT.IDPRODUTO
              and P.IDFILIAL = IT.IDFILIAL

              join CLIENTE C
                on C.IDCLIENTE = D.IDCLIENTE
        
              join CIDADE CI
                on CI.IDCIDADE = C.IDCIDADE

           where IT.IDFILIAL = :IDFILIAL
             and IT.TROCA = 'N'
             and D.SITUACAOPEDIDO = 'V'
             and D.DATAPEDIDO = :DATAPEDIDO
             and IT.IDPRODUTO = :IDPRODUTO
             and D.IDREPRESENTANTE between :IDREPINI and :IDREPFIM
             and CI.IDREGIAO = :IDREGIAO
             and D.DATAPEDIDO between :DATAINI and :DATAFIM
             into :vDEV_QTDEPEDIDO, :vDEV_PRECOVENDA;

          if (:vDEV_QTDEPEDIDO is null) then vDEV_QTDEPEDIDO = 0;
          if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;

          QTDEPEDIDO = (:QTDEPEDIDO-:vDEV_QTDEPEDIDO);
          VALORPEDIDO = (:VALORPEDIDO-:vDEV_PRECOVENDA);

      suspend;
    end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_REPRE (
    IDFILIAL INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    SIT VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(100),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    EMBALAGEM VARCHAR(10),
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    CUSTONOTA NUMERIC(14,4),
    IDREPRESENTANTE SMALLINT,
    IDSUB_GRUPO SMALLINT,
    DESCRICAO VARCHAR(35),
    CPF_SUPERVISOR VARCHAR(14))
AS
declare variable VDEV_QTDEPEDIDO numeric(10,3);
declare variable VDEV_PRECOVENDA numeric(14,2);
declare variable VIDREPRESENTANTE smallint;
declare variable VDEV_CUSTONOTA numeric(16,2);
begin
  if (SIT = '*') then  -- SE FOR TODOS
  begin
      for select IT.IDGRUPO, PE.IDREPRESENTANTE, COLLATEBR('Repre: ' || PE.NOMEREPRESENTANTE  || ' - Grupo : ' || IT.NOMEGRUPO), IT.IDPRODUTO, IT.NOMEPRODUTO, IT.EMBALAGEM,
                sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO)-coalesce( sum((select sum(RIP.QTDEPEDIDO*RIP.FATORCONVERSAO) from REL_ITENS_DEVOLUCAO RIP
                                                                   where RIP.IDFILIAL = IT.IDFILIAL
                                                                     and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                     and RIP.IDFOLHA  = IT.IDFOLHA
                                                                     and RIP.IDPRODUTO = IT.IDPRODUTO)),0) ,
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO)-coalesce( sum((select sum(RIP.PRECOVENDA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                                   where RIP.IDFILIAL = IT.IDFILIAL
                                                                     and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                     and RIP.IDFOLHA  = IT.IDFOLHA
                                                                     and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
                IT.FATORPRODUTO,
                sum(IT.CUSTONOTA*IT.QTDEPEDIDO)-coalesce( sum((select sum(RIP.CUSTONOTA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                                   where RIP.IDFILIAL = IT.IDFILIAL
                                                                     and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                     and RIP.IDFOLHA  = IT.IDFOLHA
                                                                     and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
                PE.IDREPRESENTANTE, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO,
                PE.CPF_SUPERVISOR  from REL_ITENS_PEDIDO IT
    
          right join REL_PEDIDO PE
            on PE.IDPEDIDO = IT.IDPEDIDO
           and PE.IDFILIAL = :IDFILIAL
           and PE.IDFOLHA = IT.IDFOLHA
    
          where IT.IDFILIAL = :IDFILIAL
            and IT.TROCA = 'N'
            and coalesce(IT.SITUACAO_GRUPO,'A') = 'A'
            and PE.idcliente between :IDCLIENTEINI and :IDCLIENTEFIM
            and PE.IDCIDADE_CLIENTE between :IDCIDADEINI and :IDCIDADEFIM
            and IT.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
            and exists(select T.ID from TABELA_AUXILIAR T
                        where T.ID = IT.IDSUB_GRUPO)
            and PE.DATAPEDIDO between :DATAINI and :DATAFIM
            and IT.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
          group by IT.IDGRUPO, PE.IDREPRESENTANTE, COLLATEBR('Repre: ' || PE.NOMEREPRESENTANTE  || ' - Grupo : ' || IT.NOMEGRUPO), IT.IDPRODUTO, IT.NOMEPRODUTO, IT.EMBALAGEM,
                   IT.FATORPRODUTO,
                   PE.IDREPRESENTANTE, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO,
                   PE.CPF_SUPERVISOR
    
          into :IDGRUPO, :vIDREPRESENTANTE, :NOMEGRUPO, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :CUSTONOTA, :IDREPRESENTANTE, :IDSUB_GRUPO, :DESCRICAO, :CPF_SUPERVISOR
      do
        suspend;
  end
  else begin
      for select IT.IDGRUPO, PE.IDREPRESENTANTE, COLLATEBR('Repre: ' || PE.NOMEREPRESENTANTE  || ' - Grupo : ' || IT.NOMEGRUPO), IT.IDPRODUTO, IT.NOMEPRODUTO, IT.EMBALAGEM,
                sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO)-coalesce( sum((select sum(RIP.QTDEPEDIDO*RIP.FATORCONVERSAO) from REL_ITENS_DEVOLUCAO RIP
                                                                   where RIP.IDFILIAL = IT.IDFILIAL
                                                                     and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                     and RIP.IDFOLHA  = IT.IDFOLHA
                                                                     and RIP.IDPRODUTO = IT.IDPRODUTO)),0) ,
                sum(IT.PRECOVENDA*IT.QTDEPEDIDO)-coalesce( sum((select sum(RIP.PRECOVENDA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                                   where RIP.IDFILIAL = IT.IDFILIAL
                                                                     and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                     and RIP.IDFOLHA  = IT.IDFOLHA
                                                                     and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
                IT.FATORPRODUTO,
                sum(IT.CUSTONOTA*IT.QTDEPEDIDO)-coalesce( sum((select sum(RIP.CUSTONOTA*RIP.QTDEPEDIDO) from REL_ITENS_DEVOLUCAO RIP
                                                                   where RIP.IDFILIAL = IT.IDFILIAL
                                                                     and RIP.IDPEDIDO = IT.IDPEDIDO
                                                                     and RIP.IDFOLHA  = IT.IDFOLHA
                                                                     and RIP.IDPRODUTO = IT.IDPRODUTO)),0),
                PE.IDREPRESENTANTE, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO,
                PE.CPF_SUPERVISOR  from REL_ITENS_PEDIDO IT
    
          right join REL_PEDIDO PE
            on PE.IDPEDIDO = IT.IDPEDIDO
           and PE.IDFILIAL = :IDFILIAL
           and PE.IDFOLHA = IT.IDFOLHA
    
          where IT.IDFILIAL = :IDFILIAL
            and IT.TROCA = 'N'
            and PE.SITUACAOPEDIDO = :SIT
            and coalesce(IT.SITUACAO_GRUPO,'A') = 'A'
            and PE.idcliente between :IDCLIENTEINI and :IDCLIENTEFIM
            and PE.IDCIDADE_CLIENTE between :IDCIDADEINI and :IDCIDADEFIM
            and IT.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
            and exists(select T.ID from TABELA_AUXILIAR T
                        where T.ID = IT.IDSUB_GRUPO)
            and PE.DATAPEDIDO between :DATAINI and :DATAFIM
            and IT.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
          group by IT.IDGRUPO, PE.IDREPRESENTANTE, COLLATEBR('Repre: ' || PE.NOMEREPRESENTANTE  || ' - Grupo : ' || IT.NOMEGRUPO), IT.IDPRODUTO, IT.NOMEPRODUTO, IT.EMBALAGEM,
                   IT.FATORPRODUTO,
                   PE.IDREPRESENTANTE, IT.IDSUB_GRUPO, IT.NOMESUBGRUPO,
                   PE.CPF_SUPERVISOR
    
          into :IDGRUPO, :vIDREPRESENTANTE, :NOMEGRUPO, :IDPRODUTO, :NOMEPRODUTO, :EMBALAGEM, :QTDEPEDIDO, :VALORPEDIDO, :FATORCONVERSAO, :CUSTONOTA, :IDREPRESENTANTE, :IDSUB_GRUPO, :DESCRICAO, :CPF_SUPERVISOR
      do
        suspend;
  end
end^


ALTER PROCEDURE REL_VENDASPRODUTO_REPRE_SINT (
    IDFILIAL SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    SIT VARCHAR(1),
    COTA_CUSTO VARCHAR(5),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(35) CHARACTER SET NONE,
    NOMEREPRESENTANTE VARCHAR(45) CHARACTER SET NONE,
    VALORVENDIDO NUMERIC(14,2),
    CUSTONOTA NUMERIC(14,4),
    IDREPRESENTANTE INTEGER,
    CPF_SUPERVISOR VARCHAR(14))
AS
declare variable VDEV_PRECOVENDA numeric(14,2);
declare variable VDEV_CUSTONOTA numeric(14,2);
begin
     if (:SIT = '*') then
     begin
         for select PR.IDGRUPO, PE.IDREPRESENTANTE, COLLATEBR(R.NOME), COLLATEBR(G.NOME), sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
                sum(IT.CUSTONOTA*IT.QTDEPEDIDO),
                R.CPF_SUPERVISOR from ITENSPEDIDO IT

          right join PEDIDO PE
            on PE.IDPEDIDO = IT.IDPEDIDO
           and PE.IDFILIAL = :IDFILIAL
           and PE.IDFOLHA = IT.IDFOLHA

          left join CLIENTE CL
             on CL.IDCLIENTE = PE.IDCLIENTE

          join REPRESENTANTE R
            on R.IDREPRESENTANTE = PE.IDREPRESENTANTE
    
          join PRODUTO PR
            on PR.IDFILIAL = :IDFILIAL
           and PR.IDPRODUTO = IT.IDPRODUTO

          join GRUPO G
            on G.IDGRUPO = PR.IDGRUPO

          join UNIDADEMEDIDA UM
            on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
           and UM.IDFILIAL = :IDFILIAL
    
          where IT.IDFILIAL = :IDFILIAL
            and IT.TROCA = 'N'
            and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
            and PE.idcliente between :IDCLIENTEINI and :IDCLIENTEFIM
            and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
            and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
            and PE.DATAPEDIDO between :DATAINI and :DATAFIM
            and exists(select T.ID from TABELA_AUXILIAR T
                        where T.ID = PR.IDSUB_GRUPO)
          group by PR.IDGRUPO,PE.IDREPRESENTANTE, COLLATEBR(R.NOME), COLLATEBR(G.NOME), R.CPF_SUPERVISOR
          into :IDGRUPO,:IDREPRESENTANTE, :NOMEREPRESENTANTE, :NOMEGRUPO, :VALORVENDIDO, :CUSTONOTA, :CPF_SUPERVISOR
      do
        begin
             select sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
                    sum(IT.CUSTONOTA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
    
                 right join DEVOLUCAO D
                   on D.IDFILIAL = :IDFILIAL
                  and D.IDPEDIDO = IT.IDPEDIDO
                  and D.IDFOLHA = IT.IDFOLHA

                 left join CLIENTE CL
                  on CL.IDCLIENTE = D.IDCLIENTE
    
                left join PRODUTO P
                  on  P.IDPRODUTO = IT.IDPRODUTO
                  and P.IDFILIAL = :IDFILIAL
    
               where IT.IDFILIAL = :IDFILIAL
                 and IT.TROCA = 'N'
                 and D.SITUACAOPEDIDO = :SIT
                 and D.IDREPRESENTANTE = :IDREPRESENTANTE
                 and D.idcliente between :IDCLIENTEINI and :IDCLIENTEFIM
                 and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
                 and P.IDGRUPO = :IDGRUPO
                 and P.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
                 and exists(select T.ID from TABELA_AUXILIAR T
                             where T.ID = P.IDSUB_GRUPO)
                 and D.DATAPEDIDO between :DATAINI and :DATAFIM
               into :vDEV_PRECOVENDA, :vDEV_CUSTONOTA;
    
              if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
              if (:vDEV_CUSTONOTA is null) then vDEV_CUSTONOTA = 0;
    
              VALORVENDIDO = (:VALORVENDIDO-:vDEV_PRECOVENDA);
              CUSTONOTA = (:CUSTONOTA-:vDEV_CUSTONOTA);

           suspend;
        end
     end
     else begin
         for select PR.IDGRUPO, PE.IDREPRESENTANTE, COLLATEBR(R.NOME), COLLATEBR(G.NOME), sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
                    sum(IT.CUSTONOTA*IT.QTDEPEDIDO),
                    R.CPF_SUPERVISOR from ITENSPEDIDO IT
    
              right join PEDIDO PE
                on PE.IDPEDIDO = IT.IDPEDIDO
               and PE.IDFILIAL = :IDFILIAL
               and PE.IDFOLHA = IT.IDFOLHA
    
              left join CLIENTE CL
                 on CL.IDCLIENTE = PE.IDCLIENTE
    
              join REPRESENTANTE R
                on R.IDREPRESENTANTE = PE.IDREPRESENTANTE
        
              join PRODUTO PR
                on PR.IDFILIAL = :IDFILIAL
               and PR.IDPRODUTO = IT.IDPRODUTO
    
              join GRUPO G
                on G.IDGRUPO = PR.IDGRUPO
    
              join UNIDADEMEDIDA UM
                on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
               and UM.IDFILIAL = :IDFILIAL
        
              where IT.IDFILIAL = :IDFILIAL
                and IT.TROCA = 'N'
                and PE.SITUACAOPEDIDO = :SIT
                and PR.IDGRUPO between :IDGRUPOINI and :IDGRUPOFIM
                and PE.idcliente between :IDCLIENTEINI and :IDCLIENTEFIM
                and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
                and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
                and PE.DATAPEDIDO between :DATAINI and :DATAFIM
                and exists(select T.ID from TABELA_AUXILIAR T
                            where T.ID = PR.IDSUB_GRUPO)
              group by PR.IDGRUPO,PE.IDREPRESENTANTE, COLLATEBR(R.NOME), COLLATEBR(G.NOME), R.CPF_SUPERVISOR
              into :IDGRUPO,:IDREPRESENTANTE, :NOMEREPRESENTANTE, :NOMEGRUPO, :VALORVENDIDO, :CUSTONOTA, :CPF_SUPERVISOR
          do
            begin
                 select sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
                        sum(IT.CUSTONOTA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
        
                     right join DEVOLUCAO D
                       on D.IDFILIAL = :IDFILIAL
                      and D.IDPEDIDO = IT.IDPEDIDO
                      and D.IDFOLHA = IT.IDFOLHA
    
                     left join CLIENTE CL
                      on CL.IDCLIENTE = D.IDCLIENTE
        
                    left join PRODUTO P
                      on  P.IDPRODUTO = IT.IDPRODUTO
                      and P.IDFILIAL = :IDFILIAL
        
                   where IT.IDFILIAL = :IDFILIAL
                     and IT.TROCA = 'N'
                     and D.SITUACAOPEDIDO = :SIT
                     and D.IDREPRESENTANTE = :IDREPRESENTANTE
                     and D.idcliente between :IDCLIENTEINI and :IDCLIENTEFIM
                     and CL.IDCIDADE between :IDCIDADEINI and :IDCIDADEFIM
                     and P.IDGRUPO = :IDGRUPO
                     and P.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
                     and exists(select T.ID from TABELA_AUXILIAR T
                                 where T.ID = P.IDSUB_GRUPO)
                     and D.DATAPEDIDO between :DATAINI and :DATAFIM
                   into :vDEV_PRECOVENDA, :vDEV_CUSTONOTA;
        
                  if (:vDEV_PRECOVENDA is null) then vDEV_PRECOVENDA = 0;
                  if (:vDEV_CUSTONOTA is null) then vDEV_CUSTONOTA = 0;
        
                  VALORVENDIDO = (:VALORVENDIDO-:vDEV_PRECOVENDA);
                  CUSTONOTA = (:CUSTONOTA-:vDEV_CUSTONOTA);
    
               suspend;
            end
     end
end^


ALTER PROCEDURE REL_VENDASREGIAO (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER)
RETURNS (
    IDREGIAO INTEGER,
    NOMEREGIAO VARCHAR(40) CHARACTER SET NONE,
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60) CHARACTER SET NONE,
    QTDEVENDIDA NUMERIC(10,3),
    TOTALVENDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER)
AS
begin

  exit;
  for select PE.IDCLIENTE, C.NOME, C.IDREGIAO, RG.NOME, sum(IT.QTDEPEDIDO*IT.FATORCONVERSAO),
         sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSPEDIDO IT
      join PEDIDO PE
        on PE.IDFILIAL = :IDFILIAL
       and PE.IDPEDIDO = IT.IDPEDIDO
       and PE.IDFOLHA = IT.IDFOLHA

      join CLIENTE C
        on C.IDCLIENTE = PE.IDCLIENTE

      join REGIAO RG
        on RG.IDREGIAO = C.IDREGIAO

      join PRODUTO PR
        on PR.IDFILIAL = :IDFILIAL
       and PR.IDPRODUTO = IT.IDPRODUTO

      join UNIDADEMEDIDA UM
        on UM.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA
       and UM.IDFILIAL = :IDFILIAL

     where PE.IDFILIAL = :IDFILIAL
       and IT.TROCA = 'N'
       and C.IDREGIAO between :IDREGIAOINI and :IDREGIAOFIM
       and PE.SITUACAOPEDIDO = 'V'
       group by PE.IDCLIENTE, C.NOME, C.IDREGIAO, RG.NOME
       into :IDCLIENTE, :NOMECLIENTE, :IDREGIAO, :NOMEREGIAO, :QTDEVENDIDA, :TOTALVENDIDO
  do
    suspend;
end^


ALTER PROCEDURE RETORNA_IBGE (
    IDCIDADE INTEGER)
RETURNS (
    IBGE INTEGER)
AS
begin
  select first 1 C.ID_EXTERNO from CIDADE C
  where C.IDCIDADE = IDCIDADE
    into :IBGE;
end^


ALTER PROCEDURE RETORNA_PRECOVENDA_BALCAO (
    IDFILIAL INTEGER,
    IDPRODUTO INTEGER)
RETURNS (
    PRECOVENDA NUMERIC(15,2))
AS
declare variable VIDTABELAPRECO integer;
declare variable VVALOR_TMP numeric(15,4);
begin
  -- PEGANDO A TABELA DE PRECO PADRAO
  select F.IDTABELAPRECO_BALCAO from FILIAL F
    where F.IDFILIAL = :IDFILIAL
      into :VIDTABELAPRECO;

  -- PEGANDO O PRECO DA TABELA DE PRECO
  select IT.PRECOUNIT from ITENSTABELAPRECO IT
    where IT.IDFILIAL = :IDFILIAL
      and IT.IDPRODUTO = :IDPRODUTO
      and IT.IDTABELAPRECO = :VIDTABELAPRECO
     into :VVALOR_TMP;

  -- SE O PRECO DE VENDA E FOR ISNULL E FOR <= 0 ELE PEGA O VALOR DO PRODUTO
  if ((VVALOR_TMP is null) or (VVALOR_TMP <= 0))  then
  begin
     select P.PRECOVENDAUNIT from PRODUTO P
       where P.IDFILIAL = :IDFILIAL
         and P.IDPRODUTO = :IDPRODUTO
       into :VVALOR_TMP;
  end

  -- FACO ISSO PARA TRUNCAR O VALOR
  PRECOVENDA = cast(cast(VVALOR_TMP as varchar(30)) as numeric(15,2));

  suspend;
end^


ALTER PROCEDURE RETORNA_TAXADESCONTO_BALCAO (
    IDFILIAL INTEGER,
    IDPRODUTO INTEGER)
RETURNS (
    TAXADESCONTO NUMERIC(15,2))
AS
declare variable VIDTABELAPRECO integer;
declare variable VVALOR_TMP numeric(15,4);
begin
  -- PEGANDO A TABELA DE PRECO PADRAO
  select F.IDTABELAPRECO_BALCAO from FILIAL F
    where F.IDFILIAL = :IDFILIAL
      into :VIDTABELAPRECO;

  -- PEGANDO O PRECO DA TABELA DE PRECO
  select IT.TAXADESCONTO from ITENSTABELAPRECO IT
    where IT.IDFILIAL = :IDFILIAL
      and IT.IDPRODUTO = :IDPRODUTO
      and IT.IDTABELAPRECO = :VIDTABELAPRECO
     into :VVALOR_TMP;

  -- SE O PRECO DE VENDA E FOR ISNULL E FOR <= 0 ELE PEGA O VALOR DO PRODUTO

  if ((VVALOR_TMP is null))  then
  begin
      VVALOR_TMP = -5;
  end

  -- FACO ISSO PARA TRUNCAR O VALOR

  TAXADESCONTO = cast(cast(VVALOR_TMP as varchar(30)) as numeric(15,2));

  suspend;
end^


ALTER PROCEDURE SALDO_REPRESENTANTE (
    IDFILIAL INTEGER,
    IDREPRESENTANTE INTEGER)
RETURNS (
    VALOR INTEGER)
AS
begin
  SELECT SUM(IF_SN(M.TIPO_OPERACAO,'=','C',M.VALOR_MOVTO,M.VALOR_MOVTO*-1)) FROM MOVTO_SUPERVISOR M
    WHERE M.IDFILIAL = :IDFILIAL
      AND M.IDREPRESENTANTE = :IDREPRESENTANTE
    INTO :VALOR;
  suspend;
end^


ALTER PROCEDURE SENHA_PALM_I (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER,
    IDREPRESENTANTE INTEGER,
    SENHA VARCHAR(6),
    IDUSUARIO INTEGER,
    DTDEUSO DATE)
AS
begin
  insert into senha_palm (
    idfilial,
    idcontrole,
    idrepresentante,
    senha,
    idusuario,
    dtdeuso)
  values (
    :idfilial,
    :idcontrole,
    :idrepresentante,
    :senha,
    :idusuario,
    :dtdeuso);
end^


ALTER PROCEDURE SENHA_PALM_IU (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER,
    IDREPRESENTANTE INTEGER,
    SENHA VARCHAR(6),
    IDUSUARIO INTEGER,
    DTDEUSO DATE)
AS
begin
  if (exists(select idfilial from senha_palm where (idfilial = :idfilial))) then
    update senha_palm
    set idcontrole = :idcontrole,
        idrepresentante = :idrepresentante,
        senha = :senha,
        idusuario = :idusuario,
        dtdeuso = :dtdeuso
    where (idfilial = :idfilial);
  else
    insert into senha_palm (
        idfilial,
        idcontrole,
        idrepresentante,
        senha,
        idusuario,
        dtdeuso)
    values (
        :idfilial,
        :idcontrole,
        :idrepresentante,
        :senha,
        :idusuario,
        :dtdeuso);
end^


ALTER PROCEDURE SENHA_PALM_S
RETURNS (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER,
    IDREPRESENTANTE INTEGER,
    SENHA VARCHAR(6),
    IDUSUARIO INTEGER,
    DTDEUSO DATE)
AS
begin
  for select idfilial,
             idcontrole,
             idrepresentante,
             senha,
             idusuario,
             dtdeuso
      from senha_palm
      into :idfilial,
           :idcontrole,
           :idrepresentante,
           :senha,
           :idusuario,
           :dtdeuso
  do
  begin
    suspend;
  end
end^


ALTER PROCEDURE SENHA_PALM_U (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER,
    IDREPRESENTANTE INTEGER,
    SENHA VARCHAR(6),
    IDUSUARIO INTEGER,
    DTDEUSO DATE)
AS
begin
  update senha_palm
  set idcontrole = :idcontrole,
      idrepresentante = :idrepresentante,
      senha = :senha,
      idusuario = :idusuario,
      dtdeuso = :dtdeuso
  where (idfilial = :idfilial);
end^


ALTER PROCEDURE SINTEGRA_REG50 (
    IDFILIAL INTEGER,
    TIPO VARCHAR(10),
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    RGTIPO CHAR(2),
    INSESTADUAL VARCHAR(14),
    CNPJEMPRESA VARCHAR(14),
    DTDOCUMENTO DATE,
    ESTADO CHAR(2),
    MODELO CHAR(2),
    SERIEDOCUMENTO CHAR(3),
    NUMERONF VARCHAR(6),
    CFOP CHAR(4),
    EMITEM CHAR(1),
    VALORCONTABIL NUMERIC(16,2),
    VALORBASE NUMERIC(16,2),
    VALORICMS NUMERIC(16,2),
    VALORISENTO NUMERIC(16,2),
    VALOROUTROS NUMERIC(16,2),
    ALIQUOTA NUMERIC(10,2),
    CANCELADO CHAR(1))
AS
DECLARE VARIABLE VSERIENF VARCHAR(3);
DECLARE VARIABLE VCANCELADO CHAR(1);
DECLARE VARIABLE VMODELONF VARCHAR(3);
begin
   select F.SERIENF, F.MODELONF from FILIAL F
      where F.IDFILIAL = :IDFILIAL
        into vSERIENF, vMODELONF;
        
   /* ENTRADA */
   
   if (TIPO = 'ENTRADA') then begin
     for select CLR_DIG(F.CNPJ), CLR_DIG(F.INSESTADUAL), E.DATAENTRADA, CLR_DIG(CF.CFOP),
             sum((IT.QTDECOMPRA*IT.CUSTOPRODUTO)*if_nn(T.TAXAICMS,'<>',0,1,0)),
             sum((IT.QTDECOMPRA*IT.CUSTOPRODUTO)*(if_nn(T.TAXAICMS,'<>',0,T.TAXAICMS,0)/100)),
             sum(IT.QTDECOMPRA*IT.CUSTOPRODUTO),T.TAXAICMS, E.IDNOTA, C.UF from ITENSENTRADA IT

         join ENTRADA E
           on E.IDFILIAL = :IDFILIAL
          and E.IDNOTA = IT.IDNOTA
          and E.IDFORNECEDOR = IT.IDFORNECEDOR

         left join CFOP CF
           on CF.IDCFOP = E.IDCFOP
          and CF.IDFILIAL = :IDFILIAL

         left join TRIBUTO T
           on T.IDFILIAL = :IDFILIAL
          and T.IDTRIBUTO = IT.IDTRIBUTO

         left join FORNECEDOR F
           on F.IDFORNECEDOR = E.IDFORNECEDOR

         left join CIDADE C
           on C.IDCIDADE = F.IDCIDADE

        where IT.IDFILIAL = :IDFILIAL
          and E.DATAENTRADA between :DTINI and :DTFIM
          group by CLR_DIG(F.CNPJ), CLR_DIG(F.INSESTADUAL), E.DATAENTRADA, CLR_DIG(CF.CFOP), T.TAXAICMS, E.IDNOTA, C.UF
          into :CNPJEMPRESA, :INSESTADUAL, :DTDOCUMENTO,:CFOP, :VALORBASE, :VALORICMS,
               :VALORCONTABIL, :ALIQUOTA, :NUMERONF, :ESTADO
     do
       begin
           MODELO = vMODELONF;
           SERIEDOCUMENTO = vSERIENF;
           RGTIPO = '50';
           CANCELADO = 'N';
           EMITEM = 'P';
           if (ALIQUOTA is null) then ALIQUOTA=0;
           if (VALORCONTABIL is null) then VALORCONTABIL=0;
           if (VALORBASE is null) then VALORBASE=0;
           if (VALORICMS is null) then VALORICMS=0;
           if (VALORISENTO is null) then VALORISENTO=0;
           if (VALOROUTROS is null) then VALOROUTROS=0;
           VALOROUTROS=VALORCONTABIL-VALORBASE;
           suspend;
       end
   end
   
   /* SAIDA */
   
   if (TIPO = 'SAIDA') then begin
     for select CLR_DIG(C.CNPJ), CLR_DIG(C.INSESTADUAL), N.DATANOTA, CLR_DIG(CF.CFOP),
             sum((IT.QTDEPEDIDO*IT.PRECOVENDA)*if_nn(T.TAXAICMS,'<>',0,1,0)),
             sum((IT.QTDEPEDIDO*IT.PRECOVENDA)*(if_nn(T.TAXAICMS,'<>',0,T.TAXAICMS,0)/100)),
             sum(IT.QTDEPEDIDO*IT.PRECOVENDA),T.TAXAICMS, N.IDNOTA, CI.UF, N.SITUACAONOTA from ITENSNOTA IT

         join NOTA N
           on N.IDFILIAL = :IDFILIAL
          and N.IDNOTA = IT.IDNOTA

         join CFOP CF
           on CF.IDCFOP = N.IDCFOP
          and CF.IDFILIAL = :IDFILIAL

         left join PRODUTO P
           on P.IDPRODUTO = IT.IDPRODUTO
          and P.IDFILIAL = :IDFILIAL

         join TRIBUTO T
           on T.IDFILIAL = :IDFILIAL
          and T.IDTRIBUTO= P.IDTRIBUTO

         left join CLIENTE C
           on C.IDCLIENTE = N.IDCLIENTE
           and C.TIPOCLIENTE = 'J'

         left join CIDADE CI
           on CI.IDCIDADE = C.IDCIDADE

        where IT.IDFILIAL = :IDFILIAL
          and N.DATANOTA between :DTINI and :DTFIM
          group by CLR_DIG(C.CNPJ), CLR_DIG(C.INSESTADUAL), N.DATANOTA, CLR_DIG(CF.CFOP), T.TAXAICMS, N.IDNOTA, CI.UF,
                   N.SITUACAONOTA
          into :CNPJEMPRESA, :INSESTADUAL, :DTDOCUMENTO,:CFOP, :VALORBASE, :VALORICMS,
               :VALORCONTABIL, :ALIQUOTA, :NUMERONF, :ESTADO, :vCANCELADO
     do
       begin
           MODELO = vMODELONF;
           SERIEDOCUMENTO = vSERIENF;
           CANCELADO = IF_SS(vCANCELADO,'=','C','S','N');
           RGTIPO = '50';
           EMITEM = 'P';
           if (ALIQUOTA is null) then ALIQUOTA=0;
           if (VALORCONTABIL is null) then VALORCONTABIL=0;
           if (VALORBASE is null) then VALORBASE=0;
           if (VALORICMS is null) then VALORICMS=0;
           if (VALORISENTO is null) then VALORISENTO=0;
           if (VALOROUTROS is null) then VALOROUTROS=0;
           VALOROUTROS=VALORCONTABIL-VALORBASE;
           if (ALIQUOTA=14.5) then
             ALIQUOTA = 17;

           suspend;
       end
   end
end^


ALTER PROCEDURE SINTEGRA_REG54 (
    IDFILIAL INTEGER,
    TIPO VARCHAR(10),
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    RGTIPO CHAR(2),
    CNPJEMPRESA VARCHAR(14),
    MODELO CHAR(2),
    SERIEDOCUMENTO CHAR(3),
    NUMERONF VARCHAR(6),
    CFOP VARCHAR(4),
    CODIGOTRIBUTO VARCHAR(3),
    NUMEROITEN VARCHAR(3),
    IDPRODUTO INTEGER,
    QTDE NUMERIC(16,3),
    TOTALPRODUTO NUMERIC(16,2),
    DESCONTO NUMERIC(10,2),
    VALORBASE NUMERIC(16,2),
    VALORSUBSTRI NUMERIC(16,2),
    VALORIPI NUMERIC(16,2),
    ALIQUOTA NUMERIC(10,2))
AS
DECLARE VARIABLE VSERIENF VARCHAR(3);
DECLARE VARIABLE VMODELONF VARCHAR(2);
begin
   select F.SERIENF, F.MODELONF from FILIAL F
      where F.IDFILIAL = :IDFILIAL
        into vSERIENF, vMODELONF;
   /* ENTRADA */
   if (TIPO = 'ENTRADA') then begin
     for select CLR_DIG(F.CNPJ), CLR_DIG(CF.CFOP),
                sum((IT.QTDECOMPRA*IT.PRECOVENDAUNIT)*if_nn(T.TAXAICMS,'<>',0,1,0)),
                T.TAXAICMS, E.IDNOTA, IT.IDPRODUTO, sum(IT.PRECOVENDAUNIT*IT.QTDECOMPRA),
                IT.QTDECOMPRA from ITENSENTRADA IT

         join ENTRADA E
           on E.IDFILIAL = :IDFILIAL
          and E.IDNOTA = IT.IDNOTA
          and E.IDFORNECEDOR = IT.IDFORNECEDOR

         left join CFOP CF
           on CF.IDCFOP = E.IDCFOP
          and CF.IDFILIAL = :IDFILIAL

         left join TRIBUTO T
           on T.IDFILIAL = :IDFILIAL
          and T.IDTRIBUTO = IT.IDTRIBUTO

         left join FORNECEDOR F
           on F.IDFORNECEDOR = E.IDFORNECEDOR

        where IT.IDFILIAL = :IDFILIAL
          and E.DATAENTRADA between :DTINI and :DTFIM
          group by CLR_DIG(F.CNPJ), CLR_DIG(CF.CFOP), T.TAXAICMS, E.IDNOTA, IT.IDPRODUTO, IT.QTDECOMPRA
          order by E.IDNOTA
          into :CNPJEMPRESA, :CFOP, :VALORBASE, :ALIQUOTA, :NUMERONF, :IDPRODUTO,
               :TOTALPRODUTO, :QTDE
     do
       begin
           MODELO = vMODELONF;
           SERIEDOCUMENTO = vSERIENF;
           RGTIPO = '54';
           suspend;
       end
   end
   
   /* SAIDA */
   if (TIPO = 'SAIDA') then begin
     for select CLR_DIG(C.CNPJ), CLR_DIG(CF.CFOP),
                sum((IT.QTDEPEDIDO*IT.PRECOVENDA)*if_nn(T.TAXAICMS,'<>',0,1,0)),
                T.TAXAICMS, N.IDNOTA, IT.IDPRODUTO, sum(IT.PRECOVENDA*IT.QTDEPEDIDO),
                IT.QTDEPEDIDO from ITENSNOTA IT

         join NOTA N
           on N.IDFILIAL = :IDFILIAL
          and N.IDNOTA = IT.IDNOTA

         left join CFOP CF
           on CF.IDCFOP = N.IDCFOP
          and CF.IDFILIAL = :IDFILIAL

         left join PRODUTO P
           on P.IDPRODUTO = IT.IDPRODUTO
          and P.IDFILIAL = :IDFILIAL

         join TRIBUTO T
           on T.IDFILIAL = :IDFILIAL
          and T.IDTRIBUTO= P.IDTRIBUTO

         left join CLIENTE C
           on C.IDCLIENTE = N.IDCLIENTE

        where IT.IDFILIAL = :IDFILIAL
          and N.DATANOTA between :DTINI and :DTFIM
          group by CLR_DIG(C.CNPJ), CLR_DIG(CF.CFOP), T.TAXAICMS, N.IDNOTA, IT.IDPRODUTO, IT.QTDEPEDIDO
          order by N.IDNOTA
          into :CNPJEMPRESA, :CFOP, :VALORBASE, :ALIQUOTA, :NUMERONF, :IDPRODUTO,
               :TOTALPRODUTO, :QTDE
     do
       begin
           MODELO = vMODELONF;
           SERIEDOCUMENTO = vSERIENF;
           RGTIPO = '54';
           suspend;
       end
   end
end^


ALTER PROCEDURE SINTEGRA_REG75 (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    RGTIPO CHAR(2) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    IDNCM INTEGER,
    DESCRICAOPRODUTO VARCHAR(40) CHARACTER SET NONE,
    UNIDADEMEDIDA VARCHAR(6) CHARACTER SET NONE,
    SITUAC CHAR(3) CHARACTER SET NONE,
    VALORIPI NUMERIC(10,2),
    VALORICMS NUMERIC(10,2),
    REDUCAOALIQ NUMERIC(10,2))
AS
begin
    for select P.IDPRODUTO, COLLATEBR(P.ESPECIFICACAO), COLLATEBR(U.DESCRICAO), T.TAXAICMS from PRODUTO P
      join UNIDADEMEDIDA U
        on U.IDUNIDADEMEDIDA = P.IDUNIDADEMEDIDA
       and U.IDFILIAL = :IDFILIAL

      join TRIBUTO T
        on T.IDTRIBUTO = P.IDTRIBUTO
       and T.IDFILIAL = :IDFILIAL
    where P.IDFILIAL = :IDFILIAL
      and P.IDPRODUTO in (select IT.IDPRODUTO from ITENSENTRADA IT
      
                            left join ENTRADA E
                              on E.DATAENTRADA between :DTINI and :DTFIM
                             and E.IDNOTA = IT.IDNOTA
                             and E.IDFORNECEDOR = IT.IDFORNECEDOR
                             and E.IDFILIAL = :IDFILIAL

                            where IT.IDFILIAL = :IDFILIAL
                              and IT.IDPRODUTO = P.IDPRODUTO)
      or P.IDPRODUTO in (select IT.IDPRODUTO from ITENSNOTA IT
      
                            left join NOTA N
                              on N.DATANOTA between :DTINI and :DTFIM
                             and N.IDNOTA = IT.IDNOTA
                             and N.IDFILIAL = :IDFILIAL

                            where IT.IDFILIAL = :IDFILIAL
                              and IT.IDPRODUTO = P.IDPRODUTO)

      into :IDPRODUTO, :DESCRICAOPRODUTO, :UNIDADEMEDIDA, :VALORICMS

    do
      begin
         RGTIPO = '75';
       suspend;
      end
end^


ALTER PROCEDURE SP_TRUNC (
    FLOATVALUE DOUBLE PRECISION,
    DECIMALS SMALLINT)
RETURNS (
    RESULT DOUBLE PRECISION)
AS
declare variable STRVALUE varchar(50);
declare variable STRINT varchar(50);
declare variable STRFRAC varchar(50);
declare variable AFTERSEP smallint;
declare variable DECCOUNT smallint;
BEGIN
  IF (FloatValue IS NULL) THEN
    Result = NULL;
  ELSE
  BEGIN
    StrValue = FloatValue;
    StrInt = '';
    StrFrac = '';
    AfterSep = 0;
    DecCount = 0;
    WHILE (StrValue <> '') DO
    BEGIN
      IF (SUBSTRING(StrValue FROM 1 FOR 1) = '.') THEN
        AfterSep = 1;
      ELSE
      BEGIN
        IF (AfterSep = 0) THEN
          StrInt = StrInt || SUBSTRING(StrValue FROM 1 FOR 1);
        ELSE IF (DecCount >= Decimals) THEN
          BREAK;
        ELSE
        BEGIN
          StrFrac = StrFrac || SUBSTRING(StrValue FROM 1 FOR 1);
          DecCount = DecCount + 1;
        END
      END
      StrValue = SUBSTRING(StrValue FROM 2 FOR 50);
    END
    Result = StrInt || '.' || StrFrac;
  END
  SUSPEND;
END^


ALTER PROCEDURE SPED_C190 (
    IDFILIAL INTEGER,
    IDNOTA INTEGER,
    TIPO VARCHAR(1),
    CPF_CNPJ VARCHAR(18))
RETURNS (
    CST_ICMS VARCHAR(3),
    CFOP VARCHAR(5),
    ALIQ_ICMS NUMERIC(15,2),
    VL_OPR NUMERIC(15,2),
    VL_BC_ICMS NUMERIC(15,2),
    VL_ICMS NUMERIC(15,2),
    VL_BC_ICMS_ST NUMERIC(15,2),
    VL_ICMS_ST NUMERIC(15,2),
    VL_RED_BC NUMERIC(15,2),
    VL_IPI NUMERIC(15,2),
    COD_OBS VARCHAR(6),
    VL_FRETE NUMERIC(16,2))
AS
begin
    if (TIPO = 'T') then
    begin
        for select C.CST_ICMS, C.CFOP, C.ALIQ_ICMS,
                        sum(cast(C.VL_ITEM*C.QTD as numeric(14,3))) as VL_OPER,
                        sum(C.VL_BC_ICMS) as VL_BC_ICMS,
                        sum(C.VL_ICMS) as VL_ICMS,
                        sum(C.VL_BC_ICMS_ST) as VL_BC_ICMS_ST,
                        sum(C.VL_ICMS_ST) as VL_ICMS_ST,
                        sum((C.VL_BC_ICMS)+((C.VL_BC_ICMS*C.P_RED_BC)/100) ),
                        sum(C.VL_IPI) as VL_IPI FROM C170_ITENS_NF C
    
            where C.IDFILIAL               = :IDFILIAL
              and C.IDNOTA                 = :IDNOTA
              and C.NOTA_PROPRIA_TERCEIROS = :TIPO
              and C.CPF_CNPJ               = :CPF_CNPJ
            group by C.CST_ICMS, C.CFOP, C.ALIQ_ICMS
              into :CST_ICMS, :CFOP, :ALIQ_ICMS, :VL_OPR, :VL_BC_ICMS,
                   :VL_ICMS, :VL_BC_ICMS_ST, :VL_ICMS_ST, :VL_RED_BC,
                   :VL_IPI
        do begin
    
           suspend;
        end
     end
     else begin
        for select C.CST_ICMS, C.CFOP, C.ALIQ_ICMS,
                        sum(C.VL_ITEM) as VL_OPER,
                        sum(C.VL_BC_ICMS) as VL_BC_ICMS,
                        sum(C.VL_ICMS) as VL_ICMS,
                        sum(C.VL_BC_ICMS_ST) as VL_BC_ICMS_ST,
                        sum(C.VL_ICMS_ST) as VL_ICMS_ST,
                        sum((C.VL_BC_ICMS)+((C.VL_BC_ICMS*C.P_RED_BC)/100) ),
                        sum(C.VL_IPI) as VL_IPI FROM C170_ITENS_NF C
    
            where C.IDFILIAL = :IDFILIAL
              and C.IDNOTA = :IDNOTA
              and C.NOTA_PROPRIA_TERCEIROS = :TIPO
              and C.CPF_CNPJ               = :CPF_CNPJ
            group by C.CST_ICMS, C.CFOP, C.ALIQ_ICMS
              into :CST_ICMS, :CFOP, :ALIQ_ICMS, :VL_OPR, :VL_BC_ICMS,
                   :VL_ICMS, :VL_BC_ICMS_ST, :VL_ICMS_ST, :VL_RED_BC,
                   :VL_IPI
        do begin
    
           suspend;
        end
     end
end^


ALTER PROCEDURE SPED_SAIDA_NOTAS (
    IDFILIAL INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    "0150_COD_PART" INTEGER,
    "0150_NOME" VARCHAR(100),
    "0150_CNPJ" VARCHAR(20),
    "0150_CPF" VARCHAR(20),
    "0150_IE" VARCHAR(20),
    "0150_COD_PAIS" VARCHAR(20),
    "0150_COD_MUN" INTEGER,
    "0150_SUFRAMA" VARCHAR(35),
    "0150_ENDERECO" VARCHAR(60),
    "0150_BAIRRO" VARCHAR(60))
AS
begin

  for select distinct C.NOME, C.CNPJ, C.CPF, C.INSESTADUAL, CI.ID_EXTERNO, C.ENDERECO, C.BAIRRO from NOTA N

     left join CLIENTE C
        on C.IDFILIAL = N.IDFILIAL
       and C.IDCLIENTE = N.IDCLIENTE

     left join CIDADE CI
        on CI.IDFILIAL = C.IDFILIAL
       and CI.IDCIDADE = C.IDCIDADE

     where N.IDFILIAL = :IDFILIAL
       and N.DATANOTA between :DATAINI and :DATAFIM

   into :"0150_NOME", :"0150_CNPJ", :"0150_CPF", :"0150_IE", :"0150_COD_MUN", :"0150_ENDERECO", :"0150_BAIRRO"
  do
    begin
        INSERT INTO SPED_0150 (IDPARTICIPANTE, NOME, CNPJ, CPF, TIPOCLIENTE, INSESTADUAL, ENDERECO, BAIRRO, ID_EXTERNO, COD_PAIS, SUFRAMA, UF) VALUES (9, 'JOAO XAVIER DOS SANTOS', '00118168000104', '', 'J', '28284876.2', 'AV PREESIDENTE VARGAS 329', 'CENTRO', 5002407, 1062, NULL, 'MS');
        suspend;
    end
end^


ALTER PROCEDURE TMP (
    IDFILIAL INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    QTDE NUMERIC(10,3))
AS
declare variable OPERACAO varchar(1);
begin
  update PRODUTO P
     set P.QTDEANTERIOR = 0
   where P.IDFILIAL = :IDFILIAL;

  for select P.IDPRODUTO, P.QTDEATUAL from PRODUTO P
    join UNIDADEMEDIDA U
      on U.IDFILIAL = P.IDFILIAL
     and U.IDUNIDADEMEDIDA = P.IDUNIDADEMEDIDA
    where P.IDFILIAL = :IDFILIAL
   into :IDPRODUTO, :QTDE
  do begin

    if (:QTDE < 0) then begin
       OPERACAO = '-';
       QTDE = :QTDE*-1; end
    else
       OPERACAO = '+';


    insert into ESTOQUE_FISICO (IDFILIAL,IDCONTROLE,IDPRODUTO,
                                DTMOVTO,HISTORICO,SITUACAO,QTDE)
          values (:IDFILIAL,0,:IDPRODUTO,current_date,'SALDO INICIAL',:OPERACAO,:QTDE);
      suspend;
  end
end^


ALTER PROCEDURE TMP_D (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    TOTALPEDIDO NUMERIC(15,2),
    DIF NUMERIC(15,2),
    DEVOLUCAO NUMERIC(15,2),
    SIT VARCHAR(1))
AS
begin
  for select P.IDPEDIDO, P.IDFOLHA, P.TOTALPEDIDO from PEDIDO P
     where P.IDFILIAL = :IDFILIAL
       and P.DATAPEDIDO between :DTINI and :DTFIM
       and (not(exists(select first 1 R.IDFILIAL from RECEBER R
                 where R.IDFILIAL = P.IDFILIAL
                    and R.IDRECEBER = P.IDPEDIDO
                    and R.IDFOLHA = P.IDFOLHA)))
      into :IDPEDIDO, :IDFOLHA, :TOTALPEDIDO
  do
    begin
        SIT = '*';
        suspend;
    end


  for select P.IDPEDIDO, P.IDFOLHA, P.TOTALPEDIDO from PEDIDO P
     where P.IDFILIAL = :IDFILIAL
       and P.DATAPEDIDO between :DTINI and :DTFIM
       and ((exists(select first 1 R.IDFILIAL from RECEBER R
                 where R.IDFILIAL = P.IDFILIAL
                    and R.IDRECEBER = P.IDPEDIDO
                    and R.IDFOLHA = P.IDFOLHA)))
      into :IDPEDIDO, :IDFOLHA, :TOTALPEDIDO
  do
    begin
        select sum(R.VALORDOCUMENTO) from RECEBER R
             where R.IDFILIAL = :IDFILIAL
               and R.IDRECEBER = :IDPEDIDO
                and R.IDFOLHA = :IDFOLHA
            into :DIF;

        select sum(R.TOTALPEDIDO) from DEVOLUCAO R
             where R.IDFILIAL = :IDFILIAL
               and R.IDPEDIDO = :IDPEDIDO
                and R.IDFOLHA = :IDFOLHA
            into :DEVOLUCAO;

        if (DIF <> :TOTALPEDIDO) then
        begin
            SIT = 'D';
            suspend;
        end
    end
end^


ALTER PROCEDURE TRANSFORMA_PDV_VENDA (
    IDFILIAL INTEGER,
    IDVENDA INTEGER,
    TIPO VARCHAR(3))
RETURNS (
    DATAVENDA DATE,
    IDREPRESENTANTE INTEGER,
    IDCLIENTE INTEGER,
    IDFORMAPAGTO INTEGER,
    DESCONTO NUMERIC(16,2),
    TOTALVENDA NUMERIC(15,2),
    DEF_CAIXA INTEGER,
    NOMECLIENTE VARCHAR(60),
    VIDTRIBUTO INTEGER,
    VUF VARCHAR(2),
    VTOTAL_BASE NUMERIC(15,2),
    VTOTAL_ICMS NUMERIC(15,2),
    VTOTAL_BASE_ST NUMERIC(15,2),
    VTOTAL_ICMS_ST NUMERIC(15,2),
    VCLFISCAL VARCHAR(3),
    VTAXA_ICMS NUMERIC(15,2),
    VALIQUOTA_ST NUMERIC(15,2))
AS
declare variable VINC_IDPEDIDO integer;
declare variable VIDCFOP integer;
declare variable VSERIE integer;
declare variable VIDNFCE integer;
declare variable VUSAR_NFCE varchar(1);
declare variable VIDCONDICAOPAGTO integer;
declare variable VIDCENTROCUSTO integer;
declare variable VIDTABELAPRECO integer;
declare variable VQUITAR varchar(1);
declare variable VCONTADOR integer;
declare variable VIDUNIDADEMEDIDA integer;
declare variable VIDPRODUTO integer;
declare variable VCODIGO_BARRA varchar(15);
declare variable VPRECOVENDA numeric(14,2);
declare variable VQTDEPEDIDO numeric(10,3);
declare variable VTOTALCOMISSAO numeric(14,2);
declare variable VGERAFINANCEIRO varchar(1);
declare variable VPRAZO integer;
declare variable VDTEMISSAO date;
declare variable VOPERADOR varchar(25);
declare variable VDEF_USU_CAIXA smallint;
declare variable VCUSTONOTA numeric(16,2);
declare variable VTOTALCUSTO numeric(16,2);
declare variable VTMP integer;
begin
    VDTEMISSAO = current_date;

    select coalesce(CF.USAR_NFCE,'N') from CONFIGURACAO CF
      where CF.IDFILIAL = :IDFILIAL
      into :VUSAR_NFCE;


    select coalesce(F.SERIE,1) from FILIAL F
      where F.IDFILIAL = :IDFILIAL
      into :VSERIE;

    -- FAZ O FOR PEGANDO A VENDA BALCAO DESEJADA PARA TRANSFERIR PARA O PEDIDO
    for select V.DATAVENDA, V.IDREPRESENTANTE, V.IDCLIENTE, V.IDFORMA_F1, V.TOTALVENDA, V.NOMECLIENTE, V.DESCONTO_SUBTOTAL,
               V.OPERADOR, CI.UF, V.IDNOTAFISCAL from VENDA_BALCAO V

       left join CLIENTE C  
         on C.IDCLIENTE = V.IDCLIENTE

       left join CIDADE CI
         on CI.IDCIDADE = C.IDCIDADE

       where V.IDFILIAL = :IDFILIAL
         and V.IDVENDA  = :IDVENDA
         and V.TIPO     = :TIPO
       into :DATAVENDA, :IDREPRESENTANTE, :IDCLIENTE, :IDFORMAPAGTO, :TOTALVENDA, :NOMECLIENTE, :DESCONTO, :VOPERADOR, :VUF,
            :VIDNFCE
    do begin
      -- PEGA O IDPEDIDO DA FILIAL

      if (gen_id(GEN_INC_IDPEDIDO_VENDA_BALCAO,0) = 0) then
      begin
          select cast(max(F.INC_IDVENDABALCAO) as integer)+1 from FILIAL F
           where F.IDFILIAL = :IDFILIAL
            into :vINC_IDPEDIDO;
          if (vINC_IDPEDIDO is null) then vINC_IDPEDIDO = 1;

          VTMP =  gen_id(GEN_INC_IDPEDIDO_VENDA_BALCAO,:VINC_IDPEDIDO);
      end
      else
         VINC_IDPEDIDO = gen_id(GEN_INC_IDPEDIDO_VENDA_BALCAO,1);


       -- VERIFICANDO SE O CFOP PADRAO NAO E ISNULL
       select F.PDV_DEF_IDCFOP,F.DEF_CAIXA from FILIAL F
          where F.IDFILIAL = :IDFILIAL
        into :VIDCFOP, :DEF_CAIXA;
        if (:VIDCFOP <= 0) then VIDCFOP = 1;

        --PEGANDO IDCAIXA DO USUARIO
        select coalesce(U.IDCAIXA_PDV,0) from USUARIO U
          where U.IDFILIAL = :IDFILIAL
            and U.NOME = :VOPERADOR
            into :VDEF_USU_CAIXA;

            if(:VDEF_USU_CAIXA <= 0) then
               VDEF_USU_CAIXA = :DEF_CAIXA;


       -- VERIFICANDO SE O CONDICAO PAGTO PADRAO NAO E ISNULL
       if (:VIDCONDICAOPAGTO is null) then
       begin
           select F.IDCONDICAO_BALCAO from FILIAL F
              where F.IDFILIAL = :IDFILIAL
            into :VIDCONDICAOPAGTO;
       end

        select F.IDCONDICAOPAGTO from FORMAPAGTO F
           where F.IDFORMAPAGTO = :IDFORMAPAGTO
             into :VIDCONDICAOPAGTO;

        if (:VIDCONDICAOPAGTO <= 0) then VIDCONDICAOPAGTO = 1;


       -- VERIFICANDO SE CENTROCUSTO PADRAO NAO E ISNULL
       select F.PDV_DEF_IDCENTROCUSTO from FILIAL F
          where F.IDFILIAL = :IDFILIAL
        into :VIDCENTROCUSTO;
        if (:VIDCENTROCUSTO <= 0) then VIDCENTROCUSTO = 1;

       -- VERIFICANDO SE IDTABELAPRECO PADRAO NAO E ISNULL
       select F.IDTABELAPRECO_BALCAO from FILIAL F
          where F.IDFILIAL = :IDFILIAL
        into :VIDTABELAPRECO;
        if  (:VIDTABELAPRECO <= 0) then VIDTABELAPRECO = 1;


       -- VERIFICANDO SE IDUNIDADEMEDIDA PADRAO NAO E ISNULL
       select F.IDUNIDADEMEDIDA_BALCAO from FILIAL F
          where F.IDFILIAL = :IDFILIAL
        into :VIDUNIDADEMEDIDA;
        if  (:VIDUNIDADEMEDIDA <= 0) then VIDUNIDADEMEDIDA = 1;

       -- DANDO O INSERT NA PARTE DO PEDIDO
       if (:DESCONTO is null) then DESCONTO = 0;
       insert into PEDIDO (IDFILIAL, IDPEDIDO,IDFOLHA,DATAPEDIDO, DATADIGITACAO,IDREPRESENTANTE,
                           PARCELA, IDCLIENTE, IDCFOP, IDCONDICAOPAGTO,IDFORMAPAGTO,
                           IDCENTROCUSTO, TOTALCUSTO, TOTALPRODUTO, TOTALDESCONTO,TOTALCOMISSAO,
                           SITUACAOPEDIDO,ENTREGARPEDIDO, TOTALPEDIDO, TAXADESCONTO,IDTABELAPRECO, TIPO_PEDIDO, NOMEUSUARIO, IDPDV)

            values (:IDFILIAL, :VINC_IDPEDIDO,5,:DATAVENDA, :DATAVENDA, :IDREPRESENTANTE,
                           1, :IDCLIENTE, :VIDCFOP,:VIDCONDICAOPAGTO,:IDFORMAPAGTO,
                           :VIDCENTROCUSTO, :TOTALVENDA, :TOTALVENDA, :DESCONTO,0,
                           'V','S',(:TOTALVENDA-:DESCONTO),0 ,:VIDTABELAPRECO,'B', :VOPERADOR, :IDVENDA);

       -- INSERINDO OS ITENS
       for select IT.IDPRODUTO, IT.PRECOVENDA, IT.CODIGOBARRA, IT.QTDE, P.CUSTONOTA, P.IDTRIBUTO  from ITENS_VENDA_BALCAO IT

          left join PRODUTO P
             on P.IDFILIAL = IT.IDFILIAL
            and P.IDPRODUTO = IT.IDPRODUTO

         where IT.IDFILIAL = :IDFILIAL
           and IT.IDVENDA  = :IDVENDA
           and IT.TIPO     = :TIPO
         into :VIDPRODUTO, :VPRECOVENDA, :VCODIGO_BARRA, :VQTDEPEDIDO, :VCUSTONOTA, :vIDTRIBUTO
       do begin
         select CC.TOTAL_BASE, CC.TOTAL_ICMS, CC.VALORBASE_ST, CC.VALORICMS_ST,
                CC.CLFISCAL, CC.TAXATRIBUTO, CC.ALIQUOTA_ST
                                                                     from CALCULA_TOTAIS_DE_PRODUTO(
                                                                      :IDFILIAL,
                                                                      :VIDPRODUTO,
                                                                      :VIDTRIBUTO,
                                                                      :VQTDEPEDIDO,
                                                                      :vprecovenda,
                                                                      :VIDCFOP,
                                                                      :VUF,
                                                                      :IDCLIENTE) CC
            into :VTOTAL_BASE, :VTOTAL_ICMS, :VTOTAL_BASE_ST, :VTOTAL_ICMS_ST,
                 :VCLFISCAL, :VTAXA_ICMS, :VALIQUOTA_ST;

         insert into ITENSPEDIDO (IDFILIAL, IDPEDIDO, IDFOLHA,CONTADOR,IDPRODUTO,
                                 CUSTONOTA,CUSTOTRIBUTADO,CUSTOENCARGOS,PRECOTABELA,PRECOTABELA_ORIGINAL,
                                 TAXADESCONTO,PRECOVENDA,TROCA,TAXACOMISSAO,FATORCONVERSAO,CODIGO_BARRA,
                                 QTDEPEDIDO, IDUNIDADEMEDIDA,IDREPRESENTANTE, SIT_PEDIDO,
                                 CST,TAXA_ICMS, CALCULO_VALOR_BASE, CALCULO_VALOR_ICMS, CALCULO_VALOR_BASE_ST, CALCULO_VALOR_ICMS_ST, ALIQUOTA_ST)

               values (:IDFILIAL, :VINC_IDPEDIDO, 5,0,:VIDPRODUTO,
                                 :VCUSTONOTA,:VPRECOVENDA,:VPRECOVENDA,:VPRECOVENDA,:VPRECOVENDA,0,:VPRECOVENDA,
                                 'N',0,1,:VCODIGO_BARRA,
                                 :VQTDEPEDIDO, :VIDUNIDADEMEDIDA, :IDREPRESENTANTE,'V',
                                 :VCLFISCAL, :VTAXA_ICMS, :VTOTAL_BASE, :VTOTAL_ICMS, :VTOTAL_BASE_ST, :VTOTAL_ICMS_ST, :VALIQUOTA_ST);


       end

       select sum(I.CUSTONOTA*I.QTDEPEDIDO),
                         sum(I.CALCULO_VALOR_BASE),
                         sum(I.CALCULO_VALOR_ICMS),
                         sum(I.CALCULO_VALOR_BASE_ST),
                         sum(I.CALCULO_VALOR_ICMS_ST)
        from ITENSPEDIDO I
          where I.IDFILIAL = :IDFILIAL
            and I.IDPEDIDO = :VINC_IDPEDIDO
            and I.IDFOLHA = 5
           into :VTOTALCUSTO, :VTOTAL_BASE, :VTOTAL_ICMS, :VTOTAL_BASE_ST, :VTOTAL_ICMS_ST;
    
          if (:VTOTAL_BASE is null) then VTOTAL_BASE = 0;
          if (:VTOTAL_ICMS is null) then VTOTAL_ICMS = 0;
          if (:VTOTAL_BASE_ST is null) then VTOTAL_BASE_ST = 0;
          if (:VTOTAL_ICMS_ST is null) then VTOTAL_ICMS_ST = 0;

          update PEDIDO PE
            set PE.TOTALCUSTO = :VTOTALCUSTO,
                PE.VALOR_ICMS_ST = :VTOTAL_ICMS_ST,
                PE.VALOR_BASE_ST = :VTOTAL_BASE_ST,
                PE.VALOR_ICMS    = :VTOTAL_ICMS,
                PE.VALOR_BASE    = :VTOTAL_BASE
           where PE.IDFILIAL = :IDFILIAL
             and PE.IDPEDIDO = :VINC_IDPEDIDO
             and PE.IDFOLHA = 5;


       -- PEGA A FLAG GERAR FINENCEIRO
       select F.BALCAO_GERA_FINANCEIRO, F.BALCAO_QUITAR from FORMAPAGTO F
        where F.IDFORMAPAGTO = :IDFORMAPAGTO
       into :VGERAFINANCEIRO, :VQUITAR;

       -- PEGANDO O PRAZO
       select C.PRAZO from CONDICAOPAGTO C
         where C.IDCONDICAOPAGTO = :VIDCONDICAOPAGTO
       into :vPRAZO;

--       execute procedure RECALCULA_PEDIDO(:IDFILIAL,:VINC_IDPEDIDO,'5');




      -------------------------------------------------------
      -------------------------------------------------------
      --  SE USAR O NFCE
      -------------------------------------------------------
      -------------------------------------------------------


       if (:VUSAR_NFCE = 'S') then
       begin
    
          ---------------------------------------
          -- ATUALIZA OS CAMPOS DE ENVIAR O NFCE
          ---------------------------------------
          update PEDIDO PE
            set PE.NOTAFISCAL = :VIDNFCE,
                PE.SERIE = :VSERIE,
                PE.DATANOTAFISCAL = :DATAVENDA
           where PE.IDFILIAL = :IDFILIAL
             and PE.IDPEDIDO = :VINC_IDPEDIDO
             and PE.IDFOLHA = 5;



          -- FAZENDO A NOTA
           insert into NOTA (SERIE, IDFILIAL, IDPEDIDO,IDFOLHA,DATAPEDIDO, DATADIGITACAO,IDREPRESENTANTE,
                               IDCLIENTE, IDCFOP, IDCONDICAOPAGTO,IDFORMAPAGTO,
                               IDCENTROCUSTO, TOTALCUSTO, TOTALPRODUTO, TOTALDESCONTO,TOTALCOMISSAO,
                               SITUACAOPEDIDO,ENTREGARPEDIDO, TOTALPEDIDO, TAXADESCONTO,IDTABELAPRECO, TIPONOTA, IDNOTA, DATANOTA)
                values (:VSERIE,:IDFILIAL, :VINC_IDPEDIDO,5,:DATAVENDA, :DATAVENDA, :IDREPRESENTANTE,
                               :IDCLIENTE, :VIDCFOP,:VIDCONDICAOPAGTO,:IDFORMAPAGTO,
                               :VIDCENTROCUSTO, :TOTALVENDA, :TOTALVENDA, :DESCONTO,0,
                               'V','S',(:TOTALVENDA-:DESCONTO),0 ,:VIDTABELAPRECO,'NFC', :VIDNFCE, :DATAVENDA );
    
           -- INSERINDO OS ITENS
           for select IT.IDPRODUTO, IT.PRECOVENDA, IT.CODIGOBARRA, IT.QTDE, P.CUSTONOTA, P.IDTRIBUTO  from ITENS_VENDA_BALCAO IT
    
              left join PRODUTO P
                 on P.IDFILIAL = IT.IDFILIAL
                and P.IDPRODUTO = IT.IDPRODUTO
    
             where IT.IDFILIAL = :IDFILIAL
               and IT.IDVENDA  = :IDVENDA
               and IT.TIPO     = :TIPO
             into :VIDPRODUTO, :VPRECOVENDA, :VCODIGO_BARRA, :VQTDEPEDIDO, :VCUSTONOTA, :vIDTRIBUTO
           do begin
             select CC.TOTAL_BASE, CC.TOTAL_ICMS, CC.VALORBASE_ST, CC.VALORICMS_ST,
                    CC.CLFISCAL, CC.TAXATRIBUTO, CC.ALIQUOTA_ST
                                                                         from CALCULA_TOTAIS_DE_PRODUTO(
                                                                          :IDFILIAL,
                                                                          :VIDPRODUTO,
                                                                          :VIDTRIBUTO,
                                                                          :VQTDEPEDIDO,
                                                                          :vprecovenda,
                                                                          :VIDCFOP,
                                                                          :VUF,
                                                                          :IDCLIENTE) CC
                into :VTOTAL_BASE, :VTOTAL_ICMS, :VTOTAL_BASE_ST, :VTOTAL_ICMS_ST,
                     :VCLFISCAL, :VTAXA_ICMS, :VALIQUOTA_ST;
    
             insert into ITENSNOTA ( SERIE, IDNOTA, TIPONOTA, IDFILIAL, IDPEDIDO, IDFOLHA,CONTADOR,IDPRODUTO,
                                     CUSTONOTA,CUSTOTRIBUTADO,CUSTOENCARGOS,PRECOTABELA,PRECOTABELA_ORIGINAL,
                                     TAXADESCONTO,PRECOVENDA,TROCA,TAXACOMISSAO,FATORCONVERSAO,
                                     QTDEPEDIDO, IDUNIDADEMEDIDA,
                                     CST,TAXA_ICMS, CALCULO_VALOR_BASE, CALCULO_VALOR_ICMS, CALCULO_VALOR_BASE_ST, CALCULO_VALOR_ICMS_ST, ALIQUOTA_ST)
    
                   values (:VSERIE, :VIDNFCE, 'NFC', :IDFILIAL, :VINC_IDPEDIDO, 5,0,:VIDPRODUTO,
                                     :VCUSTONOTA,:VPRECOVENDA,:VPRECOVENDA,:VPRECOVENDA,:VPRECOVENDA,0,:VPRECOVENDA,
                                     'N',0,1,
                                     :VQTDEPEDIDO, :VIDUNIDADEMEDIDA,
                                     :VCLFISCAL, :VTAXA_ICMS, :VTOTAL_BASE, :VTOTAL_ICMS, :VTOTAL_BASE_ST, :VTOTAL_ICMS_ST, :VALIQUOTA_ST);
    
    
           end
       end








       if (vGERAFINANCEIRO = 'S') then begin
           if (not exists(select first 1 R.IDRECEBER from RECEBER R
                                                            where R.IDFILIAL = :IDFILIAL
                                                              and R.IDRECEBER = :vINC_IDPEDIDO
                                                              and R.IDFOLHA = 5
                                                              and R.IDORDEM = 1)) then begin
                if (:VQUITAR = 'S') then
                begin
                -- ELE VAI QUITAR
                    insert into RECEBER (IDFILIAL, IDRECEBER, IDFOLHA, IDORDEM, DOCUMENTO, DATAVENCIMENTO, DATAEMISSAO, IDCLIENTE,
                                         IDREPRESENTANTE, IDFORMAPAGTO, VALORDOCUMENTO,IDCENTROCUSTO, TAXACOMISSAO, DATAPAGAMENTO, VALORPAGAMENTO, IDCAIXA, HISTORICO)
                                 values (:IDFILIAL, :vINC_IDPEDIDO,'5'   ,'1'     ,'PDV'    , :vdtemissao+:vPRAZO, :vDTEMISSAO, :IDCLIENTE,
                                         :IDREPRESENTANTE, :IDFORMAPAGTO,:TOTALVENDA,:vIDCENTROCUSTO, 0, current_date, :TOTALVENDA, :VDEF_USU_CAIXA, :NOMECLIENTE);
                end
                else begin
                    insert into RECEBER (IDFILIAL, IDRECEBER, IDFOLHA, IDORDEM, DOCUMENTO, DATAVENCIMENTO, DATAEMISSAO, IDCLIENTE,
                                         IDREPRESENTANTE, IDFORMAPAGTO, VALORDOCUMENTO,IDCENTROCUSTO, TAXACOMISSAO, HISTORICO)
                                 values (:IDFILIAL, :vINC_IDPEDIDO,'5'   ,'1'     ,'PDV'    , :vdtemissao+:vPRAZO, :vDTEMISSAO, :IDCLIENTE,
                                         :IDREPRESENTANTE, :IDFORMAPAGTO,:TOTALVENDA,:vIDCENTROCUSTO, 0, :NOMECLIENTE );
                end

           end
       end


       -- JOGA A VENDA BALCAO LA NA VENDA
       update VENDA_BALCAO V
          set V.IDPEDIDO_RETAGUARDA = :VINC_IDPEDIDO
        where V.IDFILIAL = :IDFILIAL
          and V.IDVENDA  = :IDVENDA
          and V.TIPO     = 'CP';

       for select Z.IDPRODUTO, Z.CONTADOR, Z.VTOTALCOMISSAO, Z.XTOTALCOMISSAO from Z_CALCULA_COMISSAO(:IDFILIAL,:VINC_IDPEDIDO,5) Z
          into :VIDPRODUTO, :VCONTADOR, :VPRECOVENDA, :VTOTALCOMISSAO
       do
         suspend;
    end
end^


ALTER PROCEDURE VERIFICA_CUSTO_ENCARGOS_PEDIDO (
    IDFILIAL INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDFOLHA INTEGER,
    IDPEDIDO INTEGER)
AS
declare variable VCUSTO double precision;
begin
   for select P.IDPEDIDO, P.IDFOLHA from PEDIDO P
      where P.IDFILIAL = :IDFILIAL
        and P.DATAPEDIDO between :DATAINI and :DATAFIM
        and P.TOTAL_CUSTO_ENCARGOS is null
     into :IDPEDIDO, :IDFOLHA
   do
     begin
        select sum(IT.QTDEPEDIDO*IT.CUSTOENCARGOS) from ITENSPEDIDO IT
           where IT.IDFILIAL = :IDFILIAL
              and IT.IDPEDIDO = :IDPEDIDO
              and IT.IDFOLHA = :IDFOLHA
           into :VCUSTO;

        update PEDIDO P
           set P.TOTAL_CUSTO_ENCARGOS = :VCUSTO
         where P.IDFILIAL = :IDFILIAL
           and P.IDPEDIDO = :IDPEDIDO
           and P.IDFOLHA = :IDFOLHA;

        suspend;
     end 
end^


ALTER PROCEDURE VERIFICA_TOTAL_PEDIDO_PALM (
    IDFILIAL INTEGER,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER)
AS
declare variable VTOTALPRODUTO numeric(16,2);
declare variable VTOTALPEDIDO numeric(16,2);
declare variable VDESCONTO numeric(16,2);
declare variable vCONTADOR integer;
declare variable vIDPRODUTO integer;
declare variable vPRECOTABELA numeric(16,2);
declare variable vPRECOVENDA numeric(16,2);
declare variable vRATEIO numeric(16,2);
begin
   select sum(IT.PRECOTABELA), sum(IT.PRECOVENDA) from ITENSPEDIDO IT
     where IT.IDFILIAL = :IDFILIAL
       and IT.IDPEDIDO = :IDPEDIDO
       and IT.IDFOLHA = :IDFOLHA
    into :VTOTALPRODUTO, :VTOTALPEDIDO;

    VDESCONTO = (:VTOTALPRODUTO - :VTOTALPEDIDO);


   -- RATEANDO
   if (VDESCONTO <> 0) then begin

--       vRATEIO = (VTOTAL_DESCONTO/:VTOTAL_PEDIDO)*100;

       for select IT.CONTADOR, IT.IDPRODUTO, IT.PRECOTABELA, IT.PRECOVENDA from ITENSPEDIDO IT
         where IT.IDFILIAL = :IDFILIAL
           and IT.IDPEDIDO = :IDPEDIDO
           and IT.IDFOLHA = :IDFOLHA
         into :VCONTADOR, :VIDPRODUTO, :vPRECOTABELA, :vPRECOVENDA
       do begin
          update ITENSPEDIDO IT
              set IT.PRECOVENDA = IT.PRECOVENDA-((IT.PRECOTABELA*:VRATEIO)/100),
                  IT.TAXADESCONTO = :vRATEIO*-1,
                  IT.PRECOTABELA_ORIGINAL = :VPRECOTABELA
          where IT.IDFILIAL = :IDFILIAL
            and IT.IDPEDIDO = :IDPEDIDO
            and IT.IDFOLHA = :IDFOLHA
            and IT.CONTADOR = :VCONTADOR;
       end
   end

   update PEDIDO P
      set P.TOTALPRODUTO = :VTOTALPRODUTO
--          P.TOTALPEDIDO = :VTOTALPEDIDO,
--          P.TOTALDESCONTO = :VDESCONTO
    where P.IDFILIAL = :IDFILIAL
      and P.IDPEDIDO = :IDPEDIDO
      and P.IDFOLHA = :IDFOLHA;
end^


ALTER PROCEDURE Z_ARRUMA_INSCRICAO_EST_MT (
    IDFILIAL INTEGER)
AS
begin
   update CLIENTE C
      set C.INSESTADUAL = '00' || '' || C.INSESTADUAL
    where C.TIPOCLIENTE = 'J'
      and strlen(C.INSESTADUAL) <= 13
      and C.IDFILIAL = IDFILIAL;
end^


ALTER PROCEDURE Z_ATU_PRECO_COMPRA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    IDPRODUTO INTEGER,
    VCUSTONOTA NUMERIC(15,4),
    VCUSTOTRIBUTO NUMERIC(15,4),
    VCUSTOENCARGOS NUMERIC(15,4))
AS
begin
   for select IT.IDPEDIDO, IT.IDFOLHA, IT.IDPRODUTO from ITENSPEDIDO IT

     join PEDIDO P
       on P.IDFILIAL = IT.IDFILIAL
      and P.IDPEDIDO = IT.IDPEDIDO
      and P.IDFOLHA = IT.IDFOLHA

     where IT.IDFILIAL = :IDFILIAL
      and  P.DATAPEDIDO between :DTINI and :DTFIM
     into :IDPEDIDO, :IDFOLHA, :IDPRODUTO

   do begin
      -- PEGA OS VALORES DO PRODUTO
      select PR.CUSTONOTAUNIT, PR.CUSTOTRIBUTOSUNIT, PR.CUSTOSENCARGOSUNIT from PRODUTO PR
          where PR.IDFILIAL = :IDFILIAL
            and PR.IDPRODUTO = :IDPRODUTO
        into :vCUSTONOTA, :vCUSTOTRIBUTO, :vCUSTOENCARGOS;

      -- ATUALIZA O ITENSPEDIDO
      update ITENSPEDIDO IT
         set IT.CUSTONOTA = :vCUSTONOTA*IT.FATORCONVERSAO,
             IT.CUSTOTRIBUTADO = :VCUSTOTRIBUTO*IT.FATORCONVERSAO,
             IT.CUSTOENCARGOS = :VCUSTOENCARGOS*IT.FATORCONVERSAO
       where IT.IDFILIAL = :IDFILIAL
         and IT.IDPEDIDO = :IDPEDIDO
         and IT.IDFOLHA = :IDFOLHA
         and IT.IDPRODUTO = :IDPRODUTO;
   end
end^


ALTER PROCEDURE Z_ATUALIZA_NCM
RETURNS (
    NCM VARCHAR(15),
    IDPRODUTO INTEGER)
AS
declare variable IDFILIAL integer;
begin

  for select P.IDFILIAL, P.IDPRODUTO, P.CLASSIFICACAO_FISCAL from PRODUTO P
     into :IDFILIAL, :IDPRODUTO, :NCM
  do begin
     if (exists(select T.NCM from TIPI T
            where T.NCM = :NCM)) then
     begin
         update PRODUTO P
            set P.NCM_INVALIDO = null
         where P.IDFILIAL = :IDFILIAL
           and P.IDPRODUTO = :IDPRODUTO;
     end
     else begin
         update PRODUTO P
            set P.NCM_INVALIDO = '*'
         where P.IDFILIAL = :IDFILIAL
           and P.IDPRODUTO = :IDPRODUTO;
     end


     suspend;
  end
end^


ALTER PROCEDURE Z_ATUALIZA_TB_UF (
    IDFILIAL INTEGER)
RETURNS (
    VUF VARCHAR(2),
    IDCONTADOR INTEGER)
AS
declare variable VID_FEDERACAO_IBGE varchar(2);
begin
      for select count(*), C.UF from CIDADE C
       group by C.UF
        into :IDCONTADOR, :vUF
      do begin
          if (not(exists(select U.UF from UF U
                    where U.UF = :VUF))) then begin

              if (:VUF = 'MS') then
                VID_FEDERACAO_IBGE = '50';
              else
                VID_FEDERACAO_IBGE = null;

              insert into
                  UF (UF, ID_FEDERACAO_IBGE) values (:vUF,:VID_FEDERACAO_IBGE);
          end
          suspend;
      end
end^


ALTER PROCEDURE Z_ATULIZA_SALDO (
    IDFILIAL INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    QTDEANTERIOR NUMERIC(10,3))
AS
declare variable vIDCONTROLE integer;
declare variable vSALDO_ATUAL numeric(10,3);
declare variable vSITUACAO varchar(1);
declare variable vQTDE numeric(10,3);
declare variable vHISTORICO varchar(60);
begin
  for select P.IDPRODUTO, P.QTDEANTERIOR from PRODUTO P
    where P.IDFILIAL = :IDFILIAL
   into :IDPRODUTO, :QTDEANTERIOR
  do begin
    for select E.IDCONTROLE, E.SITUACAO, E.QTDE, E.HISTORICO from ESTOQUE_FISICO E
         where E.IDFILIAL = :IDFILIAL
           and E.IDPRODUTO = :IDPRODUTO
         order by E.IDCONTROLE
         into :vIDCONTROLE, :vSITUACAO, :VQTDE, :VHISTORICO
    do begin
       if (vSALDO_ATUAL is null) then
           VSALDO_ATUAL = :QTDEANTERIOR;

       if (VSITUACAO = '+') then
           VSALDO_ATUAL = :VSALDO_ATUAL+:VQTDE;
       else
           VSALDO_ATUAL = :VSALDO_ATUAL-:VQTDE;

       update ESTOQUE_FISICO E
          set E.SALDO = :VSALDO_ATUAL
        where E.IDCONTROLE = :vIDCONTROLE
          and E.IDFILIAL = :IDFILIAL;

    end

    VSALDO_ATUAL = null;
    suspend;
  end
end^


ALTER PROCEDURE Z_CALCULA_COMISSAO (
    IDFILIAL INTEGER,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    CONTADOR INTEGER,
    VTOTALCOMISSAO NUMERIC(16,4),
    XTOTALCOMISSAO NUMERIC(16,2))
AS
declare variable VCATEGORIA varchar(1);
declare variable VFORMA_DESCONTO_COMISSAO numeric(10,2);
declare variable VTAXAESPECIAL numeric(10,2);
declare variable VCOND_DESCONTO_COMISSAO numeric(10,2);
declare variable VTAXACOMISSAO_P numeric(10,2);
declare variable VCOMISSAO numeric(10,2);
declare variable VCOMISSAOBALCAO numeric(10,2);
declare variable VCOMISSAOPRACA numeric(10,2);
declare variable VCOMISSAOINTERIOR numeric(10,2);
begin
  select first 1 R.CATEGORIA, F.DESCONTO_COMISSAO, CD.DESCONTO_COMISSAO, R.TAXAESPECIAL, P.TOTALCOMISSAO from PEDIDO P

    join CLIENTE C
      on C.IDCLIENTE = P.IDCLIENTE

    join REPRESENTANTE R
      on R.IDREPRESENTANTE = P.IDREPRESENTANTE

    left join FORMAPAGTO F
      on F.IDFORMAPAGTO = P.IDFORMAPAGTO

    left join CONDICAOPAGTO CD
      on CD.IDCONDICAOPAGTO = P.IDCONDICAOPAGTO

    where P.IDFILIAL = :IDFILIAL
      and P.IDPEDIDO = :IDPEDIDO
      and P.IDFOLHA = :IDFOLHA
    into :VCATEGORIA, :VFORMA_DESCONTO_COMISSAO, :VCOND_DESCONTO_COMISSAO, :VTAXAESPECIAL, :XTOTALCOMISSAO;

  if (:VFORMA_DESCONTO_COMISSAO is null) then VFORMA_DESCONTO_COMISSAO = 0;
  if (:VCOND_DESCONTO_COMISSAO is null) then VCOND_DESCONTO_COMISSAO = 0;
  if (:VTAXAESPECIAL is null) then VTAXAESPECIAL = 0;
  if (:XTOTALCOMISSAO is null) then XTOTALCOMISSAO = 0;


  for select IT.CONTADOR, IT.IDPRODUTO, P.COMISSAOBALCAO, P.COMISSAOPRACA, P.COMISSAOINTERIOR,
             IT.TAXACOMISSAO from ITENSPEDIDO IT

     join PRODUTO P
       on P.IDFILIAL = IT.IDFILIAL
      and P.IDPRODUTO = IT.IDPRODUTO

    where IT.IDFILIAL = :IDFILIAL
      and IT.IDPEDIDO = :IDPEDIDO
      and IT.IDFOLHA = :IDFOLHA
      into :CONTADOR, :IDPRODUTO, :VCOMISSAOBALCAO, :VCOMISSAOPRACA, :VCOMISSAOINTERIOR, :VTAXACOMISSAO_P
  do begin

    if (:VCOMISSAOBALCAO is null) then VCOMISSAOBALCAO = 0;
    if (:VCOMISSAOPRACA is null) then VCOMISSAOPRACA = 0;
    if (:VCOMISSAOINTERIOR is null) then VCOMISSAOINTERIOR = 0;
    if (:VCOMISSAO is null) then VCOMISSAO = 0;

    if (:VCATEGORIA = 'B') then
       VCOMISSAO = (:VCOMISSAOBALCAO)-(:VFORMA_DESCONTO_COMISSAO-:VCOND_DESCONTO_COMISSAO);

    if (:VCATEGORIA = 'P') then
       VCOMISSAO = (:VCOMISSAOPRACA)-(:VFORMA_DESCONTO_COMISSAO-:VCOND_DESCONTO_COMISSAO);

    if (:VCATEGORIA = 'I') then
       VCOMISSAO = (:VCOMISSAOINTERIOR)-(:VFORMA_DESCONTO_COMISSAO-:VCOND_DESCONTO_COMISSAO);

    if (:VCATEGORIA = 'E') then
       VCOMISSAO = (:VTAXAESPECIAL)-(:VFORMA_DESCONTO_COMISSAO-:VCOND_DESCONTO_COMISSAO);

    if (:VTAXACOMISSAO_P <> :VCOMISSAO) then begin
       update ITENSPEDIDO IT
         set IT.TAXACOMISSAO = :VCOMISSAO

       where IT.IDFILIAL = :IDFILIAL
         and IT.IDFOLHA = :IDFOLHA
         and IT.IDPEDIDO = :IDPEDIDO
         and IT.CONTADOR = :CONTADOR;
    end

    suspend;
  end

  select sum(((IT.PRECOVENDA*IT.QTDEPEDIDO)*IT.TAXACOMISSAO)/100) from ITENSPEDIDO IT
    where IT.IDFILIAL = :IDFILIAL
      and IT.IDPEDIDO = :IDPEDIDO
      and IT.IDFOLHA = :IDFOLHA
   into :vTOTALCOMISSAO;

   if (XTOTALCOMISSAO <> :VTOTALCOMISSAO) then begin
       update PEDIDO P
          set P.TOTALCOMISSAO = :vTOTALCOMISSAO
       where P.IDFILIAL = :IDFILIAL
         and P.IDPEDIDO = :IDPEDIDO
         and P.IDFOLHA = :IDFOLHA;
   end

   update receber P
      set P.TAXACOMISSAO = (:vTOTALCOMISSAO/P.VALORDOCUMENTO)*100
   where P.IDFILIAL = :IDFILIAL
     and P.IDRECEBER = :IDPEDIDO
     and P.IDFOLHA = :IDFOLHA;

end^


ALTER PROCEDURE Z_CONSERTA_TOTAL_PED (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    DATAPEDIDO DATE,
    TOTALPEDIDO NUMERIC(18,2),
    TOTATALPRODUTO DOUBLE PRECISION,
    DIF DOUBLE PRECISION)
AS
begin
/*
    FOR SELECT v.IDPEDIDO, v.IDFOLHA, v.DATAPEDIDO, v.TOTALPEDIDO, v.TOTALPRODUTO, v.DIF FROM verifca_dif V
       WHERE V.datapedido between :dtini and :dtfim
      into :IDPEDIDO, :IDFOLHA, :DATAPEDIDO, :TOTALPEDIDO, :TOTATALPRODUTO, :DIF
    DO BEGIN
       execute procedure RECALCULA_PEDIDO(:IDFILIAL,:IDPEDIDO,:IDFOLHA);
       SUSPEND;
    END
 */
end^


ALTER PROCEDURE Z_ERRUMAR_ENTRADA (
    IDFILIAL INTEGER)
RETURNS (
    IDFORNECEDOR INTEGER,
    IDNOTA INTEGER)
AS
begin
  for select E.IDNOTA, E.IDFORNECEDOR from ENTRADA E
    where E.IDFILIAL = :IDFILIAL
      and not (exists(select first 1 P.IDFILIAL from PAGAR P
                     where P.IDFILIAL = :IDFILIAL
                       and P.IDPAGAR = E.IDNOTA
                       and P.IDFORNECEDOR = E.IDFORNECEDOR))
      into :IDNOTA, :IDFORNECEDOR
  do
    begin
       update ENTRADA E
          set E.TMP = '1'
        where E.IDFILIAL = :IDFILIAL
          and E.IDFORNECEDOR = :IDFORNECEDOR
          and E.IDNOTA = :IDNOTA;
      suspend;
    end
end^


ALTER PROCEDURE Z_INSERT_SUBCONVENIO (
    IDFILIAL INTEGER)
RETURNS (
    VIDCONVENIO INTEGER)
AS
DECLARE VARIABLE VDESCRICAO VARCHAR(60);
begin
  for select C.IDCONVENIO, C.DESCRICAO from CONVENIO C
    where C.EXCLUIDO is null
   into :vIDCONVENIO, :vDESCRICAO
  do begin
    insert into SUB_CONVENIO (IDFILIAL, IDSUB_CONVENIO, IDCONVENIO, DESCRICAO)
          values (:IDFILIAL, :vIDCONVENIO, :vIDCONVENIO, :VDESCRICAO);
    suspend;
  end
end^


ALTER PROCEDURE Z_INSERT_SUBGRUPO (
    IDFILIAL INTEGER)
RETURNS (
    VIDGRUPO INTEGER)
AS
DECLARE VARIABLE VDESCRICAO VARCHAR(25);
begin
  for select G.IDGRUPO, G.NOME from GRUPO G
    where G.EXCLUIDO is null
   into :vIDGRUPO, :vDESCRICAO
  do begin
    insert into SUB_GRUPO (IDFILIAL, IDSUB_GRUPO, IDGRUPO, DESCRICAO)
          values (:IDFILIAL, :vIDGRUPO, :vIDGRUPO, :VDESCRICAO);
    suspend;
  end
end^


ALTER PROCEDURE Z_PLANILHA (
    IDFILIAL INTEGER,
    ANO INTEGER,
    MES INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDGRUPO_1 INTEGER,
    IDGRUPO_2 INTEGER,
    IDGRUPO_3 INTEGER,
    IDGRUPO_4 INTEGER,
    IDGRUPO_5 INTEGER,
    IDGRUPO_6 INTEGER)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(60),
    DIA_1 INTEGER,
    DIA_2 INTEGER,
    DIA_3 INTEGER,
    DIA_4 INTEGER,
    DIA_5 INTEGER,
    DIA_6 INTEGER,
    DIA_7 INTEGER,
    DIA_8 INTEGER,
    DIA_9 INTEGER,
    DIA_10 INTEGER,
    DIA_11 INTEGER,
    DIA_12 INTEGER,
    DIA_13 INTEGER,
    DIA_14 INTEGER,
    DIA_15 INTEGER,
    DIA_16 INTEGER,
    DIA_17 INTEGER,
    DIA_18 INTEGER,
    DIA_19 INTEGER,
    DIA_20 INTEGER,
    DIA_21 INTEGER,
    DIA_22 INTEGER,
    DIA_23 INTEGER,
    DIA_24 INTEGER,
    DIA_25 INTEGER,
    DIA_26 INTEGER,
    DIA_27 INTEGER,
    DIA_28 INTEGER,
    DIA_29 INTEGER,
    DIA_30 INTEGER,
    DIA_31 INTEGER,
    TOTALGERAL_DIAS INTEGER,
    QTDE_GRUPO_1 INTEGER,
    QTDE_GRUPO_2 INTEGER,
    QTDE_GRUPO_3 INTEGER,
    QTDE_GRUPO_4 INTEGER,
    QTDE_GRUPO_5 INTEGER,
    QTDE_GRUPO_6 INTEGER)
AS
begin
  for select p.IDREPRESENTANTE, R.NOME,
      count(distinct case when extract(day from P.DATAPEDIDO) = 1 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 2 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 3 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 4 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 5 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 6 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 7 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 8 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 9 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 10 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 11 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 12 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 13 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 14 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 15 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 16 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 17 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 18 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 19 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 20 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 21 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 22 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 23 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 24 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 25 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 26 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 27 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 28 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 29 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 30 then P.IDPEDIDO end),
      count(distinct case when extract(day from P.DATAPEDIDO) = 31 then P.IDPEDIDO end),
      count(distinct P.IDPEDIDO),
      sum(distinct case when PR.IDGRUPO = :IDGRUPO_1 then (IT.QTDEPEDIDO*IT.FATORCONVERSAO)/PR.FATORCONVERSAO end),
      sum(distinct case when PR.IDGRUPO = :IDGRUPO_2 then (IT.QTDEPEDIDO*IT.FATORCONVERSAO)/PR.FATORCONVERSAO end),
      sum(distinct case when PR.IDGRUPO = :IDGRUPO_3 then (IT.QTDEPEDIDO*IT.FATORCONVERSAO)/PR.FATORCONVERSAO end),
      sum(distinct case when PR.IDGRUPO = :IDGRUPO_4 then (IT.QTDEPEDIDO*IT.FATORCONVERSAO)/PR.FATORCONVERSAO end),
      sum(distinct case when PR.IDGRUPO = :IDGRUPO_5 then (IT.QTDEPEDIDO*IT.FATORCONVERSAO)/PR.FATORCONVERSAO end),
      sum(distinct case when PR.IDGRUPO = :IDGRUPO_6 then (IT.QTDEPEDIDO*IT.FATORCONVERSAO)/PR.FATORCONVERSAO end)
  from ITENSPEDIDO IT

    join PEDIDO P
      on P.IDFILIAL = :IDFILIAL
     and P.IDPEDIDO = IT.IDPEDIDO
     and P.IDFOLHA = IT.IDFOLHA

    join REPRESENTANTE R
      on R.IDFILIAL = P.IDFILIAL
     and R.IDREPRESENTANTE = P.IDREPRESENTANTE

    join PRODUTO PR
      on PR.IDFILIAL = :IDFILIAL
     and PR.IDPRODUTO = IT.IDPRODUTO

   where IT.IDFILIAL = :IDFILIAL
--     and P.DATAPEDIDO between :DTINI and :DTFIM
     and extract(year from P.DATAPEDIDO) = :ANO
     and extract(month from P.DATAPEDIDO) = :MES
     and P.SITUACAOPEDIDO = 'V'
     and PR.IDFORNECEDOR between :IDFORNECEDORINI and :IDFORNECEDORFIM
--     and PR.IDGRUPO = :IDGRUPO_1
--     and P.IDREPRESENTANTE = :IDREP
     group by P.IDREPRESENTANTE, R.NOME
    into :IDREPRESENTANTE, :NOMEREPRESENTANTE, :DIA_1, :DIA_2, :DIA_3, :DIA_4, :DIA_5,
       :DIA_6, :DIA_7, :DIA_8, :DIA_9, :DIA_10, :DIA_11, :DIA_12, :DIA_13, :DIA_14, :DIA_15,
       :DIA_16, :DIA_17, :DIA_18, :DIA_19, :DIA_20, :DIA_21, :DIA_22, :DIA_23, :DIA_24, :DIA_25,
       :DIA_26, :DIA_27, :DIA_28, :DIA_29, :DIA_30, :DIA_31, :TOTALGERAL_DIAS, :QTDE_GRUPO_1,
       :QTDE_GRUPO_2, :QTDE_GRUPO_3, :QTDE_GRUPO_4, :QTDE_GRUPO_5, :QTDE_GRUPO_6
   do begin
     if (:QTDE_GRUPO_1 is null) then QTDE_GRUPO_1 = 0;
     if (:QTDE_GRUPO_2 is null) then QTDE_GRUPO_2 = 0;
     if (:QTDE_GRUPO_3 is null) then QTDE_GRUPO_3 = 0;
     if (:QTDE_GRUPO_4 is null) then QTDE_GRUPO_4 = 0;
     if (:QTDE_GRUPO_5 is null) then QTDE_GRUPO_5 = 0;
     if (:QTDE_GRUPO_6 is null) then QTDE_GRUPO_6 = 0;
     suspend;
   end
end^


ALTER PROCEDURE Z_RECALCULA_CUSTO_PEDIDO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    IDPRODUTO INTEGER,
    CUSTONOTA NUMERIC(16,4),
    CUSTOTRIBUTO NUMERIC(16,4),
    CUSTOENCARGOS NUMERIC(16,4),
    PRECOVENDA NUMERIC(16,4),
    CONTADOR INTEGER,
    TOTALGERAL NUMERIC(16,2))
AS
begin
  for select P.IDPEDIDO, P.IDFOLHA from DEVOLUCAO P
       where P.DATAPEDIDO between :DTINI and :DTFIM
         and P.IDFILIAL = :IDFILIAL
      into :IDPEDIDO, :IDFOLHA
  do begin
    for select IT.IDPRODUTO, IT.CONTADOR from ITENSDEVOLUCAO IT
       where IT.IDFILIAL = :IDFILIAL
         and IT.IDPEDIDO = :IDPEDIDO
         and IT.IDFOLHA  = :IDFOLHA
      into :IDPRODUTO, :CONTADOR
    do begin
       select PR.CUSTONOTAUNIT, PR.CUSTOTRIBUTOSUNIT, PR.CUSTOSENCARGOSUNIT, PR.PRECOVENDAUNIT from PRODUTO PR
         where PR.IDFILIAL  = :IDFILIAL
           and PR.IDPRODUTO = :IDPRODUTO
         into :CUSTONOTA, :CUSTOTRIBUTO, :CUSTOENCARGOS, :PRECOVENDA;

       update ITENSDEVOLUCAO IT
          set IT.CUSTONOTA       = :CUSTONOTA*IT.FATORCONVERSAO,
              IT.CUSTOTRIBUTADO  = :CUSTOTRIBUTO*IT.FATORCONVERSAO,
              IT.CUSTOENCARGOS   = :CUSTOENCARGOS*IT.FATORCONVERSAO
        where IT.IDFILIAL = :IDFILIAL
          and IT.IDPEDIDO = :IDPEDIDO
          and IT.IDFOLHA  = :IDFOLHA
          and IT.CONTADOR = :CONTADOR;


       select sum(IT.CUSTONOTA*IT.QTDEPEDIDO) from ITENSDEVOLUCAO IT
        where IT.IDFILIAL = :IDFILIAL
          and IT.IDPEDIDO = :IDPEDIDO
          and IT.IDFOLHA  = :IDFOLHA
        into :TOTALGERAL;

       update DEVOLUCAO P
           set P.TOTALCUSTO = :TOTALGERAL
         where P.IDFILIAL = :IDFILIAL
           and P.IDPEDIDO = :IDPEDIDO
           and P.IDFOLHA  = :IDFOLHA;
    end
    suspend;
  end





  for select P.IDPEDIDO, P.IDFOLHA from PEDIDO P
       where P.DATAPEDIDO between :DTINI and :DTFIM
         and P.IDFILIAL = :IDFILIAL
      into :IDPEDIDO, :IDFOLHA
  do begin
    for select IT.IDPRODUTO, IT.CONTADOR from ITENSPEDIDO IT
       where IT.IDFILIAL = :IDFILIAL
         and IT.IDPEDIDO = :IDPEDIDO
         and IT.IDFOLHA  = :IDFOLHA
      into :IDPRODUTO, :CONTADOR
    do begin
       select PR.CUSTONOTAUNIT, PR.CUSTOTRIBUTOSUNIT, PR.CUSTOSENCARGOSUNIT, PR.PRECOVENDAUNIT from PRODUTO PR
         where PR.IDFILIAL  = :IDFILIAL
           and PR.IDPRODUTO = :IDPRODUTO
         into :CUSTONOTA, :CUSTOTRIBUTO, :CUSTOENCARGOS, :PRECOVENDA;

       update ITENSPEDIDO IT
          set IT.CUSTONOTA       = :CUSTONOTA*IT.FATORCONVERSAO,
              IT.CUSTOTRIBUTADO  = :CUSTOTRIBUTO*IT.FATORCONVERSAO,
              IT.CUSTOENCARGOS   = :CUSTOENCARGOS*IT.FATORCONVERSAO
        where IT.IDFILIAL = :IDFILIAL
          and IT.IDPEDIDO = :IDPEDIDO
          and IT.IDFOLHA  = :IDFOLHA
          and IT.CONTADOR = :CONTADOR;


       select sum(IT.CUSTONOTA*IT.QTDEPEDIDO) from ITENSPEDIDO IT
        where IT.IDFILIAL = :IDFILIAL
          and IT.IDPEDIDO = :IDPEDIDO
          and IT.IDFOLHA  = :IDFOLHA
        into :TOTALGERAL;

       update PEDIDO P
           set P.TOTALCUSTO = :TOTALGERAL
         where P.IDFILIAL = :IDFILIAL
           and P.IDPEDIDO = :IDPEDIDO
           and P.IDFOLHA  = :IDFOLHA;
    end
    suspend;
  end

end^


ALTER PROCEDURE Z_RECALCULA_PEDIDO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    TOTALPEDIDO NUMERIC(16,2),
    VALORITEM NUMERIC(16,2))
AS
begin
  for select P.IDPEDIDO, P.IDFOLHA, P.TOTALPEDIDO+coalesce(P.TOTALDESCONTO,0) from PEDIDO P
    where P.IDFILIAL = :IDFILIAL
      and P.DATAPEDIDO  between :DTINI and :DTFIM
     into :IDPEDIDO, :IDFOLHA, :TOTALPEDIDO
  do begin
      select sum(IT.PRECOVENDA*IT.QTDEPEDIDO) from ITENSPEDIDO IT
         where IT.IDFILIAL = :IDFILIAL
           and IT.IDPEDIDO = :IDPEDIDO
           and IT.IDFOLHA  = :IDFOLHA
         into :VALORITEM;
      if (:VALORITEM <> :TOTALPEDIDO) then
      begin
          execute procedure RECALCULA_PEDIDO(:IDFILIAL,:IDPEDIDO,:IDFOLHA);
          suspend;
      end
  end
end^


ALTER PROCEDURE Z_ROMANEIO (
    IDFILIAL INTEGER)
RETURNS (
    IDCONTROLE INTEGER)
AS
begin
   update romaneio r
      set r.situacaoromaneio = null
     where r.idfilial = :idfilial;

   for select r.idcontrole  from romaneio r
      where r.idfilial = :idfilial
      into :idcontrole
   do begin
      if (not(exists(select it.idfilial from itensromaneio it
left JOIN RECEBER R
  ON R.IDFILIAL = IT.IDFILIAL
 AND R.IDRECEBER = IT.IDPEDIDO
 AND R.IDFOLHA = IT.IDFOLHA

JOIN CLIENTE C 
  ON C.IDCLIENTE = R.IDCLIENTE
                where it.idfilial = :idfilial
                  and it.idcontrole = :idcontrole
                  and it.situacaoromaneio is null))) then begin

         update romaneio r
            set r.situacaoromaneio = '1'
          where r.idfilial = :idfilial
            and r.idcontrole = :idcontrole;

      end
      suspend;
   end
end^


ALTER PROCEDURE Z_SELECT_CALCULA_COMISSAO (
    IDFILIAL INTEGER)
RETURNS (
    IDPEDIDO INTEGER)
AS
declare variable VIDPRODUTO integer;
declare variable VCONTADOR integer;
declare variable VPRECOVENDA numeric(15,2);
declare variable VTOTALCOMISSAO numeric(15,2);
begin
    for select V.IDPEDIDO_RETAGUARDA from VENDA_BALCAO V
      into :IDPEDIDO
    do
      begin
        for select Z.IDPRODUTO, Z.CONTADOR, Z.VTOTALCOMISSAO, Z.XTOTALCOMISSAO from Z_CALCULA_COMISSAO(:IDFILIAL,:IDPEDIDO,5) Z
           into :VIDPRODUTO, :VCONTADOR, :VPRECOVENDA, :VTOTALCOMISSAO
        do
          suspend;


       suspend;
    end
end^



SET TERM ; ^


/******************************************************************************/
/***                              Descriptions                              ***/
/******************************************************************************/



/******************************************************************************/
/***                              Descriptions                              ***/
/******************************************************************************/

DESCRIBE PROCEDURE REL_ICMS_NOTAS_FISCAIS
'RELATORIO DE ICMS DE NOTAS FISCAIS';

DESCRIBE PROCEDURE Z_CALCULA_COMISSAO
'Calcula Comissao';



/******************************************************************************/
/***                          Fields descriptions                           ***/
/******************************************************************************/

DESCRIBE FIELD IDFILIAL TABLE AGENDA
' Identificação da Filial';

DESCRIBE FIELD DATA TABLE AGENDA
' Data da Mensagem';

DESCRIBE FIELD HORA TABLE AGENDA
' Hora da Mensagem';

DESCRIBE FIELD DE TABLE AGENDA
' Destinatário da Mensagem';

DESCRIBE FIELD ASSUNTO TABLE AGENDA
' Descrição do Assunto';

DESCRIBE FIELD MEMO TABLE AGENDA
' Descrição do Mensagem';

DESCRIBE FIELD PARA TABLE AGENDA
' Remetente da Mensagem';

DESCRIBE FIELD IDFILIAL TABLE AJUSTEESTOQUE
' Identificação da Filial';

DESCRIBE FIELD IDAJUSTEESTOQUE TABLE AJUSTEESTOQUE
' Identificação do Código da Ajuste de Estoque';

DESCRIBE FIELD IDPRODUTO TABLE AJUSTEESTOQUE
' Identificação do Código do Produto';

DESCRIBE FIELD IDCENTROCUSTO TABLE AJUSTEESTOQUE
' Identificação de Código do Centro de Custo';

DESCRIBE FIELD QTDEAJUSTE TABLE AJUSTEESTOQUE
' Quantidade de Ajuste';

DESCRIBE FIELD OBSERVACAO TABLE AJUSTEESTOQUE
' Descrição da Observação';

DESCRIBE FIELD TIPOOPERACAO TABLE AJUSTEESTOQUE
' Tipo de Operação (E)Entrada/(S)Saída';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE AJUSTEESTOQUE
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD FATORCONVERSAO TABLE AJUSTEESTOQUE
' Transformar e quantidade numérica';

DESCRIBE FIELD DTAJUSTE TABLE AJUSTEESTOQUE
' Data do Ajuste de Estoque';

DESCRIBE FIELD CUSTONOTA TABLE AJUSTEESTOQUE
' Valor do Custo de Nota do Produto';

DESCRIBE FIELD CUSTOTRIBUTOS TABLE AJUSTEESTOQUE
' Valor do Custo de Tributos dos Produtos';

DESCRIBE FIELD CUSTOENCARGOS TABLE AJUSTEESTOQUE
' Valor de Custo de Encargos existentes nos Produtos';

DESCRIBE FIELD PRECOVENDA TABLE AJUSTEESTOQUE
' Valor de Venda do Produto';

DESCRIBE FIELD IDDEPOSITO TABLE AJUSTEESTOQUE
' Identificação do Código do Depósito';

DESCRIBE FIELD DEPOSITO TABLE AJUSTEESTOQUE
'Descrição do Depósito';

DESCRIBE FIELD IDFILIAL TABLE AJUSTE_DEPOSITO
' Identificação do Código da Filial';

DESCRIBE FIELD IDAJUSTE TABLE AJUSTE_DEPOSITO
' Identificação do Código do Ajuste';

DESCRIBE FIELD IDPRODUTO TABLE AJUSTE_DEPOSITO
' Identificação do Código do Produto';

DESCRIBE FIELD DTAJUSTE TABLE AJUSTE_DEPOSITO
' Data do Ajuste';

DESCRIBE FIELD QTDE_AJUSTE TABLE AJUSTE_DEPOSITO
' Quantidade do Ajuste';

DESCRIBE FIELD TIPOOPERACAO TABLE AJUSTE_DEPOSITO
' Tipo de Operação (E)Entrada/(S)Saída';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE AJUSTE_DEPOSITO
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD FATORCONVERSAO TABLE AJUSTE_DEPOSITO
' Transformar em quantidade numérica';

DESCRIBE FIELD IDFILIAL TABLE AJUSTE_MATERIA_PRIMA
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE AJUSTE_MATERIA_PRIMA
' Identificação do Código do Controle';

DESCRIBE FIELD IDMATERIA_PRIMA TABLE AJUSTE_MATERIA_PRIMA
' Identificação do Código da Matéria Prima';

DESCRIBE FIELD DATA TABLE AJUSTE_MATERIA_PRIMA
' Data do Ajuste';

DESCRIBE FIELD QTDE TABLE AJUSTE_MATERIA_PRIMA
' Quantidade do Ajuste';

DESCRIBE FIELD OBSERVACAO TABLE AJUSTE_MATERIA_PRIMA
' Descrição da observação';

DESCRIBE FIELD TIPOOPERACAO TABLE AJUSTE_MATERIA_PRIMA
' Tipo da Operação (E)Entrada/(S)Saída';

DESCRIBE FIELD IDFILIAL TABLE ARQUIVOS_PALM
' Identificação da Filial';

DESCRIBE FIELD NOMEARQUIVO TABLE ARQUIVOS_PALM
' Descrição do Arquivo';

DESCRIBE FIELD IDFILIAL TABLE ATIVIDADE
'Identificação da Filial';

DESCRIBE FIELD IDATIVIDADE TABLE ATIVIDADE
' Identificação do Código da Atividade';

DESCRIBE FIELD NOME TABLE ATIVIDADE
' Descrição da Atividade';

DESCRIBE FIELD USUARIO TABLE ATIVIDADE
'Código do Usuário';

DESCRIBE FIELD EXCLUIDO TABLE ATIVIDADE
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD IDFILIAL TABLE BANCO
' Identificação do Código da Filial';

DESCRIBE FIELD IDBANCO TABLE BANCO
' Identificação do Código do Banco';

DESCRIBE FIELD DESCRICAO TABLE BANCO
' Descrição do Banco';

DESCRIBE FIELD IDFILIAL TABLE CAIXA
' Identificação da Filial';

DESCRIBE FIELD IDCAIXA TABLE CAIXA
' Identificação do Código de Caixa';

DESCRIBE FIELD DESCRICAO TABLE CAIXA
' Descrição do Caixa';

DESCRIBE FIELD TIPOCONTA TABLE CAIXA
' Tipo de Conta (C)Caixa/(B)Banco';

DESCRIBE FIELD SALDOANTERIOR TABLE CAIXA
' Valor do Saldo Anterior do Caixa';

DESCRIBE FIELD SAIR_REL_FLUXO TABLE CAIXA
' Sair Relatório de Fluxo (S)Sim/(N)Não';

DESCRIBE FIELD EXCLUIDO TABLE CAIXA
'  Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE CAIXA
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE CARGA
' Identificação do Código da Filial';

DESCRIBE FIELD IDCONTROLE TABLE CARGA
' Identificação do Código do Controle';

DESCRIBE FIELD DTCONTROLE TABLE CARGA
' Data do Controle';

DESCRIBE FIELD IDFILIAL TABLE CARTEIRA
' Identificação da Filial';

DESCRIBE FIELD IDCARTEIRA TABLE CARTEIRA
' Identificação do Código da Filial';

DESCRIBE FIELD IDREPRESENTANTE TABLE CARTEIRA
' Identificação do Código do Representante';

DESCRIBE FIELD NATOPERACAO TABLE CARTEIRA
' Natureza da Operação (C)Crétito/(D)Débito';

DESCRIBE FIELD DATAPEDIDO TABLE CARTEIRA
' Data do Pedido';

DESCRIBE FIELD VALORCARTEIRA TABLE CARTEIRA
' Valor da Carteira';

DESCRIBE FIELD IDPEDIDO TABLE CARTEIRA
' Identificação do Código do Pedido';

DESCRIBE FIELD HISTORICO TABLE CARTEIRA
' Descrição do Histórico';

DESCRIBE FIELD IDCLIENTE TABLE CARTEIRA
' Identificação do Código do Cliente';

DESCRIBE FIELD IDFILIAL TABLE CATEGORIA
' Identificação da Filial';

DESCRIBE FIELD IDCATEGORIA TABLE CATEGORIA
' Identificação do Código da Categoria';

DESCRIBE FIELD DESCRICAO TABLE CATEGORIA
' Descrição da Categoria';

DESCRIBE FIELD TIPOOPERACAO TABLE CATEGORIA
' Tipo de Operação (R)Receitas/(D)Despesas';

DESCRIBE FIELD EXCLUIDO TABLE CATEGORIA
'  Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE CATEGORIA
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE CATEGORIA_SERVICO
' Identificação da Filial';

DESCRIBE FIELD IDCATEGORIA TABLE CATEGORIA_SERVICO
' Identificação do Código da Categoria';

DESCRIBE FIELD DESCRICAO TABLE CATEGORIA_SERVICO
' Descrição da Categoria';

DESCRIBE FIELD IDFILIAL TABLE CENTROCUSTO
' Identificação da Filial                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Identificação da Filial';

DESCRIBE FIELD IDCENTROCUSTO TABLE CENTROCUSTO
' Identificação do Centro de Custo';

DESCRIBE FIELD IDCATEGORIA TABLE CENTROCUSTO
' Identificação do Código da Categoria';

DESCRIBE FIELD DESCRICAO TABLE CENTROCUSTO
' Descrição do Centro de Custo';

DESCRIBE FIELD SITUACAORELATORIO TABLE CENTROCUSTO
' Situação do Relatório';

DESCRIBE FIELD EXCLUIDO TABLE CENTROCUSTO
'  Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE CENTROCUSTO
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE CFOP
'Identificação da Filial';

DESCRIBE FIELD IDCFOP TABLE CFOP
' Identificação do Código do CFOP';

DESCRIBE FIELD DESCRICAO TABLE CFOP
'  Descrição do Código do Cadastro Fiscal de Operações e Prestações';

DESCRIBE FIELD CFOP TABLE CFOP
'Número do Código do Cadastro Fiscal de Operações e Prestações';

DESCRIBE FIELD CFOP_ANTIGO TABLE CFOP
' Número Antigo do CFOP';

DESCRIBE FIELD GERAFINANCEIRO TABLE CFOP
' Gerar Finaceiro (S)Sim/(N)Não';

DESCRIBE FIELD TIPOOPERACAO TABLE CFOP
' Tipo de Operação (V)Vendas/(C)Compras';

DESCRIBE FIELD ALIQUOTAICMS TABLE CFOP
' Valor da Alíquota do ICMS';

DESCRIBE FIELD TIPOCFOP TABLE CFOP
' Tipo do CFOP / Código do CFOP';

DESCRIBE FIELD ABREVIATURA TABLE CFOP
' Abreviatura da Descriçao do CFOP';

DESCRIBE FIELD CLFISCAL TABLE CFOP
' Classificação Fiscal';

DESCRIBE FIELD EXCLUIDO TABLE CFOP
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE CFOP
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE CHEQUES
' Identificação da Filial';

DESCRIBE FIELD NUMBANCO TABLE CHEQUES
' Número do Banco';

DESCRIBE FIELD NUMAGENCIA TABLE CHEQUES
' Número da Agência Bancária';

DESCRIBE FIELD NUMCONTA TABLE CHEQUES
' Número da Conta Bancária';

DESCRIBE FIELD NUMCHEQUE TABLE CHEQUES
' Número do Cheque';

DESCRIBE FIELD NOMECORRENTISTA TABLE CHEQUES
' Nome do Correntista';

DESCRIBE FIELD NOMEAVALISTA TABLE CHEQUES
' Nome do Avalista';

DESCRIBE FIELD DATACHEQUE TABLE CHEQUES
' Data do Cheque';

DESCRIBE FIELD DATAPRE TABLE CHEQUES
' Data do Cheque Pré-Datado';

DESCRIBE FIELD SITUACAOCHEQUE TABLE CHEQUES
' Situação do Cheque (A)Aberto/(D)Devolvido/(B)Baixado';

DESCRIBE FIELD VALORCHEQUE TABLE CHEQUES
' Valor do Cheque';

DESCRIBE FIELD OBSERVACAO TABLE CHEQUES
' Descrição da Observação';

DESCRIBE FIELD VALORJUROS TABLE CHEQUES
' Valor de Juros';

DESCRIBE FIELD VALORPAGO TABLE CHEQUES
' Valor Total do Pagamento';

DESCRIBE FIELD MOTIVO TABLE CHEQUES
' Código de Motivo';

DESCRIBE FIELD JUROSMES TABLE CHEQUES
' Juros do Mês Cobrado pelo Banco';

DESCRIBE FIELD DATAPAGAMENTO TABLE CHEQUES
' Data do Pagamento';

DESCRIBE FIELD DIASEMATRASO TABLE CHEQUES
' Quantidade de Dias em Atraso';

DESCRIBE FIELD VALORDESPESA TABLE CHEQUES
' Valor de Despesas';

DESCRIBE FIELD DTDIGITACAO TABLE CHEQUES
' Data da Digitação';

DESCRIBE FIELD IDCOBRANCA TABLE CHEQUES
' Identificação do Código do Cobrança';

DESCRIBE FIELD IDCLIENTE TABLE CHEQUES
' Identificação do Código do Cliente';

DESCRIBE FIELD IDREPRESENTANTE TABLE CHEQUES
' Identificação do Código do Represetante';

DESCRIBE FIELD DATABAIXADO TABLE CHEQUES
' Data do Quitamento do Cheque';

DESCRIBE FIELD DATADEVOLVIDO TABLE CHEQUES
' Data de Devolução do Cheque';

DESCRIBE FIELD IDFILIAL TABLE CIDADE
' Identificação da Filial';

DESCRIBE FIELD IDCIDADE TABLE CIDADE
' Identificação do Código da Cidade';

DESCRIBE FIELD IDREGIAO TABLE CIDADE
' Identificação do Código da Região';

DESCRIBE FIELD NOME TABLE CIDADE
' Nome da Cidade';

DESCRIBE FIELD UF TABLE CIDADE
' Sigla do Estado';

DESCRIBE FIELD QTDEPOPULACAO TABLE CIDADE
' Quantidade da População';

DESCRIBE FIELD ID_EXTERNO TABLE CIDADE
' Identificação do Código Externo';

DESCRIBE FIELD EXCLUIDO TABLE CIDADE
'Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE CIDADE
'Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE CLIENTE
' Identificação da Filial';

DESCRIBE FIELD IDCLIENTE TABLE CLIENTE
' Identificação do Código do Cliente';

DESCRIBE FIELD IDCONVENIO TABLE CLIENTE
' Identificação do Código do Convênio';

DESCRIBE FIELD IDCIDADE TABLE CLIENTE
' Identificação do Código da Cidade';

DESCRIBE FIELD IDREGIAO TABLE CLIENTE
' Identificação do Código da Região';

DESCRIBE FIELD IDATIVIDADE TABLE CLIENTE
' Identificação do Código de Atividade';

DESCRIBE FIELD NOME TABLE CLIENTE
' Nome do Cliente';

DESCRIBE FIELD FANTASIA TABLE CLIENTE
' Nome Fantasia';

DESCRIBE FIELD ENDERECO TABLE CLIENTE
' Endereço Completo';

DESCRIBE FIELD BAIRRO TABLE CLIENTE
' Nome do Bairro';

DESCRIBE FIELD CEP TABLE CLIENTE
' Código de Endereço Postal';

DESCRIBE FIELD CNPJ TABLE CLIENTE
' Número do Cadastro Nacional de Pessoa Jurídica';

DESCRIBE FIELD INSESTADUAL TABLE CLIENTE
' Número de Inscrição Estadual';

DESCRIBE FIELD CPF TABLE CLIENTE
' Número do Cadastro de Pessoa Física';

DESCRIBE FIELD RG TABLE CLIENTE
' Número do Registro Geral (Identidade)';

DESCRIBE FIELD FONE TABLE CLIENTE
' Número de Telefone pra Contato';

DESCRIBE FIELD FAX TABLE CLIENTE
' Número de Telefone Fax';

DESCRIBE FIELD CELULAR TABLE CLIENTE
' Número de Telefone Celular';

DESCRIBE FIELD PONTOREFERENCIA TABLE CLIENTE
' Descrição do Ponto de Referência';

DESCRIBE FIELD EMAIL TABLE CLIENTE
' Endereço Eletrônico';

DESCRIBE FIELD DTCADASTRO TABLE CLIENTE
' Data do Cadastro';

DESCRIBE FIELD DTULTIMACOMPRA TABLE CLIENTE
' Data da Última Compra';

DESCRIBE FIELD OBSERVACAO TABLE CLIENTE
' Descrição da Observação';

DESCRIBE FIELD LIMITECREDITO TABLE CLIENTE
' Valor do Limite de Crédito';

DESCRIBE FIELD SITUACAOCREDITO TABLE CLIENTE
' Situação do Crédito (L)Liberado/(S)Suspenso/(C)Cancelado';

DESCRIBE FIELD COMPRADOR TABLE CLIENTE
' Nome do Comprador';

DESCRIBE FIELD DTNASCIMENTOCOMP TABLE CLIENTE
' Data de Nascimento do Comprador';

DESCRIBE FIELD FONECOMP TABLE CLIENTE
' Telefone do Comprador';

DESCRIBE FIELD INSCRICAOMUNICIPAL TABLE CLIENTE
' Número da Inscrição Estadual';

DESCRIBE FIELD TIPOCLIENTE TABLE CLIENTE
' Tipo de Cliente (J)Jurídica/(F)Física';

DESCRIBE FIELD DIAVISITA TABLE CLIENTE
' Dia de Visia ao Cliente';

DESCRIBE FIELD VLRULTIMACOMPRA TABLE CLIENTE
' Valor da Última Compra';

DESCRIBE FIELD IDTABELAPRECO TABLE CLIENTE
' Identificação do Código da Tabela de Preço';

DESCRIBE FIELD EXCLUIDO TABLE CLIENTE
'Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE CLIENTE
' Código do Usuário';

DESCRIBE FIELD IDSUB_ATIVIDADE TABLE CLIENTE
' Identificação do Código da Sub-Atividade';

DESCRIBE FIELD IDREPRESENTANTE TABLE CLIENTE
' Identificação do Código do Representante';

DESCRIBE FIELD IDFILIAL TABLE CLIENTE_BALCAO
' Identificação do Código da Filial';

DESCRIBE FIELD DTPEDIDO TABLE CLIENTE_BALCAO
' Data do Pedido';

DESCRIBE FIELD NOMECLIENTE TABLE CLIENTE_BALCAO
' Nome do Cliente';

DESCRIBE FIELD ENDERECO TABLE CLIENTE_BALCAO
' Endereço Completo do Cliente';

DESCRIBE FIELD BAIRRO TABLE CLIENTE_BALCAO
' Nome do Bairro';

DESCRIBE FIELD CEP TABLE CLIENTE_BALCAO
' Código de Endereço Postal';

DESCRIBE FIELD CPF TABLE CLIENTE_BALCAO
' Número do Cadastro de Pessoa Física';

DESCRIBE FIELD CNPJ TABLE CLIENTE_BALCAO
' Número do Cadastro Nacional do Pessoa Jurídia';

DESCRIBE FIELD INSCESTADUAL TABLE CLIENTE_BALCAO
' Número de Inscrição Estadual';

DESCRIBE FIELD RG TABLE CLIENTE_BALCAO
' Registro Geral (Identidade)';

DESCRIBE FIELD FONE TABLE CLIENTE_BALCAO
' Número de Telefone de Contato';

DESCRIBE FIELD PONTOREFERENCIA TABLE CLIENTE_BALCAO
' Descrição do Ponto de Referência';

DESCRIBE FIELD IDPEDIDO TABLE CLIENTE_BALCAO
' Identificação do Código do Pedido';

DESCRIBE FIELD IDCLIENTE TABLE CLIENTE_PRODUTO
' Identificação do Código do Cliente';

DESCRIBE FIELD IDPRODUTO TABLE CLIENTE_PRODUTO
' Identificação do Código do Produto';

DESCRIBE FIELD PRECO_VENDA TABLE CLIENTE_PRODUTO
' Valor Preço de Venda';

DESCRIBE FIELD IDFILIAL TABLE CLIENTE_TABELAPRECO
' Identificação da Filial';

DESCRIBE FIELD IDCLIENTE TABLE CLIENTE_TABELAPRECO
' Identificação do Código do Cliente';

DESCRIBE FIELD IDTABELAPRECO TABLE CLIENTE_TABELAPRECO
' Identificação do Código da Tabela de Preço';

DESCRIBE FIELD IDFILIAL TABLE COBRANCA
' Identificação da Filial';

DESCRIBE FIELD IDCOBRANCA TABLE COBRANCA
' Identificação do Código de Cobrança';

DESCRIBE FIELD DESCRICAO TABLE COBRANCA
' Descrição da Cobrança';

DESCRIBE FIELD EXCLUIDO TABLE COBRANCA
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE COBRANCA
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE COBRANCA_CTS_RECEBER
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE COBRANCA_CTS_RECEBER
' Identificação do código do controle';

DESCRIBE FIELD DTCADASTRO TABLE COBRANCA_CTS_RECEBER
' Data de cadastro';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE CONDICAOPAGTO
' Identificaão do Código de Pagamento';

DESCRIBE FIELD IDFILIAL TABLE CONDICAOPAGTO
' Identificação da Filial';

DESCRIBE FIELD DESCRICAO TABLE CONDICAOPAGTO
' Descrição do Pagamento';

DESCRIBE FIELD TAXADESCONTO TABLE CONDICAOPAGTO
' Valor da Taxa de Desconto';

DESCRIBE FIELD TAXAFINACEIRO TABLE CONDICAOPAGTO
' Valor da Taxa Financeiro';

DESCRIBE FIELD PRAZO TABLE CONDICAOPAGTO
' Prazo de Pagamento';

DESCRIBE FIELD EXCLUIDO TABLE CONDICAOPAGTO
'  Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE CONDICAOPAGTO
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE CONDPGTCLIENTE
' Identificação da Filial';

DESCRIBE FIELD IDCLIENTE TABLE CONDPGTCLIENTE
' Identificação do Código do Cliente';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE CONDPGTCLIENTE
' Identificação da Condição de Pagamento';

DESCRIBE FIELD IDFILIAL TABLE CONVENIO
' Identificação da Filial';

DESCRIBE FIELD IDCONVENIO TABLE CONVENIO
' Identificação do Código do Convênio';

DESCRIBE FIELD DESCRICAO TABLE CONVENIO
' Descrição do Convênio';

DESCRIBE FIELD EXCLUIDO TABLE CONVENIO
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE CONVENIO
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE CORTES
' Identificação da Filial';

DESCRIBE FIELD IDCLIENTE TABLE CORTES
' Identificação do Código do Cliente';

DESCRIBE FIELD IDPEDIDO TABLE CORTES
' Identificação do Código do Pedido';

DESCRIBE FIELD IDPRODUTO TABLE CORTES
' Identificação do Código do Produto';

DESCRIBE FIELD IDREPRESENTANTE TABLE CORTES
' Identificação do Código do Representante';

DESCRIBE FIELD QTDE TABLE CORTES
' Quantidade de Corte';

DESCRIBE FIELD PRECOVENDA TABLE CORTES
' Valor do Preço de Venda';

DESCRIBE FIELD IDFOLHA TABLE CORTES
' Identificação do Código da Folha';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE CORTES
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD FATORCONVERSAO TABLE CORTES
' Transformar em quantidade numérica';

DESCRIBE FIELD IDFILIAL TABLE COTA
' Identificação da Filial';

DESCRIBE FIELD IDREPRESENTANTE TABLE COTA
' Identificação do Código do Representante';

DESCRIBE FIELD IDPRODUTO TABLE COTA
' Identificação do Código do Produto';

DESCRIBE FIELD QTDE TABLE COTA
' Quantidade de Cota';

DESCRIBE FIELD IDFILIAL TABLE COTA_FORNECEDOR
' Identificação da Filial';

DESCRIBE FIELD IDREPRESENTANTE TABLE COTA_FORNECEDOR
' Identificação do Código do Representante';

DESCRIBE FIELD IDFORNECEDOR TABLE COTA_FORNECEDOR
' Identificação do Código do Fornecedor';

DESCRIBE FIELD VALOR TABLE COTA_FORNECEDOR
' Valor da Cota do Fornecedor';

DESCRIBE FIELD IDFILIAL TABLE COTA_GRUPO
' Identificação da Filial';

DESCRIBE FIELD IDREPRESENTANTE TABLE COTA_GRUPO
' Identificação do Código do Representante';

DESCRIBE FIELD IDGRUPO TABLE COTA_GRUPO
' Identificação do Código de Grupo';

DESCRIBE FIELD VALOR TABLE COTA_GRUPO
' Valor de Cota';

DESCRIBE FIELD IDFILIAL TABLE DEPOSITO
' Identificação da Filial';

DESCRIBE FIELD IDDEPOSITO TABLE DEPOSITO
' Identificação do Código do Depósito';

DESCRIBE FIELD DTDEPOSITO TABLE DEPOSITO
' Data';

DESCRIBE FIELD DESCRICAO TABLE DEPOSITO
' Descrição do Depósito';

DESCRIBE FIELD SITUACAO TABLE DEPOSITO
' Situação do Depósito (A)Ativo/(I)Inativo';

DESCRIBE FIELD IDFILIAL TABLE DEVOLUCAO
' Identificação da Filial';

DESCRIBE FIELD IDPEDIDO TABLE DEVOLUCAO
' Identificação do Código do Pedido';

DESCRIBE FIELD IDFOLHA TABLE DEVOLUCAO
' Identificação do Código da Folha';

DESCRIBE FIELD DATAPEDIDO TABLE DEVOLUCAO
' Data do Pedido';

DESCRIBE FIELD DATADIGITACAO TABLE DEVOLUCAO
' Data de Digitação do Pedido';

DESCRIBE FIELD IDCFOP TABLE DEVOLUCAO
' Identificação do Código do CFOP';

DESCRIBE FIELD IDCLIENTE TABLE DEVOLUCAO
' Idenficação do Código do Cliente';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE DEVOLUCAO
' Identificação do Código da Condição de Pagamento';

DESCRIBE FIELD IDFORMAPAGTO TABLE DEVOLUCAO
' Identificação do Código da Forma de Pagamento';

DESCRIBE FIELD IDREPRESENTANTE TABLE DEVOLUCAO
' Identificação do Código do Representante';

DESCRIBE FIELD IDCENTROCUSTO TABLE DEVOLUCAO
' Identificação do Código do Centro de Custo';

DESCRIBE FIELD NOTAFISCAL TABLE DEVOLUCAO
' Número da Nota Fiscal';

DESCRIBE FIELD DATANOTAFISCAL TABLE DEVOLUCAO
' Data da Nota Fiscal';

DESCRIBE FIELD TOTALCUSTO TABLE DEVOLUCAO
' Valor Total de Custos';

DESCRIBE FIELD TOTALPRODUTO TABLE DEVOLUCAO
' Valor Total de Produtos';

DESCRIBE FIELD TOTALDESCONTO TABLE DEVOLUCAO
' Valor Total de Descontos';

DESCRIBE FIELD TOTALPEDIDO TABLE DEVOLUCAO
' Valor Total do Pedido';

DESCRIBE FIELD PARCELA TABLE DEVOLUCAO
' Quantidade de Parcela';

DESCRIBE FIELD TOTALCOMISSAO TABLE DEVOLUCAO
' Valor Total de Comissão';

DESCRIBE FIELD IDTABELAPRECO TABLE DEVOLUCAO
' Identificação do Código da Tabela de Preço';

DESCRIBE FIELD TAXADESCONTO TABLE DEVOLUCAO
' Valor da taxa de desconto';

DESCRIBE FIELD IDPEDIDOPALM TABLE DEVOLUCAO
' Identificação do Código do Pedido do Palm';

DESCRIBE FIELD IDCOBRANCA TABLE DEVOLUCAO
' Identificação do Código do Cobrança';

DESCRIBE FIELD IDROMANEIO TABLE DEVOLUCAO
' Identificação do Código do Romaneio';

DESCRIBE FIELD IDFILIAL TABLE DIVISAO_FORNECEDOR
' Identificação do Código da Filial';

DESCRIBE FIELD IDDIVISAO TABLE DIVISAO_FORNECEDOR
' Identificação do Código da Divisão';

DESCRIBE FIELD DESCRICAO TABLE DIVISAO_FORNECEDOR
' Descrição da Divisão';

DESCRIBE FIELD EXCLUIDO TABLE DIVISAO_FORNECEDOR
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE DIVISAO_FORNECEDOR
' Código do Usuário';

DESCRIBE FIELD IDNOTA TABLE ENTRADA
' Identificação do Código da Nota Fiscal';

DESCRIBE FIELD IDFILIAL TABLE ENTRADA
' Identificação da Filial';

DESCRIBE FIELD IDCFOP TABLE ENTRADA
' Identificação do Código do CFOP';

DESCRIBE FIELD IDFORNECEDOR TABLE ENTRADA
' Identificação do Código do Fornecedor';

DESCRIBE FIELD IDFORMAPAGTO TABLE ENTRADA
' Identificação do Código da Forma de Pagamento';

DESCRIBE FIELD IDCENTROCUSTO TABLE ENTRADA
' Identificação do Código do Centro de Custo';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE ENTRADA
' Identificação do Código da Condição de Pagamento';

DESCRIBE FIELD DATAENTRADA TABLE ENTRADA
' Data da Entrada';

DESCRIBE FIELD DATANOTAFISCAL TABLE ENTRADA
' Data da Nota Fiscal';

DESCRIBE FIELD PRAZOPAGAMENTO TABLE ENTRADA
' Prazo de Pagamentos';

DESCRIBE FIELD TOTALPRODUTO TABLE ENTRADA
'Valor Total de Produtos';

DESCRIBE FIELD TOTALIPI TABLE ENTRADA
' Valor Total de IPI';

DESCRIBE FIELD TOTALFRETE TABLE ENTRADA
' Valor Total de Frete';

DESCRIBE FIELD TOTALDESCONTO TABLE ENTRADA
' Valor Total de Descontos';

DESCRIBE FIELD TOTALOUTROS TABLE ENTRADA
' Valor de Outros';

DESCRIBE FIELD TOTALLIQUIDO TABLE ENTRADA
' Valor Total Líquido';

DESCRIBE FIELD BONIFICACAO TABLE ENTRADA
' Bonificação (S)Sim/(N)Não';

DESCRIBE FIELD PARCELAS TABLE ENTRADA
' Quantidade de Parcelas';

DESCRIBE FIELD TOTALDESPESA_VARIAVEL TABLE ENTRADA
'Total Despesa Variavel';

DESCRIBE FIELD IDFILIAL TABLE ENT_MATERIA_PRIMA
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE ENT_MATERIA_PRIMA
' Identificação do Código de Controle';

DESCRIBE FIELD IDNOTA TABLE ENT_MATERIA_PRIMA
' Identificação do Código da Nota Fiscal';

DESCRIBE FIELD DTENTRADA TABLE ENT_MATERIA_PRIMA
' Data de Entrada';

DESCRIBE FIELD IDFILIAL TABLE ESTOQUE_FISICO
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE ESTOQUE_FISICO
' Identificação do Código do Controle';

DESCRIBE FIELD IDPRODUTO TABLE ESTOQUE_FISICO
' Identificação do Código do Produto';

DESCRIBE FIELD DTMOVTO TABLE ESTOQUE_FISICO
' Data do Movimento';

DESCRIBE FIELD HISTORICO TABLE ESTOQUE_FISICO
' Histórico Sobre o Estoque Físico';

DESCRIBE FIELD SITUACAO TABLE ESTOQUE_FISICO
' Situação (+)Entrada/(-)Saída';

DESCRIBE FIELD QTDE TABLE ESTOQUE_FISICO
' Quantidade de estoque';

DESCRIBE FIELD SALDO TABLE ESTOQUE_FISICO
' Valor do Saldo';

DESCRIBE FIELD IDFERIADOS TABLE FERIADOS
' Identificação do Código de Feriados';

DESCRIBE FIELD IDFILIAL TABLE FILIAL
' Identificação da Filial';

DESCRIBE FIELD RAZAO TABLE FILIAL
' Nome da Razão Social';

DESCRIBE FIELD ENDERECO TABLE FILIAL
' Endereço Completo da Filial';

DESCRIBE FIELD BAIRRO TABLE FILIAL
' Nome do Bairro';

DESCRIBE FIELD CEP TABLE FILIAL
' Código de Endereço Postal';

DESCRIBE FIELD CIDADE TABLE FILIAL
' Nome da Cidade';

DESCRIBE FIELD UF TABLE FILIAL
' Sigla do Estado';

DESCRIBE FIELD CNPJ TABLE FILIAL
' Número do Cadastro Nacional de Pessoa Jurídica';

DESCRIBE FIELD INSESTADUAL TABLE FILIAL
' Número de Inscrição Estadual';

DESCRIBE FIELD INSMUNICIPAL TABLE FILIAL
' Número de Inscrição Municipal';

DESCRIBE FIELD FONE TABLE FILIAL
' Número de Telefone pra Contato';

DESCRIBE FIELD FAX TABLE FILIAL
' Número de Telefone Fax';

DESCRIBE FIELD EMAIL TABLE FILIAL
' Enderço Eletrônico';

DESCRIBE FIELD IDGRUPO TABLE FILIAL
' Identificação do Código do Grupo';

DESCRIBE FIELD IDCIDADE TABLE FILIAL
' Identificação do Código da Cidade';

DESCRIBE FIELD IDREGIAO TABLE FILIAL
' Identificação do Código da Região';

DESCRIBE FIELD IDREPRESENTANTE TABLE FILIAL
' Identificação do Código do Representante';

DESCRIBE FIELD IDFORNECEDOR TABLE FILIAL
' Identificação do Código do Fornecedor';

DESCRIBE FIELD IDATIVIDADE TABLE FILIAL
' Identificação do Código da Atividade';

DESCRIBE FIELD IDFORMAPAGTO TABLE FILIAL
' Identificação do Código da Forma de Pagamento';

DESCRIBE FIELD IDCFOP TABLE FILIAL
' Identificação do Código do CFOP';

DESCRIBE FIELD IDCLIENTE TABLE FILIAL
' Identificação do Código do Cliente';

DESCRIBE FIELD IDTRIBUTO TABLE FILIAL
' Identificação do Código do Tributo';

DESCRIBE FIELD IDPRODUTO TABLE FILIAL
' Identificação do Código do Produto';

DESCRIBE FIELD IDHISTORICO TABLE FILIAL
' Identificação do Código do Histórico';

DESCRIBE FIELD IDCENTROCUSTO TABLE FILIAL
' Identificação do Código do Centro de Custo';

DESCRIBE FIELD IDCAIXA TABLE FILIAL
'  Identificação do Código de Caixa';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE FILIAL
' Identificação do Código da Condição de Pagamento';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE FILIAL
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD IDNOTAFISCAL TABLE FILIAL
' Identificação do Código da Nota Fiscal';

DESCRIBE FIELD QTDEITENSNOTAFISCAL TABLE FILIAL
' Quantidade de Itens na Nota Fiscal';

DESCRIBE FIELD IDCFOPPEDIDO TABLE FILIAL
' Identificação do Código de CFOP do Pedido';

DESCRIBE FIELD IDCENTROCUSTOPEDIDO TABLE FILIAL
' Identificação do Código do Centro de Custo';

DESCRIBE FIELD IDCFOPDEVOLUCAO TABLE FILIAL
' Identificação do Código de CFOP de Devolução';

DESCRIBE FIELD IDCARTEIRA TABLE FILIAL
' Identificação do Código de Carteira';

DESCRIBE FIELD IDAJUST_VENDA TABLE FILIAL
' Identificação do Código de Ajuste de Venda';

DESCRIBE FIELD IDPEDIDO TABLE FILIAL
' Identificação do Código do Pedido';

DESCRIBE FIELD IDCONVENIO TABLE FILIAL
' Identificação do Código do Convênio';

DESCRIBE FIELD IDCATEGORIA TABLE FILIAL
' Identificação do Código da Categoria';

DESCRIBE FIELD IDCOBRANCA TABLE FILIAL
' Identificação do Código de Cobrança';

DESCRIBE FIELD IDFUNCIONARIO TABLE FILIAL
' Identificação do Código do Funcionário';

DESCRIBE FIELD IDTABELAPRECO_SAOBENTO TABLE FILIAL
'Identificação do Código da Tabela de Preço';

DESCRIBE FIELD IDUNIDADEMEDIDA_SAOBENTO TABLE FILIAL
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD IDUNIDADEMEDIDA_BALCAO TABLE FILIAL
' Identificação do Código da Unidade de Medida do Balcão';

DESCRIBE FIELD IDTABELAPRECO_BALCAO TABLE FILIAL
' Identificação do Código da Tabela de Preço do Balcão';

DESCRIBE FIELD IDCLIENTE_BALCAO TABLE FILIAL
' Identificação do Código do Cliente do Balcão';

DESCRIBE FIELD IDMATERIA_PRIMA TABLE FILIAL
' Identificação do Código da Matéria Prima';

DESCRIBE FIELD IDRECEITA TABLE FILIAL
' Identificação do Código da Receita';

DESCRIBE FIELD EXCLUIDO TABLE FILIAL
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD IDDEPOSITO TABLE FILIAL
' Identificação do código do depósito';

DESCRIBE FIELD IDFOLHA TABLE FILIAL
' Identificação do Código da Folha';

DESCRIBE FIELD IDFILIAL TABLE FORMAPAGTO
' Identificação da Filial';

DESCRIBE FIELD IDFORMAPAGTO TABLE FORMAPAGTO
' Identificação do Código da Forma de Pagamento';

DESCRIBE FIELD DESCRICAO TABLE FORMAPAGTO
' Descrição da Forma de Pagamento';

DESCRIBE FIELD COBRANCA TABLE FORMAPAGTO
' Cobrança (S)Sim/(N)Não';

DESCRIBE FIELD EXCLUIDO TABLE FORMAPAGTO
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE FORMAPAGTO
' Código do Usuário';

DESCRIBE FIELD TEF TABLE FORMAPAGTO
' Transferência Eletrônica de Fundos (S)Sim/(N)Não';

DESCRIBE FIELD IDFILIAL TABLE FORNECEDOR
' Identificação da Filial';

DESCRIBE FIELD IDFORNECEDOR TABLE FORNECEDOR
' Identificação do Código do Fornecedor';

DESCRIBE FIELD NOME TABLE FORNECEDOR
' Nome do Fornecedor';

DESCRIBE FIELD FANTASIA TABLE FORNECEDOR
' Nome Fantasia do Fornecedor';

DESCRIBE FIELD ENDERECO TABLE FORNECEDOR
' Endereço do Fornecedor';

DESCRIBE FIELD BAIRRO TABLE FORNECEDOR
' Nome do Bairro';

DESCRIBE FIELD IDCIDADE TABLE FORNECEDOR
' Identificação do Código da Cidade';

DESCRIBE FIELD CEP TABLE FORNECEDOR
' Código de Endereço Postal';

DESCRIBE FIELD CNPJ TABLE FORNECEDOR
' Número do Cadastro Nacional de Pessoa Física';

DESCRIBE FIELD INSESTADUAL TABLE FORNECEDOR
' Número de Inscrição Estadual';

DESCRIBE FIELD FONE TABLE FORNECEDOR
' Número de telefone de Contato';

DESCRIBE FIELD FAX TABLE FORNECEDOR
' Número de Telefone Fax';

DESCRIBE FIELD CPF TABLE FORNECEDOR
' Número do Cadastro de Pessoa Física';

DESCRIBE FIELD RG TABLE FORNECEDOR
' Número do Registro Geral (Identidade)';

DESCRIBE FIELD EMAIL TABLE FORNECEDOR
' Endereço Eletrônico';

DESCRIBE FIELD TIPOFORNECEDOR TABLE FORNECEDOR
' Tipo de Fornecedor (R)Revenda/(C)Consumo';

DESCRIBE FIELD DTCADASTRO TABLE FORNECEDOR
' Data debug Cadastro';

DESCRIBE FIELD OBSERVACAO TABLE FORNECEDOR
' Descrição da Observação';

DESCRIBE FIELD REPRESENTANTE TABLE FORNECEDOR
' Nome do Representante';

DESCRIBE FIELD FONEREPRESENTANTE TABLE FORNECEDOR
' Fone do Representante';

DESCRIBE FIELD EXCLUIDO TABLE FORNECEDOR
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE FORNECEDOR
' Código do Usuário';

DESCRIBE FIELD IDDIVISAO TABLE FORNECEDOR
' Identificação do Código da Divisão';

DESCRIBE FIELD IDEQUIPE TABLE FORNECEDOR
' Identificação do Código de Equipe';

DESCRIBE FIELD IDFILIAL TABLE FORNECEDOR_PRODUTO
' Identificação da Filial';

DESCRIBE FIELD IDFORNECEDOR TABLE FORNECEDOR_PRODUTO
' Identificação do Código do Fornecedor';

DESCRIBE FIELD IDPRODUTO TABLE FORNECEDOR_PRODUTO
' Identificação do Código do Produto';

DESCRIBE FIELD CUSTO TABLE FORNECEDOR_PRODUTO
' Valor de Custo';

DESCRIBE FIELD PRECOVENDA TABLE FORNECEDOR_PRODUTO
' Preço de Venda';

DESCRIBE FIELD IDFILIAL TABLE FUNCIONARIO
' Identificação da Filial';

DESCRIBE FIELD IDFUNCIONARIO TABLE FUNCIONARIO
' Identificação do Código do Funcionário';

DESCRIBE FIELD NOME TABLE FUNCIONARIO
' Nome do Funcionário';

DESCRIBE FIELD ENDERECO TABLE FUNCIONARIO
' Endereço Completo do Funcionário';

DESCRIBE FIELD BAIRRO TABLE FUNCIONARIO
' Nome do Bairro';

DESCRIBE FIELD IDCIDADE TABLE FUNCIONARIO
' Identificação do Código da Cidade';

DESCRIBE FIELD CEP TABLE FUNCIONARIO
' Código de Endereço Postal';

DESCRIBE FIELD FONE TABLE FUNCIONARIO
' Número de Telefone de Contato';

DESCRIBE FIELD CELULAR TABLE FUNCIONARIO
' Número de Telefone Celular';

DESCRIBE FIELD EMAIL TABLE FUNCIONARIO
' Endereço Eletrônico';

DESCRIBE FIELD CPF TABLE FUNCIONARIO
' Número do Cadastro de Pessoa Física';

DESCRIBE FIELD RG TABLE FUNCIONARIO
' Número do Registro Geral (Identidade)';

DESCRIBE FIELD IDREPRESENTANTE TABLE FUNCIONARIO
' Identificação do Código do Representante';

DESCRIBE FIELD DTADIMISSAO TABLE FUNCIONARIO
' Data de Admissão';

DESCRIBE FIELD SITUACAO TABLE FUNCIONARIO
' Situação (A)Ativo/(I)Inativo';

DESCRIBE FIELD EXCLUIDO TABLE FUNCIONARIO
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE FUNCIONARIO
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE GRUPO
' Identificação da Filial';

DESCRIBE FIELD IDGRUPO TABLE GRUPO
' Identificação do Código do Grupo';

DESCRIBE FIELD NOME TABLE GRUPO
' Nome do Grupo';

DESCRIBE FIELD SITUACAO TABLE GRUPO
' Situação (A)Ativo/(I)Inativo';

DESCRIBE FIELD EXCLUIDO TABLE GRUPO
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE GRUPO
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE HISTORICO
' Identificação da Filial';

DESCRIBE FIELD IDHISTORICO TABLE HISTORICO
' Identificação do Código do Histórico';

DESCRIBE FIELD HISTORICO TABLE HISTORICO
' Descrição do Histórico';

DESCRIBE FIELD EXCLUIDO TABLE HISTORICO
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE HISTORICO
' Código do Usuário';

DESCRIBE FIELD IDFILIAL TABLE INVENTARIO
' Identificação da Filial';

DESCRIBE FIELD IDPRODUTO TABLE INVENTARIO
' Identificação do Código do Produto';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE INVENTARIO
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD QTDE TABLE INVENTARIO
' Quantidade de Produtos do Iventário';

DESCRIBE FIELD IDFILIAL TABLE ITENSCARGA
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE ITENSCARGA
' Identificação do Código do Controle';

DESCRIBE FIELD IDROMANEIO TABLE ITENSCARGA
' Identificação do Código do Romaneio';

DESCRIBE FIELD IDFILIAL TABLE ITENSDEPOSITO
' Identificação da Filial';

DESCRIBE FIELD IDDEPOSITO TABLE ITENSDEPOSITO
' Identificação do Código do Depósito';

DESCRIBE FIELD IDPRODUTO TABLE ITENSDEPOSITO
' Identificação do Código do Produto';

DESCRIBE FIELD QTDE_ATUAL TABLE ITENSDEPOSITO
' Quantidade Atual';

DESCRIBE FIELD IDFILIAL TABLE ITENSDEVOLUCAO
' Identificação da Filial';

DESCRIBE FIELD IDPEDIDO TABLE ITENSDEVOLUCAO
' Identificação do Código do Pedido';

DESCRIBE FIELD IDFOLHA TABLE ITENSDEVOLUCAO
' Identificação do Código da Folha';

DESCRIBE FIELD IDPRODUTO TABLE ITENSDEVOLUCAO
' Identificação do Código do Produto';

DESCRIBE FIELD CUSTONOTA TABLE ITENSDEVOLUCAO
' Valor do Custo de Nota';

DESCRIBE FIELD CUSTOTRIBUTADO TABLE ITENSDEVOLUCAO
' Valor do Custo Tributado';

DESCRIBE FIELD CUSTOENCARGOS TABLE ITENSDEVOLUCAO
' Valor do Custo de Encargos';

DESCRIBE FIELD PRECOTABELA TABLE ITENSDEVOLUCAO
' Valor do Preço de Tabela';

DESCRIBE FIELD TAXADESCONTO TABLE ITENSDEVOLUCAO
' Taxa de Descontos';

DESCRIBE FIELD PRECOVENDA TABLE ITENSDEVOLUCAO
' Valor do Preço de Venda';

DESCRIBE FIELD QTDEPEDIDO TABLE ITENSDEVOLUCAO
' Quantidade de Pedido';

DESCRIBE FIELD TAXACOMISSAO TABLE ITENSDEVOLUCAO
' Taxa de Comissão';

DESCRIBE FIELD FATORCONVERSAO TABLE ITENSDEVOLUCAO
' Transformar e quantidade numérica';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE ITENSDEVOLUCAO
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD IDCARTEIRA TABLE ITENSDEVOLUCAO
' Identificação do Código da Carteira';

DESCRIBE FIELD TROCA TABLE ITENSDEVOLUCAO
' Troca (S)Sim/(N)Não';

DESCRIBE FIELD IDFILIAL TABLE ITENSENTRADA
' Identificação da Filial';

DESCRIBE FIELD IDFORNECEDOR TABLE ITENSENTRADA
' Identificação do Código do Fornecedor';

DESCRIBE FIELD IDNOTA TABLE ITENSENTRADA
' Identificação do Código da Nota';

DESCRIBE FIELD IDPRODUTO TABLE ITENSENTRADA
' Identificação do Código do Produto';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE ITENSENTRADA
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD IDTRIBUTO TABLE ITENSENTRADA
' Identificação do Código do Tributo';

DESCRIBE FIELD CUSTONOTA TABLE ITENSENTRADA
' Valor do Custo de Nota';

DESCRIBE FIELD CUSTOTRIBUTOS TABLE ITENSENTRADA
' Valor do Custo de Tributos';

DESCRIBE FIELD CUSTOSENCARGOS TABLE ITENSENTRADA
' Valor do Custos de Encargos';

DESCRIBE FIELD PRECOVENDA TABLE ITENSENTRADA
' Valor do Preço de Venda';

DESCRIBE FIELD CUSTONOTAUNIT TABLE ITENSENTRADA
' Valor do Custo de Nota Unitário';

DESCRIBE FIELD CUSTOTRIBUTOSUNIT TABLE ITENSENTRADA
' Valor do Custo de Tributo Unitário';

DESCRIBE FIELD CUSTOSENCARGOSUNIT TABLE ITENSENTRADA
' Valor do Custo de Encargos Unitário';

DESCRIBE FIELD PRECOVENDAUNIT TABLE ITENSENTRADA
' Valor de Preço de Venda Unitário';

DESCRIBE FIELD TAXAIPI TABLE ITENSENTRADA
' Taxa do Imposto de Produtos Industrializados';

DESCRIBE FIELD TAXAFRETE TABLE ITENSENTRADA
' Valor da Taxa de Frete';

DESCRIBE FIELD TAXAICMSCOMPRA TABLE ITENSENTRADA
' Valor da Taxa de ICMS de Compra';

DESCRIBE FIELD TAXAICMSANTECIPADO TABLE ITENSENTRADA
' Valor da Taxa de ICMS Antecipado';

DESCRIBE FIELD TAXAIMPFEDERAL TABLE ITENSENTRADA
' Valor da Taxa de Imposto Federal';

DESCRIBE FIELD TAXAFINANCEIRA TABLE ITENSENTRADA
' Valor da Taxa Financeira';

DESCRIBE FIELD TAXAREMARCACAO TABLE ITENSENTRADA
' Valor da Taxa de Remarcação';

DESCRIBE FIELD TAXALUCRO TABLE ITENSENTRADA
' Valor da Taxa de Lucro';

DESCRIBE FIELD TAXACOMISSAO TABLE ITENSENTRADA
' Valor da Taxa de Comissão';

DESCRIBE FIELD QTDECOMPRA TABLE ITENSENTRADA
' Quantidade de Compra';

DESCRIBE FIELD FATORCONVERSAO TABLE ITENSENTRADA
' Transformar em quantidade numérica';

DESCRIBE FIELD CONFIRMAPRECO TABLE ITENSENTRADA
' Confirmarção de Preço (S)Sim/(N)Não';

DESCRIBE FIELD TAXADESPESA TABLE ITENSENTRADA
' Valor da Taxa de Despesas';

DESCRIBE FIELD CUSTOPRODUTO TABLE ITENSENTRADA
' Valor de Custo do Produto';

DESCRIBE FIELD TAXAOUTRAS TABLE ITENSENTRADA
' Valor de Outras Taxas';

DESCRIBE FIELD DTVECIMENTO TABLE ITENSENTRADA
' Data de Vencimento';

DESCRIBE FIELD TAXA_CAPITAL TABLE ITENSENTRADA
' Valor da Taxa Capital';

DESCRIBE FIELD IDDEPOSITO TABLE ITENSENTRADA
' Identificação do Código do Depósito';

DESCRIBE FIELD IDFILIAL TABLE ITENSNOTA
' Identificação da Filial';

DESCRIBE FIELD IDNOTA TABLE ITENSNOTA
' Identificação do Código da Nota';

DESCRIBE FIELD IDPEDIDO TABLE ITENSNOTA
' Identificação do Código do Pedido';

DESCRIBE FIELD IDFOLHA TABLE ITENSNOTA
' Identificação do Código da Folha';

DESCRIBE FIELD IDPRODUTO TABLE ITENSNOTA
' Identificação do Código do Produto';

DESCRIBE FIELD CUSTONOTA TABLE ITENSNOTA
' Valor do Custo de Nota';

DESCRIBE FIELD CUSTOTRIBUTADO TABLE ITENSNOTA
' Valor do Custo Tributado';

DESCRIBE FIELD CUSTOENCARGOS TABLE ITENSNOTA
' Valor do Custo de Encargos';

DESCRIBE FIELD PRECOTABELA TABLE ITENSNOTA
' Valor do Preço de Tabela';

DESCRIBE FIELD TAXADESCONTO TABLE ITENSNOTA
' Valor da Taxa de Descontos';

DESCRIBE FIELD PRECOVENDA TABLE ITENSNOTA
' Valor do Preço de Venda';

DESCRIBE FIELD QTDEPEDIDO TABLE ITENSNOTA
' Quantidade de Pedido';

DESCRIBE FIELD TAXACOMISSAO TABLE ITENSNOTA
' Valor da Taxa de Comissão';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE ITENSNOTA
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD FATORCONVERSAO TABLE ITENSNOTA
' Transformar em quantidade numérica';

DESCRIBE FIELD TROCA TABLE ITENSNOTA
' Troca (S)Sim/(N)Não';

DESCRIBE FIELD IDFILIAL TABLE ITENSPARAMETRO
' Identificação da Filial';

DESCRIBE FIELD IDDESCRICAO TABLE ITENSPARAMETRO
' Identificação do Código da Descrição';

DESCRIBE FIELD IDFILIAL TABLE ITENSPEDIDO
' Identificação do Código da Filial';

DESCRIBE FIELD IDPEDIDO TABLE ITENSPEDIDO
' Identificação do Código do Pedido';

DESCRIBE FIELD IDFOLHA TABLE ITENSPEDIDO
' Identificação do Código da Folha';

DESCRIBE FIELD IDPRODUTO TABLE ITENSPEDIDO
' Identificação do Código do Produto';

DESCRIBE FIELD CUSTONOTA TABLE ITENSPEDIDO
' Valor do Custo de Nota';

DESCRIBE FIELD CUSTOTRIBUTADO TABLE ITENSPEDIDO
' Valor do Custo Tributado';

DESCRIBE FIELD CUSTOENCARGOS TABLE ITENSPEDIDO
' Valor do Custo de Encargos';

DESCRIBE FIELD PRECOTABELA TABLE ITENSPEDIDO
' Valor do Preço de Tabela';

DESCRIBE FIELD TAXADESCONTO TABLE ITENSPEDIDO
' Valor da Taxa de Descontos';

DESCRIBE FIELD PRECOVENDA TABLE ITENSPEDIDO
' Valor do Preço de Venda';

DESCRIBE FIELD QTDEPEDIDO TABLE ITENSPEDIDO
' Quantidade de Pedido';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE ITENSPEDIDO
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD TAXACOMISSAO TABLE ITENSPEDIDO
' Valor da Taxa de Comissão';

DESCRIBE FIELD FATORCONVERSAO TABLE ITENSPEDIDO
' Transformar em quantidade numérica';

DESCRIBE FIELD IDCARTEIRA TABLE ITENSPEDIDO
' Identificação do Código da Carteira';

DESCRIBE FIELD IDPEDIDOPALM TABLE ITENSPEDIDO
' Identificação do Código do Pedido Palm';

DESCRIBE FIELD IDREPRESENTANTE TABLE ITENSPEDIDO
' Identificação do Código do Represetante';

DESCRIBE FIELD DTIMPORT TABLE ITENSPEDIDO
' Data da Importação';

DESCRIBE FIELD TROCA TABLE ITENSPEDIDO
' Troca (S)Sim/(N)Não';

DESCRIBE FIELD IDDEPOSITO TABLE ITENSPEDIDO
' Identificação do Código do Depósito';

DESCRIBE FIELD SITUACAO_ESTOQUE TABLE ITENSPEDIDO
'Situacao Estoque PALM';

DESCRIBE FIELD SITUACAO_DESCONTO TABLE ITENSPEDIDO
'Situacao Desconto PALM';

DESCRIBE FIELD IDFILIAL TABLE ITENSPEDIDOPALM
' Identificação da Filial';

DESCRIBE FIELD IDREPRESENTANTE TABLE ITENSPEDIDOPALM
' Identificação do Código do Representante';

DESCRIBE FIELD IDPEDIDOPALM TABLE ITENSPEDIDOPALM
' Identificação do Código do Pedido';

DESCRIBE FIELD IDPEDIDO TABLE ITENSPEDIDOPALM
' Identificação do Código do Pedido';

DESCRIBE FIELD UNIDADEMEDIDA TABLE ITENSPEDIDOPALM
' Unidade de Medida';

DESCRIBE FIELD QTDEPEDIDO TABLE ITENSPEDIDOPALM
' Quantidade de Pedido';

DESCRIBE FIELD VALORUNITARIO TABLE ITENSPEDIDOPALM
' Preço do Valor Unitário';

DESCRIBE FIELD DESCONTO TABLE ITENSPEDIDOPALM
' Valor de Desconto';

DESCRIBE FIELD VALORUNITARIOTABELA TABLE ITENSPEDIDOPALM
' Valor Unitário de Tabela';

DESCRIBE FIELD IDPRODUTO TABLE ITENSPEDIDOPALM
' Identificação do Código do Produto';

DESCRIBE FIELD IDFILIAL TABLE ITENSPENDENTE
' Identificação da Filial';

DESCRIBE FIELD IDPEDIDO TABLE ITENSPENDENTE
' Identificação do Código do Pedido';

DESCRIBE FIELD IDFOLHA TABLE ITENSPENDENTE
' Identificaçao do Código da Folha';

DESCRIBE FIELD IDPRODUTO TABLE ITENSPENDENTE
' Identificação do Código do Produto';

DESCRIBE FIELD CUSTONOTA TABLE ITENSPENDENTE
' Valor do Custo de Nota';

DESCRIBE FIELD CUSTOTRIBUTADO TABLE ITENSPENDENTE
' Valor do Custo Tributado';

DESCRIBE FIELD CUSTOENCARGOS TABLE ITENSPENDENTE
' Valor do Custo de Encargos';

DESCRIBE FIELD PRECOTABELA TABLE ITENSPENDENTE
' Valor de Preço de Tabela';

DESCRIBE FIELD TAXADESCONTO TABLE ITENSPENDENTE
' Valor da Taxa de Descontos';

DESCRIBE FIELD PRECOVENDA TABLE ITENSPENDENTE
' Valor do Preço de Venda';

DESCRIBE FIELD QTDEPEDIDO TABLE ITENSPENDENTE
' Quantidade de pedido';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE ITENSPENDENTE
' Identificação do Código da Unidade de Medida';

DESCRIBE FIELD TAXACOMISSAO TABLE ITENSPENDENTE
' Valor da Taxa de Comissão';

DESCRIBE FIELD FATORCONVERSAO TABLE ITENSPENDENTE
' Transformar em quantidade numérica';

DESCRIBE FIELD IDCARTEIRA TABLE ITENSPENDENTE
' Identificação do Código de Carteira';

DESCRIBE FIELD IDPEDIDOPALM TABLE ITENSPENDENTE
' Identificação do Código do Pedido Palm';

DESCRIBE FIELD IDREPRESENTANTE TABLE ITENSPENDENTE
' Identificação do Código do Representante';

DESCRIBE FIELD DTIMPORT TABLE ITENSPENDENTE
' Data da Importação';

DESCRIBE FIELD TROCA TABLE ITENSPENDENTE
' Troca (S)Sim/(N)Não';

DESCRIBE FIELD IDFILIAL TABLE ITENSPRODUCAO
' Identificação da Filial';

DESCRIBE FIELD IDPRODUCAO TABLE ITENSPRODUCAO
' Identificação do Código de Produção';

DESCRIBE FIELD IDRECEITA TABLE ITENSPRODUCAO
' Identificação do Código de Receita';

DESCRIBE FIELD IDMATERIA_PRIMA TABLE ITENSPRODUCAO
' Identificação do Código de Matéria Prima';

DESCRIBE FIELD QTDE TABLE ITENSPRODUCAO
' Quantidade';

DESCRIBE FIELD CUSTO TABLE ITENSPRODUCAO
' Valor Preço de Custo';

DESCRIBE FIELD IDFILIAL TABLE ITENSRECEITA
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE ITENSRECEITA
' Identificação do Código do Controle';

DESCRIBE FIELD IDMATERIA_PRIMA TABLE ITENSRECEITA
' Identificação do Código da Matéria Prima';

DESCRIBE FIELD QTDE TABLE ITENSRECEITA
' Quantidade';

DESCRIBE FIELD CUSTO TABLE ITENSRECEITA
' Valor de custo';

DESCRIBE FIELD IDFILIAL TABLE ITENSROMANEIO
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE ITENSROMANEIO
' Identificação do Código de Controle';

DESCRIBE FIELD IDPEDIDO TABLE ITENSROMANEIO
' Identificação do Código do Pedido';

DESCRIBE FIELD IDFOLHA TABLE ITENSROMANEIO
' Identificação do Código da Folha';

DESCRIBE FIELD IDFILIAL TABLE ITENSTABELAPRECO
' Identificação da Filial';

DESCRIBE FIELD IDTABELAPRECO TABLE ITENSTABELAPRECO
' Identificação do Código da Tabela de Preço';

DESCRIBE FIELD IDPRODUTO TABLE ITENSTABELAPRECO
' Identificação do Código do Produto';

DESCRIBE FIELD PRECOUNIT TABLE ITENSTABELAPRECO
' Valor do Preço Unitário';

DESCRIBE FIELD QUANTIDADEMAXIMA TABLE ITENSTABELAPRECO
' Quantidade Máxima';

DESCRIBE FIELD TAXADESCONTO TABLE ITENSTABELAPRECO
' Valor da Taxa de Descontos';

DESCRIBE FIELD PRECOVENDA TABLE ITENSTABELAPRECO
'  Valor do Preço de Venda';

DESCRIBE FIELD PRECOTABELA TABLE ITENSTABELAPRECO
' Valor Preço de Tabela';

DESCRIBE FIELD DESCONTOTABELA TABLE ITENSTABELAPRECO
' Valor de Desconto da Tabela';

DESCRIBE FIELD IDFILIAL TABLE ITENSVEICULO
' Identificação da Filial';

DESCRIBE FIELD IDPLACA TABLE ITENSVEICULO
' Identificação do Código da Placa';

DESCRIBE FIELD IDCONTROLE TABLE ITENSVEICULO
' Identificação do Código de Controle';

DESCRIBE FIELD PRECOCUSTO TABLE ITENSVEICULO
' Valor do Preço de Venda';

DESCRIBE FIELD KM_INICIAL TABLE ITENSVEICULO
' Kilometragem Inicial do Veículo';

DESCRIBE FIELD KM_FINAL TABLE ITENSVEICULO
'Kilometragem Final do Veículo';

DESCRIBE FIELD MARCA TABLE ITENSVEICULO
' Marca do Veículo';

DESCRIBE FIELD MODELO TABLE ITENSVEICULO
' Modelo do Veículo';

DESCRIBE FIELD DATACOMPRA TABLE ITENSVEICULO
' Data da Compra';

DESCRIBE FIELD IDFILIAL TABLE ITENS_COBRANCA_CTS_RECEBER
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE ITENS_COBRANCA_CTS_RECEBER
' Identificação do código do controle';

DESCRIBE FIELD IDRECEBER TABLE ITENS_COBRANCA_CTS_RECEBER
' Identificação do código do contas a receber';

DESCRIBE FIELD IDFOLHA TABLE ITENS_COBRANCA_CTS_RECEBER
' Identificação do código da folha';

DESCRIBE FIELD IDORDEM TABLE ITENS_COBRANCA_CTS_RECEBER
' Identificação do código da ordem';

DESCRIBE FIELD NOMECLIENTE TABLE ITENS_COBRANCA_CTS_RECEBER
' Nome do cliente';

DESCRIBE FIELD IDFILIAL TABLE ITENS_ENT_MATERIA_PRIMA
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE ITENS_ENT_MATERIA_PRIMA
' Identificação do Código do Controle';

DESCRIBE FIELD IDMATERIA_PRIMA TABLE ITENS_ENT_MATERIA_PRIMA
' Identificação do Código da Matéria Prima';

DESCRIBE FIELD QTDE TABLE ITENS_ENT_MATERIA_PRIMA
' Quantidade';

DESCRIBE FIELD IDFILIAL TABLE ITENS_EQUIPE
' Identificação da Filial';

DESCRIBE FIELD IDEQUIPE TABLE ITENS_EQUIPE
' Identificação do Código de Equipe';

DESCRIBE FIELD IDREPRESENTANTE TABLE ITENS_EQUIPE
' Identificação do Código do Representante';

DESCRIBE FIELD IDFILIAL TABLE ITENS_LANCHONETE
' Identificação da Filial';

DESCRIBE FIELD IDPEDIDO TABLE ITENS_LANCHONETE
' Identificação do Código do Pedido';

DESCRIBE FIELD IDMESA TABLE ITENS_LANCHONETE
' Identificação do Código da Mesa';

DESCRIBE FIELD IDCONTADOR TABLE ITENS_LANCHONETE
' Identificação de Código do Contador';

DESCRIBE FIELD IDPRODUTO TABLE ITENS_LANCHONETE
' Identificação do Código do Produto';

DESCRIBE FIELD QTDE TABLE ITENS_LANCHONETE
' Quantidade';

DESCRIBE FIELD PRECOVENDA TABLE ITENS_LANCHONETE
' Valor Preço de Venda';

DESCRIBE FIELD IDFILIAL TABLE JUST_VISITA
' Identificação da Filial';

DESCRIBE FIELD IDJUST TABLE JUST_VISITA
'  Identificação do Código da Justificativa de Visita';

DESCRIBE FIELD DESCRICAO TABLE JUST_VISITA
' Descrição da Justificativa de Visita';

DESCRIBE FIELD TIPO TABLE JUST_VISITA
' Tipo de Justificativa';

DESCRIBE FIELD IDFILIAL TABLE LANCHONETE
' Identificação da Filial';

DESCRIBE FIELD IDPEDIDO TABLE LANCHONETE
' Identificação do Código do Pedido';

DESCRIBE FIELD IDMESA TABLE LANCHONETE
' Identificação do Código da Mesa';

DESCRIBE FIELD TOTALPEDIDO TABLE LANCHONETE
' Valor do Total do Pedido';

DESCRIBE FIELD DTPEDIDO TABLE LANCHONETE
' Data do Pedido';

DESCRIBE FIELD IDFORMAPAGTO TABLE LANCHONETE
' Identificação do Código da Forma de Pagamento';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE LANCHONETE
' Identificação do Código da Condição de Pagamento';

DESCRIBE FIELD IDFILIAL TABLE LOTE
' Identificação da Filial';

DESCRIBE FIELD IDLOTE TABLE LOTE
' Identificação do Código do Lote';

DESCRIBE FIELD DTLOTE TABLE LOTE
' Data do Lote';

DESCRIBE FIELD DESCRICAO TABLE LOTE
' Descriçao do Lote';

DESCRIBE FIELD IDFILIAL TABLE MATERIA_PRIMA
' Identificação da Filial';

DESCRIBE FIELD IDMATERIA_PRIMA TABLE MATERIA_PRIMA
' Identificação do Código da Matéria Prima';

DESCRIBE FIELD DESCRICAO TABLE MATERIA_PRIMA
' Descrição da Matéria Prima';

DESCRIBE FIELD CUSTO TABLE MATERIA_PRIMA
' Custo da Matéria Prima';

DESCRIBE FIELD ESTOQUE_ATUAL TABLE MATERIA_PRIMA
' Estoque Atual de Matéria Prima';

DESCRIBE FIELD IDFILIAL TABLE MENSAGEM_PALM
' Identificação da Filial';

DESCRIBE FIELD IDREPRESENTANTE_ORIGEM TABLE MENSAGEM_PALM
' Identificação do Código do Representante de Origem';

DESCRIBE FIELD IDREPRESENTANTE_DESTINO TABLE MENSAGEM_PALM
' Identificação do Código do Representante de Destino';

DESCRIBE FIELD DATA TABLE MENSAGEM_PALM
' Data da mensagem';

DESCRIBE FIELD HORA TABLE MENSAGEM_PALM
' Hora do envio da mensagem';

DESCRIBE FIELD ASSUNTO TABLE MENSAGEM_PALM
' Descrição do assunto da mensagem';

DESCRIBE FIELD MENSAGEM TABLE MENSAGEM_PALM
' Descrição da mensagem';

DESCRIBE FIELD IDFILIAL TABLE MESA
' Identificação da Filial';

DESCRIBE FIELD IDMESA TABLE MESA
' Identificação do Código da Mesa';

DESCRIBE FIELD DESCRICAO TABLE MESA
' Descrição do pedido';

DESCRIBE FIELD TOTALPEDIDO TABLE MESA
' Valor totol do pedido';

DESCRIBE FIELD IDPEDIDO_TMP TABLE MESA
' Identifificação do código do pedido';

DESCRIBE FIELD IDFILIAL TABLE MOVTOCAIXA
' Identificação da Filial';

DESCRIBE FIELD IDMOVTOCAIXA TABLE MOVTOCAIXA
' Identificação do código do Movimento de Caixa';

DESCRIBE FIELD IDCAIXA TABLE MOVTOCAIXA
' Identificação do código de caixa';

DESCRIBE FIELD DESCRICAOHISTORICO TABLE MOVTOCAIXA
' Descrição do histórico';

DESCRIBE FIELD TIPOOPERACAO TABLE MOVTOCAIXA
' Tipo de operação (C)Crédito/(D)Débito';

DESCRIBE FIELD VALORMOVTO TABLE MOVTOCAIXA
' Valor do movimento';

DESCRIBE FIELD DTMOVIMENTO TABLE MOVTOCAIXA
' Data do movimento';

DESCRIBE FIELD DTEMISSAO TABLE MOVTOCAIXA
' Data de emissão';

DESCRIBE FIELD IDCENTROCUSTO TABLE MOVTOCAIXA
' Identificação do código do centro de custo';

DESCRIBE FIELD DOCUMENTO TABLE MOVTOCAIXA
' Descrição do documento';

DESCRIBE FIELD IDPEDIDO TABLE MOVTOCAIXA
' Identificação do código do pedido';

DESCRIBE FIELD IDFILIAL TABLE MOVTOFUNCIONARIO
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE MOVTOFUNCIONARIO
' Identificação do código do controle';

DESCRIBE FIELD IDFUNCIONARIO TABLE MOVTOFUNCIONARIO
' Identificação do código do funcionário';

DESCRIBE FIELD DTMOVIMENTO TABLE MOVTOFUNCIONARIO
' Identificação do código movimento';

DESCRIBE FIELD VALOR TABLE MOVTOFUNCIONARIO
' Valor do movimento';

DESCRIBE FIELD HISTORICO TABLE MOVTOFUNCIONARIO
' Descrição do histórico';

DESCRIBE FIELD TIPOOPERACAO TABLE MOVTOFUNCIONARIO
' Tipo de operação (C)Crédito/(D)Débito';

DESCRIBE FIELD IDHISTORICO TABLE MOVTOFUNCIONARIO
' Identificação do código do histórico';

DESCRIBE FIELD TIPO_OPERACAO TABLE MOVTO_SUPERVISOR
'D=Debito / C=Credito';

DESCRIBE FIELD IDFILIAL TABLE NOTA
' Identificação da Filial';

DESCRIBE FIELD IDNOTA TABLE NOTA
' Identificação do código da nota';

DESCRIBE FIELD IDPEDIDO TABLE NOTA
' Identificação do código do pedido';

DESCRIBE FIELD IDFOLHA TABLE NOTA
' Identificação do código da folha';

DESCRIBE FIELD DATANOTA TABLE NOTA
' Data da nota';

DESCRIBE FIELD DATADIGITACAO TABLE NOTA
' Data de digitação da nota';

DESCRIBE FIELD IDCFOP TABLE NOTA
' Identificação do código do CFOP';

DESCRIBE FIELD IDCLIENTE TABLE NOTA
' Identificação do código da cliente';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE NOTA
' Identificação do código da condição de pagamento';

DESCRIBE FIELD IDFORMAPAGTO TABLE NOTA
' Identificação do código da forma de pagamento';

DESCRIBE FIELD IDREPRESENTANTE TABLE NOTA
' Identificação do código do representante';

DESCRIBE FIELD IDCENTROCUSTO TABLE NOTA
' Identificação do código do centro de custo';

DESCRIBE FIELD TOTALCUSTO TABLE NOTA
' Valor Total de Custo';

DESCRIBE FIELD TOTALPRODUTO TABLE NOTA
' Valor total do produto';

DESCRIBE FIELD TOTALDESCONTO TABLE NOTA
' Valor total de descontos';

DESCRIBE FIELD TOTALPEDIDO TABLE NOTA
' Valor total de pedidos';

DESCRIBE FIELD TOTALCOMISSAO TABLE NOTA
' Valor total de comissões';

DESCRIBE FIELD IDTABELAPRECO TABLE NOTA
' Identificação do código da tabela de preço';

DESCRIBE FIELD SITUACAONOTA TABLE NOTA
' Situação da nota';

DESCRIBE FIELD TAXADESCONTO TABLE NOTA
' Valor da taxa de desconto (%)';

DESCRIBE FIELD ICMS TABLE NOTA
' Valor do ICMS (%)';

DESCRIBE FIELD IDFILIAL TABLE ORDEM
' Identificaçaõ da Filial';

DESCRIBE FIELD IDORDEM TABLE ORDEM
' Identificação do código da ordem';

DESCRIBE FIELD DATAORDEM TABLE ORDEM
' Data da Ordem';

DESCRIBE FIELD IDPLACA TABLE ORDEM
' Identificação do código da placa';

DESCRIBE FIELD KM_SAIDA TABLE ORDEM
' Kilometragem de Saída';

DESCRIBE FIELD KM_CHEGADA TABLE ORDEM
' Kilometragem de chegada';

DESCRIBE FIELD NATURAZA_DA_CARGA TABLE ORDEM
' Natureza da carga';

DESCRIBE FIELD QUANTIDADE TABLE ORDEM
' Quantidade';

DESCRIBE FIELD VALOR_DA_MERCADORIA TABLE ORDEM
' Valor da Mercadoria';

DESCRIBE FIELD FRETE_VALOR TABLE ORDEM
' Valor do Frete';

DESCRIBE FIELD OBSERVACAO TABLE ORDEM
' Descrição da observação';

DESCRIBE FIELD MOTORISTA TABLE ORDEM
' Nome do motorista';

DESCRIBE FIELD IDCLIENTE_ORIGEM TABLE ORDEM
' Identificação do código do cliente de origem';

DESCRIBE FIELD IDCLIENTE_DESTINO TABLE ORDEM
' Identificação do código do cliente de destino';

DESCRIBE FIELD TAXA_COMISSAO TABLE ORDEM
' Taxa de comissão (%)';

DESCRIBE FIELD IDFILIAL TABLE ORDEM_REQUISICAO
' Identificação da Filial';

DESCRIBE FIELD IDORDEM TABLE ORDEM_REQUISICAO
' Identificação do código da ordem';

DESCRIBE FIELD IDREQUISICAO TABLE ORDEM_REQUISICAO
' Identificação do código da requisição';

DESCRIBE FIELD IDSERVICO TABLE ORDEM_REQUISICAO
' Identificação do código do serviço';

DESCRIBE FIELD KM_ABASTECIMENTO TABLE ORDEM_REQUISICAO
' Kilometragem do abastecimento';

DESCRIBE FIELD VALOR_REQUISICAO TABLE ORDEM_REQUISICAO
' Valor da requisição';

DESCRIBE FIELD OBSERVACAO TABLE ORDEM_REQUISICAO
' Descrição da observação';

DESCRIBE FIELD IDFILIAL TABLE PAGAR
' Identificação da Filial';

DESCRIBE FIELD IDFORNECEDOR TABLE PAGAR
' Identificação do código do fornecedor';

DESCRIBE FIELD IDPAGAR TABLE PAGAR
' Identificação do código do contas à pagar';

DESCRIBE FIELD IDORDEM TABLE PAGAR
' Identificação do código da ordem';

DESCRIBE FIELD IDPARCIAL TABLE PAGAR
' Identificação do código de pagamento parcial';

DESCRIBE FIELD DATAEMISSAO TABLE PAGAR
' Data de emissão';

DESCRIBE FIELD DATAVENCIMENTO TABLE PAGAR
' Data de vencimento';

DESCRIBE FIELD DATAPAGAMENTO TABLE PAGAR
' Data de pagamento';

DESCRIBE FIELD VALORDOCUMENTO TABLE PAGAR
' Valor do documento';

DESCRIBE FIELD VALORJUROS TABLE PAGAR
' Valor do juros (quando houver)';

DESCRIBE FIELD VALORPAGAMENTO TABLE PAGAR
' Valor total do pagamento';

DESCRIBE FIELD IDCENTROCUSTO TABLE PAGAR
' Identificação do código do centro de custo';

DESCRIBE FIELD IDMOVTOCAIXA TABLE PAGAR
' Identificação do código do movimento de caixa';

DESCRIBE FIELD COMPLEMENTOHISTORICO TABLE PAGAR
' Descrição de complementos do histórico';

DESCRIBE FIELD IDFORMAPAGTO TABLE PAGAR
' Identificação do código da forma de pagamento';

DESCRIBE FIELD IDCAIXA TABLE PAGAR
' Identificação do código de caixa';

DESCRIBE FIELD IDENTRADA TABLE PAGAR
' Identificação do código de entrada';

DESCRIBE FIELD DOCUMENTO TABLE PAGAR
' Número do documento';

DESCRIBE FIELD IDMOVTOFUNCIONARIO TABLE PAGAR
' Identificação de código do movimento de funcionário';

DESCRIBE FIELD IDFILIAL TABLE PAGTOCLIENTE
' Identificação da Filial';

DESCRIBE FIELD IDCLIENTE TABLE PAGTOCLIENTE
' Identificação do código do cliente';

DESCRIBE FIELD IDFORMAPAGTO TABLE PAGTOCLIENTE
' Identificação do código da forma de pagamento';

DESCRIBE FIELD IDFILIAL TABLE PARAMETRO
' Identificação da Filial';

DESCRIBE FIELD IDDESCRICAO TABLE PARAMETRO
' Identificação do código da descrição';

DESCRIBE FIELD IDFILIAL TABLE PEDIDO
' Identificação da Filial';

DESCRIBE FIELD IDPEDIDO TABLE PEDIDO
' Identificação do código do pedido';

DESCRIBE FIELD IDFOLHA TABLE PEDIDO
' Identificação da folha';

DESCRIBE FIELD IDPEDIDOPALM TABLE PEDIDO
' Identificação de Código do pedido PALM';

DESCRIBE FIELD DATAPEDIDO TABLE PEDIDO
' Data do pedido';

DESCRIBE FIELD DATADIGITACAO TABLE PEDIDO
' Data da digitação';

DESCRIBE FIELD IDCFOP TABLE PEDIDO
' Identificação do Código do CFOP';

DESCRIBE FIELD IDCLIENTE TABLE PEDIDO
' Identificação do código do cliente';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE PEDIDO
' Identificação do código da condição de pagamento';

DESCRIBE FIELD IDFORMAPAGTO TABLE PEDIDO
' Identificação do código da forma de pagamento';

DESCRIBE FIELD IDREPRESENTANTE TABLE PEDIDO
' Identificação da código do representante';

DESCRIBE FIELD IDCENTROCUSTO TABLE PEDIDO
' Identificação do código do centro de custo';

DESCRIBE FIELD NOTAFISCAL TABLE PEDIDO
' Número da Nota Fiscal';

DESCRIBE FIELD DATANOTAFISCAL TABLE PEDIDO
' Data da Nota Fiscal';

DESCRIBE FIELD TOTALCUSTO TABLE PEDIDO
' Valor total de custos';

DESCRIBE FIELD TOTALPRODUTO TABLE PEDIDO
' Valor total do produto';

DESCRIBE FIELD TOTALDESCONTO TABLE PEDIDO
' Valor total de descontos';

DESCRIBE FIELD TOTALPEDIDO TABLE PEDIDO
' Valor total do pedido';

DESCRIBE FIELD PARCELA TABLE PEDIDO
' Número da parcela';

DESCRIBE FIELD TOTALCOMISSAO TABLE PEDIDO
' Valor total de comissão';

DESCRIBE FIELD ENTREGARPEDIDO TABLE PEDIDO
' Entregar pedido (S)Sim/(N)Não';

DESCRIBE FIELD IDTABELAPRECO TABLE PEDIDO
' Identificação do código da tabela de preço';

DESCRIBE FIELD DTIMPORT TABLE PEDIDO
' Data de importação';

DESCRIBE FIELD TAXADESCONTO TABLE PEDIDO
' Taxa de desconto (%)';

DESCRIBE FIELD IDCOBRANCA TABLE PEDIDO
' Identificação do código de cobrança';

DESCRIBE FIELD IDROMANEIO TABLE PEDIDO
' Identificação do código do romaneio';

DESCRIBE FIELD IDPEDIDO_SAOBENTO TABLE PEDIDO
' Identificação do código do pedido';

DESCRIBE FIELD IDFILIAL TABLE PEDIDOPALM
' Identificação da Filial';

DESCRIBE FIELD IDREPRESENTANTE TABLE PEDIDOPALM
' Identificação do código do representante';

DESCRIBE FIELD IDPEDIDOPALM TABLE PEDIDOPALM
' Identificação do código do pedido PALM';

DESCRIBE FIELD IDPEDIDO TABLE PEDIDOPALM
' Identificação do código do pedido';

DESCRIBE FIELD CNPJ TABLE PEDIDOPALM
' Número do Cadastro Nacional de Pessoa Jurídica';

DESCRIBE FIELD IDPEDIDOCLIENTE TABLE PEDIDOPALM
' Identificação do código do cliente';

DESCRIBE FIELD DTEMISSAO TABLE PEDIDOPALM
' Data de emissão';

DESCRIBE FIELD HREMISSAO TABLE PEDIDOPALM
' Hora da emissão';

DESCRIBE FIELD IDFORMAPAGTO TABLE PEDIDOPALM
' Identificação do código da forma de pagamento';

DESCRIBE FIELD NATOPERACAO TABLE PEDIDOPALM
' Natureza da operação';

DESCRIBE FIELD SITPEDIDO TABLE PEDIDOPALM
' Situação do pedido';

DESCRIBE FIELD IDPORTADOR TABLE PEDIDOPALM
' Identificação do código do portador';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE PEDIDOPALM
' Identificação do código da condição de pagamento';

DESCRIBE FIELD IDTRANSPORTADORA TABLE PEDIDOPALM
' Identificação do código da transportadora';

DESCRIBE FIELD DTENTREGA TABLE PEDIDOPALM
' Data da entrega';

DESCRIBE FIELD IDTABELAPRECO TABLE PEDIDOPALM
' Identificação do código da tabela de preço';

DESCRIBE FIELD IDFILIAL TABLE PENDENTE
' Identificação da Filial';

DESCRIBE FIELD IDPEDIDO TABLE PENDENTE
' Identificação do código do pedido';

DESCRIBE FIELD IDFOLHA TABLE PENDENTE
' Identificação do código da folha';

DESCRIBE FIELD DATAPEDIDO TABLE PENDENTE
' Data do pedido';

DESCRIBE FIELD DATADIGITACAO TABLE PENDENTE
' Data da digitação';

DESCRIBE FIELD IDCFOP TABLE PENDENTE
' Identificação do código do CFOP';

DESCRIBE FIELD IDCLIENTE TABLE PENDENTE
' Identificação do código do cliente';

DESCRIBE FIELD IDCONDICAOPAGTO TABLE PENDENTE
' Identificação do código da condição do pagamento';

DESCRIBE FIELD IDFORMAPAGTO TABLE PENDENTE
' Identificação do código da forma de pagamento';

DESCRIBE FIELD IDREPRESENTANTE TABLE PENDENTE
' Identificação do código do representante';

DESCRIBE FIELD IDCENTROCUSTO TABLE PENDENTE
' Identificação do código do centro de custo';

DESCRIBE FIELD NOTAFISCAL TABLE PENDENTE
' Número database Nota Fiscal';

DESCRIBE FIELD DATANOTAFISCAL TABLE PENDENTE
' Data da Nota Fiscal';

DESCRIBE FIELD TOTALCUSTO TABLE PENDENTE
' Valor total de custo';

DESCRIBE FIELD TOTALPRODUTO TABLE PENDENTE
' Valor total de produto';

DESCRIBE FIELD TOTALDESCONTO TABLE PENDENTE
' Valor total de descontos';

DESCRIBE FIELD TOTALPEDIDO TABLE PENDENTE
' Valor total de pedido';

DESCRIBE FIELD PARCELA TABLE PENDENTE
' Número de parcela';

DESCRIBE FIELD TOTALCOMISSAO TABLE PENDENTE
' Valor total de comissão';

DESCRIBE FIELD ENTREGARPEDIDO TABLE PENDENTE
' Entregar pedido (S)Sim/(N)Não';

DESCRIBE FIELD IDTABELAPRECO TABLE PENDENTE
' Identificação do código da tabela de preço';

DESCRIBE FIELD IDPEDIDOPALM TABLE PENDENTE
' Identificação do código do pedido PALM';

DESCRIBE FIELD DTIMPORT TABLE PENDENTE
' Data da Importação';

DESCRIBE FIELD TAXADESCONTO TABLE PENDENTE
' Taxa de desconto (%)';

DESCRIBE FIELD IDCOBRANCA TABLE PENDENTE
' Identificação do código de cobrança';

DESCRIBE FIELD IDROMANEIO TABLE PENDENTE
' Identificação do código do romaneio';

DESCRIBE FIELD IDPEDIDO_SAOBENTO TABLE PENDENTE
' Identificação do código do pedido';

DESCRIBE FIELD IDPROCEDIMENTO TABLE PERMISSOES
' Identificação do código de procedimento';

DESCRIBE FIELD DESCRICAO TABLE PERMISSOES
' Descriçao do procedimento';

DESCRIBE FIELD IDUSUARIO TABLE PERMISSOES
' Identificação do código do usuário';

DESCRIBE FIELD IDPROCEDIMENTO TABLE PROCEDIMENTO
' Identificação do código do procedimento';

DESCRIBE FIELD DESCRICAO TABLE PROCEDIMENTO
' Descrição do procedimento';

DESCRIBE FIELD IDFILIAL TABLE PRODUCAO
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE PRODUCAO
' Identificação do código de controle';

DESCRIBE FIELD DATA TABLE PRODUCAO
' Data do controle';

DESCRIBE FIELD IDRECEITA TABLE PRODUCAO
' Identificação do código da receita';

DESCRIBE FIELD IDPRODUTO TABLE PRODUCAO
' Identificação do código do produto';

DESCRIBE FIELD IDFILIAL TABLE PRODUTO
' Identificação da Filial';

DESCRIBE FIELD IDPRODUTO TABLE PRODUTO
' Identificação do código do produto';

DESCRIBE FIELD ESPECIFICACAO TABLE PRODUTO
' Descrição específica do produto';

DESCRIBE FIELD FATORCONVERSAO TABLE PRODUTO
' Transformar em quantidade numérica';

DESCRIBE FIELD IDGRUPO TABLE PRODUTO
' Identificação do código do produto';

DESCRIBE FIELD IDTRIBUTO TABLE PRODUTO
' Identificação do código do tributo';

DESCRIBE FIELD CUSTONOTA TABLE PRODUTO
' Valor do custo de nota';

DESCRIBE FIELD CUSTOTRIBUTOS TABLE PRODUTO
' Valor do custo de tributos';

DESCRIBE FIELD CUSTOSENCARGOS TABLE PRODUTO
' Valor do custos de encargos';

DESCRIBE FIELD PRECOVENDA TABLE PRODUTO
' Valor de preço de venda';

DESCRIBE FIELD TAXAIPI TABLE PRODUTO
' Valor da taxa do Imposto de Produtos Industrializados';

DESCRIBE FIELD TAXAFRETE TABLE PRODUTO
' Valor da taxa de frete';

DESCRIBE FIELD TAXAICMSCOMPRA TABLE PRODUTO
' Valor da taxa do ICMS de compra';

DESCRIBE FIELD TAXAICMSANTECIPADO TABLE PRODUTO
' Valor da taxa do ICMS antecipado';

DESCRIBE FIELD TAXAIMPFEDERAL TABLE PRODUTO
' Valor da taxa do Imposto Federal';

DESCRIBE FIELD TAXAFINANCEIRA TABLE PRODUTO
' Valor da taxa financeira';

DESCRIBE FIELD TAXAREMARCACAO TABLE PRODUTO
' Valor da taxa de remarcação';

DESCRIBE FIELD TAXALUCRO TABLE PRODUTO
' Valor da taxa de lucro';

DESCRIBE FIELD TAXACOMISSAO TABLE PRODUTO
' Valor da taxa de comissão';

DESCRIBE FIELD COMISSAOBALCAO TABLE PRODUTO
' Comissão do balcão';

DESCRIBE FIELD COMISSAOPRACA TABLE PRODUTO
' Comissão da praça';

DESCRIBE FIELD COMISSAOINTERIOR TABLE PRODUTO
' Comissão do interior';

DESCRIBE FIELD TAXAREPRESENTANTE TABLE PRODUTO
' Valor da taxa do representante';

DESCRIBE FIELD PESO TABLE PRODUTO
' Peso do produto';

DESCRIBE FIELD QTDEMINIMA TABLE PRODUTO
' Quantidade mínima de produto';

DESCRIBE FIELD QTDEMAXIMA TABLE PRODUTO
' Quantidade máxima de produto';

DESCRIBE FIELD QTDEATUAL TABLE PRODUTO
' Quantidade atual';

DESCRIBE FIELD DTREMARCACAO TABLE PRODUTO
' Data de remarcação';

DESCRIBE FIELD TAXADESPESA TABLE PRODUTO
' Taxa de despesa';

DESCRIBE FIELD EMBALAGEM TABLE PRODUTO
' Quantidade e tipo de embalagem';

DESCRIBE FIELD IDFORNECEDOR TABLE PRODUTO
' Identificação do código do fornecedor';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE PRODUTO
' Identificação do código de unidade de medida';

DESCRIBE FIELD CUSTONOTAUNIT TABLE PRODUTO
' Valor de custo de Nota por unidade';

DESCRIBE FIELD CUSTOTRIBUTOSUNIT TABLE PRODUTO
' Valor do custo de tributo por unidade';

DESCRIBE FIELD CUSTOSENCARGOSUNIT TABLE PRODUTO
' Valor de custo de encargos por unidade';

DESCRIBE FIELD PRECOVENDAUNIT TABLE PRODUTO
' Preço de venda por unidade';

DESCRIBE FIELD IDTRIBUTOCOMPRA TABLE PRODUTO
' Identificação do código do tributo de compra';

DESCRIBE FIELD TAXAOUTROS TABLE PRODUTO
' Valor da taxa de outros';

DESCRIBE FIELD DTINVENTARIO TABLE PRODUTO
' Data de inventário';

DESCRIBE FIELD DESCONTOMAXIMO TABLE PRODUTO
' Valor de desconto máximo';

DESCRIBE FIELD SAIR_TB_PRECO TABLE PRODUTO
' Sair tabela de preço (S)Sim/(N)Não';

DESCRIBE FIELD EXCLUIDO TABLE PRODUTO
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE PRODUTO
' Código do usuário';

DESCRIBE FIELD CODIGO_BARRA TABLE PRODUTO
' Número do código de barra';

DESCRIBE FIELD IDSUB_GRUPO TABLE PRODUTO
' Identificação de código do sub-grupo';

DESCRIBE FIELD DP_ALTURA TABLE PRODUTO
'Dimenssões Produto Altura';

DESCRIBE FIELD DP_LARGURA TABLE PRODUTO
'Dimenssões Produto Largura';

DESCRIBE FIELD DP_COMPRIMENTO TABLE PRODUTO
'Dimenssões Produto Comprimento';

DESCRIBE FIELD IDFILIAL TABLE RECEBER
' Identificação da Filial';

DESCRIBE FIELD IDRECEBER TABLE RECEBER
' Identificação do código do contas à receber';

DESCRIBE FIELD IDFOLHA TABLE RECEBER
' Identificação do código da folha';

DESCRIBE FIELD IDORDEM TABLE RECEBER
' Identificação do código da ordem';

DESCRIBE FIELD IDPARCIAL TABLE RECEBER
' Identificação do código de recebimento parcial';

DESCRIBE FIELD IDCENTROCUSTO TABLE RECEBER
' Identificação do código do centro de custo';

DESCRIBE FIELD IDREPRESENTANTE TABLE RECEBER
' Identificação do código do representante';

DESCRIBE FIELD IDCLIENTE TABLE RECEBER
' Identificação do código do cliente';

DESCRIBE FIELD IDFORMAPAGTO TABLE RECEBER
' Identificação do código da forma de pagamento';

DESCRIBE FIELD IDCOBRANCA TABLE RECEBER
' Identificação do código da cobrança';

DESCRIBE FIELD DOCUMENTO TABLE RECEBER
' Número do documento';

DESCRIBE FIELD DATAEMISSAO TABLE RECEBER
' Data de emissão';

DESCRIBE FIELD DATAVENCIMENTO TABLE RECEBER
' Data de Vencimento';

DESCRIBE FIELD DATAPAGAMENTO TABLE RECEBER
' Data de pagamento';

DESCRIBE FIELD VALORDOCUMENTO TABLE RECEBER
' Valor do documento';

DESCRIBE FIELD VALORJUROS TABLE RECEBER
' Valor de juros (quando houver)';

DESCRIBE FIELD VALORPAGAMENTO TABLE RECEBER
' Valor de pagamento';

DESCRIBE FIELD IDMOVTOCAIXA TABLE RECEBER
' Identificação do código de movimento de caixa';

DESCRIBE FIELD HISTORICO TABLE RECEBER
' Descrição do histórico';

DESCRIBE FIELD IDCAIXA TABLE RECEBER
' Identificação do código de caixa';

DESCRIBE FIELD TAXACOMISSAO TABLE RECEBER
' Valor da taxa de comissão';

DESCRIBE FIELD IDROMANEIO TABLE RECEBER
' Identificação do código do romaneio';

DESCRIBE FIELD DTDIGITACAO TABLE RECEBER
' Data de digitação';

DESCRIBE FIELD MANDAR_BOLETO TABLE RECEBER
' Mandar boleto (S)Sim/(N)Não';

DESCRIBE FIELD IDFILIAL TABLE RECEITA
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE RECEITA
' Identificação do código de controle';

DESCRIBE FIELD DESCRICAO TABLE RECEITA
' Descrição da receita';

DESCRIBE FIELD CUSTO TABLE RECEITA
' Valor do custo';

DESCRIBE FIELD DTCADASTRO TABLE RECEITA
' Data de cadastro';

DESCRIBE FIELD IDFILIAL TABLE REGIAO
' Identificação da Filial';

DESCRIBE FIELD IDREGIAO TABLE REGIAO
' Identificação do código da região';

DESCRIBE FIELD NOME TABLE REGIAO
' Nome da região';

DESCRIBE FIELD TAXAFRETE TABLE REGIAO
' Valor da taxa de frete';

DESCRIBE FIELD TIPOREGIAO TABLE REGIAO
' Tipo de região';

DESCRIBE FIELD EXCLUIDO TABLE REGIAO
'Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE REGIAO
' código do usuário';

DESCRIBE FIELD IDFILIAL TABLE REPCLIENTE
' Identificação da Filial';

DESCRIBE FIELD IDCLIENTE TABLE REPCLIENTE
' Identificação do Código do Cliente';

DESCRIBE FIELD IDREPRESENTANTE TABLE REPCLIENTE
' Identificação do Código do Representante';

DESCRIBE FIELD IDFILIAL TABLE REPRESENTANTE
' Identificação da Filial';

DESCRIBE FIELD IDREPRESENTANTE TABLE REPRESENTANTE
' Identificação do código do representante';

DESCRIBE FIELD NOME TABLE REPRESENTANTE
' Nome do representante';

DESCRIBE FIELD ENDERECO TABLE REPRESENTANTE
' Endereço completo';

DESCRIBE FIELD BAIRRO TABLE REPRESENTANTE
' Nome do bairro';

DESCRIBE FIELD IDCIDADE TABLE REPRESENTANTE
' Identificação do código da cidade';

DESCRIBE FIELD CEP TABLE REPRESENTANTE
' Código de Endereço Postal';

DESCRIBE FIELD FONE TABLE REPRESENTANTE
' Número telefone';

DESCRIBE FIELD EMAIL TABLE REPRESENTANTE
' Endereço eletrônico';

DESCRIBE FIELD CPF TABLE REPRESENTANTE
' Número do Cadastro Pessoa Física';

DESCRIBE FIELD RG TABLE REPRESENTANTE
' Número do Registro Geral (Identidade)';

DESCRIBE FIELD CELULAR TABLE REPRESENTANTE
' Número de celular';

DESCRIBE FIELD IDCOBRANCA TABLE REPRESENTANTE
' Identificação do código de cobrança';

DESCRIBE FIELD COTAS TABLE REPRESENTANTE
' Cotas por representante';

DESCRIBE FIELD SEXO TABLE REPRESENTANTE
' Sexo (M)Masculino/(F)Feminino';

DESCRIBE FIELD DTNASCIMENTO TABLE REPRESENTANTE
' Data de nascimento';

DESCRIBE FIELD EXCLUIDO TABLE REPRESENTANTE
'Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE REPRESENTANTE
' Código do usuário';

DESCRIBE FIELD CPF_SUPERVISOR TABLE REPRESENTANTE
' Número do Cadastro de Pessoa Física do supervisor';

DESCRIBE FIELD IDFILIAL TABLE REPRESENTANTE_ROMANEIO
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE REPRESENTANTE_ROMANEIO
' Identificação do código do controle';

DESCRIBE FIELD IDREPRESENTANTE TABLE REPRESENTANTE_ROMANEIO
' Identificação do código do representante';

DESCRIBE FIELD IDFILIAL TABLE RESERVA_CONTROLE
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE RESERVA_CONTROLE
' Identificação do Código do Controle';

DESCRIBE FIELD IDPEDIDO TABLE RESERVA_IDPEDIDO
' Identificação do código do pedido';

DESCRIBE FIELD IDFILIAL TABLE RESERVA_IDPEDIDO
' Identificação da Filial';

DESCRIBE FIELD TIPO TABLE RESERVA_IDPEDIDO
'null = PEDIDO VENDA
# = COTACAO PRODUTO
* = ENTRADA PRODUTO
V = VENDA BALCAO
E = ENTRADA DE MATERIA PRIMA
R = RECEITA
C = ROMANEIO DE CARGA';

DESCRIBE FIELD IDFILIAL TABLE ROMANEIO
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE ROMANEIO
' Identificação do código do controle';

DESCRIBE FIELD DATAROMANEIO TABLE ROMANEIO
' Data do romaneio';

DESCRIBE FIELD DTINI TABLE ROMANEIO
' Data inicial';

DESCRIBE FIELD DTFIM TABLE ROMANEIO
' Data final';

DESCRIBE FIELD IDCOBRANCA TABLE ROMANEIO
' Identificação do código de cobrança';

DESCRIBE FIELD OBSERVACAO TABLE ROMANEIO
' Descrição da observação';

DESCRIBE FIELD IDFILIAL TABLE SANGRIA_SUPRIMENTO
' Identificação da Filial';

DESCRIBE FIELD IDCONTROLE TABLE SANGRIA_SUPRIMENTO
' Identificação do código do controle';

DESCRIBE FIELD VALOR TABLE SANGRIA_SUPRIMENTO
' Valor';

DESCRIBE FIELD IDREPRESENTANTE TABLE SANGRIA_SUPRIMENTO
'  Identificação do código do representante';

DESCRIBE FIELD NOMEREPRESENTANTE TABLE SANGRIA_SUPRIMENTO
' Nome do representante';

DESCRIBE FIELD DTPEDIDO TABLE SANGRIA_SUPRIMENTO
' Identificação do código do pedido';

DESCRIBE FIELD IDFILIAL TABLE SEQUENCIA_VISITA
' Identificação da Filial';

DESCRIBE FIELD IDREPRESENTANTE TABLE SEQUENCIA_VISITA
' Identificação do código do representante';

DESCRIBE FIELD IDCLIENTE TABLE SEQUENCIA_VISITA
' Identificação do código do cliente';

DESCRIBE FIELD IDFILIAL TABLE SUB_ATIVIDADE
' Identificação da Filial';

DESCRIBE FIELD IDSUB_ATIVIDADE TABLE SUB_ATIVIDADE
' Identificação do código do sub-atividade';

DESCRIBE FIELD IDATIVIDADE TABLE SUB_ATIVIDADE
' Identificação do código da atividade';

DESCRIBE FIELD DESCRICAO TABLE SUB_ATIVIDADE
' Descrição da sub-atvidade';

DESCRIBE FIELD USUARIO TABLE SUB_ATIVIDADE
' Código do usuário';

DESCRIBE FIELD IDFILIAL TABLE SUB_GRUPO
' Identificação da Filial';

DESCRIBE FIELD IDSUB_GRUPO TABLE SUB_GRUPO
' Identificação do código do sub-grupo';

DESCRIBE FIELD DESCRICAO TABLE SUB_GRUPO
' Descrição do sub-grupo';

DESCRIBE FIELD IDGRUPO TABLE SUB_GRUPO
' Identificação do código do grupo';

DESCRIBE FIELD USUARIO TABLE SUB_GRUPO
' Código do usuário';

DESCRIBE FIELD IDFILIAL TABLE TABELAPRECO
' Identificação da Filial';

DESCRIBE FIELD IDTABELAPRECO TABLE TABELAPRECO
' Identificação do código da tabela de preço';

DESCRIBE FIELD DESCRICAO TABLE TABELAPRECO
' Descrição da tabela de preço';

DESCRIBE FIELD ABREVIATURA TABLE TABELAPRECO
' Abreveatura da tabela de preço';

DESCRIBE FIELD CLIENTEESPECIAL TABLE TABELAPRECO
' Cliente especial (S)Sim/(N)Não';

DESCRIBE FIELD EXCLUIDO TABLE TABELAPRECO
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE TABELAPRECO
' Código do usuário';

DESCRIBE FIELD TABELA_ESPECIAL TABLE TABELAPRECO
' Tabela especial(S)Sim/(N)Não';

DESCRIBE FIELD IDGRUPO TABLE TABELA_AUXILIAR
' Identificação do código do grupo';

DESCRIBE FIELD IDFILIAL TABLE TIPO_SERVICO
' Identificação da Filial';

DESCRIBE FIELD IDTIPO TABLE TIPO_SERVICO
' Identificação do código do tipo de serviço';

DESCRIBE FIELD DESCRICAO TABLE TIPO_SERVICO
' Descrição do serviço';

DESCRIBE FIELD IDCATEGORIA_SERVICO TABLE TIPO_SERVICO
' Identificação do código da categoria de serviço';

DESCRIBE FIELD IDFILIAL TABLE TRIBUTO
' Identificação da Filial';

DESCRIBE FIELD IDTRIBUTO TABLE TRIBUTO
' Identificação do código do truibuto';

DESCRIBE FIELD DESCRICAO TABLE TRIBUTO
' Descrição da Filial';

DESCRIBE FIELD TAXAICMS TABLE TRIBUTO
' Taxa de ICMS';

DESCRIBE FIELD CLFISCAL TABLE TRIBUTO
' Classificação Fiscal';

DESCRIBE FIELD ALIQUOTANOTA TABLE TRIBUTO
' Alíquota da Nota';

DESCRIBE FIELD INSENTIVOFISCAL TABLE TRIBUTO
' Insentivo Fiscal';

DESCRIBE FIELD EXCLUIDO TABLE TRIBUTO
' Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE TRIBUTO
' Código do usuário';

DESCRIBE FIELD MENSAGEM_NOTA TABLE TRIBUTO
' Mensagem da Nota';

DESCRIBE FIELD IDFILIAL TABLE UNIDADEMEDIDA
' Identificação da Filial';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE UNIDADEMEDIDA
' Identificação do código da unidade de medida';

DESCRIBE FIELD DESCRICAO TABLE UNIDADEMEDIDA
' Descrição da unidade de medida';

DESCRIBE FIELD FATORCONVERSAO TABLE UNIDADEMEDIDA
' Transformar em quantidade númerica';

DESCRIBE FIELD EXCLUIDO TABLE UNIDADEMEDIDA
'  Campo que oculta o registro em todo o sistema (E)Excluido/(Null)Ativo';

DESCRIBE FIELD USUARIO TABLE UNIDADEMEDIDA
' Código do usuário';

DESCRIBE FIELD IDFILIAL TABLE UNIDADEPRODUTO
' Identificação da Filial';

DESCRIBE FIELD IDPRODUTO TABLE UNIDADEPRODUTO
' Identificação do código do produto';

DESCRIBE FIELD IDUNIDADEMEDIDA TABLE UNIDADEPRODUTO
' Identificação do código da unidade de medida';

DESCRIBE FIELD IDFILIAL TABLE USUARIO
' Identificação da Filial';

DESCRIBE FIELD IDUSUARIO TABLE USUARIO
' Identificação do código do usuário';

DESCRIBE FIELD NOME TABLE USUARIO
' Nome do usuário';

DESCRIBE FIELD SENHA TABLE USUARIO
' Senha do usuário';

DESCRIBE FIELD IDREPRESENTANTE TABLE USUARIO
' Identificação do código do representante';

DESCRIBE FIELD IDFILIAL TABLE VEICULO
' Identificação da Filial';

DESCRIBE FIELD IDPLACA TABLE VEICULO
' Identificação do código da placa';

DESCRIBE FIELD DESCRICAO TABLE VEICULO
' Descrição do veículo';

DESCRIBE FIELD COR TABLE VEICULO
' Cor do veículo';

DESCRIBE FIELD MODELO TABLE VEICULO
' Modelo do veículo';

DESCRIBE FIELD ANO TABLE VEICULO
' Ano do veículo';

DESCRIBE FIELD QTDE_PNEU_RODANDO TABLE VEICULO
' Quantidade de pneus rodando';

DESCRIBE FIELD VALORSEGURO TABLE VEICULO
' Valor do seguro';

DESCRIBE FIELD VALOR_DEPRICIACAO TABLE VEICULO
' Valor de Depreciação';

DESCRIBE FIELD NITRAGEM_BAU TABLE VEICULO
' Nitragem do Baú';

DESCRIBE FIELD NITRAGEM_TOTAL TABLE VEICULO
' Nitragem total';

DESCRIBE FIELD QTDE_ESTEPE TABLE VEICULO
' Quantidade de estepe';

