# Copyright 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from dateutil.relativedelta import relativedelta from odoo import api, fields, models class AccountMove(models.Model): _inherit = "account.move" third_account_journal_ids = fields.Many2many(related="journal_id.third_account_ids") third_account_id = fields.Many2one( comodel_name="account.account", string="Compte de tiers", ) display_siret = fields.Boolean( string="Afficher le SIRET", default=False, help="Affiche le n° SIRET sur la facture client", ) fee_start_date = fields.Date( string="Date de début de redevance", compute="inverse_date_deadline", readonly=False, store=True, default=False ) fee_deadline_date = fields.Date( string="Date de fin de redevance", compute="compute_date_deadline", readonly=False, store=True, default=False ) # ------------------------------------------------------ # Override Parent # ------------------------------------------------------ @api.onchange("journal_id") def _onchange_journal_id(self): """ Affecte le compte de tiers défini sur le journal """ if self.journal_id.third_account_ids: self.third_account_id = self.journal_id.third_account_ids[0].id @api.onchange("third_account_id") def _onchange_third_account_id(self): """ Affecte le compte de tiers défini sur le journal """ if self.third_account_id: for line in self.line_ids: if line.account_id.user_type_id.type in ("receivable", "payable"): line.account_id = self.third_account_id # ------------------------------------------------------ # Override Parent # ------------------------------------------------------ @api.onchange("partner_id") def _onchange_partner_id(self): """ Affecte le compte de tiers défini sur le journal """ super(AccountMove, self)._onchange_partner_id() if self.third_account_id: for line in self.line_ids: if line.account_id.user_type_id.type in ("receivable", "payable"): line.account_id = self.third_account_id @api.depends("fee_start_date") def compute_date_deadline(self): """ Calcule la date de fin de redevance si la date de début de redevance est modifiée """ for invoice in self: if invoice.fee_start_date: invoice.fee_deadline_date = invoice.fee_start_date + relativedelta(days=365) @api.depends("fee_deadline_date") def inverse_date_deadline(self): """ Calcule la date de début de redevance si la date de fin de redevance est modifiée """ for invoice in self: if invoice.fee_deadline_date: invoice.fee_start_date = invoice.fee_deadline_date - relativedelta(days=365)