[firebase-br] Procedure linha de saldo do caixa por dia

Alexandre Mello alexandre.rmello em gmail.com
Sex Jan 30 11:06:31 -03 2009


eu fiz uma procedure que faz isso... está um pouco bagunçada, pois
estou fazendo algumas alteracoes nela e ainda preciso terminá-la. Mas
ela calcula o saldo de cada linha, com base na data e na hora do
lançamento.
segue abaixo:

CREATE OR ALTER PROCEDURE EXTRATO (
    dt1 timestamp,
    saidaanterior numeric(9,0),
    entradaanterior numeric(9,0))
returns (
    saldo numeric(18,2))
as
declare variable saldo_ant_credito numeric(18,2);
declare variable saldo_ant_debito numeric(18,2);
declare variable saida numeric(18,2);
declare variable entrada numeric(18,2);
declare variable dt2 timestamp;
begin

  select
    first 1
    livro_caixa.DATA
  from
    livro_caixa
  where
    livro_CAIXA.DATA<:DT1
  order by
    livro_caixa.DATA desc into :dt2;

  select
    sum(livro_CAIXA.SAIDA)
  from
    livro_CAIXA
  where livro_caixa.data < :dt1
  into :SALDO_ANT_DEBITO;

  select
    sum(livro_CAIXA.ENTRADA)
    from
      livro_CAIXA
    where
      livro_CAIXA.DATA<:DT1
    into :SALDO_ANT_CREDITO;

  if (:SALDO_ANT_CREDITO is null) then SALDO_ANT_CREDITO = 0.00;
  if (:SALDO_ANT_DEBITO is null) then SALDO_ANT_DEBITO = 0.00;

  SALDO = (saldo_ant_credito - saldo_ant_debito);
  SUSPEND;

  for
    select
      livro_CAIXA.ENTRADA,
      livro_CAIXA.SAIDA
    from
      livro_CAIXA
    where
      (livro_CAIXA.DATA between :DT1 and :DT2)
    order by
      livro_CAIXA.DATA
    into :ENTRADA, :SAIDA
  do begin
      saldo = saldo + ENTRADA - SAIDA - saidaanterior + entradaanterior;
      SUSPEND;
  END
END




Mais detalhes sobre a lista de discussão lista