15 Replies Latest reply: Jun 10, 2014 5:08 PM by ANDRE TONINI RSS

    Extrato Bancário - Saldo Anterior

    ANDRE TONINI

      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;