Impidiendo stock negativo en Odoo

11 de junio de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Odoo tiene un problema que puede pasar inadvertido durante una implementación, pero que a la larga puede traer problemas. Que es permite el stock negativo. La lógica detras de esto es, no se puede detener la concreción de las ventas debido a problemas administrativos (que originaron el stock negativo) es por eso que permitimos que los niveles de inventario no sean reales. Esa es la lógica aplicada por Odoo out-of-the-box. Lo cual a la corta o a la larga te puede llevar a tener algunos problemas.

Lo cual es ridículo como lo maneja Odoo, lo hace al reves. Se debería hacer al reves, como debe ser con la donación de órganos (todos debemos ser donantes de organos a menos que expresemos nuestra voluntad de no donar). Con el stock debe pasar lo mismo, Odoo debería impedir el stock negativo a menos que indiquemos lo contrario.

Por suerte el problema se soluciona facilmente instalando el módulo stock_no_negative de OCA. Dicho módulo impide la creación o actualización de quants (las unidades de stock que administra Odoo) con una cantidad negativa. 

Como lo hace? Es sencillo, solo habilita un constraint en el modelo stock.quant donde se valida por producto que la cantidad de unidades que hay para un producto en una ubicación, no sea negativa. Lo hace mediante un constraint como podemos ver debajo


@api.constrains("product_id", "quantity")
def check_negative_qty(self):
​p = self.env["decimal.precision"].precision_get("Product Unit of Measure")
​​check_negative_qty = (
​​config["test_enable"] and self.env.context.get("test_stock_no_negative")
​) or not config["test_enable"]
​if not check_negative_qty:
​​return
​for quant in self:
​...


Gustavo Orrillo 11 de junio de 2023
Compartir
Categorías
Archivar
Identificarse dejar un comentario