Rohan Nayani(Open ERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-l10n-control-dev-load-translation-acc-template-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-load-translation-acc-template-ron/+merge/69029

=>copy translation from Account template object to destination object
=>Add wizard action
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-l10n-control-dev-load-translation-acc-template-ron/+merge/69029
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-l10n-control-dev.
=== modified file 'l10n_multilang/l10n_multilang.py'
--- l10n_multilang/l10n_multilang.py	2011-07-22 10:49:04 +0000
+++ l10n_multilang/l10n_multilang.py	2011-07-25 05:46:08 +0000
@@ -21,6 +21,9 @@
 
 from osv import fields, osv
 import os
+import netsvc
+
+logger=netsvc.Logger()
 
 class wizard_multi_charts_accounts(osv.osv_memory):
     """
@@ -32,6 +35,80 @@
     """
     _inherit = 'wizard.multi.charts.accounts'
 
+    def copy_translation(self, cr, uid, langs, in_obj, in_field, in_ids, out_obj, out_ids):
+        done = False
+        error = False
+        xlat_obj = self.pool.get('ir.translation')
+        while not done:
+            #compare template with Accounts
+            if len(in_ids) != len(out_ids):
+                logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR,
+                     'generate translations from template for %s failed (error 1)!' % out_obj._name)
+                error = True
+                break
+            #copy Translation from Source to Destination object
+            for lang in langs:
+                cr.execute("SELECT src, value FROM ir_translation "  \
+                           "WHERE name=%s AND type='model' AND lang=%s AND res_id IN %s "   \
+                           "ORDER by res_id",
+                           (in_obj._name + ',' + in_field, lang, tuple(in_ids)))
+                xlats = cr.fetchall()
+                #IF there is no Translation Available or missing some Translation
+                if len(xlats) != len(out_ids):
+                    logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR,
+                        'There is no Translation available for template %s !' % out_obj._name)
+                    error = True
+                    break
+                for i in range(len(out_ids)):
+                    src = xlats[i][0]
+                    value = xlats[i][1]
+                    out_record = out_obj.browse(cr, uid, out_ids[i])
+                    #compare with source to destination object name 
+                    if getattr(out_record, in_field) != src:
+                        logger.notifyChannel('addons.'+self._name, netsvc.LOG_ERROR,
+                             'generate translations from template for %s failed (error 3)!' % out_obj._name)
+                        error = True
+                        break
+                    #Copy Translation
+                    xlat_obj.create(cr, uid, {
+                          'name': out_obj._name + ',' + in_field,
+                          'type': 'model',
+                          'res_id': out_record.id,
+                          'lang': lang,
+                          'src': src,
+                          'value': value,
+                    })
+            done = True
+        if error:
+            raise osv.except_osv(_('Warning!'),
+                 _('The generation of translations from the template for %s failed!' % out_obj._name))
+        
+    def execute(self, cr, uid, ids, context=None):
+        super(wizard_multi_charts_accounts, self).execute(cr, uid, ids, context=context)
+        obj_multi = self.browse(cr, uid, ids[0], context=context)
+        obj_mod = self.pool.get('ir.module.module')
+        obj_acc_template = self.pool.get('account.account.template')
+        obj_acc = self.pool.get('account.account')
+        obj_data = self.pool.get('ir.model.data')
+
+        company_id = obj_multi.company_id.id
+        acc_template_root_id = obj_multi.chart_template_id.account_root_id.id
+        acc_root_id = obj_acc.search(cr, uid, [('company_id', '=', company_id), ('parent_id', '=', None)])[0]                       
+                         
+        # load languages
+        langs = []
+        for lang in obj_multi.lang_ids:
+            langs.append(lang.code)
+        installed_mids = obj_mod.search(cr, uid, [('state', '=', 'installed')])
+        for lang in langs:
+                    obj_mod.update_translations(cr, uid, installed_mids, lang)
+
+        # copy account.account translations
+        in_field = 'name'
+        in_ids = obj_acc_template.search(cr, uid, [('id', 'child_of', [acc_template_root_id])], order='id')[1:]
+        out_ids = obj_acc.search(cr, uid, [('id', 'child_of', [acc_root_id])], order='id')[1:]
+        self.copy_translation(cr, uid, langs, obj_acc_template, in_field, in_ids, obj_acc, out_ids)
+
     def onchange_chart_template_id(self, cr, uid, ids, chart_template_id=False, context=None):
         res = super(wizard_multi_charts_accounts, self).onchange_chart_template_id(cr, uid, ids, chart_template_id, context=context)
         installed_lang = self.get_lang(cr, uid, chart_template_id, context=context)

=== modified file 'l10n_multilang/l10n_multilang.xml'
--- l10n_multilang/l10n_multilang.xml	2011-07-22 10:54:04 +0000
+++ l10n_multilang/l10n_multilang.xml	2011-07-25 05:46:08 +0000
@@ -1,6 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
   <data>
+      <record id="multi_chart_configuration" model="ir.actions.todo">
+        <field name="action_id" ref="account.action_wizard_multi_chart"/>
+        <field name="sequence">25</field>
+        <field name="restart">onskip</field>
+    </record>
     <!--  Wizard for Multi Charts of Accounts -->
     <record id="view_wizard_multi_chart_belgian_coa" model="ir.ui.view">
       <field name="name">view.wizard.multi.chart</field>

_______________________________________________
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