parent
dcde363845
commit
923aa8b8d4
|
@ -495,6 +495,8 @@ class account_fiscalyear(osv.osv):
|
|||
_columns = {
|
||||
'name': fields.char('Fiscal Year', size=64, required=True),
|
||||
'code': fields.char('Code', size=6, required=True),
|
||||
'company_id': fields.many2one('res.company', 'Company',
|
||||
help="Keep empty if the fiscal year belongs to several companies."),
|
||||
'date_start': fields.date('Start date', required=True),
|
||||
'date_stop': fields.date('End date', required=True),
|
||||
'period_ids': fields.one2many('account.period', 'fiscalyear_id', 'Periods'),
|
||||
|
@ -557,6 +559,8 @@ class account_period(osv.osv):
|
|||
_columns = {
|
||||
'name': fields.char('Period Name', size=64, required=True),
|
||||
'code': fields.char('Code', size=12),
|
||||
'special': fields.boolean('Special Period', size=12,
|
||||
help="Special periods are periods that can overlap, like the 13rd period in fiscal years for closing entries."),
|
||||
'date_start': fields.date('Start of period', required=True, states={'done':[('readonly',True)]}),
|
||||
'date_stop': fields.date('End of period', required=True, states={'done':[('readonly',True)]}),
|
||||
'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, states={'done':[('readonly',True)]}, select=True),
|
||||
|
@ -567,21 +571,28 @@ class account_period(osv.osv):
|
|||
}
|
||||
_order = "date_start"
|
||||
|
||||
def _check_duration(self,cr,uid,ids):
|
||||
def _check_duration(self,cr,uid,ids,context={}):
|
||||
obj_period=self.browse(cr,uid,ids[0])
|
||||
if obj_period.date_stop < obj_period.date_start:
|
||||
return False
|
||||
return True
|
||||
|
||||
def _check_year_limit(self,cr,uid,ids):
|
||||
obj_period=self.browse(cr,uid,ids[0])
|
||||
if obj_period.fiscalyear_id.date_stop < obj_period.date_stop or obj_period.fiscalyear_id.date_stop < obj_period.date_start or obj_period.fiscalyear_id.date_start > obj_period.date_start or obj_period.fiscalyear_id.date_start > obj_period.date_stop:
|
||||
return False
|
||||
def _check_year_limit(self,cr,uid,ids,context={}):
|
||||
for obj_period in self.browse(cr,uid,ids):
|
||||
if obj_period.special:
|
||||
continue
|
||||
if obj_period.fiscalyear_id.date_stop < obj_period.date_stop or obj_period.fiscalyear_id.date_stop < obj_period.date_start or obj_period.fiscalyear_id.date_start > obj_period.date_start or obj_period.fiscalyear_id.date_start > obj_period.date_stop:
|
||||
return False
|
||||
|
||||
pids = self.search(cr, uid, [('date_stop','>=',obj_period.date_start),('date_stop','<=',obj_period.date_start),('special','=',False),('id','<>',obj_period.id)])
|
||||
for period in self.browse(cr, uid, pids):
|
||||
if period.fiscalyear_id.company_id.id==obj_period.fiscalyear_id.company_id.id:
|
||||
return False
|
||||
return True
|
||||
|
||||
_constraints = [
|
||||
(_check_duration, 'Error ! The date duration of the Period(s) is invalid. ', ['date_stop']),
|
||||
(_check_year_limit, 'Error ! The date duration of the Period(s) should be within the limit of the Fiscal year. ', ['date_stop'])
|
||||
(_check_year_limit, 'Invalid period ! Some periods overlap or the date duration is not in the limit of the fiscal year. ', ['date_stop'])
|
||||
]
|
||||
|
||||
def next(self, cr, uid, period, step, context={}):
|
||||
|
|
|
@ -19,30 +19,35 @@
|
|||
|
||||
<record id="period_1" model="account.period">
|
||||
<field eval="'Jan.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-01-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-01-31'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_2" model="account.period">
|
||||
<field eval="'Feb.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-02-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-02-28'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_3" model="account.period">
|
||||
<field eval="'Mar.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-03-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-03-31'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_4" model="account.period">
|
||||
<field eval="'Apr.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-04-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-04-30'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_5" model="account.period">
|
||||
<field eval="'May.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-05-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-05-31'" name="date_stop"/>
|
||||
|
@ -50,41 +55,48 @@
|
|||
<record id="period_6" model="account.period">
|
||||
<field eval="'Jun.'+time.strftime('%Y')" name="name"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field eval="time.strftime('%Y')+'-06-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-06-30'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_7" model="account.period">
|
||||
<field eval="'Jul.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-07-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-07-31'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_8" model="account.period">
|
||||
<field eval="'Aug.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-08-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-08-31'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_9" model="account.period">
|
||||
<field eval="'Sep.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-09-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-09-30'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_10" model="account.period">
|
||||
<field eval="'Oct.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-10-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-10-31'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_11" model="account.period">
|
||||
<field eval="'Nov.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-11-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-11-30'" name="date_stop"/>
|
||||
</record>
|
||||
<record id="period_12" model="account.period">
|
||||
<field eval="'Dec.'+time.strftime('%Y')" name="name"/>
|
||||
<field eval="True" name="special"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field eval="time.strftime('%Y')+'-12-01'" name="date_start"/>
|
||||
<field eval="time.strftime('%Y')+'-12-31'" name="date_stop"/>
|
||||
|
|
Loading…
Reference in New Issue