Qlik Sense e Qlik View
Calculo de fluxo de caixa
Cenario
Calculo de fluxo de caixa em uma aplicação que possui contas a receber, contas a pagar e conciliação bancária.
Necessidade, não alterar o modelo de dados atual nem incluir na tabela fato o valor do saldo.
Tabela envolvida – Conciliação bancaria
A tabela de conciliação bancária possui diversas informações as quais não deverão ser modificadas, porém surge a necessidade , no meio do projeto de informar o saldo bancário, para as diversas contas contábeis, registro por registro.
Solução
Incluir uma nova tabela, que será vinculada à tabela de conciliação bancária onde será informado o Identificador da conciliação bancária e o saldo por conciliação.
Como existem diversa contas contábeis e a ocorrência pode ser na mesma data será definido no SQL a chave primária da conciliação bancária o número da linha na querie ( fazendo assim um registro único),
Na segunda tabela ([SALDO BANCÁRIO]), a qual conterá a chave da conciliação e apenas o valor do saldo bancário, deverá inicialmente informar o saldo inicial, na ocorrência do primeiro registro do banco ( conta contábil), e posteriormente o “RANGESUM” do valor com a soma do saldo da linha anterior
Código de criação da conciliação bancária:
–TABELA DA CONCILIAÇÃO BANCARIA
NoConcatenate
[CONCILIACAO]:LOAD *;
SQL Select ROW_NUMBER() over (order by cob_num_transacao) as PKConciliacao ,
PKPagar = case cob_origem_transacao when ‘2’ then concat(convert(varchar,COB_CHAVE1_ORIGEM_TRANSACAO), ‘|’, convert(varchar,COB_CHAVE2_ORIGEM_TRANSACAO)) end,
PKReceber = case cob_origem_transacao when ‘3’ then concat(convert(varchar,COB_CHAVE1_ORIGEM_TRANSACAO), ‘|’, convert(varchar,COB_CHAVE2_ORIGEM_TRANSACAO)) end,
‘CONCILIACAO’ AS [TIPO CONTA],
COB_DATA_TRANSACAO as DATA,
Cob_Empresa AS PKEmpresa,
Cob_Filial AS PKFilial,
Cob_Num_Caixa_Banco as PKBanco,
COB_DATA_TRANSACAO as [CONCILIACAO.Data Transacao],
COB_DATA_DIGITACAO as [CONCILIACAO.Data Inclusao],
PKCredorCliente = concat(Cob_Tipo_Credor , ‘|’, convert(varchar(10),Cob_Cod_Credor)) ,
COB_NUM_DOCUMENTO as [CONCILIACAO.Documento],
COB_NUM_FORMA_PGTO_REC,
COB_VALOR_TRANSACAO as [CONCILIACAO.Valor],
COB_HISTORICO_TRANSACAO as [Historico Transacao],
COB_CONCILIADO,
Cob_Cod_Contabil AS PKClassificacaoContabil,
COB_Tipo_Documento as PKTipoDocumentoReceber,
COB_Tipo_Documento AS PKTipoDocumentoPagar,
Cob_Forma_Pgto_Rec AS PKFormaPagamento,
COB_CHAVE1_ORIGEM_TRANSACAO AS PKDocumento
From Tab_Conciliacao_Bancaria;
— TABELA CONTENDO A CHAVE DA CONCILIACAO E O SALDO POR REGISTRO
[SALDO BANCÁRIO]:NoConcatenate
LOAD Distinct PKConciliacao,
RANGESUM( if(PKBanco <> Previous(PKBanco), [CONCILIACAO.Valor],
IF( PKBanco = Previous(PKBanco),
RANGESUM([CONCILIACAO.Valor], Peek(SALDO))
)
)
)AS SALDO
Resident CONCILIACAO ;