Módulo de OpenERP para facturación periódica

Ya se ha realizado una aproximación del tratamiento de las cuotas, y es ampliamente tratado en esta entrada del blog, a la que os invitamos a consultar antes de seguir leyendo, ya que expone la motivación de aquel módulo, que también es aplicable a éste, y una explicación de la creación de los contratos, que no se va a repetir en esta entrada por no hacerla demasiado extensa:

http://www.serviciosbaeza.com/index.php/blog-top/18-modulo-de-openerp-para-cuotas

Diferencias con los contratos del anterior módulo

Los contratos siguen siendo el método utilizado para añadir cuotas también en este módulo.

La primera diferencia apreciable es el lugar desde el que accedemos a los mismos, que en este módulo se ha ubicado en Contabilidad → Procesamiento periódico → Facturación periódica , para ser más coherente con la función realizada.

La definición de los contratos, los plazos y las líneas del contrato se realiza de la misma forma que en el anterior módulo, añadiendo únicamente un nuevo campo: Tipo de periodo . Con este campo, se define la manera en que se compondrá una línea descriptiva del periodo facturado, añadida como comentario a cada línea de factura. Puede tener dos valores:

  • Prepago : La cuota se factura nada más comenzar el periodo, por lo que en la línea constará el periodo desde la fecha de factura hasta el día anterior al siguiente periodo (por ejemplo, si el intervalo de facturación es un mes, y la fecha de factura es 11/10/2012, en la línea de comentarios aparecerá “Periodo: de 11/10/2012 a 10/12/2012”). Suele ser la más habitualmente utilizada para la mayoría de servicios (mantenimientos, hosting, seguros, cuotas de tarjetas, etc).
  • Pospago : La cuota en este caso se factura para el periodo consumido. Ocurre por ejemplo con las cuotas de las compañías telefónicas (aunque en este caso el modelo pospago sea por conveniencia, ya que hay otros conceptos variables como son las llamadas).

El botón Crear factura inicial sólo estará disponible obviamente cuando el tipo de periodo seleccionado sea prepago. De todas formas, se sigue dejando la opción de elegir al usuario con este botón si crear o no la factura inicial.

Mecanismo de generación de las facturas

Con el módulo se ha incluido una tarea programada que se encarga de la generación diaria de las facturas de las cuotas cuyo periodo caiga en el día de ejecución. Aunque algún día no se ejecute esa tarea (por ejemplo porque el servidor de OpenERP se pare), la siguiente vez que se ejecute la tarea, facturará todas las cuotas atrasadas, poniendo los periodos de manera correcta, aunque con fecha de factura del día en el que se ejecuta la tarea.

Mejoras futuras

Se podrían realizar múltiples mejoras que pasamos a comentar, y que esperamos poder implementar en el futuro:

  • Notificaciones de expiración.

  • Envío automático de la factura por e-mail.

  • Imputaciones analíticas de los ingresos provenientes de las cuotas. Éste es el método escogido por OpenERP para las previsiones, y aunque el anterior módulo se hizo mediante pedidos de venta precisamente para disponer de esa información con menos complicaciones, éste debería ser el método a seguir.

Cómo conseguirlo

Como siempre, se puede obtener este módulo desde nuestro repositorio de Launchpad, y está disponible tanto para la versión 6.0 como para la versión 6.1:

Facturación periódica

Comentarios

# José Sánchez 13-11-2012 08:36
Buenas Pedro.

Ante todo muchas gracias por tu trabajo.

Estoy pensando en implantar openerp en la empresa dónde estoy y estoy haciendo pruebas.

Tú módulo parece la mejor solución para la facturación periódica.

Pero tengo un problema, una vez que creo los contratos y facturo siempre se genera la factura con la cuenta "410000 Acreedores por prestaciones de servicios (euros)" en vez de con la "43.... Clientes".

¿Sabes que podría estar haciendo mal?

He mirado el código y veo que no se especifica cuenta.

Muchisimas gracias.
Responder | Responder con una citación | Citar
# Pedro M. Baeza 13-11-2012 13:38
Buenas José:

