Odoo tiene un defecto de nacimiento que es permitir el stock negativo en sus operaciones de inventarios. De esto ya hablamos en dos post anteriores; stock negativo en Odoo e impidiendo stock negativo en Odoo. Meses más tarde retomamos el tema; porque gracias a una aplicación de colector de código de barras que desarrollamos pudimos conocer más sobre el tema.
Un poco de historia y porque creo Odoo lo permite. Odoo nació como un sistema chico y por ende sus clientes eran chicos. En los cuales (como en toda pyme) la prioridad eran las ventas y remover las trabas a que las ventas se concreten. Una mala gestión de stock (lease movimientos de inventarios mal ingresados o un maestro de stock mal actualizado) impediría dichas ventas. Es por eso que por pecado de origen Odoo permite el stock negativo (lo cual se subsana instalando el módulo stock-no-negative de OCA).
Ahora, que ocasiona el stock negativo? Basicamente movimientos de stock mal ingresados. Y estoy hablando de las operaciones que se registran en el modelo stock.move.line. Cuando uno ingresa datos en stock.move.line tiene que asegurarse de lo siguiente que exista stock suficiente (ya sea para el producto, lote o nro de serie) en el campo de origen (location_id) del registro. Si uno ingresa mal el movimiento, Odoo lo va a ejecutar (le guste o no). Y esto va a generar el stock negativo. Es por ello que se debe prestar atención a como se ingresan las operaciones detalladas.
Algo a tener en cuenta en esto es como funciona el formulario donde se ingresan las transferencias en Odoo; ya que permite hacer cualquier cosa y es muy genérico (practicamente sin controles). Permite hacer cualquier cosa y esto no es culpa de Odoo. Es muy dificil hacer una pantalla de movimientos de inventario que contemple entregas, ingresos, movimientos internos, manejo de paquetes, nros de serie, etc... y que la misma satisfaga a todos. Es por ello que este formulario debe ser customizado para que cumpla con las necesidades que uno tiene su empresa.