13 Replies Latest reply: Sep 15, 2012 8:37 AM by Thiago das Chagas cunha RSS

    Problemas ao criar tabela de fluxo de caixa

      Estou precisando criar em uma tabela de fluxo de caixa um saldo retroativo. Preciso expor isso em uma tabela:

       

      Tb_Saldo
      Data Vencimento Fluxo11/09/201212/09/201213/09/2012
      CategoriaSaldo AcumuladoSaldo AcumuladoSaldo Acumulado
      a10,0010,000,00120,000,00100,00
      b100,00110,0030,00150,0050,00150,00
      c 150,00260,0040,00190,0030,00180,00
      d 50,00310,0010,00200,0020,00200,00
      e120,00430,0050,00250,0030,00230,00
      f20,00450,00-50,00200,0020,00250,00
      g-10,00440,0020,00220,0050,00300,00

       

      O que estou precisando é que o Saldo Inicial de "a" seja o valor acumulado de "g" do dia anterior.

      Ao recarregar a app é carregado o Saldo do primeiro dia que ai no caso é o dia 11/09/2012, mas não funciona para os demais dias

       

      -Estou fazendo o seguinte tratamento para a coluna Saldo:

       

      if(OPERACAO = 'SALDO' and date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') = today('DD/MM/YYYY'), SUM(VALOR_SALDO),

          if(OPERACAO = 'SALDO'  and date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') > today('DD/MM/YYYY') ,Bottom([acumulado]),//if(OPERACAO = 'SALDO' ,Bottom(Before(VALOR_SALDO)),//ABOVE(SUM(VALOR_SALDO)),

              if(OPERACAO = 'RECEBIMENTO', SUM(VALOR_SALDO),

                  IF(OPERACAO = 'PAGAMENTO', SUM(VALOR_SALDO),//*-1,       

       

                     

                  )

              )

          )

       

      -Estou fazendo o seguinte tratamento para a coluna Acumulado:

       

      =RangeSum(Above(Total Sum(VALOR_SALDO),0,RowNo()))

        • Re: Problemas ao criar tabela de fluxo de caixa
          Thiago das Chagas cunha

          Bom Dia Tiago

           

          Então você está usando Today, como hoje é dia 11 vai funcionar, como dia 12 não é hoje não vai funcionar, uma pergunta: O que você quer fazer não é pegar dia anterior e fazer  acumulado?

           

          tenta algo como (DATA_VENCIMENTO_FLUXO)-1  que deve funcionar

           

           

          imagino que esse DATA_VENCIMENTO_FLUXO seja na verdade a data que fechou o caixa correto, então vc tem o dia anterior em cada linha e começa com ele.

            • Re: Problemas ao criar tabela de fluxo de caixa

              Tenho os dados do dia atual, e os lançamentos previstos para datas futuras, para mostrar como meu fluxo de caixa vai estar dia X se continuar como previsto.

               

              Preciso do saldo inicial do dia de amanhã tendo feito todas as movimentações previstas para hoje.

                • Re: Problemas ao criar tabela de fluxo de caixa
                  Thiago das Chagas cunha

                  Entendi

                   

                  então no caso troca para  por DayStart (today,+1)

                   

                  segue exemplo:

                  daystart ( '2006-01-25 16:45' ) retorna '2006-01-25 00:00:00' com um valor numérico subjacente correspondente a '2006-01-25 00:00:00.000'

                  daystart ( '2006-01-25 16:45', -1 ) retorna '2006-01-24 00:00:00' com um valor numérico subjacente correspondente a '2006-01-24 00:00:00.000'

                  daystart ('2006-01-25 16:45', 0, 0.5 ) retorna '2006-01-25 12:00:00' com um valor numérico subjacente correspondente a '2006-01-25 12:00:00.000'

                   

                  O bom de usa-lo que ai você pode colocar o horario que dia realmente começa para você se quiser.

                   

                  Acho que isso resolve seu problema, qq me avise,

                   

                  Sds

                    • Re: Problemas ao criar tabela de fluxo de caixa

                      No caso ai eu precisaria ter o saldo do dia em questão, e do banco só tenho da data atual, eu preciso é pegar a soma da coluna Saldo do dia anterior e e colocar como o valor inicial do dia seguinte.

                       

                      Tb_Saldo
                      Data Vencimento Fluxo11/09/201212/09/201213/09/2012
                      CategoriaSaldo AcumuladoSaldo AcumuladoSaldo Acumulado
                      a0,0010,00450,00120,00650,00100,00
                      b100,00110,0030,00150,0050,00150,00
                      c 150,00260,0040,00190,0030,00180,00
                      d 50,00310,0010,00200,0020,00200,00
                      e120,00430,0050,00250,0030,00230,00
                      f20,00450,0050,00300,0020,00250,00
                      g10,00460,0020,00320,0050,00300,00

                      450,00
                      650,00
                      850,00
                • Re: Problemas ao criar tabela de fluxo de caixa
                  Thiago das Chagas cunha

                  Bem você tem o atual, você teoricamente tem o Anterior....

                   

                  naquele codigo que você fez mesmo

                  /// Aqui você pegou dia anterior  no maximo vai ser "0"

                  if(OPERACAO = 'SALDO' and date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') =< DayStart (today('DD/MM/YYYY'),-1), SUM(VALOR_SALDO),

                  //////////////////////////////////////////////////

                      if(OPERACAO = 'SALDO'  and date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') >DayStart (today('DD/MM/YYYY'),+1)

                  ,Bottom([acumulado]),//if(OPERACAO = 'SALDO' ,Bottom(Before(VALOR_SALDO)),//ABOVE(SUM(VALOR_SALDO)),

                          if(OPERACAO = 'RECEBIMENTO', SUM(VALOR_SALDO),

                              IF(OPERACAO = 'PAGAMENTO', SUM(VALOR_SALDO),//*-1,      

                   

                   

                              )

                          )

                      )

                   

                   

                  Outra coisa que pode te ajudar é SetAnalys

                   

                  tópico como base:

                  http://community.qlik.com/message/254685#254685

                    • Re: Problemas ao criar tabela de fluxo de caixa

                      Acho que não estou conseguindo me explicar. Bora lá, tenho a seguinte tabela:

                       

                      Tb_Saldo
                      Data Vencimento Fluxo11/09/201212/09/201213/09/2012
                      CategoriaSaldo Saldo Saldo
                      a50000,00Saldo Final 11/09/12Saldo Final 12/09/12
                      b100,0030,0050,00
                      c 150,0040,0030,00
                      d 50,0010,0020,00
                      e120,0050,0030,00
                      f20,0050,0020,00
                      g10,0020,0050,00

                      Saldo Final 11/09/12Saldo Final 12/09/12Saldo Final 13/09/12

                       

                      O banco me traz o saldo inicial(valor de "a") do dia atual, o que eu preciso é que o valor total do dia atual seja setado como valor de "a" do dia seguinte,e assim sucessivamente. Não estou conseguindo pegar esse valor total de cada dia para colocar como valor inicial do dia seguinte.

                    • Re: Problemas ao criar tabela de fluxo de caixa
                      Thiago das Chagas cunha

                      Tenta algo parecido com isso:   if (date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') = today('DD/MM/YYYY'), Sum(saldo), saldo)

                       

                      Nesse if ai seria para ver se Data de vencimento é igual a Hoje, você soma o Saldo com que ja teria, se não ele é saldo ( o que provalmente é do dia anterior)

                        • Re: Problemas ao criar tabela de fluxo de caixa

                          Dessa forma ai eu estaria somando as movimentações do dia. Mas ainda não sei como estarei pegando o valor do total do saldo do dia anterior e colocar no inicio das movimentações do proximo dia, tipo:

                           

                          Tb_Saldo
                          Data Vencimento Fluxo11/09/201212/09/201213/09/2012
                          CategoriaSaldo Saldo Saldo
                          a50000,00Saldo Final 11/09/12Saldo Final 12/09/12
                          b100,0030,0050,00
                          c 150,0040,0030,00
                          d 50,0010,0020,00
                          e120,0050,0030,00
                          f20,0050,0020,00
                          g10,0020,0050,00

                          Saldo Final 11/09/12Saldo Final 12/09/12Saldo Final 12/09/12

                           

                          O valor 50000,00 é o saldo inical que o banco me traz que será somado com os demais valores do dia(100,00; 150,00; 50,00; 120,00; 20,00; 10,00), que me resultará no Saldo Final do dia 11/09/12, que será 50450,00.

                          Preciso que esse valor seja setado automaticamente como Saldo de "a" no dia 12/09/12. Não sei como fazer isso. E antes de mais nada obrigado pela força.

                            • Re: Problemas ao criar tabela de fluxo de caixa
                              Thiago das Chagas cunha

                              Uma pergunta: Esse valor vem "nullo" do banco por acaso, no dia 12/09/2012?

                               

                              Se vier quando for carregar o Script tentar usar a função Peek(), ela atumaticamente preenche com valor do campo anterior

                               

                               

                              seria mais ou menos assim:

                               

                               

                              if(Peek(Acumulado) and IsNull(Acumulado), Peek(Acumulado),Acumulado) AS SALDO
                                • Re: Problemas ao criar tabela de fluxo de caixa

                                  Ela vem com o valor '0,00' realmente. Mas infelizmente sempre tento utilizar o peek() no script ele me retorna Expressão Inválida. E ao tentar utilizá-lo no gráfico ele não reconhece... e traz os saldos todos vazios.

                                    • Re: Problemas ao criar tabela de fluxo de caixa
                                      Thiago das Chagas cunha

                                      estranho então isso deve funcionar:

                                       

                                      if(Acumulado ='0,00' or IsNull(Acumulado), Peek(Acumulado),Acumulado) AS SALDO

                                       

                                      vc está colocando ele no extrator?Por que você primeiro extrair da base, colocar em um QVD e em seguida carrega o arquivo certo?

                                       

                                      Por seu tiver com Qvd conectando direto na base de dados e pegando de lá não vai funcionar o Peek. Peek é uma função de Script nao pode ser usado em graficos.

                                       

                                      Até por Boas praticas no Qlikview é recomendado isso, fazer um "extrator" e um "Document"

                                       

                                       

                                      Obs: O peek tem que ser depois do Load assim:

                                       

                                       

                                       

                                      Load

                                                if(ACUMULADO = '0,00', Peek(Acumulado),Acumulado) AS SALDO


                                        • Re: Problemas ao criar tabela de fluxo de caixa

                                          Isso mesmo, foi feito a transformação e estou carregando de um .qvd,

                                          Não sei onde estou errando, mas sempre me retorna Erro na Expressão:

                                           

                                          if(FC_OPERACAO = 'S' and date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') = today('DD/MM/YYYY'), SUM(VALOR_SALDO),

                                              if(FC_OPERACAO = 'S'  and date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') >  today('DD/MM/YYYY'), Bottom(TOTAL),

                                                  if(VALOR_SALDO = '0,00'or IsNull(Acumulado), Peek('VALOR_SALDO',VALOR_SALDO)) AS VALOR_SALDO,

                                            • Re: Problemas ao criar tabela de fluxo de caixa
                                              Thiago das Chagas cunha

                                              Bom Dia

                                               

                                              ('VALOR_SALDO',

                                               

                                              Remover a aspa simples do valor saldo por que ela é um campo caregado do extrator, certo?
                                              e o Peek a "()" ele também esta pegando 2 valores.

                                               

                                               

                                               

                                               

                                              fica assim:

                                              if(FC_OPERACAO = 'S' and date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') = today('DD/MM/YYYY'), SUM(VALOR_SALDO),

                                                  if(FC_OPERACAO = 'S'  and date(DATA_VENCIMENTO_FLUXO,'DD/MM/YYYY') >  today('DD/MM/YYYY'), Bottom(TOTAL),

                                                      if(VALOR_SALDO = '0,00', Peek(VALOR_SALDO),VALOR_SALDO) AS VALOR_SALDO,