[firebase-br] select para controle de caixa

Anderson Miranda Barrozo andersonpaduarj em gmail.com
Seg Jul 19 20:18:46 -03 2010


Boa noite

     Tente adaptar esta SP abaixo:

CREATE PROCEDURE GERA_SALDOCAIXA (
    dataini date,
    datafim date)
returns (
    r_lancamento integer,
    r_data date,
    r_historico varchar(50),
    r_valor double precision,
    r_operacao char(1))
as
declare variable saldo_final double precision = 0.00;
declare variable saldo_ant_debito double precision = 0.00;
declare variable saldo_ant_credito double precision = 0.00;
begin
  /* Calcula o saldo anterior de DEBITOS e CREDITOS */
  SELECT coalesce(sum(tbcontrolecaixa.valormovimento),0) FROM
tbcontrolecaixa WHERE (tbcontrolecaixa.datamovimento < :dataini and
tbcontrolecaixa.operacao='D') into :saldo_ant_debito;
  SELECT coalesce(sum(tbcontrolecaixa.valormovimento),0) FROM
tbcontrolecaixa WHERE (tbcontrolecaixa.datamovimento < :dataini and
tbcontrolecaixa.operacao='C') into :saldo_ant_credito;

  r_data = :dataini - 1;
  r_historico = 'Saldo Anterior';
  r_valor = (saldo_ant_credito - saldo_ant_debito);
  saldo_final = r_valor;

  if (r_valor < 0) then
  begin
    r_operacao = 'D';
    r_valor = r_valor * -1;
  end
  else
  begin
    r_operacao = 'C';
  end

  suspend;

  /* Varre a tabela Caixa e lista todos registro da condição */
  FOR SELECT CX.datamovimento, CX.id_caixa, CX.operacao, CX.historico,
CX.valormovimento FROM tbcontrolecaixa CX
      WHERE (CX.datamovimento between :dataini AND :datafim) order by
CX.id_caixa
      INTO :r_data, :r_lancamento, :r_operacao, :r_historico, :r_valor
  do
  BEGIN
     if (:r_operacao = 'C') then
        begin
          r_historico = :r_historico;
          saldo_final = saldo_final + :r_valor;
          r_valor = :r_valor;
        end
     if (:r_operacao = 'D') then
        begin
          r_historico = :r_historico;
          saldo_final = saldo_final - :r_valor;
          r_valor = :r_valor;
        end
  SUSPEND;
  END

  if (saldo_final < 0) then
  begin
    r_operacao = 'D';
    saldo_final = saldo_final * -1;
  end
  else
  begin
    r_operacao = 'C';
  end

   /* Lista o saldo final */
   r_data = :datafim;
   r_lancamento = null;
   r_operacao = :r_operacao;
   r_historico = 'Saldo Final';
   r_valor = saldo_final;
  suspend;

end

Andersom Miranda

Em 19/07/10, Nivaldo Martins<nivaldomart em gmail.com> escreveu:
> Olá Reijanio
>
> Se o Idcai é chave, retire-o do group by
>
> sds,
>
> Nivaldo Martins
>
> Em 18 de julho de 2010 22:28, Reijanio Nunes Ribeiro
> <rnribeiro em gmail.com>escreveu:
>
>> boa noite a todos estou precisando de uma ajudinha, pois tenho uma tabela
>> de
>> caixa e gostaria da ajuda de vc's para, criar select que façaa soma dos
>> creditos debitos e a subtração dea boms os resultados o metadata da tabela
>> de caia é mais ou menos assim
>> CREATE TABLE CAIXA (
>>    IDCAI     INTEIRO NOT NULL /* INTEIRO = INTEGER */,
>>    DESCCAI   TEXTO /* TEXTO = VARCHAR(100) */,
>>    HISTLANC  TEXTO /* TEXTO = VARCHAR(100) */,
>>    VLRLANC   MOEDA /* MOEDA = NUMERIC(10,2) */,
>>    NUMDOC    VARCHAR(50),
>>    TPLANC    CHAR(1),
>>    IDCON     INTEIRO /* INTEIRO = INTEGER */,
>>    DTLANC    DATE
>> );
>>  tentei assim mais não ficou como pretendo
>>
>> select idcai, desccai, sum(vlrlanc),
>> case
>> tplanc
>> when 'C' then 'credito'
>> when 'D' then 'Debito'
>> end
>> as tipo_de_lancamento
>> from caixa where dtlanc between :d1 and :d2
>> group by idcai, desccai, tplanc
>>
>> se puderem me ajudar ficarei grato
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>


-- 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AS Informática
Anderson Miranda Barrozo
(22) 8115-8761
MSN: andersonpaduarj em hotmail.com




Mais detalhes sobre a lista de discussão lista