Efectivamente, estaba poniendo mal esos datos debido a un bug en el código. Ya está corregido y subido a las correspondiente s ramas de Launchpad.

Gracias por reportarlo.

Un saludo.
Responder | Responder con una citación | Citar
# Ignacio Ibeas 26-12-2012 19:42
Una consulta en que se diferencia estos módulos de módulo subscriptions de OpenERP? Subscription permite replicar cualquier objeto en el periodo que le indiques tu, en este caso cada mes duplique la factura de la couta.

Saludos
Responder | Responder con una citación | Citar
# Pedro M. Baeza 27-12-2012 11:45
Buenas, Ignacio:

Este módulo deriva de otro que fue una solicitud de un cliente y que generaba pedidos de venta en lugar de facturas, y como tal, tiene sentido viéndolo como una adaptación fácil del anterior. En el principio del post puedes ver un enlace a la entrada del blog que habla sobre el otro módulo, su motivación y una vista rápida de los módulos disponibles para la misma funcionalidad.

...
Responder | Responder con una citación | Citar
# Pedro M. Baeza 27-12-2012 11:45
Aún así, este módulo ofrece varias ventajas directas con respecto al módulo subscription:

  • Sólo un documento para gestionar las cuotas (llamado contrato), a diferencia del módulo subscription, que requiere factura + registro de suscripción.
  • Posibilidad de renovación de los contratos manual o automática.
  • Posibilidad de generación de la factura al final del periodo, en lugar de al principio.
  • Si no se pone precio en la definición de las cuotas, se cogerá el precio que le corresponda al cliente/product o por tarifa, pudiendo con ello aumentar por ejemplo el IPC sin tener que tocar los contratos.
  • Pueden desactivarse líneas del contrato a lo largo del tiempo, para seguir facturando sólo algunos conceptos, pero no otros.


...
Responder | Responder con una citación | Citar
# Pedro M. Baeza 27-12-2012 11:46
También, este módulo se adaptó con vistas a ampliar hacia otras funcionalidades también interesantes:
  • Envío automático de las facturas a los clientes.
  • Auto-validación de las facturas según criterios.
  • Notificaciones de expiración de los contratos.
  • Entradas analíticas para previsión de ingresos.


Por el momento, dichas ampliaciones no se han realizado, ya que de momento estamos examinando la versión 7.0 de OpenERP y sus nuevos contratos, que tal vez cubran dichos requisitos, pero si alguno de nuestros clientes que están en versiones anteriores nos lo solicitara, o cuando tengamos algo más de tiempo, sin duda las haremos.

Un saludo.
Responder | Responder con una citación | Citar
# Ignacio Ibeas 27-12-2012 12:06
Ok, subscription es más genérico y este está mas centrado en la figura de contrato.

Para solventar el problema de actualización de precios, nosotros creamos un módulo que al cambiar el precio actualiza todas las facturas borrador que utiliza subscription.

Si te interesa en mi repositorio hay un módulo que sirve para precios variables de productos según consumo (gas, electricidad, telefonia...) en teoría como solo modifica el producto y la factura debería servirte en combinación con el tuyo.

Saludos
Responder | Responder con una citación | Citar
# Pedro M. Baeza 27-12-2012 12:10
Gracias, le echaré un vistazo en cuanto pueda.

Un saludo.
Responder | Responder con una citación | Citar
# Gemma 02-05-2013 17:49
Hola Pedro, me he descargado el módulo para probar el funcionamiento, pero cuando intento instalarlo me da un error: "ValidateError Ha ocurrido un error mientras se validaban los campo(s) res_model,src_m odel: Nombre de modelo no válido en la definición de acción." Estoy con la versión 6.1 y para el módulo de pedidos no he tenido ningún problema.
He buscado, pero no he encontrado a nadie que haya pedido ayuda con ese mensaje de error. ¿alguna pista sobre que puede ser?
Muchas gracias.
Responder | Responder con una citación | Citar
# Pedro M. Baeza 03-05-2013 11:42
Buenas, Gemma:

