diff --git a/addons/l10n_multilang/models/l10n_multilang.py b/addons/l10n_multilang/models/l10n_multilang.py index de0ef064bcd..bee06394b7d 100644 --- a/addons/l10n_multilang/models/l10n_multilang.py +++ b/addons/l10n_multilang/models/l10n_multilang.py @@ -73,22 +73,26 @@ class AccountChartTemplate(models.Model): @api.multi def _process_accounts_translations(self, company_id, langs, field): - in_ids = self.env['account.account.template'].search([('chart_template_id', '=', self.id)], order='id') - out_ids = self.env['account.account'].search([('company_id', '=', company_id)], order='id') + in_ids, out_ids = self._get_template_from_model(company_id, 'account.account') return self.process_translations(langs, field, in_ids, out_ids) @api.multi def _process_taxes_translations(self, company_id, langs, field): - in_ids = self.env['account.tax.template'].search([('chart_template_id', '=', self.id)], order='id') - out_ids = self.env['account.tax'].search([('company_id', '=', company_id)], order='id') + in_ids, out_ids = self._get_template_from_model(company_id, 'account.tax') return self.process_translations(langs, field, in_ids, out_ids) @api.multi def _process_fiscal_pos_translations(self, company_id, langs, field): - in_ids = self.env['account.fiscal.position.template'].search([('chart_template_id', '=', self.id)], order='id') - out_ids = self.env['account.fiscal.position'].search([('company_id', '=', company_id)], order='id') + in_ids, out_ids = self._get_template_from_model(company_id, 'account.fiscal.position') return self.process_translations(langs, field, in_ids, out_ids) + def _get_template_from_model(self, company_id, model): + out_data = self.env['ir.model.data'].search([('model', '=', model), ('name', '=like', str(company_id)+'\_%')]) + out_ids = self.env[model].search([('id', 'in', out_data.mapped('res_id'))], order='id') + in_xml_id_names = [xml_id.partition(str(company_id) + '_')[-1] for xml_id in out_data.mapped('name')] + in_xml_ids = self.env['ir.model.data'].search([('model', '=', model+'.template'), ('name', 'in', in_xml_id_names)]) + in_ids = self.env[model+'.template'].search([('id', 'in', in_xml_ids.mapped('res_id'))], order='id') + return (in_ids, out_ids) class BaseLanguageInstall(models.TransientModel): """ Install Language"""