Modificando la precisión de los montos, cantidades, etc...

Gustavo Orrillo
- 16/07/2020 - 1 min. de lectura

Un pedido recurrente es el de modificar la precisión de las cantidades o los precios. Por default Odoo maneja una precisión de 3 decimales para las cantidades. Y muchos clientes se encuentran en la necesidad de modificar la precisión de las cantidades para que las mismas pasen de 3 decimales a 0 decimales. Lo cual se puede hacer mediante el menu Ajustes > Técnico > Estructura de la base de datos > Precisión decimal. Allí hay que modificar el registro "Product Unit of Measure" a la cantidad que uno necesite.


Ahora, aca se presenta el problema que la precisión del campo cantidad es el mismo tanto para compras como para ventas, y muchas veces por necesidades de negocio necesitamos que la precisión en las compras sea diferente a la precisión de las cantidades en las ventas (debido a que compramos materias primas las cuales vienen en diferentes unidades de medida). Entonces, la solución delineada anteriormente no sirve.

Lo que hay que hacer es; crear un módulo, heredar el modelo en el cual se encuentra el campo al cual uno necesita modificar, y redefinir su precisión. Por ejemplo con esta línea de código:

product_qty = fields.Float(string='Quantity', digits='Product Unit of Measure', required=True) 
Esto se encuentra ya implementado a modo de ejemplo en el módulo purchase_qty_precision en el cual se demuestra este concepto:

https://github.com/ctmil/purchase_qty_precision

La idea de publicar este módulo es demostrar este concepto con la comunidad, ya que es una situación en la que nos encontramos frecuentemente. Por ejemplo, vendemos en pesos argentinos y compramos en dolares. Por ende, los precios de compra deben contener decimales y los precios de venta no.

Acerca de:

Gustavo Orrillo

Apasionado de la programación, implementa Odoo para distintos tipos de negocios desde el año 2010. En Moldeo Interactive es Socio fundador y Programador; además de escribir en el Blog sobre distintos temas relacionados a los desarrollos que realiza.