mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-23 07:32:06 +02:00
58 lines
2.1 KiB
Python
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
|