jueves, 9 de enero de 2014

Finanzas.app

Como comentaba Rodrigo en su blog Neurona Financiera, el registro de nuestros gastos es fundamental si queremos tener controladas nuestras finanzas. Yo también pasé como él por varias etapas: una planilla Excel, un programa Visual Fox Pro hecho con GeneXus 9.0 que después migró a .Net, una aplicación web en Google App Engine.

Finanzas.app es la siguiente iteración en este ciclo, está desarrollada en GeneXus Tilo B3, y es una aplicación que funciona completamente desconectada.

El hecho de que sea Offline es el punto fuerte de la aplicación. Seguramente no se compara en funcionalidad con las alternativas (por ejemplo ZetaCuentas por nombrar otra hecha con GeneXus), pero me permite tener los datos locales sin que intervenga un tercero. No me considero extremadamente paranoico, pero cuando hablamos de dinero, prefiero no darle la información a otros...

Cómo obtener la aplicación

La aplicación la estoy desarrollando para uso personal, por lo que no me interesa distribuirla en formato binario. Esto implica que no está en mis planes publicarla en los Stores, ya que eso requiere de un trabajo que no me aporta valor en esta etapa.

Sin embargo, sí creo que puede resultar útil a otras personas, por lo que estoy dejando disponible la base de conocimiento en un GeneXus Server. La licencia que decidí usar es la de MIT como comentaba hace unos días en el blog, porque creo que es la menos restrictiva en cuanto a lo que se puede hacer con los fuentes.

La URL para obtenerla es: http://open.genexusserver.com/tilo/home.aspx?FinanzasOffline,0

La aplicación está funcionando en mi iPhone con iOS 7, no la probé en otras plataformas ni en otros dispositivos...

Modelo de datos

En cuanto al modelo de datos, es muy sencilla, consiste solamente de cuatro tablas: Movimientos, Monedas, Rubros y Tipos de Rubro.

La tabla principal es donde se registran los Movimientos, que están compuestos por una Fecha, un Origen y un Destino. Tanto el origen como el destino consisten de una Moneda, un Rubro y un Importe.

Así por ejemplo, un movimiento puede ser: Fecha: 9/1/2014, Origen: $100 efectivo, Destino: $100 almuerzo. El origen es de donde sale la plata, el destino es a donde va.

Sobre las Monedas no hay mucho para decir, tienen un nombre, un símbolo y una descrpción corta para usar en el ingreso rápido (ver más adelante la explicación).

Los Rubros tienen una descripción y un Tipo de Rubro, que es una forma de agruparlos. A su vez cada Tipo de Rubro puede ser un Ingreso, un Gasto o un Activo (es decir dinero; contadores abstenerse, seguramente el nombre no es el adecuado).

 

Ingreso rápido

En cuanto a funcionalidad tampoco hay mucho para decir. La característica principal es el "Ingreso rápido", que agiliza mucho el registro de movimientos. Esto es fundamental para que no nos resulte pesado el registro, para que no dejemos de usar la aplicación.

De hecho, el ingreso rápido es la primer pantalla que nos encontramos al abrir la aplicación. Allí vamos a ver simplemente dos campos: una fecha y una descripción.


La descripción debe tener el siguiente formato:
<moneda origen> <importe origen> <rubro origen>, <moneda destino> <importe destino> <rubro destino>
con las siguientes reglas:
  • la <moneda origen> se puede omitir, y en dicho caso se usa la moneda por defecto (que se configura en los parámetros de la aplicación)
  • el <rubro origen> se puede omitir, en cuyo caso se usa el rubro por defecto
  • la <moneda destino> se puede omitir, en cuyo caso se usa la <moneda origen>
  • el <importe destino> se puede omitir, en cuyo caso se usa el <importe origen>
  • el <rubro destino> se puede omitir, en cuyo caso se usa el rubro por defecto
  • para las monedas se usa la descripción corta que es un Character(3)
  • para los rubros se busca por LIKE, y se queda con el primero que encuentra
Esto permite que el ingreso sea muy sencillo. En el ejemplo que ponía antes, lo único que tengo que escribir es: "100, alm", suponiendo que el rubro por defecto es Efectivo y la moneda es Pesos.

Si quiero registrar un retiro de $1000 del banco, tengo que escribir simplemente "1000 banco"; y si quisiera que fuera en dólares (suponiendo que la descripción corta es "usd") debería escribir "usd 1000 banco".

Configuración inicial

Evidentemente la organización de nuestras finanzas es algo bastante personal, por lo que los rubros que cada uno defina serán los que le sirvan.

Podemos hacer la carga inicial de forma manual usando los "work with", pero esto puede ser bastante tediosos. Para facilitar la tarea, hay un data provider en la KB (llamado DatosInicialesRubros) que hace la carga inicial de Rubros y Tipos de Rubro, que cada uno deberá modificar de acuerdo a sus necesidades.

Consultas

La aplicación por el momento tiene solamente dos consultas: Resumen mensual y Saldos

El Resumen mensual muestra por Tipo de Rubro y Moneda, todos los movimientos que sean Ingreso o Gasto del mes. Se puede consultar para el mes actual y para el mes anterior.

La consulta de Saldos muestra por Rubro y Moneda para aquellos rubros que son de Activos, el saldo a la fecha especificada. La fecha puede ser hoy, el mes anterior o el año anterior.

Estado actual y futuro

Esta aplicación es la que estoy usando para el registro de gastos, desde el 1º de enero dejé de usar la aplicación que tenía antes. Por lo tanto, puedo decir que la aplicación está en producción y con el sello de calidad:


A futuro quedan sin dudas cosas a mejorar. Le falta mucho de estética, de lo que no me he preocupado por ahora, y también le falta en cuanto a funcionalidad.

Si alguien la prueba y quiere colaborar, puede pasarme los cambios que (si los apruebo) yo los publico en el GXServer. Si encuentran problemas y no los quieren arreglar... me avisan que los iré corrigiendo en la medida que tenga tiempo de hacerlo.