oca-technical/odoo-bringout-oca-brand-account_brand/account_brand/models/account_move.py
2025-08-29 15:43:03 +02:00

58 lines
2.1 KiB
Python

# Copyright (C) 2019 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class AccountMove(models.Model):
_name = "account.move"
_inherit = ["account.move", "res.brand.mixin"]
brand_id = fields.Many2one()
def _is_brand_required(self):
self.ensure_one()
if self.move_type in ("in_invoice", "in_refund"):
return False
return super()._is_brand_required()
@api.onchange("partner_id")
def _onchange_partner_id(self):
res = super()._onchange_partner_id()
if self.brand_id:
pab_model = self.env["res.partner.account.brand"]
company_id = self.company_id.id
partner = (
self.partner_id
if not company_id
else self.partner_id.with_company(company_id)
)
invoice_type = self.move_type or self.env.context.get(
"move_type", "out_invoice"
)
if partner:
rec_account = pab_model._get_partner_account_by_brand(
"asset_receivable", self.brand_id, partner
)
rec_account = (
rec_account
if rec_account
else partner.property_account_receivable_id
)
pay_account = pab_model._get_partner_account_by_brand(
"liability_payable", self.brand_id, partner
)
pay_account = (
pay_account if pay_account else partner.property_account_payable_id
)
if invoice_type in ("in_invoice", "in_refund"):
account_id = pay_account
else:
account_id = rec_account
if account_id:
self.line_ids.filtered(
lambda line, a=account_id: line.account_id.account_type
== a.account_type
).update({"account_id": account_id.id})
return res