Rohan Nayani(Open ERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-l10n-control-dev-parent-child-load-coa-templates-ron
 into lp:~openerp-dev/openobject-addons/trunk-l10n-control-dev.

Requested reviews:
  Rucha (Open ERP) (rpa-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-l10n-control-dev-parent-child-load-coa-templates-ron/+merge/74343

Hello,

1)
*Added parent_id field on account.chart.template object.
*COA template that can be linked to another COA template (parent_id). If you 
select a COA template with a parent, you must first load the parent then load 
the templates define in the selected COA.(can be recursively)
*created two function _install_template() and _load_template() 

2)Improved in demo to add reference to COA template.

3)Improved in function[generate_journals()] creating bank journals in order to 
pass less params on all related functions.


Thanks
RON
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-l10n-control-dev-parent-child-load-coa-templates-ron/+merge/74343
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-l10n-control-dev.
=== modified file 'account/account.py'
--- account/account.py	2011-08-18 06:01:58 +0000
+++ account/account.py	2011-09-07 05:38:24 +0000
@@ -2340,6 +2340,7 @@
         'child_parent_ids':fields.one2many('account.account.template', 'parent_id', 'Children'),
         'tax_ids': fields.many2many('account.tax.template', 'account_account_template_tax_rel', 'account_id', 'tax_id', 'Default Taxes'),
         'nocreate': fields.boolean('Optional create', help="If checked, the new chart of accounts will not contain this by default."),
+        'chart_template_id': fields.many2one('account.chart.template', 'Chart Template'),
     }
 
     _defaults = {
@@ -2376,7 +2377,7 @@
             res.append((record['id'],name ))
         return res
 
-    def generate_account(self, cr, uid, account_root_id, tax_template_ref, code_digits, company_id, context=None):
+    def generate_account(self, cr, uid, template_id, tax_template_ref, code_digits, company_id, context=None):
         """
         This method for generating accounts from templates.
         @param cr: A database cursor.
@@ -2391,11 +2392,13 @@
         if context is None:
             context = {}
         obj_acc = self.pool.get('account.account')
+        company_name = self.pool.get('res.company').browse(cr, uid, company_id, context=context).name
+        template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context)
         acc_template_ref = {}
         #deactivate the parent_store functionnality on account_account for rapidity purpose
         ctx = context.copy()
         ctx.update({'defer_parent_store_computation': True})
-        children_acc_template = self.search(cr, uid, [('parent_id','child_of', [account_root_id]),('nocreate','!=',True)], order='id')
+        children_acc_template = self.search(cr, uid, [('parent_id','child_of', [template.account_root_id.id]),'|', ('chart_template_id','=', [template_id]),('chart_template_id','=', False), ('nocreate','!=',True)], order='id')
         for account_template in self.browse(cr, uid, children_acc_template, context=context):
             tax_ids = []
             for tax in account_template.tax_ids:
@@ -2406,7 +2409,7 @@
             if code_main > 0 and code_main <= code_digits and account_template.type != 'view':
                 code_acc = str(code_acc) + (str('0'*(code_digits-code_main)))
             vals={
-                'name': (account_root_id == account_template.id) and company_id.name or account_template.name,
+                'name': (template.account_root_id.id == account_template.id) and company_name or account_template.name,
                 'currency_id': account_template.currency_id and account_template.currency_id.id or False,
                 'code': code_acc,
                 'type': account_template.type,
@@ -2416,7 +2419,7 @@
                 'note': account_template.note,
                 'parent_id': account_template.parent_id and ((account_template.parent_id.id in acc_template_ref) and acc_template_ref[account_template.parent_id.id]) or False,
                 'tax_ids': [(6,0,tax_ids)],
-                'company_id': company_id.id,
+                'company_id': company_id,
             }
             new_account = obj_acc.create(cr, uid, vals, context=ctx)
             acc_template_ref[account_template.id] = new_account
@@ -2861,7 +2864,17 @@
                     res['fields'][field]['selection'] = template_select
         return res
 
-    def generate_journals(self, cr, uid, chart_template_id, acc_template_ref, company_id, context=None):
+    def check_created_journals(self, cr, uid, vals_journal, company_id, context=None):
+        """
+        This method used for checking journals already created or not. If not then create new journal.
+        """
+        obj_journal = self.pool.get('account.journal')
+        rec_list = obj_journal.search(cr, uid, [('name','=', vals_journal['name']),('company_id', '=', company_id)], context=context)
+        if not rec_list:
+            obj_journal.create(cr, uid, vals_journal, context=context)
+        return True
+
+    def generate_journals(self, cr, uid, chart_template_id, acc_template_ref, company_id, code_digits, context=None):
         """
         This method used for creating journals.
         @param cr: A database cursor.
@@ -2874,19 +2887,20 @@
         obj_data = self.pool.get('ir.model.data')
         analytic_journal_obj = self.pool.get('account.analytic.journal')
         obj_journal = self.pool.get('account.journal')
+        obj_acc = self.pool.get('account.account')
+        template = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context)
 
         data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_journal_view') 
         view_id = data and data[1] or False
 
