# Copyright 2019 Akretion France (http://www.akretion.com) # @author Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import _, api, fields, models from odoo.exceptions import ValidationError class AccountMoveLine(models.Model): _inherit = "account.move.line" sale_id = fields.Many2one("sale.order", string="Sale Order") account_internal_type = fields.Selection( related="account_id.user_type_id.type", store=True, string="Account Internal Type", ) @api.constrains("sale_id", "account_id") def sale_id_check(self): for line in self: if line.sale_id and line.account_id.internal_type != "receivable": raise ValidationError( _( "The account move line '%s' is linked to sale order '%s' " "but it uses account '%s' which is not a receivable " "account." ) % (line.name, line.sale_id.name, line.account_id.display_name) ) @api.onchange("account_id") def sale_advance_payement_account_id_change(self): if self.sale_id and self.account_id.user_type_id.type != "receivable": self.sale_id = False