diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index 77e03c23700..46867c8bf23 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -53,7 +53,7 @@ account.analytic.account.tree account.analytic.account tree - child_ids + child_complete_ids diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 03e9a9608cd..4428ba4e9be 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -109,6 +109,20 @@ class account_analytic_account(osv.osv): def _complete_name_calc(self, cr, uid, ids, prop, unknow_none, unknow_dict): res = self.name_get(cr, uid, ids) return dict(res) + + def _child_compute(self, cr, uid, ids, name, arg, context=None): + result = {} + if context is None: + context = {} + + for account in self.browse(cr, uid, ids, context=context): + for child in account.child_ids: + if child.state == 'template': + account.child_ids.pop(account.child_ids.index(child)) + result[account.id] = map(lambda x: x.id, account.child_ids) + + return result + _columns = { 'name': fields.char('Account Name', size=128, required=True), @@ -118,6 +132,7 @@ class account_analytic_account(osv.osv): 'description': fields.text('Description'), 'parent_id': fields.many2one('account.analytic.account', 'Parent Analytic Account', select=2), 'child_ids': fields.one2many('account.analytic.account', 'parent_id', 'Child Accounts'), + 'child_complete_ids': fields.function(_child_compute, relation='account.analytic.account', method=True, string="Account Hierarchy", type='many2many'), 'line_ids': fields.one2many('account.analytic.line', 'account_id', 'Analytic Entries'), 'balance': fields.function(_debit_credit_bal_qtty, method=True, type='float', string='Balance', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')), 'debit': fields.function(_debit_credit_bal_qtty, method=True, type='float', string='Debit', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),