-
- Downloads
[FIX] product: pricelist: multiple corrections in UoM-related conversions
Pricelist computations need to consider 2 different Units of Measure: - The default product UoM (product.uom_id), used as reference for the various quantities and amounts specified in each pricelist rules. - The `context UoM` is the UoM in which the result is requested, that is the list price UoM. For example the 'price_min_margin' amount is meant for the unit price of 1 x default UoM. When the context UoM is not the default product UoM, it can be any UoM of the same UoM Category, and the various quantities and amounts specified on the rule need to be adapted accordingly: - min_quantity (expressed in terms of the default UoM) - price_surcharge (specified for 1 x default UoM) - price_min_margin (specified for 1 x default UoM) - price_max_margin (specified for 1 x default UoM) The UoM corrections were not done consistently and resulted in wrong prices when computing the price using a non-default UoM. The cases were a conversion was needed or not were not properly identified within the _price_rule_get_multi(). After this commit, the various code branches in _price_rule_get_multi always ensures that: - price requested for: `qty` of `qty_uom_id` - `qty_in_product_uom` is the requested `qty` converted to default UoM - current (intermediary) price: `price` for `price_uom_id` Therefore `price` and `price_uom_id` are always in sync, and `price_uom_id` can always be compared with `qty_uom_id' in order to know whether a conversion is still needed. This patch also corrects and extends the regression tests introduced at revision 79ebe106.
Loading
Please register or sign in to comment