l[2]['period_id'] = default_period
context['period_id'] = default_period
- if 'line_id' in vals:
+ if vals.get('line_id', False):
c = context.copy()
c['novalidate'] = True
c['period_id'] = vals['period_id'] if 'period_id' in vals else self._get_period(cr, uid, context)
c['journal_id'] = vals['journal_id']
if 'date' in vals: c['date'] = vals['date']
result = super(account_move, self).create(cr, uid, vals, c)
- self.validate(cr, uid, [result], context)
+ tmp = self.validate(cr, uid, [result], context)
+ journal = self.pool.get('account.journal').browse(cr, uid, vals['journal_id'], context)
+ if journal.entry_posted and tmp:
+ self.button_validate(cr,uid, [result], context)
else:
result = super(account_move, self).create(cr, uid, vals, context)
return result
else:
# We can't validate it (it's unbalanced)
# Setting the lines as draft
- obj_move_line.write(cr, uid, line_ids, {
- 'state': 'draft'
- }, context, check=False)
+ not_draft_line_ids = list(set(line_ids) - set(line_draft_ids))
+ if not_draft_line_ids:
+ obj_move_line.write(cr, uid, not_draft_line_ids, {
+ 'state': 'draft'
+ }, context, check=False)
# Create analytic lines for the valid moves
for record in valid_moves:
obj_move_line.create_analytic_lines(cr, uid, [line.id for line in record.line_id], context)
#in order to set default chart which was last created set max of ids.
chart_id = max(ids)
if context.get("default_charts"):
- data_id = data_obj.search(cr, uid, [('model', '=', 'account.chart.template'), ('module', '=', context.get("default_charts"))], context=context)
- chart_id = data_obj.browse(cr, uid, data_id[0], context=context).res_id
+ data_ids = data_obj.search(cr, uid, [('model', '=', 'account.chart.template'), ('module', '=', context.get("default_charts"))], limit=1, context=context)
+ if data_ids:
+ chart_id = data_obj.browse(cr, uid, data_ids[0], context=context).res_id
res.update({'only_one_chart_template': len(ids) == 1, 'chart_template_id': chart_id})
if 'sale_tax' in fields:
sale_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id"