diff --git a/addons/account/account.py b/addons/account/account.py index 33002de6b2d..c3cd13a8115 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -287,20 +287,20 @@ class account_account(osv.osv): sums = {} while brs: current = brs[0] - can_compute = True - for child in current.child_id: - if child.id not in sums: - can_compute = False - try: - brs.insert(0, brs.pop(brs.index(child))) - except ValueError: - brs.insert(0, child) - if can_compute: - brs.pop(0) - for fn in field_names: - sums.setdefault(current.id, {})[fn] = accounts.get(current.id, {}).get(fn, 0.0) - if current.child_id: - sums[current.id][fn] += sum(sums[child.id][fn] for child in current.child_id) +# can_compute = True +# for child in current.child_id: +# if child.id not in sums: +# can_compute = False +# try: +# brs.insert(0, brs.pop(brs.index(child))) +# except ValueError: +# brs.insert(0, child) +# if can_compute: + brs.pop(0) + for fn in field_names: + sums.setdefault(current.id, {})[fn] = accounts.get(current.id, {}).get(fn, 0.0) + if current.child_id: + sums[current.id][fn] += sum(sums[child.id][fn] for child in current.child_id) res = {} null_result = dict((fn, 0.0) for fn in field_names) for id in ids: @@ -627,10 +627,13 @@ class account_journal(osv.osv): return super(account_journal, self).copy(cr, uid, id, default, context=context) def write(self, cr, uid, ids, vals, context=None): - if 'company_id' in vals: - move_lines = self.pool.get('account.move.line').search(cr, uid, [('journal_id', 'in', ids)]) - if move_lines: - raise osv.except_osv(_('Warning !'), _('You cannot modify company of this journal as its related record exist in Entry Lines')) + if context is None: + context = {} + for journal in self.browse(cr, uid, ids, context=context): + if 'company_id' in vals and journal.company_id.id != vals['company_id']: + move_lines = self.pool.get('account.move.line').search(cr, uid, [('journal_id', 'in', ids)]) + if move_lines: + raise osv.except_osv(_('Warning !'), _('You cannot modify company of this journal as its related record exist in Entry Lines')) return super(account_journal, self).write(cr, uid, ids, vals, context=context) def create_sequence(self, cr, uid, vals, context=None): @@ -722,7 +725,7 @@ class account_journal(osv.osv): res = {} - view_id = type_map.get(type, 'general') + view_id = type_map.get(type, 'account_journal_view') user = user_pool.browse(cr, uid, uid) if type in ('cash', 'bank') and currency and user.company_id.currency_id.id != currency: @@ -2677,7 +2680,8 @@ class wizard_multi_charts_accounts(osv.osv_memory): tax_template_ref[tax.id] = new_tax #deactivate the parent_store functionnality on account_account for rapidity purpose - self.pool._init = True + ctx = context and context.copy() or {} + ctx['defer_parent_store_computation'] = True children_acc_template = obj_acc_template.search(cr, uid, [('parent_id','child_of',[obj_acc_root.id]),('nocreate','!=',True)]) children_acc_template.sort() @@ -2705,17 +2709,16 @@ class wizard_multi_charts_accounts(osv.osv_memory): 'tax_ids': [(6,0,tax_ids)], 'company_id': company_id, } - new_account = obj_acc.create(cr, uid, vals) + new_account = obj_acc.create(cr, uid, vals, context=ctx) acc_template_ref[account_template.id] = new_account #reactivate the parent_store functionnality on account_account - self.pool._init = False self.pool.get('account.account')._parent_store_compute(cr) for key,value in todo_dict.items(): if value['account_collected_id'] or value['account_paid_id']: obj_acc_tax.write(cr, uid, [key], { - 'account_collected_id': acc_template_ref[value['account_collected_id']], - 'account_paid_id': acc_template_ref[value['account_paid_id']], + 'account_collected_id': acc_template_ref.get(value['account_collected_id'], False), + 'account_paid_id': acc_template_ref.get(value['account_paid_id'], False), }) # Creating Journals Sales and Purchase @@ -2856,7 +2859,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): 'name': tmp, 'currency_id': line.currency_id and line.currency_id.id or False, 'code': new_code, - 'type': 'other', + 'type': 'liquidity', 'user_type': account_template.user_type and account_template.user_type.id or False, 'reconcile': True, 'parent_id': acc_template_ref[ref_acc_bank.id] or False, @@ -2878,7 +2881,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): vals_journal['name']= vals['name'] vals_journal['code']= _('BNK') + str(current_num) vals_journal['sequence_id'] = seq_id - vals_journal['type'] = 'cash' + vals_journal['type'] = line.account_type == 'cash' and 'cash' or 'bank' vals_journal['company_id'] = company_id vals_journal['analytic_journal_id'] = analitical_journal_bank diff --git a/addons/account/account_analytic_line.py b/addons/account/account_analytic_line.py index a8d8044a6c2..e24e763ff56 100644 --- a/addons/account/account_analytic_line.py +++ b/addons/account/account_analytic_line.py @@ -31,9 +31,9 @@ class account_analytic_line(osv.osv): _columns = { 'product_uom_id': fields.many2one('product.uom', 'UoM'), 'product_id': fields.many2one('product.product', 'Product'), - 'general_account_id': fields.many2one('account.account', 'General Account', required=True, ondelete='cascade'), - 'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='cascade', select=True), - 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='cascade', select=True), + 'general_account_id': fields.many2one('account.account', 'General Account', required=True, ondelete='restrict'), + 'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='restrict', select=True), + 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True), 'code': fields.char('Code', size=8), 'ref': fields.char('Ref.', size=64), 'currency_id': fields.related('move_id', 'currency_id', type='many2one', relation='res.currency', string='Account currency', store=True, help="The related account currency if not equal to the company one.", readonly=True), diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index ab2f72e92dd..e96b8b1f0fb 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -432,7 +432,7 @@ class account_bank_statement_line(osv.osv): _columns = { 'name': fields.char('Communication', size=64, required=True), 'date': fields.date('Date', required=True), - 'amount': fields.float('Amount'), + 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')), 'type': fields.selection([ ('supplier','Supplier'), ('customer','Customer'), diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index c6542758952..f8f482dfdda 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -302,7 +302,7 @@ - +