diff options
| author | fw-bot <otis@odoo.com> | 2019-10-11 15:15:18 +0000 |
|---|---|---|
| committer | fw-bot <otis@odoo.com> | 2019-10-14 09:13:27 +0000 |
| commit | 2ce0dcb65df2add6bcddb7ae41c40f4a0b9573cc (patch) | |
| tree | 9a21c9a51545055217fdbdf6c08ecec970c325bb | |
| parent | 89d3293158c8e19084b958c06393ca45b05dda1b (diff) | |
[FIX] purchase: vendor price not converted to default UoM
-Define "g" as the default UoM for a product.
-Make a purchase order with that product.
-Select the "kg" UoM in the order line and a price of 50.
-Check the Purchase tab of the product.
Before this commit:
the UoM of the price created is the default UoM for the product, "g".
This is because it's a related field.
However, the price wasn't converted to the default UoM, it's still 50.
After this commit:
the price is converted to the default UoM, it's 0.05 per "g".
closes odoo/odoo#38688
Opw: 2076722
X-original-commit: 341b568773b28b2bbce02f3532215e9664b318ec
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
| -rw-r--r-- | addons/purchase/models/purchase.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py index e438ee2220a..cfef384f808 100644 --- a/addons/purchase/models/purchase.py +++ b/addons/purchase/models/purchase.py @@ -359,13 +359,19 @@ class PurchaseOrder(models.Model): # Do not add a contact as a supplier partner = self.partner_id if not self.partner_id.parent_id else self.partner_id.parent_id if line.product_id and partner not in line.product_id.seller_ids.mapped('name') and len(line.product_id.seller_ids) <= 10: + # Convert the price in the right currency. currency = partner.property_purchase_currency_id or self.env.company.currency_id + price = self.currency_id._convert(line.price_unit, currency, line.company_id, line.date_order or fields.Date.today(), round=False) + # Compute the price for the template's UoM, because the supplier's UoM is related to that UoM. + if line.product_id.product_tmpl_id.uom_po_id != line.product_uom: + default_uom = line.product_id.product_tmpl_id.uom_po_id + price = line.product_uom._compute_price(price, default_uom) + supplierinfo = { 'name': partner.id, 'sequence': max(line.product_id.seller_ids.mapped('sequence')) + 1 if line.product_id.seller_ids else 1, - 'product_uom': line.product_uom.id, 'min_qty': 0.0, - 'price': self.currency_id._convert(line.price_unit, currency, line.company_id, line.date_order or fields.Date.today(), round=False), + 'price': price, 'currency_id': currency.id, 'delay': 0, } |
