# Copyright 2017 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models from odoo.osv import expression class AccountMove(models.Model): _inherit = "account.move" date_range_fy_id = fields.Many2one( comodel_name="account.fiscal.year", string="Fiscal year", compute="_compute_date_range_fy", search="_search_date_range_fy", ) @api.depends("date", "company_id") def _compute_date_range_fy(self): for rec in self: date = fields.Date.to_date(rec.date) company = rec.company_id rec.date_range_fy_id = company and company.find_daterange_fy(date) or False @api.model def _search_date_range_fy(self, operator, value): if operator in ("=", "!=", "in", "not in"): date_range_domain = [("id", operator, value)] else: date_range_domain = [("name", operator, value)] date_ranges = self.env["account.fiscal.year"].search(date_range_domain) domain = [("id", "=", -1)] for date_range in date_ranges: domain = expression.OR( [ domain, [ "&", ("date", ">=", date_range.date_from), ("date", "<=", date_range.date_to), "|", ("company_id", "=", False), ("company_id", "=", date_range.company_id.id), ], ] ) return domain