2
# -*- coding: utf-8 -*-
3
##############################################################################
5
# OpenERP, Open Source Management Solution
6
# Copyright (C) 2011 TeMPO Consulting, MSF. All Rights Reserved
7
# Developer: Olivier DOSSMANN
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU Affero General Public License as
11
# published by the Free Software Foundation, either version 3 of the
12
# License, or (at your option) any later version.
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU Affero General Public License for more details.
19
# You should have received a copy of the GNU Affero General Public License
20
# along with this program. If not, see <http://www.gnu.org/licenses/>.
22
##############################################################################
24
from time import strftime
27
def get_period_from_date(self, cr, uid, date=False, context=None):
29
Get period in which this date could go into, otherwise return last open period.
30
Do not select special periods (Period 13, 14 and 15).
37
# Search period in which this date come from
38
period_ids = self.pool.get('account.period').search(cr, uid, [('date_start', '<=', date), ('date_stop', '>=', date), ('special', '=', False)], limit=1,
39
order='date_start asc, name asc', context=context) or []
40
# Get last period if no period found
42
period_ids = self.pool.get('account.period').search(cr, uid, [('state', '=', 'open'), ('special', '=', False)], limit=1,
43
order='date_stop desc, name desc', context=context) or []
44
if isinstance(period_ids, (int, long)):
45
period_ids = [period_ids]
48
def get_date_in_period(self, cr, uid, date=None, period_id=None, context=None):
50
Permit to return a date included in period :
51
- if given date is included in period, return the given date
52
- else return the date_stop of given period
56
if not date or not period_id:
58
period = self.pool.get('account.period').browse(cr, uid, period_id, context=context)
59
if date < period.date_start or date > period.date_stop:
60
return period.date_stop
63
class account_period(osv.osv):
64
_name = 'account.period'
65
_inherit = 'account.period'
67
def get_period_from_date(self, cr, uid, date=False, context=None):
68
return get_period_from_date(self, cr, uid, date, context)
70
def get_date_in_period(self, cr, uid, date=None, period_id=None, context=None):
71
return get_date_in_period(self, cr, uid, date, period_id, context)
74
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: