# Copyright 2009-2017 Noviat # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import logging import time from datetime import datetime from dateutil.relativedelta import relativedelta from odoo import api, models from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT _logger = logging.getLogger(__name__) class AccountFiscalYear(models.Model): _inherit = 'account.fiscal.year' @api.model def create(self, vals): date_from = datetime.strptime(vals.get('date_from'), '%Y-%m-%d') date_to = datetime.strptime(vals.get('date_to'), '%Y-%m-%d') if not date_to == date_from + relativedelta(years=1, days=-1): recompute_vals = { 'reason': 'creation of fiscalyear %s' % vals.get('name'), 'company_id': vals.get('company_id') or self.env.user.company_id.id, 'date_trigger': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT), 'state': 'open', } self.env['account.asset.recompute.trigger'].sudo().create( recompute_vals) return super().create(vals) @api.multi def write(self, vals): if vals.get('date_from') or vals.get('date_to'): for fy in self: recompute_vals = { 'reason': 'duration change of fiscalyear %s' % fy.name, 'company_id': fy.company_id.id, 'date_trigger': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT), 'state': 'open', } self.env['account.asset.recompute.trigger'].sudo().\ create(recompute_vals) return super().write(vals)