From c9c5f4b7859cb414d37d99f25297f4175c7df74f Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Thu, 24 Jan 2013 19:28:08 +0100 Subject: [PATCH 001/107] [FIX] res.config.installer: correct module installing bzr revid: chs@openerp.com-20130124182808-5xvdc0mqst0h2970 --- openerp/addons/base/res/res_config.py | 90 ++++++++++++++++----------- 1 file changed, 54 insertions(+), 36 deletions(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index a2368a9f508..4c59180acc3 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -21,14 +21,47 @@ import logging from operator import attrgetter -import openerp -from openerp import pooler from openerp.osv import osv, fields from openerp.tools import ustr from openerp.tools.translate import _ _logger = logging.getLogger(__name__) + +class res_config_module_installation_mixin(object): + def _install_modules(self, cr, uid, modules, context): + """Install the requested modules. + return the next action to execute + + modules is a list of tuples + (mod_name, browse_record | None) + """ + ir_module = self.pool.get('ir.module.module') + to_install_ids = [] + to_install_missing_names = [] + + for name, module in modules: + if not module: + to_install_missing_names.append(name) + elif module.state == 'uninstalled': + to_install_ids.append(module.id) + + if to_install_ids: + ir_module.button_immediate_install(cr, uid, to_install_ids, context=context) + + if to_install_missing_names: + return { + 'type': 'ir.actions.client', + 'tag': 'apps', + 'params': {'modules': to_install_missing_names}, + } + + config = self.pool.get('res.config').next(cr, uid, [], context=context) or {} + if config.get('type') not in ('ir.actions.act_window_close',): + return config + + return None + class res_config_configurable(osv.osv_memory): ''' Base classes for new-style configuration items @@ -153,7 +186,7 @@ class res_config_configurable(osv.osv_memory): res_config_configurable() -class res_config_installer(osv.osv_memory): +class res_config_installer(osv.osv_memory, res_config_module_installation_mixin): """ New-style configuration base specialized for addons selection and installation. @@ -351,17 +384,18 @@ class res_config_installer(osv.osv_memory): return fields def execute(self, cr, uid, ids, context=None): - modules = self.pool.get('ir.module.module') to_install = list(self.modules_to_install( cr, uid, ids, context=context)) _logger.info('Selecting addons %s to install', to_install) - modules.state_update( - cr, uid, - modules.search(cr, uid, [('name','in',to_install)]), - 'to install', ['uninstalled'], context=context) - cr.commit() - openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname) - new_db, self.pool = pooler.restart_pool(cr.dbname, update_module=True) + + ir_module = self.pool.get('ir.module.module') + modules = [] + for name in to_install: + mod_ids = ir_module.search(cr, uid, [('name', '=', name)]) + record = ir_module.browse(cr, uid, mod_ids[0], context) if mod_ids else None + modules.append((name, record)) + + return self._install_modules(cr, uid, modules, context=context) res_config_installer() @@ -402,8 +436,7 @@ class ir_actions_configuration_wizard(osv.osv_memory): ir_actions_configuration_wizard() - -class res_config_settings(osv.osv_memory): +class res_config_settings(osv.osv_memory, res_config_module_installation_mixin): """ Base configuration wizard for application settings. It provides support for setting default values, assigning groups to employee users, and installing modules. To make such a 'settings' wizard, define a model like:: @@ -527,37 +560,22 @@ class res_config_settings(osv.osv_memory): getattr(self, method)(cr, uid, ids, context) # module fields: install/uninstall the selected modules - to_install_missing_names = [] + to_install = [] to_uninstall_ids = [] - to_install_ids = [] lm = len('module_') for name, module in classified['module']: if config[name]: - if not module: - # missing module, will be provided by apps.openerp.com - to_install_missing_names.append(name[lm:]) - elif module.state == 'uninstalled': - # local module, to be installed - to_install_ids.append(module.id) + to_install.append((name[lm:], module)) else: if module and module.state in ('installed', 'to upgrade'): to_uninstall_ids.append(module.id) if to_uninstall_ids: ir_module.button_immediate_uninstall(cr, uid, to_uninstall_ids, context=context) - if to_install_ids: - ir_module.button_immediate_install(cr, uid, to_install_ids, context=context) - if to_install_missing_names: - return { - 'type': 'ir.actions.client', - 'tag': 'apps', - 'params': {'modules': to_install_missing_names}, - } - - config = self.pool.get('res.config').next(cr, uid, [], context=context) or {} - if config.get('type') not in ('ir.actions.act_window_close',): - return config + action = self._install_modules(cr, uid, to_install, context=context) + if action: + return action # force client-side reload (update user menu and current view) return { @@ -572,17 +590,17 @@ class res_config_settings(osv.osv_memory): if action_ids: return act_window.read(cr, uid, action_ids[0], [], context=context) return {} - + def name_get(self, cr, uid, ids, context=None): """ Override name_get method to return an appropriate configuration wizard name, and not the generated name.""" - + if not ids: return [] # name_get may receive int id instead of an id list if isinstance(ids, (int, long)): ids = [ids] - + act_window = self.pool.get('ir.actions.act_window') action_ids = act_window.search(cr, uid, [('res_model', '=', self._name)], context=context) name = self._name From 4c89124778a1516cd3371347831bb4b6f1e60a74 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Thu, 24 Jan 2013 20:00:39 +0100 Subject: [PATCH 002/107] [IMP] account: installer get list of charts from apps bzr revid: chs@openerp.com-20130124190039-qhcyrnrgpue0rak5 --- addons/account/installer.py | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/addons/account/installer.py b/addons/account/installer.py index d02e7196d4d..aba88975e41 100644 --- a/addons/account/installer.py +++ b/addons/account/installer.py @@ -23,10 +23,16 @@ import datetime from dateutil.relativedelta import relativedelta import logging from operator import itemgetter -from os.path import join as opj import time +import urllib2 +import urlparse -from openerp import netsvc, tools +try: + import simplejson as json +except ImportError: + import json # noqa + +from openerp.release import serie from openerp.tools.translate import _ from openerp.osv import fields, osv @@ -38,13 +44,28 @@ class account_installer(osv.osv_memory): def _get_charts(self, cr, uid, context=None): modules = self.pool.get('ir.module.module') + + # try get the list on apps server + try: + apps_server = self.pool.get('ir.config_parameter').get_value(cr, uid, 'apps.server', 'https://apps.openerp.com') + + up = urlparse.urlparse(apps_server) + url = '{0.scheme}://{0.netloc}/apps/charts?serie={1}'.format(up, serie) + + j = urllib2.urlopen(url, timeout=3).read() + apps_charts = json.loads(j) + + charts = dict(apps_charts) + except Exception: + charts = dict() + # Looking for the module with the 'Account Charts' category category_name, category_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'module_category_localization_account_charts') ids = modules.search(cr, uid, [('category_id', '=', category_id)], context=context) - charts = list( - sorted(((m.name, m.shortdesc) - for m in modules.browse(cr, uid, ids, context=context)), - key=itemgetter(1))) + if ids: + charts.update((m.name, m.shortdesc) for m in modules.browse(cr, uid, ids, context=context)) + + charts = sorted(charts.items(), key=itemgetter(1)) charts.insert(0, ('configurable', _('Custom'))) return charts From a78531df4393b3850b718865df5b748d696975e5 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 25 Jan 2013 13:11:27 +0100 Subject: [PATCH 003/107] [FIX] account: installer: call right method bzr revid: chs@openerp.com-20130125121127-j7i3rwskqojyp8nm --- addons/account/installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/installer.py b/addons/account/installer.py index aba88975e41..995e3986af4 100644 --- a/addons/account/installer.py +++ b/addons/account/installer.py @@ -47,7 +47,7 @@ class account_installer(osv.osv_memory): # try get the list on apps server try: - apps_server = self.pool.get('ir.config_parameter').get_value(cr, uid, 'apps.server', 'https://apps.openerp.com') + apps_server = self.pool.get('ir.config_parameter').get_param(cr, uid, 'apps.server', 'https://apps.openerp.com') up = urlparse.urlparse(apps_server) url = '{0.scheme}://{0.netloc}/apps/charts?serie={1}'.format(up, serie) From 16289266c99096a1770fd6039539da26a0ce7c0f Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 25 Jan 2013 14:34:53 +0100 Subject: [PATCH 004/107] [FIX] res.config.installer: correct module installing bzr revid: chs@openerp.com-20130125133453-aqu5eotetdyb2zpj --- openerp/addons/base/res/res_config.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index 4c59180acc3..1ca6fd57cfa 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -56,10 +56,6 @@ class res_config_module_installation_mixin(object): 'params': {'modules': to_install_missing_names}, } - config = self.pool.get('res.config').next(cr, uid, [], context=context) or {} - if config.get('type') not in ('ir.actions.act_window_close',): - return config - return None class res_config_configurable(osv.osv_memory): @@ -577,6 +573,10 @@ class res_config_settings(osv.osv_memory, res_config_module_installation_mixin): if action: return action + config = self.pool.get('res.config').next(cr, uid, [], context=context) or {} + if config.get('type') not in ('ir.actions.act_window_close',): + return config + # force client-side reload (update user menu and current view) return { 'type': 'ir.actions.client', From e0284cfe90a75ce815ba31d452eef15c676515ca Mon Sep 17 00:00:00 2001 From: "Ravi Gohil (OpenERP)" Date: Fri, 22 Feb 2013 11:57:54 +0530 Subject: [PATCH 005/107] [FIX] Passed context in write(...)(Courtesy: Humberto Arocha(hbto)). (Maintenance Case: 586824) lp bug: https://launchpad.net/bugs/1088086 fixed bzr revid: rgo@tinyerp.com-20130222062754-nbsp6a491xzm63kw --- openerp/addons/base/res/res_company.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index 022c9c06da0..c8ea8d7856e 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -97,7 +97,7 @@ class res_company(osv.osv): address_data = part_obj.address_get(cr, uid, [company.partner_id.id], adr_pref=['default']) address = address_data['default'] if address: - part_obj.write(cr, uid, [address], {name: value or False}) + part_obj.write(cr, uid, [address], {name: value or False}, context=context) else: part_obj.create(cr, uid, {name: value or False, 'parent_id': company.partner_id.id}, context=context) return True From b0eb876160935cede1c9b4ab84ea988f63bbdc55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Feb 2013 14:26:25 +0100 Subject: [PATCH 006/107] [FIX] mail: first try to fix attachment duplication. bzr revid: tde@openerp.com-20130228132625-8yjggruhrvbvep21 --- addons/email_template/email_template.py | 34 +++++++++++-------- .../wizard/mail_compose_message.py | 5 ++- addons/mail/wizard/mail_compose_message.py | 5 ++- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index 743384059b4..48fdc7edcd1 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -292,8 +292,7 @@ class email_template(osv.osv): 'copyvalue': self.build_expression(field_value.name, False, null_value or False), 'null_value': null_value or False }) - return {'value':result} - + return {'value': result} def generate_email(self, cr, uid, template_id, res_id, context=None): """Generates an email from the template for given (model, res_id) pair. @@ -346,11 +345,13 @@ class email_template(osv.osv): report_name += ext attachments.append((report_name, result)) + attachment_ids = [] # Add template attachments for attach in template.attachment_ids: - attachments.append((attach.datas_fname, attach.datas)) + attachment_ids.append(attach.id) values['attachments'] = attachments + values['attachment_ids'] = attachments return values def send_mail(self, cr, uid, template_id, res_id, force_send=False, context=None): @@ -365,28 +366,33 @@ class email_template(osv.osv): was executed for this message only. :returns: id of the mail.message that was created """ - if context is None: context = {} + if context is None: + context = {} mail_mail = self.pool.get('mail.mail') ir_attachment = self.pool.get('ir.attachment') + + # create a mail_mail based on values, without attachments values = self.generate_email(cr, uid, template_id, res_id, context=context) - assert 'email_from' in values, 'email_from is missing or empty after template rendering, send_mail() cannot proceed' - attachments = values.pop('attachments') or {} - del values['email_recipients'] # TODO Properly use them. - msg_id = mail_mail.create(cr, uid, values, context=context) - # link attachments - attachment_ids = [] - for fname, fcontent in attachments.iteritems(): + assert values.get('email_from'), 'email_from is missing or empty after template rendering, send_mail() cannot proceed' + del values['email_recipients'] # TODO Properly use them. + + # manage attachments + attachment_ids = values.pop('attachment_ids', []) + attachments = values.pop('attachments', []) + for fname, fcontent in attachments: attachment_data = { 'name': fname, 'datas_fname': fname, 'datas': fcontent, - 'res_model': mail_mail._name, - 'res_id': msg_id, + 'res_model': values.get('model', False), + 'res_id': values.get('res_id', False), } context.pop('default_type', None) attachment_ids.append(ir_attachment.create(cr, uid, attachment_data, context=context)) if attachment_ids: - mail_mail.write(cr, uid, msg_id, {'attachment_ids': [(6, 0, attachment_ids)]}, context=context) + values['attachment_ids'] = [(6, 0, attachment_ids)] + + msg_id = mail_mail.create(cr, uid, values, context=context) if force_send: mail_mail.send(cr, uid, [msg_id], context=context) return msg_id diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py index b39ed4e5639..397f913e912 100644 --- a/addons/email_template/wizard/mail_compose_message.py +++ b/addons/email_template/wizard/mail_compose_message.py @@ -71,7 +71,6 @@ class mail_compose_message(osv.TransientModel): # FIXME odo: change the mail generation to avoid attachment duplication values = self.generate_email_for_composer(cr, uid, template_id, res_id, context=context) # transform attachments into attachment_ids - values['attachment_ids'] = [] ir_attach_obj = self.pool.get('ir.attachment') for attach_fname, attach_datas in values.pop('attachments', []): data_attach = { @@ -80,7 +79,7 @@ class mail_compose_message(osv.TransientModel): 'datas_fname': attach_fname, 'res_model': model, 'res_id': res_id, - 'type': 'binary', # override default_type from context, possibly meant for another model! + 'type': 'binary', # override default_type from context, possibly meant for another model! } values['attachment_ids'].append(ir_attach_obj.create(cr, uid, data_attach, context=context)) else: @@ -122,7 +121,7 @@ class mail_compose_message(osv.TransientModel): mail.compose.message, transform email_cc and email_to into partner_ids """ template_values = self.pool.get('email.template').generate_email(cr, uid, template_id, res_id, context=context) # filter template values - fields = ['body_html', 'subject', 'email_to', 'email_recipients', 'email_cc', 'attachments'] + fields = ['body_html', 'subject', 'email_to', 'email_recipients', 'email_cc', 'attachment_ids', 'attachments'] values = dict((field, template_values[field]) for field in fields if template_values.get(field)) values['body'] = values.pop('body_html', '') # transform email_to, email_cc into partner_ids diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index ec0c2a8de06..5741aacb449 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -205,13 +205,16 @@ class mail_compose_message(osv.TransientModel): 'body': wizard.body, 'parent_id': wizard.parent_id and wizard.parent_id.id, 'partner_ids': [(4, partner.id) for partner in wizard.partner_ids], - 'attachments': [(attach.datas_fname or attach.name, base64.b64decode(attach.datas)) for attach in wizard.attachment_ids], + 'attachments': [], + 'attachment_ids': [(4, attach.id) for attach in wizard.attachment_ids], } # mass mailing: render and override default values if mass_mail_mode and wizard.model: email_dict = self.render_message(cr, uid, wizard, res_id, context=context) new_partner_ids = email_dict.pop('partner_ids', []) post_values['partner_ids'] += [(4, partner_id) for partner_id in new_partner_ids] + new_attachment_ids = email_dict.pop('attachment_ids', []) + post_values['attachments'] += new_attachment_ids new_attachments = email_dict.pop('attachments', []) post_values['attachments'] += new_attachments post_values.update(email_dict) From afbb5816e3e43bbb8f4f590c5686ccc708be2fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Feb 2013 14:36:33 +0100 Subject: [PATCH 007/107] [FIX] email_template: fixed previous patch, wrong var name. bzr revid: tde@openerp.com-20130228133633-1ur9jbqw021yoork --- addons/email_template/email_template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index 48fdc7edcd1..64c09d1eaff 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -351,7 +351,7 @@ class email_template(osv.osv): attachment_ids.append(attach.id) values['attachments'] = attachments - values['attachment_ids'] = attachments + values['attachment_ids'] = attachment_ids return values def send_mail(self, cr, uid, template_id, res_id, force_send=False, context=None): From cca08468043c17025cfbd6fd771227cc67ee93a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Feb 2013 14:49:01 +0100 Subject: [PATCH 008/107] [FIX] email_template: fixed attachments management in send_mail. bzr revid: tde@openerp.com-20130228134901-ibtnt2zl4yne7o4n --- addons/email_template/email_template.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index 64c09d1eaff..1856479ebbe 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -379,11 +379,11 @@ class email_template(osv.osv): # manage attachments attachment_ids = values.pop('attachment_ids', []) attachments = values.pop('attachments', []) - for fname, fcontent in attachments: + for attachment in attachments: attachment_data = { - 'name': fname, - 'datas_fname': fname, - 'datas': fcontent, + 'name': attachment[0], + 'datas_fname': attachment[0], + 'datas': attachment[1], 'res_model': values.get('model', False), 'res_id': values.get('res_id', False), } From d6fcee5a4fb96c410f2d6580f7a239b2080e864d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Feb 2013 15:46:30 +0100 Subject: [PATCH 009/107] [FIX] email-template: attachments should have correct model and res_id from template. bzr revid: tde@openerp.com-20130228144630-7x6kh5jcn4w557do --- addons/email_template/email_template.py | 5 +++-- addons/email_template/tests/test_mail.py | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index 1856479ebbe..8045cf62204 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -375,6 +375,7 @@ class email_template(osv.osv): values = self.generate_email(cr, uid, template_id, res_id, context=context) assert values.get('email_from'), 'email_from is missing or empty after template rendering, send_mail() cannot proceed' del values['email_recipients'] # TODO Properly use them. + template = self.get_email_template(cr, uid, template_id, res_id, context=context) # manage attachments attachment_ids = values.pop('attachment_ids', []) @@ -384,8 +385,8 @@ class email_template(osv.osv): 'name': attachment[0], 'datas_fname': attachment[0], 'datas': attachment[1], - 'res_model': values.get('model', False), - 'res_id': values.get('res_id', False), + 'res_model': template.model, + 'res_id': res_id, } context.pop('default_type', None) attachment_ids.append(ir_attachment.create(cr, uid, attachment_data, context=context)) diff --git a/addons/email_template/tests/test_mail.py b/addons/email_template/tests/test_mail.py index b87b6d63000..0da73dc0f33 100644 --- a/addons/email_template/tests/test_mail.py +++ b/addons/email_template/tests/test_mail.py @@ -48,8 +48,8 @@ class test_message_compose(TestMailBase): _body_html1 = 'Fans of Pigs, unite !' _body_html2 = 'I am angry !' _attachments = [ - {'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment')}, - {'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment')} + {'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment'), 'res_model': 'dummy.model'}, + {'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment'), 'res_model': 'dummy.model'} ] _attachments_test = [('first.txt', 'My first attachment'), ('second.txt', 'My second attachment')] @@ -118,7 +118,7 @@ class test_message_compose(TestMailBase): # Test: mail.compose.message: attachments # Test: mail.message: attachments for attach in compose.attachment_ids: - self.assertEqual(attach.res_model, 'mail.group', 'mail.message attachment res_model incorrect') + self.assertEqual(attach.res_model, 'dummy.model', 'mail.message attachment res_model through templat was overriden') self.assertEqual(attach.res_id, self.group_pigs_id, 'mail.message attachment res_id incorrect') self.assertIn((attach.name, base64.b64decode(attach.datas)), _attachments_test, 'mail.message attachment name / data incorrect') From aa865c8b61d53a1c9b402f616f419ad36c38bc7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Feb 2013 15:55:13 +0100 Subject: [PATCH 010/107] [FIX] Still fixing attachments through templates. bzr revid: tde@openerp.com-20130228145513-6g30ujr3cm0j8b3u --- addons/email_template/tests/test_mail.py | 8 ++++---- addons/mail/wizard/mail_compose_message.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/email_template/tests/test_mail.py b/addons/email_template/tests/test_mail.py index 0da73dc0f33..39b1023bc64 100644 --- a/addons/email_template/tests/test_mail.py +++ b/addons/email_template/tests/test_mail.py @@ -48,8 +48,8 @@ class test_message_compose(TestMailBase): _body_html1 = 'Fans of Pigs, unite !' _body_html2 = 'I am angry !' _attachments = [ - {'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment'), 'res_model': 'dummy.model'}, - {'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment'), 'res_model': 'dummy.model'} + {'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment'), 'res_model': 'mail.group', 'res_id': self.group_pigs_id}, + {'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment'), 'res_model': 'mail.group', 'res_id': self.group_pigs_id} ] _attachments_test = [('first.txt', 'My first attachment'), ('second.txt', 'My second attachment')] @@ -118,9 +118,9 @@ class test_message_compose(TestMailBase): # Test: mail.compose.message: attachments # Test: mail.message: attachments for attach in compose.attachment_ids: - self.assertEqual(attach.res_model, 'dummy.model', 'mail.message attachment res_model through templat was overriden') + self.assertEqual(attach.res_model, 'mail.group', 'mail.message attachment res_model through templat was overriden') self.assertEqual(attach.res_id, self.group_pigs_id, 'mail.message attachment res_id incorrect') - self.assertIn((attach.name, base64.b64decode(attach.datas)), _attachments_test, + self.assertIn((attach.datas_fname, base64.b64decode(attach.datas)), _attachments_test, 'mail.message attachment name / data incorrect') # ---------------------------------------- diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index 5741aacb449..6389246bd7b 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -214,7 +214,7 @@ class mail_compose_message(osv.TransientModel): new_partner_ids = email_dict.pop('partner_ids', []) post_values['partner_ids'] += [(4, partner_id) for partner_id in new_partner_ids] new_attachment_ids = email_dict.pop('attachment_ids', []) - post_values['attachments'] += new_attachment_ids + post_values['attachment_ids'] += [(4, attach_id) for attach_id in new_attachment_ids] new_attachments = email_dict.pop('attachments', []) post_values['attachments'] += new_attachments post_values.update(email_dict) From 46a5b63caddf857f38017ed4fb618f73a95a12a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 1 Mar 2013 15:48:27 +0100 Subject: [PATCH 011/107] [IMP] email_template: better management of attachments. In mass mail, we want attachments to be duplicated due to the ownership concept of attachments in OpenERP. bzr revid: tde@openerp.com-20130301144827-762362bgng5m4nye --- addons/email_template/tests/test_mail.py | 18 ++++++++--- .../wizard/mail_compose_message.py | 19 ++++++++++++ addons/mail/wizard/mail_compose_message.py | 31 +++++++++++-------- 3 files changed, 50 insertions(+), 18 deletions(-) diff --git a/addons/email_template/tests/test_mail.py b/addons/email_template/tests/test_mail.py index 39b1023bc64..9e6ed15f904 100644 --- a/addons/email_template/tests/test_mail.py +++ b/addons/email_template/tests/test_mail.py @@ -48,8 +48,8 @@ class test_message_compose(TestMailBase): _body_html1 = 'Fans of Pigs, unite !' _body_html2 = 'I am angry !' _attachments = [ - {'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment'), 'res_model': 'mail.group', 'res_id': self.group_pigs_id}, - {'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment'), 'res_model': 'mail.group', 'res_id': self.group_pigs_id} + {'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment')}, + {'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment')}, ] _attachments_test = [('first.txt', 'My first attachment'), ('second.txt', 'My second attachment')] @@ -116,10 +116,18 @@ class test_message_compose(TestMailBase): self.assertIn(_body_html1, compose.body, 'mail.compose.message body incorrect') self.assertEqual(set(message_pids), set(partner_ids), 'mail.compose.message partner_ids incorrect') # Test: mail.compose.message: attachments - # Test: mail.message: attachments for attach in compose.attachment_ids: - self.assertEqual(attach.res_model, 'mail.group', 'mail.message attachment res_model through templat was overriden') - self.assertEqual(attach.res_id, self.group_pigs_id, 'mail.message attachment res_id incorrect') + self.assertEqual(attach.res_model, False, 'mail.compose.message attachment res_model through templat was overriden') + self.assertEqual(attach.res_id, 0, 'mail.compose.message attachment res_id incorrect') + self.assertIn((attach.datas_fname, base64.b64decode(attach.datas)), _attachments_test, + 'mail.message attachment name / data incorrect') + # Test: mail.message: attachments + mail_compose.send_mail(cr, uid, [compose_id]) + group_pigs.refresh() + message_pigs = group_pigs.message_ids[0] + for attach in message_pigs.attachment_ids: + self.assertEqual(attach.res_model, 'mail.group', 'mail.compose.message attachment res_model through templat was overriden') + self.assertEqual(attach.res_id, self.group_pigs_id, 'mail.compose.message attachment res_id incorrect') self.assertIn((attach.datas_fname, base64.b64decode(attach.datas)), _attachments_test, 'mail.message attachment name / data incorrect') diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py index 397f913e912..5631b927f46 100644 --- a/addons/email_template/wizard/mail_compose_message.py +++ b/addons/email_template/wizard/mail_compose_message.py @@ -61,6 +61,25 @@ class mail_compose_message(osv.TransientModel): 'template_id': fields.selection(_get_templates, 'Template', size=-1), } + def send_mail(self, cr, uid, ids, context=None): + """ Override of send_mail to duplicate attachments linked to the email.template. + Indeed, basic mail.compose.message wizard duplicates attachments in mass + mailing mode. But in 'single post' mode, attachments of an email template + also have to be duplicated to avoid changing their ownership. """ + for wizard in self.browse(cr, uid, ids, context=context): + if not wizard.attachment_ids or wizard.composition_mode == 'mass_mail' or not wizard.template_id: + continue + active_model_pool_name = wizard.model if wizard.model else 'mail.thread' + template = self.pool.get('email.template').browse(cr, uid, wizard.template_id, context=context) + new_attachment_ids = [] + for attachment in wizard.attachment_ids: + if attachment in template.attachment_ids: + new_attachment_ids.append(self.pool.get('ir.attachment').copy(cr, uid, attachment.id, {'res_model': active_model_pool_name, 'res_id': wizard.res_id}, context=context)) + else: + new_attachment_ids.append(attachment.id) + self.write(cr, uid, wizard.id, {'attachment_ids': [(6, 0, new_attachment_ids)]}, context=context) + return super(mail_compose_message, self).send_mail(cr, uid, ids, context=context) + def onchange_template_id(self, cr, uid, ids, template_id, composition_mode, model, res_id, context=None): """ - mass_mailing: we cannot render, so return the template values - normal mode: return rendered values """ diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index bb084405c29..0ec5242937e 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -190,41 +190,46 @@ class mail_compose_message(osv.TransientModel): email(s), rendering any template patterns on the fly if needed. """ if context is None: context = {} + ir_attachment_obj = self.pool.get('ir.attachment') active_ids = context.get('active_ids') - is_log = context.get('mail_compose_log', False) for wizard in self.browse(cr, uid, ids, context=context): mass_mail_mode = wizard.composition_mode == 'mass_mail' - active_model_pool = self.pool.get(wizard.model if wizard.model else 'mail.thread') + active_model_pool_name = wizard.model if wizard.model else 'mail.thread' + active_model_pool = self.pool.get(active_model_pool_name) # wizard works in batch mode: [res_id] or active_ids res_ids = active_ids if mass_mail_mode and wizard.model and active_ids else [wizard.res_id] for res_id in res_ids: - # default values, according to the wizard options + # mail.message values, according to the wizard options post_values = { 'subject': wizard.subject, 'body': wizard.body, 'parent_id': wizard.parent_id and wizard.parent_id.id, 'partner_ids': [partner.id for partner in wizard.partner_ids], - 'attachments': [], 'attachment_ids': [attach.id for attach in wizard.attachment_ids], } # mass mailing: render and override default values if mass_mail_mode and wizard.model: email_dict = self.render_message(cr, uid, wizard, res_id, context=context) - new_partner_ids = email_dict.pop('partner_ids', []) - post_values['partner_ids'] += new_partner_ids - new_attachment_ids = email_dict.pop('attachment_ids', []) - post_values['attachment_ids'] += new_attachment_ids - new_attachments = email_dict.pop('attachments', []) - post_values['attachments'] += new_attachments + post_values['partner_ids'] += email_dict.pop('partner_ids', []) + post_values['attachments'] = email_dict.pop('attachments', []) + post_values['attachment_ids'] += email_dict.pop('attachment_ids', []) + # we must duplicate attachments, as each document will have its own copy of the attachment + attachment_ids = [] + for attach_id in post_values.pop('attachment_ids'): + new_attach_id = ir_attachment_obj.copy(cr, uid, attach_id, {'res_model': active_model_pool_name, 'res_id': res_id}, context=context) + attachment_ids.append(new_attach_id) + post_values['attachment_ids'] = attachment_ids post_values.update(email_dict) # post the message - subtype = 'mail.mt_comment' - if is_log: - subtype = False + subtype = 'mail.mt_comment' if not context.get('mail_compose_log', False) else False active_model_pool.message_post(cr, uid, [res_id], type='comment', subtype=subtype, context=context, **post_values) + # mass mailing: delete mail.compose.message attachments, added by the user and that have been duplicated + if mass_mail_mode and wizard.attachment_ids: + wizard.attachment_ids.unlink() + return {'type': 'ir.actions.act_window_close'} def render_message(self, cr, uid, wizard, res_id, context=None): From c7d8842b0285760216d9d44cf3110f7344c3c57e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 4 Mar 2013 10:22:48 +0100 Subject: [PATCH 012/107] [IMP] mail, email_template: fixed attachment management (template does not override provided attachments anymore; fixed possible unexisting attachment ids key; fixed some duplication. bzr revid: tde@openerp.com-20130304092248-mqadzmrhgdu58j8y --- .../wizard/mail_compose_message.py | 18 +++++++++++------- addons/mail/wizard/mail_compose_message.py | 11 +++++++---- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py index 5631b927f46..1221cfde34e 100644 --- a/addons/email_template/wizard/mail_compose_message.py +++ b/addons/email_template/wizard/mail_compose_message.py @@ -84,20 +84,21 @@ class mail_compose_message(osv.TransientModel): """ - mass_mailing: we cannot render, so return the template values - normal mode: return rendered values """ if template_id and composition_mode == 'mass_mail': - values = self.pool.get('email.template').read(cr, uid, template_id, ['subject', 'body_html'], context) + values = self.pool.get('email.template').read(cr, uid, template_id, ['subject', 'body_html', 'attachment_ids'], context) values.pop('id') elif template_id: # FIXME odo: change the mail generation to avoid attachment duplication values = self.generate_email_for_composer(cr, uid, template_id, res_id, context=context) - # transform attachments into attachment_ids + # transform attachments into attachment_ids; not attached to the document because this will + # be done further in the posting process, allowing to clean database if email not send ir_attach_obj = self.pool.get('ir.attachment') for attach_fname, attach_datas in values.pop('attachments', []): data_attach = { 'name': attach_fname, 'datas': attach_datas, 'datas_fname': attach_fname, - 'res_model': model, - 'res_id': res_id, + 'res_model': 'mail.compose.message', + 'res_id': 0, 'type': 'binary', # override default_type from context, possibly meant for another model! } values['attachment_ids'].append(ir_attach_obj.create(cr, uid, data_attach, context=context)) @@ -140,12 +141,15 @@ class mail_compose_message(osv.TransientModel): mail.compose.message, transform email_cc and email_to into partner_ids """ template_values = self.pool.get('email.template').generate_email(cr, uid, template_id, res_id, context=context) # filter template values + values = { + 'attachment_ids': [], + 'partner_ids': [], + } fields = ['body_html', 'subject', 'email_to', 'email_recipients', 'email_cc', 'attachment_ids', 'attachments'] - values = dict((field, template_values[field]) for field in fields if template_values.get(field)) + values.update(dict((field, template_values[field]) for field in fields if template_values.get(field))) values['body'] = values.pop('body_html', '') - # transform email_to, email_cc into partner_ids - values['partner_ids'] = [] + # transform email_to, email_cc into partner_ids mails = tools.email_split(values.pop('email_to', '') + ' ' + values.pop('email_cc', '')) for mail in mails: partner_id = self.pool.get('res.partner').find_or_create(cr, uid, mail, context=context) diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index 0ec5242937e..f70e3624357 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -214,8 +214,10 @@ class mail_compose_message(osv.TransientModel): email_dict = self.render_message(cr, uid, wizard, res_id, context=context) post_values['partner_ids'] += email_dict.pop('partner_ids', []) post_values['attachments'] = email_dict.pop('attachments', []) - post_values['attachment_ids'] += email_dict.pop('attachment_ids', []) - # we must duplicate attachments, as each document will have its own copy of the attachment + # manage attachments : + # - do not re-add attachments from template already displayed + # - duplicate template attachments because of ownership concept in OpenERP + post_values['attachment_ids'] += filter(lambda item: item not in post_values['attachment_ids'], email_dict.pop('attachment_ids', [])) attachment_ids = [] for attach_id in post_values.pop('attachment_ids'): new_attach_id = ir_attachment_obj.copy(cr, uid, attach_id, {'res_model': active_model_pool_name, 'res_id': res_id}, context=context) @@ -227,8 +229,8 @@ class mail_compose_message(osv.TransientModel): active_model_pool.message_post(cr, uid, [res_id], type='comment', subtype=subtype, context=context, **post_values) # mass mailing: delete mail.compose.message attachments, added by the user and that have been duplicated - if mass_mail_mode and wizard.attachment_ids: - wizard.attachment_ids.unlink() + if wizard.attachment_ids: + ir_attachment_obj.unlink(cr, uid, [attach.id for attach in wizard.attachment_ids if attach.res_model == self._name], context=context) return {'type': 'ir.actions.act_window_close'} @@ -239,6 +241,7 @@ class mail_compose_message(osv.TransientModel): return { 'subject': self.render_template(cr, uid, wizard.subject, wizard.model, res_id, context), 'body': self.render_template(cr, uid, wizard.body, wizard.model, res_id, context), + 'attachment_ids': [attach.id for attach in wizard.attachment_ids], } def render_template(self, cr, uid, template, model, res_id, context=None): From f789005c9a6c26322565a1af7cc4e57a60eab9f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 6 Mar 2013 14:44:10 +0100 Subject: [PATCH 013/107] [REV] email_template: send_mail: back to 2-steps creation, because attachments have to be garbage-collected, and not attached to the document. bzr revid: tde@openerp.com-20130306134410-mw9hau809qh1nbqh --- addons/email_template/email_template.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index 8045cf62204..bcee1da9783 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -375,25 +375,25 @@ class email_template(osv.osv): values = self.generate_email(cr, uid, template_id, res_id, context=context) assert values.get('email_from'), 'email_from is missing or empty after template rendering, send_mail() cannot proceed' del values['email_recipients'] # TODO Properly use them. - template = self.get_email_template(cr, uid, template_id, res_id, context=context) - - # manage attachments attachment_ids = values.pop('attachment_ids', []) attachments = values.pop('attachments', []) + msg_id = mail_mail.create(cr, uid, values, context=context) + + # manage attachments for attachment in attachments: attachment_data = { 'name': attachment[0], 'datas_fname': attachment[0], 'datas': attachment[1], - 'res_model': template.model, - 'res_id': res_id, + 'res_model': 'mail.message', + 'res_id': msg_id, } context.pop('default_type', None) attachment_ids.append(ir_attachment.create(cr, uid, attachment_data, context=context)) if attachment_ids: values['attachment_ids'] = [(6, 0, attachment_ids)] + mail_mail.write(cr, uid, msg_id, {'attachment_ids': [(6, 0, attachment_ids)]}, context=context) - msg_id = mail_mail.create(cr, uid, values, context=context) if force_send: mail_mail.send(cr, uid, [msg_id], context=context) return msg_id From d794920d431d75e912a7654d1daf5cb16a54e6db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 6 Mar 2013 14:44:37 +0100 Subject: [PATCH 014/107] [IMP] mail.compose.message: remove attachment_ids from render_message as it should not be there; assume wizard.attachment_ids is always correct. bzr revid: tde@openerp.com-20130306134437-ywoi1p1nr2e1no97 --- addons/mail/wizard/mail_compose_message.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index f70e3624357..c946a71de9f 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -19,10 +19,8 @@ # ############################################################################## -import base64 import re from openerp import tools - from openerp.osv import osv from openerp.osv import fields from openerp.tools.safe_eval import safe_eval as eval @@ -214,10 +212,6 @@ class mail_compose_message(osv.TransientModel): email_dict = self.render_message(cr, uid, wizard, res_id, context=context) post_values['partner_ids'] += email_dict.pop('partner_ids', []) post_values['attachments'] = email_dict.pop('attachments', []) - # manage attachments : - # - do not re-add attachments from template already displayed - # - duplicate template attachments because of ownership concept in OpenERP - post_values['attachment_ids'] += filter(lambda item: item not in post_values['attachment_ids'], email_dict.pop('attachment_ids', [])) attachment_ids = [] for attach_id in post_values.pop('attachment_ids'): new_attach_id = ir_attachment_obj.copy(cr, uid, attach_id, {'res_model': active_model_pool_name, 'res_id': res_id}, context=context) @@ -241,7 +235,6 @@ class mail_compose_message(osv.TransientModel): return { 'subject': self.render_template(cr, uid, wizard.subject, wizard.model, res_id, context), 'body': self.render_template(cr, uid, wizard.body, wizard.model, res_id, context), - 'attachment_ids': [attach.id for attach in wizard.attachment_ids], } def render_template(self, cr, uid, template, model, res_id, context=None): From 4665d10f0550beabc3c1b6027436641749761a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 6 Mar 2013 14:46:12 +0100 Subject: [PATCH 015/107] [IMP] mail, email_template: better consistence of mail.compose.message mdoel ans 0 or res_id res_id for attachments on composer; generate_email_for_composer should avoid returning keys for void values. bzr revid: tde@openerp.com-20130306134612-yazwi6cgwvw8suyw --- .../email_template/wizard/mail_compose_message.py | 14 ++++++-------- addons/mail/mail_message.py | 2 +- addons/mail/mail_thread.py | 1 - 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py index 1221cfde34e..151cc3384ac 100644 --- a/addons/email_template/wizard/mail_compose_message.py +++ b/addons/email_template/wizard/mail_compose_message.py @@ -69,12 +69,11 @@ class mail_compose_message(osv.TransientModel): for wizard in self.browse(cr, uid, ids, context=context): if not wizard.attachment_ids or wizard.composition_mode == 'mass_mail' or not wizard.template_id: continue - active_model_pool_name = wizard.model if wizard.model else 'mail.thread' template = self.pool.get('email.template').browse(cr, uid, wizard.template_id, context=context) new_attachment_ids = [] for attachment in wizard.attachment_ids: if attachment in template.attachment_ids: - new_attachment_ids.append(self.pool.get('ir.attachment').copy(cr, uid, attachment.id, {'res_model': active_model_pool_name, 'res_id': wizard.res_id}, context=context)) + new_attachment_ids.append(self.pool.get('ir.attachment').copy(cr, uid, attachment.id, {'res_model': 'mail.compose.message', 'res_id': wizard.id}, context=context)) else: new_attachment_ids.append(attachment.id) self.write(cr, uid, wizard.id, {'attachment_ids': [(6, 0, new_attachment_ids)]}, context=context) @@ -87,10 +86,10 @@ class mail_compose_message(osv.TransientModel): values = self.pool.get('email.template').read(cr, uid, template_id, ['subject', 'body_html', 'attachment_ids'], context) values.pop('id') elif template_id: - # FIXME odo: change the mail generation to avoid attachment duplication values = self.generate_email_for_composer(cr, uid, template_id, res_id, context=context) # transform attachments into attachment_ids; not attached to the document because this will # be done further in the posting process, allowing to clean database if email not send + values['attachment_ids'] = values.pop('attachment_ids', []) ir_attach_obj = self.pool.get('ir.attachment') for attach_fname, attach_datas in values.pop('attachments', []): data_attach = { @@ -141,15 +140,12 @@ class mail_compose_message(osv.TransientModel): mail.compose.message, transform email_cc and email_to into partner_ids """ template_values = self.pool.get('email.template').generate_email(cr, uid, template_id, res_id, context=context) # filter template values - values = { - 'attachment_ids': [], - 'partner_ids': [], - } fields = ['body_html', 'subject', 'email_to', 'email_recipients', 'email_cc', 'attachment_ids', 'attachments'] - values.update(dict((field, template_values[field]) for field in fields if template_values.get(field))) + values = dict((field, template_values[field]) for field in fields if template_values.get(field)) values['body'] = values.pop('body_html', '') # transform email_to, email_cc into partner_ids + values['partner_ids'] = [] mails = tools.email_split(values.pop('email_to', '') + ' ' + values.pop('email_cc', '')) for mail in mails: partner_id = self.pool.get('res.partner').find_or_create(cr, uid, mail, context=context) @@ -170,6 +166,8 @@ class mail_compose_message(osv.TransientModel): values = self.generate_email_for_composer(cr, uid, wizard.template_id, res_id, context=context) else: values = {} + # remove attachments as they should not be rendered + values.pop('attachment_ids', None) # get values to return email_dict = super(mail_compose_message, self).render_message(cr, uid, wizard, res_id, context) values.update(email_dict) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 2f56e620543..f29d6c8c543 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -761,7 +761,7 @@ class mail_message(osv.Model): attachments_to_delete = [] for message in self.browse(cr, uid, ids, context=context): for attach in message.attachment_ids: - if attach.res_model == self._name and attach.res_id == message.id: + if attach.res_model == self._name and (attach.res_id == message.id or attach.res_id == 0): attachments_to_delete.append(attach.id) if attachments_to_delete: self.pool.get('ir.attachment').unlink(cr, uid, attachments_to_delete, context=context) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index a456e82d466..cf9b6ecf316 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -944,7 +944,6 @@ class mail_thread(osv.AbstractModel): if attachment_ids: filtered_attachment_ids = ir_attachment.search(cr, SUPERUSER_ID, [ ('res_model', '=', 'mail.compose.message'), - ('res_id', '=', 0), ('create_uid', '=', uid), ('id', 'in', attachment_ids)], context=context) if filtered_attachment_ids: From b1b3ed971ad1be9386618d9501fb9fdf97b9a55a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 6 Mar 2013 17:05:17 +0100 Subject: [PATCH 016/107] [REM] Removed attachment removal because garbage collecting will do it. bzr revid: tde@openerp.com-20130306160517-b0rdbait2h6c9c77 --- addons/mail/wizard/mail_compose_message.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index c946a71de9f..f4b7eb8115d 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -222,10 +222,6 @@ class mail_compose_message(osv.TransientModel): subtype = 'mail.mt_comment' if not context.get('mail_compose_log', False) else False active_model_pool.message_post(cr, uid, [res_id], type='comment', subtype=subtype, context=context, **post_values) - # mass mailing: delete mail.compose.message attachments, added by the user and that have been duplicated - if wizard.attachment_ids: - ir_attachment_obj.unlink(cr, uid, [attach.id for attach in wizard.attachment_ids if attach.res_model == self._name], context=context) - return {'type': 'ir.actions.act_window_close'} def render_message(self, cr, uid, wizard, res_id, context=None): From 40244df4c18900f806055093ed64942667cf5d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 6 Mar 2013 17:11:51 +0100 Subject: [PATCH 017/107] [IMP] mail.compose.message: copied attachments in mass mail mode are linked to the composer, because message_post will update their model and res_id. bzr revid: tde@openerp.com-20130306161151-gczob78pmt683kw7 --- addons/mail/wizard/mail_compose_message.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index f4b7eb8115d..93b7ff07b80 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -214,7 +214,7 @@ class mail_compose_message(osv.TransientModel): post_values['attachments'] = email_dict.pop('attachments', []) attachment_ids = [] for attach_id in post_values.pop('attachment_ids'): - new_attach_id = ir_attachment_obj.copy(cr, uid, attach_id, {'res_model': active_model_pool_name, 'res_id': res_id}, context=context) + new_attach_id = ir_attachment_obj.copy(cr, uid, attach_id, {'res_model': self._name, 'res_id': wizard.id}, context=context) attachment_ids.append(new_attach_id) post_values['attachment_ids'] = attachment_ids post_values.update(email_dict) From 1aac220ee25b7dc45c073c76112e50c68a3c4944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 7 Mar 2013 12:06:57 +0100 Subject: [PATCH 018/107] [IMP] mail: tests: updated tests for attachments bzr revid: tde@openerp.com-20130307110657-1cdelhyd1girmp28 --- addons/email_template/tests/test_mail.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/email_template/tests/test_mail.py b/addons/email_template/tests/test_mail.py index 9e6ed15f904..a4ecb9b6f91 100644 --- a/addons/email_template/tests/test_mail.py +++ b/addons/email_template/tests/test_mail.py @@ -48,8 +48,8 @@ class test_message_compose(TestMailBase): _body_html1 = 'Fans of Pigs, unite !' _body_html2 = 'I am angry !' _attachments = [ - {'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment')}, - {'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment')}, + {'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment'), 'res_model': 'res.partner', 'res_id': self.partner_admin_id}, + {'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment'), 'res_model': 'res.partner', 'res_id': self.partner_admin_id}, ] _attachments_test = [('first.txt', 'My first attachment'), ('second.txt', 'My second attachment')] @@ -115,10 +115,10 @@ class test_message_compose(TestMailBase): self.assertEqual(compose.subject, _subject1, 'mail.compose.message subject incorrect') self.assertIn(_body_html1, compose.body, 'mail.compose.message body incorrect') self.assertEqual(set(message_pids), set(partner_ids), 'mail.compose.message partner_ids incorrect') - # Test: mail.compose.message: attachments + # Test: mail.compose.message: attachments (owner has not been modified) for attach in compose.attachment_ids: - self.assertEqual(attach.res_model, False, 'mail.compose.message attachment res_model through templat was overriden') - self.assertEqual(attach.res_id, 0, 'mail.compose.message attachment res_id incorrect') + self.assertEqual(attach.res_model, 'res.partner', 'mail.compose.message attachment res_model through templat was overriden') + self.assertEqual(attach.res_id, self.partner_admin_id, 'mail.compose.message attachment res_id incorrect') self.assertIn((attach.datas_fname, base64.b64decode(attach.datas)), _attachments_test, 'mail.message attachment name / data incorrect') # Test: mail.message: attachments From fcea61b6ebce561743bfe3876dd5a705ce6a7bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 7 Mar 2013 14:25:17 +0100 Subject: [PATCH 019/107] [IMP] mail: added a cron job to delete mail attachments (lost user input or reports generated on-the-fly). They have: res_model = mail.compose.message; res_id 0; more than one day of inactivity. bzr revid: tde@openerp.com-20130307132517-4xivu90dzn3o744a --- addons/mail/data/mail_data.xml | 13 +++++++++++++ addons/mail/mail_thread.py | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/addons/mail/data/mail_data.xml b/addons/mail/data/mail_data.xml index 3f517ee7858..02cfd626768 100644 --- a/addons/mail/data/mail_data.xml +++ b/addons/mail/data/mail_data.xml @@ -27,6 +27,19 @@ 1000 + + Garbage Collect Mail Attachments + + + 1 + weeks + -1 + + mail.thread + _garbage_collect_attachments + () + + Discussions diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 173ec951b32..2d43b93dd9a 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -389,6 +389,26 @@ class mail_thread(osv.AbstractModel): return [('message_unread', '=', True)] return [] + def _garbage_collect_attachments(self, cr, uid, context=None): + """ Garbage collect lost mail attachments. Those are attachments + - linked to res_model 'mail.compose.message', the composer wizard + - with res_id 0, because they were created outside of an existing + wizard (typically user input through Chatter or reports + created on-the-fly by the templates) + - unused since at least one day (create_date and write_date) + """ + limit_date = datetime.datetime.utcnow() - datetime.timedelta(days=1) + limit_date_str = datetime.datetime.strftime(limit_date, tools.DEFAULT_SERVER_DATETIME_FORMAT) + ir_attachment_obj = self.pool.get('ir.attachment') + attach_ids = ir_attachment_obj.search(cr, uid, [ + ('res_model', '=', 'mail.compose.message'), + ('res_id', '=', 0), + ('create_date', '<', limit_date_str), + ('write_date', '<', limit_date_str), + ], context=context) + ir_attachment_obj.unlink(cr, uid, attach_ids, context=context) + return True + #------------------------------------------------------ # Email specific #------------------------------------------------------ From 70ce1e5eb4586d6f08248430fe6bee9360dba285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 14 Mar 2013 09:53:15 +0100 Subject: [PATCH 020/107] [FIX] Fixed forgotten conflict when merging trunk. bzr revid: tde@openerp.com-20130314085315-m4didtupt20gmkyv --- addons/email_template/wizard/mail_compose_message.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py index f70f29e4b5e..2e051338352 100644 --- a/addons/email_template/wizard/mail_compose_message.py +++ b/addons/email_template/wizard/mail_compose_message.py @@ -145,11 +145,7 @@ class mail_compose_message(osv.TransientModel): values['body'] = values.pop('body_html', '') # transform email_to, email_cc into partner_ids -<<<<<<< TREE - values['partner_ids'] = [] -======= partner_ids = set() ->>>>>>> MERGE-SOURCE mails = tools.email_split(values.pop('email_to', '') + ' ' + values.pop('email_cc', '')) for mail in mails: partner_id = self.pool.get('res.partner').find_or_create(cr, uid, mail, context=context) From 5cb1835e26a3868df3a0a71b3329bea17f455327 Mon Sep 17 00:00:00 2001 From: Yannick Vaucher Date: Fri, 15 Mar 2013 15:24:03 +0100 Subject: [PATCH 021/107] [FIX] add missing context on compute call in pricelist price_get_multi context lp bug: https://launchpad.net/bugs/1155624 fixed bzr revid: yannick.vaucher@camptocamp.com-20130315142403-gz7fy7etwzls96rt --- addons/product/pricelist.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 73707e39807..3a466191795 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -236,7 +236,10 @@ class product_pricelist(osv.osv): qty, context=context)[res['base_pricelist_id']] ptype_src = self.browse(cr, uid, res['base_pricelist_id']).currency_id.id uom_price_already_computed = True - price = currency_obj.compute(cr, uid, ptype_src, res['currency_id'], price_tmp, round=False) + price = currency_obj.compute(cr, uid, + ptype_src, res['currency_id'], + price_tmp, round=False, + context=context) elif res['base'] == -2: # this section could be improved by moving the queries outside the loop: where = [] From c9c249291c1eeb377fa6b232d5e0064df76abc17 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Mon, 25 Mar 2013 11:38:07 +0530 Subject: [PATCH 022/107] [IMP] hr: change admin image in hr bzr revid: cha@tinyerp.com-20130325060807-de4zq8jvokoimmyu --- addons/hr/hr_data.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/hr/hr_data.xml b/addons/hr/hr_data.xml index 25c882f2201..1e9d7668f02 100644 --- a/addons/hr/hr_data.xml +++ b/addons/hr/hr_data.xml @@ -16,6 +16,7 @@ Leave Management (keep track of employee leaves), Expense Management (manage emp Administrator + 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 From 83d85ae1ec728b6d22e26adb729140f4506f37a6 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Mon, 25 Mar 2013 12:13:32 +0530 Subject: [PATCH 023/107] [IMP] added & modified employee demo data in hr bzr revid: cha@tinyerp.com-20130325064332-g1dvoz8lfkt831w1 --- addons/hr/hr_demo.xml | 104 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 99 insertions(+), 5 deletions(-) diff --git a/addons/hr/hr_demo.xml b/addons/hr/hr_demo.xml index 14e4a7f5da2..fcc50237267 100644 --- a/addons/hr/hr_demo.xml +++ b/addons/hr/hr_demo.xml @@ -135,7 +135,7 @@ Grand-Rosière +3281813700 niv@openerp.com - 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 @@ -172,7 +172,7 @@ Grand-Rosière +3281813700 qdp@openerp.com - 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 @@ -184,7 +184,7 @@ Grand-Rosière +3281813700 fme@openerp.com - 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 @@ -196,7 +196,7 @@ Grand-Rosière +3281813700 fpi@openerp.com - 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 @@ -208,7 +208,7 @@ Grand-Rosière +3281813700 jth@openerp.com - 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 @@ -235,5 +235,99 @@ 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 + + Hans Anders + + + Grand-Rosière + +3282823500 + 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 + + + + Jan Van Eyck + + + Auderghem + +3282823500 + jve@openerp.com + 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 + + + + Jean Pierre + + + Grand-Rosière + +3282823500 + jep@openerp.com + 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 + + + + John Doe + + + Grand-Rosière + +3282823500 + jod@openerp.com + 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 + + + + João Gomer + + + Auderghem + +3282823500 + jog@openerp.com + /9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBhQSERUUEhQUFBQUFBQUEhYUFBUVFBQUFBQVFRQUFBQXHCYeFxkjGRQUHy8gIycpLCwsFR4xNTAqNSYrLCkBCQoKDgwOFA8PFCkYFBgpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKf/AABEIAOEA4QMBIgACEQEDEQH/xAAcAAABBQEBAQAAAAAAAAAAAAAFAgMEBgcAAQj/xABEEAABAwEFBQQHBQcCBgMAAAABAAIDEQQFEiExBkFRYXETIoGRBzJCobHB8CNSctHhFDM0YnOy8VOCJHSSorPSFRY1/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAECA//EABoRAQEBAAMBAAAAAAAAAAAAAAABESExQQL/2gAMAwEAAhEDEQA/AMgDk3IEu1RFjy3gSEklRTZTjCkvC9YqFPYmAM1LYm5I1BJs6mWeCtSd1ANNTkKZiuoyUaxRVUmWU5YdzqV8Kb9+agnQWhjAe1NaHDQOAw0rrQ5tO413cNW226smXZPDW0bUOALQK65ZiuR+jEhstS5jzWjHOYanC7WhNRxrr03KQ+zOYwYgQ4tyrua7QdMJHmimxbQ6TQYQCAKbwQQacKZLsdBT2n148ak/XFMMZQV5ZeJrXyCkGpIcRUuFGtA3HdThv8d+4hGLvAClARpx4fBPRQ6l3HjvOvyUyz3UaVeQOAB3HfkDTEQadNydNlLnhrfVpU1BrQby0EnXSuqCAxmXrOI0aK1A45JyMZEUpmpcNjzIcHDeBTvUHLIe/fvSobOHGu4ZGuo8v0RUV9gaRUa8tPJCZbJ3s8yflorTPEB3WgkZAchz96h3ld1DUClKct2aCrvj3FT7gi+08UzbICD5fBENm3AyAHU6K+Iu4b3PBArwjyKtEcfdQW8odVGjWz9q7tFVtsZKzKfZbZ2biOaB39PjkqrEDAn4nJhLYURN3KHaWb1KickzMQD1yd7Bcgsm213dnOSNHKuBy0z0h3bijxgZhZikKkOzCSxcw5LzeqH2FOltUywp5qgn2SznB1zTwyINAQ0Oy0zcNfMinROMZ3W1+6CnLIwuq0by3XLIbvMqKZu1oeyVxriLTHGDpR1MZ03Z+aebGTGKnNjcDq5ggnKh5An6KmXXdTgXNGmnhUVpw0CMturuYaDWvx/NFVMSsFARyaB7VTlQHTVeut4aaNpiFQc8geFRrT5oza9nTWrR04+aHjZZ59gnPdoiYbstsdTNzTqRqddx7wyPFS7GO8SXULszQg58RrT3ohd2x73ADAeVa5K02H0elwGIAHLP9ApqyKoLNjBaQDnUl2uXkPciN1XTjdm1rmt41rTdodPBXu7vR81o7xqegFRwyR+x7NRx+qKKauK7YtkWjMnXQZHLhXVe3rsix7QGjTwVtNnDcgmntU1rGHbUbJOhccss8x5hVKzOMUrXcCPivoi/buEsbsqmnmsK2msHZyEbqlajFmNAsfeblvFUNvOFP7KT44Gfhp4jJO3rGis4vvuuQO0SVKsW1EearDlph4EtqQEsIJETk+cwozE/G5AnCuTq5Brd7RCWIjiFjV4WYxyOadxWv3dacTeoWf7c3fhlxgZFSLVcjKU8JppTx0WkLYU80qNGU+wqCyywd1uvqg5cKDJELosh7RulA8VHEDeD9ahOMs1WsplVjRpXMjT4KWI3CjM2ihBGYzO/hWjWjxWWljuqwB9ab9CaVyXGKh6KfsvZ6truAHWhIrTw+CXfliwSZaHTyz96jSNZoQdUdsFnaKZDyQKyOzCsFjUBOOEcApVnTEBT7BRGkthzUoRqPEFLaoiNLGoczERlCizR1RYGOWQbf3fSVxHGvmthnbQrOPSBZ8zz+vzWoz9A+w1oqwt+6T780bvNmSrWxvdke3oflVWq8G5Ksxnu1MWSpjlftpou6VQX6rUSkhLCQltREiMJYSI0qqBeNeptcgu+xt6YowCc25KXtjYe0gJGozVL2Ut+CWh0ctGmIfERyUrTH0/Gck5etl7OVzeeSZiKrJQ1T7CmnBLjQa3YLOHwxuwkYGNrhHEjPmO9TPRKtUZJa5xaKEOI3BobWm4Cppv1J4KXs9ERHF3qtoKivABw6mu7mkXrBXOhJLTkRU1AyI3Aku8ATwWWxrZm21LQaYaAdQKg7t5y96l7UHutdSnHn935+/VArktFHhpBGQwgihpkAPKv6KxX7ZcUeM6NzNNc6DpzUXwFu9qO2YKtWGXNWOzPSkFbKKfJTI0PiloFMglqo0mxyKTHIoTU/HIoJDkzIxemYDMlDrVfTAcINTTcgTalnO3BdiApqQB40qOv5q9OvJrsjkVXtr7AHwlw1bQj68VqJWe7PPwzkfWRVxtgq1UO7JKWgcyRzV8kNWDoqzFO2gjqwrOJx3itQvqOrSs0traPPVWM1GS2pCW1aQ/GlJLEpoUHtFyXgXqCBDLhcCNxqtQuW2CSIHiFlhCuGxV4ZFh1GY6JViNtlY6ODx0PyVcjK0HaWx42HmKjqFntKFIVJOi9jK8YckW2c2Zltj3tiApGwySOdk1rQaZ9TQIjTbpm+ziLS2roq0dQ5dzKu72ffwSrY4BjczWUk1zyGEFuQ1GhHMkpi4Q0xiLEHPbHRwFSRhqG0yGQ39U/AXSuwEjuPDAa9W7qV0A6jrXDYtcN0l/ezyz4EU06f4Vk2hoyyVJpTw4DJEjZ2wRAAVyG7p+QWaekPacvHYxZgFtTXIU1FBzT1fA520IY7u6e/wDyp9j29YMn+6qqlgu9oGOd1G665nwSrbeFgJDWwvJJDQ7EGipNAauNAOdVcZ1o1i2zs8lAHUPPJE7JerT6pBHJY4+4nMZ2oY4REkAmhzBIILmEitQdcuaK7O3g5rmgE016hTF1s8U1Qh953+2H1tdymXO7E3wUG/Lrxtc5gq8Cjepy1UbUq+9pp53YWVZTeSRTPgNB1SrvuZ1A6S1VOvdyArz/ADoh1+bEvkaD3nPocQqO6TvaCaIzs3siaPdaG4nubGyPAQ14wNw4yY6YTp13qscpUt3yAVa/GOozoKUy3KZZXulspa4Udhc01BA30pXdml3bsvJESXSFzXatdQnLeXDU80VngDW5UCi4yHZ+7hJaHF3dayrnHcKcfNXFnqZablBuW7gJrY0j2qj8LqkZbwiBFC8cHFVFdvRmRWZXuykhWqXizVZntCykhWozQlLakJxi0h0JyMZpqqfgGaB/AvU7hXKAEVNuS29lM07q0PRRKJNFRqkzccWW5Zze9mwSngcwrlsleXaRhp1bkfkhW193U7w3GvgszharkLlbNjrwfFFasDsJLYcX8zcbgWniO8FT4irFsxPR0rP9SB48WFsgp/0FVIul2TYJWSsdTH6za+sN4r4KxXJYSbS0DPE5rjllhpUUOmtVVL4kbG2zM9Uss8bnU1xvrLU86PHkFedgrwbPgmz7pLQOB3j8uvisVuLTtTMWxvI3A0/RYu6yOLi6lc9+a2y+4u0hfmKYT9Z66LPIrKNKfJIWKu243PdilqWjRtaCm5EmbKxyuHrtzGRaxwrxrUK0susOUuy3WGpaYd/+NjFlbBpGBSgPeNakknmTXJU+0XO2EjAKAE0BNaAnSquk9AOAVavSSp+CQq47NT1Y3oizHUKqmy9pyAKswdmo1DpsIca/qnIYaZZeS6zSqQ4Z1UUxK1C7Y3VG5m1GSDWzQoK/ZrEO0kdveAP+nihkTqyS/jKO2cEVduqfE6UVWui045JCN73fFVg1eMazPaqOj1q15RrNNsIs1qJVWolxpFU5GVtksqVZRmopU2yBQS6LkpcgryVhSVLsrK5IJOzt4dlMODsj8le75sglhqOCoFqu8tzCumyl59rFgdqMiosZ/NEWPLTuKn3TauzljedA4Yvwnuu9xKm7W3b2cmIaFBYyr2i47Vk9sDuMcfTusa0+8Far6PJImXe1kYq4/aSHKuNxcKjkA0DwWYXDO20shZKMXfbE8jN7SSA1wG8EbuIKuGyM/YWuazEUYWuDK6gscDTrQkrNai8S2yjXCuXSniOKrNoFQ5wFA0/PIDwoEQtE27d9ZodJLhgcePHdVRpMu+atEaipSqqN12xG23hRuqgYvy8RE0kqtR2gPGJx10UfayR8gyPgqpIJC3AXuFN4yPuWpErStnrc0S0JVztFvY1uJxDWgVJJAAHMnRYhdVpcwgdo4kbzUnzWoXNGJ4R2wxUzAcMhwNOKlWUajtIlaHREOH3gajlmkwX4WnBJk7nv6JVmjbG0NYA1g0Ay/wApFusrZBRwG+h3g8lGk02+oyKh2iWqDQzuY8xk14dESJyRNDr0t3ZWV76Z98N/E40HxVJ2Sm7xRvau+BhMA1qXO5A5gdVWNmpaSkc1Watt4NyWc7YwZVWkWrMKjbXR1YVYVndEppXjguC0wdaiFlQ9iI2ZBJXLqrxABUmxuoUz2SdhjIKC2WaAPZQqBA11mmDh6pyKlXRLkiVqswkGain77sonhqNaVCzsswkg7ir7dE5aDG7dp0Vd2ou7C/G3Q68irCodyXq6zzNkaKgEYmnRwBrQ+S0KS2s/aGWmI1je4PGeYr6wPPWoWXNKIWK9HxigNW64TpXiOBUsSNznflXX61Qa9p6RYep9/wCqnWCTHZoX7nxRu82itOhqPBBb3f3qHT86LLby6HEotNPTqh+zpGY4IxJd5J5HNUV62vBOZTMdijdqRXzQraWzWmOVxazFHXVpJI5FoU/Z67JZmtLXhtZMDhTMc0RZ7nu+zNFXAk/hNFbbOYWNDmNNSKcPNA7o2QmL3NfLhpTCQ0UIIqCa+Sst27NNbEDM9znV71ThbTF6tBuUagba72azNxaNdXAIQNpRO/BZftXDN9D3WjTN+nvViva7LO9jo2xtIJcSaDulwoS0nfw4JOzVyQ2aLDC0NaMuZpxOpPNRUWGMvwl7cLhrv96cmNBRTrXkckNl48kGc7QyVtknLCPJoQu634Z/FKt1pxWh7/vPcR0rl7lHLsMwK0wvsjqt8FU9po6xlWOCarB0QO/21YUVlsmpSQnLQO8eqbWmDsaI2dD4kRgQSF4vVyAJHNRErJamnVCSuBQXOxFu4omxUOz25zd6NWK/dxUXRq0MzDhqE3bSJGGu/I8ilxWkOCblbToUVTLRFgcR5JIkRe+LAaYhu+CDYVWa2vYm0dpdlnO9hliP+2RxHuKg7QR6FM+i60YrBKz7loqP98bT8WnzRK9LPiaeOf8AhYb8V6xW0seCtBuy8GmOp0NM1mcjaHojtz284C2vRWpB23nMlvFN2S34aAgEA60zr+ajx2upoeGa9lsbjmytfioq12S8MZDhI4GgFMQAoMxkRzKLxAuFHyYm60JrXkqBAJgMyARyCOWCJ7vWkca8O6oso9OAcmmnFS4BRvgolhsjW0JJ+uKmSvRpFtIqgN/Wrs4nO0yNOpyHvKOTv1Wf7aXrie2Jp07z+u4fE+SJVPnyckW05tKXbhoVHtr+6Ftha7rtFYwmL3FWFRbgnqxTLc2rSgy63tpI7qo6m3uykpUIKsn4URhQ6BEYkD65IxL1ACXL0heIOS2OSF6EBWw3kWo3FbA8KogqTBaSN6C2RMDxQ6jVVq9buML6eyc2/kiV3XjRwPmrRa7nbaYctSKtPAqL2b9FDzgtbN2GJ/iC5vzVimtgB72mjuvFRfRtsjNAy0vmAbjjaxrK9+mMnG4bgaZDVRb0loSOoKnqzoze1iocQ0Kg2aXCapUN4lmR7zDqD8l5LCCMTDVutN46hAVhmxEZ/qrVclpacjrp4Kgwz0+Sn2W+sJ1RWguDa+qDUaqZDHQfqqvYr9Yad6njUIqy/m0pXQ6/D65LOLqxRsy1+gkPeAq6dpWn2+GhUS07Ql9GR58+KLo1aLWXHC3U68hvJWW3q7/iJd/2jx4BxA+C1C7LKWtq71jmT8llN5y1mk5vef8AuKsZpFrbVqGWx3cRXVqE2sd0hVEzZi3jRWedtWnosxsltMb6jirxdV9h7KE7lUlUq/2UlKGBGdpf3lQgyqH4EQjKgQKa05IF4l4msS5APK8XpXiDgvV4lIOXBdRKAVQ7BNQrS/RlaMcjmu9RjMee4kho95qswAWl+hWzF01pJFWCANPCrnggHnRrvJZrU7TbFf8ANY7bM20EmCfJj9QCKlp65kEcFFv6jnYm5g8FZr2sTY6tlaH2d2QJz7M7g7l/NuVUvq4ZIe9HWSHXLNzR4esOf+VFoS51VHMpaag0XPn3hNvNQqJsN4g+sM/JShgdqgSehlciDkcDRo9OOH83vQ+zwOcjVhuquuaim7JZMZyq7zorzcFxYBiIzovLgu1rRorBQAZKVqQilAVhF5T/AGjvxO+JW7E5FYt6Qbm/ZbSQw4opR2sDjva40c082uqEifRmxWiqYvRlAhdgttHIneFoDmLTKrSjMqVY7UW6KPJquaqhy3TYjUqGnpE0gehUmuSjQp9xQeYlybqvUEUrxekrxB6lJAKUECwlAJATrQqh6OznAX034W9aVJ+uK130MGM3faGVwyumxV0dhDQGEdCHeaz28LH2dnYz2gMTvxOzNemQ8ET2Dtrg6kZAkbUhtadozUtrucNyzWpxWmTWoucYpQMedPuyt3lvnmNyGmyvg/djHFvj9pvOM7x/KicccdqjzqaHo+N497XApNXw5T96PQTDdwErfZ/EMuiy2BWnZaC1jtITgdvLRv4PZx8jzVZvLZC0QZvZiZ99mbf9w1b4rTJbhDndpE7s5KZPZmHDcHt0eFKsl6mIhlpaGE5NkbUwu8fYPJ3gSmmMis90FyKWe5aUqKLVrRslZ5s2tEbjmHR0oeZbofBCLXs1JDqMbPvNFaD+Yat+HNNTFUs9gpTLyROGzDh5DeijbE0jLgnf2McfdmmrhF3Sbq+CK9rXRA5bAa1D1PsjaZVqVFifhyp9VVM9J91Ca7mTNp3Zg5nCknckA5FwY5XJ0oa0k5UFfJDtpLrfJcQbho8QiXDya5shHXCrE+nz2+FzdxSjajSiIpp8LTqFtzC1ymvu8bj5piSyOG6vRAwQmSnyEyQgdhTr0iFqXIgbquXLkDb7I4bimzGeC0ea52ncoM1yN4IuKLhXoCtr7ibwTX/14JqYrbAi9yWYA9o7Rh7o4u/Ia+SkWi5Gx+sact6amtIwhrRQAUp47+f5qBd4W4vrU1UCy2h0bg5hLXNNWkZEHqvTmu7NBq2yF/NtnqubFbGtzBHctDRxbvNNaZjdkrrd94B5MUrezloasdSjhxYdHtP0F89WaUscHNJa5pBa4GhBGhBGhWx7HbUw3jG2z2ugtLfUd6pkpo+Nw9WTiBrqN4GbG5VjF0PhqbMcq1MLj3Dx7N2sZ9ymWO2MlrG5pY+neikAxU6aOGmYqkME1mykxTRf6jR9qz8bB645jPkib7JDaYwThe3VrmnvNPFrhm0qNB8dxPhOKzPoNexkJMR/AczH4ZckSu+9MTsEjXRSfcfTvccDgaP3/km29tBrWeMe0B9s3qPbHMZqbH2NpZ7Mjee48xq13kUTTdruFju80BrjqPYd1A0PMIRNclahndeMyxxzPNjvaHkjbIpIdCZY+Bp2jRyPtjlqn+5M3I1ociMnMd8Wlaxjapb4i00cDUcdfelRszVntlkDspRXc2VozHJ43fDoq9fL47JR08rWRkEh+tQKaNGZ1b5hSxqV7LYDIx4/lz8SGgePyVslhBwsplgcKbqUa2nvWeR+lO72NayN7nDG10hcxzC6mfdypuGRIyGqul2bQQ2iQdm/Ps64T3XCpaaUO+gqrIlfPO11yfsdslhp3K44ucT+8zyGXghDmbwtc9NuzmKCK1NHehpHL/Tc6jXeDv71kNnmqqy8XoKdc1JLFQlzQdRVR33cw8uik0XqCGLvpofNNTWV3CqIpTUAXsDwK5HKLkVIs+1fFEob9Y/VZ/iTjJiEw1pETmO0KavK1shbxefVb8zyVUux0lA4khvsje7py5p+2zUqSakjX5KYag2+2Oc41NTv/JM2c508R8/kmwvXDeNRmqiX2a7AnGZgGiVRAgBPwvoQQSCCCCDQgjMEEaFM4Vzn0Hu+vBBuPo49I7bU0QWkgTjJjjkJgPg/lvVxtFzUcZIXGKQ60zY/+ozQ9Rn1ovl6GYtI5LWtgvSdJ3YZ/tNzSTR/IBxyPQ+azY1K0eC98LgydnZOPqmtY3/gfu6GhT892Nc7GwmOT7zMq8ntOTx180qG0xWhhGTho9jhmOTmHMFRxYZIP3Jxs/0nE5f03nToclFPx3i5hwzgNO54zjd46tPIqRNZATiacL/vDfycPaCTZbcyUEUIIyex4o4cnNO73JH7I6POI1bvjJ0/A7d0OS2wV+3YP31Ga96vcI44vZ8Viu3e0kNpnc3ssUcZIaC97QTvOFrxTOqs3pT2z+z/AGWB4jkdTtsdQWjItjyB19Y03AfeWORXY6o/4hlSeEpPPPCosWO64bKQ6V8D4xGTQiR7mktGJxLXucHBoplvLmDeQoIvKk3a2aZ2IAkA1D2a1IPtEak0HGh3GZLpE1mbCyePEAMXdkzAJcTk0+s7P8McaEO2InicJGuikDSHENc8HI6d9rQamgyO9BsOyu0DLysboLTQyua6OZugeHAnGymgNK8lhm0NyPsNqkgfngPdP32HNrvEe8FaXd+z9qi7C1WNmOgDg2oxOY7VjweIyrxHJS/SNswbxskdrs7a2iFpEkdKPLNXsLdcTDu5lRWSxPqvHBRo3FpoagjipbjUVCrJAevSmnE7x5FOMcqPV4vV4oPcRXJK9QVxet3dR8Vy5UWmb1m9Gf2hQb318T8ly5BBCUfryXLkEizeqE8Fy5B4dV5JoOvyXLkDe5Trp/et6t/uXLkJ2+g7v/i4v6Df7Wq1NXLlhuhF4/xUPT/2Rp35rly1GK+YPSH/APpWv/mJPkqzY/33+1/9pXLkU4P4g9fyVtuD91aOsX/htK5cpVjavR9/AWP+i74lTLq/jbT1b/axcuQr5x2l/i5v6knxTMOi5cqkckb1y5ELXhXLkHi5cuQf/9k= + + + + Juan Gomez + + + Grand-Rosière + +3282823500 + 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 + + + + Luigi Roni + + + Auderghem + +3282823500 + lur@openerp.com + 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 + + + + Николай Петра + + + Grand-Rosière + +3282823500 + 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 + + + + 佐藤さくら (demo_ja_JP) + + + Grand-Rosière + +3282823500 + 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 + + + + 趙生 (demo_zh_CN) + + + Auderghem + +3282823500 + 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 + From 082339102486f16ed5cb2f220b3a142a25b09f52 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Mon, 25 Mar 2013 12:35:19 +0530 Subject: [PATCH 024/107] [IMP] hr_payroll: modified employee demo data bzr revid: cha@tinyerp.com-20130325070519-z5mngedvsqll8bll --- addons/hr_payroll/hr_payroll_demo.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/hr_payroll/hr_payroll_demo.xml b/addons/hr_payroll/hr_payroll_demo.xml index a22809b00e3..b287637db7e 100644 --- a/addons/hr_payroll/hr_payroll_demo.xml +++ b/addons/hr_payroll/hr_payroll_demo.xml @@ -133,6 +133,9 @@ Roger Scott user + Grand-Rosière + +3282823500 + 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 From 43e64047d5df7d5d22115d29c4af83fb4c61cf4b Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Mon, 25 Mar 2013 13:02:38 +0530 Subject: [PATCH 025/107] [IMP] project_timesheet: modified employee demo data bzr revid: cha@tinyerp.com-20130325073238-7xnqk17pn0h96gwc --- addons/project_timesheet/project_timesheet_demo.xml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/addons/project_timesheet/project_timesheet_demo.xml b/addons/project_timesheet/project_timesheet_demo.xml index 90873d2a418..13f8f01daec 100644 --- a/addons/project_timesheet/project_timesheet_demo.xml +++ b/addons/project_timesheet/project_timesheet_demo.xml @@ -18,6 +18,9 @@ + Grand-Rosière + +3282623500 + /9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBhQSEBUSEhQUFRQUFRQVFRQVFBQVFBQUFRQVFBUWFRQXHCYeFxkjGRQUHy8gIycpLCwsFR4xNTAqNSYrLCkBCQoKDgwOGg8PFykcHCQsLSksLCksLCwsKSkpKSwsKSksLCwsKSwpLCwsLCksKSwsLCwsKSwsKSwsLyksKSwpKf/AABEIAQMAwwMBIgACEQEDEQH/xAAcAAABBQEBAQAAAAAAAAAAAAACAAEDBQYEBwj/xAA8EAABAwIDBQYDBgYCAwEAAAABAAIRAyEEEjEFBkFRYRMicYGRoTKxwSNCYtHh8AcUUnKS8aKyM0OCJP/EABoBAAIDAQEAAAAAAAAAAAAAAAAEAQIDBQb/xAAtEQACAgEEAgECAwkAAAAAAAAAAQIRAwQSITEiQXFRYQUzgRMjMkJSobHR8P/aAAwDAQACEQMRAD8A0DUSYBEGriHTIygeFNkQVGqjQANCmeLKBpiZWQ3r3rjuMNuQ1f4/h+a0x43N0iJTUTv2rvPSpTcE3vPdt7nyWO2jvy90hgjkdPa5VLiCXul2vsByC5n0wE7DDCPqzGUpP2S4jbFV5kvd/kfzQUtsVmmRUd6z7Lnyk6KSngydVvtj9DHn0aXY++h0reThx6EK/wAFvDRqRDwDyJgrzjFUspiL8UFMHUahYy08XyuDRZZLg9cNQET/AKTBZDd7eEghlQyNATr5rXtSc4ODGYTUkMQkxqJwSaFT0WFCmpNTNamdWAVkr6KtpdnWHQsxt/aubuMNuJ59PBHj9rl8tb8PE8/0VNihZdrSaTb5zObn1G7xicLygTuSXRkKIZEEEIws2aIZJOkoJPZQEQSSAXlr5OuOoqgUhKr9t7RFCi+qfuiw5uNgPVR2wspN49thh7Jtz96OZ0B+axWKwby4vdMkzfXX2VxgYy9tU7z3nNB0k3v0Ej1KkrV2GcvefxnSeEe3p1XXx41CO0VcrdmXqYQgxx+QQ0tmlwLjMD3/AEWow2AGhNzJceOn6roOzi4ABtvut4nlb1Pqqt10bxhfZh3UCDyC7aGEIYahHCB0utxszcTtDnqfDNhzU23dgjs3ACLQPAf6Wbmrov8AsWlZ5himTPjI8OSibShd1XDmSDqD7hRBs2PBb+hWuSBmoPFb7dzH56QB+JuvhwWF7O60+79XIQeBt4H9/JY5Y7omkOGavKhcYQdvaVWYzaoFm3PskcWKeR1FWXnljFWywxOMDRJMKjxu0C+2jeXPxXNUqlxkn99EIC7+m0Sx+UuWcvNqHPhdBsQYkWUiauLLoCtlW9MpX6oYVJGkSNSAJQiAWbNEDCSJJAWewNKKVzCspG1F5G2di0SErG/xCx8dlS4HM93WLD6rW9ovNN+cXOLdyY1rRf8ADmP/AGW+n5yFZvgpq20zEDQC378104HFkD9zJ0H74BUD6q0+6Wxn4h4izRdzjcNnjHF1rDp0XRk6Rnjjbo0Gx8M95DGNzPMOM2a3kXngOQ1W92LuyGCXHM4/E48egH3W9OPFFsrZ7KNMMpiBx4lxOpceJU1bbpYSynTL3cZOVo8Slrtj/wDCuCzfhwAqbamBDpJXRRY+qftaob0pNgDxc4kn2UVei4WD8w5OAn1CrLjlMmNvhnme8uxOzcXtFjw6qgbs8yCNOnEf6+S9T2ns/tKb2H7wIHQ8Pdee1Puzbh58R6yPMpnFPcqYpnhsdorqmzjJ6e94lWex8N3Dzt6xI+q7qTRP4XCDxLSLfvyTUqORxjxjyJ+h9VtQu5HBUxr3WNuED6qEtUlenDzGhuPO6bKunhhGMFtVHMyt7nY7RZOGpwEbWrcxsFM42ROCgqlAHGdUkz9UwKzkjWLCARAIJSzKhew4SQ5kkBZvae1TxClbtkDUFVDU+RIvQQfoutRJey3O22dfQrznefFh9d54Fzvlb6LWmiFiN4mRWd4yPRZvRrF5I2hm3umcOzsL2lRreZueQGpXpmwquGpQyi+HaG9nHw0JXm2yKJdVDRqQ75FelUsB29OgHN7MUWOp/ZkS5r/iBGWx6rHJXt0PYd38qs22wsX2hLTqNVy7xVzSktEzpHE6Qlu5Ry1XRMNa0X1sIurbHYAVWlrvI8ikm/R0Irk8/wBr4/HYeq1mYZn021Gim0vaZdlLS+NWi5Oiv9j4yu6W1A1xB+NsgOHOCLLvwuyOz69Q0T6qzwWFPBsD96laSlGSpIpDHKLbcrOCtRtJXnm9Wz+zLngS10n+1xvP18R1Xp+ObZYveATTc0jWyrjbjItlipQMPT2noZ1g2/rbx8wrt2NBy5dHNOXmC3vN9pHqsbjaRpmPMeBXRgceQG3+Ej0kz7FdBM5DRcPqS4+NvAiQpMqrWYiag9vDgrRoXR0zuNCGoVSsENUjQnhOE0LAVFxVCuysVxVFIHO8JgEbgmAVJIvFjQmIRoVkaApJ0kE2a1oUoahaFIFvQtYGRZXevCXzLXQuLaWCFRhbzFlScN0aLwntdmW3EwufGQf6HH3avZcDsuGiV5Puu/8Al3iq+wbUyuPJp7pPhML2GnjAacg2XndRFpnptJJbAt38NJqEXLnH2srLO5syBCzGCr1GvIY8EG8EaeBC0GzqQc09oASCL8z+Sw28m7bFTriQHAjNoTofNWxqMFOBqdVwY/EMLYMeoCrtn4zPLQZymP3CuvHoq/Or4JsYJlZXb2GhhnxWxFLms1vZUApqiXJaT4Z5JvC/4AAAWgyfOfqqWhUievvCuN4DBFvimPJ35Kipv9k+ujlS7LTCu+0YevzWlYstgr1WeJ9JK1mVdHSLhiGqfKHDUoUjQhenhM56y46i63mVy1AgghITQjKZVZZMaEJCkhDCyZqCkihMook17QiaUzUQTAuIlRu1RoSEEFNtJrWMcIHfe4xz7oHzJV5/DbbQe12HqGS2wk3LDp6aeSzO3qv2sHT9IVJhtoPo1hVpmHNOnAji09CuJqI7pNHa009iTPXq2BNCsAakU3anLJbItN7hbHCbMoBsPrZ5AIhwHCTobrz/AAG8LcbTY5vxN1adQRqCtPgQ61mhIp7ezrJb1xJr4LnF9i3u0mNNzEAQDEXceHguajs8MOYAAu+KAAJ4WHLRdtDD2k3KDF1g0Engqzk2VUUujnr14Cwm8GJNarkboCrTbG2j8DLudoBw6qHA7KytzO+I3VE65ZMueDA78bPysY4DS3qP0WKGvmvWN98Fmw7udo8r/IFeTubcpzFK4iGeNMtdjU81UdLytdlVHuvhIaXnjYeCvKlRrfiIE8yuzp47YWzj55bp8C0UVRyneLLkLk0Lglc9TVdUWXM9AEJTIyE0KrJQoTEIkxWbNUwEkSSrRNmsCcIAUbQtxcSZO4IQgDLbyGKwPRU+JZcHwP8AvzV/vNS+0aekKnNPNby+q5OdVNnWwO4IHY+0jhazawmAYe0feYdfMajwXtOxtv0qtIPY4OBvb68ivHP5UECeKpzRLXkMc5vOCR8kpPHvG8eZ4/g+iq2+lKm05ntEcyFRV9qVsb/4gWUj/wCx4jMPwM1I6mAsLujsthbmcM72uN3X06FelYF5hKT8XQ7B7lY2zdiNp8y46uOpP74KwfQsipqYpduzRcGY21hMwjWNfNYjbW5QfmqsgEAEg2B8OR/JelbYqMpMNSoQ1ouSefAAcT0Xl2294HVyWiW0pkM59Xc/DRM6ZSb46MNS47afZV0cZUaMrTAHID5qOq8m5JJ5lOmcuo5N9s5ail0i/wALiA+mD0g+IsVHUF1WbPxmQwfhPseasmYhr9HArpYcilFc8nOy43GT+gTTZcz1O4qFwW5gRkIVIQghVZZDJJ4TwqM0QCSPKkoJNKETSmamWpiSlC0XTSuTbGO7KkSPiPdb4nj5C6rJ7VbJirdIqN5ce0vaxt3NMO5CeHiuWhQjMNSCPMcCP3xXFRaCZcM19P6idBKtsC6Whx1AaCeBh1j6QPJcjJPfKzrY4bI0c1SGtMH4QZ9WgEeot0VHQHenqVa7Udk7RogizfeZB8lUNEG3MqiLM3W7MtY13Akz4gwt9s6sIXjuA2s9gyhzgJkjhPGF6PtbaooYMVmEFzwBS4glwmfISfJJZsb3fI9hyLb8Gsa9cG195KGGH2jxm4U2wXn/AOeHiYXllfe3FuEGq+PwkNPq0AqsGIk97U8Tx8+amOk58mVlqv6UXO8e8lTFvzO7rG/BTBs3qTxd1VMicgKdjFRVIUk3J2xEqIulObomsUlQA1NlUpEpZZUgPTxz28ZHX813YfGB9tDy/JcD2KFzYNtQtoZpQ+6MZ4Iy+zLpwQEIMHiM4vqNVMQujGSkrRz3FxdMABPCeE4ChlkNlTI0lUtZogEinTLYXsFxsszvDi81QN4MGnGTc29Fo67gASTAFzwWDxmIlxdxcSfASlNXOo0N6WNys68O++nDyA6LsL8rRHUR1Ok+gVVgqhJ6D56fJd+KPd0uYA9fzK5Z0yPaBzF3r/zE/VcNFgjquh9WTUPQNFuo+gKhon1VkVYYbDpXTWx73U2Ui4llPNlbwGYy73UQCIMCsVGaD5JwznxR9ExcpIALSND5G/uhEnh7qQNlE4wgkElO1sp2MRuQAD7J2thM0TdO75oAEaj1QvF1I0XQ1NfFAAUauR88OPgreFUYhtgu/Z9WWxy08E1pp09orqIWtx0AJ4TgJ4TooCnQkpKKCzQuKUJPCTQtTA4dtuig/hYD1ICwVZ11tN6KsUw3+o/9RP1CxD1y9Y/OjqaNeFlhgnZY4cf1UuMq3v8AdEn+4/CPKZ8lBgXRc/nPED1CWIaTeQJP/I6pP0OPsJg7sczPsAPqmATUnW0UoV0UYdNSAJwEpViAXOTNZOqdrUnP5KACeUIaiaI11TtUkhBA4p3HgnDEAMRATpn6gJyUEA0ygJl3gnZqhpnUoAKtdqHB18pB8j4IzooKdJCdO0DVqmXwCcqDAvlnhb8lM5daMtys5UltdAFJCQkr0Us0r0ARPQtVzIze9lWajW8mz/kf0WXe2/irrblbNXf0OX/Gyqy2HLi53um2dnAtsEjppNECf34dU9Vsiw8EmolSjWwAEbBdJGxqCA3Hx8knH96W8E5KBykBZlcYLZAuHNdUeCA4CrSoMY4iRT7SrOepBBLWi03K593cpxLA5gfmkBpJHfynIRGpzAQDaSrHCuYcNTea1GzXuqdtRovLarnOdUaTnFSS78M3EExZLU5ZRe1cf8/p8GsIp8lZtDCBoD2h7QXPY5lQAVGVGRmaSBDhDmkGB4WXKCtBh3VsVQFapSouAz5c382CAwS77QPLGXBsYmFHV3WrO7OpRoVTSrCmaZIJANSAGufAFjIzGJEFWwZr8JdkSj7RStEJ16puxuWzDH/9DA91XuFzmzSE60oIkEkRm+9wjjh979gfyuJc1rXCkSTTJHAEgtB4wRCcriyJRcav2UDtULzZJxugrut5qCgTdCmp6JONkpsgAmqMalGzRRhBJ37Pf3iOY+S63Ktw74eD1Vm5dDSu40c7VKpWBCdEAkmRU9C2FumK7O1e/KyTYDvW1kmw91xu2/gWOIo4V9drSZquflaY1yzqPIJU95KlLCvw7KbXZxUGcvLcuduWQA0zElZfGfZ4Zw5My+Zt9VjJSbdukapwUVtVtmTxVbM9zgIzOc6OUkmFFllOk0rmHUJWBGGpmIpQSJO1MmZ9VABkoXFEChGpUgO0wZ91r8LWBa2qzLXr5SXDscK2qKhaQA4vio8SfibJMaiVkQF3t2vVy5S/O3TLUDarR4CoDHkltRieRKqNIS2lu3ZTOy7MYesK3ZMawdhWbUdX7slzsxpvZOb7ukcl61szbbu1p4YsaT2eWplmzmU5qmAMgptfFMt1lwi2vlW7G/b8JUzdkwsNntaXUwWzNmg5A7rlWyxH8R8B2dTs2VGPr2qZaTWuuILnPBIPkkpYpxuUoOX0r03/AHX2rnss5KVJOjt2hthjMZUwTnEdo1jqUkuAzd7KIvna5stkgXibNS3m2H2+Gq0nVGiq1xe6o8huaL03uJs1uUltrAz50A2nSxJB7YuqBwcx3d7RpbBbktntH9PG/Tl3iwNfFVMhxlOYBFFzmtEwJMM4z+HgttPrUklmtSSrrs2tqDguV3+v+vt+vowDviPTzUT7keq6MbhjSqPpujMw5TBkSORXNNyekJ9NNWhNjkyU9TRDTSfqpAkGiBG5DFlBI4KtwZEqma5XWEpOdTDg0kAXIBgRzKd0j5aEdYuEx0kiUk+c82+xd33YlxvlY34nRN+QHEqn/iJUwlGmcLRzOr5m53ySGAXLSdMxtYCy9J3ZYBhaccZJ8cx/JeI7x0XAOL/jOIrZ51zZna+SSyzlK16Q7ixxjtftlCk03SlBmv8AvikR8na6yJr1CXWSa5AE+dE0qFpRgoJJAEghlNKAJZRKII2lABSnQqGs8i4QBOuuntiq0BucuaPuPh7P8XyFXU68oy6yq4qXaslOuhqtWXEniSTy9FE428UIPuk0yVYqTMFkzLlO4pqQsgCRyYpiUpQSBxWl2VWmg23eaXnOQMrAH0zd0W7pfYHnYrMu1VjsxgdIImIK2wczow1DqFnY103GhJieUmPaElLlSXV2/c5DkehbD3jbQaadWckyHAE5SdZA4Ki/in/LOwza1FzHVHVWAlj2mRkddzJ1gAShxTLKuxuzWVWlrwDPHiDzBWWTBu5j2a49RtSUlaMCHpPEhdW1tlnD1MhlzXXY6NeniFxkeRXKlFxdM60ZKS3LoLNYJ2FAdEVNVLE6NAEQQSESmBTEpgpIDlG0oAESCRy5BUukSheUEHO10FdDnWXLU1U1M2QALbSVJQCicfdTU9EAO83hSyo2c0UoJHCUpgU6AAcu/ZDu+Rzb8lwOVruzSe7EsFMDNDrOjKYEwZteI81fFLbNMzzR3QaLIBMnykSHagkHoZ0SXb3HCaNDVFlx5le1qLXsGJoDuWdUpGC6keP9zPl4aUNZ5L3kn77/AAADiAABYCIWcMm50WnjcVyT1MKHsu0OALdYMEmxANxfiujFbBo1R9pTa484h3qLrmpXLR5q8ohcH8Sn++pekek/CsSWC37Z5RvNs9tDEOpskNGUiTOoB1VdTWk/iHh8uKB/qY0+kj8lm2Ixu4plciqbRO0olGEnOWhmEXImqJqlCACBTuKEap3IJGBQuKQKZ2qgg56yJju6U1cJqBsUAEdVNPBRBt1I3iUASNTkpmlKVJITU5KZMCgBFegbJ2fVw+FczJTL2l1Qu7QuNsrgIaNMozXI01XnxKta29mKcCDWcAQQYgSDAIJAk/CPfmVaDSdsh8qizcZJLjJJJJ5kmT80yEXEpLsbUcJ98mpweMNJ+anIAJgOIMtJktcBYjgq/Ful73QGhz3ODRoATMLqlc2JF0Rik7KubaokwPx+AV7SFlS7Pb3j4/RXDjZeY1j3ZpP7nsNFHbp4L7GM/iPh7UqnIub6wR8isU0r03efZ/bYdzR8Qhzf7hw8wSPNeZhsGOXzWuCXjQvqI1OwwgJTuNkzAtxYkaFIEARhBI4KZ5ToHKQGBTvQSjaUEEbxIXO3um67MqBzAbaqAGajAUREW9PyUwcgAglKYgoQ081IEuZBmQlh5p8iAHlMUMdE7DcRrIQBrqLO6PAfJJUna1T/AO30a2Ey6yypcUcd4JP2jb0lHixYHqkkthU6tnfEf7irMpJLyeo/Nl8s9vg/Jj8L/BW7UNl5dVMvJ6n5pJLbB7FtT6I3aqVoSSTImOE4SSUkhHRAUkkEEbk7SkkoAeo6yZiSSkAaunmEdLRJJQBK1PCSSkBk5CSSgkgrVCNE2BqFz7pJLSK5M59MtEkkk6JH/9k= @@ -35,12 +38,17 @@ - Aline + Aline Preillon - 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 + Grand-Rosière + +3282823500 + apr@openerp.com + + + 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 From f3a976fd53a3bd09256be26fceffac6556194527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Mar 2013 13:53:11 +0100 Subject: [PATCH 026/107] [FIX] mail: fixed suggested recipients, not taking into account followers; when having multiple email addresses, this could lead to people being suggested based on email although they already are followers. bzr revid: tde@openerp.com-20130326125311-xlt1lt1te28fcm1o --- addons/mail/mail_thread.py | 26 +++++++++++++++++++++----- addons/mail/static/src/js/mail.js | 12 ++++++++++-- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index cb8da42ab47..c5ec5300b56 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -848,7 +848,8 @@ class mail_thread(osv.AbstractModel): recipient in the result dictionary. The form is : partner_id, partner_name or partner_name, reason """ if email and not partner: - partner_info = self.message_get_partner_info_from_emails(cr, uid, [email], context=context)[0] + # get partner info from email + partner_info = self.message_get_partner_info_from_emails(cr, uid, [email], context=context, res_id=obj.id)[0] if partner_info.get('partner_id'): partner = self.pool.get('res.partner').browse(cr, SUPERUSER_ID, [partner_info.get('partner_id')], context=context)[0] if email and email in [val[1] for val in result[obj.id]]: # already existing email -> skip @@ -876,7 +877,11 @@ class mail_thread(osv.AbstractModel): self._message_add_suggested_recipient(cr, uid, result, obj, partner=obj.user_id.partner_id, reason=self._all_columns['user_id'].column.string, context=context) return result - def message_get_partner_info_from_emails(self, cr, uid, emails, link_mail=False, context=None): + def message_get_partner_info_from_emails(self, cr, uid, emails, link_mail=False, context=None, res_id=None): + """ Wrapper with weird order parameter because of 7.0 fix. """ + return self.message_find_partner_from_emails(cr, uid, res_id, emails, link_mail=link_mail, context=context) + + def message_find_partner_from_emails(self, cr, uid, id, emails, link_mail=False, context=None): """ Convert a list of emails into a list partner_ids and a list new_partner_ids. The return value is non conventional because it is meant to be used by the mail widget. @@ -886,15 +891,26 @@ class mail_thread(osv.AbstractModel): mail_message_obj = self.pool.get('mail.message') partner_obj = self.pool.get('res.partner') result = list() + if id: + obj = self.browse(cr, SUPERUSER_ID, id, context=context) + else: + obj = None for email in emails: partner_info = {'full_name': email, 'partner_id': False} m = re.search(r"((.+?)\s*<)?([^<>]+@[^<>]+)>?", email, re.IGNORECASE | re.DOTALL) if not m: continue email_address = m.group(3) - ids = partner_obj.search(cr, SUPERUSER_ID, [('email', '=', email_address)], context=context) - if ids: - partner_info['partner_id'] = ids[0] + # first try: check in document's followers + if obj: + for follower in obj.message_follower_ids: + if follower.email == email_address: + partner_info['partner_id'] = follower.id + # second try: check in partners + if not partner_info.get('partner_id'): + ids = partner_obj.search(cr, SUPERUSER_ID, [('email', '=', email_address)], context=context) + if ids: + partner_info['partner_id'] = ids[0] result.append(partner_info) # link mail with this from mail to the new partner id diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index cc34483c17b..d715979c507 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -620,7 +620,11 @@ openerp.mail = function (session) { // have unknown names -> call message_get_partner_info_from_emails to try to find partner_id var find_done = $.Deferred(); if (names_to_find.length > 0) { - find_done = self.parent_thread.ds_thread._model.call('message_get_partner_info_from_emails', [names_to_find]); + // find_done = self.parent_thread.ds_thread._model.call('message_get_partner_info_from_emails', [names_to_find]); + var values = { + 'res_id': this.context.default_res_id, + } + find_done = self.parent_thread.ds_thread._model.call('message_get_partner_info_from_emails', [names_to_find], values); } else { find_done.resolve([]); @@ -666,7 +670,11 @@ openerp.mail = function (session) { var new_names_to_find = _.difference(names_to_find, names_to_remove); find_done = $.Deferred(); if (new_names_to_find.length > 0) { - find_done = self.parent_thread.ds_thread._model.call('message_get_partner_info_from_emails', [new_names_to_find, true]); + var values = { + 'link_mail': true, + 'res_id': this.context.default_res_id, + } + find_done = self.parent_thread.ds_thread._model.call('message_get_partner_info_from_emails', [new_names_to_find], values); } else { find_done.resolve([]); From 300d5be0e6af4d24d09419e0be6807b265da3cd8 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Thu, 28 Mar 2013 13:03:37 +0100 Subject: [PATCH 027/107] [FIX] web: int/float fields were not offering auto-completion in search views, making them un-searchable except via advanced search Added the missing complete() function and removed the incorrect value_from() override that seemed to be a leftover remnant of the 6.1 search field implementation of get_value(), wrongly renamed for 7.0. bzr revid: odo@openerp.com-20130328120337-lao4o9i0owsbpysi --- addons/web/static/src/js/search.js | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index c1ace6b57f3..50576687808 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1346,20 +1346,22 @@ instance.web.search.CharField = instance.web.search.Field.extend( /** @lends ins } }); instance.web.search.NumberField = instance.web.search.Field.extend(/** @lends instance.web.search.NumberField# */{ - value_from: function () { - if (!this.$el.val()) { - return null; - } - var val = this.parse(this.$el.val()), - check = Number(this.$el.val()); - if (isNaN(val) || val !== check) { - this.$el.addClass('error'); - throw new instance.web.search.Invalid( - this.attrs.name, this.$el.val(), this.error_message); - } - this.$el.removeClass('error'); - return val; - } + complete: function (value) { + var val = this.parse(value); + if (!val || isNaN(val)) { return $.when(); } + var label = _.str.sprintf(_.str.escapeHTML( + _t("Search %(field)s for: %(value)s")), { + field: '' + this.attrs.string + '', + value: '' + _.str.escapeHTML(value) + ''}); + return $.when([{ + label: label, + facet: { + category: this.attrs.string, + field: this, + values: [{label: value, value: val}] + } + }]); + }, }); /** * @class From 35d61bbd8bbfd034b3d9e01347f0f13ee0ef17ac Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Thu, 28 Mar 2013 16:35:02 +0100 Subject: [PATCH 028/107] [FIX] web search: correct previous fix to properly handle searching for 0 on number fields Also removed useless HTML escaping and added basic tests. bzr revid: odo@openerp.com-20130328153502-v71q2m60wh37ganq --- addons/web/static/src/js/search.js | 6 ++-- addons/web/static/test/search.js | 53 ++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 50576687808..37f8bd8b3f2 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1348,9 +1348,9 @@ instance.web.search.CharField = instance.web.search.Field.extend( /** @lends ins instance.web.search.NumberField = instance.web.search.Field.extend(/** @lends instance.web.search.NumberField# */{ complete: function (value) { var val = this.parse(value); - if (!val || isNaN(val)) { return $.when(); } - var label = _.str.sprintf(_.str.escapeHTML( - _t("Search %(field)s for: %(value)s")), { + if (isNaN(val)) { return $.when(); } + var label = _.str.sprintf( + _t("Search %(field)s for: %(value)s"), { field: '' + this.attrs.string + '', value: '' + _.str.escapeHTML(value) + ''}); return $.when([{ diff --git a/addons/web/static/test/search.js b/addons/web/static/test/search.js index 6c4b6d61d3c..73d984506b2 100644 --- a/addons/web/static/test/search.js +++ b/addons/web/static/test/search.js @@ -614,6 +614,59 @@ openerp.testing.section('search.completions', { {relation: 'dummy.model'}, view); return f.complete("bob"); }); + test('Integer: invalid', {asserts: 1}, function (instance) { + var view = {inputs: []}; + var f = new instance.web.search.IntegerField( + {attrs: {string: "Dummy"}}, {}, view); + return f.complete("qux") + .done(function (completions) { + ok(!completions, "non-number => no completion"); + }); + }); + test('Integer: non-zero', {asserts: 5}, function (instance) { + var view = {inputs: []}; + var f = new instance.web.search.IntegerField( + {attrs: {string: "Dummy"}}, {}, view); + return f.complete("-2") + .done(function (completions) { + equal(completions.length, 1, "number fields provide 1 completion only"); + var facet = new instance.web.search.Facet(completions[0].facet); + equal(facet.get('category'), f.attrs.string); + equal(facet.get('field'), f); + var value = facet.values.at(0); + equal(value.get('label'), "-2"); + equal(value.get('value'), -2); + }); + }); + test('Integer: zero', {asserts: 3}, function (instance) { + var view = {inputs: []}; + var f = new instance.web.search.IntegerField( + {attrs: {string: "Dummy"}}, {}, view); + return f.complete("0") + .done(function (completions) { + equal(completions.length, 1, "number fields provide 1 completion only"); + var facet = new instance.web.search.Facet(completions[0].facet); + var value = facet.values.at(0); + equal(value.get('label'), "0"); + equal(value.get('value'), 0); + }); + }); + test('Float: non-zero', {asserts: 5}, function (instance) { + var view = {inputs: []}; + var f = new instance.web.search.FloatField( + {attrs: {string: "Dummy"}}, {}, view); + return f.complete("42.37") + .done(function (completions) { + equal(completions.length, 1, "float fields provide 1 completion only"); + var facet = new instance.web.search.Facet(completions[0].facet); + equal(facet.get('category'), f.attrs.string); + equal(facet.get('field'), f); + var value = facet.values.at(0); + equal(value.get('label'), "42.37"); + equal(value.get('value'), 42.37); + }); + }); + }); openerp.testing.section('search.serialization', { dependencies: ['web.search'], From 17eaf9e92a44db7238f9ca3a53041bc94314322e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 29 Mar 2013 15:03:29 +0100 Subject: [PATCH 029/107] [TESTS] add dispatcher tests bzr revid: xmo@openerp.com-20130329140329-a78lqt87str80v99 --- addons/web/tests/__init__.py | 3 +- addons/web/tests/test_dispatch.py | 181 ++++++++++++++++++++++++++++++ 2 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 addons/web/tests/test_dispatch.py diff --git a/addons/web/tests/__init__.py b/addons/web/tests/__init__.py index d7abb8e5a8c..2734bd45ddb 100644 --- a/addons/web/tests/__init__.py +++ b/addons/web/tests/__init__.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- -from . import test_dataset, test_menu, test_serving_base, test_js +from . import test_dataset, test_menu, test_serving_base, test_js, test_dispatch fast_suite = [] checks = [ test_dataset, test_menu, test_serving_base, + test_dispatch, ] diff --git a/addons/web/tests/test_dispatch.py b/addons/web/tests/test_dispatch.py new file mode 100644 index 00000000000..df142043de5 --- /dev/null +++ b/addons/web/tests/test_dispatch.py @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- +import json +import unittest2 + +from .. import http +import werkzeug.test + + +def setUpModule(): + """ + Force load_addons once to import all the crap we don't care for as this + thing is full of side-effects + """ + http.Root().load_addons() + +class DispatchCleanup(unittest2.TestCase): + """ + Cleans up controllers registries in the web client so it's possible to + test controllers registration and dispatching in isolation. + """ + def setUp(self): + self.classes = http.controllers_class + self.objects = http.controllers_object + self.paths = http.controllers_path + + http.controllers_class = [] + http.controllers_object = {} + http.controllers_path = {} + + def tearDown(self): + http.controllers_path = self.paths + http.controllers_object = self.objects + http.controllers_class = self.classes + + +def jsonrpc_body(params=None): + """ + Builds and dumps the body of a JSONRPC request with params ``params`` + """ + return json.dumps({ + 'jsonrpc': '2.0', + 'method': 'call', + 'id': None, + 'params': params or {}, + }) + + +def jsonrpc_response(result=None): + """ + Builds a JSONRPC response (as a Python dict) with result ``result`` + """ + return { + u'jsonrpc': u'2.0', + u'id': None, + u'result': result, + } + + +class TestDispatching(DispatchCleanup): + def setUp(self): + super(TestDispatching, self).setUp() + self.app = http.Root() + self.client = werkzeug.test.Client(self.app) + + def test_not_exposed(self): + class CatController(http.Controller): + _cp_path = '/cat' + + def index(self): + return 'Blessid iz da feline' + + self.app.load_addons() + + body, status, headers = self.client.get('/cat') + self.assertEqual('404 NOT FOUND', status) + + def test_basic_http(self): + class CatController(http.Controller): + _cp_path = '/cat' + + @http.httprequest + def index(self, req): + return 'no walk in counsil of wickid,' + + self.app.load_addons() + + body, status, headers = self.client.get('/cat') + self.assertEqual('200 OK', status) + self.assertEqual('no walk in counsil of wickid,', ''.join(body)) + + def test_basic_jsonrpc(self): + class CatController(http.Controller): + _cp_path = '/cat' + + @http.jsonrequest + def index(self, req): + return 'no place paws in path of da sinnerz,' + self.app.load_addons() + + body, status, headers = self.client.post('/cat', data=jsonrpc_body()) + + self.assertEqual('200 OK', status) + self.assertEqual( + jsonrpc_response('no place paws in path of da sinnerz,'), + json.loads(''.join(body))) + + def test_add_method(self): + class CatController(http.Controller): + _cp_path = '/cat' + + @http.httprequest + def index(self, req): + return 'no sit and purr with da mockerz.' + + class CeilingController(CatController): + @http.httprequest + def lol(self, req): + return 'But der delightz in lawz of Ceiling Cat,' + + self.app.load_addons() + + body, status, headers = self.client.get('/cat') + self.assertEqual('200 OK', status) + self.assertEqual('no sit and purr with da mockerz.', ''.join(body)) + body, status, headers = self.client.get('/cat/lol') + self.assertEqual('200 OK', status) + self.assertEqual('But der delightz in lawz of Ceiling Cat,', + ''.join(body)) + + def test_override_method(self): + class CatController(http.Controller): + _cp_path = '/cat' + + @http.httprequest + def index(self, req): + return 'an ponderz' + + class CeilingController(CatController): + @http.httprequest + def index(self, req): + return '%s much.' % super(CeilingController, self).index(req) + + self.app.load_addons() + + body, status, headers = self.client.get('/cat') + self.assertEqual('200 OK', status) + self.assertEqual('an ponderz much.', ''.join(body)) + + def test_make_invisible(self): + class CatController(http.Controller): + _cp_path = '/cat' + + @http.httprequest + def index(self, req): + return 'Tehy liek treez bai teh waterz,' + + class CeilingController(CatController): + def index(self, req): + return super(CeilingController, self).index(req) + + self.app.load_addons() + + body, status, headers = self.client.get('/cat') + self.assertEqual('404 NOT FOUND', status) + + def test_make_json_invisible(self): + class CatController(http.Controller): + _cp_path = '/cat' + + @http.jsonrequest + def index(self, req): + return 'Tehy liek treez bai teh waterz,' + + class CeilingController(CatController): + def index(self, req): + return super(CeilingController, self).index(req) + + self.app.load_addons() + + body, status, headers = self.client.post('/cat') + self.assertEqual('404 NOT FOUND', status) From 23904b523af532aa87341b681e298b7ae2fcec01 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 29 Mar 2013 15:16:45 +0100 Subject: [PATCH 030/107] [TEST] test normal inheritance of controllers bzr revid: xmo@openerp.com-20130329141645-m70aitx3kv74yo97 --- addons/web/tests/test_dispatch.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/addons/web/tests/test_dispatch.py b/addons/web/tests/test_dispatch.py index df142043de5..54b987cf555 100644 --- a/addons/web/tests/test_dispatch.py +++ b/addons/web/tests/test_dispatch.py @@ -179,3 +179,30 @@ class TestDispatching(DispatchCleanup): body, status, headers = self.client.post('/cat') self.assertEqual('404 NOT FOUND', status) + + def test_extend(self): + class CatController(http.Controller): + _cp_path = '/cat' + + @http.httprequest + def index(self, req): + return '[%s]' % self.speak() + + def speak(self): + return 'Yu ordered cheezburgerz,' + + class DogController(CatController): + _cp_path = '/dog' + + def speak(self): + return 'Woof woof woof woof' + + self.app.load_addons() + + body, status, headers = self.client.get('/cat') + self.assertEqual('200 OK', status) + self.assertEqual('[Yu ordered cheezburgerz,]', ''.join(body)) + + body, status, headers = self.client.get('/dog') + self.assertEqual('200 OK', status) + self.assertEqual('[Woof woof woof woof]', ''.join(body)) From 1f421e7928f5295a21e87f43a94faded5a72bc13 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Apr 2013 16:32:17 +0200 Subject: [PATCH 031/107] [FIX] redefinition and in-place extension scenarios for controllers bzr revid: xmo@openerp.com-20130402143217-pfe2288iodw9r81g --- addons/web/http.py | 54 ++++++++-- addons/web/tests/test_dispatch.py | 165 +++++++++++++++++++++++++++--- 2 files changed, 197 insertions(+), 22 deletions(-) diff --git a/addons/web/http.py b/addons/web/http.py index e05d74e0873..f08d7c64c4d 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -354,18 +354,58 @@ def httprequest(f): #---------------------------------------------------------- addons_module = {} addons_manifest = {} -controllers_class = [] -controllers_object = {} +controllers_class = {} controllers_path = {} class ControllerType(type): def __init__(cls, name, bases, attrs): super(ControllerType, cls).__init__(name, bases, attrs) - controllers_class.append(("%s.%s" % (cls.__module__, cls.__name__), cls)) + # Only for root "Controller" + if bases == (object,): + assert name == 'Controller' + return + + path = attrs.get('_cp_path') + if Controller in bases: + assert path, "Controller subclass %s missing a _cp_path" % cls + else: + parent_paths = set(base._cp_path for base in bases + if issubclass(base, Controller)) + assert len(parent_paths) == 1,\ + "%s inheriting from multiple controllers is not supported" % ( + name) + [parent_path] = parent_paths + [parent] = [ + controller for controller in controllers_class.itervalues() + if controller._cp_path == parent_path] + + # inherit from a Controller subclass + if path: + _logger.warn("Re-exposing %s at %s.\n" + "\tThis usage is unsupported.", + parent.__name__, + attrs['_cp_path']) + + if path: + assert path not in controllers_class,\ + "Trying to expose %s at the same URL as %s" % ( + cls, controllers_class[path]) + controllers_class[path] = cls + class Controller(object): __metaclass__ = ControllerType + def __new__(cls, *args, **kwargs): + subclasses = [c for c in cls.__subclasses__() + if c._cp_path is cls._cp_path] + if subclasses: + name = "%s (+%s)" % ( + cls.__name__, + '+'.join(sub.__name__ for sub in subclasses)) + cls = type(name, tuple(reversed(subclasses)), {}) + return object.__new__(cls) + #---------------------------------------------------------- # Session context manager #---------------------------------------------------------- @@ -558,12 +598,8 @@ class Root(object): addons_manifest[module] = manifest self.statics['/%s/static' % module] = path_static - for k, v in controllers_class: - if k not in controllers_object: - o = v() - controllers_object[k] = o - if hasattr(o, '_cp_path'): - controllers_path[o._cp_path] = o + for c in controllers_class.itervalues(): + controllers_path[c._cp_path] = c() app = werkzeug.wsgi.SharedDataMiddleware(self.dispatch, self.statics) self.dispatch = DisableCacheMiddleware(app) diff --git a/addons/web/tests/test_dispatch.py b/addons/web/tests/test_dispatch.py index 54b987cf555..516345bfa13 100644 --- a/addons/web/tests/test_dispatch.py +++ b/addons/web/tests/test_dispatch.py @@ -1,5 +1,9 @@ # -*- coding: utf-8 -*- +import contextlib import json +import logging +import logging.handlers +import types import unittest2 from .. import http @@ -20,16 +24,13 @@ class DispatchCleanup(unittest2.TestCase): """ def setUp(self): self.classes = http.controllers_class - self.objects = http.controllers_object self.paths = http.controllers_path - http.controllers_class = [] - http.controllers_object = {} + http.controllers_class = {} http.controllers_path = {} def tearDown(self): http.controllers_path = self.paths - http.controllers_object = self.objects http.controllers_class = self.classes @@ -56,6 +57,30 @@ def jsonrpc_response(result=None): } +class TestHandler(logging.handlers.BufferingHandler): + def __init__(self): + logging.handlers.BufferingHandler.__init__(self, 0) + + def shouldFlush(self, record): + return False + +@contextlib.contextmanager +def capture_logging(level=logging.DEBUG): + logger = logging.getLogger('openerp') + old_level = logger.level + old_handlers = logger.handlers + + test_handler = TestHandler() + logger.handlers = [test_handler] + logger.setLevel(level) + + try: + yield test_handler + finally: + logger.setLevel(old_level) + logger.handlers = old_handlers + + class TestDispatching(DispatchCleanup): def setUp(self): super(TestDispatching, self).setUp() @@ -104,6 +129,13 @@ class TestDispatching(DispatchCleanup): jsonrpc_response('no place paws in path of da sinnerz,'), json.loads(''.join(body))) + +class TestSubclassing(DispatchCleanup): + def setUp(self): + super(TestSubclassing, self).setUp() + self.app = http.Root() + self.client = werkzeug.test.Client(self.app) + def test_add_method(self): class CatController(http.Controller): _cp_path = '/cat' @@ -180,7 +212,38 @@ class TestDispatching(DispatchCleanup): body, status, headers = self.client.post('/cat') self.assertEqual('404 NOT FOUND', status) - def test_extend(self): + def test_extends(self): + """ + When subclassing an existing Controller new classes are "merged" into + the base one + """ + class A(http.Controller): + _cp_path = '/foo' + @http.httprequest + def index(self, req): + return '1' + + class B(A): + @http.httprequest + def index(self, req): + return "%s 2" % super(B, self).index(req) + + class C(A): + @http.httprequest + def index(self, req): + return "%s 3" % super(C, self).index(req) + + self.app.load_addons() + + body, status, headers = self.client.get('/foo') + self.assertEqual('200 OK', status) + self.assertEqual('1 2 3', ''.join(body)) + + def test_re_expose(self): + """ + An existing Controller should not be extended with a new cp_path + (re-exposing somewhere else) + """ class CatController(http.Controller): _cp_path = '/cat' @@ -191,18 +254,94 @@ class TestDispatching(DispatchCleanup): def speak(self): return 'Yu ordered cheezburgerz,' - class DogController(CatController): - _cp_path = '/dog' + with capture_logging() as handler: + class DogController(CatController): + _cp_path = '/dog' - def speak(self): - return 'Woof woof woof woof' + def speak(self): + return 'Woof woof woof woof' + + [record] = handler.buffer + self.assertEqual(logging.WARN, record.levelno) + self.assertEqual("Re-exposing CatController at /dog.\n" + "\tThis usage is unsupported.", + record.getMessage()) + + def test_fail_redefine(self): + """ + An existing Controller can't be overwritten by a new one on the same + path (? or should this generate a warning and still work as if it was + an extend?) + """ + class FooController(http.Controller): + _cp_path = '/foo' + + with self.assertRaises(AssertionError): + class BarController(http.Controller): + _cp_path = '/foo' + + def test_fail_no_path(self): + """ + A Controller must have a path (and thus be exposed) + """ + with self.assertRaises(AssertionError): + class FooController(http.Controller): + pass + + def test_mixin(self): + """ + Can mix "normal" python classes into a controller directly + """ + class Mixin(object): + @http.httprequest + def index(self, req): + return 'ok' + + class FooController(http.Controller, Mixin): + _cp_path = '/foo' + + class BarContoller(Mixin, http.Controller): + _cp_path = '/bar' self.app.load_addons() - body, status, headers = self.client.get('/cat') + body, status, headers = self.client.get('/foo') self.assertEqual('200 OK', status) - self.assertEqual('[Yu ordered cheezburgerz,]', ''.join(body)) + self.assertEqual('ok', ''.join(body)) - body, status, headers = self.client.get('/dog') + body, status, headers = self.client.get('/bar') self.assertEqual('200 OK', status) - self.assertEqual('[Woof woof woof woof]', ''.join(body)) + self.assertEqual('ok', ''.join(body)) + + def test_mixin_extend(self): + """ + Can mix "normal" python class into a controller by extension + """ + class FooController(http.Controller): + _cp_path = '/foo' + + class M1(object): + @http.httprequest + def m1(self, req): + return 'ok 1' + + class M2(object): + @http.httprequest + def m2(self, req): + return 'ok 2' + + class AddM1(FooController, M1): + pass + + class AddM2(M2, FooController): + pass + + self.app.load_addons() + + body, status, headers = self.client.get('/foo/m1') + self.assertEqual('200 OK', status) + self.assertEqual('ok 1', ''.join(body)) + + body, status, headers = self.client.get('/foo/m2') + self.assertEqual('200 OK', status) + self.assertEqual('ok 2', ''.join(body)) From 41784d0aec09c4fdda793fee7587c9fd8fedec52 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 3 Apr 2013 10:26:35 +0200 Subject: [PATCH 032/107] [FIX] Export and Reports controllers have no need to extend View bzr revid: xmo@openerp.com-20130403082635-9dmdi4cco3kawiib --- addons/web/controllers/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index a199cba7854..890fa6fa466 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1428,7 +1428,7 @@ class Action(openerpweb.Controller): else: return False -class Export(View): +class Export(openerpweb.Controller): _cp_path = "/web/export" @openerpweb.jsonrequest @@ -1691,7 +1691,7 @@ class ExcelExport(Export): fp.close() return data -class Reports(View): +class Reports(openerpweb.Controller): _cp_path = "/web/report" POLLING_DELAY = 0.25 TYPES_MAPPING = { From bc07cab28cb1d21cbbada118423adf57cf011518 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 3 Apr 2013 11:10:25 +0200 Subject: [PATCH 033/107] [IMP] export formats have no need to inherit from the export controller bzr revid: xmo@openerp.com-20130403091025-wjb23mzbmdyjnahm --- addons/web/controllers/main.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 890fa6fa466..4fdadc65c7a 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1,11 +1,9 @@ # -*- coding: utf-8 -*- - import ast import base64 import csv import glob import itertools -import logging import operator import datetime import hashlib @@ -30,7 +28,6 @@ except ImportError: xlwt = None import openerp -import openerp.modules.registry from openerp.tools.translate import _ from .. import http @@ -1428,6 +1425,7 @@ class Action(openerpweb.Controller): else: return False + class Export(openerpweb.Controller): _cp_path = "/web/export" @@ -1569,7 +1567,13 @@ class Export(openerpweb.Controller): (prefix + '/' + k, prefix_string + '/' + v) for k, v in self.fields_info(req, model, export_fields).iteritems()) - #noinspection PyPropertyDefinition + +class ExportFormat(object): + """ + Superclass for export formats, should probably be an abc and have a way to + generate _cp_path from fmt but it's a pain to deal with conflicts with + ControllerType + """ @property def content_type(self): """ Provides the format's content type """ @@ -1610,14 +1614,14 @@ class Export(openerpweb.Controller): else: columns_headers = [val['label'].strip() for val in fields] - return req.make_response(self.from_data(columns_headers, import_data), headers=[('Content-Disposition', content_disposition(self.filename(model), req)), ('Content-Type', self.content_type)], cookies={'fileToken': int(token)}) -class CSVExport(Export): + +class CSVExport(ExportFormat, http.Controller): _cp_path = '/web/export/csv' fmt = {'tag': 'csv', 'label': 'CSV'} @@ -1652,7 +1656,8 @@ class CSVExport(Export): fp.close() return data -class ExcelExport(Export): + +class ExcelExport(ExportFormat, http.Controller): _cp_path = '/web/export/xls' fmt = { 'tag': 'xls', @@ -1691,6 +1696,7 @@ class ExcelExport(Export): fp.close() return data + class Reports(openerpweb.Controller): _cp_path = "/web/report" POLLING_DELAY = 0.25 From cfcda2b032dc555d4a5e41caecfb83ae3c17e087 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 3 Apr 2013 14:10:39 +0200 Subject: [PATCH 034/107] [IMP] reduce scope of captured logger bzr revid: xmo@openerp.com-20130403121039-qdq6tz012uc7lgdh --- addons/web/tests/test_dispatch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/tests/test_dispatch.py b/addons/web/tests/test_dispatch.py index 516345bfa13..4ab3aa3f997 100644 --- a/addons/web/tests/test_dispatch.py +++ b/addons/web/tests/test_dispatch.py @@ -66,7 +66,7 @@ class TestHandler(logging.handlers.BufferingHandler): @contextlib.contextmanager def capture_logging(level=logging.DEBUG): - logger = logging.getLogger('openerp') + logger = logging.getLogger('openerp.addons.web') old_level = logger.level old_handlers = logger.handlers From 0ace6833b4f98a66f4f466fa74405cb43bb06d18 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 3 Apr 2013 14:11:06 +0200 Subject: [PATCH 035/107] [IMP] don't make the diagram controller inherit from View, there's no point bzr revid: xmo@openerp.com-20130403121106-55vuku5w4r0mp25n --- addons/web_diagram/controllers/main.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/web_diagram/controllers/main.py b/addons/web_diagram/controllers/main.py index c598a7e4652..2efaab7183d 100644 --- a/addons/web_diagram/controllers/main.py +++ b/addons/web_diagram/controllers/main.py @@ -1,9 +1,10 @@ -import openerp +from openerp.addons.web.http import Controller, jsonrequest -class DiagramView(openerp.addons.web.controllers.main.View): + +class Diagram(Controller): _cp_path = "/web_diagram/diagram" - @openerp.addons.web.http.jsonrequest + @jsonrequest def get_diagram_info(self, req, id, model, node, connector, src_node, des_node, label, **kw): From ebc1cb227d36f2039d44d42ed539193029303f95 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 3 Apr 2013 14:34:42 +0200 Subject: [PATCH 036/107] [IMP] make logger not propagate when captured bzr revid: xmo@openerp.com-20130403123442-p96cj73lwtxa2sek --- addons/web/tests/test_dispatch.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/web/tests/test_dispatch.py b/addons/web/tests/test_dispatch.py index 4ab3aa3f997..ab2234e7d0d 100644 --- a/addons/web/tests/test_dispatch.py +++ b/addons/web/tests/test_dispatch.py @@ -69,14 +69,17 @@ def capture_logging(level=logging.DEBUG): logger = logging.getLogger('openerp.addons.web') old_level = logger.level old_handlers = logger.handlers + old_propagate = logger.propagate test_handler = TestHandler() logger.handlers = [test_handler] logger.setLevel(level) + logger.propagate = False try: yield test_handler finally: + logger.propagate = old_propagate logger.setLevel(old_level) logger.handlers = old_handlers From 3df2a146cdc87410ff271b663827aa2bacfe1f65 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 3 Apr 2013 15:58:49 +0200 Subject: [PATCH 037/107] [FIX] logging capture when testing embedded in server, handler hooks are more complex than through oe bzr revid: xmo@openerp.com-20130403135849-ufnn2a1hdu938p7p --- addons/web/tests/test_dispatch.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web/tests/test_dispatch.py b/addons/web/tests/test_dispatch.py index ab2234e7d0d..b1304fca7f1 100644 --- a/addons/web/tests/test_dispatch.py +++ b/addons/web/tests/test_dispatch.py @@ -65,8 +65,8 @@ class TestHandler(logging.handlers.BufferingHandler): return False @contextlib.contextmanager -def capture_logging(level=logging.DEBUG): - logger = logging.getLogger('openerp.addons.web') +def capture_logging(logger, level=logging.DEBUG): + logger = logging.getLogger(logger) old_level = logger.level old_handlers = logger.handlers old_propagate = logger.propagate @@ -257,7 +257,7 @@ class TestSubclassing(DispatchCleanup): def speak(self): return 'Yu ordered cheezburgerz,' - with capture_logging() as handler: + with capture_logging('openerp.addons.web.http') as handler: class DogController(CatController): _cp_path = '/dog' From 77595a843e774a19d879a8f770444f1901c46d27 Mon Sep 17 00:00:00 2001 From: Vidhin Mehta Date: Fri, 5 Apr 2013 14:22:24 +0530 Subject: [PATCH 038/107] [IMP]Improvements in Manage View. bzr revid: vme@tinyerp.com-20130405085224-yecygjxi39nd60h0 --- .../static/src/js/view_editor.js | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/addons/web_view_editor/static/src/js/view_editor.js b/addons/web_view_editor/static/src/js/view_editor.js index 48b76e02904..524c415d34a 100644 --- a/addons/web_view_editor/static/src/js/view_editor.js +++ b/addons/web_view_editor/static/src/js/view_editor.js @@ -15,7 +15,7 @@ instance.web.ViewManagerAction.include({ } evt.currentTarget.selectedIndex = 0; }else{ - return this._super.apply(this,arguments); + return this._super.apply(this,arguments); } } }); @@ -232,10 +232,11 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({ return main_object; }, parse_xml: function(arch, view_id) { + //First element of att_list must be element tagname. main_object = { 'level': 0, 'id': this.xml_element_id +=1, - 'att_list': [], + 'att_list': ["view"], 'name': _.str.sprintf("", view_id), 'child_id': [] }; @@ -535,15 +536,22 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({ var field_dataset = new instance.web.DataSetSearch(this, this.model, null, null); parent_tr = self.get_object_by_id(parseInt($(parent_tr).attr('id').replace(/[^0-9]+/g, '')), this.one_object['main_object'], [])[0].att_list[0]; _.each([tr, parent_tr],function(element) { - var value = _.has(_CHILDREN, element) ? element : _.str.include(html_tag, element)?"html_tag":false; + var value = _.has(_CHILDREN, element) ? element : _.str.include(html_tag, element)?"html_tag":false; property_to_check.push(value); }); field_dataset.call( 'fields_get', []).done(function(result) { var fields = _.keys(result); fields.push(" "),fields.sort(); - self.on_add_node(property_to_check, fields); + self.on_add_node(property_to_check, fields, self.inject_position(parent_tr,tr)); }); }, + inject_position : function(parent_tag,current_tag){ + if(parent_tag == "view") + return ['Inside']; + if(current_tag == "field") + return ['After','Before']; + return ['After','Before','Inside']; + }, do_node_edit: function(side) { var self = this; var result = self.get_object_by_id(this.one_object.clicked_tr_id, this.one_object['main_object'], []); @@ -941,11 +949,11 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({ }); return def.promise(); }, - on_add_node: function(properties, fields){ + on_add_node: function(properties, fields, position){ var self = this; var render_list = [{'name': 'node_type','selection': _.keys(_CHILDREN).sort(), 'value': 'field', 'string': 'Node Type','type': 'selection'}, {'name': 'field_value','selection': fields, 'value': false, 'string': '','type': 'selection'}, - {'name': 'position','selection': ['After','Before','Inside'], 'value': false, 'string': 'Position','type': 'selection'}]; + {'name': 'position','selection': position, 'value': false, 'string': 'Position','type': 'selection'}]; this.add_widget = []; this.add_node_dialog = new instance.web.Dialog(this,{ title: _t("Properties"), @@ -1186,7 +1194,7 @@ var _CHILDREN = { //e.g.:xyz 'td' : ['field'] }; // Generic html_tag list and can be added html tag in future. It's support above _CHILDREN dict's *html_tag* by default. -// For specific child node one has to define tag above and specify children tag in list. Like above xyz example. +// For specific child node one has to define tag above and specify children tag in list. Like above xyz example. var html_tag = ['div','h1','h2','h3','h4','h5','h6','td','tr']; var _ICONS = ['','STOCK_ABOUT', 'STOCK_ADD', 'STOCK_APPLY', 'STOCK_BOLD', From 7897eb3898ddbf84e0478e627e2279909534c514 Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Fri, 5 Apr 2013 11:04:44 +0200 Subject: [PATCH 039/107] [FIX] Only create project once bzr revid: jco@openerp.com-20130405090444-rqlawt05gsj5mvsk --- addons/project_long_term/project_long_term.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index e53ff9ed253..2afaeb40eb0 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -285,7 +285,7 @@ class account_analytic_account(osv.osv): def _trigger_project_creation(self, cr, uid, vals, context=None): res= super(account_analytic_account, self)._trigger_project_creation(cr, uid, vals, context=context) - return res or vals.get('use_phases') + return res account_analytic_account() From 4bb06462d760dc1aa5dff4388ff5f63157a9e6c8 Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Fri, 5 Apr 2013 15:44:38 +0200 Subject: [PATCH 040/107] [FIX] Check that payment method journal is of type cash or bank bzr revid: jco@openerp.com-20130405134438-86l1ph7192owwrol --- addons/point_of_sale/point_of_sale.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 2d6f0b7e005..b5b0763714d 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -50,7 +50,7 @@ class pos_config(osv.osv): required=True, help="An internal identification of the point of sale"), 'journal_ids' : fields.many2many('account.journal', 'pos_config_journal_rel', 'pos_config_id', 'journal_id', 'Available Payment Methods', - domain="[('journal_user', '=', True )]",), + domain="[('journal_user', '=', True ), ('type', 'in', ['bank', 'cash'])]",), 'shop_id' : fields.many2one('sale.shop', 'Shop', required=True), 'journal_id' : fields.many2one('account.journal', 'Sale Journal', @@ -408,6 +408,9 @@ class pos_session(osv.osv): if not self.pool.get('ir.model.access').check_groups(cr, uid, "point_of_sale.group_pos_manager"): raise osv.except_osv( _('Error!'), _("Your ending balance is too different from the theorical cash closing (%.2f), the maximum allowed is: %.2f. You can contact your manager to force it.") % (st.difference, st.journal_id.amount_authorized_diff)) + if (st.journal_id.type not in ['bank', 'cash']): + raise osv.except_osv(_('Error!'), + _("The type of the journal for your payment method should be bank or cash ")) if st.difference and st.journal_id.cash_control == True: if st.difference > 0.0: name= _('Point of Sale Profit') @@ -428,7 +431,6 @@ class pos_session(osv.osv): if st.journal_id.type == 'bank': st.write({'balance_end_real' : st.balance_end}) - getattr(st, 'button_confirm_%s' % st.journal_id.type)(context=context) self._confirm_orders(cr, uid, ids, context=context) self.write(cr, uid, ids, {'state' : 'closed'}, context=context) From 8b978056210dff0d093f2aba7fdce1940fb26f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 8 Apr 2013 11:24:47 +0200 Subject: [PATCH 041/107] [FIX] mail: fixed some translation issues. Document created text was not translatable Subtype was fetched without context, therefore not translated Removed odd override of _t introduced in mail_followers at revision 7885 bzr revid: tde@openerp.com-20130408092447-3ri41v6xluuj0wha --- addons/mail/mail_thread.py | 4 ++-- addons/mail/static/src/js/mail_followers.js | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index f7a89177e35..cb8da42ab47 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -248,7 +248,7 @@ class mail_thread(osv.AbstractModel): # automatic logging unless asked not to (mainly for various testing purpose) if not context.get('mail_create_nolog'): - self.message_post(cr, uid, thread_id, body='Document created', context=context) + self.message_post(cr, uid, thread_id, body=_('Document created'), context=context) return thread_id def write(self, cr, uid, ids, values, context=None): @@ -368,7 +368,7 @@ class mail_thread(osv.AbstractModel): posted = False for subtype in subtypes: try: - subtype_rec = self.pool.get('ir.model.data').get_object(cr, uid, subtype.split('.')[0], subtype.split('.')[1]) + subtype_rec = self.pool.get('ir.model.data').get_object(cr, uid, subtype.split('.')[0], subtype.split('.')[1], context=context) except ValueError, e: _logger.debug('subtype %s not found, giving error "%s"' % (subtype, e)) continue diff --git a/addons/mail/static/src/js/mail_followers.js b/addons/mail/static/src/js/mail_followers.js index 5dfc1946587..bbfa52791af 100644 --- a/addons/mail/static/src/js/mail_followers.js +++ b/addons/mail/static/src/js/mail_followers.js @@ -148,8 +148,6 @@ openerp_mail_followers = function(session, mail) { }).then(self.proxy('display_generic')); }, _format_followers: function(count){ - // TDE note: why redefining _t ? - function _t(str) { return str; } var str = ''; if(count <= 0){ str = _t('No followers'); From 631759a2a9017a2a56a9cb30ad8fdb321c682a13 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Mon, 8 Apr 2013 15:25:10 +0200 Subject: [PATCH 042/107] [FIX] report, trml2pdf: allow to use tag under a flowable area (...). bzr revid: qdp-launchpad@openerp.com-20130408132510-7pq0ityec9sl702f --- openerp/report/render/rml2pdf/trml2pdf.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/openerp/report/render/rml2pdf/trml2pdf.py b/openerp/report/render/rml2pdf/trml2pdf.py index 7973ac56ec8..e8d6375c98e 100644 --- a/openerp/report/render/rml2pdf/trml2pdf.py +++ b/openerp/report/render/rml2pdf/trml2pdf.py @@ -435,7 +435,7 @@ class _rml_canvas(object): self.canvas.circle(x_cen=utils.unit_get(node.get('x')), y_cen=utils.unit_get(node.get('y')), r=utils.unit_get(node.get('radius')), **utils.attr_get(node, [], {'fill':'bool','stroke':'bool'})) def _place(self, node): - flows = _rml_flowable(self.doc, self.localcontext, images=self.images, path=self.path, title=self.title).render(node) + flows = _rml_flowable(self.doc, self.localcontext, images=self.images, path=self.path, title=self.title, canvas=self.canvas).render(node) infos = utils.attr_get(node, ['x','y','width','height']) infos['y']+=infos['height'] @@ -616,7 +616,7 @@ class _rml_Illustration(platypus.flowables.Flowable): drw.render(self.canv, None) class _rml_flowable(object): - def __init__(self, doc, localcontext, images=None, path='.', title=None): + def __init__(self, doc, localcontext, images=None, path='.', title=None, canvas=None): if images is None: images = {} self.localcontext = localcontext @@ -625,6 +625,7 @@ class _rml_flowable(object): self.images = images self.path = path self.title = title + self.canvas = canvas def _textual(self, node): rc1 = utils._process_text(self, node.text or '') @@ -634,7 +635,10 @@ class _rml_flowable(object): if key in ('rml_except', 'rml_loop', 'rml_tag'): del txt_n.attrib[key] if not n.tag == 'bullet': - txt_n.text = utils.xml2str(self._textual(n)) + if n.tag == 'pageNumber': + txt_n.text = self.canvas and str(self.canvas.getPageNumber()) or '' + else: + txt_n.text = utils.xml2str(self._textual(n)) txt_n.tail = n.tail and utils.xml2str(utils._process_text(self, n.tail.replace('\n',''))) or '' rc1 += etree.tostring(txt_n) return rc1 @@ -983,7 +987,7 @@ class _rml_template(object): if self.localcontext and not self.localcontext.get('internal_header',False): del self.localcontext['internal_header'] fis = [] - r = _rml_flowable(self.doc,self.localcontext, images=self.images, path=self.path, title=self.title) + r = _rml_flowable(self.doc,self.localcontext, images=self.images, path=self.path, title=self.title, canvas=None) story_cnt = 0 for node_story in node_stories: if story_cnt > 0: From 51ba970efa3878ede515d1c2e9ecb3585863b2a9 Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Mon, 8 Apr 2013 17:06:35 +0200 Subject: [PATCH 043/107] [FIX] Clarify no employee message for leave requests + typo please help them bzr revid: jco@openerp.com-20130408150635-iguk7xhn4xx84vo0 --- addons/hr/hr.py | 2 +- addons/hr_holidays/hr_holidays.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/hr/hr.py b/addons/hr/hr.py index 92bde22086e..2f09d165005 100644 --- a/addons/hr/hr.py +++ b/addons/hr/hr.py @@ -216,7 +216,7 @@ class hr_employee(osv.osv): (model, mail_group_id) = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'mail', 'group_all_employees') employee = self.browse(cr, uid, employee_id, context=context) self.pool.get('mail.group').message_post(cr, uid, [mail_group_id], - body='Welcome to %s! Please help them take the first steps with OpenERP!' % (employee.name), + body='Welcome to %s! Please help him/her take the first steps with OpenERP!' % (employee.name), subtype='mail.mt_comment', context=context) except: pass # group deleted: do not push a message diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index be8330c40a0..b3c9fb244f0 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -178,7 +178,8 @@ class hr_holidays(osv.osv): ] _sql_constraints = [ - ('type_value', "CHECK( (holiday_type='employee' AND employee_id IS NOT NULL) or (holiday_type='category' AND category_id IS NOT NULL))", "The employee or employee category of this request is missing."), + ('type_value', "CHECK( (holiday_type='employee' AND employee_id IS NOT NULL) or (holiday_type='category' AND category_id IS NOT NULL))", + "The employee or employee category of this request is missing. Please ask HR to link your user login to an employee or employee category. "), ('date_check2', "CHECK ( (type='add') OR (date_from <= date_to))", "The start date must be anterior to the end date."), ('date_check', "CHECK ( number_of_days_temp >= 0 )", "The number of days must be greater than 0."), ] From 6fe10fc8e5abc6e5d66fc7ab52c2011037819ba9 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Tue, 9 Apr 2013 05:59:24 +0000 Subject: [PATCH 044/107] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20130409055857-v475gufg9pm5zbqy bzr revid: launchpad_translations_on_behalf_of_openerp-20130409055920-gtfw1ljrgaej1u0u bzr revid: launchpad_translations_on_behalf_of_openerp-20130406063645-b7q6s71zvtm9orxm bzr revid: launchpad_translations_on_behalf_of_openerp-20130407060119-7ojh5lykuwm3ydbn bzr revid: launchpad_translations_on_behalf_of_openerp-20130409055924-46ylmw1wqri80wgs --- addons/account/i18n/mn.po | 42 +- addons/analytic/i18n/ro.po | 14 +- addons/hr_payroll_account/i18n/mn.po | 10 +- addons/mrp/i18n/mn.po | 2 +- addons/mrp/i18n/ro.po | 20 +- addons/point_of_sale/i18n/mn.po | 8 +- addons/project/i18n/sl.po | 286 ++++---- addons/web/i18n/fi.po | 2 +- addons/web/i18n/mn.po | 18 +- addons/web/i18n/ro.po | 483 ++++++------- addons/web_calendar/i18n/fi.po | 2 +- addons/web_calendar/i18n/ro.po | 38 +- addons/web_diagram/i18n/fi.po | 2 +- addons/web_kanban/i18n/ro.po | 26 +- addons/web_view_editor/i18n/ro.po | 46 +- openerp/addons/base/i18n/fr.po | 967 +++++++++++++++++++++++++-- 16 files changed, 1423 insertions(+), 543 deletions(-) diff --git a/addons/account/i18n/mn.po b/addons/account/i18n/mn.po index 74c23179bfa..e78ffc62bdf 100644 --- a/addons/account/i18n/mn.po +++ b/addons/account/i18n/mn.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-04-07 13:15+0000\n" +"PO-Revision-Date: 2013-04-08 11:38+0000\n" "Last-Translator: gobi \n" "Language-Team: Mongolian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-08 06:20+0000\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: account @@ -1145,7 +1145,7 @@ msgid "" "basic amount(without tax)." msgstr "" "Хэрэв татварын данс нь татварын код бол энэ талбар нь татварын дүнг агуулна. " -"Хэрэв татварын данс нь татварын суурь код бол энэ дүн нь суурь дүнг " +"Хэрэв татварын данс нь суурь татварын код бол энэ дүн нь суурь дүнг " "(татваргүй дүнг) агуулна." #. module: account @@ -1382,7 +1382,7 @@ msgstr "Кредит төвлөрүүлэлт" #: model:ir.actions.act_window,name:account.action_account_tax_code_template_form #: model:ir.ui.menu,name:account.menu_action_account_tax_code_template_form msgid "Tax Code Templates" -msgstr "Татварын ангилалын загвар" +msgstr "Татварын ангилалын үлгэр" #. module: account #: constraint:account.move.line:0 @@ -1416,7 +1416,7 @@ msgstr "Худалдан авалтад хэрэглэгдэх татвар" #: field:account.tax.template,tax_code_id:0 #: model:ir.model,name:account.model_account_tax_code msgid "Tax Code" -msgstr "Татварын ангилал" +msgstr "Татварын Код" #. module: account #: field:account.account,currency_mode:0 @@ -1767,7 +1767,7 @@ msgstr "Нийлүүлэгчийн буцаалт" #: field:account.tax.code,code:0 #: field:account.tax.code.template,code:0 msgid "Case Code" -msgstr "Ангилалын код" +msgstr "Татварын кодын код" #. module: account #: field:account.config.settings,company_footer:0 @@ -2850,7 +2850,7 @@ msgstr "Санх.Данс" #: field:account.tax,tax_code_id:0 #: view:account.tax.code:0 msgid "Account Tax Code" -msgstr "Татварын дансны код" +msgstr "Татварын Кодын Данс" #. module: account #: model:account.payment.term,name:account.account_payment_term_advance @@ -3090,7 +3090,7 @@ msgstr "Худалдан авалтын Татвар" #: help:account.move.line,tax_code_id:0 msgid "The Account can either be a base tax code or a tax code account." msgstr "" -"Данс нь татварын суурь код эсвэл татварын кодын дансны аль нэг байх ёстой." +"Данс нь суурь татварын код эсвэл татварын кодын дансны аль нэг байх ёстой." #. module: account #: sql_constraint:account.model.line:0 @@ -3298,7 +3298,7 @@ msgstr "" #: model:ir.actions.act_window,name:account.action_tax_code_list #: model:ir.ui.menu,name:account.menu_action_tax_code_list msgid "Tax codes" -msgstr "Татварын ангилал" +msgstr "Татварын кодууд" #. module: account #: view:account.account:0 @@ -3636,7 +3636,7 @@ msgstr "Компани нь дансны төлөвлөгөөтэй байна" #. module: account #: model:ir.model,name:account.model_account_tax_code_template msgid "Tax Code Template" -msgstr "Татварын кодны загвар" +msgstr "Татварын кодны үлгэр" #. module: account #: model:ir.model,name:account.model_account_partner_ledger @@ -4057,7 +4057,7 @@ msgstr "Бичилтүүдийн тулгалтыг арилгах" #: field:account.tax.code,notprintable:0 #: field:account.tax.code.template,notprintable:0 msgid "Not Printable in Invoice" -msgstr "Нэхэмжлэлд тусгагдахгүй" +msgstr "Нэхэмжлэлд хэвлэгдэхгүй" #. module: account #: report:account.vat.declaration:0 @@ -4186,7 +4186,7 @@ msgstr "" #: field:account.tax.code,name:0 #: field:account.tax.code.template,name:0 msgid "Tax Case Name" -msgstr "Ангилалын нэр" +msgstr "Татварын кодын нэр" #. module: account #: report:account.invoice:0 @@ -4617,8 +4617,8 @@ msgid "" "Check this box if you don't want any tax related to this tax Code to appear " "on invoices." msgstr "" -"Хэрэв нэхэмжлэл дээр энэ кодтой холбогдсон ямарваа дансыг харуулахгүй байхыг " -"энэ сонголтыг тэмдэглэнэ." +"Хэрэв нэхэмжлэл дээр энэ кодтой холбогдсон ямарваа татварыг харуулахгүй " +"байхыг энэ сонголтыг тэмдэглэнэ." #. module: account #: code:addons/account/account_move_line.py:1061 @@ -5393,7 +5393,7 @@ msgstr "Бичилтийг Цуцлах" #: field:account.tax,ref_tax_code_id:0 #: field:account.tax.template,ref_tax_code_id:0 msgid "Refund Tax Code" -msgstr "Буцаалтын татварын ангилал" +msgstr "Татварын Кодын Буцаалт" #. module: account #: view:account.invoice:0 @@ -6055,7 +6055,7 @@ msgstr "" #. module: account #: field:account.tax.code,sign:0 msgid "Coefficent for parent" -msgstr "Эцэгт коффициентлэх нь" +msgstr "Эцэгт коэффициентлэх нь" #. module: account #: report:account.partner.balance:0 @@ -6188,7 +6188,7 @@ msgstr "Эхний үлдэгдэл багтах" #. module: account #: view:account.invoice.tax:0 msgid "Tax Codes" -msgstr "Татварын ангилал" +msgstr "Татварын Кодууд" #. module: account #: selection:account.invoice,type:0 @@ -6203,7 +6203,7 @@ msgstr "Захиалагчийн буцаалт" #: field:account.tax.template,ref_tax_sign:0 #: field:account.tax.template,tax_sign:0 msgid "Tax Code Sign" -msgstr "Татварын ангилалын тэмдэг" +msgstr "Татварын Кодын Тэмдэг" #. module: account #: model:ir.model,name:account.model_report_invoice_created @@ -8135,7 +8135,7 @@ msgstr "Ok" #. module: account #: field:account.chart.template,tax_code_root_id:0 msgid "Root Tax Code" -msgstr "Толгой татварын ангилал" +msgstr "Язгуур татварын код" #. module: account #: help:account.journal,centralisation:0 @@ -9417,7 +9417,7 @@ msgstr "Татвар %.2f%%" #: view:account.tax.code.template:0 #: field:account.tax.code.template,parent_id:0 msgid "Parent Code" -msgstr "Эцэг ангилал" +msgstr "Эцэг Код" #. module: account #: model:ir.model,name:account.model_account_payment_term_line @@ -11349,7 +11349,7 @@ msgstr "Гүйлгээтэй" #. module: account #: view:account.tax.code.template:0 msgid "Account Tax Code Template" -msgstr "Дансны татварын кодны загвар" +msgstr "Дансны татварын кодны үлгэр" #. module: account #: model:process.node,name:account.process_node_manually0 diff --git a/addons/analytic/i18n/ro.po b/addons/analytic/i18n/ro.po index 4cc7b368c10..d96c8fcf53a 100644 --- a/addons/analytic/i18n/ro.po +++ b/addons/analytic/i18n/ro.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-07 18:23+0000\n" -"Last-Translator: Fekete Mihai \n" +"PO-Revision-Date: 2013-04-09 04:52+0000\n" +"Last-Translator: Dorin \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:31+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: analytic #: field:account.analytic.account,child_ids:0 @@ -25,7 +25,7 @@ msgstr "Sub-conturi" #. module: analytic #: selection:account.analytic.account,state:0 msgid "In Progress" -msgstr "In desfasurare" +msgstr "În desfășurare" #. module: analytic #: code:addons/analytic/analytic.py:229 @@ -36,7 +36,7 @@ msgstr "Contract: " #. module: analytic #: model:mail.message.subtype,description:analytic.mt_account_pending msgid "Contract pending" -msgstr "Contract in asteptare" +msgstr "Contract în așteptare" #. module: analytic #: selection:account.analytic.account,state:0 @@ -46,7 +46,7 @@ msgstr "Șablon" #. module: analytic #: view:account.analytic.account:0 msgid "End Date" -msgstr "Data de sfarsit" +msgstr "Dată de sfârșit" #. module: analytic #: help:account.analytic.line,unit_amount:0 diff --git a/addons/hr_payroll_account/i18n/mn.po b/addons/hr_payroll_account/i18n/mn.po index 737b8494ad4..f787f05668d 100644 --- a/addons/hr_payroll_account/i18n/mn.po +++ b/addons/hr_payroll_account/i18n/mn.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:38+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-04-08 11:11+0000\n" +"Last-Translator: gobi \n" "Language-Team: Mongolian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:42+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: hr_payroll_account #: field:hr.salary.rule,account_credit:0 @@ -50,7 +50,7 @@ msgstr "\"%s\" зардлын журналыг орлогын данстай з #. module: hr_payroll_account #: field:hr.salary.rule,account_tax_id:0 msgid "Tax Code" -msgstr "Татварын дугаар" +msgstr "Татварын Код" #. module: hr_payroll_account #: field:hr.payslip,period_id:0 diff --git a/addons/mrp/i18n/mn.po b/addons/mrp/i18n/mn.po index 294679d4b08..181a0a1ee61 100644 --- a/addons/mrp/i18n/mn.po +++ b/addons/mrp/i18n/mn.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-08 06:20+0000\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: mrp diff --git a/addons/mrp/i18n/ro.po b/addons/mrp/i18n/ro.po index 11ce1cdbd2e..d5fab4a2067 100644 --- a/addons/mrp/i18n/ro.po +++ b/addons/mrp/i18n/ro.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-07 19:35+0000\n" -"Last-Translator: Fekete Mihai \n" +"PO-Revision-Date: 2013-04-09 04:55+0000\n" +"Last-Translator: Dorin \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:49+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: mrp #: help:mrp.config.settings,module_mrp_repair:0 @@ -46,7 +46,7 @@ msgstr "Nr de Cicluri" #. module: mrp #: help:mrp.production,location_src_id:0 msgid "Location where the system will look for components." -msgstr "Locatia in care sistemul va cauta componente." +msgstr "Locația în care sistemul va căuta componente." #. module: mrp #: field:mrp.production,workcenter_lines:0 @@ -63,7 +63,7 @@ msgstr "Circuit Centre de Lucru" #: field:mrp.routing.workcenter,cycle_nbr:0 #: field:report.workcenter.load,cycle:0 msgid "Number of Cycles" -msgstr "Numarul de Cicluri" +msgstr "Numărul de Cicluri" #. module: mrp #: model:process.transition,note:mrp.process_transition_minimumstockprocure0 @@ -94,12 +94,12 @@ msgstr "Centru de lucru Mrp" #: model:ir.actions.act_window,name:mrp.mrp_routing_action #: model:ir.ui.menu,name:mrp.menu_mrp_routing_action msgid "Routings" -msgstr "Fise tehnologice" +msgstr "Fișe tehnologice" #. module: mrp #: view:mrp.bom:0 msgid "Search Bill Of Material" -msgstr "Cauta Lista de Materiale" +msgstr "Caută Lista de Materiale" #. module: mrp #: model:process.node,note:mrp.process_node_stockproduct1 @@ -111,7 +111,7 @@ msgstr "Pentru produsele stocabile și consumabile" #: help:mrp.production,message_unread:0 #: help:mrp.production.workcenter.line,message_unread:0 msgid "If checked new messages require your attention." -msgstr "Daca este selectat, mesajele noi necesita atentia dumneavoastra." +msgstr "Dacă este selectat, mesajele noi necesită atenția dumneavoastră." #. module: mrp #: help:mrp.routing.workcenter,cycle_nbr:0 @@ -132,7 +132,7 @@ msgstr "Fals" #: field:mrp.bom,code:0 #: field:mrp.production,name:0 msgid "Reference" -msgstr "Referinta" +msgstr "Referință" #. module: mrp #: view:mrp.production:0 diff --git a/addons/point_of_sale/i18n/mn.po b/addons/point_of_sale/i18n/mn.po index 8106982be37..0d5bb6649ac 100644 --- a/addons/point_of_sale/i18n/mn.po +++ b/addons/point_of_sale/i18n/mn.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-04-08 05:36+0000\n" +"PO-Revision-Date: 2013-04-09 01:37+0000\n" "Last-Translator: erdenebold \n" "Language-Team: Mongolian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-08 06:20+0000\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: point_of_sale @@ -457,7 +457,7 @@ msgstr "" #: code:addons/point_of_sale/point_of_sale.py:512 #, python-format msgid "error!" -msgstr "" +msgstr "алдаа" #. module: point_of_sale #: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_user_pos_month @@ -576,7 +576,7 @@ msgstr "POS захиалгын мөр" #. module: point_of_sale #: view:pos.config:0 msgid "Point of Sale Configuration" -msgstr "" +msgstr "Кассын тохиргоо" #. module: point_of_sale #. openerp-web diff --git a/addons/project/i18n/sl.po b/addons/project/i18n/sl.po index c8fb3bed00e..b5f8ebf92db 100644 --- a/addons/project/i18n/sl.po +++ b/addons/project/i18n/sl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-03 10:07+0000\n" +"PO-Revision-Date: 2013-04-08 14:34+0000\n" "Last-Translator: Dušan Laznik (Mentis) \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:56+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: project #: view:project.project:0 @@ -28,6 +28,8 @@ msgid "" "If checked, this contract will be available in the project menu and you will " "be able to manage tasks or track issues" msgstr "" +"Če označite bo ta pogodba vidna v projektih in boste na njej lahko " +"upravljali naloge" #. module: project #: field:project.project,progress_rate:0 @@ -39,7 +41,7 @@ msgstr "Potek" #. module: project #: model:process.node,name:project.process_node_taskbydelegate0 msgid "Task by delegate" -msgstr "" +msgstr "Naloge po delegaciji" #. module: project #: view:project.project:0 @@ -97,7 +99,7 @@ msgstr "Če je izbrano, zahtevajo nova sporočila vašo pozornost." #. module: project #: model:process.node,name:project.process_node_donetask0 msgid "Done task" -msgstr "Konec naloge" +msgstr "Končana naloga" #. module: project #: model:process.node,note:project.process_node_donetask0 @@ -122,7 +124,7 @@ msgstr "Analitični konto" #. module: project #: field:project.config.settings,group_time_work_estimation_tasks:0 msgid "Manage time estimation on tasks" -msgstr "" +msgstr "Planiranje časa na nalogah" #. module: project #: help:project.project,message_summary:0 @@ -159,7 +161,7 @@ msgstr "Načrovane ure" #. module: project #: view:project.project:0 msgid "Reset as Project" -msgstr "" +msgstr "Po nastavi kot projekt" #. module: project #: view:report.project.task.user:0 @@ -169,7 +171,7 @@ msgstr "Naloge v delu" #. module: project #: help:project.project,progress_rate:0 msgid "Percent of tasks closed according to the total of tasks todo." -msgstr "" +msgstr "Odstotek končanja naloge" #. module: project #: model:ir.actions.client,name:project.action_client_project_menu @@ -182,12 +184,12 @@ msgid "" "This report allows you to analyse the performance of your projects and " "users. You can analyse the quantities of tasks, the hours spent compared to " "the planned hours, the average number of days to open or close a task, etc." -msgstr "" +msgstr "Analiza učinkovitosti projektov in sodelavcev" #. module: project #: view:project.task.delegate:0 msgid "Validation Task Title" -msgstr "" +msgstr "Validacija naslova naloge" #. module: project #: model:res.groups,name:project.group_delegate_task @@ -223,12 +225,12 @@ msgstr "Zaključeno" #. module: project #: model:project.category,name:project.project_category_01 msgid "Contact's suggestion" -msgstr "" +msgstr "Predlog kontaktov" #. module: project #: help:project.config.settings,group_time_work_estimation_tasks:0 msgid "Allows you to compute Time Estimation on tasks." -msgstr "" +msgstr "Dovoljuje izračun predvidenih ur na nalogah." #. module: project #: field:report.project.task.user,user_id:0 @@ -274,7 +276,7 @@ msgstr "Upravljanje projektov" #: model:ir.actions.act_window,name:project.action_project_task_delegate #: view:project.task.delegate:0 msgid "Project Task Delegate" -msgstr "" +msgstr "Delegiranje projektnih nalog" #. module: project #: model:mail.message.subtype,name:project.mt_project_task_started @@ -307,7 +309,7 @@ msgstr "Preklic naloge" msgid "" "Project's members are users who can have an access to the tasks related to " "this project." -msgstr "" +msgstr "Člani projekta so uporabniki , ki imajo dostop do nalog projekta." #. module: project #: view:project.project:0 @@ -322,7 +324,7 @@ msgstr "Vodja projekta" #: field:project.task.history.cumulative,state:0 #: field:report.project.task.user,state:0 msgid "Status" -msgstr "Stanje" +msgstr "Status" #. module: project #: selection:report.project.task.user,month:0 @@ -343,7 +345,7 @@ msgstr "Junij" #. module: project #: view:project.task:0 msgid "Gantt View" -msgstr "" +msgstr "Gantt diagram" #. module: project #: selection:report.project.task.user,month:0 @@ -355,19 +357,19 @@ msgstr "Oktober" msgid "" "Sum of total hours of all tasks related to this project and its child " "projects." -msgstr "" +msgstr "Vsota ur za ta projekt in podrejene projekte" #. module: project #: help:project.project,active:0 msgid "" "If the active field is set to False, it will allow you to hide the project " "without removing it." -msgstr "" +msgstr "De aktiviranje , brez brisanja" #. module: project #: model:process.transition,note:project.process_transition_opendonetask0 msgid "When task is completed, it will come into the done state." -msgstr "" +msgstr "Ko je naloga končana , preide v status zaključeno." #. module: project #: field:project.project,message_summary:0 @@ -378,12 +380,12 @@ msgstr "Povzetek" #. module: project #: view:project.task:0 msgid "Task summary..." -msgstr "" +msgstr "Povzetek naloge..." #. module: project #: view:project.project:0 msgid "Append this project to another one using analytic accounts hierarchy" -msgstr "" +msgstr "Združevanje projektov s pomočjo hierarhije analitičnih kontov." #. module: project #: view:project.task:0 @@ -397,19 +399,19 @@ msgid "" "This will set the unit of measure used in projects and tasks.\n" "If you use the timesheet linked to projects (project_timesheet module), " "don't forget to setup the right unit of measure in your employees." -msgstr "" +msgstr "Nastavitev enote mere za projekte in naloge." #. module: project #: field:project.task,user_id:0 #: view:report.project.task.user:0 msgid "Assigned to" -msgstr "Dodeljeno" +msgstr "Dodeljeno k" #. module: project #: code:addons/project/project.py:1021 #, python-format msgid "Delegated User should be specified" -msgstr "" +msgstr "Določiti morate uporabnika , ki mu delegirate nalogo ." #. module: project #: view:project.project:0 @@ -440,7 +442,7 @@ msgstr "Delovni čas" #. module: project #: model:ir.actions.act_window,name:project.action_project_task_reevaluate msgid "Re-evaluate Task" -msgstr "" +msgstr "Ponovni pregled naloge" #. module: project #: view:project.task:0 @@ -450,7 +452,7 @@ msgstr "Potrditev planiranega časa" #. module: project #: field:project.config.settings,module_pad:0 msgid "Use integrated collaborative note pads on task" -msgstr "" +msgstr "Use integrated collaborative note pads on task" #. module: project #: model:mail.message.subtype,name:project.mt_project_task_blocked @@ -461,7 +463,7 @@ msgstr "Naloga blokirana" #. module: project #: model:process.node,note:project.process_node_opentask0 msgid "Encode your working hours." -msgstr "" +msgstr "Vnos delovnih ur." #. module: project #: field:project.project,alias_id:0 @@ -491,12 +493,12 @@ msgstr "Datum nastanka" #. module: project #: view:project.task:0 msgid "Add a Description..." -msgstr "" +msgstr "Dodajanje opisa ..." #. module: project #: view:res.partner:0 msgid "For changing to open state" -msgstr "" +msgstr "Sprememba v odprto ..." #. module: project #: view:project.config.settings:0 @@ -506,12 +508,12 @@ msgstr "Uporabi" #. module: project #: model:ir.model,name:project.model_project_task_delegate msgid "Task Delegate" -msgstr "" +msgstr "Delegiranje naloge" #. module: project #: help:project.task.delegate,new_task_description:0 msgid "Reinclude the description of the task in the task of the user" -msgstr "" +msgstr "Vključi opis naloge v nalogo uporabnika" #. module: project #: view:project.project:0 @@ -526,19 +528,19 @@ msgstr "Moje naloge" #. module: project #: model:process.transition,name:project.process_transition_opendonetask0 msgid "Open Done Task" -msgstr "" +msgstr "Odpiranje končane naloge" #. module: project #: field:project.task.delegate,planned_hours_me:0 msgid "Hours to Validate" -msgstr "" +msgstr "Ure za potrditev" #. module: project #: help:project.task,remaining_hours:0 msgid "" "Total remaining time, can be re-estimated periodically by the assignee of " "the task." -msgstr "" +msgstr "Skupni preostali čas." #. module: project #: selection:report.project.task.user,month:0 @@ -566,13 +568,13 @@ msgstr "Čakajoče naloge" #. module: project #: view:project.task.reevaluate:0 msgid "_Evaluate" -msgstr "" +msgstr "_Potrjevanje" #. module: project #: view:report.project.task.user:0 #: field:report.project.task.user,opening_days:0 msgid "Days to Open" -msgstr "" +msgstr "Dni do odprtja" #. module: project #: selection:report.project.task.user,priority:0 @@ -605,7 +607,7 @@ msgstr "Opravilo" #. module: project #: help:project.config.settings,group_tasks_work_on_tasks:0 msgid "Allows you to compute work on tasks." -msgstr "" +msgstr "Omogoča izračun dela na nalogah." #. module: project #: view:project.project:0 @@ -615,7 +617,7 @@ msgstr "Skrbništvo" #. module: project #: field:project.config.settings,group_tasks_work_on_tasks:0 msgid "Log work activities on tasks" -msgstr "" +msgstr "Zgodovina aktivnosti na nalogah" #. module: project #: model:project.task.type,name:project.project_tt_analysis @@ -631,7 +633,7 @@ msgstr "Povzetek opravila" #. module: project #: field:project.task,active:0 msgid "Not a Template Task" -msgstr "" +msgstr "Ni predloga naloge" #. module: project #: field:project.task,planned_hours:0 @@ -646,7 +648,7 @@ msgstr "Delegirane naloge" #. module: project #: help:project.task,effective_hours:0 msgid "Computed using the sum of the task work done." -msgstr "" +msgstr "Vsota opravljenega dela." #. module: project #: model:ir.actions.act_window,help:project.open_view_project_all @@ -694,7 +696,7 @@ msgstr "Nove naloge" #. module: project #: field:project.config.settings,module_project_issue_sheet:0 msgid "Invoice working time on issues" -msgstr "" +msgstr "Fakturiranje delovnih ur na nalogah." #. module: project #: view:project.project:0 @@ -712,7 +714,7 @@ msgstr "Specifikacija" #. module: project #: model:process.transition,note:project.process_transition_draftopentask0 msgid "From draft state, it will come into the open state." -msgstr "" +msgstr "Iz osnutka bo spremenjeno v odprto." #. module: project #: view:project.task.history.cumulative:0 @@ -767,17 +769,17 @@ msgstr "Faza" #. module: project #: model:process.transition,name:project.process_transition_draftopentask0 msgid "Draft Open task" -msgstr "" +msgstr "Osnutek odprte naloge" #. module: project #: field:project.project,alias_model:0 msgid "Alias Model" -msgstr "" +msgstr "Alias Model" #. module: project #: help:report.project.task.user,closing_days:0 msgid "Number of Days to close the task" -msgstr "" +msgstr "Število dni do zaprtja naloge" #. module: project #: view:board.board:0 @@ -813,7 +815,7 @@ msgstr "Nujno" #. module: project #: model:project.category,name:project.project_category_02 msgid "Feature request" -msgstr "" +msgstr "Zahteva funkcionalnosti" #. module: project #: view:project.task:0 @@ -823,13 +825,13 @@ msgstr "Delegirane naloge" #. module: project #: model:ir.model,name:project.model_project_task_work msgid "Project Task Work" -msgstr "" +msgstr "Delo na nalogah" #. module: project #: code:addons/project/wizard/project_task_delegate.py:81 #, python-format msgid "CHECK: %s" -msgstr "" +msgstr "Potrjeno:%s" #. module: project #: view:project.project:0 @@ -851,7 +853,7 @@ msgstr "Porabljeni čas" #: view:project.project:0 #: view:project.task:0 msgid "í" -msgstr "" +msgstr "í" #. module: project #: field:account.analytic.account,company_uom_id:0 @@ -884,7 +886,7 @@ msgstr "GTD" #. module: project #: view:project.project:0 msgid "Project Stages" -msgstr "" +msgstr "Faze projekta" #. module: project #: help:project.task,state:0 @@ -894,7 +896,7 @@ msgid "" "When the case is over, the status is set to 'Done'. If " "the case needs to be reviewed then the status is set " "to 'Pending'." -msgstr "" +msgstr "Faze : osnutek-odprto-končano-na čakanju" #. module: project #: model:ir.model,name:project.model_res_company @@ -904,12 +906,12 @@ msgstr "Podjetja" #. module: project #: field:project.task.type,fold:0 msgid "Folded by Default" -msgstr "" +msgstr "Zloženo (Privzeto)" #. module: project #: field:project.task,work_ids:0 msgid "Work done" -msgstr "" +msgstr "Opravljeno delo" #. module: project #: help:project.config.settings,module_project_issue:0 @@ -917,6 +919,8 @@ msgid "" "Provides management of issues/bugs in projects.\n" " This installs the module project_issue." msgstr "" +"Provides management of issues/bugs in projects.\n" +" This installs the module project_issue." #. module: project #: help:project.task,kanban_state:0 @@ -936,7 +940,7 @@ msgstr "10" #. module: project #: view:project.project:0 msgid "Cancel Project" -msgstr "" +msgstr "Preklic projekta" #. module: project #: help:project.project,analytic_account_id:0 @@ -944,7 +948,7 @@ msgid "" "Link this project to an analytic account if you need financial management on " "projects. It enables you to connect projects with budgets, planning, cost " "and revenue analysis, timesheets on projects, etc." -msgstr "" +msgstr "Povežite ta projekt z analitičnim kontom." #. module: project #: model:process.transition.action,name:project.process_transition_action_draftcanceltask0 @@ -963,7 +967,7 @@ msgstr "Ostale informacije" #. module: project #: view:project.task.delegate:0 msgid "_Delegate" -msgstr "" +msgstr "_Delagacija" #. module: project #: selection:project.task,priority:0 @@ -976,14 +980,14 @@ msgstr "Zelo nizko" msgid "" "Sum of spent hours of all tasks related to this project and its child " "projects." -msgstr "" +msgstr "Vsota ur vseh nalog za ta projekt." #. module: project #: view:project.project:0 msgid "" "Follow this project to automatically track the events associated to tasks " "and issues of this project." -msgstr "" +msgstr "Sledite projektu" #. module: project #: view:project.task:0 @@ -1009,6 +1013,10 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Nova ključna beseda.\n" +"

\n" +" " #. module: project #: model:ir.ui.menu,name:project.menu_task_types_view @@ -1028,7 +1036,7 @@ msgstr "November" #. module: project #: view:project.task.reevaluate:0 msgid "Reevaluate Task" -msgstr "" +msgstr "Ponovno ovrednotenje naloge" #. module: project #: model:ir.model,name:project.model_project_task_type @@ -1052,17 +1060,17 @@ msgstr "Sporočila in zgodovina sporočil" msgid "" "To invoice or setup invoicing and renewal options, go to the related " "contract:" -msgstr "" +msgstr "Za fakturiranje ali nastavitve uporabite povezano pogodbo:" #. module: project #: field:project.task.delegate,state:0 msgid "Validation State" -msgstr "" +msgstr "Faza potrditve" #. module: project #: field:project.task.work,name:0 msgid "Work summary" -msgstr "" +msgstr "Povzetek dela" #. module: project #: view:project.project:0 @@ -1085,22 +1093,22 @@ msgstr "Ponovno odprite projekt" #. module: project #: help:project.project,priority:0 msgid "Gives the sequence order when displaying the list of projects" -msgstr "" +msgstr "Zaporedje prikaza projektov" #. module: project #: constraint:project.project:0 msgid "Error! project start-date must be lower then project end-date." -msgstr "" +msgstr "Začetni datum mora biti pred končnim." #. module: project #: field:project.project,members:0 msgid "Project Members" -msgstr "" +msgstr "Člani projekta" #. module: project #: field:project.task,child_ids:0 msgid "Delegated Tasks" -msgstr "" +msgstr "Delegirane naloge" #. module: project #: view:project.project:0 @@ -1119,7 +1127,7 @@ msgstr "Nadrejene naloge" #. module: project #: model:process.node,name:project.process_node_opentask0 msgid "Open task" -msgstr "" +msgstr "Odprta naloga" #. module: project #: view:project.task.type:0 @@ -1145,7 +1153,7 @@ msgstr "Čakajoče naloge" #. module: project #: view:project.task:0 msgid "Show only tasks having a deadline" -msgstr "" +msgstr "Pokaži samo naloge , ki imajo določen rok" #. module: project #: model:project.category,name:project.project_category_04 @@ -1156,7 +1164,7 @@ msgstr "Uporabnost" #: view:report.project.task.user:0 #: field:report.project.task.user,hours_delay:0 msgid "Avg. Plan.-Eff." -msgstr "" +msgstr "Povprečna učinkovitost" #. module: project #: field:project.task.work,user_id:0 @@ -1175,7 +1183,7 @@ msgid "" "The status of your document is automatically changed regarding the selected " "stage. For example, if a stage is related to the status 'Close', when your " "document reaches this stage, it is automatically closed." -msgstr "" +msgstr "Status dokumenta se samodejno spremeni , glede na fazo" #. module: project #: view:project.task:0 @@ -1207,7 +1215,7 @@ msgstr "Prioriteta" #. module: project #: view:project.project:0 msgid "Open Projects" -msgstr "" +msgstr "Odprti projekti" #. module: project #: help:project.project,alias_id:0 @@ -1235,7 +1243,7 @@ msgstr "" #. module: project #: help:project.task,total_hours:0 msgid "Computed as: Time Spent + Remaining Time." -msgstr "" +msgstr "Porabljeni čas+Preostali čas" #. module: project #: code:addons/project/project.py:356 @@ -1260,7 +1268,7 @@ msgstr "Preostali čas" #. module: project #: field:project.task.delegate,name:0 msgid "Delegated Title" -msgstr "" +msgstr "Naziv delegacije" #. module: project #: selection:report.project.task.user,month:0 @@ -1280,7 +1288,7 @@ msgstr "Zamuda v urah" #. module: project #: view:project.task.type:0 msgid "Add a description..." -msgstr "" +msgstr "Dodajanje opisa..." #. module: project #: view:project.project:0 @@ -1290,7 +1298,7 @@ msgstr "Ekipa" #. module: project #: help:project.config.settings,time_unit:0 msgid "This will set the unit of measure used in projects and tasks." -msgstr "" +msgstr "Nastavitev enote mere." #. module: project #: selection:project.task,priority:0 @@ -1328,6 +1336,7 @@ msgid "" "If the task has a progress of 99.99% you should close the task if it's " "finished or reevaluate the time" msgstr "" +"Če je naloga 99.99% končana , bi jo morali zapreti ali ponovno ovrednotiti." #. module: project #: field:project.task,user_email:0 @@ -1337,7 +1346,7 @@ msgstr "Email" #. module: project #: help:project.task.delegate,prefix:0 msgid "Title for your validation task" -msgstr "" +msgstr "Naziv" #. module: project #: field:project.config.settings,time_unit:0 @@ -1408,7 +1417,7 @@ msgstr "Aktivno" #. module: project #: model:ir.model,name:project.model_project_category msgid "Category of project's task, issue, ..." -msgstr "" +msgstr "Kategorije" #. module: project #: help:project.project,resource_calendar_id:0 @@ -1425,24 +1434,24 @@ msgstr "" #. module: project #: view:project.config.settings:0 msgid "Helpdesk & Support" -msgstr "" +msgstr "Pomoč & Podpora" #. module: project #: help:report.project.task.user,opening_days:0 msgid "Number of Days to Open the task" -msgstr "" +msgstr "Dnevi do odprtja naloge" #. module: project #: field:project.task,delegated_user_id:0 msgid "Delegated To" -msgstr "Pooblaščen" +msgstr "Delegirano k" #. module: project #: help:project.task,planned_hours:0 msgid "" "Estimated time to do the task, usually set by the project manager when the " "task is in draft state." -msgstr "" +msgstr "Predvideni čas" #. module: project #: code:addons/project/project.py:220 @@ -1453,7 +1462,7 @@ msgstr "Priloge" #. module: project #: view:project.category:0 msgid "Issue Version" -msgstr "" +msgstr "Verzija" #. module: project #: code:addons/project/project.py:182 @@ -1462,6 +1471,7 @@ msgid "" "You cannot delete a project containing tasks. You can either delete all the " "project's tasks and then delete the project or simply deactivate the project." msgstr "" +"Ni možno brisati projekta , ki ima naloge.Lahko pa ga de - aktivirate." #. module: project #: model:process.transition.action,name:project.process_transition_action_draftopentask0 @@ -1491,7 +1501,7 @@ msgstr "Faza spremenjena" #. module: project #: constraint:project.task:0 msgid "Error ! Task end-date must be greater then task start-date" -msgstr "" +msgstr "Začetni datum mora biti pred končnim." #. module: project #: field:project.task.history,user_id:0 @@ -1536,7 +1546,7 @@ msgstr "" #. module: project #: model:res.request.link,name:project.req_link_task msgid "Project task" -msgstr "" +msgstr "Projektna naloga" #. module: project #: field:project.task,effective_hours:0 @@ -1551,6 +1561,10 @@ msgid "" " (by default, http://ietherpad.com/).\n" " This installs the module pad." msgstr "" +"Lets the company customize which Pad installation should be used to link to " +"new pads\n" +" (by default, http://ietherpad.com/).\n" +" This installs the module pad." #. module: project #: field:project.task,id:0 @@ -1560,7 +1574,7 @@ msgstr "ID" #. module: project #: model:ir.actions.act_window,name:project.action_view_task_overpassed_draft msgid "Overpassed Tasks" -msgstr "" +msgstr "Naloge s prekoračenim rokom" #. module: project #: code:addons/project/project.py:932 @@ -1568,17 +1582,17 @@ msgstr "" msgid "" "Child task still open.\n" "Please cancel or complete child task first." -msgstr "" +msgstr "Podrejena naloga je še vedno odprta." #. module: project #: field:project.task.delegate,user_id:0 msgid "Assign To" -msgstr "" +msgstr "Dodeljeno k" #. module: project #: model:res.groups,name:project.group_time_work_estimation_tasks msgid "Time Estimation on Tasks" -msgstr "" +msgstr "Planiranje časa na nalogah" #. module: project #: field:project.task,total_hours:0 @@ -1588,7 +1602,7 @@ msgstr "Skupaj" #. module: project #: model:process.node,note:project.process_node_taskbydelegate0 msgid "Delegate your task to the other user" -msgstr "" +msgstr "Delegiranje naloge drugemu uporabniku" #. module: project #: model:mail.message.subtype,description:project.mt_task_started @@ -1598,7 +1612,7 @@ msgstr "Naloga začeta" #. module: project #: help:project.task.reevaluate,remaining_hours:0 msgid "Put here the remaining hours required to close the task." -msgstr "" +msgstr "Potrebne ure za zaključek naloge" #. module: project #: help:project.task.type,fold:0 @@ -1619,13 +1633,13 @@ msgstr "Roki" #: code:addons/project/wizard/project_task_delegate.py:78 #, python-format msgid "CHECK: " -msgstr "" +msgstr "POTRDI: " #. module: project #: code:addons/project/project.py:432 #, python-format msgid "You must assign members on the project '%s' !" -msgstr "" +msgstr "Določiti morate člane projekta:'%s' !" #. module: project #: view:project.project:0 @@ -1648,7 +1662,7 @@ msgstr "Potek (%)" #: view:report.project.task.user:0 #: field:report.project.task.user,company_id:0 msgid "Company" -msgstr "Družba" +msgstr "Podjetje" #. module: project #: help:project.config.settings,module_project_timesheet:0 @@ -1660,16 +1674,22 @@ msgid "" " editing and deleting either ways.\n" " This installs the module project_timesheet." msgstr "" +"This allows you to transfer the entries under tasks defined for Project " +"Management to\n" +" the timesheet line entries for particular date and user, " +"with the effect of creating,\n" +" editing and deleting either ways.\n" +" This installs the module project_timesheet." #. module: project #: field:project.config.settings,module_project_issue:0 msgid "Track issues and bugs" -msgstr "" +msgstr "Nadzor zahtev in bug-ov" #. module: project #: field:project.config.settings,module_project_mrp:0 msgid "Generate tasks from sale orders" -msgstr "" +msgstr "Generiranje nalog iz naročil kupcev" #. module: project #: selection:project.task,priority:0 @@ -1679,7 +1699,7 @@ msgstr "Pomembno" #. module: project #: model:process.node,note:project.process_node_drafttask0 msgid "Define the Requirements and Set Planned Hours." -msgstr "" +msgstr "Določite zahteve in planirajte ure" #. module: project #: field:project.project,message_ids:0 @@ -1734,6 +1754,10 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Nova naloga.\n" +"

\n" +" " #. module: project #: field:project.task,date_end:0 @@ -1744,7 +1768,7 @@ msgstr "Končni datum" #. module: project #: field:project.task.type,state:0 msgid "Related Status" -msgstr "" +msgstr "Povezani status" #. module: project #: view:project.project:0 @@ -1783,23 +1807,23 @@ msgstr "Novo" #: model:ir.actions.act_window,name:project.action_view_task_history_cumulative #: model:ir.ui.menu,name:project.menu_action_view_task_history_cumulative msgid "Cumulative Flow" -msgstr "" +msgstr "Kumulativni tok" #. module: project #: view:report.project.task.user:0 #: field:report.project.task.user,hours_effective:0 msgid "Effective Hours" -msgstr "" +msgstr "Efektivne ure" #. module: project #: view:report.project.task.user:0 msgid "OverPass delay" -msgstr "" +msgstr "Zamuda" #. module: project #: view:project.task.delegate:0 msgid "Validation Task" -msgstr "" +msgstr "Naloga potrjevanja" #. module: project #: field:project.config.settings,module_project_long_term:0 @@ -1817,7 +1841,7 @@ msgstr "Ne dodeljene naloge" msgid "" "Sum of planned hours of all tasks related to this project and its child " "projects." -msgstr "" +msgstr "Vsota planiranih ur" #. module: project #: view:res.partner:0 @@ -1839,7 +1863,7 @@ msgstr "Moji projekti" #. module: project #: help:project.task,sequence:0 msgid "Gives the sequence order when displaying a list of tasks." -msgstr "" +msgstr "Zaporedje prikaza nalog" #. module: project #: field:project.task,date_start:0 @@ -1861,12 +1885,12 @@ msgstr "Projekti" #. module: project #: model:res.groups,name:project.group_tasks_work_on_tasks msgid "Task's Work on Tasks" -msgstr "" +msgstr "Opravljeno delo na nalogah" #. module: project #: help:project.task.delegate,name:0 msgid "New title of the task delegated to the user" -msgstr "" +msgstr "Novi naziv delegirane naloge" #. module: project #: model:ir.actions.act_window,name:project.action_project_task_user_tree @@ -1892,7 +1916,7 @@ msgstr "Naloge projekta" #: view:res.partner:0 #: field:res.partner,task_ids:0 msgid "Tasks" -msgstr "Opravila" +msgstr "Naloge" #. module: project #: selection:report.project.task.user,month:0 @@ -1917,6 +1941,13 @@ msgid "" "'Manufacture'.\n" " This installs the module project_mrp." msgstr "" +"This feature automatically creates project tasks from service products in " +"sale orders.\n" +" More precisely, tasks are created for procurement lines with " +"product of type 'Service',\n" +" procurement method 'Make to Order', and supply method " +"'Manufacture'.\n" +" This installs the module project_mrp." #. module: project #: help:project.task.delegate,planned_hours:0 @@ -1926,7 +1957,7 @@ msgstr "" #. module: project #: model:project.category,name:project.project_category_03 msgid "Experiment" -msgstr "" +msgstr "Poizkus" #. module: project #: model:process.transition.action,name:project.process_transition_action_opendrafttask0 @@ -1939,12 +1970,12 @@ msgstr "Osnutek" #: field:project.task.history,kanban_state:0 #: field:project.task.history.cumulative,kanban_state:0 msgid "Kanban State" -msgstr "" +msgstr "Kanban State" #. module: project #: field:project.config.settings,module_project_timesheet:0 msgid "Record timesheet lines per tasks" -msgstr "" +msgstr "Beleženje nalog na časovnicah" #. module: project #: model:ir.model,name:project.model_report_project_task_user @@ -1954,7 +1985,7 @@ msgstr "Naloge po uporabnikih in projektih" #. module: project #: field:res.company,project_time_mode_id:0 msgid "Project Time Unit" -msgstr "" +msgstr "Enota časa na projektu" #. module: project #: view:project.task:0 @@ -1968,7 +1999,7 @@ msgstr "Običajno" #: view:report.project.task.user:0 #: field:report.project.task.user,closing_days:0 msgid "Days to Close" -msgstr "" +msgstr "Dnevi do končanja" #. module: project #: model:res.groups,name:project.group_project_user @@ -1991,7 +2022,7 @@ msgstr "Nastavitve projekta" #. module: project #: view:project.task.history.cumulative:0 msgid "Tasks's Cumulative Flow" -msgstr "" +msgstr "Kumulativni tok nalog" #. module: project #: selection:report.project.task.user,month:0 @@ -2012,23 +2043,23 @@ msgstr "" #: code:addons/project/project.py:1318 #, python-format msgid "Please delete the project linked with this account first." -msgstr "" +msgstr "Najprej morate izbrisati povezani projekt." #. module: project #: model:mail.message.subtype,name:project.mt_project_task_new #: model:mail.message.subtype,name:project.mt_task_new msgid "Task Created" -msgstr "" +msgstr "Naloga kreirana" #. module: project #: view:report.project.task.user:0 msgid "Non Assigned Tasks to users" -msgstr "" +msgstr "Ne dodeljene naloge" #. module: project #: view:project.project:0 msgid "Projects in which I am a manager" -msgstr "" +msgstr "Projekti v katerih sem vodja" #. module: project #: view:project.task:0 @@ -2036,12 +2067,12 @@ msgstr "" #: selection:project.task.history,kanban_state:0 #: selection:project.task.history.cumulative,kanban_state:0 msgid "Ready for next stage" -msgstr "" +msgstr "Pripravljeno za naslednjo fazo" #. module: project #: field:project.task.type,case_default:0 msgid "Default for New Projects" -msgstr "" +msgstr "Privzeto za nove projekte" #. module: project #: view:project.task:0 @@ -2079,11 +2110,14 @@ msgid "" "resource allocation.\n" " This installs the module project_long_term." msgstr "" +"A long term project management module that tracks planning, scheduling, and " +"resource allocation.\n" +" This installs the module project_long_term." #. module: project #: model:mail.message.subtype,description:project.mt_task_closed msgid "Task closed" -msgstr "" +msgstr "Naloga zaprta" #. module: project #: selection:report.project.task.user,month:0 @@ -2093,17 +2127,17 @@ msgstr "April" #. module: project #: view:project.task:0 msgid "Spent Hours" -msgstr "" +msgstr "Porabljene ure" #. module: project #: help:project.project,sequence:0 msgid "Gives the sequence order when displaying a list of Projects." -msgstr "" +msgstr "Zaporedje prikaza projektov" #. module: project #: model:ir.actions.act_window,name:project.act_res_users_2_project_task_opened msgid "Assigned Tasks" -msgstr "" +msgstr "Dodeljene naloge" #. module: project #: help:project.config.settings,module_project_issue_sheet:0 @@ -2111,17 +2145,19 @@ msgid "" "Provides timesheet support for the issues/bugs management in project.\n" " This installs the module project_issue_sheet." msgstr "" +"Provides timesheet support for the issues/bugs management in project.\n" +" This installs the module project_issue_sheet." #. module: project #: selection:project.project,privacy_visibility:0 msgid "Followers Only" -msgstr "" +msgstr "Samo sledilci" #. module: project #: view:board.board:0 #: field:project.project,task_count:0 msgid "Open Tasks" -msgstr "" +msgstr "Odprte naloge" #. module: project #: field:project.project,priority:0 @@ -2154,4 +2190,4 @@ msgstr "Leto" #: field:project.project,type_ids:0 #: view:project.task.type:0 msgid "Tasks Stages" -msgstr "" +msgstr "Faze nalog" diff --git a/addons/web/i18n/fi.po b/addons/web/i18n/fi.po index d987b67f0cf..94b93255fc6 100644 --- a/addons/web/i18n/fi.po +++ b/addons/web/i18n/fi.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-05 06:23+0000\n" +"X-Launchpad-Export-Date: 2013-04-06 06:36+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: web diff --git a/addons/web/i18n/mn.po b/addons/web/i18n/mn.po index 363decdf993..57f47f332d6 100644 --- a/addons/web/i18n/mn.po +++ b/addons/web/i18n/mn.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:39+0000\n" -"PO-Revision-Date: 2013-02-07 09:58+0000\n" -"Last-Translator: Tenuun Khangaitan \n" +"PO-Revision-Date: 2013-04-05 11:30+0000\n" +"Last-Translator: wsubuntu \n" "Language-Team: Mongolian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 05:09+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-06 06:36+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: web #. openerp-web @@ -59,7 +59,7 @@ msgstr "бага буюу тэнцүү" #: code:addons/web/static/src/js/chrome.js:408 #, python-format msgid "Please enter your previous password" -msgstr "Өмнө нууц үгээ оруулна уу" +msgstr "Өмнөх нууц үгээ оруулна уу" #. module: web #. openerp-web @@ -82,7 +82,7 @@ msgstr "Мастер Нууц Үг Солих" #: code:addons/web/static/src/js/chrome.js:507 #, python-format msgid "Do you really want to delete the database: %s ?" -msgstr "Та үнэхээр энэн өгөгдлийн баазыг устгамаар байна уу: %s ?" +msgstr "Та үнэхээр %s гэсэн өгөгдлийн санг устгамаар байна уу?" #. module: web #. openerp-web @@ -148,7 +148,7 @@ msgstr "Энд импортлож чадаагүй файлын урьдчилс #: code:addons/web/static/src/js/coresetup.js:587 #, python-format msgid "about a minute ago" -msgstr "цаг орчмын өмнө" +msgstr "минут орчмын өмнө" #. module: web #. openerp-web @@ -192,7 +192,7 @@ msgstr "Сонгох" #: code:addons/web/static/src/js/chrome.js:565 #, python-format msgid "Database restored successfully" -msgstr "Өгөгдлийн сан амжтилттай сэргээгдлээ" +msgstr "Өгөгдлийн сан амжилттай сэргээгдлээ" #. module: web #. openerp-web @@ -222,7 +222,7 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:1227 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "'%s' төрөлийн виджет хийгдээгүй" +msgstr "'%s' төрлийн виджет хийгдээгүй" #. module: web #. openerp-web diff --git a/addons/web/i18n/ro.po b/addons/web/i18n/ro.po index bf05d0c3c07..3b8066b38a0 100644 --- a/addons/web/i18n/ro.po +++ b/addons/web/i18n/ro.po @@ -8,21 +8,21 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:39+0000\n" -"PO-Revision-Date: 2013-03-12 14:09+0000\n" -"Last-Translator: Simonel Criste \n" +"PO-Revision-Date: 2013-04-09 04:47+0000\n" +"Last-Translator: Dorin \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 05:09+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:133 #, python-format msgid "Default language:" -msgstr "Limba implicita:" +msgstr "Limba implicită:" #. module: web #. openerp-web @@ -36,7 +36,7 @@ msgstr "acum %d minute" #: code:addons/web/static/src/js/coresetup.js:616 #, python-format msgid "Still loading...
Please be patient." -msgstr "inca se incarca ...
va rugam sa aveti rabdare." +msgstr "încă se încarcă ...
vă rugăm să aveți răbdare." #. module: web #. openerp-web @@ -52,14 +52,14 @@ msgstr "%(field)s %(operator)s \"%(value)s\"" #: code:addons/web/static/src/js/search.js:2116 #, python-format msgid "less or equal than" -msgstr "mai mic(a) sau egal cu" +msgstr "mai mic(ă) sau egal cu" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:408 #, python-format msgid "Please enter your previous password" -msgstr "Va rugam sa introduceti parola anterioara" +msgstr "Vă rugăm să introduceți parola anterioara" #. module: web #. openerp-web @@ -68,28 +68,28 @@ msgstr "Va rugam sa introduceti parola anterioara" #: code:addons/web/static/src/xml/base.xml:282 #, python-format msgid "Master password:" -msgstr "Parola principala:" +msgstr "Parola principală:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:274 #, python-format msgid "Change Master Password" -msgstr "Schimba Parola Principala" +msgstr "Schimbă parola principală" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:507 #, python-format msgid "Do you really want to delete the database: %s ?" -msgstr "Doriti intr-adevar sa stergeti baza de date: %s?" +msgstr "Doriți într-adevăr să ștergeți baza de date: %s?" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1494 #, python-format msgid "Search %(field)s at: %(value)s" -msgstr "Cauta %(field)s la: %(value)s" +msgstr "Caută %(field)s la: %(value)s" #. module: web #. openerp-web @@ -103,14 +103,14 @@ msgstr "Acces Interzis" #: code:addons/web/static/src/js/view_form.js:5220 #, python-format msgid "Uploading error" -msgstr "Eroare incarcare" +msgstr "Eroare încărcare" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:589 #, python-format msgid "about an hour ago" -msgstr "aproximativ o ora in urma" +msgstr "aproximativ o oră în urmă" #. module: web #. openerp-web @@ -119,7 +119,7 @@ msgstr "aproximativ o ora in urma" #: code:addons/web/static/src/xml/base.xml:216 #, python-format msgid "Backup Database" -msgstr "Copie de rezerva Baza de date" +msgstr "Copie de rezervă Baza de date" #. module: web #. openerp-web @@ -134,41 +134,41 @@ msgstr "%(view_type)s vizualizare" #: code:addons/web/static/src/js/dates.js:53 #, python-format msgid "'%s' is not a valid date" -msgstr "'%s' nu este o data valida" +msgstr "'%s' nu este o dată validă" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1835 #, python-format msgid "Here is a preview of the file we could not import:" -msgstr "Iata o previzualizare a fisierului pe care nu l-am putut importa:" +msgstr "Iată o previzualizare a fișierului pe care nu l-am putut importa:" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:587 #, python-format msgid "about a minute ago" -msgstr "aproximativ un minut in urma" +msgstr "aproximativ un minut în urmă" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1306 #, python-format msgid "File" -msgstr "Fisier" +msgstr "Fișier" #. module: web #: code:addons/web/controllers/main.py:822 #, python-format msgid "You cannot leave any password empty." -msgstr "Nu puteti lasa necompletat campul parola." +msgstr "Nu puteți lăsa necompletat câmpul parolă." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:699 #, python-format msgid "Invalid username or password" -msgstr "Nume de utilizator sau parola nevalid/a." +msgstr "Nume de utilizator sau parolă nevalid/ă." #. module: web #. openerp-web @@ -177,7 +177,7 @@ msgstr "Nume de utilizator sau parola nevalid/a." #: code:addons/web/static/src/xml/base.xml:260 #, python-format msgid "Master Password:" -msgstr "Parola Administrator:" +msgstr "Parolă Administrator:" #. module: web #. openerp-web @@ -185,14 +185,14 @@ msgstr "Parola Administrator:" #: code:addons/web/static/src/xml/base.xml:1383 #, python-format msgid "Select" -msgstr "Selecteaza" +msgstr "Selectează" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:565 #, python-format msgid "Database restored successfully" -msgstr "Baza de date recuperata cu succes" +msgstr "Baza de date recuperată cu succes" #. module: web #. openerp-web @@ -206,7 +206,7 @@ msgstr "Versiune" #: code:addons/web/static/src/xml/base.xml:573 #, python-format msgid "Latest Modification Date:" -msgstr "Data Ultimei Modificari:" +msgstr "Data ultimei modificări:" #. module: web #. openerp-web @@ -214,7 +214,7 @@ msgstr "Data Ultimei Modificari:" #, python-format msgid "M2O search fields do not currently handle multiple default values" msgstr "" -"Campurile de cautare M2O nu se ocupa in prezent de valori implicite multiple" +"Câmpurile de căutare M2O nu se ocupă în prezent de valori implicite multiple" #. module: web #. openerp-web @@ -228,7 +228,7 @@ msgstr "Tipul de widget '%s' nu este implementat" #: code:addons/web/static/src/xml/base.xml:1606 #, python-format msgid "Share with all users" -msgstr "Imparte cu toti utilizatorii" +msgstr "Împarte cu toți utilizatorii" #. module: web #. openerp-web @@ -243,7 +243,7 @@ msgstr "Formular" #: code:addons/web/static/src/xml/base.xml:1333 #, python-format msgid "(no string)" -msgstr "(fara clauza)" +msgstr "(fără clauză)" #. module: web #. openerp-web @@ -257,49 +257,49 @@ msgstr "'%s' nu este un timp corect" #: code:addons/web/static/src/js/search.js:1393 #, python-format msgid "not a valid number" -msgstr "nu este un numar valabil" +msgstr "nu este un număr valabil" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:325 #, python-format msgid "New Password:" -msgstr "Parola noua:" +msgstr "Parola nouă:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:613 #, python-format msgid "Attachment :" -msgstr "Atasament" +msgstr "Atașament :" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1689 #, python-format msgid "Fields to export" -msgstr "Campuri de exportat" +msgstr "Câmpuri de exportat" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1355 #, python-format msgid "Undefined" -msgstr "Nedefinit(a)" +msgstr "Nedefinit(ă)" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4908 #, python-format msgid "File Upload" -msgstr "Incarcare Fisier" +msgstr "Încarcăre Fișier" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:593 #, python-format msgid "about a month ago" -msgstr "aproximativ o luna in urma" +msgstr "aproximativ o luna în urmă" #. module: web #. openerp-web @@ -334,7 +334,7 @@ msgstr "Filtru Personalizat" #: code:addons/web/static/src/xml/base.xml:159 #, python-format msgid "Duplicate Database" -msgstr "Copiaza Baza de date" +msgstr "Copiază Baza de date" #. module: web #. openerp-web @@ -349,14 +349,14 @@ msgstr "Copiaza Baza de date" #: code:addons/web/static/src/xml/base.xml:336 #, python-format msgid "Change Password" -msgstr "Schimba Parola" +msgstr "Schimbă Parola" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:3445 #, python-format msgid "View type '%s' is not supported in One2Many." -msgstr "Vizualizarea de tip '%s' nu este acceptata in One2Many." +msgstr "Vizualizarea de tip '%s' nu este acceptată în One2Many." #. module: web #. openerp-web @@ -364,14 +364,14 @@ msgstr "Vizualizarea de tip '%s' nu este acceptata in One2Many." #: code:addons/web/static/src/js/view_list.js:2209 #, python-format msgid "Download" -msgstr "Descarca" +msgstr "Descarcă" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:270 #, python-format msgid "'%s' is not a correct datetime" -msgstr "'%s' nu este o data corecta" +msgstr "'%s' nu este o dată corectă" #. module: web #. openerp-web @@ -392,14 +392,14 @@ msgstr "Widget netratat" #: code:addons/web/static/src/xml/base.xml:985 #, python-format msgid "Selection:" -msgstr "Selectie:" +msgstr "Selecție:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:867 #, python-format msgid "The following fields are invalid:" -msgstr "Urmatoarele campuri sunt nevalide:" +msgstr "Următoarele câmpuri sunt nevalide:" #. module: web #: code:addons/web/controllers/main.py:843 @@ -412,21 +412,21 @@ msgstr "Limbi" #: code:addons/web/static/src/xml/base.xml:1279 #, python-format msgid "...Upload in progress..." -msgstr "...Descarcare in curs..." +msgstr "...Descărcare în curs..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1766 #, python-format msgid "Import" -msgstr "Importa" +msgstr "Importă" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:559 #, python-format msgid "Could not restore the database" -msgstr "Baza de date nu a putut fi restabilita" +msgstr "Baza de date nu a putut fi restabilită" #. module: web #. openerp-web @@ -440,7 +440,7 @@ msgstr "Încărcare fișier" #: code:addons/web/static/src/js/view_form.js:3838 #, python-format msgid "Action Button" -msgstr "Buton Actiune" +msgstr "Buton Acțiune" #. module: web #. openerp-web @@ -448,21 +448,21 @@ msgstr "Buton Actiune" #: code:addons/web/static/src/xml/base.xml:1474 #, python-format msgid "Manage Filters" -msgstr "Gestioneaza Filtrele" +msgstr "Gestionează filtrele" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:2034 #, python-format msgid "contains" -msgstr "contine" +msgstr "conține" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:619 #, python-format msgid "Take a minute to get a coffee,
because it's loading..." -msgstr "Faceti o pauza de cafea,
pentru ca se incarca..." +msgstr "Faceți o pauză de cafea,
pentru că se încarcă..." #. module: web #. openerp-web @@ -483,14 +483,14 @@ msgstr "Se încarcă (%d)" #: code:addons/web/static/src/js/search.js:1195 #, python-format msgid "GroupBy" -msgstr "GrupeazaDupa" +msgstr "GrupeazăDupă" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:702 #, python-format msgid "You must select at least one record." -msgstr "Trebuie sa selectati cel putin o inregistrare." +msgstr "Trebuie să selectați cel putin o înregistrare." #. module: web #. openerp-web @@ -504,49 +504,49 @@ msgstr "Vizualizare Jurnalul (perm_read)" #: code:addons/web/static/src/js/view_form.js:1057 #, python-format msgid "Set Default" -msgstr "Seteaza ca Implicit" +msgstr "Setează ca implicit" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:981 #, python-format msgid "Relation:" -msgstr "Relatii:" +msgstr "Relații:" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:586 #, python-format msgid "less than a minute ago" -msgstr "cu mai putin de un minut in urma" +msgstr "cu mai puțin de un minut în urmă" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:854 #, python-format msgid "Condition:" -msgstr "Conditie:" +msgstr "Condiție:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1692 #, python-format msgid "Unsupported operator %s in domain %s" -msgstr "Operator nesustinut %s in domeniul %s" +msgstr "Operator nesusținut %s în domeniul %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:246 #, python-format msgid "'%s' is not a correct float" -msgstr "'%s' nu este o stabilizare corecta" +msgstr "'%s' nu este o stabilizare corectă" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:565 #, python-format msgid "Restored" -msgstr "Recuperat(a)" +msgstr "Recuperat(ă)" #. module: web #. openerp-web @@ -560,7 +560,7 @@ msgstr "%d-%d din %d" #: code:addons/web/static/src/js/view_form.js:2893 #, python-format msgid "Create and Edit..." -msgstr "Creeaza si Editeaza..." +msgstr "Creează și Editează..." #. module: web #. openerp-web @@ -574,7 +574,7 @@ msgstr "Tip nonliteral necunoscut " #: code:addons/web/static/src/js/view_form.js:2359 #, python-format msgid "Resource error" -msgstr "Eroare resursa" +msgstr "Eroare resursă" #. module: web #. openerp-web @@ -588,14 +588,14 @@ msgstr "nu este" #: code:addons/web/static/src/xml/base.xml:553 #, python-format msgid "Print Workflow" -msgstr "Tipareste Fluxul de lucru" +msgstr "Tipărește Fluxul de lucru" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:411 #, python-format msgid "Please confirm your new password" -msgstr "Va rugam sa confirmati parola noua" +msgstr "Vă rugăm să confirmați parola noua" #. module: web #. openerp-web @@ -609,35 +609,35 @@ msgstr "UTF-8" #: code:addons/web/static/src/xml/base.xml:424 #, python-format msgid "For more information visit" -msgstr "Pentru mai multe informatii vizitati" +msgstr "Pentru mai multe informații vizitați" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1857 #, python-format msgid "Add All Info..." -msgstr "Adauga Toate Informatiile..." +msgstr "Adaugă Toate Informațiile..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1681 #, python-format msgid "Export Formats" -msgstr "Exporta Formate" +msgstr "Exportă Formate" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:977 #, python-format msgid "On change:" -msgstr "In schimbare:" +msgstr "În schimbare:" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:919 #, python-format msgid "Model %s fields" -msgstr "Model %s campuri" +msgstr "Model %s câmpuri" #. module: web #. openerp-web @@ -648,14 +648,14 @@ msgstr "Model %s campuri" #: code:addons/web/static/src/js/search.js:2137 #, python-format msgid "is set" -msgstr "este setat(a)" +msgstr "este setat(ă)" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:908 #, python-format msgid "Setting 'id' attribute on existing record %s" -msgstr "Setarea atributului 'identificare' la inregistrarea existenta %s" +msgstr "Setarea atributului 'identificare' la înregistrarea existentă %s" #. module: web #. openerp-web @@ -671,7 +671,7 @@ msgstr "Lista" #: code:addons/web/static/src/js/search.js:2113 #, python-format msgid "greater than" -msgstr "mai mare decat" +msgstr "mai mare decât" #. module: web #. openerp-web @@ -679,21 +679,21 @@ msgstr "mai mare decat" #: code:addons/web/static/src/xml/base.xml:549 #, python-format msgid "View" -msgstr "Vizualizeaza" +msgstr "Vizualizează" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1473 #, python-format msgid "Save Filter" -msgstr "Salveaza Filtrul" +msgstr "Salvează filtru" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1353 #, python-format msgid "Action ID:" -msgstr "ID Actiune:" +msgstr "ID Acțiune:" #. module: web #. openerp-web @@ -701,15 +701,15 @@ msgstr "ID Actiune:" #, python-format msgid "Your user's preference timezone does not match your browser timezone:" msgstr "" -"Fusul orar dorit de utilizatorul dumneavoastra nu se potriveste cu fusul " -"orar al browserului dumneavoastra:" +"Fusul orar dorit de utilizatorul dumneavoastră nu se potrivește cu fusul " +"orar al browserului dumneavoastră:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1223 #, python-format msgid "Field '%s' specified in view could not be found." -msgstr "Campul '%s' specificat in vizualizare nu a putut fi gasit." +msgstr "Câmpul '%s' specificat în vizualizare nu a putut fi găsit." #. module: web #. openerp-web @@ -737,21 +737,21 @@ msgstr "Biti,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" #: code:addons/web/static/src/js/chrome.js:497 #, python-format msgid "The database has been duplicated." -msgstr "Baza de date a fost copiata." +msgstr "Baza de date a fost copiată." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1623 #, python-format msgid "Apply" -msgstr "Aplica" +msgstr "Aplică" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1395 #, python-format msgid "Save & New" -msgstr "Salveaza & Nou(a)" +msgstr "Salvează & Nou(ă)" #. module: web #. openerp-web @@ -759,7 +759,7 @@ msgstr "Salveaza & Nou(a)" #: code:addons/web/static/src/xml/base.xml:1234 #, python-format msgid "Save As" -msgstr "Salveaza ca" +msgstr "Salvează ca" #. module: web #. openerp-web @@ -780,21 +780,21 @@ msgstr "Eroare E-mail" #: code:addons/web/static/src/js/coresetup.js:591 #, python-format msgid "a day ago" -msgstr "cu o zi in urma" +msgstr "cu o zi în urmă" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1787 #, python-format msgid "Does your file have titles?" -msgstr "Are titlu fisierul dumneavoastra?" +msgstr "Are titlu fișierul dumneavoastră?" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:327 #, python-format msgid "Unlimited" -msgstr "Nelimitat(a)" +msgstr "Nelimitat(ă)" #. module: web #. openerp-web @@ -805,24 +805,24 @@ msgid "" "\n" "Are you sure you want to leave this page ?" msgstr "" -"Avertizare, inregistrarea a fost modificata, schimbarile dumneavoastra vor " +"Avertizare, înregistrarea a fost modificată, schimbările dumneavoastră vor " "fi ignorate.\n" "\n" -"Sunteti sigur(a) ca doriti sa inchideti aceasta pagina?" +"Sunteți sigur(ă) ca doriți să închideți aceasta pagina?" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2929 #, python-format msgid "Search: " -msgstr "Cauta: " +msgstr "Caută: " #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:547 #, python-format msgid "Technical translation" -msgstr "Traducere tehnica" +msgstr "Traducere tehnică" #. module: web #. openerp-web @@ -850,7 +850,7 @@ msgstr "Numele filtrului" #: code:addons/web/static/src/xml/base.xml:1471 #, python-format msgid "-- Actions --" -msgstr "-- Actiuni --" +msgstr "-- Acțiuni --" #. module: web #. openerp-web @@ -860,7 +860,7 @@ msgstr "-- Actiuni --" #: code:addons/web/static/src/xml/base.xml:1703 #, python-format msgid "Add" -msgstr "Adauga" +msgstr "Adaugă" #. module: web #. openerp-web @@ -881,21 +881,21 @@ msgstr "OpenERP.com" #: code:addons/web/static/src/js/view_form.js:2330 #, python-format msgid "Can't send email to invalid e-mail address" -msgstr "Nu se poate trimite e-mail la o adresa de email nevalida" +msgstr "Nu se poate trimite e-mail la o adresă de email nevalidă" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:639 #, python-format msgid "Add..." -msgstr "Adauga..." +msgstr "Adaugă..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:406 #, python-format msgid "Preferences" -msgstr "Preferinte" +msgstr "Preferințe" #. module: web #. openerp-web @@ -910,7 +910,7 @@ msgstr "Eroare la modificarea formatului: %s" #: code:addons/web/static/src/xml/base.xml:185 #, python-format msgid "Drop Database" -msgstr "Renunta la Baza de date" +msgstr "Renunță la Baza de date" #. module: web #. openerp-web @@ -918,7 +918,7 @@ msgstr "Renunta la Baza de date" #, python-format msgid "Click here to change your user's timezone." msgstr "" -"Click aici pentru a schimba fusul orar al utilizatorului dumneavoastra." +"Clic aici pentru a schimba fusul orar al utilizatorului dumneavoastră." #. module: web #. openerp-web @@ -932,7 +932,7 @@ msgstr "Parametri de modificare:" #: code:addons/web/static/src/xml/base.xml:630 #, python-format msgid "Delete this attachment" -msgstr "Sterge acest atasament" +msgstr "Șterge acest atașament" #. module: web #. openerp-web @@ -942,7 +942,7 @@ msgstr "Sterge acest atasament" #: code:addons/web/static/src/xml/base.xml:1610 #, python-format msgid "Save" -msgstr "Salveaza" +msgstr "Salvează" #. module: web #. openerp-web @@ -971,14 +971,14 @@ msgstr "Copiere baza de date" #: code:addons/web/static/src/js/chrome.js:579 #, python-format msgid "Password has been changed successfully" -msgstr "Parola a fost modificata cu succes" +msgstr "Parola a fost modificată cu succes" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list_editable.js:794 #, python-format msgid "The form's data can not be discarded" -msgstr "Datele formularului nu pot fi inlaturate" +msgstr "Datele formularului nu pot fi înlăturate" #. module: web #. openerp-web @@ -1001,7 +1001,7 @@ msgstr "Autentificare" #: code:addons/web/static/src/xml/base.xml:1762 #, python-format msgid "Delete" -msgstr "Sterge" +msgstr "Șterge" #. module: web #. openerp-web @@ -1030,7 +1030,7 @@ msgstr "Numele bazei de date este nevalid" #: code:addons/web/static/src/xml/base.xml:1691 #, python-format msgid "Save fields list" -msgstr "Salveaza lista campurilor" +msgstr "Salvează lista câmpurilor" #. module: web #. openerp-web @@ -1051,7 +1051,7 @@ msgstr "Vizualizare Jurnal (%s)" #: code:addons/web/static/src/xml/base.xml:567 #, python-format msgid "Creation Date:" -msgstr "Data Crearii:" +msgstr "Data Creării:" #. module: web #: code:addons/web/controllers/main.py:786 @@ -1079,14 +1079,14 @@ msgstr "/web/binar/incarca_atasament" #: code:addons/web/static/src/js/chrome.js:579 #, python-format msgid "Changed Password" -msgstr "Parola modificata" +msgstr "Parolă modificată" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1438 #, python-format msgid "Search" -msgstr "Cauta" +msgstr "Caută" #. module: web #. openerp-web @@ -1105,7 +1105,7 @@ msgstr "Deschide: " #: code:addons/web/static/src/xml/base.xml:309 #, python-format msgid "Backup" -msgstr "Copie de rezerva" +msgstr "Copie de rezervă" #. module: web #. openerp-web @@ -1113,14 +1113,14 @@ msgstr "Copie de rezerva" #: code:addons/web/static/src/js/dates.js:80 #, python-format msgid "'%s' is not a valid time" -msgstr "'%s' nu este o ora valida" +msgstr "'%s' nu este o oră validă" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:278 #, python-format msgid "'%s' is not a correct date" -msgstr "\"%s' nu este o data corecta" +msgstr "\"%s' nu este o dată corectă" #. module: web #. openerp-web @@ -1134,14 +1134,14 @@ msgstr "(neetichetat)" #: code:addons/web/static/src/js/coresetup.js:592 #, python-format msgid "%d days ago" -msgstr "acum %d zile in urma" +msgstr "acum %d zile în urmă" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1481 #, python-format msgid "(Any existing filter with the same name will be replaced)" -msgstr "(Toate filtrele existente cu acelasi nume vor fi inlocuite)" +msgstr "(Toate filtrele existente cu același nume vor fi înlocuite)" #. module: web #. openerp-web @@ -1151,7 +1151,7 @@ msgstr "(Toate filtrele existente cu acelasi nume vor fi inlocuite)" #: code:addons/web/static/src/xml/base.xml:1858 #, python-format msgid "Cancel" -msgstr "Anuleaza" +msgstr "Anulează" #. module: web #. openerp-web @@ -1181,7 +1181,7 @@ msgstr "Nepotrivire de fus orar" #: code:addons/web/static/src/js/view_form.js:1646 #, python-format msgid "Unknown operator %s in domain %s" -msgstr "Operator necunoscut %s in domeniul %s" +msgstr "Operator necunoscut %s în domeniul %s" #. module: web #. openerp-web @@ -1195,7 +1195,7 @@ msgstr "%d / %d" #: code:addons/web/static/src/xml/base.xml:1780 #, python-format msgid "2. Check your file format" -msgstr "2. Verificati formatul fisierului" +msgstr "2. Verificați formatul fișierului" #. module: web #. openerp-web @@ -1212,9 +1212,9 @@ msgid "" "Select a .CSV file to import. If you need a sample of file to import,\n" " you should use the export tool with the \"Import Compatible\" option." msgstr "" -"Selectati un fisier .CVS de importat. Daca va trebuie un exemplu al " -"fisierului de importat,\n" -" ar trebui sa folositi unealta de export cu optiunea \"Import " +"Selectați un fișier .CVS de importat. Dacă vă trebuie un exemplu al " +"fișierului de importat,\n" +" ar trebui sa folosiți unealta de export cu opțiunea \"Import " "Compatibil\"." #. module: web @@ -1222,7 +1222,7 @@ msgstr "" #: code:addons/web/static/src/js/coresetup.js:594 #, python-format msgid "%d months ago" -msgstr "%d luni in urma" +msgstr "%d luni în urmă" #. module: web #. openerp-web @@ -1230,20 +1230,20 @@ msgstr "%d luni in urma" #: code:addons/web/static/src/xml/base.xml:308 #, python-format msgid "Drop" -msgstr "Renunta" +msgstr "Renunță" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1472 #, python-format msgid "Add Advanced Filter" -msgstr "Adauga Filtru Avansat" +msgstr "Adaugă filtru avansat" #. module: web #: code:addons/web/controllers/main.py:824 #, python-format msgid "The new password and its confirmation must be identical." -msgstr "Parola noua si confirmarea ei trebuie sa fie identice." +msgstr "Parola nouă și confirmarea ei trebuie să fie identice." #. module: web #. openerp-web @@ -1251,7 +1251,7 @@ msgstr "Parola noua si confirmarea ei trebuie sa fie identice." #: code:addons/web/static/src/xml/base.xml:248 #, python-format msgid "Restore Database" -msgstr "Restabileste baza de date." +msgstr "Restabilește baza de date." #. module: web #. openerp-web @@ -1265,7 +1265,7 @@ msgstr "Autentificare" #: code:addons/web/static/src/xml/base.xml:423 #, python-format msgid "Licenced under the terms of" -msgstr "Autorizat in conditiile" +msgstr "Autorizat în condițiile" #. module: web #. openerp-web @@ -1273,7 +1273,7 @@ msgstr "Autorizat in conditiile" #: code:addons/web/static/src/xml/base.xml:310 #, python-format msgid "Restore" -msgstr "Restabileste" +msgstr "Restabilește" #. module: web #. openerp-web @@ -1294,7 +1294,7 @@ msgstr "Deconectare" #: code:addons/web/static/src/js/search.js:1171 #, python-format msgid "Group by: %s" -msgstr "Grupeaza dupa: %s" +msgstr "Grupează după: %s" #. module: web #. openerp-web @@ -1309,21 +1309,21 @@ msgstr "Nu au fost furnizate date." #: code:addons/web/static/src/xml/base.xml:1663 #, python-format msgid "Export" -msgstr "Exporta" +msgstr "Exportă" #. module: web #. openerp-web #: code:addons/web/static/src/js/data_export.js:12 #, python-format msgid "Export To File" -msgstr "Exporta in Fisier" +msgstr "Exportă în Fișier" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1152 #, python-format msgid "You must choose at least one record." -msgstr "Trebuie sa selectati cel putin o inregistrare." +msgstr "Trebuie să selectați cel putin o înregistrare." #. module: web #. openerp-web @@ -1337,28 +1337,28 @@ msgstr "Nu plecați,
încă se încarcă..." #: code:addons/web/static/src/js/search.js:824 #, python-format msgid "Invalid Search" -msgstr "Cautare nevalida" +msgstr "Căutare nevalidă" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:995 #, python-format msgid "Could not find id in dataset" -msgstr "Imposibil de gasit ID-ul in setul de date" +msgstr "Imposibil de găsit ID-ul în setul de date" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1705 #, python-format msgid "Remove All" -msgstr "Elimina Tot(toate)" +msgstr "Elimină Tot(toate)" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1349 #, python-format msgid "Method:" -msgstr "Metoda:" +msgstr "Metodă:" #. module: web #. openerp-web @@ -1372,35 +1372,35 @@ msgstr "%(page)d/%(page_count)d" #: code:addons/web/static/src/js/chrome.js:412 #, python-format msgid "The confirmation does not match the password" -msgstr "Confirmarea nu se potriveste cu parola" +msgstr "Confirmarea nu se potrivește cu parola" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:444 #, python-format msgid "Edit Company data" -msgstr "Editeaza Datele companiei" +msgstr "Editează Datele companiei" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4923 #, python-format msgid "Save As..." -msgstr "Salveaza ca..." +msgstr "Salvează ca..." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5044 #, python-format msgid "Could not display the selected image." -msgstr "Imaginea selectata nu a putut fi afisata." +msgstr "Imaginea selectată nu a putut fi afișată." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:525 #, python-format msgid "Database backed up successfully" -msgstr "Baza de date salvata cu succes" +msgstr "Baza de date salvată cu succes" #. module: web #. openerp-web @@ -1425,35 +1425,35 @@ msgstr "99+" #: code:addons/web/static/src/xml/base.xml:408 #, python-format msgid "Help" -msgstr "" +msgstr "Ajutor" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1772 #, python-format msgid "1. Import a .CSV file" -msgstr "1. Importa un fisier .CSV" +msgstr "1. Importă un fișier .CSV" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:663 #, python-format msgid "No database selected !" -msgstr "Nu a fost selectata nicio baza de date !" +msgstr "Nu a fost selectată nici o bază de date !" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:184 #, python-format msgid "(%d records)" -msgstr "(%d inregistrari)" +msgstr "(%d înregistrări)" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:973 #, python-format msgid "Change default:" -msgstr "Schimba implicit:" +msgstr "Schimbă implicit:" #. module: web #. openerp-web @@ -1470,7 +1470,7 @@ msgstr "Numele bazei de date originale:" #: code:addons/web/static/src/js/search.js:2111 #, python-format msgid "is equal to" -msgstr "este egal(a) cu" +msgstr "este egal(ă) cu" #. module: web #. openerp-web @@ -1484,14 +1484,14 @@ msgstr "Nu s-a putut serializa XML" #: code:addons/web/static/src/xml/base.xml:1617 #, python-format msgid "Advanced Search" -msgstr "Cautare Avansata" +msgstr "Căutare avansată" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:290 #, python-format msgid "Confirm new master password:" -msgstr "Confirmati parola principala noua:" +msgstr "Confirmați parola principală nouă:" #. module: web #. openerp-web @@ -1499,7 +1499,7 @@ msgstr "Confirmati parola principala noua:" #, python-format msgid "Maybe you should consider reloading the application by pressing F5..." msgstr "" -"Poate ar trebui sa luati in considerare reincarcarea aplicatiei apasand " +"Poate ar trebui să luați în considerare reîncărcarea aplicației apăsând " "tasta F5..." #. module: web @@ -1512,35 +1512,35 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1385 #, python-format msgid "Create" -msgstr "Creeaza" +msgstr "Creează" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:2035 #, python-format msgid "doesn't contain" -msgstr "nu contine" +msgstr "nu conține" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1783 #, python-format msgid "Import Options" -msgstr "Importa Optiuni" +msgstr "Importă Opțiuni" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2961 #, python-format msgid "Add %s" -msgstr "Adauga %s" +msgstr "Adaugă %s" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:145 #, python-format msgid "Admin password:" -msgstr "Parola administrator:" +msgstr "Parolă administrator:" #. module: web #. openerp-web @@ -1549,7 +1549,7 @@ msgstr "Parola administrator:" #: code:addons/web/static/src/xml/base.xml:1403 #, python-format msgid "Close" -msgstr "Inchide" +msgstr "Închide" #. module: web #. openerp-web @@ -1557,14 +1557,14 @@ msgstr "Inchide" #, python-format msgid "" "You may not believe it,
but the application is actually loading..." -msgstr "Poate ca nu credeti,
dar aplicatia se incarca..." +msgstr "Poate că nu credeți,
dar aplicația se încarcă..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1777 #, python-format msgid "CSV File:" -msgstr "Fisier CSV:" +msgstr "Fișier CSV:" #. module: web #. openerp-web @@ -1584,28 +1584,28 @@ msgstr "Arbore" #: code:addons/web/controllers/main.py:746 #, python-format msgid "Could not drop database !" -msgstr "Baza de date nu a putut fi eliminata !" +msgstr "Baza de date nu a putut fi eliminată !" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:231 #, python-format msgid "'%s' is not a correct integer" -msgstr "'%s' nu este o integrala corecta" +msgstr "'%s' nu este un întreg corect" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:880 #, python-format msgid "All users" -msgstr "Toti utilizatorii" +msgstr "Toți utilizatorii" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1654 #, python-format msgid "Unknown field %s in domain %s" -msgstr "Camp necunoscut %s in domeniul %s" +msgstr "Câmp necunoscut %s în domeniul %s" #. module: web #. openerp-web @@ -1619,14 +1619,14 @@ msgstr "Nodul [%s] nu este un nod JSONified XML" #: code:addons/web/static/src/xml/base.xml:1435 #, python-format msgid "Advanced Search..." -msgstr "Cautare Avansata..." +msgstr "Căutare avansată..." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:515 #, python-format msgid "Dropping database" -msgstr "Renuntare la baza de date" +msgstr "Renunțare la baza de date" #. module: web #. openerp-web @@ -1649,7 +1649,7 @@ msgstr "Da" #: code:addons/web/static/src/js/view_form.js:4908 #, python-format msgid "There was a problem while uploading your file" -msgstr "A avut loc o problema in timpul incarcarii fisierului dumneavoastra" +msgstr "A avut loc o problemă în timpul încarcării fișierului dumneavoastră" #. module: web #. openerp-web @@ -1684,21 +1684,21 @@ msgstr "Import-Export Compatibil" #: code:addons/web/static/src/js/coresetup.js:596 #, python-format msgid "%d years ago" -msgstr "cu %d ani in urma" +msgstr "cu %d ani în urmă" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1055 #, python-format msgid "Unknown m2m command %s" -msgstr "Comanda %s necunoscuta m2m" +msgstr "Comanda %s necunoscută m2m" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1064 #, python-format msgid "Save default" -msgstr "Salveaza implicit" +msgstr "Salvează implicit" #. module: web #. openerp-web @@ -1714,21 +1714,21 @@ msgstr "Numele noii baze de date:" #: code:addons/web/static/src/js/chrome.js:409 #, python-format msgid "Please enter your new password" -msgstr "Va rugam sa introduceti parola noua" +msgstr "Vă rugăm să introduceți parola nouă" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4923 #, python-format msgid "The field is empty, there's nothing to save !" -msgstr "Campul este gol, nu este nimic de salvat !" +msgstr "Caâmpul este gol, nu este nimic de salvat !" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:548 #, python-format msgid "Manage Views" -msgstr "Gestioneaza Vizualizarile" +msgstr "Gestioneaza Vizualizările" #. module: web #. openerp-web @@ -1749,14 +1749,14 @@ msgstr "Linii de omis" #: code:addons/web/static/src/js/view_form.js:2883 #, python-format msgid "Create \"%s\"" -msgstr "Creeaza \"%s\"" +msgstr "Creează \"%s\"" #. module: web #. openerp-web #: code:addons/web/static/src/js/data_export.js:361 #, python-format msgid "Please select fields to save export list..." -msgstr "Va rugam selectati campurile pentru a salva lista de exporturi..." +msgstr "Vă rugăm selectați câmpurile pentru a salva lista de exporturi..." #. module: web #. openerp-web @@ -1770,21 +1770,21 @@ msgstr "Copyright © 2004-IN PREZENT OpenERP SA. Toate drepturile rezervate." #: code:addons/web/static/src/js/view_form.js:2359 #, python-format msgid "This resource is empty" -msgstr "Aceasta resursa este goala" +msgstr "Aceasta resursă este goală" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1687 #, python-format msgid "Available fields" -msgstr "Campuri disponibile" +msgstr "Câmpuri disponibile" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1833 #, python-format msgid "The import failed due to:" -msgstr "Importul a esuat din cauza:" +msgstr "Importul a eșuat din cauza:" #. module: web #. openerp-web @@ -1799,7 +1799,7 @@ msgstr "Teste JS" #: code:addons/web/static/src/xml/base.xml:1748 #, python-format msgid "Save as:" -msgstr "Salveaza ca:" +msgstr "Salvează ca:" #. module: web #. openerp-web @@ -1821,21 +1821,21 @@ msgstr "Creează: " #: code:addons/web/static/src/xml/base.xml:543 #, python-format msgid "View Fields" -msgstr "Vizualizeaza Campurile" +msgstr "Vizualizează Câmpurile" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:330 #, python-format msgid "Confirm New Password:" -msgstr "Confirma Parola Noua:" +msgstr "Confirmați parola nouă:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:590 #, python-format msgid "Do you really want to remove these records?" -msgstr "Doriti intr-adevar sa eliminati aceste inregistrari?" +msgstr "Doriți într-adevăr sa eliminați aceste înregistrări?" #. module: web #. openerp-web @@ -1857,7 +1857,7 @@ msgstr "este" #: code:addons/web/static/src/js/data_export.js:6 #, python-format msgid "Export Data" -msgstr "Exporta Datele" +msgstr "Exportă datele" #. module: web #. openerp-web @@ -1903,7 +1903,7 @@ msgstr "Baza de date:" #: code:addons/web/static/src/xml/base.xml:1249 #, python-format msgid "Uploading ..." -msgstr "Se incarca..." +msgstr "Se încarcă..." #. module: web #. openerp-web @@ -1924,7 +1924,7 @@ msgstr "Despre" #: code:addons/web/static/src/xml/base.xml:1438 #, python-format msgid "Search Again" -msgstr "Cauta din nou" +msgstr "Caută din nou" #. module: web #. openerp-web @@ -1939,14 +1939,14 @@ msgstr "-- Filtre --" #: code:addons/web/static/src/js/search.js:2157 #, python-format msgid "%(field)s %(operator)s" -msgstr "" +msgstr "%(field)s %(operator)s" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1678 #, python-format msgid "Export all Data" -msgstr "Exporta toate Datele" +msgstr "Exportă toate datele" #. module: web #. openerp-web @@ -1956,7 +1956,7 @@ msgid "" "Grouping on field '%s' is not possible because that field does not appear in " "the list view." msgstr "" -"Nu este posibila gruparea in campul '%s' pentru ca acel camp nu apare in " +"Nu este posibilă gruparea în câmpul '%s' pentru că acel câmp nu apare în " "vizualizarea listei." #. module: web @@ -1964,7 +1964,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:540 #, python-format msgid "Set Defaults" -msgstr "Seteaza Valorile implicite" +msgstr "Setează valorile implicite" #. module: web #. openerp-web @@ -2022,14 +2022,14 @@ msgstr "Obiect:" #: code:addons/web/static/src/js/chrome.js:341 #, python-format msgid "Loading" -msgstr "Se incarca" +msgstr "Se încarcă" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:595 #, python-format msgid "about a year ago" -msgstr "aproximativ un an in urma" +msgstr "aproximativ un an în urmă" #. module: web #. openerp-web @@ -2039,7 +2039,7 @@ msgstr "aproximativ un an in urma" #: code:addons/web/static/src/js/search.js:2112 #, python-format msgid "is not equal to" -msgstr "nu este egal(a) cu" +msgstr "nu este egal(ă) cu" #. module: web #. openerp-web @@ -2058,14 +2058,14 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1241 #, python-format msgid "Clear" -msgstr "Stergeti" +msgstr "Ștergeți" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:590 #, python-format msgid "%d hours ago" -msgstr "%d ore in urma" +msgstr "%d ore în urmă" #. module: web #. openerp-web @@ -2073,14 +2073,14 @@ msgstr "%d ore in urma" #: code:addons/web/static/src/js/view_form.js:4370 #, python-format msgid "Add: " -msgstr "Adauga: " +msgstr "Adaugă: " #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1856 #, python-format msgid "Quick Add" -msgstr "Adaugare Rapida" +msgstr "Adăugare rapidă" #. module: web #. openerp-web @@ -2107,7 +2107,7 @@ msgstr "Ok" #: code:addons/web/static/src/js/views.js:1217 #, python-format msgid "Uploading..." -msgstr "Se incarca..." +msgstr "Se încarcă..." #. module: web #. openerp-web @@ -2129,14 +2129,14 @@ msgstr "Creat de:" #: code:addons/web/static/src/js/dates.js:26 #, python-format msgid "'%s' is not a valid datetime" -msgstr "\"%s' nu este o ora valida" +msgstr "\"%s' nu este o oră validă" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:256 #, python-format msgid "File:" -msgstr "Fisier:" +msgstr "Fișier:" #. module: web #. openerp-web @@ -2145,7 +2145,7 @@ msgstr "Fisier:" #: code:addons/web/static/src/js/search.js:2114 #, python-format msgid "less than" -msgstr "mai mic decat" +msgstr "mai mic decât" #. module: web #. openerp-web @@ -2153,63 +2153,63 @@ msgstr "mai mic decat" #: code:addons/web/static/src/js/views.js:1152 #, python-format msgid "Warning" -msgstr "Atentionare" +msgstr "Atenționare" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:550 #, python-format msgid "Edit SearchView" -msgstr "Editeaza Vizualizare Cautare" +msgstr "Editează Vizualizare Căutare" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:2152 #, python-format msgid "is true" -msgstr "este adevarat(a)" +msgstr "este adevărat(ă)" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:3943 #, python-format msgid "Add an item" -msgstr "Adauga un element" +msgstr "Adaugă un element" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1601 #, python-format msgid "Save current filter" -msgstr "Salveaza filtrul actual" +msgstr "Salvează filtrul actual" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1915 #, python-format msgid "Confirm" -msgstr "Confirma" +msgstr "Confirmă" #. module: web #. openerp-web #: code:addons/web/static/src/js/data_export.js:126 #, python-format msgid "Please enter save field list name" -msgstr "Introduceti numele listei campului de salvat" +msgstr "Introduceți numele listei câmpului de salvat" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:2221 #, python-format msgid "Download \"%s\"" -msgstr "Descarca \"%s\"" +msgstr "Descarcă \"%s\"" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:324 #, python-format msgid "New" -msgstr "Nou(a)" +msgstr "Nou(ă)" #. module: web #. openerp-web @@ -2224,14 +2224,14 @@ msgstr "Nu se poate efectua conversia valorii %s la context" #: code:addons/web/static/src/xml/base.xml:544 #, python-format msgid "Fields View Get" -msgstr "Vizualizare Campuri" +msgstr "Vizualizare Câmpuri" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:149 #, python-format msgid "Confirm password:" -msgstr "Confirmati parola:" +msgstr "Confirmați parola:" #. module: web #. openerp-web @@ -2254,14 +2254,14 @@ msgstr "Buton" #: code:addons/web/static/src/xml/base.xml:421 #, python-format msgid "OpenERP is a trademark of the" -msgstr "OpenERP este marca inregistrata a" +msgstr "OpenERP este marcă înregistrată a" #. module: web #. openerp-web #: code:addons/web/static/src/js/data_export.js:374 #, python-format msgid "Please select fields to export..." -msgstr "Va rugam selectati campurile de exportat..." +msgstr "Vă rugăm selectați câmpurile de exportat..." #. module: web #. openerp-web @@ -2272,21 +2272,21 @@ msgstr "Va rugam selectati campurile de exportat..." #: code:addons/web/static/src/js/search.js:2138 #, python-format msgid "is not set" -msgstr "nu este setat(a)" +msgstr "nu este setat(ă)" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:286 #, python-format msgid "New master password:" -msgstr "Parola principala noua:" +msgstr "Parola principală nouă:" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:2153 #, python-format msgid "is false" -msgstr "este fals(a)" +msgstr "este fals(ă)" #. module: web #. openerp-web @@ -2300,13 +2300,13 @@ msgstr "Despre OpenERP" #: code:addons/web/static/src/js/formats.js:301 #, python-format msgid "'%s' is not a correct date, datetime nor time" -msgstr "'%s' nu este o data sau o ora corecta" +msgstr "'%s' nu este o dată sau o oră corectă" #. module: web #: code:addons/web/controllers/main.py:1260 #, python-format msgid "No content found for field '%s' on '%s:%s'" -msgstr "Nu a fost gasit niciun continut pentru campul '%s' in '%s:%s'" +msgstr "Nu a fost găsit nici un conținut pentru câmpul '%s' în '%s:%s'" #. module: web #. openerp-web @@ -2327,7 +2327,7 @@ msgstr "Imagine" #: code:addons/web/static/src/xml/base.xml:81 #, python-format msgid "Manage Databases" -msgstr "Gestionati Bazele de date" +msgstr "Gestionați Bazele de date" #. module: web #. openerp-web @@ -2341,7 +2341,7 @@ msgstr "Eroare de Evaluare" #: code:addons/web/static/src/js/search.js:1379 #, python-format msgid "not a valid integer" -msgstr "nu este un numar intreg valabil" +msgstr "nu este un număr intreg valabil" #. module: web #. openerp-web @@ -2367,7 +2367,7 @@ msgstr "Nu" #: code:addons/web/static/src/js/formats.js:313 #, python-format msgid "'%s' is not convertible to date, datetime nor time" -msgstr "'%s' nu este convertibil in data sau ora" +msgstr "'%s' nu este convertibil în dată sau oră" #. module: web #. openerp-web @@ -2376,7 +2376,7 @@ msgstr "'%s' nu este convertibil in data sau ora" #: code:addons/web/static/src/xml/base.xml:307 #, python-format msgid "Duplicate" -msgstr "Copiaza" +msgstr "Copiază" #. module: web #. openerp-web @@ -2392,14 +2392,14 @@ msgstr "Renunță" #: code:addons/web/static/src/xml/base.xml:1622 #, python-format msgid "Add a condition" -msgstr "Adauga o conditie" +msgstr "Adaugă o condiție" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:615 #, python-format msgid "Still loading..." -msgstr "Inca se incarca" +msgstr "Încă se încarcă" #. module: web #. openerp-web @@ -2407,7 +2407,7 @@ msgstr "Inca se incarca" #, python-format msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" msgstr "" -"Valoare incorecta pentru campul %(fieldname)s: [%(value)s] este %(message)s" +"Valoare incorectă pentru câmpul %(fieldname)s: [%(value)s] este %(message)s" #. module: web #. openerp-web @@ -2415,21 +2415,21 @@ msgstr "" #, python-format msgid "The o2m record must be saved before an action can be used" msgstr "" -"Inregistrarea one2many trebuie salvata inainte ca o actiune sa fie folosita" +"Înregistrarea one2many trebuie salvată înainte ca o acțiune să fie folosită" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:525 #, python-format msgid "Backed" -msgstr "Cu copie de rezerva" +msgstr "Cu copie de rezervă" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1608 #, python-format msgid "Use by default" -msgstr "Foloseste implicit" +msgstr "Foloșeste implicit" #. module: web #. openerp-web @@ -2443,7 +2443,7 @@ msgstr "%s (%d)" #: code:addons/web/static/src/js/search.js:824 #, python-format msgid "triggered from search view" -msgstr "declansata din vizualizarea cautarii" +msgstr "declanșată din vizualizarea căutarii" #. module: web #. openerp-web @@ -2464,7 +2464,7 @@ msgstr "Widget:" #: code:addons/web/static/src/xml/base.xml:551 #, python-format msgid "Edit Action" -msgstr "Editeaza Actiunea" +msgstr "Editează acțiunea" #. module: web #. openerp-web @@ -2473,6 +2473,7 @@ msgstr "Editeaza Actiunea" msgid "" "This filter is global and will be removed for everybody if you continue." msgstr "" +"Acest filtru este global și va fi eliminat pentru toți dacă continuați." #. module: web #. openerp-web @@ -2486,35 +2487,35 @@ msgstr "ID:" #: code:addons/web/static/src/xml/base.xml:873 #, python-format msgid "Only you" -msgstr "Numai dumneavoastra" +msgstr "Numai dumneavoastră" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:552 #, python-format msgid "Edit Workflow" -msgstr "Editeaza Fluxul de lucru" +msgstr "Editează Fluxul de lucru" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1226 #, python-format msgid "Do you really want to delete this attachment ?" -msgstr "Sunteti sigur (a) ca doriti sa stergeti acest atasament ?" +msgstr "Sunteți sigur(ă) că doriți să ștergeți acest atașament ?" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:894 #, python-format msgid "Technical Translation" -msgstr "Traducere Tehnica" +msgstr "Traducere Tehnică" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:941 #, python-format msgid "Field:" -msgstr "Camp:" +msgstr "Câmp:" #. module: web #. openerp-web @@ -2528,7 +2529,7 @@ msgstr "Modificat de:" #: code:addons/web/static/src/js/chrome.js:515 #, python-format msgid "The database %s has been dropped" -msgstr "S-a renuntat la baza de date %s" +msgstr "S-a renunțat la baza de date %s" #. module: web #. openerp-web @@ -2550,7 +2551,7 @@ msgstr "Eroare Client" #: code:addons/web/static/src/js/views.js:1053 #, python-format msgid "Print" -msgstr "Printeaza" +msgstr "Printează" #. module: web #. openerp-web @@ -2565,8 +2566,8 @@ msgstr "Special:" msgid "" "The old password you provided is incorrect, your password was not changed." msgstr "" -"Parola veche pe care ati introdus-o este incorecta, parola dumneavoastra nu " -"a fost schimbata." +"Parola veche pe care ați introdus-o este incorectă, parola dumneavoastră nu " +"a fost schimbată." #. module: web #. openerp-web @@ -2580,21 +2581,21 @@ msgstr "Creare Utilizator:" #: code:addons/web/static/src/js/view_form.js:766 #, python-format msgid "Do you really want to delete this record?" -msgstr "Doriti intr-adevar sa stergeti aceasta inregistrare?" +msgstr "Doriți într-adevăr să ștergeți aceasta înregistrare?" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1394 #, python-format msgid "Save & Close" -msgstr "Salveaza & Inchide" +msgstr "Salvează & Închide" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2870 #, python-format msgid "Search More..." -msgstr "Cauta mai mult..." +msgstr "Caută mai mult..." #. module: web #. openerp-web @@ -2611,21 +2612,21 @@ msgstr "Parola" #: code:addons/web/static/src/xml/base.xml:1187 #, python-format msgid "Edit" -msgstr "Editeaza" +msgstr "Editează" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1704 #, python-format msgid "Remove" -msgstr "Elimina" +msgstr "Elimină" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1071 #, python-format msgid "Select date" -msgstr "Selecteaza data" +msgstr "Selectează data" #. module: web #. openerp-web @@ -2633,28 +2634,28 @@ msgstr "Selecteaza data" #: code:addons/web/static/src/js/search.js:1347 #, python-format msgid "Search %(field)s for: %(value)s" -msgstr "Cauta %(field)s pentru: %(value)s" +msgstr "Caută %(field)s pentru: %(value)s" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1286 #, python-format msgid "Delete this file" -msgstr "Sterge acest fisier" +msgstr "Șterge acest fișier" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:109 #, python-format msgid "Create Database" -msgstr "Creeaza Baza de date" +msgstr "Creează Baza de date" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:423 #, python-format msgid "GNU Affero General Public License" -msgstr "Licenta Publica Generala GNU Affero" +msgstr "Licență Publică Generală GNU Affero" #. module: web #. openerp-web @@ -2668,7 +2669,7 @@ msgstr "Separator:" #: code:addons/web/static/src/xml/base.xml:300 #, python-format msgid "Back to Login" -msgstr "Inapoi la Autentificare" +msgstr "Înapoi la Autentificare" #. module: web #. openerp-web diff --git a/addons/web_calendar/i18n/fi.po b/addons/web_calendar/i18n/fi.po index 716dcbed7cc..e7713ae1da5 100644 --- a/addons/web_calendar/i18n/fi.po +++ b/addons/web_calendar/i18n/fi.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-05 06:23+0000\n" +"X-Launchpad-Export-Date: 2013-04-06 06:36+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: web_calendar diff --git a/addons/web_calendar/i18n/ro.po b/addons/web_calendar/i18n/ro.po index e21098bb58b..e43adb55b9f 100644 --- a/addons/web_calendar/i18n/ro.po +++ b/addons/web_calendar/i18n/ro.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:39+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: Fekete Mihai \n" +"PO-Revision-Date: 2013-04-09 04:50+0000\n" +"Last-Translator: Dorin \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 05:10+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: web_calendar #. openerp-web @@ -36,14 +36,14 @@ msgstr "Detalii" #: code:addons/web_calendar/static/src/js/calendar.js:487 #, python-format msgid "Edit: %s" -msgstr "" +msgstr "Editează: %s" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:154 #, python-format msgid "Save" -msgstr "Salveaza" +msgstr "Salvează" #. module: web_calendar #. openerp-web @@ -58,21 +58,21 @@ msgstr "" #: code:addons/web_calendar/static/src/js/calendar.js:149 #, python-format msgid "Today" -msgstr "Astazi" +msgstr "Astăzi" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:151 #, python-format msgid "Week" -msgstr "Saptamana" +msgstr "Săptămână" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:163 #, python-format msgid "Full day" -msgstr "Ziua intreaga" +msgstr "Ziua întreagă" #. module: web_calendar #. openerp-web @@ -87,7 +87,7 @@ msgstr "Descriere" #: code:addons/web_calendar/static/src/js/calendar.js:160 #, python-format msgid "Event will be deleted permanently, are you sure?" -msgstr "Evenimentul va fi sters definitiv, sunteti sigur(a)?" +msgstr "Evenimentul va fi șters definitiv, sunteți sigur(ă)?" #. module: web_calendar #. openerp-web @@ -116,35 +116,35 @@ msgstr "Ziua" #: code:addons/web_calendar/static/src/js/calendar.js:157 #, python-format msgid "Edit" -msgstr "Editeaza" +msgstr "Editează" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:169 #, python-format msgid "Enabled" -msgstr "Activat(a)" +msgstr "Activat(ă)" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:166 #, python-format msgid "Do you want to edit the whole set of repeated events?" -msgstr "Doriti sa editati intregul set de evenimente repetate?" +msgstr "Doriți să editați întregul set de evenimente repetate?" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:82 #, python-format msgid "Filter" -msgstr "Filtreaza" +msgstr "Filtrează" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:167 #, python-format msgid "Repeat event" -msgstr "Repeta evenimentul" +msgstr "Repetă evenimentul" #. module: web_calendar #. openerp-web @@ -159,7 +159,7 @@ msgstr "Agenda" #: code:addons/web_calendar/static/src/js/calendar.js:450 #, python-format msgid "Create: %s" -msgstr "" +msgstr "Creează: %s" #. module: web_calendar #. openerp-web @@ -173,7 +173,7 @@ msgstr "Perioada" #: code:addons/web_calendar/static/src/js/calendar.js:158 #, python-format msgid "Delete" -msgstr "Stergeti" +msgstr "Ștergeți" #. module: web_calendar #. openerp-web @@ -187,7 +187,7 @@ msgstr "Luna" #: code:addons/web_calendar/static/src/js/calendar.js:168 #, python-format msgid "Disabled" -msgstr "Dezactivat(a)" +msgstr "Dezactivat(ă)" #. module: web_calendar #. openerp-web @@ -201,7 +201,7 @@ msgstr "Anul" #: code:addons/web_calendar/static/src/js/calendar.js:155 #, python-format msgid "Cancel" -msgstr "Anulati" +msgstr "Anulați" #. module: web_calendar #. openerp-web diff --git a/addons/web_diagram/i18n/fi.po b/addons/web_diagram/i18n/fi.po index bd02ca41249..958d2701733 100644 --- a/addons/web_diagram/i18n/fi.po +++ b/addons/web_diagram/i18n/fi.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-05 06:23+0000\n" +"X-Launchpad-Export-Date: 2013-04-06 06:36+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: web_diagram diff --git a/addons/web_kanban/i18n/ro.po b/addons/web_kanban/i18n/ro.po index ba5d5daeb47..953dfe6bb41 100644 --- a/addons/web_kanban/i18n/ro.po +++ b/addons/web_kanban/i18n/ro.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:39+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: Fekete Mihai \n" +"PO-Revision-Date: 2013-04-09 04:34+0000\n" +"Last-Translator: Dorin \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 05:10+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: web_kanban #. openerp-web @@ -29,7 +29,7 @@ msgstr "Editează coloana" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:80 #, python-format msgid "Show more... (" -msgstr "Afiseaza mai mult... (" +msgstr "Afișează mai mult... (" #. module: web_kanban #. openerp-web @@ -43,21 +43,21 @@ msgstr "Kanban" #: code:addons/web_kanban/static/src/js/kanban.js:539 #, python-format msgid "Undefined" -msgstr "Nedefinit(a)" +msgstr "Nedefinit(ă)" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:705 #, python-format msgid "Are you sure to remove this column ?" -msgstr "Sunteţi sigur(a) că vreti sa eliminati această coloană ?" +msgstr "Sunteți sigur(ă) că vreți să eliminați această coloană ?" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:47 #, python-format msgid "Edit" -msgstr "Editeaza" +msgstr "Editează" #. module: web_kanban #. openerp-web @@ -100,14 +100,14 @@ msgstr "Adaugă" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:35 #, python-format msgid "Quick create" -msgstr "Creare rapida" +msgstr "Creare rapidă" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:918 #, python-format msgid "Are you sure you want to delete this record ?" -msgstr "Sunteti sigur(a) ca doriti sa stergeti aceasta inregistrare?" +msgstr "Sunteți sigur(ă) ca doriți să ștergeți această înregistrare?" #. module: web_kanban #. openerp-web @@ -121,21 +121,21 @@ msgstr "Depliază" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:99 #, python-format msgid "Cancel" -msgstr "Anuleaza" +msgstr "Anulează" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:80 #, python-format msgid "remaining)" -msgstr "ceea ce a ramas)" +msgstr "ceea ce a rămas)" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:421 #, python-format msgid "An error has occured while moving the record to this group: " -msgstr "" +msgstr "A apărut o eroare în timp ce se muta înregistrarea în acest grup : " #. module: web_kanban #. openerp-web diff --git a/addons/web_view_editor/i18n/ro.po b/addons/web_view_editor/i18n/ro.po index b2b1708ebc6..43b0d2abbe5 100644 --- a/addons/web_view_editor/i18n/ro.po +++ b/addons/web_view_editor/i18n/ro.po @@ -8,42 +8,42 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:39+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: Fekete Mihai \n" +"PO-Revision-Date: 2013-04-09 04:30+0000\n" +"Last-Translator: Dorin \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 05:10+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:164 #, python-format msgid "The following fields are invalid :" -msgstr "Urmatoarele campuri sunt nevalide:" +msgstr "Următoarele câmpuri sunt nevalide:" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:63 #, python-format msgid "Create" -msgstr "Creati" +msgstr "Creați" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:986 #, python-format msgid "New Field" -msgstr "Camp nou" +msgstr "Câmp nou" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:386 #, python-format msgid "Do you really wants to create an inherited view here?" -msgstr "Doriti intr-adevar sa creati o vizualizare derivata aici?" +msgstr "Doriți într-adevăr sa creați o vizualizare derivată aici?" #. module: web_view_editor #. openerp-web @@ -57,21 +57,21 @@ msgstr "Previzualizare" #: code:addons/web_view_editor/static/src/js/view_editor.js:183 #, python-format msgid "Do you really want to remove this view?" -msgstr "Doriti intr-adevar sa eliminati aceasta vizualizare?" +msgstr "Doriți într-adevăr să eliminați această vizualizare?" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:90 #, python-format msgid "Save" -msgstr "Salvati" +msgstr "Salvați" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:393 #, python-format msgid "Select an element" -msgstr "Selectati un element" +msgstr "Selectați un element" #. module: web_view_editor #. openerp-web @@ -86,21 +86,21 @@ msgstr "Actualizare" #: code:addons/web_view_editor/static/src/js/view_editor.js:263 #, python-format msgid "Please select view in list :" -msgstr "Va rugam sa selectati vizualizare in lista :" +msgstr "Vă rugăm să selectați vizualizare în listă :" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:37 #, python-format msgid "Manage Views (%s)" -msgstr "Gestionati Vizualizarile (%s)" +msgstr "Gestionați Vizualizările (%s)" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:13 #, python-format msgid "Manage Views" -msgstr "Gestionati Vizualizarile" +msgstr "Gestionați Vizualizările" #. module: web_view_editor #. openerp-web @@ -108,42 +108,42 @@ msgstr "Gestionati Vizualizarile" #: code:addons/web_view_editor/static/src/js/view_editor.js:951 #, python-format msgid "Properties" -msgstr "Proprietati" +msgstr "Proprietăți" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:64 #, python-format msgid "Edit" -msgstr "Editati" +msgstr "Editați" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:14 #, python-format msgid "Could not find current view declaration" -msgstr "Nu s-a gasit declaratia vizualizarii curente" +msgstr "Nu s-a găsit declarația vizualizării curente" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:382 #, python-format msgid "Inherited View" -msgstr "Vizualizare mostenita" +msgstr "Vizualizare moștenită" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:65 #, python-format msgid "Remove" -msgstr "Elimina" +msgstr "Elimină" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:516 #, python-format msgid "Do you really want to remove this node?" -msgstr "Sunteti sigur(a) ca doriti sa eliminati acest nod?" +msgstr "Sunteți sigur(a) că doriți să eliminați acest nod?" #. module: web_view_editor #. openerp-web @@ -166,7 +166,7 @@ msgstr "Editor Vizualizare %d - %s" #: code:addons/web_view_editor/static/src/js/view_editor.js:974 #, python-format msgid "Cancel" -msgstr "Anulati" +msgstr "Anulați" #. module: web_view_editor #. openerp-web @@ -174,11 +174,11 @@ msgstr "Anulati" #: code:addons/web_view_editor/static/src/js/view_editor.js:413 #, python-format msgid "Close" -msgstr "Inchideti" +msgstr "Închideți" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:88 #, python-format msgid "Create a view (%s)" -msgstr "Creati o vizualizare (%s)" +msgstr "Creați o vizualizare (%s)" diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index a7c72163076..973b207f819 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:36+0000\n" -"PO-Revision-Date: 2013-03-27 16:01+0000\n" -"Last-Translator: Marc Cassuto (SFL) \n" +"PO-Revision-Date: 2013-04-09 01:29+0000\n" +"Last-Translator: Jopa \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:21+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-09 05:58+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -1348,6 +1348,36 @@ msgid "" "* Planned Revenue by Stage and User (graph)\n" "* Opportunities by Stage (graph)\n" msgstr "" +"\n" +"Le module OpenERP de gestion de la relation client (CRM)\n" +"=============================================\n" +"\n" +"Cette application permet aux utilisateurs de gérer efficacement et " +"intelligemment leurs pistes, opportunités, réunions et appels " +"téléphoniques.\n" +"\n" +"Elle gère les tâches clés comme la communication, l'identification, les " +"assignations, les résolutions et les notifications.\n" +"\n" +"OpenERP assure que toutes les demandes sont suivis par les utilisateurs, les " +"clients et les fournisseurs. Il permet d'envoyer automatiquement des " +"rappels, d'escalader des requêtes, de lancer des actions spécifiques et de " +"nombreuses autres selon les règles de l'entreprise.\n" +"\n" +"Le grand avantage de ce système est que les utilisateurs n'ont rien à faire " +"de spécial. Le module CRM dispose d'une passerelle de courriel permettant de " +"synchroniser les courriels reçus et OpenERP. De cette façon, les " +"utilisateurs peuvent simplement envoyer des courriels au système de suivi " +"des demandes.\n" +"\n" +"OpenERP s'occupera de remercier les utilisateurs de leur message, de diriger " +"cette demande à l'équipe appropriée et de s'assurer que toute les " +"communications futures seront rangées à la bonne place.\n" +"\n" +"\n" +"Le tableau bord de cette application inclut:\n" +"* les revenus prévus par étape de vente et par utilisateur (graphique);\n" +"* les opportunités par étape de vente (graphique).\n" #. module: base #: selection:base.language.export,format:0 @@ -1445,6 +1475,50 @@ msgid "" "come with any additional paid permission for online use of 'private " "modules'.\n" msgstr "" +"\n" +"Module de base pour la localisation Brésilienne\n" +"=====================================\n" +"\n" +"Ce module fournit :\n" +"* a charte de compte générique brésilienne ;\n" +"* les taxes brésiliennes telles que :\n" +" * IPI,\n" +" * ICMS,\n" +" * PIS,\n" +" * COFINS,\n" +" * ISS,\n" +" * IR,\n" +" * IRPJ,\n" +" * CSLL.\n" +"\n" +"Le champs tax_discount a aussi été ajouté dans les objets " +"account.tax.template et account.tax\n" +"pour permettre le calcul correct de certaines TVA brésiliennes telle que " +"l'ICMS. L'assistant de création\n" +"de la charte de compte a été étendu afin de prendre en compte correctement " +"ces nouvelles données.\n" +"\n" +"Il est important de noter cependant que plusieurs fonctionnalités sont " +"manquant dans ce module\n" +"pour permettre d'utiliser OpenERP correctement au Brésil. Ces " +"fonctionnalités (tel que la facturation \n" +"fiscale électronique, qui est déjà opérationnelle) sont apportées par plus " +"de 15 modules du projet\n" +"Launchpad de localisation brésilienne https://launchpad.net/openerp.pt-br-" +"localiz et leurs dépendances \n" +"dans la branche extra-addons. Ces modules visent à ne pas briser la " +"remarquable modularité d'OpenERP; \n" +"c'est pour cela qu'ils sont petits mais nombreux. Une des raisons de " +"maintenir ces modules à part est que\n" +"les responsables de la localisation ont besoin des droits de commit afin de " +"rester agile et pouvoir terminer\n" +"cette localisation; en effet, des compagnies financent les requis légaux " +"restants (comme les livres fiscaux, \n" +"la comptabilité SPED, la fiscalité SPED et le PAF ECF encore manquants en " +"date de Septembre 2011).\n" +"Ces modules sont strictement distribués sous licence AGPL v3 et aujourd'hui " +"ne permettent pas des droits\n" +"payants pour une utilisation en ligne de \"modules privés\".\n" #. module: base #: code:addons/orm.py:406 @@ -1511,7 +1585,7 @@ msgstr "Corée du Sud" #. module: base #: model:ir.module.module,description:base.module_l10n_si msgid "Kontni načrt za gospodarske družbe" -msgstr "" +msgstr "Le plan comptable pour les entreprises" #. module: base #: code:addons/orm.py:4918 @@ -1891,6 +1965,16 @@ msgid "" " * the main taxes used in Luxembourg\n" " * default fiscal position for local, intracom, extracom " msgstr "" +"\n" +"Ceci est le module de base pour gérer la charte de comptes pour le " +"Luxembourg.\n" +"===============================================================\n" +"\n" +" * La charte de compte officielle du Luxembourg (loi de Juin 2009 et " +"charte & taxes de 2011).\n" +" * La charte des codes de taxe pour le Luxembourg.\n" +" * Les taxes principales utilisées au Luxembourg.\n" +" * Les positions fiscales par défaut : local, intracom et extracom " #. module: base #: code:addons/base/module/wizard/base_update_translations.py:39 @@ -2753,7 +2837,7 @@ msgstr "" #. module: base #: field:change.password.user,new_passwd:0 msgid "New Password" -msgstr "" +msgstr "Nouveau mot de passe" #. module: base #: model:ir.actions.act_window,help:base.action_ui_view @@ -2855,6 +2939,35 @@ msgid "" "\n" " " msgstr "" +"\n" +" \n" +"Localisation belge pour les factures clients et fournisseurs (pré-requis : " +"account_coda) :\n" +"=============================================================================" +"=============\n" +" - Renomme la description du champ 'reference' par 'Communication'\n" +" - Ajoute le support pour la Communication Belge Structurée\n" +"\n" +"Une Communication Structurée peut être gérénée automatiquement sur les " +"factures clients en fonction des algorithmes suivants :\n" +"-----------------------------------------------------------------------------" +"-------------------------------------------------\n" +" 1) Aléatoire : +++RRR/RRRR/RRRDD+++\n" +" **R..R =** Nombre aléatoir, **DD =** Vérification du nombre\n" +" 2) Date : +++DOY/YEAR/SSSDD+++\n" +" **DOY =** Jour de l'année, **SSS =** Séquence, **DD =** Vérification " +"du nombre\n" +" 3) Référence du client +++RRR/RRRR/SSSDDD+++\n" +" **R..R =** Référence du client sans caractère numérique, **SSS =** " +"Séquence, **DD =** Vérification du nombre \n" +" \n" +"Le type de Communication Structurée préféré et l'Algorithme associé peuvent " +"être\n" +"spécifiés dans les fiches des partenaires. Une Communication Structurée " +"'aléatoire' sera\n" +"générée si aucun algorithme n'est spécifié sur la fiche du partenaire. \n" +"\n" +" " #. module: base #: model:res.country,name:base.pl @@ -2995,6 +3108,30 @@ msgid "" "Print product labels with barcode.\n" " " msgstr "" +"\n" +"Ceci est le module pour gérer les produits et les listes de prix dans " +"OpenERP.\n" +"============================================================\n" +"\n" +"Les produits peuvent avoir des variantes, différentes méthodes de calcul du " +"prix, les informations des fournisseurs, différentes méthode de lancement de " +"la fabrication (sur stock ou sur commande), différentes unités de mesures, " +"définir le conditionnement et les propriétés.\n" +"\n" +"Les listes de prix permettent :\n" +"-----------------------------------------\n" +" * niveaux multiples de réductions (par produit, catégories ou " +"quantités);\n" +" * calculer le prix en fonction de différents critères :\n" +" * une autre liste de prix,\n" +" * un prix de revient,\n" +" * un prix de liste,\n" +" * un prix fournisseur.\n" +"\n" +"Les listes de prix sont définies par produit et/ou partenaires.\n" +"\n" +"Impression des étiquettes de produits avec les code-barres.\n" +" " #. module: base #: model:ir.module.module,description:base.module_account_analytic_default @@ -3170,6 +3307,17 @@ msgid "" " * Files by Partner (graph)\n" " * Files Size by Month (graph)\n" msgstr "" +"\n" +"Ceci est un système complet de gestion de documents.\n" +"===========================================\n" +" * Authentification utilisateur\n" +" * Indexation de documents :- Les fichiers .pptx et .docx ne sont pas " +"pris en charge pour la plate-fome Windows.\n" +" * Sont inclus dans le tableau de bord des documents : \n" +" * Nouveaux fichiers (liste)\n" +" * Fichiers par type de ressource (graphique)\n" +" * Fichiers par partenaire (graphique)\n" +" * Taille des fichiers par mois (graphique)\n" #. module: base #: view:ir.actions.report.xml:0 @@ -3219,6 +3367,40 @@ msgid "" "* Monthly Turnover (Graph)\n" " " msgstr "" +"\n" +"Demandes de prix de vente et bon de commandes\n" +"=======================================\n" +"\n" +"Cette application permet de gérer les objectifs de ventes d'une façon " +"efficace et efficiente en gardant trace de tous les bons de commande y " +"compris leur historique.\n" +"\n" +"Elle permet de gérer le processus de vente au complet :\n" +" Devis -> bon de commande -> facture\n" +"\n" +"Paramètres (seulement si la gestion d'entrepôt est installée)\n" +"-----------------------------------------------------------------------------" +"------\n" +"\n" +"Si vous avez aussi installé l'application de gestion d'entrepôt, vous " +"pourrez gérer les paramètres suivants :\n" +"* expédition : choix de livrer en une fois ou de façon partielle;\n" +"* facturation : choix des méthodes de facturation;\n" +"* Incoterms : termes des échanges commerciaux à l'internationnal.\n" +"\n" +"Vous pouvez choisir des méthodes flexibles de facturation :\n" +"* à la demande : les factures sont crées manuellement à partir des bons de " +"commandes lorsque désiré;\n" +"* sur bon de livraison : les factures sont générées automatiquement à la " +"collecte (livraison);\n" +"* avant livraison : une facture brouillon est créée et doit être payée avant " +"livraison.\n" +"\n" +"Le tableau de bord des gestionnaires de vente inclut :\n" +"-------------------------------------------------------------------------\n" +"* mes devis ;\n" +"* le taux de roulement mensuel (graphique).\n" +" " #. module: base #: field:ir.actions.act_window,res_id:0 @@ -3268,6 +3450,15 @@ msgid "" "\n" " " msgstr "" +"\n" +"Perou - Charte de compte et localisation des taxes (selon PCGE 2010).\n" +"=======================================================\n" +"\n" +"Comptabilité péruvienne et taxes conformément aux dispositions applicables " +"de la\n" +"SUNAT 2011 (PCGE 2010).\n" +"\n" +" " #. module: base #: view:ir.actions.server:0 @@ -3317,6 +3508,15 @@ msgid "" "This module is currently not compatible with the ``user_ldap`` module and\n" "will disable LDAP authentication completely if installed at the same time.\n" msgstr "" +"\n" +"Mots de passe chiffrés\n" +"==================\n" +"\n" +"Interaction avec l'authentification LDAP :\n" +"--------------------------------------------------------\n" +"Ce module est actuellement incompatible avec le module user_ldap et " +"désactivera complètement\n" +"l'authentification LDAP si il est installé en même temps.\n" #. module: base #: model:res.groups,name:base.group_hr_manager @@ -3373,6 +3573,30 @@ msgid "" "* Purchase Analysis\n" " " msgstr "" +"\n" +"Gérer facilement l'approvisionnement par les bons d'achats\n" +"===============================================\n" +"\n" +"La gestion des achats vous permet de suivre les devis fournisseurs et les " +"convertir en bons d'achat si nécessaire.\n" +"OpenERP a plusieurs méthodes de suivis des factures et garder trace des " +"biens commandés. OpenERP permet de gérer les livraisons partielle, vous " +"permettant de garder traces des biens qui sont encore à livrer et vous " +"permettre d'envoyer des rappels automatiquement.\n" +"\n" +"Les règles de gestion des approvisionnement d'OpenERP permettent au système " +"de générer automatiquement les brouillons des bons d'achat; vous pouvez " +"aussi le configurer afin d'exécuter un processus simple entièrement dirigé " +"par les besoins de production.\n" +"\n" +"Le tableau de bord et rapports de ce module incluent :\n" +"---------------------------------------------------------------------------\n" +"* les demandes de cotations ;\n" +"* les bons d'achat en attente d'approbation ;\n" +"* les achats mensuels par catégories ;\n" +"* l'analyse des réceptions ;\n" +"* l'analyse des achats.\n" +" " #. module: base #: model:ir.model,name:base.model_ir_actions_act_window_close @@ -3405,6 +3629,19 @@ msgid "" " * Unlimited \"Group By\" levels (not stacked), two cross level analysis " "(stacked)\n" msgstr "" +"\n" +"Vues graphiques pour le client Web\n" +"============================\n" +"\n" +" * Analyse une vue mais permet le changement dynamique de la " +"représentation.\n" +" * Types de graphiques : tarte, lignes, surfaces, barres, radars.\n" +" * Empilage ou non pour les graphiques en surfaces et en barres.\n" +" * Légendes : au dessus, à l'intérieur (en haut/à gauche), cachées.\n" +" * Fonctionnalités : download au format PNG ou CSV, parcourir la grille " +"de données, changer l'orientation.\n" +" * Niveaux regroupement (non-empilés) illimités, 2 niveaux croisés " +"d'analyse (empilés).\n" #. module: base #: view:res.groups:0 @@ -3440,6 +3677,20 @@ msgid "" " * Salary Maj, ONSS, Withholding Tax, Child Allowance, ...\n" " " msgstr "" +"\n" +"Règles de paie belges.\n" +"=================\n" +"\n" +" * Détails des employés.\n" +" * Contrats des employés.\n" +" * Contrats basés sur les passeports.\n" +" * Indemnités et retenues.\n" +" * Permet de configurer le salaire de base, brut ou net.\n" +" * Fiche de paie des employés.\n" +" * Enregistrement de la paie mensuellement.\n" +" * Intégré avec la gestion des congés.\n" +" * Salaire MAJ, ONSS, retenue d'impôt, allocation enfant...\n" +" " #. module: base #: code:addons/base/ir/ir_fields.py:174 @@ -3483,6 +3734,24 @@ msgid "" "purchase price and fixed product standard price are booked on a separate \n" "account." msgstr "" +"\n" +"Support de la méthodologie comptable anglo-saxonne en changeant la logique " +"comptable des mouvements de stock.\n" +"=============================================================================" +"===============\n" +"\n" +"La différence entre la comptabilité anglo-saxonne et la comptabilité " +"continentale est la gestion du coût des biens vendus versus le coût de " +"vente. La comptabilité anglo-saxonne prend le coût lorsque la facture est " +"créée alors que la comptabilité continentale le prendra lorsque les biens " +"sont expédiés.\n" +"\n" +"Ce module ajoute cette fonctionnalité en utilisant un compte intermédiaire " +"afin d'enregistrer la valeur des biens expédiés et fera la contrepartie de " +"compte intermédiaire lorsque la facture sera créée afin de transférer ce " +"montant dans le compte client ou le compte fournisseur. Deuxièmement, les " +"différences entre le prix réel d'achat et le prix standard fixe des produits " +"sont enregistrés dans un autre compte." #. module: base #: model:res.country,name:base.si @@ -4204,6 +4473,39 @@ msgid "" "* Work Order Analysis\n" " " msgstr "" +"\n" +"Module de gestion de production dans OpenERP\n" +"======================================\n" +"\n" +"Ce module vous permet de couvrir la planification, les ordres, les stocks, " +"la fabrication et l'assemblage de produits à partir de matières premières et " +"de composants. Il gère la consommation et la production de produit selon " +"leur nomenclature et les opérations nécessaires en machines, outils et " +"ressources humaines en accord avec les gammes opératoires.\n" +"\n" +"Il supporte l'intégration complète et la planification des biens stockables, " +"consommables ou des services. Les services sont complètement intégrés avec " +"le reste du logiciel. Par exemple, vous pouvez définir un service sous-" +"contracté dans une nomenclature afin d'automatiquement acheter sur commande " +"l’assemblage de votre production.\n" +"\n" +"Fonctionnalités clés\n" +"---------------------------\n" +"* Fabrication sur stock ou sur commande.\n" +"* Plusieurs niveaux de nomenclature, sans limite.\n" +"* Plusieurs niveaux de gammes opératoires, sans limite.\n" +"* Gamme opératoire et poste de charge intégrés avec la comptabilité " +"analytique.\n" +"* Calcul périodique des besoins.\n" +"* Permet de naviguer les nomenclatures dans une structure complète qui " +"inclut les nomenclature enfants et fantômes.\n" +"\n" +"Tableau de bord et rapport du module incluent :\n" +"------------------------------------------------------------------\n" +"* les approvisionnements en exception (graphique) ;\n" +"* variation des stocks (graphique) ;\n" +"* analyse des ordres de travail ;\n" +" " #. module: base #: view:ir.attachment:0 @@ -4233,6 +4535,14 @@ msgid "" "easily\n" "keep track and order all your purchase orders.\n" msgstr "" +"\n" +"Ce module permet la gestion des demandes d'achats.\n" +"=========================================\n" +"\n" +"Lorsque un ordre d'achat est créé, vous avez maintenant la possibilité de " +"sauver la demande associée.\n" +"Le nouvel objet regroupera et vous permettra de facilement garder trace et " +"commander vos ordres d'achat.\n" #. module: base #: help:ir.mail_server,smtp_host:0 @@ -4362,7 +4672,7 @@ msgstr "Récursivité détectée" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_et msgid "Ethiopia - Accounting" -msgstr "" +msgstr "Ethiopie - Comptabilité" #. module: base #: code:addons/base/module/module.py:366 @@ -4392,6 +4702,24 @@ msgid "" "\n" " " msgstr "" +"\n" +"Ce module permet de définir la fonction par défaut d'un utilisateur " +"spécifique sur un compte donné.\n" +"=============================================================================" +"==\n" +"\n" +"Il est le plus souvent utilisé lorsque un utilisateur saisi sa feuille de " +"temps : les données sont extraites\n" +"et les champs remplis automatiquement. Mais, il est encore possible de " +"modifier ces valeurs.\n" +"\n" +"Évidemment, si aucune donnée n'a été enregistré sur ce compte, la valeur par " +"défaut est donnée par \n" +"défaut, comme d'habitude, par les données de l'employé; ainsi, ce module est " +"parfaitement compatible\n" +"avec les anciennes configurations.\n" +"\n" +" " #. module: base #: view:ir.model:0 @@ -4407,7 +4735,7 @@ msgstr "Togo" #: field:ir.actions.act_window,res_model:0 #: field:ir.actions.client,res_model:0 msgid "Destination Model" -msgstr "" +msgstr "Modèle de destination" #. module: base #: selection:ir.sequence,implementation:0 @@ -4486,6 +4814,27 @@ msgid "" " payslip interface, but not in the payslip report\n" " " msgstr "" +"\n" +"Règle de gestion de la paie française.\n" +"=============================\n" +"\n" +" * Configuration du module hr_payroll pour la localisation française.\n" +" * Toutes les règles de contributions principales pour les fiches de paie " +"française, pour le personnel cadre et non-cadre.\n" +" * Nouveau rapport de fiche de paie.\n" +"\n" +"Reste à faire :\n" +"-------------------\n" +" * intégration avec le module de gestion des congés pour les indemnités " +"et retenues ;\n" +" * intégration avec le module hr_payroll_account pour l'automatisation " +"des écritures comptables de la fiche de paie ;\n" +" * continuer l'intégration des contributions : seules les contributions " +"principales sont aujourd'hui implémentées ;\n" +" * refaire le rapport avec Webkit ;\n" +" * les \"payslip.line\" avec l'attribut \"appears_in_payslip\" avec une " +"valeur False devrait apparaître dans l'interface mais pas dans le rapport.\n" +" " #. module: base #: model:res.country,name:base.pm @@ -4528,7 +4877,7 @@ msgstr "" #. module: base #: model:res.country,name:base.je msgid "Jersey" -msgstr "" +msgstr "Maillot" #. module: base #: model:ir.model,name:base.model_ir_translation @@ -4710,6 +5059,41 @@ msgid "" ".. _link: http://puc.com.co/normatividad/\n" " " msgstr "" +"\n" +"Charte de comptes pour la Colombie\n" +"============================\n" +"\n" +"Le code source de cette charte de compte est ici_.\n" +"\n" +"Toute la documentation disponible sur ce site web est dans ce module afin " +"d'être sûr qu'à l'ouverture\n" +"qu'à l'ouverture d'OpenERP toute l'information nécessaire à la gestion de la " +"comptabilité en Colombie\n" +"soit présente.\n" +"\n" +"La loi sur laquelle s'appuie ce module est dans cet autre lien_.\n" +"\n" +"La comptabilité colombienne est immédiatement utilisable dans OpenERP après " +"l'installation de ce module.\n" +"\n" +"Nous recommandons d'installer le module account_anglo_saxon afin d'avoir la " +"comptabilisation des coûts\n" +"correctement configurés dans les factures sortantes.\n" +"\n" +"Après installation de ce module, l'assistant de configuration pour la " +"comptabilité est démarré :\n" +" * nous avons un modèle de compte qui peut aider à générer la charte " +"comptable ;\n" +" * dans cet assistant, il vous sera demandé d'entrer le nom de la " +"compagnie,\n" +" le modèle de charte à suivre, le nombre de chiffres à générer, le " +"code de votre compte\n" +" et le compte en banque, la devise utilisée pour créer les journaux.\n" +"\n" +"\n" +".. _ici : http://puc.com.co/\n" +".. _lien : http://puc.com.co/normatividad/\n" +" " #. module: base #: model:ir.module.module,description:base.module_account_bank_statement_extensions @@ -4733,6 +5117,27 @@ msgid "" " and iban account numbers\n" " " msgstr "" +"\n" +"Module qui étend l'objet standard account_bank_statement_line pour le " +"support avancé des services bancaires en ligne.\n" +"=============================================================================" +"=================\n" +"\n" +"Ce module ajoute :\n" +"-------------------------\n" +"\n" +" * date de valeur ;\n" +" * paiements en lots ;\n" +" * traçabilité des changements sur les lignes des relevés de banque ;\n" +" * vues des lignes des relevés de banque ;\n" +" * rapport des soldes des relevés de banque ;\n" +" * amélioration de la performance lors de l'import électronique des " +"relevés de banques\n" +" (par l'attribut de contexte 'ebanking_import') ;\n" +" * name_search sur la table res.partner.bank amélioré pour permettre la " +"recherche sur\n" +" la banque et le numéro de compte IBAN.\n" +" " #. module: base #: selection:ir.module.module,state:0 @@ -4768,7 +5173,7 @@ msgstr "SARL" #. module: base #: model:ir.actions.server,name:base.action_run_ir_action_todo msgid "Run Remaining Action Todo" -msgstr "" +msgstr "Exécuter les actions restantes à faire" #. module: base #: field:res.partner,ean13:0 @@ -4964,7 +5369,7 @@ msgstr "Par défaut" #. module: base #: model:ir.module.module,summary:base.module_lunch msgid "Lunch Order, Meal, Food" -msgstr "" +msgstr "Commande de déjeuner, repas, nourriture" #. module: base #: view:ir.model.fields:0 @@ -5011,6 +5416,26 @@ msgid "" "very handy when used in combination with the module 'share'.\n" " " msgstr "" +"\n" +"Personnalise l'accès à votre base de données OpenERP aux utilisateurs " +"externes par la création de portails.\n" +"=============================================================================" +"=======\n" +"Un portail définit un menu utilisateur spécifique et des droits d'accès pour " +"ses membres.\n" +"Ce menu peut être vu par les membres du portail, les utilisateurs anonymes " +"et n'importe\n" +"quel autre utilisateur qui a accès aux caractéristiques techniques " +"(l'administrateur par exemple).\n" +"Aussi, chaque membre du portail est lié à un partenaire spécifique.\n" +"\n" +"Le module associe aussi les groupes d'utilisateurs aux utilisateurs du " +"portail (ajouter un groupe\n" +"dans un portail l'ajoute automatiquement aux utilisateurs du portail, etc). " +"Cette fonctionnalité\n" +"est très pratique lorsqu'elle est utilisée conjointement avec le module " +"'share'.\n" +" " #. module: base #: field:multi_company.default,expression:0 @@ -5181,6 +5606,9 @@ msgid "" "==========================\n" "\n" msgstr "" +"\n" +"Vue agenda d'OpenERP Web\n" +"\n" #. module: base #: selection:base.language.install,lang:0 @@ -5195,7 +5623,7 @@ msgstr "Type de Séquence" #. module: base #: view:base.language.export:0 msgid "Unicode/UTF-8" -msgstr "" +msgstr "Unicode/UTF-8" #. module: base #: selection:base.language.install,lang:0 @@ -5229,6 +5657,18 @@ msgid "" "then select the test \n" "and print the report from Print button in header area.\n" msgstr "" +"\n" +"Validations sur la comptabilité.\n" +"========================\n" +"Avec ce module vous pouvez vérifier manuellement les consistances et les " +"inconsistances du module comptable à partir du menu\n" +"Suivi d'activité/Comptabilité/Tests comptables.\n" +"\n" +"Vous pouvez écrire une requête afin de créer des tests de consistances et " +"vous obtiendrez le résultat de ce test\n" +"au format PDF lequel sera accessible par le menu Suivi d'activité -> Tests " +"comptables, puis sélectionner le test et\n" +"imprimer le rapport depuis le bouton Imprimer dans la section d'en-tête.\n" #. module: base #: field:ir.module.module,license:0 @@ -5278,6 +5718,23 @@ msgid "" "for\n" "this event.\n" msgstr "" +"\n" +"Créer des inscriptions avec les bons de commande.\n" +"========================================\n" +"\n" +"Ce module vous permet d'automatiser et de lier les créations d'inscription " +"avec\n" +"votre processus de vente et donc, de permettre la facturation de ces " +"inscriptions.\n" +"\n" +"Il définit un nouveau type de produit de type service qui vous permet de " +"choisir\n" +"une catégorie d’événement associée. Lorsque vous créez un bon de commande\n" +"pour ce produit, vous avez la possibilité de choisir un événement de cette " +"catégorie\n" +"et lorsque ce bon de commande est confirmé, l'inscription à cet événement " +"est\n" +"automatiquement créée.\n" #. module: base #: model:ir.module.module,description:base.module_sale_order_dates @@ -5292,6 +5749,14 @@ msgid "" " * Commitment Date\n" " * Effective Date\n" msgstr "" +"\n" +"Ajouter des dates supplémentaires aux bons de commande.\n" +"==============================================\n" +"\n" +"Vous pouvez ajouter les dates suivantes aux bons de commande:\n" +" * date requise ;\n" +" * date d'engagement ;\n" +" * date effective.\n" #. module: base #: field:ir.actions.server,srcmodel_id:0 @@ -5328,7 +5793,7 @@ msgstr "Vue" #: code:addons/base/ir/ir_fields.py:146 #, python-format msgid "no" -msgstr "" +msgstr "non" #. module: base #: model:ir.module.module,description:base.module_crm_partner_assign @@ -5348,6 +5813,21 @@ msgid "" "You can also use the geolocalization without using the GPS coordinates.\n" " " msgstr "" +"\n" +"Ceci est le module utilisé par OpenERP SA pour rediriger les clients vers " +"ses partenaires, en fonction de la géolocalisation.\n" +"=============================================================================" +"==================\n" +"\n" +"Vous pouvez géolocaliser vos opportunités en utilisant ce module.\n" +"\n" +"Utilise la géolocalisation pour assigner des opportunités à des " +"partenaires.\n" +"Détermine les coordonnées GPS en fonction de l'adresse du partenaire.\n" +"\n" +"Le partenaire le plus approprié peut être assigné.\n" +"La géolocalisation peut être utilisée aussi sans les coordonnées GPS.\n" +" " #. module: base #: view:ir.actions.act_window:0 @@ -5362,7 +5842,7 @@ msgstr "Guinée Équatoriale" #. module: base #: model:ir.module.module,shortdesc:base.module_web_api msgid "OpenERP Web API" -msgstr "" +msgstr "API Web OpenERP" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_rib @@ -5406,6 +5886,49 @@ msgid "" "Accounts in OpenERP: the first with the type 'RIB', the second with the type " "'IBAN'. \n" msgstr "" +"\n" +"Ce module permet aux utilisateurs de spécifier les coordonnées bancaires des " +"partenaires au format RIB (standard français pour les informations des " +"comptes bancaires).\n" +"=============================================================================" +"=======================================================\n" +"\n" +"Le RIB des comptes bancaires peut être entré dans l'onglet \"Comptabilité\" " +"du formulaire Partenaire en spécifiant le type de compte \"RIB\".\n" +"\n" +"Les 4 champs standards du RIB deviennent alors obligatoires :\n" +"-----------------------------------------------------------------------------" +"-------\n" +" * code de banque ;\n" +" * code de succursale ;\n" +" * numéro de compte ;\n" +" * clé RIB.\n" +"\n" +"Par mesure de sécurité, OpenERP vérifiera la clé RIB lorsque celle-ci est " +"sauvée \n" +"et refusera d'enregistrer ces données si la clé est incorrecte. Gardez à " +"l'esprit\n" +"que cette vérification n'est effectuée que lorsque l'utilisateur presse le " +"bouton\n" +"\"Enregistrer\", sur le formulaire du partenaire par exemple. Puisque les " +"comptes\n" +"de banques sont associés à chaque banque, les utilisateurs peuvent saisir " +"les codes RIB\n" +"dans le formulaire des banques - ce qui initialisera automatiquement le code " +"de banque\n" +"du RIB. Pour rendre cela plus facile, ce module permettra aussi de trouver " +"une banque\n" +"à partir de leur code RIB.\n" +"\n" +"Le module base_iban peut être un module additionnel utile à ce module parce " +"que les \n" +"banques française adoptent progressivement le format international IBAN à la " +"place du\n" +"format RIB. Les codes RIB et IBAN pour un compte peuvent être saisis en " +"enregistrant \n" +"deux comptes en banque dans OpenERP : le premier avec le type \"RIB\", le " +"second avec \n" +"le type \"IBAN\". \n" #. module: base #: model:res.country,name:base.ps @@ -5542,6 +6065,24 @@ msgid "" "since it's the same which has been renamed.\n" " " msgstr "" +"\n" +"Ce module permet aux utilisateurs de faire une segmentation parmi les " +"partenaires.\n" +"==================================================================\n" +"\n" +"Il utilise les critères de profils de l'ancien module de segmentation et " +"l'améliore\n" +"grâce au nouveau concept de questionnaire. Vous pouvez maintenant regrouper " +"les\n" +"questions dans un questionnaire et l'utiliser directement sur le " +"partenaire.\n" +"\n" +"Il a aussi été fusionné avec l'ancien outil de segmentation CRM & SRM parce " +"qu'ils se chevauchaient.\n" +"\n" +" ** Note : ** ce module n'est pas compatible avec le module segmentation " +"puisque c'est le même qui a été renommé.\n" +" " #. module: base #: model:res.country,name:base.gt @@ -5574,22 +6115,22 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese (BR) / Português (BR)" -msgstr "" +msgstr "Portuguais (BR) / Português (BR)" #. module: base #: model:ir.model,name:base.model_ir_needaction_mixin msgid "ir.needaction_mixin" -msgstr "" +msgstr "ir.needaction_mixin" #. module: base #: view:base.language.export:0 msgid "This file was generated using the universal" -msgstr "" +msgstr "Ce fichier a été généré en utilisant le format universel" #. module: base #: model:res.partner.category,name:base.res_partner_category_7 msgid "IT Services" -msgstr "" +msgstr "Services TI" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications @@ -5599,12 +6140,12 @@ msgstr "Applications spécifiques à l'industrie" #. module: base #: model:ir.module.module,shortdesc:base.module_google_docs msgid "Google Docs integration" -msgstr "" +msgstr "Integration Google Docs" #. module: base #: help:ir.attachment,res_model:0 msgid "The database object this attachment will be attached to" -msgstr "" +msgstr "L'objet de la base de données auquel cet attachement sera attaché" #. module: base #: code:addons/base/ir/ir_fields.py:327 @@ -5647,6 +6188,35 @@ msgid "" "So, that we can compare the theoretic delay and real delay. \n" " " msgstr "" +"\n" +"Ce module ajoute les champs état, date de début et date de fin sur les " +"lignes d'opération des ordres de fabrication (dans l'onglet \"Ordres de " +"travaux\").\n" +"=============================================================================" +"============================================\n" +"\n" +"États : brouillon, confirmé, terminé, annulé\n" +"Lorsque un ordre de fabrication est confirmé, terminé ou annulé, toutes les " +"lignes sont mises dans l'état correspondant.\n" +"\n" +"Création du menu \"Fabrication > Fabrication > Ordres de travaux\", lequel " +"est une vue sur les lignes \"Ordres de travaux\" des ordres de fabrication.\n" +"\n" +"Ajoute des boutons dans la vue formulaire des ordres de fabrication dans " +"l'onglet Ordre de travaux :\n" +" * démarrer (met l'état à confirmé), définit la date de début ;\n" +" * terminé (met l'état à terminé), définit la date de fin ;\n" +" * met en brouillon (met l'état à brouillon) ;\n" +" * annuler (met l'état à terminé).\n" +"\n" +"Lorsque l'ordre de fabrication devient \"prêt à produire\", les opérations " +"doivent devenir \"confirmées\".\n" +"Lorsque l'ordre de fabrication est terminé, toutes les opérations doivent " +"devenir terminées.\n" +"\n" +"Le champ \"Heures travaillées\" est le délai (date de fin - date de début).\n" +"Ainsi, il est possible de comparer le délai théorique avec le délai réel. \n" +" " #. module: base #: view:res.config.installer:0 @@ -5666,7 +6236,7 @@ msgstr "Lesotho" #. module: base #: view:base.language.export:0 msgid ", or your preferred text editor" -msgstr "" +msgstr ", ou votre éditeur de texte préféré" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign @@ -5738,7 +6308,7 @@ msgstr "" #. module: base #: field:ir.actions.report.xml,report_xml:0 msgid "XML Path" -msgstr "" +msgstr "Chemin XML" #. module: base #: model:res.country,name:base.bj @@ -5799,6 +6369,17 @@ msgid "" " \n" "%(country_code)s: the code of the country" msgstr "" +"Vous pouvez définir ici le format de l'adresse selon l'usage en vigueur dans " +"ce pays.\n" +"\n" +"Vous pouvez utiliser les formats de chaînes de caractère python pour " +"afficher tous les champs d'adresse.\n" +"Par exemple :\n" +"* %(street)s' pour afficher la rue ;\n" +"* %(state_name)s' pour afficher le nom de l'état ;\n" +"* %(state_code)s' pour afficher le code de l'état ;\n" +"* %(country_name)s' pour afficher le nom du pays ;\n" +"* %(country_code)s' pour afficher le code du pays ;" #. module: base #: model:res.country,name:base.mu @@ -5813,7 +6394,7 @@ msgstr "Accès complet" #. module: base #: model:ir.module.module,description:base.module_l10n_pt msgid "Plano de contas SNC para Portugal" -msgstr "" +msgstr "Plan de compte SNC pour le Portugal" #. module: base #: view:ir.actions.act_window:0 @@ -5825,7 +6406,7 @@ msgstr "Sécurité" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese / Português" -msgstr "" +msgstr "Portuguais / Português" #. module: base #: code:addons/base/ir/ir_model.py:373 @@ -5843,7 +6424,7 @@ msgstr "Seulement si ce compte bancaire appartiennent à votre société" #: code:addons/base/ir/ir_fields.py:337 #, python-format msgid "Unknown sub-field '%s'" -msgstr "" +msgstr "Sous-champ inconnu \"%s\"" #. module: base #: model:res.country,name:base.za @@ -5882,6 +6463,12 @@ msgid "" "Collects web application usage with Google Analytics.\n" " " msgstr "" +"\n" +"Google Analytics.\n" +"=============\n" +"\n" +"Collecte l'utilisation de l'application Web avec Google Analytics.\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_hr_recruitment @@ -5958,6 +6545,10 @@ msgid "" "================\n" "\n" msgstr "" +"\n" +"API Web OpenERP.\n" +"===============\n" +"\n" #. module: base #: selection:res.request,state:0 @@ -5976,7 +6567,7 @@ msgstr "Date" #. module: base #: model:ir.module.module,shortdesc:base.module_event_moodle msgid "Event Moodle" -msgstr "" +msgstr "Événement Moodle" #. module: base #: model:ir.module.module,description:base.module_email_template @@ -6023,16 +6614,59 @@ msgid "" "Email by Openlabs was kept.\n" " " msgstr "" +"\n" +"Modèles de courriel (version simplifiée du module original \"Power Email\" " +"d'Openlabs).\n" +"===================================================================\n" +"\n" +"Vous permet de définir complètement des modèles de courriel relié à tout " +"document OpenERP\n" +"(bons de commande, facture, etc...), incluant émetteur, destinataire, sujet, " +"corps du message \n" +"(format texte et HTML). Vous pouvez aussi attacher automatiquement des " +"fichiers à vos modèles\n" +"ou imprimer puis attacher un rapport.\n" +"\n" +"Pour une utilisation avancée, les modèles peuvent inclure des attributs " +"dynamiques issus des\n" +"documents auxquels ils sont reliés. Par exemple, vous pouvez utiliser le " +"pays d'un partenaire\n" +"lorsque vous lui écrivez, et définir aussi une valeur par défaut au cas où " +"cet attribut ne serait pas\n" +"défini. Chaque modèle contient un assistant intégré pour faciliter " +"l'inclusion de ces valeurs \n" +"dynamiques.\n" +"\n" +"Si vous activez l'option, un assistant de rédaction va aussi apparaître dans " +"la barre latérale\n" +"des documents OpenERP auxquels s'applique ce modèle (par exemple les " +"factures).\n" +"Ceci permet de fournir une façon rapide d'envoyer de nouveaux courriels " +"basés sur ce modèle,\n" +"après avoir revu et corrigé le contenu si nécessaire.\n" +"L'assistant de rédaction va aussi se transformer en outil d'envoi en masse " +"lorsqu'il est appelé\n" +"plusieurs documents en une fois.\n" +"\n" +"Ces modèles de courriel sont aussi au cœur du système de campagne marketing " +"(voir l'application\n" +"\"campagne marketing\"), si vous avez besoin d'automatiser des campagnes " +"plus grandes sur tout\n" +"type de document OpenERP.\n" +"\n" +" **Note technique :** seul le système de modèle du module original " +"\"Power Email\" de Openlabs a été conservé.\n" +" " #. module: base #: model:ir.ui.menu,name:base.menu_partner_category_form msgid "Partner Tags" -msgstr "" +msgstr "Étiquettes du partenaire" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Pré-visualisation de l'entête/pied de page" #. module: base #: field:ir.ui.menu,parent_id:0 @@ -6066,12 +6700,12 @@ msgstr "Séparateur décimal" #: code:addons/orm.py:5319 #, python-format msgid "Missing required value for the field '%s'." -msgstr "" +msgstr "Valeur requise manquante pour le champs \"%s\"." #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Droit d'accés en écriture" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -6106,12 +6740,14 @@ msgstr "Historique" #. module: base #: model:res.country,name:base.im msgid "Isle of Man" -msgstr "" +msgstr "Île de Man" #. module: base #: help:ir.actions.client,res_model:0 msgid "Optional model, mostly used for needactions." msgstr "" +"Modèle optionnel, principalement utilisé pour les fonctionnalités " +"\"need_action\"" #. module: base #: code:addons/base/module/module.py:306 @@ -6127,7 +6763,7 @@ msgstr "Île Bouvet" #. module: base #: field:ir.model.constraint,type:0 msgid "Constraint Type" -msgstr "" +msgstr "Type de containte" #. module: base #: field:res.company,child_ids:0 @@ -6151,6 +6787,14 @@ msgid "" "wizard if the delivery is to be invoiced.\n" " " msgstr "" +"\n" +"Assistant de facturation pour les livraisons.\n" +"=================================\n" +"\n" +"Lorsque vous envoyez ou livrez des biens, ce module démarre automatiquement " +"l'assistant de facturation\n" +"si la livraison doit être facturée.\n" +" " #. module: base #: selection:ir.translation,type:0 @@ -6193,7 +6837,7 @@ msgstr "Lancer l'assistant de configuration" #. module: base #: model:ir.module.module,summary:base.module_mrp msgid "Manufacturing Orders, Bill of Materials, Routing" -msgstr "" +msgstr "Ordres de fabrication, Nomenclature, Gammes opératoire" #. module: base #: field:ir.attachment,name:0 @@ -6262,16 +6906,71 @@ msgid "" " * Zip return for separated PDF\n" " * Web client WYSIWYG\n" msgstr "" +"\n" +"Ce module ajoute un nouveau moteur de rapport basé sur la librairie Webkit " +"(wkhtmltopdf) pour supporter les rapports écris en HTML et CSS.\n" +"=============================================================================" +"==================================\n" +"\n" +"La structure du module et une partie du code sont inspirées du module " +"report_openoffice.\n" +"\n" +"Ce module permet :\n" +"---------------------------\n" +" * la définition de rapports HTML ;\n" +" * le support des entêtes multiples ;\n" +" * les logos multiples ;\n" +" * les configurations multi-compagnies ;\n" +" * support de HTML et CSS-3 (dans la limite de la versions actuelle de " +"Webkit) ;\n" +" * support de javaScript ;\n" +" * déboguage de HTML brut ;\n" +" * possibilité d'imprimer au format livre ;\n" +" * définition des marges ;\n" +" * définition des tailles de papier.\n" +"\n" +"Des entêtes et logos multiples peuvent être définis par compagnie. Style " +"CSS, entête et pied de page\n" +"sont définis par compagnie.\n" +"\n" +"Pour un exemple, voir aussi le module webkit_report_sample module et cette " +"vidéo:\n" +" http://files.me.com/nbessi/06n92k.mov\n" +"\n" +"Pré-requis et installation :\n" +"-----------------------------------\n" +"Ce module requiert la librairie \"wkthtmltopdf\" pour afficher les documents " +"HTML au format PDF.\n" +"La version 0.9.9 ou ultérieure est nécessaire et peut être trouvée à " +"l'adresse\n" +"http://code.google.com/p/wkhtmltopdf/ pour Linux, Mac OS X (i386) et Windows " +"(32bits).\n" +"\n" +"Après installation de la librairie sur la machine du serveur OpenERP, vous " +"devez définir le chemin\n" +"vers le fichier exécutable \"wkthtmltopdf\" pour chaque compagnie.\n" +"\n" +"Si vous rencontrez des problèmes d'en-tête/pieds de page sous Linux, " +"vérifier d'installer une version\n" +"\"statique\" de la librairie. La librairie par défaut sous Ubuntu est connue " +"pour avoir des problèmes.\n" +"\n" +"\n" +"Reste à faire:\n" +" * activation/désactivation du support JavaScript ;\n" +" * support des formats assemblage et livre ;\n" +" * retour ZIP pour les fichiers PDF séparés ;\n" +" * client web WYSIWYG.\n" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "See all Leads" -msgstr "" +msgstr "Voir toutes les pistes" #. module: base #: model:res.country,name:base.ci msgid "Ivory Coast (Cote D'Ivoire)" -msgstr "Cote d'Ivoire" +msgstr "Côte d'Ivoire" #. module: base #: model:res.country,name:base.kz @@ -6292,7 +6991,7 @@ msgstr "Nom de la ressource" #. module: base #: model:ir.ui.menu,name:base.menu_ir_filters msgid "User-defined Filters" -msgstr "" +msgstr "Filtres personnalisés" #. module: base #: field:ir.actions.act_window_close,name:0 @@ -6366,6 +7065,9 @@ msgid "" "

You should try others search criteria.

\n" " " msgstr "" +"

Aucun module trouvé!

\n" +"

vous devriez essayer d'autres critères de recherche.

\n" +" " #. module: base #: model:ir.model,name:base.model_ir_module_module @@ -6388,7 +7090,7 @@ msgstr "Anglais (UK)" #. module: base #: selection:base.language.install,lang:0 msgid "Japanese / 日本語" -msgstr "Japanais / 日本語" +msgstr "Japonais / 日本語" #. module: base #: model:ir.model,name:base.model_base_language_import @@ -6454,6 +7156,49 @@ msgid "" "only the country code will be validated.\n" " " msgstr "" +"\n" +"Validation du numéro de TVA des partenaires.\n" +"====================================\n" +"\n" +"Après installation de ce module, la valeur entrée dans le champs TVA des " +"partenaires\n" +"sera validé pour tous les pays supportés. Le pays est déduit des 2 lettres " +"du code de\n" +"pays qui préfixent le numéro de TVA. Par exemple \"BE0477472701\" sera " +"validé en \n" +"utilisant les règles belges.\n" +"\n" +"Il y a deux niveaux différents de validation du numéro de TVA :\n" +"-----------------------------------------------------------------------------" +"--------\n" +" * par défaut, une simple vérification hors-ligne est faite en réalisant " +"les règles de validation\n" +" connue pour le pays, en général une simple vérification de numéro. " +"Ceci est rapide et \n" +" et toujours disponible, mais ne détecte pas les numéros qui ne sont " +"peut-être pas \n" +" alloués ou plus valides.\n" +"\n" +" * Lorsque l'option \"Validation du numéro TVA par VIES\" est cochée " +"(dans la configuration \n" +" de la compagnie de l'utilisateur), le numéro de TVA est soumis en-" +"ligne à la base de donnée \n" +" européenne VIES, laquelle vérifiera réellement si le numéro est " +"valide et actuellement \n" +" alloué à une compagnie européenne. Ceci est un peu plus lent qu'une " +"simple vérification \n" +" hors-ligne, requiert une connexion internet et n'est peut-être pas " +"disponible tout le temps. \n" +" Si le service n'est pas disponible ou ne supporte pas le pays demande " +"(cas des pays hors Union \n" +" Européenne), la vérification simple sera réalisé à la place.\n" +"\n" +"Les pays supportés actuellement inclus les pays de l'Union Européenne et " +"quelques pays hors UE\n" +"tels que Chili, Colombie, Mexique, Norvège ou Russie. Pour les pays non-" +"supportés, seul le code\n" +"de pays sera validé.\n" +" " #. module: base #: model:ir.model,name:base.model_ir_actions_act_window_view @@ -6501,11 +7246,25 @@ msgid "" " Replica of Democratic Congo, Senegal, Chad, Togo.\n" " " msgstr "" +"\n" +"Ce module implémente la charte de compte pour les pays de l'HOADA.\n" +"=======================================================\n" +"\n" +"Il permet à toute compagnie ou association de gérer sa comptabilité " +"financière.\n" +"\n" +"Les pays qui utilisent OHADA sont les suivants :\n" +"----------------------------------------------------------------\n" +" Benin, Burkina Faso, Cameroun, Centrafrique, Comores, Congo,\n" +" Côte d'Ivoire, Gabon, Guinée, Guinée-Bissau, Guinée Équatoriale, Mali, " +"Niger,\n" +" République Démocratique du Congo, Sénégal, Tchad et Togo.\n" +" " #. module: base #: view:ir.translation:0 msgid "Comments" -msgstr "" +msgstr "Commentaires" #. module: base #: model:res.country,name:base.et @@ -6515,7 +7274,7 @@ msgstr "Ethiopie" #. module: base #: model:ir.module.category,name:base.module_category_authentication msgid "Authentication" -msgstr "" +msgstr "Authentification" #. module: base #: model:res.country,name:base.sj @@ -6611,6 +7370,11 @@ msgid "" "===============================================\n" " " msgstr "" +"\n" +"Permet aux utilisateurs de s'enregistrer et réinitialiser leur mot de " +"passe.\n" +"=========================================================\n" +" " #. module: base #: model:ir.module.category,name:base.module_category_usability @@ -6635,6 +7399,14 @@ msgid "" "membership products (schemes).\n" " " msgstr "" +"\n" +"Ce module configure les modules nécessaires aux associations.\n" +"=================================================\n" +"\n" +"Il installe le profil pour les associations leur permettant de gérer les " +"événements, enregistrements, \n" +"adhésions, produits d'adhésion (programmes).\n" +" " #. module: base #: model:ir.ui.menu,name:base.menu_base_config @@ -6667,6 +7439,20 @@ msgid "" "documentation at http://doc.openerp.com.\n" " " msgstr "" +"\n" +"Fournit une plateforme EDI que les autres applications peuvent utiliser.\n" +"=======================================================\n" +"\n" +"OpenERP spécifie un format générique EDI pour l'échange de document " +"d'affaire entre\n" +"différents systèmes et fournit les mécanismes génériques pour les importer " +"et les\n" +"exporter.\n" +"\n" +"Plus de détails au sujet du format EDI d'OpenERP peut être trouvé dans la " +"documentation\n" +"technique d'OpenERP à l'adresse http://doc.openerp.com.\n" +" " #. module: base #: code:addons/base/ir/workflow/workflow.py:99 @@ -6686,6 +7472,9 @@ msgid "" "deleting it (if you delete a native record rule, it may be re-created when " "you reload the module." msgstr "" +"Si vous désactivez le champs \"Actif\", cela désactivera la règle " +"d'enregistrement sans la supprimer (si vous supprimez une règle native " +"d'enregistrement, elle peut être recrée en rechargeant le module)." #. module: base #: selection:base.language.install,lang:0 @@ -6702,6 +7491,12 @@ msgid "" "Allows users to create custom dashboard.\n" " " msgstr "" +"\n" +"Permet aux utilisateurs de créer un tableau de bord personnalisé.\n" +"====================================================\n" +"\n" +"Permet aux utilisateurs de créer un tableau de bord personnalisé.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.ir_access_act @@ -6717,7 +7512,7 @@ msgstr "Îles mineures éloignées des États-Unis" #. module: base #: view:base.language.import:0 msgid "e.g. English" -msgstr "" +msgstr "par exemple Français" #. module: base #: help:ir.cron,numbercall:0 @@ -6804,14 +7599,14 @@ msgstr "" #. module: base #: field:res.partner,is_company:0 msgid "Is a Company" -msgstr "" +msgstr "Est une compagnie" #. module: base #: view:res.company:0 #: view:res.partner:0 #: view:res.users:0 msgid "e.g. www.openerp.com" -msgstr "" +msgstr "ex : www.openerp.com" #. module: base #: selection:ir.cron,interval_type:0 @@ -6855,18 +7650,23 @@ msgid "" "========================\n" "\n" msgstr "" +"\n" +"Vue kanban pour le client Web OpenERP.\n" +"================================\n" +"\n" #. module: base #: code:addons/base/ir/ir_fields.py:182 #, python-format msgid "'%s' does not seem to be a number for field '%%(field)s'" -msgstr "" +msgstr "'%s' ne semble pas être un nombre pour le champs '%%(field)s'" #. module: base #: help:res.country.state,name:0 msgid "" "Administrative divisions of a country. E.g. Fed. State, Departement, Canton" msgstr "" +"Divisions administratives d'un pays. Par exemple État, Département, Canton" #. module: base #: view:res.partner.bank:0 @@ -6876,7 +7676,7 @@ msgstr "Mes banques" #. module: base #: sql_constraint:ir.filters:0 msgid "Filter names must be unique" -msgstr "" +msgstr "Les noms de filtre doivent être uniques" #. module: base #: help:multi_company.default,object_id:0 @@ -6891,7 +7691,7 @@ msgstr "" #. module: base #: field:ir.filters,is_default:0 msgid "Default filter" -msgstr "" +msgstr "Filtre par défaut" #. module: base #: report:ir.module.reference:0 @@ -7020,7 +7820,7 @@ msgstr "Malaisie" #: code:addons/base/ir/ir_sequence.py:130 #, python-format msgid "Increment number must not be zero." -msgstr "" +msgstr "Le numéro d'incrément ne doit pas être zéro." #. module: base #: model:ir.module.module,shortdesc:base.module_account_cancel @@ -7030,7 +7830,7 @@ msgstr "Annuler des écritures" #. module: base #: field:res.partner,tz_offset:0 msgid "Timezone offset" -msgstr "" +msgstr "Décalage horaire" #. module: base #: model:ir.module.module,description:base.module_marketing_campaign @@ -7091,6 +7891,13 @@ msgid "" "Price and Cost Price.\n" " " msgstr "" +"\n" +"Ce module ajoute la \"Marge\" sur les bons de commandes.\n" +"=============================================\n" +"\n" +"Il donne la profitabilité en calculant la différence du prix unitaire et du " +"prix coûtant.\n" +" " #. module: base #: selection:ir.actions.todo,type:0 @@ -7119,7 +7926,7 @@ msgstr "Cap-Vert" #. module: base #: model:res.groups,comment:base.group_sale_salesman msgid "the user will have access to his own data in the sales application." -msgstr "" +msgstr "l'utilisateur aura accès à ses propres données dans le CRM." #. module: base #: model:res.groups,comment:base.group_user @@ -7127,6 +7934,9 @@ msgid "" "the user will be able to manage his own human resources stuff (leave " "request, timesheets, ...), if he is linked to an employee in the system." msgstr "" +"l'utilisateur sera capable de gérer ses propres données de ressources " +"humaines (demandes d'absence, feuille de temps...), si il est lié à un " +"employé dans le système." #. module: base #: code:addons/orm.py:2247 @@ -7268,7 +8078,7 @@ msgstr "Année en cours sans les siècles : %(y)s" #: view:ir.config_parameter:0 #: model:ir.ui.menu,name:base.ir_config_menu msgid "System Parameters" -msgstr "" +msgstr "Paramètres systèmes" #. module: base #: help:ir.actions.client,tag:0 @@ -7328,7 +8138,7 @@ msgstr "Rapport de l' audit" #: code:addons/base/ir/ir_fields.py:264 #, python-format msgid "Value '%s' not found in selection field '%%(field)s'" -msgstr "" +msgstr "La valeur '%s' n'est pas dans le champ de sélection '%%(field)s'" #. module: base #: model:res.country,name:base.sd @@ -7420,7 +8230,7 @@ msgstr "Israël" #: code:addons/base/res/res_config.py:444 #, python-format msgid "Cannot duplicate configuration!" -msgstr "" +msgstr "La configuration ne peut pas être dupliquée!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_syscohada @@ -7435,7 +8245,7 @@ msgstr "Parfois appelé BIC ou Swift" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in msgid "Indian - Accounting" -msgstr "" +msgstr "Inde - Comptabilité" #. module: base #: field:res.lang,time_format:0 @@ -7445,12 +8255,12 @@ msgstr "Format de l'heure" #. module: base #: field:res.company,rml_header3:0 msgid "RML Internal Header for Landscape Reports" -msgstr "" +msgstr "En-tête RML interne pour les rapports au format paysage" #. module: base #: model:res.groups,name:base.group_partner_manager msgid "Contact Creation" -msgstr "" +msgstr "Création du contact" #. module: base #: view:ir.module.module:0 @@ -7501,11 +8311,17 @@ msgid "" "This module provides the core of the OpenERP Web Client.\n" " " msgstr "" +"\n" +"Module cœur du client Web OpenERP.\n" +"==============================\n" +"\n" +"Ce module fourni le cœur du client Web OpenERP.\n" +" " #. module: base #: view:ir.sequence:0 msgid "Week of the Year: %(woy)s" -msgstr "" +msgstr "Semaine de l'année : %(woy)s" #. module: base #: field:res.users,id:0 @@ -7547,7 +8363,7 @@ msgstr "Royaume-Uni" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pa msgid "Panama Localization Chart Account" -msgstr "" +msgstr "Panama - Plan de compte localisé" #. module: base #: help:res.partner.category,active:0 @@ -7575,7 +8391,7 @@ msgstr "Formes juridiques" #: code:addons/base/ir/ir_fields.py:227 #, python-format msgid "Use the format '%s'" -msgstr "" +msgstr "Utilisez le format '%s'" #. module: base #: help:ir.actions.act_window,auto_refresh:0 @@ -7607,12 +8423,12 @@ msgstr "Tâches" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Invalid Bank Account Type Name format." -msgstr "" +msgstr "Format de nom invalide pour le type de compte bancaire." #. module: base #: view:ir.filters:0 msgid "Filters visible only for one user" -msgstr "" +msgstr "Filtres visibles seulement pour un utilisateur" #. module: base #: model:ir.model,name:base.model_ir_attachment @@ -7677,7 +8493,7 @@ msgstr "" #. module: base #: model:res.groups,comment:base.group_hr_user msgid "the user will be able to approve document created by employees." -msgstr "" +msgstr "l'utilisateur pourra approuver les documents créés par les employés" #. module: base #: field:ir.ui.menu,needaction_enabled:0 @@ -7736,7 +8552,7 @@ msgstr "Fichier de module importé avec succès !" #: view:ir.model.constraint:0 #: model:ir.ui.menu,name:base.ir_model_constraint_menu msgid "Model Constraints" -msgstr "" +msgstr "Contraintes du modèle" #. module: base #: model:ir.actions.act_window,name:base.action_workflow_transition_form @@ -7814,6 +8630,17 @@ msgid "" "their status quickly as they evolve.\n" " " msgstr "" +"\n" +"Suivi des incidents/gestion des bogues pour les projets\n" +"===========================================\n" +"Cette application vous permet de gérer les incidents que vous pourriez " +"rencontrer dans un projet comme les bogues dans le système, les plaintes " +"client ou les bris matériels.\n" +"\n" +"Ceci permet au gestionnaire de rapidement vérifier les incidents, les " +"assigner et de décider rapidement leur statut au fur et à mesure qu'ils " +"évoluent.\n" +" " #. module: base #: field:ir.model.access,perm_create:0 @@ -7840,6 +8667,22 @@ msgid "" "up a management by affair.\n" " " msgstr "" +"\n" +"Ce module met en œuvre un système de feuilles de temps.\n" +"===============================================\n" +"\n" +"Chaque employé peut saisir et suivre leur temps passé sur les différents " +"projets.\n" +"Un projet est un compte analytique et le temps passé sur un projet génère un " +"coût\n" +"sur ce compte analytique.\n" +"\n" +"Beaucoup de rapports sur le temps et le suivi des employés sont fournis.\n" +"\n" +"Il est complètement intégré au module gestion des coûts (cost_accounting). " +"Il vous\n" +"permet de mettre en place une gestion par affaire.\n" +" " #. module: base #: field:res.bank,state:0 @@ -7856,7 +8699,7 @@ msgstr "Copie de" #. module: base #: field:ir.model.data,display_name:0 msgid "Record Name" -msgstr "" +msgstr "Nom d'enregistrement" #. module: base #: model:ir.model,name:base.model_ir_actions_client From a7bf53ebaab473184b55134efbf3f7c5890ea639 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Tue, 9 Apr 2013 11:14:33 +0200 Subject: [PATCH 045/107] [FIX]error introduce in revid:odo@openerp.com-20130405151451-anjsdt18gmsxr01k function date_to_datetime should return a date in server datetime format bzr revid: csn@openerp.com-20130409091433-4u3nxejdrti7czu3 --- addons/purchase/purchase.py | 5 +++-- addons/sale_stock/sale_stock.py | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 3446d71c0e5..0e4619f2427 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -604,7 +604,8 @@ class purchase_order(osv.osv): :return: UTC datetime string for server-side use """ # TODO: move to fields.datetime in server after 7.0 - user_datetime = datetime.strptime(userdate, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(hours=12.0) + user_date = datetime.strptime(userdate, DEFAULT_SERVER_DATE_FORMAT) + user_datetime = user_date + relativedelta(hours=12.0) if context and context.get('tz'): tz_name = context['tz'] else: @@ -615,7 +616,7 @@ class purchase_order(osv.osv): local_timestamp = context_tz.localize(user_datetime, is_dst=False) user_datetime = local_timestamp.astimezone(utc) return user_datetime.strftime(DEFAULT_SERVER_DATETIME_FORMAT) - return userdate + return user_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT) def _prepare_order_picking(self, cr, uid, order, context=None): return { diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py index e874bc7fdcc..7a499f678e0 100644 --- a/addons/sale_stock/sale_stock.py +++ b/addons/sale_stock/sale_stock.py @@ -243,7 +243,8 @@ class sale_order(osv.osv): :return: UTC datetime string for server-side use """ # TODO: move to fields.datetime in server after 7.0 - user_datetime = datetime.strptime(userdate, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(hours=12.0) + user_date = datetime.strptime(userdate, DEFAULT_SERVER_DATE_FORMAT) + user_datetime = user_date + relativedelta(hours=12.0) if context and context.get('tz'): tz_name = context['tz'] else: @@ -254,7 +255,7 @@ class sale_order(osv.osv): local_timestamp = context_tz.localize(user_datetime, is_dst=False) user_datetime = local_timestamp.astimezone(utc) return user_datetime.strftime(DEFAULT_SERVER_DATETIME_FORMAT) - return userdate + return user_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT) # if mode == 'finished': # returns True if all lines are done, False otherwise @@ -374,7 +375,7 @@ class sale_order(osv.osv): def _get_date_planned(self, cr, uid, order, line, start_date, context=None): start_date = self.date_to_datetime(cr, uid, start_date, context) date_planned = datetime.strptime(start_date, DEFAULT_SERVER_DATETIME_FORMAT) + relativedelta(days=line.delay or 0.0) - date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT) + date_planned = (date_planned - timedelta(days=order.company_id.security_lead)) return date_planned def _create_pickings_and_procurements(self, cr, uid, order, order_lines, picking_id=False, context=None): From 905d13671b4b59c895044ef4e755745269619b31 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 9 Apr 2013 14:28:52 +0200 Subject: [PATCH 046/107] [FIX] Do not autofocus Notebook pages by default bzr revid: fme@openerp.com-20130409122852-f4ikugl83otx8423 --- addons/web/static/src/js/view_form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 22f9338fad2..c92056d4e09 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1526,7 +1526,7 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt if (! page.__ic) return; page.__ic.on("change:effective_invisible", null, function() { - if (!page.__ic.get('effective_invisible')) { + if (!page.__ic.get('effective_invisible') && page.autofocus) { $new_notebook.tabs('select', i); return; } From 74997ff4084b54bbf2619d43a5cf1213dad29706 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 9 Apr 2013 14:29:54 +0200 Subject: [PATCH 047/107] [IMP] res.partner form view, autofocus Contact notebook/page on visibility change bzr revid: fme@openerp.com-20130409122954-mkene266qvcfe6nr --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 71c789af1a7..12320deb7c7 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -182,7 +182,7 @@ - + From e2e851dd07c59959e5b390f81bf23a1b4e8687e1 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Tue, 9 Apr 2013 15:51:07 +0200 Subject: [PATCH 048/107] [FIX]account_payment_report: formatlang expect float value not string bzr revid: csn@openerp.com-20130409135107-y59zf6x2p85yvgva --- addons/account_payment/report/order.rml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account_payment/report/order.rml b/addons/account_payment/report/order.rml index ca2315d81b1..6c515f2b287 100644 --- a/addons/account_payment/report/order.rml +++ b/addons/account_payment/report/order.rml @@ -256,7 +256,7 @@ [[line.date=='False' and '-' or formatLang(line.date,date=True) ]] - [[ formatLang(line.amount or '-', currency_obj=line.company_currency) ]] + [[ formatLang(line.amount or 0.0, currency_obj=line.company_currency) ]] [[ formatLang(line.amount_currency, currency_obj=line.currency) ]] From 35d3a3480a78f5f13f886cda133e6e6a6ad3f0ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Tue, 9 Apr 2013 16:35:36 +0200 Subject: [PATCH 049/107] [FIX] point_of_sale: use correct rounding algorithm lp bug: https://launchpad.net/bugs/1157761 fixed bzr revid: fva@openerp.com-20130409143536-hgs38n0sqx8td607 --- addons/point_of_sale/static/src/js/models.js | 24 ++++--------------- addons/point_of_sale/static/src/js/screens.js | 2 +- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 660434ba53e..c0963068799 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1,24 +1,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sale var QWeb = instance.web.qweb; - // rounds a value with a fixed number of decimals. - // round(3.141492,2) -> 3.14 - function round(value,decimals){ - var mult = Math.pow(10,decimals || 0); - return Math.round(value*mult)/mult; - } - window.round = round; - - // rounds a value with decimal form precision - // round(3.141592,0.025) ->3.125 - function round_pr(value,precision){ - if(!precision || precision < 0){ - throw new Error('round_pr(): needs a precision greater than zero, got '+precision+' instead'); - } - return Math.round(value / precision) * precision; - } - window.round_pr = round_pr; - + var round_di = instance.web.round_digits; + var round_pr = instance.web.round_precision // The PosModel contains the Point Of Sale's representation of the backend. // Since the PoS must work in standalone ( Without connection to the server ) @@ -391,7 +375,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal var quant = Math.max(parseFloat(quantity) || 0, 0); var unit = this.get_unit(); if(unit){ - this.quantity = Math.max(unit.rounding, Math.round(quant / unit.rounding) * unit.rounding); + this.quantity = Math.max(unit.rounding, round_pr(quant, unit.rounding)); this.quantityStr = this.quantity.toFixed(Math.max(0,Math.ceil(Math.log(1.0 / unit.rounding) / Math.log(10)))); }else{ this.quantity = quant; @@ -484,7 +468,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal }, // changes the base price of the product for this orderline set_unit_price: function(price){ - this.price = round(parseFloat(price) || 0, 2); + this.price = round_di(parseFloat(price) || 0, 2); this.trigger('change'); }, get_unit_price: function(){ diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index eca4a3c5915..0bd399428ed 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -983,7 +983,7 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa } if(this.pos_widget.action_bar){ - this.pos_widget.action_bar.set_button_disabled('validation', remaining > 0); + this.pos_widget.action_bar.set_button_disabled('validation', remaining > 0.000001); } }, set_numpad_state: function(numpadState) { From c176e1e7ca800b5e5d50f665dafcbdbcc47d0064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Tue, 9 Apr 2013 16:42:08 +0200 Subject: [PATCH 050/107] [IMP] point_of_sale: renamed round_digits to round_decimals bzr revid: fva@openerp.com-20130409144208-2wq4cozxstbdgld5 --- addons/point_of_sale/static/src/js/models.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index c0963068799..98ba49c8856 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1,7 +1,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sale var QWeb = instance.web.qweb; - var round_di = instance.web.round_digits; + var round_di = instance.web.round_decimals; var round_pr = instance.web.round_precision // The PosModel contains the Point Of Sale's representation of the backend. From a5e4d757a19eaac32f598e9cfcbe854fa86b974f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Tue, 9 Apr 2013 16:44:14 +0200 Subject: [PATCH 051/107] [FIX] add a correct rounding algorithm to be able to duplicate server-side financial computations lp bug: https://launchpad.net/bugs/1157761 fixed bzr revid: fva@openerp.com-20130409144414-nqnmkny5cxrmyru1 --- addons/web/static/src/js/formats.js | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js index 851b60af229..854c5f76218 100644 --- a/addons/web/static/src/js/formats.js +++ b/addons/web/static/src/js/formats.js @@ -314,4 +314,34 @@ instance.web.auto_date_to_str = function(value, type) { } }; +/** + * performs a half up rounding with arbitrary precision, correcting for float loss of precision + * See the corresponding float_round() in server/tools/float_utils.py for more info + * @param {Number} the value to be rounded + * @param {Number} a non zero precision parameter. eg: 0.01 rounds to two digits. + */ +instance.web.round_precision = function(value, precision){ + if(!value){ + return 0; + }else if(!precision){ + throw new Error('round_precision(...): Cannot round value: '+value+' with a precision of zero (or undefined)'); + } + var normalized_value = value / precision; + var epsilon_magnitude = Math.log(Math.abs(normalized_value))/Math.log(2); + var epsilon = Math.pow(2, epsilon_magnitude - 53); + normalized_value += normalized_value >= 0 ? epsilon : -epsilon; + var rounded_value = Math.round(normalized_value); + return rounded_value * precision; +}; + +/** + * performs a half up rounding with a fixed amount of decimals, correcting for float loss of precision + * See the corresponding float_round() in server/tools/float_utils.py for more info + * @param {Number} the value to be rounded + * @param {Number} the number of decimals. eg: round_decimals(3.141592,2) -> 3.14 + */ +instance.web.round_decimals = function(value, decimals){ + return instance.web.round_precision(value, Math.pow(10,-decimals)); +}; + }; From b2a872846ca966f8fa6477cfa9404e82178ad061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Tue, 9 Apr 2013 18:00:21 +0200 Subject: [PATCH 052/107] [FIX] point_of_sale: use the correct rounding method for computing taxes bzr revid: fva@openerp.com-20130409160021-707f3vrxcrqytsl6 --- addons/point_of_sale/point_of_sale.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index b5b0763714d..756da2bb47b 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -909,6 +909,7 @@ class pos_order(osv.osv): account_tax_obj = self.pool.get('account.tax') user_proxy = self.pool.get('res.users') property_obj = self.pool.get('ir.property') + cur_obj = self.pool.get('res.currency') period = account_period_obj.find(cr, uid, context=context)[0] @@ -1010,11 +1011,11 @@ class pos_order(osv.osv): computed_taxes = account_tax_obj.compute_all(cr, uid, taxes, line.price_unit * (100.0-line.discount) / 100.0, line.qty)['taxes'] for tax in computed_taxes: - tax_amount += round(tax['amount'], 2) + tax_amount += cur_obj.round(cr, uid, cur, tax['amount']) group_key = (tax['tax_code_id'], tax['base_code_id'], tax['account_collected_id'], tax['id']) group_tax.setdefault(group_key, 0) - group_tax[group_key] += round(tax['amount'], 2) + group_tax[group_key] += cur_obj.round(cr, uid, cur, tax['amount']) amount = line.price_subtotal From 75997ddc1c97ec0944225ee7ffd6af372a12842c Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Wed, 10 Apr 2013 05:54:52 +0000 Subject: [PATCH 053/107] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20130410055452-4saqwvwv6cgtil6s --- addons/account/i18n/fr.po | 98 ++++++++- addons/account/i18n/mn.po | 10 +- addons/account/i18n/nl.po | 26 +-- .../i18n/tr.po | 68 +++---- addons/account_followup/i18n/nl_BE.po | 191 ++++++++++-------- addons/analytic/i18n/fr.po | 27 +-- addons/analytic/i18n/ro.po | 2 +- addons/auth_signup/i18n/ru.po | 99 ++++++--- addons/crm/i18n/fr.po | 22 +- addons/hr/i18n/fr.po | 10 +- addons/hr_contract/i18n/fr.po | 18 +- addons/hr_holidays/i18n/fr.po | 61 ++++-- addons/hr_recruitment/i18n/fr.po | 10 +- addons/hr_timesheet/i18n/fr.po | 37 ++-- addons/hr_timesheet_invoice/i18n/fr.po | 52 ++--- addons/hr_timesheet_sheet/i18n/fr.po | 85 +++++--- addons/mail/i18n/ru.po | 8 +- addons/mrp/i18n/ro.po | 2 +- addons/point_of_sale/i18n/mn.po | 10 +- addons/portal_anonymous/i18n/ru.po | 25 +++ addons/product/i18n/nl.po | 12 +- addons/project/i18n/sl.po | 6 +- 22 files changed, 556 insertions(+), 323 deletions(-) create mode 100644 addons/portal_anonymous/i18n/ru.po diff --git a/addons/account/i18n/fr.po b/addons/account/i18n/fr.po index 733159aac7b..22c4a697038 100644 --- a/addons/account/i18n/fr.po +++ b/addons/account/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-21 01:39+0000\n" -"Last-Translator: Numérigraphe \n" +"PO-Revision-Date: 2013-04-10 02:55+0000\n" +"Last-Translator: sulliwane \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:22+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -291,6 +291,10 @@ msgid "" "sales, purchase, expense, contra, etc.\n" " This installs the module account_voucher." msgstr "" +"Ceci inclut toutes les fonctionnalités nécessaires aux justificatifs " +"comptables de banque, d'espèce, de vente, d'achat, de dépenses, de contrat, " +"etc.\n" +" Ceci installe le module account_voucher." #. module: account #: model:ir.actions.act_window,name:account.action_account_use_model_create_entry @@ -479,7 +483,7 @@ msgstr "" #. module: account #: help:account.bank.statement.line,name:0 msgid "Originator to Beneficiary Information" -msgstr "" +msgstr "Informations de l'initiateur au bénéficiaire" #. module: account #. openerp-web @@ -861,7 +865,7 @@ msgstr "" #. module: account #: view:account.account:0 msgid "Account code" -msgstr "" +msgstr "Numéro de compte" #. module: account #: selection:account.financial.report,display_detail:0 @@ -1013,6 +1017,10 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Pas d'écritures comptables.\n" +"

\n" +" " #. module: account #: code:addons/account/account.py:1639 @@ -1209,6 +1217,19 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Cliquer pour ajouter un compte\n" +"

\n" +" Lors de transactions impliquant plusieurs devises, vous " +"pouvez perdre ou gagner\n" +" une certaine somme d'argent due au taux de change. Ce menu " +"vous donne\n" +" une prévision des gains et de pertes que vous réaliseriez si " +"ces\n" +" transactions étaient passées aujourd'hui. Concerne seulement " +"les comptes\n" +" ayant une deuxième devise.\n" +" " #. module: account #: field:account.bank.accounts.wizard,acc_name:0 @@ -1226,6 +1247,8 @@ msgid "" "Check this box if you don't want any tax related to this tax code to appear " "on invoices" msgstr "" +"Cocher cette case si vous ne voulez par voir apparaître de taxe quelconque " +"liée à ce numéro de taxe sur les factures." #. module: account #: field:report.account.receivable,name:0 @@ -1260,6 +1283,8 @@ msgstr "Avoir " #: help:account.config.settings,company_footer:0 msgid "Bank accounts as printed in the footer of each printed document" msgstr "" +"Comptes en banque comme imprimé dans le pied de page de chaque document " +"imprimé" #. module: account #: view:account.tax:0 @@ -1361,6 +1386,9 @@ msgid "" "The amount expressed in the secondary currency must be positif when journal " "item are debit and negatif when journal item are credit." msgstr "" +"Le montant précisé dans la deuxième devise doit être positif lorsque " +"l'écriture comptable est un débit et négatif quand l'écriture comptable est " +"un crédit." #. module: account #: view:account.invoice.cancel:0 @@ -1583,6 +1611,9 @@ msgid "" "And after getting confirmation from the bank it will be in 'Confirmed' " "status." msgstr "" +"Quand un relevé est créé son statut sera de type \"brouillon\".\n" +"Et après avoir reçu une confirmation de la banque son statut passera à " +"\"confirmé\"." #. module: account #: field:account.invoice.report,state:0 @@ -1594,7 +1625,7 @@ msgstr "État de la facturation" #: model:ir.actions.act_window,name:account.action_account_open_closed_fiscalyear #: model:ir.ui.menu,name:account.menu_wizard_account_open_closed_fiscalyear msgid "Cancel Closing Entries" -msgstr "" +msgstr "Annuler les écritures de clôture" #. module: account #: view:account.bank.statement:0 @@ -1633,6 +1664,8 @@ msgid "" "There is no default debit account defined \n" "on journal \"%s\"." msgstr "" +"Aucun compte de débit par défaut n'a été défini\n" +"sur le journal \"%s\"" #. module: account #: view:account.tax:0 @@ -1667,6 +1700,9 @@ msgid "" "There is nothing to reconcile. All invoices and payments\n" " have been reconciled, your partner balance is clean." msgstr "" +"Il n'y a rien à lettrer. Toutes les factures et paiements\n" +" ont été lettré, le solde de votre partenaire est " +"équilibré." #. module: account #: field:account.chart.template,code_digits:0 @@ -1846,6 +1882,19 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Cliquer pour définir un nouveau type de compte.\n" +"

\n" +" Le type de compte est utilisé pour déterminer comment un " +"compte est utilisé dans\n" +" chaque journal. La méthode d'ajournement du type de compte " +"détermine\n" +" la façon dont l'année sera clôturée. Les rapports tels que " +"le bilan\n" +" et le rapport du compte de résultat utilisent la catégorie\n" +" (produit/charge ou bilan)\n" +"

\n" +" " #. module: account #: report:account.invoice:0 @@ -1934,6 +1983,8 @@ msgid "" "The journal must have centralized counterpart without the Skipping draft " "state option checked." msgstr "" +"Le journal doit avoir ses contreparties centralisées dans le cas où l'option " +"pas de brouillon est cochée." #. module: account #: code:addons/account/account_move_line.py:857 @@ -2156,6 +2207,17 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Cliquer pour enregistrer une nouvelle facture fournisseur.\n" +"

\n" +" Vous pouvez contrôler la facture de votre fournisseur " +"selon\n" +" ce que vous avez acheté ou reçu. OpenERP peut également " +"automatiquement générer\n" +" des factures brouillon à partir des ordres d'achats ou des " +"reçus.\n" +"

\n" +" " #. module: account #: sql_constraint:account.move.line:0 @@ -2216,6 +2278,21 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Cliquer pour enregistrer un relevé de compte.\n" +"

\n" +" Un relevé de compte est un résumé de toutes vos " +"transactions financières\n" +" passées pour une période de temps donnée sur votre compte " +"en banque. Vous\n" +" pouvez le recevoir de façon périodique de votre banque.\n" +"

\n" +" OpenERP vous permet de pointer une ligne de relevé en " +"fonction\n" +" de la facture de vente ou d'achat qui lui est directement " +"liée.\n" +"

\n" +" " #. module: account #: field:account.config.settings,currency_id:0 @@ -2288,6 +2365,8 @@ msgid "" "You cannot change the type of account to '%s' type as it contains journal " "items!" msgstr "" +"Vous ne pouvez pas changer le type de compte pour un type '%s' car il " +"contient des écritures comptables." #. module: account #: model:ir.model,name:account.model_account_aged_trial_balance @@ -2685,6 +2764,11 @@ msgid "" "amount greater than the total invoiced amount. In order to avoid rounding " "issues, the latest line of your payment term must be of type 'balance'." msgstr "" +"La facture ne peut pas être créée.\n" +"Ses modalités de paiements sont probablement mal configurées car il donne un " +"montant calculé plus grand que le montant total facturé. Afin d'éviter des " +"problèmes d'arrondis, la dernière ligne de vos modalités de paiement doit " +"être du type 'équilibre'." #. module: account #: view:account.move:0 diff --git a/addons/account/i18n/mn.po b/addons/account/i18n/mn.po index e78ffc62bdf..ae960f31896 100644 --- a/addons/account/i18n/mn.po +++ b/addons/account/i18n/mn.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-04-08 11:38+0000\n" +"PO-Revision-Date: 2013-04-09 15:52+0000\n" "Last-Translator: gobi \n" "Language-Team: Mongolian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: account @@ -3118,7 +3118,7 @@ msgstr "Төлсөн/Тулгагдсан" #: field:account.tax,ref_base_code_id:0 #: field:account.tax.template,ref_base_code_id:0 msgid "Refund Base Code" -msgstr "Буцаалтын суурь ангилал" +msgstr "Буцаалтын суурь код" #. module: account #: model:ir.actions.act_window,name:account.action_bank_statement_tree @@ -5011,7 +5011,7 @@ msgstr "Хаалтын Дэд дүн" #. module: account #: field:account.tax,base_code_id:0 msgid "Account Base Code" -msgstr "Account Base Code" +msgstr "Дансны Суурь Код" #. module: account #: code:addons/account/account_move_line.py:867 @@ -5393,7 +5393,7 @@ msgstr "Бичилтийг Цуцлах" #: field:account.tax,ref_tax_code_id:0 #: field:account.tax.template,ref_tax_code_id:0 msgid "Refund Tax Code" -msgstr "Татварын Кодын Буцаалт" +msgstr "Буцаалтын Татварын Код" #. module: account #: view:account.invoice:0 diff --git a/addons/account/i18n/nl.po b/addons/account/i18n/nl.po index a4f72a14273..a2b09cf571e 100644 --- a/addons/account/i18n/nl.po +++ b/addons/account/i18n/nl.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-04-07 12:40+0000\n" +"PO-Revision-Date: 2013-04-09 15:37+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-08 06:20+0000\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: account @@ -191,10 +191,10 @@ msgstr "" "

\n" " klik hier om een fiscale periode toe te voegen.\n" "

\n" -" Een fiscale periode is vaak een maand of een kwartaal. " -"Normaal\n" -" zal dit gelijk zijn met de periode van uw Belasting " -"aangifte.\n" +" Een fiscale periode is vaak een maand of een kwartaal. Deze " +"kan\n" +" gelijk zijn met de periode van uw belasting aangifte, maar " +"dat hoeft niet.\n" "

\n" " " @@ -3609,7 +3609,7 @@ msgstr "Model" #. module: account #: help:account.invoice.tax,base_code_id:0 msgid "The account basis of the tax declaration." -msgstr "De grootboekrekening van de belastingverklaring" +msgstr "De grootboekrekening van de belastingaangifte" #. module: account #: selection:account.account,type:0 @@ -5559,7 +5559,7 @@ msgstr "Vandaag afgeletterde relaties" #. module: account #: help:account.invoice.tax,tax_code_id:0 msgid "The tax basis of the tax declaration." -msgstr "De grondslag van de belastingverklaring." +msgstr "De grondslag van de belastingaangifte" #. module: account #: view:account.addtmpl.wizard:0 @@ -8124,7 +8124,7 @@ msgstr "Referentie klant" #. module: account #: field:account.account.template,parent_id:0 msgid "Parent Account Template" -msgstr "Bovenliggerde grootboekkaart template" +msgstr "Bovenliggerde grootboekrekening sjabloon" #. module: account #: report:account.invoice:0 @@ -10166,7 +10166,7 @@ msgstr "Start periode" #. module: account #: model:ir.actions.report.xml,name:account.account_central_journal msgid "Central Journal" -msgstr "Centraal dagboek" +msgstr "Dagboek samenvatting" #. module: account #: field:account.aged.trial.balance,direction_selection:0 @@ -10740,7 +10740,7 @@ msgstr "Code/Datum" #: model:ir.model,name:account.model_account_move_line #: model:ir.ui.menu,name:account.menu_action_account_moves_all msgid "Journal Items" -msgstr "Dagboekregels" +msgstr "Boekingen" #. module: account #: view:accounting.report:0 @@ -11274,7 +11274,7 @@ msgstr "" #: code:addons/account/account_move_line.py:1059 #, python-format msgid "Unable to change tax!" -msgstr "Niet ongeluk om belasting te wijzigen" +msgstr "Het is niet mogelijk om de belasting te wijzigen" #. module: account #: constraint:account.bank.statement:0 @@ -11811,7 +11811,7 @@ msgstr "Bankrekening" #: model:ir.actions.act_window,name:account.action_account_central_journal #: model:ir.model,name:account.model_account_central_journal msgid "Account Central Journal" -msgstr "Centraal dagboek" +msgstr "Dagboek samenvatting" #. module: account #: report:account.overdue:0 diff --git a/addons/account_bank_statement_extensions/i18n/tr.po b/addons/account_bank_statement_extensions/i18n/tr.po index 09274224cbc..80bd21d716c 100644 --- a/addons/account_bank_statement_extensions/i18n/tr.po +++ b/addons/account_bank_statement_extensions/i18n/tr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-02-06 11:27+0000\n" -"Last-Translator: Ahmet Altınışık \n" +"PO-Revision-Date: 2013-04-09 18:47+0000\n" +"Last-Translator: Ayhan KIZILTAN \n" "Language-Team: OpenERP Türkiye Yerelleştirmesi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:29+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" "Language: tr\n" #. module: account_bank_statement_extensions @@ -33,7 +33,7 @@ msgstr "Onaylandı" #: view:account.bank.statement:0 #: view:account.bank.statement.line:0 msgid "Glob. Id" -msgstr "Glob. Id" +msgstr "Gen. Id" #. module: account_bank_statement_extensions #: selection:account.bank.statement.line.global,type:0 @@ -65,7 +65,7 @@ msgstr "Değer Tarihi" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Group By..." -msgstr "Grupla..." +msgstr "Gruplandır..." #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 @@ -76,14 +76,14 @@ msgstr "Taslak" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Statement" -msgstr "Ekstre" +msgstr "Hesap özeti" #. module: account_bank_statement_extensions #: view:confirm.statement.line:0 #: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line #: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line msgid "Confirm selected statement lines" -msgstr "Seçili ekstre kalemlerini onayla" +msgstr "Seçili hesap özeti kalemlerini onayla" #. module: account_bank_statement_extensions #: report:bank.statement.balance.report:0 @@ -94,7 +94,7 @@ msgstr "Banka Durumu Raporu" #. module: account_bank_statement_extensions #: view:cancel.statement.line:0 msgid "Cancel Lines" -msgstr "kalemleri İptal et" +msgstr "Kalemleri İptal et" #. module: account_bank_statement_extensions #: view:account.bank.statement.line.global:0 @@ -114,8 +114,8 @@ msgid "" "Delete operation not allowed. Please go to the associated bank " "statement in order to delete and/or modify bank statement line." msgstr "" -"Silme işlemine izin verilmemiş. Banka ekstre kalemini silmek/değiştirmek " -"için lütfen ilgili banka ekstresini açın." +"Silme işlemine izin verilmez. Banka hesap özeti kalemini silmek/değiştirmek " +"için lütfen ilgili banka hesap özetini açın." #. module: account_bank_statement_extensions #: view:confirm.statement.line:0 @@ -125,12 +125,12 @@ msgstr "ya da" #. module: account_bank_statement_extensions #: view:confirm.statement.line:0 msgid "Confirm Lines" -msgstr "kalemleri Onayla" +msgstr "Kalemleri Onayla" #. module: account_bank_statement_extensions #: view:account.bank.statement.line.global:0 msgid "Transactions" -msgstr "Hareketler" +msgstr "İşlemler" #. module: account_bank_statement_extensions #: field:account.bank.statement.line.global,type:0 @@ -146,17 +146,17 @@ msgstr "Günlük" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Confirmed Statement Lines." -msgstr "Onaylanmış ekstre kalemleri." +msgstr "Onaylanmış Hesap Özeti Kalemleri." #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Credit Transactions." -msgstr "Alacak hareketleri." +msgstr "Alacak İşlemleri." #. module: account_bank_statement_extensions #: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line msgid "cancel selected statement lines." -msgstr "Seçili ekstre kalemlerini iptal et." +msgstr "Seçili hesap özeti kalemlerini iptal et." #. module: account_bank_statement_extensions #: field:account.bank.statement.line,counterparty_number:0 @@ -177,28 +177,28 @@ msgstr "Tarih" #: view:account.bank.statement.line:0 #: field:account.bank.statement.line,globalisation_amount:0 msgid "Glob. Amount" -msgstr "Glob. Tutar" +msgstr "Gen. Tutar" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Debit Transactions." -msgstr "Borç hareketleri." +msgstr "Borç İşlemleri." #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Extended Filters..." -msgstr "Gelişmiş Filtreler..." +msgstr "Genişletişmiş Süzgeçler..." #. module: account_bank_statement_extensions #: view:confirm.statement.line:0 msgid "Confirmed lines cannot be changed anymore." -msgstr "Onaylı kalemleri artık değiştirilemez." +msgstr "Onaylı kalemler artık değiştirilemez." #. module: account_bank_statement_extensions #: view:cancel.statement.line:0 msgid "Are you sure you want to cancel the selected Bank Statement lines ?" msgstr "" -"Seçili Banka ekstre kalemlerini iptal etmek istediğinizden emin misiniz?" +"Seçili Banka Hesap Özeti kalemlerini iptal etmek istediğinizden emin misiniz?" #. module: account_bank_statement_extensions #: report:bank.statement.balance.report:0 @@ -228,7 +228,7 @@ msgstr "El ile" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Bank Transaction" -msgstr "Banka hareketleri" +msgstr "Banka İşlemleri" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 @@ -243,7 +243,7 @@ msgstr "Tutar" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Fin.Account" -msgstr "Finans Hesabı" +msgstr "Fin.Hesabı" #. module: account_bank_statement_extensions #: field:account.bank.statement.line,counterparty_currency:0 @@ -263,13 +263,13 @@ msgstr "Alt Kodlar" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Search Bank Transactions" -msgstr "Banka hareketleri ara" +msgstr "Banka İşlemi Ara" #. module: account_bank_statement_extensions #: view:confirm.statement.line:0 msgid "Are you sure you want to confirm the selected Bank Statement lines ?" msgstr "" -"Seçili Banka ekstre kalemlerini onaylamak istediğinizden emin misiniz?" +"Seçili Banka Hesap Özeti kalemlerini onaylamak istediğinizden emin misiniz?" #. module: account_bank_statement_extensions #: help:account.bank.statement.line,globalisation_id:0 @@ -277,22 +277,22 @@ msgid "" "Code to identify transactions belonging to the same globalisation level " "within a batch payment" msgstr "" -"Bir toplu ödemede aynı küreselleşme seviyesine ait işlemlerin tanımlama Kodu" +"Bir toplu ödemede aynı genelleştirme seviyesine ait işlemlerin tanımlama Kodu" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Draft Statement Lines." -msgstr "Taslak ekstre kalemleri" +msgstr "Taslak Hesap Özeti kalemleri" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Glob. Am." -msgstr "Glob. Am." +msgstr "Gen. Tut." #. module: account_bank_statement_extensions #: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line msgid "Bank Statement Line" -msgstr "Banka ekstre kalemi" +msgstr "Banka Hesap Özeti Kalemi" #. module: account_bank_statement_extensions #: field:account.bank.statement.line.global,code:0 @@ -312,12 +312,12 @@ msgstr "Banka Hesapları" #. module: account_bank_statement_extensions #: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement msgid "Bank Statement" -msgstr "Banka ekstresi" +msgstr "Banka Hesap Özeti" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Statement Line" -msgstr "Hesap Özeti Satırı" +msgstr "Hesap Özeti Kalemi" #. module: account_bank_statement_extensions #: sql_constraint:account.bank.statement.line.global:0 @@ -329,7 +329,7 @@ msgstr "Kod eşsiz olamlı!" #: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line #: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line msgid "Bank Statement Lines" -msgstr "Banka ekstre kalemleri" +msgstr "Banka Hesap Özeti Kalemleri" #. module: account_bank_statement_extensions #: code:addons/account_bank_statement_extensions/account_bank_statement.py:129 @@ -350,7 +350,7 @@ msgstr "İptal" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Statement Lines" -msgstr "Ekstre kalemleri" +msgstr "Hesap Özeti Kalemleri" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 @@ -360,4 +360,4 @@ msgstr "Toplam Tutar" #. module: account_bank_statement_extensions #: field:account.bank.statement.line,globalisation_id:0 msgid "Globalisation ID" -msgstr "Küreselleşme ID" +msgstr "Genelleştirme ID" diff --git a/addons/account_followup/i18n/nl_BE.po b/addons/account_followup/i18n/nl_BE.po index 0dd7a3cc916..a10ad0f6c04 100644 --- a/addons/account_followup/i18n/nl_BE.po +++ b/addons/account_followup/i18n/nl_BE.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-04-09 09:40+0000\n" +"Last-Translator: Els Van Vossel (Agaplan) \n" "Language-Team: Dutch (Belgium) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:30+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: account_followup #: model:email.template,subject:account_followup.email_template_account_followup_default @@ -23,12 +23,12 @@ msgstr "" #: model:email.template,subject:account_followup.email_template_account_followup_level1 #: model:email.template,subject:account_followup.email_template_account_followup_level2 msgid "${user.company_id.name} Payment Reminder" -msgstr "" +msgstr "${user.company_id.name} Aanmaning" #. module: account_followup #: help:res.partner,latest_followup_level_id:0 msgid "The maximum follow-up level" -msgstr "" +msgstr "Het maximale aanmaningsniveau" #. module: account_followup #: view:account_followup.stat:0 @@ -44,28 +44,28 @@ msgstr "Aanmanen" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(date)s" -msgstr "" +msgstr "%(date)s" #. module: account_followup #: field:res.partner,payment_next_action_date:0 msgid "Next Action Date" -msgstr "" +msgstr "Volgende actiedatum" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,manual_action:0 msgid "Manual Action" -msgstr "" +msgstr "Manuele actie" #. module: account_followup #: field:account_followup.sending.results,needprinting:0 msgid "Needs Printing" -msgstr "" +msgstr "Moet worden afgedrukt" #. module: account_followup #: field:account_followup.followup.line,manual_action_note:0 msgid "Action To Do" -msgstr "" +msgstr "Uit te voeren actie" #. module: account_followup #: field:account_followup.followup,company_id:0 @@ -90,17 +90,17 @@ msgstr "E-mail onderwerp" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(user_signature)s" -msgstr "" +msgstr "%(user_signature)s" #. module: account_followup #: view:account_followup.followup.line:0 msgid "days overdue, do the following actions:" -msgstr "" +msgstr "dagen vervallen, voer volgende acties uit:" #. module: account_followup #: view:account_followup.followup.line:0 msgid "Follow-up Steps" -msgstr "" +msgstr "Aanmaningsstappen" #. module: account_followup #: code:addons/account_followup/account_followup.py:262 @@ -225,12 +225,12 @@ msgstr "" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Partner Name" -msgstr "" +msgstr "Relatienaam" #. module: account_followup #: field:account_followup.followup.line,manual_action_responsible_id:0 msgid "Assign a Responsible" -msgstr "" +msgstr "Duid iemand aan die verantwoordelijk is" #. module: account_followup #: view:account_followup.followup:0 @@ -255,7 +255,7 @@ msgstr "Relatie" #. module: account_followup #: field:account_followup.print,email_body:0 msgid "Email Body" -msgstr "" +msgstr "E-mailbericht" #. module: account_followup #: view:account_followup.followup:0 @@ -271,6 +271,19 @@ msgid "" " same customer, the actions of the most \n" " overdue invoice will be executed." msgstr "" +"Om klanten aan te manen tot betaling, kunt u\n" +" verschillende acties instellen in functie van de " +"grootte\n" +" van het openstaand bedrag. Deze acties worden " +"samengevoegd\n" +" in aanmaningsniveaus die worden aangesproken als de\n" +" vervaldatum van een factuur een ingesteld aantal " +"dagen\n" +" overschrijdt. Als de klant ook andere openstaande " +"facturen heeft,\n" +" worden de acties uitgevoerd in functie van het " +"langst \n" +" openstaande document." #. module: account_followup #: report:account_followup.followup.print:0 @@ -285,7 +298,7 @@ msgstr "Relaties" #. module: account_followup #: sql_constraint:account_followup.followup:0 msgid "Only one follow-up per company is allowed" -msgstr "" +msgstr "Per bedrijf is maar een aanmaningsniveau toegelaten." #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:254 @@ -296,32 +309,32 @@ msgstr "Facturen aanmaning" #. module: account_followup #: help:account_followup.followup.line,send_letter:0 msgid "When processing, it will print a letter" -msgstr "" +msgstr "Bij verwerking wordt een brief gemaakt" #. module: account_followup #: field:res.partner,payment_earliest_due_date:0 msgid "Worst Due Date" -msgstr "" +msgstr "Slechtste vervaldatum" #. module: account_followup #: view:account_followup.stat:0 msgid "Not Litigation" -msgstr "" +msgstr "Geen betwisting" #. module: account_followup #: view:account_followup.print:0 msgid "Send emails and generate letters" -msgstr "" +msgstr "Verstuur e-mails en maak brieven" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_customer_followup msgid "Manual Follow-Ups" -msgstr "" +msgstr "Manuele aanmaningen" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(partner_name)s" -msgstr "" +msgstr "%(partner_name)s" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level1 @@ -372,17 +385,17 @@ msgstr "Debet" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_stat msgid "Follow-up Statistics" -msgstr "" +msgstr "Aanmaningsstatistieken" #. module: account_followup #: view:res.partner:0 msgid "Send Overdue Email" -msgstr "" +msgstr "Aanmaningsmail sturen" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup_line msgid "Follow-up Criteria" -msgstr "" +msgstr "Aanmaningscriteria" #. module: account_followup #: help:account_followup.followup.line,sequence:0 @@ -393,23 +406,23 @@ msgstr "Bepaalt de volgorde bij het afbeelden van de aanmaningregels" #: code:addons/account_followup/wizard/account_followup_print.py:166 #, python-format msgid " will be sent" -msgstr "" +msgstr " wordt verstuurd" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": User's Company Name" -msgstr "" +msgstr "Bedrijfsnaam van gebruiker" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_letter:0 msgid "Send a Letter" -msgstr "" +msgstr "Brief sturen" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form msgid "Payment Follow-ups" -msgstr "" +msgstr "Aanmaningen" #. module: account_followup #: code:addons/account_followup/report/account_followup_print.py:86 @@ -418,11 +431,13 @@ msgid "" "The followup plan defined for the current company does not have any followup " "action." msgstr "" +"Het aanmaningsschema voor het gekozen bedrijf, is niet gekoppeld aan " +"aanmaningsacties." #. module: account_followup #: field:account_followup.followup.line,delay:0 msgid "Due Days" -msgstr "" +msgstr "Dagen vervallen" #. module: account_followup #: field:account.move.line,followup_line_id:0 @@ -438,32 +453,32 @@ msgstr "Laatste aanmaning" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_manual_reconcile_followup msgid "Reconcile Invoices & Payments" -msgstr "" +msgstr "Facturen en betalingen afpunten" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_s msgid "Do Manual Follow-Ups" -msgstr "" +msgstr "Manuele aanmaningen uitvoeren" #. module: account_followup #: report:account_followup.followup.print:0 msgid "Li." -msgstr "" +msgstr "Bt." #. module: account_followup #: field:account_followup.print,email_conf:0 msgid "Send Email Confirmation" -msgstr "" +msgstr "Bevestiging per e-mail sturen" #. module: account_followup #: view:account_followup.stat:0 msgid "Follow-up Entries with period in current year" -msgstr "" +msgstr "Aanmaningen met periode in huidig jaar" #. module: account_followup #: field:account_followup.stat.by.partner,date_followup:0 msgid "Latest follow-up" -msgstr "" +msgstr "Laatste aanmaning" #. module: account_followup #: field:account_followup.print,partner_lang:0 @@ -474,12 +489,12 @@ msgstr "Stuur email-bericht in taal relatie" #: code:addons/account_followup/wizard/account_followup_print.py:169 #, python-format msgid " email(s) sent" -msgstr "" +msgstr " e-mail(s) verstuurd" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_print msgid "Print Follow-up & Send Mail to Customers" -msgstr "" +msgstr "Aanmaningen afdrukken & mail sturen naar klanten" #. module: account_followup #: field:account_followup.followup.line,description:0 @@ -489,18 +504,18 @@ msgstr "Afgedrukt bericht" #. module: account_followup #: view:res.partner:0 msgid "Responsible of credit collection" -msgstr "" +msgstr "Verantwoordelijk voor incasso" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:155 #, python-format msgid "Anybody" -msgstr "" +msgstr "Iedereen" #. module: account_followup #: help:account_followup.followup.line,send_email:0 msgid "When processing, it will send an email" -msgstr "" +msgstr "Bij verwerking wordt een e-mail verstuurd" #. module: account_followup #: view:account_followup.stat.by.partner:0 @@ -510,7 +525,7 @@ msgstr "Relatie voor aanmaning" #. module: account_followup #: view:res.partner:0 msgid "Print Overdue Payments" -msgstr "" +msgstr "Vervallen documenten afdrukken" #. module: account_followup #: field:account_followup.followup.line,followup_id:0 @@ -523,11 +538,13 @@ msgstr "Aanmaningen" #, python-format msgid "Email not sent because of email address of partner not filled in" msgstr "" +"E-mail is niet verstuurd, omdat er voor de relatie geen e-mailadres is " +"ingevuld." #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup msgid "Account Follow-up" -msgstr "" +msgstr "Aanmaningen" #. module: account_followup #: help:res.partner,payment_responsible_id:0 @@ -535,16 +552,18 @@ msgid "" "Optionally you can assign a user to this field, which will make him " "responsible for the action." msgstr "" +"U kunt eventueel een gebruiker toewijzen aan dit veld. Dit betekent dat hij " +"verantwoordelijk is voor deze actie." #. module: account_followup #: view:res.partner:0 msgid "Partners with Overdue Credits" -msgstr "" +msgstr "Klanten met openstaande facturen" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_sending_results msgid "Results from the sending of the different letters and emails" -msgstr "" +msgstr "Resultaten van het versturen van brieven en e-mails" #. module: account_followup #: constraint:account_followup.followup.line:0 @@ -552,27 +571,29 @@ msgid "" "Your description is invalid, use the right legend or %% if you want to use " "the percent character." msgstr "" +"Uw beschrijving is niet geldig. Gebruik de juiste parameter of %% als u het " +"percentageteken wilt gebruiken." #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:172 #, python-format msgid " manual action(s) assigned:" -msgstr "" +msgstr " manuele actie(s) toegewezen" #. module: account_followup #: view:res.partner:0 msgid "Search Partner" -msgstr "" +msgstr "Relatie zoeken" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_print_menu msgid "Send Letters and Emails" -msgstr "" +msgstr "Brieven en e-mails sturen" #. module: account_followup #: view:account_followup.followup:0 msgid "Search Follow-up" -msgstr "" +msgstr "Aanmaningen zoeken" #. module: account_followup #: view:res.partner:0 @@ -580,22 +601,24 @@ msgid "" "He said the problem was temporary and promised to pay 50% before 15th of " "May, balance before 1st of July." msgstr "" +"Hij zei dat het om een tijdelijk probleem ging. Hij beloofde 50% te betalen " +"voor 15 mei en het saldo voor 1 juli." #. module: account_followup #: view:res.partner:0 msgid "Account Move line" -msgstr "" +msgstr "Boeking" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:237 #, python-format msgid "Send Letters and Emails: Actions Summary" -msgstr "" +msgstr "Brieven en e-mails sturen: overzicht acties" #. module: account_followup #: view:account_followup.print:0 msgid "or" -msgstr "" +msgstr "of" #. module: account_followup #: field:account_followup.stat,blocked:0 @@ -605,17 +628,17 @@ msgstr "Geblokkeerd" #. module: account_followup #: sql_constraint:account_followup.followup.line:0 msgid "Days of the follow-up levels must be different" -msgstr "" +msgstr "De dagen moeten verschillen per aanmaningsniveau." #. module: account_followup #: view:res.partner:0 msgid "Click to mark the action as done." -msgstr "" +msgstr "Klik om de actie als Gedaan te markeren." #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_action_followup_stat_follow msgid "Follow-Ups Analysis" -msgstr "" +msgstr "Aanmaningsanalyse" #. module: account_followup #: view:res.partner:0 @@ -726,7 +749,7 @@ msgstr "" #. module: account_followup #: field:res.partner,payment_amount_due:0 msgid "Amount Due" -msgstr "" +msgstr "Vervallen bedrag" #. module: account_followup #: field:account.move.line,followup_date:0 @@ -736,19 +759,19 @@ msgstr "Laatste aanmaning" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Download Letters" -msgstr "" +msgstr "Brieven downloaden" #. module: account_followup #: field:account_followup.print,company_id:0 #: field:res.partner,unreconciled_aml_ids:0 msgid "unknown" -msgstr "" +msgstr "onbekend" #. module: account_followup #: code:addons/account_followup/account_followup.py:314 #, python-format msgid "Printed overdue payments report" -msgstr "" +msgstr "Afgedrukt aanmaningsrapport" #. module: account_followup #: code:addons/account_followup/account_followup.py:291 @@ -777,7 +800,7 @@ msgstr "" #: code:addons/account_followup/wizard/account_followup_print.py:171 #, python-format msgid " email(s) should have been sent, but " -msgstr "" +msgstr " e-mail(s) zouden moeten zijn verstuurd, maar " #. module: account_followup #: model:ir.model,name:account_followup.model_account_move_line @@ -788,28 +811,28 @@ msgstr "Boekingen" #: code:addons/account_followup/account_followup.py:281 #, python-format msgid "Amount due" -msgstr "" +msgstr "Vervallen bedrag" #. module: account_followup #: report:account_followup.followup.print:0 msgid "Total:" -msgstr "" +msgstr "Totaal:" #. module: account_followup #: field:account_followup.followup.line,email_template_id:0 msgid "Email Template" -msgstr "" +msgstr "E-mailsjabloon" #. module: account_followup #: field:account_followup.print,summary:0 msgid "Summary" -msgstr "" +msgstr "Overzicht" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_email:0 msgid "Send an Email" -msgstr "" +msgstr "E-mail versturen" #. module: account_followup #: field:account_followup.stat,credit:0 @@ -819,13 +842,13 @@ msgstr "Krediet" #. module: account_followup #: field:res.partner,payment_amount_overdue:0 msgid "Amount Overdue" -msgstr "" +msgstr "Vervallen bedrag" #. module: account_followup #: code:addons/account_followup/account_followup.py:264 #, python-format msgid "Lit." -msgstr "" +msgstr "Betw." #. module: account_followup #: help:res.partner,latest_followup_level_id_without_lit:0 @@ -833,12 +856,14 @@ msgid "" "The maximum follow-up level without taking into account the account move " "lines with litigation" msgstr "" +"Het maximale aanmaningsniveau, zonder rekening te houden met boekingen die " +"worden betwist." #. module: account_followup #: view:account_followup.stat:0 #: field:res.partner,latest_followup_date:0 msgid "Latest Follow-up Date" -msgstr "" +msgstr "Datum laatste aanmaning" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_default @@ -883,17 +908,17 @@ msgstr "Saldo" #. module: account_followup #: help:res.partner,payment_note:0 msgid "Payment Note" -msgstr "" +msgstr "Betalingsbewijs" #. module: account_followup #: view:res.partner:0 msgid "My Follow-ups" -msgstr "" +msgstr "Mijn aanmaningen" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(company_name)s" -msgstr "" +msgstr "%(company_name)s" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line1 @@ -916,23 +941,23 @@ msgstr "" #: field:account_followup.stat,date_move_last:0 #: field:account_followup.stat.by.partner,date_move_last:0 msgid "Last move" -msgstr "" +msgstr "Laatste boeking" #. module: account_followup #: field:account_followup.stat,period_id:0 msgid "Period" -msgstr "" +msgstr "Periode" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:228 #, python-format msgid "%s partners have no credits and as such the action is cleared" -msgstr "" +msgstr "%s relaties hebben geen schulden en de actie wordt gewist" #. module: account_followup #: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report msgid "Follow-up Report" -msgstr "" +msgstr "Aanmaningsrapport" #. module: account_followup #: view:res.partner:0 @@ -940,32 +965,34 @@ msgid "" ", the latest payment follow-up\n" " was:" msgstr "" +", het laatste aanmaningsniveau\n" +" was:" #. module: account_followup #: view:account_followup.print:0 msgid "Cancel" -msgstr "" +msgstr "Annuleren" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Close" -msgstr "" +msgstr "Afsluiten" #. module: account_followup #: view:account_followup.stat:0 msgid "Litigation" -msgstr "" +msgstr "Betwist" #. module: account_followup #: field:account_followup.stat.by.partner,max_followup_id:0 msgid "Max Follow Up Level" -msgstr "" +msgstr "Max. aanmaningsniveau" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:171 #, python-format msgid " had unknown email address(es)" -msgstr "" +msgstr " had een onbekend e-mailadres" #. module: account_followup #: help:account_followup.print,test_print:0 diff --git a/addons/analytic/i18n/fr.po b/addons/analytic/i18n/fr.po index 0487242a7a4..880b0cc3063 100644 --- a/addons/analytic/i18n/fr.po +++ b/addons/analytic/i18n/fr.po @@ -8,14 +8,15 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-06 15:45+0000\n" -"Last-Translator: Numérigraphe \n" +"PO-Revision-Date: 2013-04-10 02:58+0000\n" +"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) " +"\n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:31+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: analytic #: field:account.analytic.account,child_ids:0 @@ -36,7 +37,7 @@ msgstr "Contrat : " #. module: analytic #: model:mail.message.subtype,description:analytic.mt_account_pending msgid "Contract pending" -msgstr "" +msgstr "Contrat en attente" #. module: analytic #: selection:account.analytic.account,state:0 @@ -138,7 +139,7 @@ msgstr "Description" #: code:addons/analytic/analytic.py:262 #, python-format msgid "Quick account creation disallowed." -msgstr "" +msgstr "Création rapide de compte interdite." #. module: analytic #: field:account.analytic.account,message_unread:0 @@ -328,7 +329,7 @@ msgstr "Solde" #. module: analytic #: field:account.analytic.account,complete_name:0 msgid "Full Name" -msgstr "" +msgstr "Nom complet" #. module: analytic #: selection:account.analytic.account,state:0 @@ -349,18 +350,18 @@ msgstr "Date de fin" #. module: analytic #: field:account.analytic.account,code:0 msgid "Reference" -msgstr "" +msgstr "Référence" #. module: analytic #: code:addons/analytic/analytic.py:160 #, python-format msgid "Error!" -msgstr "" +msgstr "Erreur!" #. module: analytic #: model:mail.message.subtype,description:analytic.mt_account_closed msgid "Contract closed" -msgstr "" +msgstr "Contrat fermé" #. module: analytic #: model:res.groups,name:analytic.group_analytic_accounting @@ -388,13 +389,13 @@ msgstr "Devise" #. module: analytic #: model:mail.message.subtype,description:analytic.mt_account_opened msgid "Contract opened" -msgstr "" +msgstr "Contrat ouvert" #. module: analytic #: code:addons/analytic/analytic.py:262 #, python-format msgid "Warning" -msgstr "" +msgstr "Avertissement" #. module: analytic #: field:account.analytic.account,type:0 @@ -404,7 +405,7 @@ msgstr "Type de compte" #. module: analytic #: field:account.analytic.account,date_start:0 msgid "Start Date" -msgstr "" +msgstr "Date de début" #. module: analytic #: field:account.analytic.account,line_ids:0 diff --git a/addons/analytic/i18n/ro.po b/addons/analytic/i18n/ro.po index d96c8fcf53a..d6903137d43 100644 --- a/addons/analytic/i18n/ro.po +++ b/addons/analytic/i18n/ro.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: analytic diff --git a/addons/auth_signup/i18n/ru.po b/addons/auth_signup/i18n/ru.po index 59008ff3e72..92ff7fc5a6e 100644 --- a/addons/auth_signup/i18n/ru.po +++ b/addons/auth_signup/i18n/ru.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2012-12-26 08:51+0000\n" -"Last-Translator: Olga \n" +"PO-Revision-Date: 2013-04-09 13:43+0000\n" +"Last-Translator: Rinat Karimov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:32+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: auth_signup #: field:res.partner,signup_type:0 @@ -25,20 +25,20 @@ msgstr "" #. module: auth_signup #: field:base.config.settings,auth_signup_uninvited:0 msgid "Allow external users to sign up" -msgstr "" +msgstr "Разрешить регистрацию внешним пользователям" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:16 #, python-format msgid "Confirm Password" -msgstr "" +msgstr "Подтвердите пароль" #. module: auth_signup #: help:base.config.settings,auth_signup_uninvited:0 msgid "If unchecked, only invited users may sign up." msgstr "" -"Если отмечено, только приглашенные пользователи могут зарегистрироваться" +"Если не отмечено, только приглашенные пользователи могут зарегистрироваться" #. module: auth_signup #: model:ir.model,name:auth_signup.model_base_config_settings @@ -57,17 +57,17 @@ msgstr "Невозможно отправить письмо: у пользов #: code:addons/auth_signup/static/src/xml/auth_signup.xml:28 #, python-format msgid "Reset password" -msgstr "" +msgstr "Сброс пароля" #. module: auth_signup #: field:base.config.settings,auth_signup_template_user_id:0 msgid "Template user for new users created through signup" -msgstr "" +msgstr "Шаблон новых пользователей, созданных в процессе регистрации" #. module: auth_signup #: model:email.template,subject:auth_signup.reset_password_email msgid "Password reset" -msgstr "" +msgstr "Сброс пароля" #. module: auth_signup #. openerp-web @@ -82,17 +82,17 @@ msgstr "Пожалуйста, введите пароль и подтверди #: code:addons/auth_signup/static/src/xml/auth_signup.xml:26 #, python-format msgid "Sign Up" -msgstr "" +msgstr "Регистрация" #. module: auth_signup #: selection:res.users,state:0 msgid "New" -msgstr "" +msgstr "Новый" #. module: auth_signup #: field:res.users,state:0 msgid "Status" -msgstr "" +msgstr "Статус" #. module: auth_signup #: model:email.template,body_html:auth_signup.reset_password_email @@ -106,18 +106,27 @@ msgid "" "\n" "

Note: If you do not expect this, you can safely ignore this email.

" msgstr "" +"\n" +"

Был запрошен сброс пароля для аккаунта OpenERP связанного с этим адресом " +"эл.почты

\n" +"\n" +"

Вы можете сменить пароль, проследовав по ссылке.

\n" +"\n" +"

Примечание: если вы не запрашивали сброс пароля, просто проигнорируйте " +"данное письмо

" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/js/auth_signup.js:111 #, python-format msgid "Please enter a name." -msgstr "" +msgstr "Пожалуйста, введите имя" #. module: auth_signup #: model:ir.model,name:auth_signup.model_res_users msgid "Users" -msgstr "" +msgstr "Пользователи" #. module: auth_signup #: field:res.partner,signup_url:0 @@ -157,6 +166,33 @@ msgid "" " \n" " " msgstr "" +"\n" +" \n" +"

\n" +" ${object.name},\n" +"

\n" +"

\n" +" Вы были приглашены присоединиться к " +"\"${object.company_id.name}\" для доступа к вашим документам в OpenERP.\n" +"

\n" +"

\n" +" Для подтверждения приглашения пройдите по ссылке:\n" +"

\n" +" \n" +"

\n" +" Спасибо,\n" +"

\n" +"
\n"
+"--\n"
+"${object.company_id.name or ''}\n"
+"${object.company_id.email or ''}\n"
+"${object.company_id.phone or ''}\n"
+"                    
\n" +" \n" +" " #. module: auth_signup #. openerp-web @@ -168,7 +204,7 @@ msgstr "Пожалуйста, введите имя пользователя." #. module: auth_signup #: selection:res.users,state:0 msgid "Active" -msgstr "" +msgstr "Активен" #. module: auth_signup #: code:addons/auth_signup/res_users.py:269 @@ -177,6 +213,8 @@ msgid "" "Cannot send email: no outgoing email server configured.\n" "You can configure it under Settings/General Settings." msgstr "" +"Невозможно отправить email: не настроены сервера исходящей почты.\n" +"Вы можете настроить их в меню Настройки/Общие настройки" #. module: auth_signup #. openerp-web @@ -184,39 +222,40 @@ msgstr "" #, python-format msgid "An email has been sent with credentials to reset your password" msgstr "" +"На указанный адрес было выслано письмо с инструкциями по сбросу пароля" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:12 #, python-format msgid "Username" -msgstr "" +msgstr "Имя пользователя" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:8 #, python-format msgid "Name" -msgstr "" +msgstr "Имя" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/js/auth_signup.js:170 #, python-format msgid "Please enter a username or email address." -msgstr "" +msgstr "Пожалуйста, введите имя пользователя или адрес эл. почты." #. module: auth_signup #: selection:res.users,state:0 msgid "Resetting Password" -msgstr "" +msgstr "Переустановка пароля" #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:13 #, python-format msgid "Username (Email)" -msgstr "" +msgstr "Имя пользователя (Email)" #. module: auth_signup #: field:res.partner,signup_expiration:0 @@ -227,13 +266,15 @@ msgstr "" #: help:base.config.settings,auth_signup_reset_password:0 msgid "This allows users to trigger a password reset from the Login page." msgstr "" +"Это позволяет пользователям запросить сброс пароля со страницы входа в " +"систему." #. module: auth_signup #. openerp-web #: code:addons/auth_signup/static/src/xml/auth_signup.xml:22 #, python-format msgid "Log in" -msgstr "" +msgstr "Вход" #. module: auth_signup #: field:res.partner,signup_valid:0 @@ -251,7 +292,7 @@ msgstr "" #: code:addons/auth_signup/static/src/js/auth_signup.js:170 #, python-format msgid "Login" -msgstr "" +msgstr "Вход" #. module: auth_signup #. openerp-web @@ -265,7 +306,7 @@ msgstr "" #: code:addons/auth_signup/static/src/js/auth_signup.js:120 #, python-format msgid "Passwords do not match; please retype them." -msgstr "" +msgstr "Пароли не совпадают; пожалуйста, введите их заново." #. module: auth_signup #. openerp-web @@ -273,12 +314,12 @@ msgstr "" #: code:addons/auth_signup/static/src/js/auth_signup.js:167 #, python-format msgid "No database selected !" -msgstr "" +msgstr "Не выбрана база данных!" #. module: auth_signup #: field:base.config.settings,auth_signup_reset_password:0 msgid "Enable password reset from Login page" -msgstr "" +msgstr "Включить сброс пароля со страницы входа" #. module: auth_signup #: model:email.template,subject:auth_signup.set_password_email @@ -290,17 +331,17 @@ msgstr "" #: code:addons/auth_signup/static/src/xml/auth_signup.xml:27 #, python-format msgid "Back to Login" -msgstr "" +msgstr "Вернуться к странице входа" #. module: auth_signup #: model:ir.model,name:auth_signup.model_res_partner msgid "Partner" -msgstr "" +msgstr "Партнер" #. module: auth_signup #: view:res.users:0 msgid "Send reset password instructions by email" -msgstr "" +msgstr "Отправить инструкции по сбросу пароля на эл. почту" #. module: auth_signup #: field:res.partner,signup_token:0 diff --git a/addons/crm/i18n/fr.po b/addons/crm/i18n/fr.po index 59f2f63e26f..e03bcddb512 100644 --- a/addons/crm/i18n/fr.po +++ b/addons/crm/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:36+0000\n" -"PO-Revision-Date: 2013-03-21 01:52+0000\n" -"Last-Translator: Coignat \n" +"PO-Revision-Date: 2013-04-10 02:59+0000\n" +"Last-Translator: sve-openerp \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:34+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: crm #: view:crm.lead.report:0 @@ -141,7 +141,7 @@ msgstr "Clôture prévue" #. module: crm #: view:crm.phonecall:0 msgid "Cancel Call" -msgstr "" +msgstr "Annuler l'appel" #. module: crm #: help:crm.lead.report,creation_day:0 @@ -584,7 +584,7 @@ msgstr "Revenu prévu" #: code:addons/crm/crm_lead.py:970 #, python-format msgid "Customer Email" -msgstr "" +msgstr "Courriel client" #. module: crm #: field:crm.lead,planned_revenue:0 @@ -1002,7 +1002,7 @@ msgstr "Jours pour ouvrir" #. module: crm #: view:crm.lead:0 msgid "ZIP" -msgstr "" +msgstr "Code postal" #. module: crm #: field:crm.lead,mobile:0 @@ -1211,7 +1211,7 @@ msgstr "" #. module: crm #: view:crm.phonecall:0 msgid "Description..." -msgstr "" +msgstr "Description..." #. module: crm #: selection:crm.lead.report,creation_month:0 @@ -1415,7 +1415,7 @@ msgstr "Département marketing" #: code:addons/crm/crm_lead.py:569 #, python-format msgid "Merged lead" -msgstr "" +msgstr "Piste fusionnée" #. module: crm #: help:crm.lead,section_id:0 @@ -2476,7 +2476,7 @@ msgstr "Annulé" #. module: crm #: view:crm.lead:0 msgid "Street..." -msgstr "" +msgstr "Rue..." #. module: crm #: field:crm.lead.report,date_closed:0 @@ -2980,7 +2980,7 @@ msgstr "" #. module: crm #: view:crm.lead:0 msgid "Unassigned" -msgstr "" +msgstr "Non assigné" #. module: crm #: selection:crm.opportunity2phonecall,action:0 diff --git a/addons/hr/i18n/fr.po b/addons/hr/i18n/fr.po index 8cc57cc8c85..158c7319a03 100644 --- a/addons/hr/i18n/fr.po +++ b/addons/hr/i18n/fr.po @@ -8,15 +8,15 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-21 02:01+0000\n" +"PO-Revision-Date: 2013-04-10 03:02+0000\n" "Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) " "\n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:39+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: hr #: model:process.node,name:hr.process_node_openerpuser0 @@ -150,7 +150,7 @@ msgstr "Attendu en recrutement" #. module: hr #: view:hr.employee:0 msgid "Other Information ..." -msgstr "" +msgstr "Autre information..." #. module: hr #: constraint:hr.employee.category:0 @@ -411,7 +411,7 @@ msgstr "Contrat de travail de l'employé" #. module: hr #: view:hr.employee:0 msgid "e.g. Part Time" -msgstr "" +msgstr "i.e. Temps partiel" #. module: hr #: model:ir.actions.act_window,help:hr.action_hr_job diff --git a/addons/hr_contract/i18n/fr.po b/addons/hr_contract/i18n/fr.po index 17beb1480d7..86194d95904 100644 --- a/addons/hr_contract/i18n/fr.po +++ b/addons/hr_contract/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:38+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-04-10 03:03+0000\n" +"Last-Translator: Kevin Deldycke \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:40+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: hr_contract #: field:hr.contract,wage:0 @@ -45,7 +45,7 @@ msgstr "Regrouper par..." #. module: hr_contract #: view:hr.contract:0 msgid "Advantages..." -msgstr "" +msgstr "Avantages..." #. module: hr_contract #: field:hr.contract,department_id:0 @@ -108,7 +108,7 @@ msgstr "Types de contrat" #. module: hr_contract #: view:hr.employee:0 msgid "Medical Exam" -msgstr "" +msgstr "Visite médicale" #. module: hr_contract #: field:hr.contract,date_end:0 @@ -169,7 +169,7 @@ msgstr "Heures de travail" #. module: hr_contract #: view:hr.contract:0 msgid "Salary and Advantages" -msgstr "" +msgstr "Salaire et avantages" #. module: hr_contract #: field:hr.contract,job_id:0 @@ -199,7 +199,7 @@ msgstr "Visa n°" #. module: hr_contract #: field:hr.employee,vehicle_distance:0 msgid "Home-Work Dist." -msgstr "" +msgstr "Distance domicile-travail" #. module: hr_contract #: field:hr.employee,place_of_birth:0 @@ -209,7 +209,7 @@ msgstr "Lieu de Naissance" #. module: hr_contract #: view:hr.contract:0 msgid "Trial Period Duration" -msgstr "" +msgstr "Durée de la période d'essai" #. module: hr_contract #: view:hr.contract:0 diff --git a/addons/hr_holidays/i18n/fr.po b/addons/hr_holidays/i18n/fr.po index 21774f04b04..f225b8f1269 100644 --- a/addons/hr_holidays/i18n/fr.po +++ b/addons/hr_holidays/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-21 16:00+0000\n" -"Last-Translator: WANTELLET Sylvain \n" +"PO-Revision-Date: 2013-04-10 03:12+0000\n" +"Last-Translator: Bertrand Rétif \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:41+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -39,6 +39,8 @@ msgid "" "You cannot modify a leave request that has been approved. Contact a human " "resource manager." msgstr "" +"Vous ne pouvez pas modifier une demande de congé qui a déjà été approuvé. " +"Merci de contacter un responsable des ressources humaines." #. module: hr_holidays #: help:hr.holidays.status,remaining_leaves:0 @@ -63,7 +65,7 @@ msgstr "Mode d'allocation" #. module: hr_holidays #: field:hr.employee,leave_date_from:0 msgid "From Date" -msgstr "" +msgstr "Date de début" #. module: hr_holidays #: view:hr.holidays:0 @@ -75,7 +77,7 @@ msgstr "Département" #: model:ir.actions.act_window,name:hr_holidays.request_approve_allocation #: model:ir.ui.menu,name:hr_holidays.menu_request_approve_allocation msgid "Allocation Requests to Approve" -msgstr "" +msgstr "Demandes d'attribution de congés à approuver" #. module: hr_holidays #: help:hr.holidays,category_id:0 @@ -95,7 +97,7 @@ msgstr "Jours restants" #. module: hr_holidays #: xsl:holidays.summary:0 msgid "of the" -msgstr "" +msgstr "du" #. module: hr_holidays #: selection:hr.holidays,holiday_type:0 @@ -108,16 +110,18 @@ msgid "" "The default duration interval between the start date and the end date is 8 " "hours. Feel free to adapt it to your needs." msgstr "" +"La durée par défaut entre la date de début et de fin est 8 heures. Vous " +"pouvez la modifier à votre guise." #. module: hr_holidays #: model:mail.message.subtype,description:hr_holidays.mt_holidays_refused msgid "Request refused" -msgstr "" +msgstr "Demande refusée" #. module: hr_holidays #: field:hr.holidays,number_of_days_temp:0 msgid "Allocation" -msgstr "" +msgstr "Attribution" #. module: hr_holidays #: xsl:holidays.summary:0 @@ -133,6 +137,8 @@ msgstr "Cyan clair" #: constraint:hr.holidays:0 msgid "You can not have 2 leaves that overlaps on same day!" msgstr "" +"Vous ne pouvez pas avoir 2 demandes de congés qui se chevauchent dans la " +"même journée." #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -147,7 +153,7 @@ msgstr "Type d'absence" #. module: hr_holidays #: view:hr.holidays:0 msgid "Validate" -msgstr "" +msgstr "Valider" #. module: hr_holidays #: selection:hr.employee,current_leave_state:0 @@ -326,7 +332,7 @@ msgstr "Total" #: view:hr.holidays.status:0 #: model:ir.actions.act_window,name:hr_holidays.open_view_holiday_status msgid "Leave Types" -msgstr "" +msgstr "Type de congé" #. module: hr_holidays #: field:hr.holidays.status,remaining_leaves:0 @@ -447,7 +453,7 @@ msgstr "En attente d'approbation" #. module: hr_holidays #: field:hr.holidays,category_id:0 msgid "Employee Tag" -msgstr "" +msgstr "Étiquette d'employé" #. module: hr_holidays #: field:hr.holidays.summary.employee,emp:0 @@ -460,6 +466,8 @@ msgid "" "Filters only on allocations and requests that belong to an holiday type that " "is 'active' (active field is True)" msgstr "" +"Filtrer uniquement les demandes et les attributions qui ont un type de " +"congés 'actif' (champ actif est vrai)" #. module: hr_holidays #: model:ir.actions.act_window,help:hr_holidays.hr_holidays_leaves_assign_legal @@ -471,6 +479,13 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Vous pouvez attribuer des congés légaux restants pour chaque " +"employé, OpenERP\n" +" créera et validera automatiquement ces demandes " +"d'attribution.\n" +"

\n" +" " #. module: hr_holidays #: help:hr.holidays.status,categ_id:0 @@ -478,12 +493,15 @@ msgid "" "Once a leave is validated, OpenERP will create a corresponding meeting of " "this type in the calendar." msgstr "" +"Une fois la demande validée, OpenERP créera un rendez-vous de ce type dans " +"le calendrier." #. module: hr_holidays #: code:addons/hr_holidays/wizard/hr_holidays_summary_department.py:44 #, python-format msgid "You have to select at least one Department. And try again." msgstr "" +"Vous devez sélectionner au moins un département et essayer de nouveau." #. module: hr_holidays #: field:hr.holidays,parent_id:0 @@ -503,7 +521,7 @@ msgstr "Mois" #. module: hr_holidays #: field:hr.holidays,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Messages non lus" #. module: hr_holidays #: view:hr.holidays:0 @@ -530,12 +548,14 @@ msgid "" "There are not enough %s allocated for employee %s; please create an " "allocation request for this leave type." msgstr "" +"Il n'y a pas assez %s d'attribué pour l'employé %s; Merci de créer une " +"demande d'allocation pour ce type de congés." #. module: hr_holidays #: view:hr.holidays.summary.dept:0 #: view:hr.holidays.summary.employee:0 msgid "or" -msgstr "" +msgstr "ou" #. module: hr_holidays #: model:ir.actions.act_window,help:hr_holidays.open_ask_holidays @@ -550,11 +570,22 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Cliquer pour créer une nouvelle demande de congés.\n" +"

\n" +" Une fois votre demande enregistrée, elle sera envoyée\n" +" à un responsable pour validation. Merci de vous assurer " +"d'avoir bien saisi le bon\n" +" type de congés (récupération, maladie, ...) et le nombre " +"exact\n" +" de jours ouvrés correspondant à votre demande.\n" +"

\n" +" " #. module: hr_holidays #: sql_constraint:hr.holidays:0 msgid "The employee or employee category of this request is missing." -msgstr "" +msgstr "L'employé ou la catégorie d'employé de cette demande est manquant." #. module: hr_holidays #: view:hr.holidays:0 diff --git a/addons/hr_recruitment/i18n/fr.po b/addons/hr_recruitment/i18n/fr.po index 03b9481dca8..02c08b097c5 100644 --- a/addons/hr_recruitment/i18n/fr.po +++ b/addons/hr_recruitment/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-04-10 03:00+0000\n" +"Last-Translator: Christophe Combelles \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:42+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: hr_recruitment #: help:hr.applicant,active:0 @@ -577,7 +577,7 @@ msgstr "En cours" #. module: hr_recruitment #: view:hr.applicant:0 msgid "Hire & Create Employee" -msgstr "" +msgstr "Embaucher et créer l'employé" #. module: hr_recruitment #: model:mail.message.subtype,description:hr_recruitment.mt_applicant_hired diff --git a/addons/hr_timesheet/i18n/fr.po b/addons/hr_timesheet/i18n/fr.po index d73d8707436..b9244ace189 100644 --- a/addons/hr_timesheet/i18n/fr.po +++ b/addons/hr_timesheet/i18n/fr.po @@ -8,14 +8,15 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-04-10 03:15+0000\n" +"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) " +"\n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:42+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.act_analytic_cost_revenue @@ -76,7 +77,7 @@ msgstr "" #. module: hr_timesheet #: field:hr.employee,uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Unité de mesure" #. module: hr_timesheet #: field:hr.employee,journal_id:0 @@ -104,7 +105,7 @@ msgstr "Feuille de temps" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Please define employee for this user!" -msgstr "" +msgstr "SVP Veuillez définir l'employé pour cet utilisateur!" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -130,7 +131,7 @@ msgstr "Ven." #: model:ir.actions.act_window,name:hr_timesheet.act_hr_timesheet_line_evry1_all_form #: model:ir.ui.menu,name:hr_timesheet.menu_hr_working_hours msgid "Timesheet Activities" -msgstr "" +msgstr "Activités des feuilles de temps" #. module: hr_timesheet #: field:hr.sign.out.project,analytic_amount:0 @@ -167,12 +168,12 @@ msgstr "Imprimer la feuille de temps des employés" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "Please define employee for your user." -msgstr "" +msgstr "SVP Définissez l'employé pour cet utilisateur." #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.act_analytic_cost_revenue msgid "Costs & Revenues" -msgstr "" +msgstr "Coûts & revenus" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:44 @@ -189,7 +190,7 @@ msgstr "Compte analytique" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Costs and Revenues" -msgstr "" +msgstr "Coûts et revenus" #. module: hr_timesheet #: code:addons/hr_timesheet/hr_timesheet.py:144 @@ -199,7 +200,7 @@ msgstr "" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:43 #, python-format msgid "Warning!" -msgstr "" +msgstr "Avertissement!" #. module: hr_timesheet #: field:hr.analytic.timesheet,partner_id:0 @@ -255,7 +256,7 @@ msgstr "Imprimer" #. module: hr_timesheet #: help:account.analytic.account,use_timesheets:0 msgid "Check this field if this project manages timesheets" -msgstr "" +msgstr "Cochez ce champ si ce projet gère les feuilles de temps" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 @@ -281,7 +282,7 @@ msgstr "Date de début" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77 #, python-format msgid "Please define cost unit for this employee." -msgstr "" +msgstr "SVP Définissez le coût unitaire pour cet employé." #. module: hr_timesheet #: help:hr.employee,product_id:0 @@ -350,7 +351,7 @@ msgstr "Description du travail" #: view:hr.sign.in.project:0 #: view:hr.sign.out.project:0 msgid "or" -msgstr "" +msgstr "ou" #. module: hr_timesheet #: xsl:hr.analytical.timesheet:0 @@ -437,7 +438,7 @@ msgstr "juin" #: field:hr.sign.in.project,state:0 #: field:hr.sign.out.project,state:0 msgid "Current Status" -msgstr "" +msgstr "Statut actuel" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -504,7 +505,7 @@ msgstr "Identifiant de l'employé" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 msgid "Period" -msgstr "" +msgstr "Période" #. module: hr_timesheet #: view:hr.sign.out.project:0 @@ -647,7 +648,7 @@ msgstr "avril" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "User Error!" -msgstr "" +msgstr "Erreur utilisateur!" #. module: hr_timesheet #: view:hr.sign.in.project:0 @@ -663,7 +664,7 @@ msgstr "Année" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Duration" -msgstr "" +msgstr "Durée" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 diff --git a/addons/hr_timesheet_invoice/i18n/fr.po b/addons/hr_timesheet_invoice/i18n/fr.po index 4f3c15e1397..110646741b6 100644 --- a/addons/hr_timesheet_invoice/i18n/fr.po +++ b/addons/hr_timesheet_invoice/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:38+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-04-10 03:36+0000\n" +"Last-Translator: Kevin Deldycke \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:43+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 @@ -26,7 +26,7 @@ msgstr "Feuille de temps par utilisateur" #. module: hr_timesheet_invoice #: field:hr_timesheet_invoice.factor,name:0 msgid "Internal Name" -msgstr "" +msgstr "Nom interne" #. module: hr_timesheet_invoice #: view:hr_timesheet_invoice.factor:0 @@ -46,13 +46,13 @@ msgstr "" #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 #, python-format msgid "No record(s) found for this report." -msgstr "" +msgstr "Aucun enregistrement(s) trouvé pour ce rapport." #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 #, python-format msgid "Insufficient Data!" -msgstr "" +msgstr "Données insuffisantes!" #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 @@ -82,7 +82,7 @@ msgstr "Rouvrir le projet" #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,product_uom_id:0 msgid "Unit of Measure" -msgstr "" +msgstr "Unité de mesure" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_user @@ -171,7 +171,7 @@ msgstr "Montant facturé" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:188 #, python-format msgid "Analytic Account incomplete !" -msgstr "" +msgstr "Compte analytique incomplet !" #. module: hr_timesheet_invoice #: field:report_timesheet.invoice,account_id:0 @@ -181,7 +181,7 @@ msgstr "Projet" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Invoice on Timesheets Options" -msgstr "" +msgstr "Options de facturation des feuilles de temps" #. module: hr_timesheet_invoice #: field:report.account.analytic.line.to.invoice,amount:0 @@ -196,7 +196,7 @@ msgstr "Chaque travail terminé sera détaillé sur la facture" #. module: hr_timesheet_invoice #: field:account.analytic.account,pricelist_id:0 msgid "Pricelist" -msgstr "" +msgstr "Liste de prix" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create @@ -250,7 +250,7 @@ msgstr "Echéance" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:246 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Erreur de configuration!" #. module: hr_timesheet_invoice #: field:report.analytic.account.close,partner_id:0 @@ -265,7 +265,7 @@ msgstr "Le temps de chaque travail terminé sera affiché sur la facture" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Cancel Contract" -msgstr "" +msgstr "Annuler le contrat" #. module: hr_timesheet_invoice #: field:hr.timesheet.analytic.profit,date_from:0 @@ -347,7 +347,7 @@ msgstr "Forcer l'article" #. module: hr_timesheet_invoice #: view:account.analytic.account:0 msgid "Contract Finished" -msgstr "" +msgstr "Contrat terminé" #. module: hr_timesheet_invoice #: selection:report.account.analytic.line.to.invoice,month:0 @@ -361,13 +361,13 @@ msgstr "Juillet" #. module: hr_timesheet_invoice #: field:account.analytic.line,to_invoice:0 msgid "Invoiceable" -msgstr "" +msgstr "Facturable" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:56 #, python-format msgid "Warning!" -msgstr "" +msgstr "Avertissement!" #. module: hr_timesheet_invoice #: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_timesheet_invoice_factor_form @@ -383,7 +383,7 @@ msgstr "Théorique" #. module: hr_timesheet_invoice #: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor3 msgid "Free of charge" -msgstr "" +msgstr "Gratuit" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_report_account_analytic_line_to_invoice @@ -414,7 +414,7 @@ msgstr "Oui (100%)" #. module: hr_timesheet_invoice #: view:report_timesheet.user:0 msgid "Timesheet by users" -msgstr "" +msgstr "Feuilles de temps par utilisateur" #. module: hr_timesheet_invoice #: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_final_invoice_create.py:58 @@ -611,7 +611,7 @@ msgstr "Date" #: field:report_timesheet.invoice,quantity:0 #: field:report_timesheet.user,quantity:0 msgid "Time" -msgstr "" +msgstr "Temps" #. module: hr_timesheet_invoice #: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create_final @@ -665,7 +665,7 @@ msgstr "Montant forfaitaire" #. module: hr_timesheet_invoice #: field:account.analytic.account,to_invoice:0 msgid "Timesheet Invoicing Ratio" -msgstr "" +msgstr "Ratio de facturation des feuilles de temps" #. module: hr_timesheet_invoice #: selection:report.account.analytic.line.to.invoice,month:0 @@ -798,7 +798,7 @@ msgstr "L'article qui sera utilisé pour facturer le montant restant" #. module: hr_timesheet_invoice #: field:hr.timesheet.invoice.create.final,time:0 msgid "Time Spent" -msgstr "" +msgstr "Temps passé" #. module: hr_timesheet_invoice #: help:account.analytic.account,amount_max:0 @@ -837,7 +837,7 @@ msgstr "Nom" #. module: hr_timesheet_invoice #: view:report.account.analytic.line.to.invoice:0 msgid "Analytic Lines" -msgstr "" +msgstr "Lignes analytiques" #. module: hr_timesheet_invoice #: view:report_timesheet.account.date:0 @@ -898,19 +898,19 @@ msgstr "Unités" #: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:233 #, python-format msgid "Error!" -msgstr "" +msgstr "Erreur!" #. module: hr_timesheet_invoice #: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor4 msgid "80%" -msgstr "" +msgstr "80%" #. module: hr_timesheet_invoice #: view:hr.timesheet.analytic.profit:0 #: view:hr.timesheet.invoice.create:0 #: view:hr.timesheet.invoice.create.final:0 msgid "or" -msgstr "" +msgstr "ou" #. module: hr_timesheet_invoice #: field:report_timesheet.invoice,manager_id:0 @@ -940,4 +940,4 @@ msgstr "Année" #. module: hr_timesheet_invoice #: view:hr.timesheet.analytic.profit:0 msgid "Duration" -msgstr "" +msgstr "Durée" diff --git a/addons/hr_timesheet_sheet/i18n/fr.po b/addons/hr_timesheet_sheet/i18n/fr.po index 79671aa9a90..993be24efd5 100644 --- a/addons/hr_timesheet_sheet/i18n/fr.po +++ b/addons/hr_timesheet_sheet/i18n/fr.po @@ -8,14 +8,15 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-04-10 03:47+0000\n" +"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) " +"\n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:43+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: hr_timesheet_sheet #: field:hr.analytic.timesheet,sheet_id:0 @@ -34,7 +35,7 @@ msgstr "Service" #: field:hr.timesheet.report,quantity:0 #: field:timesheet.report,quantity:0 msgid "Time" -msgstr "" +msgstr "Temps" #. module: hr_timesheet_sheet #: help:hr.config.settings,timesheet_max_difference:0 @@ -77,6 +78,8 @@ msgid "" "In order to create a timesheet for this employee, you must assign an " "analytic journal to the employee, like 'Timesheet Journal'." msgstr "" +"Pour créer une feuille de temps pour cet employé, vous devez assigner un " +"journal analytique à l'employé, comme 'Journal des feuilles de temps'." #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -93,7 +96,7 @@ msgstr "Coût" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_unread:0 msgid "Unread Messages" -msgstr "" +msgstr "Messages non-lus" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -123,7 +126,7 @@ msgstr "Mettre au brouillon" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "Timesheet Period" -msgstr "" +msgstr "Période des feuilles de temps" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,date_to:0 @@ -134,7 +137,7 @@ msgstr "Date de fin" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "to" -msgstr "" +msgstr "à" #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_invoiceonwork0 @@ -147,6 +150,7 @@ msgstr "Basé sur la feuille de temps" #, python-format msgid "You cannot modify an entry in a confirmed timesheet." msgstr "" +"Vous ne pouvez pas modifier une entrée dans une feuille de temps confirmée." #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -189,13 +193,13 @@ msgstr "Refuser" #: view:hr_timesheet_sheet.sheet:0 #: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet msgid "Timesheet Activities" -msgstr "" +msgstr "Activités de la feuille de temps" #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:38 #, python-format msgid "Please create an employee and associate it with this user." -msgstr "" +msgstr "SVP Créez un employé et associez-le à cet utilisateur." #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:401 @@ -209,7 +213,7 @@ msgstr "" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:205 #, python-format msgid "Week " -msgstr "" +msgstr "Semaine " #. module: hr_timesheet_sheet #: model:ir.actions.act_window,help:hr_timesheet_sheet.action_hr_timesheet_current_open @@ -233,7 +237,7 @@ msgstr "" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_ids:0 msgid "Messages" -msgstr "" +msgstr "Messages" #. module: hr_timesheet_sheet #: help:hr_timesheet_sheet.sheet,state:0 @@ -259,7 +263,7 @@ msgstr "" #: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:38 #, python-format msgid "Error!" -msgstr "" +msgstr "Erreur!" #. module: hr_timesheet_sheet #: field:hr.config.settings,timesheet_max_difference:0 @@ -273,6 +277,8 @@ msgstr "" msgid "" "Please verify that the total difference of the sheet is lower than %.2f." msgstr "" +"Veuillez vérifier que la différence totale de la feuille est de moins de " +"%.2f." #. module: hr_timesheet_sheet #: model:ir.actions.act_window,name:hr_timesheet_sheet.action_timesheet_report_stat_all @@ -293,7 +299,7 @@ msgstr "Validation" #. module: hr_timesheet_sheet #: help:hr_timesheet_sheet.sheet,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Si coché, les nouveaux messages demanderont votre attention." #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:69 @@ -314,7 +320,7 @@ msgstr "Saisie de la feuille de temps de l'employé" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:215 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Action invalide!" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -330,6 +336,8 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"Contient le résumé de la discussion (nombre de messages, ...). Ce résumé est " +"au format HTML pour permettre son utilisation dans la vue kanban." #. module: hr_timesheet_sheet #: field:timesheet.report,nbr:0 @@ -377,7 +385,7 @@ msgstr "Lignes des feuilles de temps" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Abonnés" #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_confirmedtimesheet0 @@ -409,7 +417,7 @@ msgstr "Temps total" #: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_form #: model:ir.ui.menu,name:hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form msgid "Timesheets to Validate" -msgstr "" +msgstr "Feuilles de temps à valider" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -437,14 +445,14 @@ msgstr "Juillet" #. module: hr_timesheet_sheet #: field:hr.config.settings,timesheet_range:0 msgid "Validate timesheets every" -msgstr "" +msgstr "Valider les feuilles de temps tou(te)s les" #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:73 #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:86 #, python-format msgid "Configuration Error!" -msgstr "" +msgstr "Erreur de configuration!" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,state:0 @@ -571,7 +579,7 @@ msgstr "" #. module: hr_timesheet_sheet #: view:hr.timesheet.current.open:0 msgid "or" -msgstr "" +msgstr "ou" #. module: hr_timesheet_sheet #: model:process.transition,name:hr_timesheet_sheet.process_transition_invoiceontimesheet0 @@ -597,7 +605,7 @@ msgstr "Note" #: code:addons/hr_timesheet_sheet/static/src/xml/timesheet.xml:33 #, python-format msgid "Add" -msgstr "" +msgstr "Ajouter" #. module: hr_timesheet_sheet #: view:timesheet.report:0 @@ -640,7 +648,7 @@ msgstr "" #. module: hr_timesheet_sheet #: model:ir.model,name:hr_timesheet_sheet.model_account_analytic_line msgid "Analytic Line" -msgstr "" +msgstr "Ligne analytique" #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -651,7 +659,7 @@ msgstr "Août" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "Differences" -msgstr "" +msgstr "Différences" #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -679,7 +687,7 @@ msgstr "Feuilles de temps par période" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Est abonné" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -737,6 +745,8 @@ msgid "" "The timesheet cannot be validated as it does not contain an equal number of " "sign ins and sign outs." msgstr "" +"La feuille de temps ne peut pas être validée car elle ne contient pas un " +"nombre égal de pointage d'entrée et de pointage de sortie." #. module: hr_timesheet_sheet #: selection:hr.timesheet.report,month:0 @@ -765,6 +775,8 @@ msgstr "Résumé" #, python-format msgid "You cannot delete a timesheet which have attendance entries." msgstr "" +"Vous ne pouvez pas supprimer une feuille de temps qui possède des entrée de " +"présence." #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 @@ -778,11 +790,13 @@ msgid "" "You cannot have 2 timesheets that overlap!\n" "You should use the menu 'My Timesheet' to avoid this problem." msgstr "" +"Vous ne pouvez pas avoir 2 feuilles de temps qui se chevauchent!\n" +"Vous devriez utiliser le menu 'Ma feuille de temps' pour éviter ce problème." #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "Submit to Manager" -msgstr "" +msgstr "Soumettre au responsable" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -808,6 +822,7 @@ msgstr "Recherche de comptes" #, python-format msgid "You cannot modify an entry in a confirmed timesheet" msgstr "" +"Vous ne pouvez pas modifier une entrée dans une feuille de temps confirmée." #. module: hr_timesheet_sheet #: help:res.company,timesheet_max_difference:0 @@ -842,6 +857,8 @@ msgid "" "You cannot have 2 timesheets that overlap!\n" "Please use the menu 'My Current Timesheet' to avoid this problem." msgstr "" +"Vous ne pouvez pas avoir 2 feuilles de temps qui se chevauchent!\n" +"SVP utilisez le menu 'Ma feuille de temps actuelle' pour éviter ce problème." #. module: hr_timesheet_sheet #: view:hr.timesheet.current.open:0 @@ -899,6 +916,7 @@ msgstr "Regrouper par année" #, python-format msgid "Click to add projects, contracts or analytic accounts." msgstr "" +"Cliquez pour ajouter des projets, des contrats ou des comptes analytiques." #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_validatedtimesheet0 @@ -908,7 +926,7 @@ msgstr "L'état est à 'Validé'." #. module: hr_timesheet_sheet #: model:ir.model,name:hr_timesheet_sheet.model_hr_config_settings msgid "hr.config.settings" -msgstr "" +msgstr "hr.config.settings" #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -930,7 +948,7 @@ msgstr "Feuilles de temps confirmées" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet:0 msgid "Details" -msgstr "" +msgstr "Détails" #. module: hr_timesheet_sheet #: model:ir.model,name:hr_timesheet_sheet.model_hr_analytic_timesheet @@ -942,6 +960,7 @@ msgstr "Ligne de feuille de temps" #, python-format msgid "You cannot delete a timesheet which is already confirmed." msgstr "" +"Vous ne pouvez pas supprimer des feuilles de temps qui sont déjà confirmées." #. module: hr_timesheet_sheet #: view:hr.timesheet.report:0 @@ -1000,7 +1019,7 @@ msgstr "Total des présences" #: code:addons/hr_timesheet_sheet/static/src/xml/timesheet.xml:39 #, python-format msgid "Add a Line" -msgstr "" +msgstr "Ajouter une ligne" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,total_difference:0 @@ -1012,7 +1031,7 @@ msgstr "Différence" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:64 #, python-format msgid "You cannot duplicate a timesheet." -msgstr "" +msgstr "Vous ne pouvez pas dupliquer une feuille de temps." #. module: hr_timesheet_sheet #: selection:hr_timesheet_sheet.sheet,state_attendance:0 @@ -1047,6 +1066,8 @@ msgstr "Employés" #: constraint:hr.analytic.timesheet:0 msgid "You cannot modify an entry in a Confirmed/Done timesheet !" msgstr "" +"Vous ne pouvez pas modifier une entrée dans une feuilles de temps " +"confirmée/terminée!" #. module: hr_timesheet_sheet #: model:process.node,note:hr_timesheet_sheet.process_node_timesheet0 @@ -1068,7 +1089,7 @@ msgstr "Confirmation" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:99 #, python-format msgid "Warning!" -msgstr "" +msgstr "Avertissement!" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet.account,invoice_rate:0 @@ -1080,7 +1101,7 @@ msgstr "Taux de facturation" #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:421 #, python-format msgid "User Error!" -msgstr "" +msgstr "Erreur utilisateur!" #. module: hr_timesheet_sheet #: view:hr_timesheet_sheet.sheet.day:0 @@ -1095,7 +1116,7 @@ msgstr "Approuver" #. module: hr_timesheet_sheet #: help:hr_timesheet_sheet.sheet,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Historique des messages et communications" #. module: hr_timesheet_sheet #: field:hr_timesheet_sheet.sheet,account_ids:0 diff --git a/addons/mail/i18n/ru.po b/addons/mail/i18n/ru.po index 3c3b5094de9..f655810f8ed 100644 --- a/addons/mail/i18n/ru.po +++ b/addons/mail/i18n/ru.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-04-05 11:39+0000\n" +"PO-Revision-Date: 2013-04-09 07:27+0000\n" "Last-Translator: Paul Korotkov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-06 06:36+0000\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: mail @@ -484,7 +484,7 @@ msgstr "" #. module: mail #: view:base.config.settings:0 msgid "mycompany.my.openerp.com" -msgstr "" +msgstr "mycompany.my.openerp.com" #. module: mail #: field:mail.message.subtype,relation_field:0 @@ -872,6 +872,8 @@ msgid "" "A Python dictionary that will be evaluated to provide default values when " "creating new records for this alias." msgstr "" +"Словарь Python, который будет вычислен для получения значений по умолчанию " +"при создании записей для этого псевдонима." #. module: mail #: model:ir.model,name:mail.model_mail_message_subtype diff --git a/addons/mrp/i18n/ro.po b/addons/mrp/i18n/ro.po index d5fab4a2067..472c04cbe7e 100644 --- a/addons/mrp/i18n/ro.po +++ b/addons/mrp/i18n/ro.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: mrp diff --git a/addons/point_of_sale/i18n/mn.po b/addons/point_of_sale/i18n/mn.po index 0d5bb6649ac..fa323661bf7 100644 --- a/addons/point_of_sale/i18n/mn.po +++ b/addons/point_of_sale/i18n/mn.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-04-09 01:37+0000\n" +"PO-Revision-Date: 2013-04-09 08:52+0000\n" "Last-Translator: erdenebold \n" "Language-Team: Mongolian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: point_of_sale @@ -1106,7 +1106,7 @@ msgstr "" #. module: point_of_sale #: view:pos.session:0 msgid "payment method." -msgstr "" +msgstr "Төлбөрийн арга" #. module: point_of_sale #: view:pos.order:0 @@ -1311,7 +1311,7 @@ msgstr "Нэхэмжилсэн дүн" #: model:ir.model,name:point_of_sale.model_pos_category #: field:product.product,pos_categ_id:0 msgid "Point of Sale Category" -msgstr "" +msgstr "Кассын ангилал" #. module: point_of_sale #: view:report.pos.order:0 @@ -1918,7 +1918,7 @@ msgstr "" #: model:ir.actions.act_window,name:point_of_sale.action_report_pos_order_all #: model:ir.ui.menu,name:point_of_sale.menu_report_pos_order_all msgid "Orders Analysis" -msgstr "" +msgstr "Захиалгын анализ" #. module: point_of_sale #. openerp-web diff --git a/addons/portal_anonymous/i18n/ru.po b/addons/portal_anonymous/i18n/ru.po new file mode 100644 index 00000000000..6b86f122082 --- /dev/null +++ b/addons/portal_anonymous/i18n/ru.po @@ -0,0 +1,25 @@ +# Russian translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2013-03-07 08:38+0000\n" +"PO-Revision-Date: 2013-04-09 13:04+0000\n" +"Last-Translator: Rinat Karimov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" + +#. module: portal_anonymous +#. openerp-web +#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8 +#, python-format +msgid "Login" +msgstr "Вход" diff --git a/addons/product/i18n/nl.po b/addons/product/i18n/nl.po index b1c7b04e428..9e0dd15b887 100644 --- a/addons/product/i18n/nl.po +++ b/addons/product/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:38+0000\n" -"PO-Revision-Date: 2013-03-27 09:05+0000\n" +"PO-Revision-Date: 2013-04-09 19:39+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-28 05:54+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: product #: field:product.packaging,rows:0 @@ -2138,7 +2138,7 @@ msgstr "" "

\n" " Klik voor het aanmaken van een nieuw product.\n" "

\n" -" U dien een product aan te maken van alles wat u inkoopt, dit " +" U dient een product aan te maken van alles wat u inkoopt, dit " "kan \n" " een voorraad product, een verbruiksartikel of diensten zijn, " "van\n" @@ -2299,8 +2299,8 @@ msgstr "" "

\n" " Klik voor het aanmaken van een nieuw product.\n" "

\n" -" U dien een product aan te maken van alles wat u verkoopt, dit " -"kan \n" +" U dient een product aan te maken van alles wat u verkoopt, " +"dit kan \n" " een voorraad product, een verbruiksartikel of diensten zijn, " "van\n" " onderaannemers\n" diff --git a/addons/project/i18n/sl.po b/addons/project/i18n/sl.po index b5f8ebf92db..7f7620e5ee4 100644 --- a/addons/project/i18n/sl.po +++ b/addons/project/i18n/sl.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-04-08 14:34+0000\n" +"PO-Revision-Date: 2013-04-09 15:55+0000\n" "Last-Translator: Dušan Laznik (Mentis) \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-04-09 05:59+0000\n" +"X-Launchpad-Export-Date: 2013-04-10 05:54+0000\n" "X-Generator: Launchpad (build 16550)\n" #. module: project @@ -622,7 +622,7 @@ msgstr "Zgodovina aktivnosti na nalogah" #. module: project #: model:project.task.type,name:project.project_tt_analysis msgid "Analysis" -msgstr "Analiza" +msgstr "Novo" #. module: project #: field:project.task,name:0 From 3887d1e6fa8a7ad3339ac8710760721bacd2404a Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Wed, 10 Apr 2013 10:46:38 +0200 Subject: [PATCH 054/107] [FIX] Adapt like issues and tasks bzr revid: jco@openerp.com-20130410084638-v9yeobgc91yy7lyx --- addons/project_long_term/project_long_term.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index 2afaeb40eb0..109f0c03c6f 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -283,9 +283,11 @@ class account_analytic_account(osv.osv): res['value']['use_phases'] = template.use_phases return res + def _trigger_project_creation(self, cr, uid, vals, context=None): - res= super(account_analytic_account, self)._trigger_project_creation(cr, uid, vals, context=context) - return res + if context is None: context = {} + res = super(account_analytic_account, self)._trigger_project_creation(cr, uid, vals, context=context) + return res or (vals.get('use_phases') and not 'project_creation_in_progress' in context) account_analytic_account() From e2e345169762e3756fcea89b15de86158ece326f Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Wed, 10 Apr 2013 10:54:30 +0200 Subject: [PATCH 055/107] =?UTF-8?q?[FIX]l10n=5Fbe:=20remove=20bad=20accoun?= =?UTF-8?q?t=20from=20fiscal=20position=20R=C3=A9gime=20National?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bzr revid: csn@openerp.com-20130410085430-ovtiyhj8ilhfe9rk --- addons/l10n_be/fiscal_templates.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/addons/l10n_be/fiscal_templates.xml b/addons/l10n_be/fiscal_templates.xml index 5e26a7e67c1..5cf5a21381b 100644 --- a/addons/l10n_be/fiscal_templates.xml +++ b/addons/l10n_be/fiscal_templates.xml @@ -22,12 +22,6 @@ - - - - - - From 241b9ee07a5f16b1184222dc4fbef8751013fae3 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 10 Apr 2013 14:20:11 +0200 Subject: [PATCH 056/107] [IMP] analytic: add the 'visibility tracking' on some fields in the chatter, to log when an important thing is changed bzr revid: qdp-launchpad@openerp.com-20130410122011-xgih371ewlxc7aq5 --- addons/analytic/analytic.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 42651acb0c6..ac298713b04 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -171,9 +171,9 @@ class account_analytic_account(osv.osv): return result _columns = { - 'name': fields.char('Account/Contract Name', size=128, required=True), + 'name': fields.char('Account/Contract Name', size=128, required=True, track_visibility='onchange'), 'complete_name': fields.function(_get_full_name, type='char', string='Full Name'), - 'code': fields.char('Reference', select=True), + 'code': fields.char('Reference', select=True, track_visibility='onchange'), 'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Contract')], 'Type of Account', required=True, help="If you select the View Type, it means you won\'t allow to create journal entries using that account.\n"\ "The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"\ @@ -191,10 +191,10 @@ class account_analytic_account(osv.osv): 'quantity': fields.function(_debit_credit_bal_qtty, type='float', string='Quantity', multi='debit_credit_bal_qtty'), 'quantity_max': fields.float('Prepaid Service Units', help='Sets the higher limit of time to work on the contract, based on the timesheet. (for instance, number of hours in a limited support contract.)'), 'partner_id': fields.many2one('res.partner', 'Customer'), - 'user_id': fields.many2one('res.users', 'Project Manager'), - 'manager_id': fields.many2one('res.users', 'Account Manager'), + 'user_id': fields.many2one('res.users', 'Project Manager', track_visibility='onchange'), + 'manager_id': fields.many2one('res.users', 'Account Manager', track_visibility='onchange'), 'date_start': fields.date('Start Date'), - 'date': fields.date('End Date', select=True), + 'date': fields.date('End Date', select=True, track_visibility='onchange'), 'company_id': fields.many2one('res.company', 'Company', required=False), #not required because we want to allow different companies to use the same chart of account, except for leaf accounts. 'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'),('pending','To Renew'),('close','Closed'),('cancelled', 'Cancelled')], 'Status', required=True, track_visibility='onchange'), 'currency_id': fields.function(_currency, fnct_inv=_set_company_currency, #the currency_id field is readonly except if it's a view account and if there is no company From f9945297255f59ee8864d3a12602a54f95cbb9df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 11 Apr 2013 12:17:20 +0200 Subject: [PATCH 057/107] [IMP] mail: finding partner based on email: improved code for suggested partners, added somme comments and tests. bzr revid: tde@openerp.com-20130411101720-mumz152dsxvv1xbj --- addons/mail/mail_thread.py | 22 ++++++++---- addons/mail/static/src/js/mail.js | 3 +- addons/mail/tests/test_mail_gateway.py | 46 ++++++++++++++++++++++++-- 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index c5ec5300b56..1cb3cc5d7e4 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -415,7 +415,9 @@ class mail_thread(osv.AbstractModel): return ret_dict def _message_find_partners(self, cr, uid, message, header_fields=['From'], context=None): - """ Find partners related to some header fields of the message. """ + """ Find partners related to some header fields of the message. + + TDE TODO: merge me with other partner finding methods in 8.0 """ partner_obj = self.pool.get('res.partner') partner_ids = [] s = ', '.join([decode(message.get(h)) for h in header_fields if message.get(h)]) @@ -427,6 +429,7 @@ class mail_thread(osv.AbstractModel): return partner_ids def _message_find_user_id(self, cr, uid, message, context=None): + """ TDE TODO: check and maybe merge me with other user finding methods in 8.0 """ from_local_part = tools.email_split(decode(message.get('From')))[0] # FP Note: canonification required, the minimu: .lower() user_ids = self.pool.get('res.users').search(cr, uid, ['|', @@ -878,7 +881,9 @@ class mail_thread(osv.AbstractModel): return result def message_get_partner_info_from_emails(self, cr, uid, emails, link_mail=False, context=None, res_id=None): - """ Wrapper with weird order parameter because of 7.0 fix. """ + """ Wrapper with weird order parameter because of 7.0 fix. + + TDE TODO: remove me in 8.0 """ return self.message_find_partner_from_emails(cr, uid, res_id, emails, link_mail=link_mail, context=context) def message_find_partner_from_emails(self, cr, uid, id, emails, link_mail=False, context=None): @@ -887,11 +892,12 @@ class mail_thread(osv.AbstractModel): it is meant to be used by the mail widget. :return dict: partner_ids and new_partner_ids - """ + + TDE TODO: merge me with other partner finding methods in 8.0 """ mail_message_obj = self.pool.get('mail.message') partner_obj = self.pool.get('res.partner') result = list() - if id: + if id and self._name != 'mail.thrad': obj = self.browse(cr, SUPERUSER_ID, id, context=context) else: obj = None @@ -908,13 +914,15 @@ class mail_thread(osv.AbstractModel): partner_info['partner_id'] = follower.id # second try: check in partners if not partner_info.get('partner_id'): - ids = partner_obj.search(cr, SUPERUSER_ID, [('email', '=', email_address)], context=context) + ids = partner_obj.search(cr, SUPERUSER_ID, [('email', 'ilike', email_address), ('user_ids', '!=', False)], limit=1, context=context) + if not ids: + ids = partner_obj.search(cr, SUPERUSER_ID, [('email', 'ilike', email_address)], limit=1, context=context) if ids: partner_info['partner_id'] = ids[0] result.append(partner_info) # link mail with this from mail to the new partner id - if link_mail and ids: + if link_mail and partner_info['partner_id']: message_ids = mail_message_obj.search(cr, SUPERUSER_ID, [ '|', ('email_from', '=', email), @@ -922,7 +930,7 @@ class mail_thread(osv.AbstractModel): ('author_id', '=', False) ], context=context) if message_ids: - mail_message_obj.write(cr, SUPERUSER_ID, message_ids, {'author_id': ids[0]}, context=context) + mail_message_obj.write(cr, SUPERUSER_ID, message_ids, {'author_id': partner_info['partner_id']}, context=context) return result def message_post(self, cr, uid, thread_id, body='', subject=None, type='notification', diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index d715979c507..00681e81a78 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -620,7 +620,6 @@ openerp.mail = function (session) { // have unknown names -> call message_get_partner_info_from_emails to try to find partner_id var find_done = $.Deferred(); if (names_to_find.length > 0) { - // find_done = self.parent_thread.ds_thread._model.call('message_get_partner_info_from_emails', [names_to_find]); var values = { 'res_id': this.context.default_res_id, } @@ -672,7 +671,7 @@ openerp.mail = function (session) { if (new_names_to_find.length > 0) { var values = { 'link_mail': true, - 'res_id': this.context.default_res_id, + 'res_id': self.context.default_res_id, } find_done = self.parent_thread.ds_thread._model.call('message_get_partner_info_from_emails', [new_names_to_find], values); } diff --git a/addons/mail/tests/test_mail_gateway.py b/addons/mail/tests/test_mail_gateway.py index a68011298c7..e4269d59d8b 100644 --- a/addons/mail/tests/test_mail_gateway.py +++ b/addons/mail/tests/test_mail_gateway.py @@ -83,7 +83,47 @@ Sylvie class TestMailgateway(TestMailBase): - def test_00_message_process(self): + def test_00_partner_find_from_email(self): + """ Tests designed for partner fetch based on emails. """ + cr, uid, user_raoul, group_pigs = self.cr, self.uid, self.user_raoul, self.group_pigs + + # -------------------------------------------------- + # Data creation + # -------------------------------------------------- + # 1 - Partner ARaoul + p_a_id = self.res_partner.create(cr, uid, {'name': 'ARaoul', 'email': 'test@test.fr'}) + + # -------------------------------------------------- + # CASE1: without object + # -------------------------------------------------- + + # Do: find partner with email -> first partner should be found + partner_info = self.mail_thread.message_find_partner_from_emails(cr, uid, None, ['Maybe Raoul '], link_mail=False)[0] + self.assertEqual(partner_info['full_name'], 'Maybe Raoul ', + 'mail_thread: message_find_partner_from_emails did not handle email') + self.assertEqual(partner_info['partner_id'], p_a_id, + 'mail_thread: message_find_partner_from_emails wrong partner found') + + # Data: add some data about partners + # 2 - User BRaoul + p_b_id = self.res_partner.create(cr, uid, {'name': 'BRaoul', 'email': 'test@test.fr', 'user_ids': [(4, user_raoul.id)]}) + + # Do: find partner with email -> first user should be found + partner_info = self.mail_thread.message_find_partner_from_emails(cr, uid, None, ['Maybe Raoul '], link_mail=False)[0] + self.assertEqual(partner_info['partner_id'], p_b_id, + 'mail_thread: message_find_partner_from_emails wrong partner found') + + # -------------------------------------------------- + # CASE1: with object + # -------------------------------------------------- + + # Do: find partner in group where there is a follower with the email -> should be taken + self.mail_group.message_subscribe(cr, uid, [group_pigs.id], [p_b_id]) + partner_info = self.mail_group.message_find_partner_from_emails(cr, uid, group_pigs.id, ['Maybe Raoul '], link_mail=False)[0] + self.assertEqual(partner_info['partner_id'], p_b_id, + 'mail_thread: message_find_partner_from_emails wrong partner found') + + def test_10_message_process(self): """ Testing incoming emails processing. """ cr, uid, user_raoul = self.cr, self.uid, self.user_raoul @@ -325,7 +365,7 @@ class TestMailgateway(TestMailBase): self.assertEqual(msg.body, '

\nPlease call me as soon as possible this afternoon!\n\n--\nSylvie\n
', 'message_process: plaintext incoming email incorrectly parsed') - def test_10_thread_parent_resolution(self): + def test_20_thread_parent_resolution(self): """ Testing parent/child relationships are correctly established when processing incoming mails """ cr, uid = self.cr, self.uid @@ -370,7 +410,7 @@ class TestMailgateway(TestMailBase): self.assertEqual(6, len(group_pigs.message_ids), 'message_process: group should contain 6 messages') self.assertEqual(3, len(msg1.child_ids), 'message_process: msg1 should have 3 children now') - def test_20_private_discussion(self): + def test_30_private_discussion(self): """ Testing private discussion between partners. """ cr, uid = self.cr, self.uid From 9e4486ae528e97e364e995b5bb3396f1e6b0dd84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 11 Apr 2013 12:46:59 +0200 Subject: [PATCH 058/107] [FIX] mail: fixed missing conflict resolution bzr revid: tde@openerp.com-20130411104659-ik62af6wubzu5j6q --- addons/mail/wizard/mail_compose_message.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index 205fa3a8ef0..301dff515b3 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -21,11 +21,7 @@ import re from openerp import tools -<<<<<<< TREE -======= - from openerp import SUPERUSER_ID ->>>>>>> MERGE-SOURCE from openerp.osv import osv from openerp.osv import fields from openerp.tools.safe_eval import safe_eval as eval From ee844c0ac678153015b1dc7854b0acfc0b8f9bcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 11 Apr 2013 14:33:56 +0200 Subject: [PATCH 059/107] [FIX] crm: fixed on_change_user that was crashing because refers to a default_section_id field that is added in sale_crm bridge module. New behavior is : one of the team user_id is a member (crm), or default_section_id if defined or default behavior (sale_crm) bzr revid: tde@openerp.com-20130411123356-kc8ty16i71nwgzsm --- addons/crm/crm_lead.py | 11 +++++++---- addons/crm/crm_lead_view.xml | 2 +- addons/sale_crm/sale_crm.py | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 509bcf106b6..7dd4d0e1064 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -357,11 +357,14 @@ class crm_lead(base_stage, format_address, osv.osv): return {'value' : values} def on_change_user(self, cr, uid, ids, user_id, context=None): + """ When changing the user, also set a section_id or restrict section id + to the ones user_id is member of. """ + section_id = False if user_id: - user = self.pool.get('res.users').browse(cr, uid, user_id, context=context) - return {'value':{'section_id': user.default_section_id and user.default_section_id.id or False}} - else: - return {'value':{'section_id':False}} + section_ids = self.pool.get('crm.case.section').search(cr, uid, ['|', ('user_id', '=', user_id), ('member_ids', '=', user_id)], context=context) + if section_ids: + section_id = section_ids[0] + return {'value': {'section_id': section_id}} def _check(self, cr, uid, ids=False, context=None): """ Override of the base.stage method. diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index c14686b7211..fb18e747fd7 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -152,7 +152,7 @@ --> - + - +