Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Save $600 on Qlik Connect registration! Sign up by Dec. 6 to get an extra $100 off with code CYBERSAVE: REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Conciliación Bancaria y La función P() en el Análisis de Conjuntos.

Recientemente estuve en un proyecto de QlikView para las Conciliaciones Bancarias de una empresa con operación en 5 países. Al principio se planteaba  que todo era sencillo , un par de tablas cargadas al modelo, consolidación de monedas, acceso y seguridad basado en países y números de cuenta etc. Sin embargo poco a poco fueron apareciendo escenarios o casos en los cuales los datos dentro QlikView tendrían que ser manejados y o filtrados de diferentes formas. Uno de estos casos se resolvió utilizando la función P() con el análisis de conjuntos, que es la que les comparto a continuación de forma breve.

ESCENARIO:


              En la conciliación Bancaria, tenemos que calcular el Saldo del dia de ayer, con la siguiente formula :

SUM( [Disponible Actual] )  - SUM ( [Reserva Bancaria] ) - SUM ( [Cheque Circulación] )  , ya colocandole el filtro para el dia de ayer, tenemos:

SUM( {$ < OperacionFecha = {'$(=Date(Fecha-1))'}  >}  [Disponible Actual] )  - SUM ( {$ < OperacionFecha = {'$(=Date(Fecha-1))'}  >} [Reserva Bancaria] ) - SUM (  {$ < OperacionFecha = {'$(=Date(Fecha-1))'}  >}  [Cheque Circulación] ) 

              El problema radica en que las cuentas bancarias asociadas del dia anterior ( o período anterior ) , no necesariamente están presentes en el dia de hoy, es decir, que tuvieron Conciliación Bancaria ayer pero hoy no existe, ya sea porque la haran hasta mañana, o porque esa cuenta ya no tendrá movimientos etc. Tal y como lo muestro en la figura 1.

Screen Shot 2015-05-03 at 13.37.53.png

En la Figura 1, mostramos el problema, ya que la Circulación para cuadrar el dia de hoy que estamos seleccionando hace una resta del  Saldo Disponible de Ayer + Los Ingresos - Los Egresos y a este resultado le resta Lo disponible actual - los cheques en circulación del dia de hoy. El problema nace en el saldo disponible de ayer, ya que la Cuenta 003 como se muestra en la Figura 1 no esta disponible el dia de hoy, por lo tanto no va a cuadrar nuestra circulación.

RESOLUCIÓN:


              Me ha salvado el dia la función P() , ya que lo que necesitaba era que para el Saldo del día de Ayer, NO tomase en cuenta la Cta. 0003 . Entonces hacemos una intersección de los dos conjuntos tal y como se muestra en la figura 2.

Screen Shot 2015-05-03 at 13.52.52.png

Al momento de indicarle a la expresión OperacionFecha = {'$(=Date(Fecha-1))'}, estamos automáticamente posicionándonos en el conjunto de la izquierda, es decir el dia de ayer. Ahora la magia es con la función P(), con la cual tenemos la siguiente expresión:

[Numero Cuenta] = P ( {$ < OperacionFecha = {'$(=Date(Fecha))'} >} )

Lo que está diciendo la instrucción es que los registros que existen con fecha de hoy (o el dia seleccionado en QlikView) sean evaluados para compararlos con la columna [Numero Cuenta] , entonces esta expresión devuelve 'CTA. 001, CTA. 002' automaticamente.

Si le agregamos la siguiente instrucción en la misma expresión, tenemos las operaciones con fecha de ayer a la fecha seleccionada, ya que le restamos 1 a la Fecha.


{$ < OperacionFecha = {'$(=Date(Fecha-1))'}  >}

Nuestra expresión quedaría definida de la siguiente forma:


<  [Numero Cuenta] = P ( {$ < OperacionFecha = {'$(=Date(Fecha))'} >} ) ,  OperacionFecha = {'$(=Date(Fecha-1))'}  >


Lo anterior, resuelve nuestro problema, esto traducido a nuestro lenguaje quiere decir algo así 🙂


"Quiero la lista de los Numeros de Cuenta que tengan registros en el dia de HOY ,  Y (AND) que ademas la fecha de operacion sea del dia de Ayer".


Esto lo tenemos que hacer por cada operación Agregada (SUM en nuestro caso), obviamente podemos colocar esta expresion en una variable y reutilizarla. En Settings->Variable Overview->Add , podemos agregar la variable PDEAYER con el valor siguiente:


{$ <  [Numero Cuenta] = P ( {$ < OperacionFecha = {'$(=Date(Fecha))'} >} ) ,  OperacionFecha = {'$(=Date(Fecha-1))'}  > }


Mi expresión final, para mi Conciliacion Bancaria luce de la siguiente forma , para el Saldo de Ayer:


SIN LA VARIABLE PDEAYER


SUM( {$ <  [Numero Cuenta] = P ( {$ < OperacionFecha = {'$(=Date(Fecha))'} >} ) ,  OperacionFecha = {'$(=Date(Fecha-1))'}  > } [Disponible Actual] )  - SUM ( {$ <  [Numero Cuenta] = P ( {$ < OperacionFecha = {'$(=Date(Fecha))'} >} ) ,  OperacionFecha = {'$(=Date(Fecha-1))'}  > }Reserva Bancaria] ) - SUM ( {$ <  [Numero Cuenta] = P ( {$ < OperacionFecha = {'$(=Date(Fecha))'} >} ) ,  OperacionFecha = {'$(=Date(Fecha-1))'}  > }  [Cheque Circulación] )


CON LA VARIABLE PDEAYER


SUM( $(PDEAYER)  [Disponible Actual] )  - SUM ( $(PDEAYER)  [Reserva Bancaria] ) - SUM ( $(PDEAYER)  [Cheque Circulación] )


Nuestro resumen luce de la siguiente figura 3.


bancos.png

Figura 3


RESUMEN

     No es hasta que nos encontramos con la necesidad de manipular los filtros que ofrece QlikView en las expresiones de conjuntos que notamos su verdadera utilidad y apreciamos de una mejor forma la robustez y flexibilidad  que tenemos con esta herramienta. En otra parte, les mostrare como solucionamos otro caso dentro de la misma aplicacion de Conciliacion Bancaria, cuando tenemos periodos en que NO hay conciliacion , es decir de Viernes  - Domingo , o en dias de asueto, nadie trabaja por lo que las conciliacion no estan de forma secuencial consecutiva , asi que fecha -1 no aplicaria facilmente para esos casos.

1 Reply
ecolomer
Master II
Master II

Buena contribución.

Gracias por compartir.

Saludos,