He vuelto a probar la instalación en una BD limpia y no he tenido ningún problema con este módulo, por lo que no te sabría decir dónde tienes el problema.

Prueba a realizar la instalación en una BD nueva y asegúrate que tienes la última versión descargada para ver si así encuentras el problema.

Un saludo.
Responder | Responder con una citación | Citar
# Gemma 03-05-2013 12:11
Hola Pedro,
muchas gracias por tu pronta respuesta, debe ser algo que tengo en mi instalación porque con una base de datos nueva, me salta el error al intentar instalar módulos básico (p.e. gestión de compras), ya le echo un vistazo y vuelvo a intentarlo, ya que parece que es lo que necesito.
Un saludo,
Gemma
Responder | Responder con una citación | Citar
# Francisco Gomez 15-11-2013 19:30
Hola Pedro,

Descargue el modulo v6.1, hice pruebas con contratos Prepago y todo funcionó perfecto, se generan bien las facturas, pero en Pospago nunca genera las facturas, da error el planificador en los logs del server.
Con solo un contrato pospago por facturar ya da error el planificador y no genera tampoco las facturas prepago que si hubieran estado "solas" sin ninguna pospago sí se hubieran generado.

No se si es un bug o puede ser otro el problema.
Si pudieras orientarme sobre cual puede ser el problema te estaria muy agradecido.
Muchas gracias.

Un saludo,
Francisco Gomez

ERROR
File " ...periodical_i nvoicing.py", line 311, in create_invoice
from_date = self.__get_prev ious_invoice_da te(agreement, agreement_line, next_invoice_date)
AttributeError: 'agreement' object has no attribute '_agreement__ge t_previous_invo ice_date'
Responder | Responder con una citación | Citar
# Pedro M. Baeza 15-11-2013 20:24
Buenas, Francisco,

Pues no, no es que lo estés haciendo mal, es que había un bug como un piano, y dado que esa forma no se utiliza mucho, nadie lo había detectado. Ya lo he reparado en Launchpad en las tres versiones mantenidas.

Gracias por avisar.

Un saludo.
Responder | Responder con una citación | Citar
# Francisco Gomez 15-11-2013 21:53
Hola Pedro,

De nada, muchas gracias a ti por tu trabajo en este modulo, y por tu rapida respuesta y resolucion del problema.

Ya de paso te pregunto por el boton "Crear factura inicial" del que hablas en el articulo, que a mi no me aparece en mi v6.1, no se si solo está incluido en otra version.
Y saber si este boton lo que hace es crear la factura inicial calculando el importe proporcional de la cuota correspondiente a los dias del primer mes que se va a disfrutar el contrato, osea, que si se da de alta un contrato por ejemplo el dia 14 de nvbre, y el contrato es de facturacion mensual a facturar siempre los dias 1 de cada mes (lo que es muy habitual en muchos tipos de contrato), si haria la primera factura con el importe proporcional de la cuota correspondiente a esos 16 dias del mes que está en vigor el contrato.

Muchas gracias.
Un saludo
Responder | Responder con una citación | Citar
# Pedro M. Baeza 16-11-2013 05:25
Buenas de nuevo, Francisco,

Lo de crear factura inicial es un concepto que ya he eliminado en la versión 6.1 y 7.0, puesto que el sistema no empieza a generar facturas hasta el periodo siguiente al del comienzo del contrato, y se dejaba a elegir al usuario mediante ese botón el que creara la factura del primer mes. Esto se hizo así por si se había introducido la primera factura a mano y después hecho el contrato, pero vi que era una tontería hacerlo así, y cambié las otras dos versiones para que directamente generaran desde el primer mes. En la 6.0 no está hecho porque ya he descontinuado su desarrollo.

En cuanto a la opción que comentas de "prorrateo", es algo que habría que desarrollar, ya que no está implementado.

Un saludo.
Responder | Responder con una citación | Citar
# Francisco Gomez 18-11-2013 19:23
OK Pedro, todo claro, muchas gracias por contestar y aclarar estas cuestiones.

Un saludo.
Responder | Responder con una citación | Citar