Pagos parciales en Openbravo ERP

Openbravo 10 Comments

He desarrollado una nueva funcionalidad que permite agilizar los pagos parciales de una factura en Openbravo ERP. Primero explicaré la problemática que tiene la forma de trabajar de Openbravo y porqué se ha pensado en esta solución.

Cuando en Openbravo creamos una factura a esta se le asocian una serie de efectos que inicialmente estarán en estado “–” (pendiente), el condicionante es que una vez procesada una factura (completada en terminología de Openbravo) el total de los efectos debe ser igual al total de la factura. Como consecuencia de este requisito lo que hace Openbravo es que al completar una factura automáticamente te crea los efectos en base a las condiciones para ese cliente según su ficha en datos maestros. El problema que tiene esta solución es que estamos vaticinando como y cuando vamos a cobrar según la forma y condiciones de pago del cliente pero eso a veces no corresponde con lo que finalmente va a suceder.

Vamos a poner un ejemplo muy sencillo en el que la forma de pago es “giro bancario” y nos van a pagar a 60 días. Resulta que el cliente nos hace un pago parcial a los 20 días en efectivo, ¿cómo reflejamos esto en Openbravo?. De entrada tenemos un problema porque si hemos completado la factura se nos debe haber creado un efecto por el total de la factura con vencimiento a 60 días y este será el que actualmente tendremos en cartera de efectos.

Para este tipo de conflictos Openbravo nos provee de una herramienta que se llama “Liquidación” y que nos permite transformar unos efectos en otros. Esta herramienta tiene como entrada de 1 a n efectos ya existentes que son los que se van a cancelar y como salida de 1 a n efectos nuevos que son los que se van a generar, cómo es lógico la condición es que la suma de los efectos cancelados coincida con la suma de los efectos generados.

Por tanto la forma de solucionar el problema que tenemos es:

  1. crear una liquidación en la que cancelamos el efecto de la factua a 60 días y genermos dos nuevos, uno con las mismas condiciones del original pero por cantidad del total de la factura – el efectivo adelantado y el otro con condiciones de pago en efectivo por valor de la cantidad adelantada.
  2. Este último efecto es el que cobraremos por banco, caja o lo que corresponda dejando pendiente el segundo efecto generado.

En este caso particular en el que sólo se va a hacer un pago parcial existe otra solución que consiste en:

  1. Reactivar la factura (desprocesarla) con lo que los efectos que se generaron al completarla desaparecerán.
  2. Ahora en la pestaña de efectos de la factura añadimos un nuevo efecto que correponde al pago parcial en efectivo.
  3. Volvemos a completar la factura, esto provoca que Openbravo vuelva a generar los efectos según las condiciones del cliente, pero esta vez por la cantidad pendiente ya que tiene en cuenta el efecto que acabamos de introducir.
  4. Cobramos el efecto por banco, caja o lo que corresponda lo que implica que la factura queda definitivamente bloqueada y no se podrá reactivar.

En resumen, la segunda solución es la más ágil y cómoda pero tiene el inconveniente que sólo se puede hacer un pago parcial. La primera solución es el estandar en Openbravo, cuando queremos manipular efectos debemos hacerlo mediante una liquidación, pero tiene el inconveniente de que el hecho de tener que pasar por el proceso de crear y procesar una liquidación es lento (es el usuario el que debe introducir los datos de los efectos a generar, sus condiciones, cantidades… además de tener que hacer el cálculo para que el total de efectos generados y cancelados cuadren).

Al final hablando con un cliente se encontró una solución, primero veamos su especificación funcional:

  1. Creamos y completamos una factura, esto como ya hemos comentado nos genera sus efectos.
  2. Cuando el cliente nos hace un pago parcial que cobraremos por banco o caja vamos a “Extracto bancario” o a “Diario de caja” y creamos un nuevo registro.
  3. Añadimos el efecto de la factura como linea con lo que en el caso de caja el campo “Importe” de la linea se rellena con el total del efecto y en el caso de banco sucede lo propio con el campo “Imp.declarado”.
  4. Si nos fijamos estos campos son editables así que una vez aplicado el parche podremos modificar dicha cantidad y en su lugar poner un valor entre 0 y el total del efecto.
  5. Procesamos el “Extracto bancario” o el “Diario de caja”

Nota 1: En cualquiera de los dos casos, banco o caja, al guardar la linea con el nuevo importe el efecto de dicha linea automáticamente será substituido por uno nuevo que refleje esa cantidad, por lo tanto si volvemos a modificar la cantidad y ponemos un valor entre 0 y el nuevo importe se volverá a repetir el procedimiento.

Nota 2: En este punto la única forma de volver atrás es desprocesando la entrada de caja o banco, eliminando la linea y por último desprocesar y eliminar la liquidación que se ha generado de forma automática por debajo.

Como se decía al principio el propósito de este desarrollo es agilizar los pagos parciales evitando tener que hacer una liquidación de forma manual. El atajo consiste simplemente en que en el momento de cobrar indicas una nueva cantidad y es el sistema el que hace la liquidación de forma automática por debajo dejando todo listo para que sólo tengas que procesar el banco o caja.

Ahora veamos como aplicar el cambio. Lo primero que debemos hacer es descargarnos el parche:

partialpayments.tar.bz2

partialpayments.tar.bz2.md5

Después de copiar estos dos archivos al raiz del código fuente de nuestra instalación de Openbravo ERP debemos comprobar que se han bajado correctamente:

md5sum -c partialpayments.tar.bz2.md5

Si todo esta bien ya podemos descomprimir y desempaquetar el parche:

tar xvfj partialpayments.tar.bz2

Y por último debemos actualizar nuestra base de datos:

ant update.database

Ya sólo queda decir que este parche está bajo licencia gpl versión 3.

 

Nota: Se ha elminado el archivo ya que sólo es compatible con versiones antiguas de la 2.40.

 

Cheli