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)
#set currecy_id based on selected COA template using ir.vaalues else current users company's currency
value_id = ir_values.search(cr, uid, [('model', '=', 'account.chart.template'), ('res_id', '=', chart_template_id)], limit=1, context=context)
if value_id:
- currency_id = int(ir_values.browse(cr, uid, val_id[0], context=context).value)
+ currency_id = int(ir_values.browse(cr, uid, value_id[0], context=context).value)
else:
currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id
res['value'].update({'complete_tax_set': data.complete_tax_set, 'currency_id': currency_id})
def default_get(self, cr, uid, fields, context=None):
res = super(wizard_multi_charts_accounts, self).default_get(cr, uid, fields, context=context)
tax_templ_obj = self.pool.get('account.tax.template')
+ data_obj = self.pool.get('ir.model.data')
if 'bank_accounts_id' in fields:
res.update({'bank_accounts_id': [{'acc_name': _('Cash'), 'account_type': 'cash'},{'acc_name': _('Bank'), 'account_type': 'bank'}]})
#in order to set default chart which was last created set max of ids.
chart_id = max(ids)
if context.get("default_charts"):
- chart_id = self.pool.get('ir.model.data').search_read(cr, uid, [('model','=','account.chart.template'),('module','=',context.get("default_charts"))], ['res_id'], context=context)[0]['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"