Odoo Help


Negative on-hand should be physically impossible?

Sean Samborski
on 8/8/14, 2:17 AM 4,006 views

I'm trying to get some insight on the thinking behind on-hand and forecasted quantities. I ahve noticed when you sell more than you have, both on-hand and forecasted will become negative. This seems like a mistake because a negative on-hand is physically impossible.


Let's imagine this scenario:


I have 5 apples.

I sell 10 apples.

I do not have -5 apples at this point becasue that would go against the laws of physics. I have 0 apples but have orders for 5 more. In OpenERP, you have -5 on-hand and -5 forecasted.


I am not concerned with selling more than you have, that is irrelevant to this question, but shouldn't on-hand only ever be greater than or equal to 0?

On hand will only be greater than equal to 0 if you have no unprocessed inventory movements (deliveries, incoming shipments). Since people make mistakes, and things get backed up, the system if flexible enough so that things don't grind to a halt just because the receiving desk guy went to lunch before entering in the last case of apples to arrive.

Ray Carnes
on 8/8/14, 12:50 PM

Hi, Ray. I understand what the system does and why it does it, I guess my question was more along the lines of why not just develop it to use the forecasted for all those calculations but keep on-hand accurate and realistic.

Elephante, Sean Samborski
on 8/8/14, 1:40 PM

You are free to change the way the system works if you have a need that is different - that's the best thing about open source systems. For every 'why not do it this way?' there is a 'why do it that way?'. The editor chooses based on design principles, user feedback, community feedback, competing software, etc. Users then create modules that allow for special use cases.

Ray Carnes
on 8/8/14, 2:19 PM

Ludo - Neobis

--Ludo - Neobis--
| 2 2 5
Hoogvliet, Netherlands
--Ludo - Neobis--


Ludo - Neobis
On 8/8/14, 3:39 AM

I have to agree with you, but the current stock does not work like that. The reason for this being that both "on-hand" as well as "forecasted" values are calculated, not set numbers. So basically, OpenERP is will calculate each time something relevant happens to the stock location and/or product (for example selling it, or moving it from one location to the other). Up front, OpenERP only knows at one specific moment if the move is going to take the stock to anything less then zero, thus giving you a warning ("You are about to sell 10 but you only have 5, are you sure?"). Should you ignore this warning then OpenERP assumes the current stock is somehow manipulated outside of OpenERP ( you bought 20 apples from the guy down the road and put them in your inventory) and still allows you to make that sale.

The folks over at Odoo already promised to work on stock in the new version, so I wonder if this issue will remain when Odoo 8 is finally stable.

If you read Fabien's answer here I'm thinking this is going to stay the way it is. If that works for the majority of users, that's what Odoo will do. I was just asking from a logic standpoint and accurate reporting standpoint.

Elephante, Sean Samborski
on 8/8/14, 1:39 PM

Fabien Pinckaers (fp)

--Fabien Pinckaers (fp)--
| 6 8 8
fsdsdfsdf, Belgium
--Fabien Pinckaers (fp)--

Odoo Founder & CEO

Fabien Pinckaers (fp)
On 8/8/14, 5:58 AM

Negative on hand inventories do not exist in real life but it's a great feature. Your use case is not 100% right. If you have 5 apples in your inventory and sell 10, before having done the delivery, you get: - forecasted quantities: -5 - on hand quantities: +5 It's of course impossible that, in the future, you get "-5" apple in your inventory. But it's a great information since it tells you that if you do nothing, you will be 5 apples short according to what you promised to your customers. In real life, if your inventory is correct, you will deliver 5 apples to your customer and keep the others 5 in a backorder. But if, in real life, you force the system and deliver 10, Odoo lets you do it instead of blocking the delivery order operation. (which is correct because if you really delivered 10 apples, your delivery order must be 10 apples, even if Odoo think there is only 5 on hand) In that case, the on hand inventory becomes "-5". Even if it's not possible in the real life, it's a good information because it tells you that you made a mistake when recording incoming/ship ping operations. The most probable reason is that you forgot to record an incoming shipment. When you will record the missing incoming shipment (or do an inventory for this product), the on hand inventory will become positive again. Not that by doing so, Odoo ensure that: "on hand inventory" is always equal to "incoming - outgoing shipments", like in the real life.

Note that putting 0 instead of "-5" would be erroneous as you break this equation. And, when you will record the missing incoming shipment, your inventory will be completely wrong.

I understand where you're coming from. For feature wise it could be nice but I think for us we'll have to develop it to keep on-hand at 0 and the negative values in the forecasted. We run on-hand reports and they have to show exactly what we have, not what we've sold. We'll have to develop and test thoroughly for sure but I think this will be the best method for us. BTW, not me giving out the downvotes here. Guess someone else doesn't like it.

Elephante, Sean Samborski
on 8/8/14, 1:38 PM

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

2 follower(s)


Asked: 8/8/14, 2:17 AM
Seen: 4006 times
Last updated: 3/16/15, 8:10 AM