46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
# 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)
|
|
|
|
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)
|