##############################################################################
#
#    Accounting periods, for Odoo
#    Copyright (C) 2024 XCG Consulting <http://odoo.consulting>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU Affero General Public License as
#    published by the Free Software Foundation, either version 3 of the
#    License, or (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU Affero General Public License for more details.
#
#    You should have received a copy of the GNU Affero General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################

from odoo import models


class AccountPartialReconcile(models.Model):
    """Add the possibility to forbid unreconciliation for accounting entries
    emitted on specific accounts on closed periods.
    """

    _inherit = "account.partial.reconcile"

    def unlink(self):
        """Override to:
        - Forbid unreconciliation for accounting entries emitted on specific
        accounts on closed periods.
        """

        # Forbid unreconciliation for accounting entries emitted on specific
        # accounts on closed periods.
        (
            self.debit_move_id | self.credit_move_id
        ).forbid_unreconcile_closed_periods()

        return super().unlink()