Once in a while we come across a production environment where one of the ingredients or components is being consumed at a very low rate. It may be a trace ingredient (like a vitamin) or it might be packaging material that you buy in bulk (e.g. rolls) but use in smaller units (each or metre).
There are a couple of considerations here (three actually).
Firstly, we can define the number of decimal places that we can enter for each unit of measure. There are units of measure like ‘each’ or ‘piece’ that will always be considered as a whole number, but of course there are other units like kilograms where we will want to reference partial quantities:
As shown above, you set the ‘Decimal precision’ on the unit.
Secondly, we have to remember that when we use an alternate unit of measure (like grams) on our production order bill of material – or purchase order line, or sales order line – the system’s going to record the underlying inventory transaction in the inventory unit of the item. So if we setup BOM line consumption in grams and the item’s inventory unit is Kg, then the inventory transactions will all be recorded in Kg’s.
Finally, although the underlying SQL database is recording quantities to [I think] 12 place of decimal precision, the inventory transaction and on-hand forms display only 2 decimal places by default – and this display is rounded.
So I’ve created a very simple production order – I’m using a batch production order and a formula, but this discussion applies equally to production orders and BOM’s.
To make 1 of my finished item TS-FORMULA-1, I need one each of my two components, and 1 gram of TS-TINY. And the inventory unit of TS-TINY is Kg:
So the inventory transaction of one of my components shows that I’m going to use 1.00:
But I’m not planning to use any of my trace ingredient at all:
You’ll be tempted at this point to say that the problem is that I’ve only defined 2 decimal places on my Kg unit – and of course 1g = 0.001Kg.
So why not just increase the decimal precision on Kg to 3?
This is what you get:
The inventory transaction looks like zero but it isn’t. it’s 0.001 rounded to 2 decimal places.
My rule here is you shouldn’t use more decimal precision on units than you display on your inventory transactions and on hand. You do not want any of these ‘not quite zero’ inventory transactions and on-hand quantities in your system.
If you don’t want to show lots of decimal places on the inventory transaction and on hand displays a simple way round this problem is to use the ‘Rounding-up’ option on the BOM/Formula line:
Although there are three options (four if you count No rounding up) I’ve only ever used ‘Consumption’. Hiding under the drop-list in the screenshot above is the Multiple that you want to round to:
So now I’ve specified that when the production order is estimated, the system’s going to round consumption up to the nearest 10g = 0.01 Kg’s in my example:
The example normally quoted for the rounding up parameter is something like a can of paint or a bottle of ingredient – which once opened can’t be re-used. In that case your rounding up multiple is 1.00, meaning that you’ll always consume a whole number of units into your production order say 5, even though you only need 4.25.