From 85e5589af0d4f9b742878373cc18282a5e0b516b Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Wed, 10 Aug 2011 14:13:52 +0530 Subject: [PATCH] [REF]: account: l10n fullness and inheritancy: Create Function generate_fiscal_position in account.fiscal.position.template for generate Fiscal Position , Fiscal Position Accounts and Fiscal Position Taxes from templates. This function splited from execute method of wizard.multi.charts.accounts bzr revid: ron@tinyerp.com-20110810084352-xt4npr55p77udkl3 --- addons/account/account.py | 75 +++++++++++-------- addons/l10n_multilang/l10n_multilang_test.xml | 36 +++++++++ 2 files changed, 81 insertions(+), 30 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index 7fc22c42817..5108f2284af 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -2650,6 +2650,47 @@ class account_fiscal_position_template(osv.osv): 'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping') } + def generate_fiscal_position(self, cr, uid, chart_temp_id, taxes_ids, acc_template_ref, company_id, context=None): + """ + This method generate Fiscal Position , Fiscal Position Accounts and Fiscal Position Taxes from templates. + @param cr: A database cursor. + @param uid: ID of the user currently logged in. + @param chart_temp_id: Chart Template Id. + @param taxes_ids: Taxes templates reference for generating account.fiscal.position.tax. + @param acc_template_ref: Account templates reference for generating account.fiscal.position.account. + @param company_id: company_id selected from wizard.multi.charts.accounts. + """ + + if context is None: + context = {} + obj_tax_fp = self.pool.get('account.fiscal.position.tax') + obj_ac_fp = self.pool.get('account.fiscal.position.account') + obj_fiscal_position = self.pool.get('account.fiscal.position') + fp_ids = self.search(cr, uid, [('chart_template_id', '=', chart_temp_id)]) + if fp_ids: + for position in self.browse(cr, uid, fp_ids, context=context): + vals_fp = { + 'company_id': company_id, + 'name': position.name, + } + new_fp = obj_fiscal_position.create(cr, uid, vals_fp) + + for tax in position.tax_ids: + vals_tax = { + 'tax_src_id': taxes_ids['tax_template_ref'][tax.tax_src_id.id], + 'tax_dest_id': tax.tax_dest_id and taxes_ids['tax_template_ref'][tax.tax_dest_id.id] or False, + 'position_id': new_fp, + } + obj_tax_fp.create(cr, uid, vals_tax) + for acc in position.account_ids: + vals_acc = { + 'account_src_id': acc_template_ref[acc.account_src_id.id], + 'account_dest_id': acc_template_ref[acc.account_dest_id.id], + 'position_id': new_fp, + } + obj_ac_fp.create(cr, uid, vals_acc) + return {} + account_fiscal_position_template() class account_fiscal_position_tax_template(osv.osv): @@ -2788,7 +2829,6 @@ class wizard_multi_charts_accounts(osv.osv_memory): 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_fiscal_position = self.pool.get('account.fiscal.position') 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') @@ -2798,6 +2838,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): 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 #new code acc_template_ref = {} @@ -2824,7 +2865,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): 'installable': True, 'type': 'percent', 'sequence': 0, - 'chart_template_id': obj_multi.chart_template_id.id or False, + 'chart_template_id': chart_temp_id or False, }, context=context) #create all the tax code @@ -3092,35 +3133,9 @@ class wizard_multi_charts_accounts(osv.osv_memory): #create the property property_obj.create(cr, uid, vals) - fp_ids = obj_fiscal_position_template.search(cr, uid, [('chart_template_id', '=', obj_multi.chart_template_id.id)]) + #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, acc_template_ref, company_id, context=context) - if fp_ids: - obj_tax_fp = self.pool.get('account.fiscal.position.tax') - obj_ac_fp = self.pool.get('account.fiscal.position.account') - - for position in obj_fiscal_position_template.browse(cr, uid, fp_ids, context=context): - - vals_fp = { - 'company_id': company_id, - 'name': position.name, - } - new_fp = obj_fiscal_position.create(cr, uid, vals_fp) - - for tax in position.tax_ids: - vals_tax = { - 'tax_src_id': taxes_ids['tax_template_ref'][tax.tax_src_id.id], - 'tax_dest_id': tax.tax_dest_id and taxes_ids['tax_template_ref'][tax.tax_dest_id.id] or False, - 'position_id': new_fp, - } - obj_tax_fp.create(cr, uid, vals_tax) - - for acc in position.account_ids: - vals_acc = { - 'account_src_id': acc_template_ref[acc.account_src_id.id], - 'account_dest_id': acc_template_ref[acc.account_dest_id.id], - 'position_id': new_fp, - } - obj_ac_fp.create(cr, uid, vals_acc) 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]]) diff --git a/addons/l10n_multilang/l10n_multilang_test.xml b/addons/l10n_multilang/l10n_multilang_test.xml index d940d1ac9bd..6dbe0c4b061 100644 --- a/addons/l10n_multilang/l10n_multilang_test.xml +++ b/addons/l10n_multilang/l10n_multilang_test.xml @@ -78,6 +78,21 @@ + + Sales in India + 7000 + other + + + + + Sales in the member countries of the C.E.E. + 7001 + other + + + + Tax Template Root A @@ -158,6 +173,15 @@ + + 60 + VAT-OUT-00-EU-S + Services EU + 0 + percent + + + 12 @@ -193,6 +217,18 @@ + + + + + + + + + + + +