-        income_acc_id = acc_template_ref.get(chart_template_id.property_account_income_categ.id)
-        expense_acc_id = acc_template_ref.get(chart_template_id.property_account_expense_categ.id)
-        credit_acc_id = acc_template_ref.get(chart_template_id.property_account_income_opening.id)
-        debit_acc_id = acc_template_ref.get(chart_template_id.property_account_expense_opening.id)
+        income_acc_id = acc_template_ref.get(template.property_account_income_categ.id)
+        expense_acc_id = acc_template_ref.get(template.property_account_expense_categ.id)
+        credit_acc_id = acc_template_ref.get(template.property_account_income_opening.id)
+        debit_acc_id = acc_template_ref.get(template.property_account_expense_opening.id)
                 
         #Sales Journal
         analytical_sale_ids = analytic_journal_obj.search(cr, uid, [('type','=','sale')], context=context)
         analytical_journal_sale = analytical_sale_ids and analytical_sale_ids[0] or False
-
         vals_journal = {
             'name': _('Sales Journal'),
             'type': 'sale',
@@ -2896,12 +2910,12 @@
             'analytic_journal_id': analytical_journal_sale,
         }
 
-        if chart_template_id.property_account_receivable:
+        if template.property_account_receivable:
             vals_journal.update({
                             'default_credit_account_id': income_acc_id,
                             'default_debit_account_id': income_acc_id
                                })
-        obj_journal.create(cr, uid, vals_journal, context=context)
+        self.check_created_journals(cr, uid, vals_journal, company_id, context=context)
 
         # Purchase Journal
         analytical_purchase_ids = analytic_journal_obj.search(cr,uid,[('type','=','purchase')], context=context)
@@ -2916,12 +2930,12 @@
             'analytic_journal_id': analytical_journal_purchase,
         }
 
-        if chart_template_id.property_account_payable:
+        if template.property_account_payable:
             vals_journal.update({
                             'default_credit_account_id': expense_acc_id,
                             'default_debit_account_id': expense_acc_id
                                })
-        obj_journal.create(cr, uid, vals_journal, context=context)
+        self.check_created_journals(cr, uid, vals_journal, company_id, context=context)
 
         # Creating Journals Sales Refund and Purchase Refund
         data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_refund_journal_view') 
@@ -2936,12 +2950,12 @@
             'analytic_journal_id': analytical_journal_sale,
             'company_id': company_id
         }
-        if chart_template_id.property_account_receivable:
+        if template.property_account_receivable:
             vals_journal.update({
                             'default_credit_account_id': income_acc_id,
                             'default_debit_account_id': income_acc_id
                                })
-        obj_journal.create(cr, uid, vals_journal, context=context)
+        self.check_created_journals(cr, uid, vals_journal, company_id, context=context)
 
         # Purchase Refund Journal
         vals_journal = {
@@ -2952,12 +2966,12 @@
             'analytic_journal_id': analytical_journal_purchase,
             'company_id': company_id
         }
-        if chart_template_id.property_account_payable:
+        if template.property_account_payable:
             vals_journal.update({
                             'default_credit_account_id': expense_acc_id,
                             'default_debit_account_id': expense_acc_id
                                })
-        obj_journal.create(cr, uid, vals_journal, context=context)
+        self.check_created_journals(cr, uid, vals_journal, company_id, context=context)
 
         # Miscellaneous Journal
         data = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_view') 
@@ -2973,10 +2987,10 @@
             'analytic_journal_id': analytical_miscellaneous_ids and analytical_miscellaneous_ids[0] or False,
             'company_id': company_id
         }
