diff --git a/addons/mrp/report/mrp_report_mo_overview.py b/addons/mrp/report/mrp_report_mo_overview.py index 72291b0fc25..74cd28c5f0d 100644 --- a/addons/mrp/report/mrp_report_mo_overview.py +++ b/addons/mrp/report/mrp_report_mo_overview.py @@ -450,7 +450,7 @@ class ReportMoOverview(models.AbstractModel): # Need to order more products to fulfill the need resupply_rules = self._get_resupply_rules(production, product, replenish_data) rules_delay = sum(rule.delay for rule in resupply_rules) - resupply_data = self._get_resupply_data(resupply_rules, rules_delay, missing_quantity, move_raw.product_uom, product, production.warehouse_id) + resupply_data = self._get_resupply_data(resupply_rules, rules_delay, missing_quantity, move_raw.product_uom, product, production) to_order_line = {'summary': { 'level': level + 1, @@ -468,7 +468,8 @@ class ReportMoOverview(models.AbstractModel): 'currency': currency, }} if resupply_data: - to_order_line['summary']['mo_cost'] = currency.round(resupply_data['cost']) + mo_cost = resupply_data['currency']._convert(resupply_data['cost'], currency, (production.company_id or self.env.company), fields.Date.today()) + to_order_line['summary']['mo_cost'] = mo_cost to_order_line['summary']['receipt'] = self._check_planned_start(production.date_start, self._format_receipt_date('estimated', fields.datetime.today() + timedelta(days=resupply_data['delay']))) else: to_order_line['summary']['mo_cost'] = currency.round(product.standard_price * move_raw.product_uom._compute_quantity(missing_quantity, product.uom_id)) @@ -700,11 +701,11 @@ class ReportMoOverview(models.AbstractModel): def _get_extra_replenishments(self, product): return [] - def _get_resupply_data(self, rules, rules_delay, quantity, uom_id, product, warehouse): + def _get_resupply_data(self, rules, rules_delay, quantity, uom_id, product, production): manufacture_rules = [rule for rule in rules if rule.action == 'manufacture'] if manufacture_rules: # Need to get rules from Production location to get delays before production - wh_manufacture_rules = product._get_rules_from_location(product.property_stock_production, route_ids=warehouse.route_ids) + wh_manufacture_rules = product._get_rules_from_location(product.property_stock_production, route_ids=production.warehouse_id.route_ids) wh_manufacture_rules -= rules rules_delay += sum(rule.delay for rule in wh_manufacture_rules) related_bom = self.env['mrp.bom']._bom_find(product)[product] @@ -713,6 +714,7 @@ class ReportMoOverview(models.AbstractModel): return { 'delay': related_bom.produce_delay + rules_delay, 'cost': product.standard_price * uom_id._compute_quantity(quantity, product.uom_id), + 'currency': (production.company_id or self.env.company).currency_id, } return False diff --git a/addons/purchase_mrp/report/mrp_report_mo_overview.py b/addons/purchase_mrp/report/mrp_report_mo_overview.py index 0a450b9f316..fda4f1ffc2e 100644 --- a/addons/purchase_mrp/report/mrp_report_mo_overview.py +++ b/addons/purchase_mrp/report/mrp_report_mo_overview.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import models +from odoo import fields, models class ReportMoOverview(models.AbstractModel): _inherit = 'report.mrp.report_mo_overview' @@ -53,14 +53,15 @@ class ReportMoOverview(models.AbstractModel): return self._format_receipt_date('expected', planned_date) return res - def _get_resupply_data(self, rules, rules_delay, quantity, uom_id, product, warehouse): - res = super()._get_resupply_data(rules, rules_delay, quantity, uom_id, product, warehouse) + def _get_resupply_data(self, rules, rules_delay, quantity, uom_id, product, production): + res = super()._get_resupply_data(rules, rules_delay, quantity, uom_id, product, production) if any(rule for rule in rules if rule.action == 'buy' and product.seller_ids): supplier = product._select_seller(quantity=quantity, uom_id=product.uom_id) if supplier: return { 'delay': supplier.delay + rules_delay, 'cost': supplier.price * uom_id._compute_quantity(quantity, supplier.product_uom), + 'currency': supplier.currency_id, } return res @@ -82,5 +83,6 @@ class ReportMoOverview(models.AbstractModel): po_line.price_unit, currency=po.currency_id, quantity=uom_id._compute_quantity(quantity, move_in.purchase_line_id.product_uom), product=po_line.product_id, partner=po.partner_id )['total_void'] + price = po_line.currency_id._convert(price, currency, (move_in.company_id or self.env.company), fields.Date.today()) return currency.round(price) return super()._get_replenishment_mo_cost(product, quantity, uom_id, currency, move_in)