diff --git a/addons/mrp_subcontracting_account/models/__init__.py b/addons/mrp_subcontracting_account/models/__init__.py index c65666fb491..6f59be287bd 100644 --- a/addons/mrp_subcontracting_account/models/__init__.py +++ b/addons/mrp_subcontracting_account/models/__init__.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import mrp_production from . import stock_picking from . import product_product from . import stock_move diff --git a/addons/mrp_subcontracting_account/models/mrp_production.py b/addons/mrp_subcontracting_account/models/mrp_production.py new file mode 100644 index 00000000000..b80579184fe --- /dev/null +++ b/addons/mrp_subcontracting_account/models/mrp_production.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models + + +class MrpProduction(models.Model): + _inherit = 'mrp.production' + + def _cal_price(self, consumed_moves): + finished_move = self.move_finished_ids.filtered(lambda x: x.product_id == self.product_id and x.state not in ('done', 'cancel') and x.quantity_done > 0) + # Take the price unit of the reception move + if finished_move.move_dest_ids.is_subcontract: + self.extra_cost = finished_move.move_dest_ids._get_price_unit() + return super()._cal_price(consumed_moves=consumed_moves) diff --git a/addons/mrp_subcontracting_account/models/stock_picking.py b/addons/mrp_subcontracting_account/models/stock_picking.py index a225adade3b..6440926412b 100644 --- a/addons/mrp_subcontracting_account/models/stock_picking.py +++ b/addons/mrp_subcontracting_account/models/stock_picking.py @@ -17,9 +17,3 @@ class StockPicking(models.Model): domain_subcontracting = [('id', 'in', (subcontracted_productions.move_raw_ids | subcontracted_productions.move_finished_ids).stock_valuation_layer_ids.ids)] domain = OR([domain, domain_subcontracting]) return dict(action, domain=domain) - - def _prepare_subcontract_mo_vals(self, subcontract_move, bom): - vals = super(StockPicking, self)._prepare_subcontract_mo_vals(subcontract_move, bom) - if bom.product_tmpl_id.cost_method in ('fifo', 'average'): - vals = dict(vals, extra_cost=subcontract_move._get_price_unit()) - return vals