2
0
account-financial-tools/account_move_fiscal_month/models/account_move.py

51 lines
1.5 KiB
Python

# 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_fm_id = fields.Many2one(
comodel_name="date.range",
string="Fiscal month",
compute="_compute_date_range_fm",
search="_search_date_range_fm",
)
@api.depends("date", "company_id")
def _compute_date_range_fm(self):
for rec in self:
date = rec.date
company = rec.company_id
rec.date_range_fm_id = company and company.find_daterange_fm(date) or False
@api.model
def _search_date_range_fm(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["date.range"].search(date_range_domain)
domain = []
for date_range in date_ranges:
domain = expression.OR(
[
domain,
[
"&",
"&",
("date", ">=", date_range.date_start),
("date", "<=", date_range.date_end),
"|",
("company_id", "=", False),
("company_id", "=", date_range.company_id.id),
],
]
)
return domain