For some products, we have to deal with dual unit of measures for pricing and discount.
The price on a piece of cheese depends on its weight, while a retailer may also want to offer a buy one get one free discount. In other words, price depends on unit of measure "pounds", while B1G1 free discount rests on unit of measure "ea".
A bottle of wine cost $10, in other words, "ea" is $10. If we want to do volume-based discount, then we have to rely on the volume of "ea" bottle, say 750 ml. For a big bottle, it may be 1500ml.
Dual unit of measure analysis
There is an important difference between wine and cheese: for a bottle of wine, the volume is fixed, while for cheese, each piece has its own weight.
In addition, if we consider wine as variant by volume, then the volume is variant specific.
Not the same as common case of unit of measure conversion.
You scan a bottle of wine during checkout, then you update unit of measure to "case", which is 6 "ea". For the dual unit of measures we talked about, weight (or volume) is inherent in the item, and you cannot update unit of measure to "pounds" or "ml".
Two models of dual unit of measures
Per product (or variant) unit of measure conversion
For a specific wine, "ea" is converted to a fixed volume, say 750ml or 1500ml
Per barcode unit of measure conversion
When we generate the barcode for a piece of cheese, either the weight is embedded in the barcode, or the barcode-weight is stored somewhere in the system, and we are able to recover the weight when we scan the barcode.