Skip to content
Extraits de code Groupes Projets
account_move.py 3,03 ko
Newer Older
  • Learn to ignore specific revisions
  • # 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)