-        obj_journal.create(cr, uid, vals_journal, context=context)
+        self.check_created_journals(cr, uid, vals_journal, company_id, context=context)
 
         # Opening Entries Journal
-        if chart_template_id.property_account_income_opening and chart_template_id.property_account_expense_opening:
+        if template.property_account_income_opening and template.property_account_expense_opening:
             vals_journal = {
                 'name': _('Opening Entries Journal'),
                 'type': 'situation',
@@ -2987,7 +3001,14 @@
                 'default_credit_account_id': credit_acc_id,
                 'default_debit_account_id': debit_acc_id
                 }
-            obj_journal.create(cr, uid, vals_journal, context=context)
+            self.check_created_journals(cr, uid, vals_journal, company_id, context=context)
+
+        data = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_bank_view_multi') 
+        view_id_cur = data and data[1] or False
+
+        data = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_bank_view') 
+        view_id_cash = data and data[1] or False
+            
         return True
 
     def generate_properties(self, cr, uid, chart_template_id, acc_template_ref, company_id, context=None):
@@ -3000,8 +3021,6 @@
         @param company_id: company_id selected from wizard.multi.charts.accounts.
         """
         
-        if context is None:
-            context = {}
         property_obj = self.pool.get('ir.property')
         field_obj = self.pool.get('ir.model.fields')
         todo_list = [
@@ -3035,30 +3054,25 @@
         
         return True
 
-    def execute(self, cr, uid, ids, context=None):
-        obj_multi = self.browse(cr, uid, ids[0])
-        obj_acc = self.pool.get('account.account')
+    def _install_template(self, cr, uid, template_id, company_id, code_digits=None ,tax_data={}, context=None):
+        template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context)
+        if template.parent_id:
+            self._install_template(cr, uid, template.parent_id.id, company_id, code_digits=code_digits, context=context)
+        return self._load_template(cr, uid, template_id, company_id, code_digits=code_digits, tax_data=tax_data,context=context)
+
+    def _load_template(self, cr, uid, template_id, company_id, code_digits=None, tax_data={}, context=None):
+        template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context)
+        obj_tax_code_template = self.pool.get('account.tax.code.template')
         obj_acc_tax = self.pool.get('account.tax')
+        obj_tax_code = self.pool.get('account.tax.code')
         obj_tax_temp = self.pool.get('account.tax.template')
-        obj_journal = self.pool.get('account.journal')
         obj_acc_template = self.pool.get('account.account.template')
         obj_fiscal_position_template = self.pool.get('account.fiscal.position.template')
-        obj_data = self.pool.get('ir.model.data')
-        analytic_journal_obj = self.pool.get('account.analytic.journal')
-        obj_tax_code = self.pool.get('account.tax.code')
-        obj_tax_code_template = self.pool.get('account.tax.code.template')
         ir_values_obj = self.pool.get('ir.values')
-        # Creating Account
-        obj_acc_root = obj_multi.chart_template_id.account_root_id
-        tax_code_root_id = obj_multi.chart_template_id.tax_code_root_id.id
-        company_id = obj_multi.company_id.id
-        chart_temp_id = obj_multi.chart_template_id.id
-
-        tax_code_template_ref = {}
 
         # create tax templates and real taxes from purchase_tax_rate,sale_tax_rate fields
-        if not obj_multi.complete_tax:
-            tax_dict = {'sale': obj_multi.sale_tax_rate, 'purchase': obj_multi.purchase_tax_rate}
+        if not template.set_tax_complete and tax_data:
+            tax_dict = {'sale': tax_data['sale'], 'purchase': tax_data['purchase']}
             for tax_type, value in tax_dict.items():
                 tax_name = tax_type == 'sale' and 'TAX Received' or 'TAX Paid'
                 if value > 0.0:
@@ -3077,73 +3091,114 @@
                                             'installable': True,
                                             'type': 'percent',
                                             'sequence': 0,
-                                            'chart_template_id': chart_temp_id or False,
+                                            'chart_template_id': template_id or False,
                                 }, context=context)
 
-        #create all the tax code
+
+        # create all the tax code.
+        tax_code_template_ref = {}
+        tax_code_root_id = template.tax_code_root_id.id
         children_tax_code_template = obj_tax_code_template.search(cr, uid, [('parent_id','child_of',[tax_code_root_id])], order='id')
-        children_tax_code_template.sort()
+        company_name = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
         for tax_code_template in obj_tax_code_template.browse(cr, uid, children_tax_code_template, context=context):
             vals = {
-                'name': (tax_code_root_id == tax_code_template.id) and obj_multi.company_id.name or tax_code_template.name,
+                'name': (tax_code_root_id == tax_code_template.id) and company_name.name or tax_code_template.name,
                 'code': tax_code_template.code,
                 'info': tax_code_template.info,
                 'parent_id': tax_code_template.parent_id and ((tax_code_template.parent_id.id in tax_code_template_ref) and tax_code_template_ref[tax_code_template.parent_id.id]) or False,
                 'company_id': company_id,
                 'sign': tax_code_template.sign,
             }
-            new_tax_code = obj_tax_code.create(cr, uid, vals)
-            #recording the new tax code to do the mapping
-            tax_code_template_ref[tax_code_template.id] = new_tax_code
+            rec_list = obj_tax_code.search(cr, uid, [('name', '=', vals['name']),('company_id', '=', vals['company_id'])], context=context)
+            if not rec_list:
+                new_tax_code = obj_tax_code.create(cr, uid, vals)
+                #recording the new tax code to do the mapping
+                tax_code_template_ref[tax_code_template.id] = new_tax_code
 
-        #Generate taxes from templates.
+        # Generate taxes from templates.
         tax_template_to_tax = {}
-        tax_templates = [x for x in obj_multi.chart_template_id.tax_template_ids if x.installable]
-        taxes_ids = obj_tax_temp.generate_tax(cr, uid, tax_templates, tax_code_template_ref, company_id, context=context)
-
-        #Generating Accounts from templates.
-        acc_template_ref = obj_acc_template.generate_account(cr, uid, obj_acc_root.id, taxes_ids['tax_template_ref'], obj_multi.code_digits, obj_multi.company_id, context=context)
-
-        for key,value in taxes_ids['account_dict'].items():
+        tax_templates = [x for x in template.tax_template_ids if x.installable]
+        taxes_ref = obj_tax_temp.generate_tax(cr, uid, tax_templates, tax_code_template_ref, company_id, context=context)
+
+        # Generating Accounts from templates.
+        acc_template_ref = obj_acc_template.generate_account(cr, uid, template_id, taxes_ref['tax_template_ref'], code_digits, company_id, context=context)
+
+        # writing account values on tax after creation of accounts
+        for key,value in taxes_ref['account_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.get(value['account_collected_id'], False),
                     'account_paid_id': acc_template_ref.get(value['account_paid_id'], False),
                 })
-        #This method for creating Journals.
-        self.generate_journals(cr, uid, obj_multi.chart_template_id, acc_template_ref, company_id, context)
-
-        # Bank Journals
-        data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_bank_view')])
-        data = obj_data.browse(cr, uid, data_id[0], context=context)
-        view_id_cash = data.res_id
-
-        data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_bank_view_multi')])
-        data = obj_data.browse(cr, uid, data_id[0], context=context)
-        view_id_cur = data.res_id
+        
+        # Create Jourals
+        self.generate_journals(cr, uid, template_id, acc_template_ref, company_id, code_digits, context)
+
+        # generate properties function
+        self.generate_properties(cr, uid, template_id, acc_template_ref, company_id, context=context)
+
+        # Generate Fiscal Position , Fiscal Position Accounts and Fiscal Position Taxes from templates
+        obj_fiscal_position_template.generate_fiscal_position(cr, uid, template_id, taxes_ref['tax_template_ref'], acc_template_ref, company_id, context=context)
+
+        # write values of default taxes for product
+        if tax_data:
+            if tax_data['sale_tax'] and taxes_ref['taxes_id']:
+                ir_values_obj.set(cr, uid, key='default', key2=False, name="taxes_id", company=company_id,
+                                models =[('product.product',False)], value=[taxes_ref['taxes_id'][tax_data['sale_tax']]])
+            if tax_data['purchase_tax'] and taxes_ref['taxes_id']:
+                ir_values_obj.set(cr, uid, key='default', key2=False, name="supplier_taxes_id", company=company_id,
+                                models =[('product.product',False)], value=[taxes_ref['taxes_id'][tax_data['purchase_tax']]])
+        return acc_template_ref
+
+    def execute(self, cr, uid, ids, context=None):
+        obj_acc = self.pool.get('account.account')
+        obj_journal = self.pool.get('account.journal')
+        
+        obj_multi = self.browse(cr, uid, ids[0])
+        company_id = obj_multi.company_id.id
+
+        code_digits = obj_multi.code_digits
         ref_acc_bank = obj_multi.chart_template_id.bank_account_view_id
 
+        journal_data = []
+        tax_data = {
+                    'sale': obj_multi.sale_tax_rate, 
+                    'purchase': obj_multi.purchase_tax_rate, 
+                    'sale_tax': obj_multi.complete_tax and obj_multi.sale_tax.id or False, 
+                    'purchase_tax': obj_multi.complete_tax and obj_multi.purchase_tax.id or False, 
+                     }
+
+        acc_temp_ref = self._install_template(cr, uid, obj_multi.chart_template_id.id, company_id, code_digits=code_digits, tax_data=tax_data, context=context)                         
+        if obj_multi.bank_accounts_id:
+            for acc in obj_multi.bank_accounts_id:
+                journal_data.append({
+                            'acc_name': acc.acc_name,
+                            'account_type': acc.account_type,
+                            'currency_id': acc.currency_id.id,
+                            })
+        
+        #Create Bank journals
         current_num = 1
         valid = True
-        for line in obj_multi.bank_accounts_id:
+        for line in journal_data:
             #create the account_account for this bank journal
-            tmp = line.acc_name
-            dig = obj_multi.code_digits
             if not ref_acc_bank.code:
                 raise osv.except_osv(_('Configuration Error !'), _('The bank account defined on the selected chart of account hasn\'t a code.'))
             while True:
-                new_code = str(ref_acc_bank.code.ljust(dig-len(str(current_num)), '0')) + str(current_num)
+                new_code = str(ref_acc_bank.code.ljust(code_digits-len(str(current_num)), '0')) + str(current_num)
                 ids = obj_acc.search(cr, uid, [('code', '=', new_code), ('company_id', '=', company_id)])
                 if not ids:
                     break
                 else:
                     current_num += 1
+            #TODO: create proper user_type for account creation.
+            user_type = self.pool.get('account.account.type').search(cr, uid, [('name', '=', line['account_type'])], context=context)
             vals = {
-                'name': tmp,
-                'currency_id': line.currency_id and line.currency_id.id or False,
+                'name': line['acc_name'],
+                'currency_id': line['currency_id'],
                 'code': new_code,
                 'type': 'liquidity',
-                'user_type': account_template.user_type and account_template.user_type.id or False,
+                'user_type': 1,
                 'reconcile': True,
                 'parent_id': acc_template_ref[ref_acc_bank.id] or False,
                 'company_id': company_id,
@@ -3154,14 +3209,14 @@
             vals_journal = {
                 'name': vals['name'],
                 'code': _('BNK') + str(current_num),
-                'type': line.account_type == 'cash' and 'cash' or 'bank',
+                'type': line['account_type'] == 'cash' and 'cash' or 'bank',
                 'company_id': company_id,
                 'analytic_journal_id': False,
                 'currency_id': False,
             }
-            if line.currency_id:
+            if line['currency_id']:
                 vals_journal['view_id'] = view_id_cur
-                vals_journal['currency'] = line.currency_id.id
+                vals_journal['currency'] = line['currency_id']
             else:
                 vals_journal['view_id'] = view_id_cash
             vals_journal['default_credit_account_id'] = acc_cash_id
@@ -3169,19 +3224,8 @@
             obj_journal.create(cr, uid, vals_journal)
             current_num += 1
             valid = True
-
-        #This method used for creating properties.
-        self.generate_properties(cr, uid, chart_temp_id, acc_template_ref, company_id, context=context)
-
-        #Generate Fiscal Position , Fiscal Position Accounts and Fiscal Position Taxes from templates
-        obj_fiscal_position_template.generate_fiscal_position(cr, uid, chart_temp_id, taxes_ids['tax_template_ref'], acc_template_ref, company_id, context=context)
-
-        if obj_multi.sale_tax and taxes_ids['taxes_id']:
-            ir_values_obj.set(cr, uid, key='default', key2=False, name="taxes_id", company=obj_multi.company_id.id,
-                            models =[('product.product',False)], value=[taxes_ids['taxes_id'][obj_multi.sale_tax.id]])
-        if obj_multi.purchase_tax and taxes_ids['taxes_id']:
-            ir_values_obj.set(cr, uid, key='default', key2=False, name="supplier_taxes_id", company=obj_multi.company_id.id,
-                            models =[('product.product',False)], value=[taxes_ids['taxes_id'][obj_multi.purchase_tax.id]])
+        return True
+
 
 wizard_multi_charts_accounts()
 

=== modified file 'account/account_view.xml'
--- account/account_view.xml	2011-08-17 20:46:53 +0000
+++ account/account_view.xml	2011-09-07 05:38:24 +0000
@@ -2064,6 +2064,7 @@
 
                             <field name="currency_id"/>
                             <field name="reconcile"/>
+                            <field name="chart_template_id"/>
                             <separator string="Default taxes" colspan="4"/>
                             <field name="tax_ids" colspan="4" nolabel="1"/>
                         </page>

=== modified file 'l10n_multilang/l10n_multilang_demo.xml'
--- l10n_multilang/l10n_multilang_demo.xml	2011-08-17 13:08:32 +0000
+++ l10n_multilang/l10n_multilang_demo.xml	2011-09-07 05:38:24 +0000
@@ -42,6 +42,19 @@
 	        <field name="report_type">asset</field>
 	    </record>
 
+        <!-- Chart template -->
+        <record id="account_chart_template_a" model="account.chart.template">
+            <field name="name">Demo Chart A</field>
+        </record>
+
+        <record id="account_chart_template_b" model="account.chart.template">
+            <field name="name">Demo Chart B</field>
+        </record>
+
+        <record id="account_chart_template_c" model="account.chart.template">
+            <field name="name">Demo Chart C</field>
+        </record>
+
         <!-- Account Templates for A -->
 
         <record model="account.account.template" id="chart_a_root">
@@ -50,6 +63,7 @@
             <field name="type">view</field>
             <field name="user_type" ref="account_type_view"/>
             <field name="reconcile" eval="False"/>
+            <field name="chart_template_id" ref="account_chart_template_a"/>
         </record>
 
         <record model="account.account.template" id="chart_a0">
@@ -59,6 +73,7 @@
             <field name="user_type" ref="account_type_view"/>
             <field name="reconcile" eval="False"/>
             <field name="parent_id" ref="chart_a_root"/>
+            <field name="chart_template_id" ref="account_chart_template_a"/>
         </record>
 
         <record model="account.account.template" id="chart_a1">
@@ -68,14 +83,16 @@
             <field name="user_type" ref="account_type_view"/>
             <field name="reconcile" eval="False"/>
             <field name="parent_id" ref="chart_a_root"/>
+            <field name="chart_template_id" ref="account_chart_template_a"/>
         </record>
 
         <record id="chart_a2" model="account.account.template">
             <field name="code">A0011</field>
-            <field name="name">Bank Account</field>
+            <field name="name">Bank Account A</field>
             <field ref="chart_a0" name="parent_id"/>
             <field name="type">view</field>
             <field name="user_type" ref="account_type_view"/>
+            <field name="chart_template_id" ref="account_chart_template_a"/>
         </record>
 
         <!-- Tax Code template for A-->
@@ -95,6 +112,7 @@
 
 
         <!-- Account Templates for B -->
+
         <record model="account.account.template" id="chart_b1">
             <field name="name">Assets B</field>
             <field name="code">B00012</field>
@@ -102,6 +120,7 @@
             <field name="user_type" ref="acct_type_asset_view"/>
             <field name="reconcile" eval="False"/>
             <field name="parent_id" ref="chart_a0"/>
+            <field name="chart_template_id" ref="account_chart_template_b"/>
         </record>
 
         <record model="account.account.template" id="chart_b2">
@@ -111,6 +130,7 @@
             <field name="user_type" ref="acct_type_liability_view"/>
             <field name="reconcile" eval="False"/>
             <field name="parent_id" ref="chart_a0"/>
+            <field name="chart_template_id" ref="account_chart_template_b"/>
         </record>
 
         <record model="account.account.template" id="chart_b3">
@@ -120,6 +140,7 @@
             <field name="user_type" ref="account_type_receivable"/>
             <field name="reconcile" eval="False"/>
             <field name="parent_id" ref="chart_a1"/>
+            <field name="chart_template_id" ref="account_chart_template_b"/>
         </record>
 
         <record model="account.account.template" id="chart_b4">
@@ -129,6 +150,7 @@
             <field name="user_type" ref="account_type_payable"/>
             <field name="reconcile" eval="False"/>
             <field name="parent_id" ref="chart_a1"/>
+            <field name="chart_template_id" ref="account_chart_template_b"/>
         </record>
 
         <record model="account.account.template" id="chart_b5">
@@ -138,6 +160,67 @@
             <field name="user_type" ref="account_type_payable"/>
             <field name="reconcile" eval="False"/>
             <field name="parent_id" ref="chart_a1"/>
+            <field name="chart_template_id" ref="account_chart_template_b"/>
+        </record>
+
+        <record id="chart_b6" model="account.account.template">
+            <field name="code">B0031</field>
+            <field name="name">Bank Account B</field>
+            <field ref="chart_b3" name="parent_id"/>
+            <field name="type">view</field>
+            <field name="user_type" ref="account_type_view"/>
+            <field name="chart_template_id" ref="account_chart_template_b"/>
+        </record>
+
+        <!-- Account Templates for C -->
+
+        <record model="account.account.template" id="chart_c1">
+            <field name="name">Assets C</field>
+            <field name="code">C00012</field>
+            <field name="type">view</field>
+            <field name="user_type" ref="acct_type_asset_view"/>
+            <field name="reconcile" eval="False"/>
+            <field name="parent_id" ref="chart_a0"/>
+            <field name="chart_template_id" ref="account_chart_template_c"/>
+        </record>
+
+        <record model="account.account.template" id="chart_c2">
+            <field name="name">Liabilities C</field>
+            <field name="code">C00014</field>
+            <field name="type">view</field>
+            <field name="user_type" ref="acct_type_liability_view"/>
+            <field name="reconcile" eval="False"/>
+            <field name="parent_id" ref="chart_a0"/>
+            <field name="chart_template_id" ref="account_chart_template_c"/>
+        </record>
+
+        <record model="account.account.template" id="chart_c3">
+            <field name="name">Income C</field>
+            <field name="code">C00021</field>
+            <field name="type">view</field>
+            <field name="user_type" ref="account_type_receivable"/>
+            <field name="reconcile" eval="False"/>
+            <field name="parent_id" ref="chart_a1"/>
+            <field name="chart_template_id" ref="account_chart_template_c"/>
+        </record>
+
+        <record model="account.account.template" id="chart_c4">
+            <field name="name">Expense C</field>
+            <field name="code">C00024</field>
+            <field name="type">view</field>
+            <field name="user_type" ref="account_type_payable"/>
+            <field name="reconcile" eval="False"/>
+            <field name="parent_id" ref="chart_a1"/>
+            <field name="chart_template_id" ref="account_chart_template_c"/>
+        </record>
+
+        <record id="chart_c5" model="account.account.template">
+            <field name="code">C0026</field>
+            <field name="name">Bank Account C</field>
+            <field ref="chart_c3" name="parent_id"/>
+            <field name="type">view</field>
+            <field name="user_type" ref="account_type_view"/>
+            <field name="chart_template_id" ref="account_chart_template_c"/>
         </record>
 
         <!-- Chart template -->
@@ -152,7 +235,15 @@
             <field name="name">Demo Chart B</field>
             <field name="account_root_id" ref="chart_a_root"/>
             <field name="tax_code_root_id" ref="atax0"/>
-            <field name="bank_account_view_id" ref="chart_a2"/>
+            <field name="bank_account_view_id" ref="chart_b6"/>
+            <field name="parent_id" ref="account_chart_template_a"/>
+        </record>
+
+        <record id="account_chart_template_c" model="account.chart.template">
+            <field name="name">Demo Chart C</field>
+            <field name="account_root_id" ref="chart_a_root"/>
+            <field name="tax_code_root_id" ref="atax0"/>
+            <field name="bank_account_view_id" ref="chart_c5"/>
             <field name="parent_id" ref="account_chart_template_a"/>
         </record>
 
@@ -203,7 +294,7 @@
  
         <record id="acc_fisc_pos_temp_b" model="account.fiscal.position.template">
             <field name="name">Fiscal Position Template B</field>
-            <field name="chart_template_id" ref="account_chart_template_a"/>
+            <field name="chart_template_id" ref="account_chart_template_b"/>
         </record>
 
         <record id="acc_fisc_pos_tax_temp_a" model="account.fiscal.position.tax.template">

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to