Utilizar descuentos en las líneas de producto de OpenERP y mostrar el precio unitario en los reportes

Desde hace un tiempo he estado probando OpenERP como solución flexible para manejar las operaciones de la compañía en la cual trabajo. Actualmente lo tengo instalado en un servidor EC2 de Amazon (en algunos días haré un post con esta información) y a pesar de su flexibilidad, me encontré con una piedra (de las tantas que he encontrado) en el camino de hacer que los reportes de Oferta Comercial / Pedido se parezcan a los formatos que utilizamos en la compañía.

Por la dinámica de esta empresa, a pesar que manejamos los precios de los productos con listas de precios y tarifas (o multiplicadores) hay un caso específico donde la persona que elabora la oferta debe adicionar un porcentaje de descuento de acuerdo al producto que está ofertando. Para esta opción, simplemente vamos a Configuración -> Ventas y marcamos la casilla “Permite establecer un descuento en las líneas de los pedidos de venta”. Debemos tener permisos de administrador para hacer este cambio.

Captura de pantalla 2013-04-10 a la(s) 17.54.19

De esta manera, al ingresar cualquier producto en una nueva oferta por ejemplo, tendremos la opción de aplicar un descuento al precio de ese producto.

Captura de pantalla 2013-04-10 a la(s) 17.57.31

Sin embargo, nos vamos a encontrar que al imprimir nuestra Oferta Comercial u Orden de Pedido (en este ejemplo) nos aparecerá el precio unitario sin descuento, el descuento y el subtotal (cantidad x precio unitario) con descuento. Pero por ningún lado aparecerá el precio unitario con descuento. En nuestro caso, nuestras ofertas comerciales son enviadas mostrando el precio unitario con descuento y el subtotal con descuento. En ningún caso mostramos el precio neto sin descuento ni el descuento en si.

Captura de pantalla 2013-04-10 a la(s) 18.02.19

Luego de una ardua búsqueda en los campos de los reportes, pude ver que esta variable no está disponible en OpenERP (o al menos yo no la encontré). Por lo tanto, utilicé una operación aritmética de división dentro del mismo reporte para obtener el resultado que esperaba. Sencillamente, utilicé la siguiente expresión:

[[ formatLang( line.price_subtotal/line.product_uos_qty) ]]

En esta línea, divido el precio “subtotal” (line.price_subtotal) entre la cantidad de productos (line.price_uos_qty) y de esta manera obtengo el precio unitario ya con el descuento aplicado. Utilizo la expresión “formatLang” para que el numero resultante sea mostrado de forma correcta según lo configurado para mostrar las centenas y los miles (en mi caso, un punto como separador de miles cada tres dígitos y una coma como separador de decimales).

Captura de pantalla 2013-04-10 a la(s) 18.13.45

Lo que obtenemos una vez modificado el reporte en OpenOffice (utilizo esta herramienta en conjunto con el plugin de OpenERP) nos queda lo siguiente al imprimirlo (modificaciones en rojo):

Captura de pantalla 2013-04-10 a la(s) 18.16.06

De esta manera, es notable que podemos utilizar operaciones aritméticas y matemáticas de python directamente sobre los reportes de OpenERP.

Anuncios