En Colombia es bastante frecuente que algunos contadores se sientan inconformes con los reportes financieros que se hacen ADempiere, en especial el Balance de Prueba. Que aunque es un reporte opcional de acuerdo a la legislación Colombiana es sin lugar a dudas el reporte mas utilizado por el personal contable para el control del movimiento de cuentas. El principal inconveniente se da en el sentido de que ADempiere no imprime (al menos no de manera sencilla) la jerarquía completa de las cuentas al mostrar el saldo inicial, los movimientos débitos, créditos y saldo Final de cada cuenta. En el apartado 1 se detalla claramente como se construye de manera normal el reporte en ADempiere y el resultado que este arroja y cual es el problema en si. El apartado 2 detalla la estrategia utilizada en este documento para resolver la situación es la creación de un reporte Jasper que llama algunas funciones postgres para obtener las cuentas con su respectiva jerarquía al tiempo que permite seleccionar hasta que nivel de profundidad en el árbol se quiere imprimir. Por ultimo en la sección de trabajos futuros se plantean un serio reto de optimizar el performance de este reporte cuando el nivel de profundidad del árbol es el mayor a 6.
Apartado 1. El problema Normalmente al elaborar el Reporte de Balance de Prueba de acuerdo a la legislación Colombiana en ADempiere lo haríamos construyendo un reporte financiero tal como lo muestran las imágenes: El grupo de lineas se define de la siguiente forma:
Igualmente podemos definir el conjunto de Lineas de esta forma:
El resutlado al correr el reporte con el flag de Listar Fuentes activo, seria algo como esto:
Ahora como ven el reporte me muestra correctamente los saldos de las cuentas que tienen movimientos, sin embargo podemos observar que se imprime la cuenta 1 y luego las subcuentas que tienen movimientos sin embargo si observamos la jerarquia de cuentas en la siguiente imagen del elemento contable: Podemos ver que la cuenta caja general tiene una cuenta padre que se llama caja, y esta a su vez otra que se llama Disponible y por ultimo la cuenta padre de todas estas que es Activo. Como se puede ver en la imagen del reporte ADempiere imprime la cuenta 1 Activo que definimos y la fuente es directamente la cuenta Caja General pasando por alto las demás. Si bien esto no es incorrecto si presenta una serie de inconvenientes con algunos contadores que exigen
que si se impriman toda la jerarquía de cuentas pues de esa forma lo muestran la mayoría de sistemas desde los mas baratos. Apartado 2. La Solución ( Provisional?) Como solución SET SOFTWARE creó un reporte Jasper que como se muestra en las siguientes imágenes imprimen la jerarquía de acuerdo al requerimiento y además permite seleccionar hasta que nivel del árbol se desea imprimir:
Para Instalar este reporte es necesario: Paso 1 correr los scripts: createview_01.sql getperiodstartdate_02.sql getperiodendtdate_03.sql getsaldoinicial_04.sql getsaldofinal_05.sql getdebitandcredit_06.sql gettrialbalance_07.sql createindex_08.sql se pueden descardar desde: http://kenai.com/projects/seterpadempiere/downloads/download/scriptspostgres.rar Paso 2 en la carpeta /Adempiere/reports/ descomprimir el archivo trialbalance.rar Se puede descargar desde: http://kenai.com/projects/seterpadempiere/downloads/download/trialbalance.rar Paso 3 Ingresar como System a ADemiere ir a informe y proceso y crear un nuevo registro de la siguiente forma: NOTA de autor: En el campo Reporte Jasper En teoria se puede colocar tanto el archivo jrxml como el jasper, sin embargo el comportamiento difiere de algunos equipos windows a ubuntu. En windows prefiero colocar el Jasper y en ocasiones no funciona si se coloca la ruta completa como c:/adempiere/reports/ mientras que en ubuntu si se puede colcoar la ruta completa y el archivo
jrxml sin ningun problema. En la pestaña parametro:
Para finalizar en la pestaña Menú se agrega un nuevo elemento de acuerdo a la imagen:
De esta forma al ingresar este elemento estará disponible para todas las empresas: Apartado 3 Trabajos Futuros: De acuerdo a las pruebas que se hicieron en la BD de un cliente que tiene informacion de un año, El perfomance del reporte es de 30 segundos cuando el nivel es 1, 1 minutos cuando el nivel es 2, 3 minutos cuando el nivel es 4, Pero cuando el nivel es de 6 en adelante el tiempo de respuesta es de 20 Minutos.
Esto debido a que la consulta sql que consolida los movimientos y saldos utiliza una clausula like patron%. Este tipo de clausula es muy dificil de optimizar, se ha creado un indice sobre ese campo sin embargo el tiempo de respuesta mejoró solo un poco. Una reflexion para el futuro seria considerar la optimizacion de estas consultas, bien sea haciendo optimziacion al sql o modificando de alguna forma la estructura de en la cual se almacena esta informacion en ADempiere.