From 69804d0600e6f13f512be2151dda08d079ef223b Mon Sep 17 00:00:00 2001 From: git_admin Date: Sat, 2 May 2026 06:59:44 +0000 Subject: [PATCH] Tower: upload om_fiscal_year 19.0.1.0.1 (was 1.0.1, via marketplace) --- .../models/account_fiscal_year.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 addons/om_fiscal_year/models/account_fiscal_year.py diff --git a/addons/om_fiscal_year/models/account_fiscal_year.py b/addons/om_fiscal_year/models/account_fiscal_year.py new file mode 100644 index 0000000..8bbb165 --- /dev/null +++ b/addons/om_fiscal_year/models/account_fiscal_year.py @@ -0,0 +1,48 @@ +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class AccountFiscalYear(models.Model): + _name = 'account.fiscal.year' + _description = 'Fiscal Year' + + name = fields.Char(string='Name', required=True) + date_from = fields.Date(string='Start Date', required=True, + help='Start Date, included in the fiscal year.') + date_to = fields.Date(string='End Date', required=True, + help='Ending Date, included in the fiscal year.') + company_id = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.company) + + @api.constrains('date_from', 'date_to', 'company_id') + def _check_dates(self): + ''' + Check interleaving between fiscal years. + There are 3 cases to consider: + + s1 s2 e1 e2 + ( [----)----] + + s2 s1 e2 e1 + [----(----] ) + + s1 s2 e2 e1 + ( [----] ) + ''' + for fy in self: + # Starting date must be prior to the ending date + date_from = fy.date_from + date_to = fy.date_to + if date_to < date_from: + raise ValidationError(_('The ending date must not be prior to the starting date.')) + domain = [ + ('id', '!=', fy.id), + ('company_id', '=', fy.company_id.id), + '|', '|', + '&', ('date_from', '<=', fy.date_from), ('date_to', '>=', fy.date_from), + '&', ('date_from', '<=', fy.date_to), ('date_to', '>=', fy.date_to), + '&', ('date_from', '<=', fy.date_from), ('date_to', '>=', fy.date_to), + ] + if self.search_count(domain) > 0: + raise ValidationError(_('You can not have an overlap between two fiscal years, ' + 'please correct the start and/or end dates of your fiscal years.'))