[FIX] account_move_line: uninitialized period_id

bzr revid: ara@tinyerp.com-20110706100701-uhrlstsidienzx09
This commit is contained in:
ARA (OpenERP) 2011-07-06 15:37:01 +05:30
parent 12d7cee094
commit e5fd3c18ac
1 changed files with 11 additions and 32 deletions

View File

@ -590,10 +590,21 @@ class account_move_line(osv.osv):
return False
return True
def _check_date(self, cr, uid, ids, context=None):
if context is None:
context = {}
lines = self.browse(cr, uid, ids, context=context)
for l in lines:
if l.journal_id.allow_date:
if not time.strptime(l.date[:10],'%Y-%m-%d') >= time.strptime(l.period_id.date_start, '%Y-%m-%d') or not time.strptime(l.date[:10], '%Y-%m-%d') <= time.strptime(l.period_id.date_stop, '%Y-%m-%d'):
return False
return True
_constraints = [
(_check_no_view, 'You can not create move line on view account.', ['account_id']),
(_check_no_closed, 'You can not create move line on closed account.', ['account_id']),
(_check_company_id, 'Company must be same for its related account and period.',['company_id'] ),
(_check_date, 'The date of your Journal Entry is not in the defined period!',['date'] ),
]
#TODO: ONCHANGE_ACCOUNT_ID: set account_tax_id
@ -1100,36 +1111,6 @@ class account_move_line(osv.osv):
move_obj.validate(cr, uid, move_ids, context=context)
return result
def _check_date(self, cr, uid, vals, context=None, check=True):
if context is None:
context = {}
move_obj = self.pool.get('account.move')
journal_obj = self.pool.get('account.journal')
period_obj = self.pool.get('account.period')
journal_id = False
period_id = False
if 'date' in vals.keys():
if 'journal_id' in vals and 'journal_id' not in context:
journal_id = vals['journal_id']
if 'period_id' in vals and 'period_id' not in context:
period_id = vals['period_id']
elif 'journal_id' not in context and 'move_id' in vals:
if vals.get('move_id', False):
m = move_obj.browse(cr, uid, vals['move_id'])
journal_id = m.journal_id.id
period_id = m.period_id.id
else:
journal_id = context.get('journal_id', False)
period_id = context.get('period_id', False)
if journal_id:
journal = journal_obj.browse(cr, uid, journal_id, context=context)
if journal.allow_date and period_id:
period = period_obj.browse(cr, uid, period_id, context=context)
if not time.strptime(vals['date'][:10],'%Y-%m-%d') >= time.strptime(period.date_start, '%Y-%m-%d') or not time.strptime(vals['date'][:10], '%Y-%m-%d') <= time.strptime(period.date_stop, '%Y-%m-%d'):
raise osv.except_osv(_('Error'),_('The date of your Journal Entry is not in the defined period!'))
else:
return True
def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True):
if context is None:
context={}
@ -1140,7 +1121,6 @@ class account_move_line(osv.osv):
ids = [ids]
if vals.get('account_tax_id', False):
raise osv.except_osv(_('Unable to change tax !'), _('You can not change the tax, you should remove and recreate lines !'))
self._check_date(cr, uid, vals, context, check)
if ('account_id' in vals) and not account_obj.read(cr, uid, vals['account_id'], ['active'])['active']:
raise osv.except_osv(_('Bad account!'), _('You can not use an inactive account!'))
if update_check:
@ -1234,7 +1214,6 @@ class account_move_line(osv.osv):
m = move_obj.browse(cr, uid, vals['move_id'])
context['journal_id'] = m.journal_id.id
context['period_id'] = m.period_id.id
self._check_date(cr, uid, vals, context, check)
self._update_journal_check(cr, uid, context['journal_id'], context['period_id'], context)
move_id = vals.get('move_id', False)
journal = journal_obj.browse(cr, uid, context['journal_id'], context=context)