2
0
account-financial-tools/account_fiscal_year/models/res_company.py

44 lines
1.5 KiB
Python
Raw Normal View History

2016-04-27 15:32:36 +02:00
# Author: Damien Crier
# Copyright 2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
2016-04-27 15:32:36 +02:00
class ResCompany(models.Model):
_inherit = 'res.company'
def find_daterange_fy(self, date):
"""
try to find a date range with type 'fiscalyear'
with @param:date contained in its date_start/date_end interval
"""
fy_id = self.env.ref('account_fiscal_year.fiscalyear')
date_str = fields.Datetime.to_string(date)
2016-04-27 15:32:36 +02:00
s_args = [
('type_id', '=', fy_id.id),
('date_start', '<=', date_str),
('date_end', '>=', date_str),
('company_id', '=', self.id),
]
date_range = self.env['date.range'].search(s_args)
return date_range
@api.multi
def compute_fiscalyear_dates(self, date):
""" Computes the start and end dates of the fiscalyear where the given
'date' belongs to
@param date: a datetime object
@returns: a dictionary with date_from and date_to
"""
self = self[0]
date_range = self.find_daterange_fy(date)
if date_range:
# do stuff and override 'normal' behaviour
return {
'date_from': fields.Date.from_string(date_range[0].date_start),
'date_to': fields.Date.from_string(date_range[0].date_end),
}
else:
# fall back to standard Odoo computation
return super(ResCompany, self).compute_fiscalyear_dates(date)