Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
andre_tonini
Creator II
Creator II

Extrato Bancário - Saldo Anterior

Olá Pessoal,

        Estou montando uma analise do movimento bancário e precisaria gerar o saldo anterior para que seja possível: saldo anterior + entrada – saída = saldo atual

         Se alguém puder me ajudar desde já agradeço.

Data LançamentoSaldo InicialValor_EntradaValor_SaídaSaldo Final
01/06/20141.000,00

200,00

100,00

1.100,00
04/06/20141.100,000,00100,001.000,00
08/06/20141.000,000,00300,00700,00

O saldo inicial é o saldo final do dia anterior. Mas pode haver intervalos de dadas.
O Valor_Entradas e Valor_Saída já busco do banco de dados.
O Saldo Final é Saldo Inicial + Valor Entrada - Valor Saída.

Tratei o script da seguinte forma.

  // --- Conta Caixa --- //
SQL SELECT
      CD_CONTA,   
      CD_GRUPOCXA,
      NM_CONTA
FROM CONTACXA WHERE CD_GRUPOCXA > '0';

// --- Lançamentos no Caixa --- //
LOAD

*,
YEAR(DT_MOVIMENTO) AS ANO,
MONTH(DT_MOVIMENTO) AS MES,
DAY(DT_MOVIMENTO) AS DIA,
DATE(DT_MOVIMENTO) AS DATA,
WEEK(DT_MOVIMENTO) AS SEMANA,
WEEKDAY(DT_MOVIMENTO) AS DIA_SEMANA;

SELECT
     CD_CONTA,   
     CD_FILIAL,  
     DT_LANCAMENTO,     
     DT_MOVIMENTO,
     FL_CONCILIADO,     
     FL_DC,
     NM_HISTORICO,
     VL_LANCAMENTO,
    
// ENTRADA
    CASE
          WHEN FL_DC = 'D' AND CD_FILIAL = '1'
               THEN (VL_LANCAMENTO)
                  ELSE
                         0
           END
                AS VALOR_ENTRADA,

      // SAIDA
     CASE
          WHEN FL_DC = 'C' AND CD_FILIAL = '1'
              THEN (VL_LANCAMENTO)
                  ELSE
                         0
           END
                AS VALOR_SAIDA,
 
      NR_DOCUMENTO,
      SR_DOCUMENTO,
      TP_LANCAMENTO
FROM FINCXALCT;

MOVIMENTO:          
LOAD
CD_FILIAL,   
CD_CONTA,
DT_MOVIMENTO,
VL_LANCAMENTO,
FL_DC,
rangesum (
  
if (CD_FILIAL = Peek(CD_FILIAL) AND CD_CONTA = PEEK (CD_CONTA),
      
rangesum ((VALOR_SAIDA-VALOR_ENTRADA), PEEK (SALDO)), (VALOR_SAIDA-VALOR_ENTRADA)))

           AS  SALD0_CAIXA
RESIDENT FINCXALCT ORDER BY DT_MOVIMENTO;

15 Replies
MarcoARaymundo
Creator III
Creator III

Script de carga:

SALDO_INICIAL:

LOAD * INLINE [

  CODIGO_CONTA, SALDO_INICIAL

  A, 1000

];

TMP:

LOAD * INLINE [

    DT, CODIGO_FILIAL, CODIGO_CONTA, VALOR_ENTRADA, VALOR_SAIDA

    01/06/2014, 1, A, 100, 50

    01/06/2014, 2, A, 100, 50

    04/06/2014, 1, A, 0, 50

    04/06/2014, 2, A, 0, 50

    08/06/2014, 1, A, 0, 150

    08/06/2014, 2, A, 0, 150

];

Crie um gráfico tipo tabela simples (veja imagem anexa)

Na coluna SD. INICIAL inclua a expressão abaixo:

If(IsNull(Above(Sum(VALOR_ENTRADA - VALOR_SAIDA))),

  SALDO_INICIAL,

  Above([SALDO DIA])

)

Na coluna SALDO DIA inclua a expressão:

Sum(VALOR_ENTRADA - VALOR_SAIDA) +

If(IsNull(Above(Sum(VALOR_ENTRADA - VALOR_SAIDA))),

  SALDO_INICIAL,

  Above([SALDO DIA])

)

andre_tonini
Creator II
Creator II
Author

Rogério,

        Resolvido!!! Cara se você soubesse o que quebrei a cabeça nisso...

Muito obrigado mesmo.

Abraço

rogerioqv
Creator II
Creator II

Precisando estamos por ai....

Grande abraço.

andre_tonini
Creator II
Creator II
Author

Marco, Show!!! Deu certo meu velho...muito obrigado pela atenção.

Abraço

MarcoARaymundo
Creator III
Creator III

Andre sempre de preferência em utilizar as funções do qlikview que não dependam da carga para conseguir o resultado. É muito mais fácil, prático e rápido.

Imagine se sua carga levar mais de 10 minutos para finalizar. Do modo como eu postei, sem dar carga você tem o resultado, e se for necessário alterar como se faz o cálculo é só editar a expressão.

andre_tonini
Creator II
Creator II
Author

Marco, certo entendi...obrigado pela dica, vou tomar esse cuidados.

um abraço