From 76d6b9b92675bb02f187bb499fd986ec6a63c3f2 Mon Sep 17 00:00:00 2001 From: Henrik Date: Fri, 28 Jun 2019 22:05:16 +0200 Subject: [PATCH] [12.0][FIX] account_asset_management: date_range -> account_fiscal_year, account_analytic_id without domain --- account_asset_management/models/__init__.py | 2 +- .../models/account_asset.py | 4 +- .../models/account_fiscal_year.py | 49 ++++++++++++++++++ account_asset_management/models/date_range.py | 50 ------------------- 4 files changed, 51 insertions(+), 54 deletions(-) create mode 100644 account_asset_management/models/account_fiscal_year.py delete mode 100644 account_asset_management/models/date_range.py diff --git a/account_asset_management/models/__init__.py b/account_asset_management/models/__init__.py index 85eb87509..1c6674458 100644 --- a/account_asset_management/models/__init__.py +++ b/account_asset_management/models/__init__.py @@ -3,7 +3,7 @@ from . import account_asset from . import account_asset_profile from . import account_asset_line from . import account_asset_recompute_trigger +from . import account_fiscal_year from . import account_invoice from . import account_move -#from . import date_range from . import res_config_settings diff --git a/account_asset_management/models/account_asset.py b/account_asset_management/models/account_asset.py index 65b73a197..f99eee2c0 100644 --- a/account_asset_management/models/account_asset.py +++ b/account_asset_management/models/account_asset.py @@ -193,9 +193,7 @@ class AccountAsset(models.Model): store=True, readonly=True) account_analytic_id = fields.Many2one( comodel_name='account.analytic.account', - string='Analytic account', - domain=[('type', '!=', 'view'), - ('state', 'not in', ('close', 'cancelled'))]) + string='Analytic account') @api.model def _default_company_id(self): diff --git a/account_asset_management/models/account_fiscal_year.py b/account_asset_management/models/account_fiscal_year.py new file mode 100644 index 000000000..9d6630669 --- /dev/null +++ b/account_asset_management/models/account_fiscal_year.py @@ -0,0 +1,49 @@ +# 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.exceptions import UserError +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) diff --git a/account_asset_management/models/date_range.py b/account_asset_management/models/date_range.py deleted file mode 100644 index faf21a31c..000000000 --- a/account_asset_management/models/date_range.py +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright 2009-2017 Noviat -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -import time - -from odoo import api, models -from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT - - -class DateRange(models.Model): - _inherit = 'date.range' - - @api.model - def create(self, vals): - # TODO: - # change logic to avoid table recompute overhead - # when a regular (duration = 1 year) new FY is created - fy_types = self.env['date.range.type'].search( - [('fiscal_year', '=', True)]) - if vals.get('type_id') in fy_types._ids: - recompute_vals = { - 'reason': 'creation of fiscalyear %s' % vals.get('code'), - '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): - fy_types = self.env['date.range.type'].search( - [('fiscal_year', '=', True)]) - if vals.get('type_id') in fy_types.ids: - if vals.get('date_start') or vals.get('date_end'): - 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)