# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import _, models class StockMove(models.Model): _inherit = "stock.move" def _filter_anglo_saxon_moves(self, product): res = super(StockMove, self)._filter_anglo_saxon_moves(product) res += self.filtered(lambda m: m.bom_line_id.bom_id.product_tmpl_id.id == product.product_tmpl_id.id) return res def _generate_analytic_lines_data(self, unit_amount, amount): vals = super()._generate_analytic_lines_data(unit_amount, amount) if self.raw_material_production_id.analytic_account_id: vals['name'] = _('[Raw] %s', self.product_id.display_name) vals['ref'] = self.raw_material_production_id.display_name vals['category'] = 'manufacturing_order' return vals def _get_analytic_account(self): account = self.raw_material_production_id.analytic_account_id if account: return account return super()._get_analytic_account() def _get_src_account(self, accounts_data): if not self.unbuild_id: return super()._get_src_account(accounts_data) else: return self.location_dest_id.valuation_out_account_id.id or accounts_data['stock_input'].id def _get_dest_account(self, accounts_data): if not self.unbuild_id: return super()._get_dest_account(accounts_data) else: return self.location_id.valuation_in_account_id.id or accounts_data['stock_output'].id def _is_returned(self, valued_type): if self.unbuild_id: return True return super()._is_returned(valued_type) def _should_force_price_unit(self): self.ensure_one() return self.picking_type_id.code == 'mrp_operation' or super()._should_force_price_unit() def _ignore_automatic_valuation(self): return bool(self.raw_material_production_id)