From c54383d4e5b0681acdad0c9ebf854f8fc131c9cc Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 23 May 2012 12:49:59 +0200 Subject: [PATCH 001/478] [IMP] extract key-creation in custom filters, store complete filter descriptor as well (in a separate mapping) bzr revid: xmo@openerp.com-20120523104959-859cuucade83u11o --- addons/web/static/src/js/search.js | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index e569e44df28..6d4892dc3c0 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1540,6 +1540,7 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({ var self = this; this.model = new instance.web.Model('ir.filters'); this.filters = {}; + this.$filters = {}; this.$element.on('submit', 'form', this.proxy('save_current')); this.$element.on('click', 'h4', function () { self.$element.toggleClass('oe_opened'); @@ -1549,16 +1550,34 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({ model: this.view.model }).pipe(this.proxy('set_filters')); }, + /** + * Generates a mapping key (in the filters and $filter mappings) for the + * filter descriptor object provided (as returned by ``get_filters``). + * + * The mapping key is guaranteed to be unique for a given (user_id, name) + * pair. + * + * @param {Object} filter + * @param {String} filter.name + * @param {Number|Pair} [filter.user_id] + * @return {String} mapping key corresponding to the filter + */ + key_for: function (filter) { + var user_id = filter.user_id; + var uid = (user_id instanceof Array) ? user_id[0] : user_id; + return _.str.sprintf('(%s)%s', uid, filter.name); + }, append_filter: function (filter) { var self = this; - var key = _.str.sprintf('(%s)%s', filter.user_id, filter.name); + var key = this.key_for(filter); var $filter; - if (key in this.filters) { - $filter = this.filters[key]; + if (key in this.$filters) { + $filter = this.$filters[key]; } else { var id = filter.id; - $filter = this.filters[key] = $('
  • ') + this.filters[key] = filter; + $filter = this.$filters[key] = $('
  • ') .appendTo(this.$element.find('.oe_searchview_custom_list')) .addClass(filter.user_id ? 'oe_searchview_custom_private' : 'oe_searchview_custom_public') @@ -1570,6 +1589,8 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({ e.stopPropagation(); self.model.call('unlink', [id]).then(function () { $filter.remove(); + delete self.$filters[key]; + delete self.filters[key]; }); }) .appendTo($filter); From 9168a66d6a5403495d74bb9136b85438004540ed Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 23 May 2012 13:23:14 +0200 Subject: [PATCH 002/478] [ADD] is_default custom filters * Second checkbox when creating a custom filter, unchecked by default * Global is_default filter overrides action defaults * Personal is_default filter overrides global is_default * Extracted sections of CustomFilter's behavior into methods to make them usable from the SearchView and easier to understand Hack note: CustomFilters#facet_for_defaults is weird stuff, it never fetches an actual facet, but it forces the SearchView's defaults handling to wait until CustomFilters is ready before executing, meaning SearchView#setup_default_query can run safe in the knowledge that custom filters are filled and everything. That this hidden dependency exists bugs me, though there's a comment. bzr revid: xmo@openerp.com-20120523112314-618hfttpegn39qey --- addons/web/static/src/js/search.js | 95 ++++++++++++++++++++++++------ addons/web/static/src/xml/base.xml | 2 + 2 files changed, 80 insertions(+), 17 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 6d4892dc3c0..31650632850 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -632,7 +632,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea // add Filters to this.inputs, need view.controls filled (new instance.web.search.Filters(this)); // add custom filters to this.inputs - (new instance.web.search.CustomFilters(this)); + this.custom_filters = new instance.web.search.CustomFilters(this); // add Advanced to this.inputs (new instance.web.search.Advanced(this)); @@ -643,13 +643,40 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea // load defaults var defaults_fetched = $.when.apply(null, _(this.inputs).invoke( - 'facet_for_defaults', this.defaults)).then(function () { - self.query.reset(_(arguments).compact(), {preventSearch: true}); - }); + 'facet_for_defaults', this.defaults)) + .pipe(this.proxy('setup_default_query')); return $.when(drawer_started, defaults_fetched) .then(function () { self.ready.resolve(); }) }, + setup_default_query: function () { + // Hacky implementation of CustomFilters#facet_for_defaults ensure + // CustomFilters will be ready (and CustomFilters#filters will be + // correctly filled) by the time this method executes. + var custom_filters = this.custom_filters.filters; + if (!_(custom_filters).isEmpty()) { + // Check for any is_default custom filter + var personal_filter = _(custom_filters).find(function (filter) { + return filter.user_id && filter.is_default; + }); + if (personal_filter) { + this.query.reset([this.custom_filters.facet_for(personal_filter)], + {preventSearch: true}); + return; + } + + var global_filter = _(custom_filters).find(function (filter) { + return !filter.user_id && filter.is_default; + }); + if (global_filter) { + this.query.reset([this.custom_filters.facet_for(global_filter)], + {preventSearch: true}); + return; + } + } + // No custom filter, or no is_default custom filter, apply view defaults + this.query.reset(_(arguments).compact(), {preventSearch: true}); + }, /** * Handle event when the user make a selection in the filters management select box. */ @@ -1536,6 +1563,10 @@ instance.web.search.ManyToOneField = instance.web.search.CharField.extend({ instance.web.search.CustomFilters = instance.web.search.Input.extend({ template: 'SearchView.CustomFilters', _in_drawer: true, + init: function () { + this.is_ready = $.Deferred(); + this._super.apply(this, arguments); + }, start: function () { var self = this; this.model = new instance.web.Model('ir.filters'); @@ -1548,7 +1579,18 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({ // FIXME: local eval of domain and context to get rid of special endpoint return this.rpc('/web/searchview/get_filters', { model: this.view.model - }).pipe(this.proxy('set_filters')); + }).pipe(this.proxy('set_filters')) + .then(function () { + self.is_ready.resolve(null); + }, function () { + self.is_ready.reject(); + }); + }, + /** + * Special implementation delaying defaults until CustomFilters is loaded + */ + facet_for_defaults: function () { + return this.is_ready; }, /** * Generates a mapping key (in the filters and $filter mappings) for the @@ -1567,6 +1609,30 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({ var uid = (user_id instanceof Array) ? user_id[0] : user_id; return _.str.sprintf('(%s)%s', uid, filter.name); }, + /** + * Generates a :js:class:`~instance.web.search.Facet` descriptor from a + * filter descriptor + * + * @param {Object} filter + * @param {String} filter.name + * @param {Object} [filter.context] + * @param {Array} [filter.domain] + * @return {Object} + */ + facet_for: function (filter) { + return { + category: _("Custom Filter"), + icon: 'M', + field: { + get_context: function () { return filter.context; }, + get_groupby: function () { return [filter.context]; }, + get_domain: function () { return filter.domain; } + }, + values: [ + {label: filter.name, value: null} + ] + }; + }, append_filter: function (filter) { var self = this; var key = this.key_for(filter); @@ -1597,16 +1663,7 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({ } $filter.unbind('click').click(function () { - self.view.query.reset([{ - category: _("Custom Filter"), - icon: 'M', - field: { - get_context: function () { return filter.context; }, - get_groupby: function () { return [filter.context]; }, - get_domain: function () { return filter.domain; } - }, - values: [{label: filter.name, value: null}] - }]); + self.view.query.reset([self.facet_for(filter)]); }); }, set_filters: function (filters) { @@ -1615,7 +1672,10 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({ save_current: function () { var self = this; var $name = this.$element.find('input:first'); - var private_filter = !this.$element.find('input:last').prop('checked'); + var private_filter = !this.$element.find( + 'input#oe_searchview_custom_public').prop('checked'); + var set_as_default = this.$element.find( + 'input#oe_searchview_custom_default').prop('checked'); var search = this.view.build_search_data(); this.rpc('/web/session/eval_domain_and_context', { @@ -1631,7 +1691,8 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({ user_id: private_filter ? instance.connection.uid : false, model_id: self.view.model, context: results.context, - domain: results.domain + domain: results.domain, + is_default: set_as_default }; // FIXME: current context? return self.model.call('create_or_replace', [filter]).then(function (id) { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 86b2f67cf62..7047b722462 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1487,6 +1487,8 @@
    + +
    From 4a8e00cac7ba39a99f2a4fac9cdd4a4f171370ed Mon Sep 17 00:00:00 2001 From: "Mayur Maheshwari (OpenERP)" Date: Mon, 25 Jun 2012 12:21:09 +0530 Subject: [PATCH 003/478] [FIX]base:fix the issue convert to quote is not working via Scheduled Calls lp bug: https://launchpad.net/bugs/1017353 fixed bzr revid: mma@tinyerp.com-20120625065109-5ciy82syodgtbcg9 --- addons/sale_crm/wizard/crm_make_sale.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/sale_crm/wizard/crm_make_sale.py b/addons/sale_crm/wizard/crm_make_sale.py index 9484b87652e..fd84e33610f 100644 --- a/addons/sale_crm/wizard/crm_make_sale.py +++ b/addons/sale_crm/wizard/crm_make_sale.py @@ -64,7 +64,9 @@ class crm_make_sale(osv.osv_memory): """ if context is None: context = {} - + # update context: if come from phonecall, default state values can make the quote crash lp:1017353 + context.pop('default_state', False) + case_obj = self.pool.get('crm.lead') sale_obj = self.pool.get('sale.order') partner_obj = self.pool.get('res.partner') From e46502580a5c9e19c31e15dd308e99307bbb68ed Mon Sep 17 00:00:00 2001 From: "Bharat Devnani (OpenERP)" Date: Wed, 25 Jul 2012 16:43:27 +0530 Subject: [PATCH 004/478] [IMP] changed the condition in def create_move of account_asset/account_asset.py bzr revid: bde@tinyerp.com-20120725111327-rd1se9de0yoj8wgg --- addons/account_asset/account_asset.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py index 8cd73c60aa7..fe0ee8b3922 100644 --- a/addons/account_asset/account_asset.py +++ b/addons/account_asset/account_asset.py @@ -366,8 +366,6 @@ class account_asset_depreciation_line(osv.osv): currency_obj = self.pool.get('res.currency') created_move_ids = [] for line in self.browse(cr, uid, ids, context=context): - if currency_obj.is_zero(cr, uid, line.asset_id.currency_id, line.remaining_value): - can_close = True depreciation_date = line.asset_id.prorata and line.asset_id.purchase_date or time.strftime('%Y-%m-%d') period_ids = period_obj.find(cr, uid, depreciation_date, context=context) company_currency = line.asset_id.company_id.currency_id.id @@ -419,6 +417,8 @@ class account_asset_depreciation_line(osv.osv): }) self.write(cr, uid, line.id, {'move_id': move_id}, context=context) created_move_ids.append(move_id) + if currency_obj.is_zero(cr, uid, line.asset_id.currency_id, line.asset_id.value_residual): + can_close = True if can_close: asset_obj.write(cr, uid, [line.asset_id.id], {'state': 'close'}, context=context) return created_move_ids From 2723b201295f6f29c121b869f20df6a576d2ec02 Mon Sep 17 00:00:00 2001 From: Rifakat Date: Mon, 1 Oct 2012 17:22:25 +0530 Subject: [PATCH 005/478] [FIX] stock: corrected picking type of an internal move from Outgoing to Internal lp bug: https://launchpad.net/bugs/890476 fixed bzr revid: rha@tinyerp.com-20121001115225-fg97r5fdttyc09js --- addons/stock/stock.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 8e1180352c2..cc0862bc40b 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -2125,7 +2125,7 @@ class stock_move(osv.osv): old_ptype = location_obj.picking_type_get(cr, uid, picking.move_lines[0].location_id, picking.move_lines[0].location_dest_id) if old_ptype != picking.type: old_pick_name = seq_obj.get(cr, uid, 'stock.picking.' + old_ptype) - self.pool.get('stock.picking').write(cr, uid, [picking.id], {'name': old_pick_name}, context=context) + self.pool.get('stock.picking').write(cr, uid, [picking.id], {'name': old_pick_name, 'type': old_ptype}, context=context) else: pickid = False for move, (loc, dummy, delay, dummy, company_id, ptype) in todo: From da8fcd15e1292e5ee68c0a4c04010f56e86b8d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Tue, 2 Oct 2012 16:19:43 +0200 Subject: [PATCH 006/478] hr_timesheet: enumerate list of month in English lp bug: https://launchpad.net/bugs/1060224 fixed bzr revid: stephane.bidoul@acsone.eu-20121002141943-efh2cea9zrkzh6u2 --- addons/hr_timesheet/wizard/hr_timesheet_print_employee.py | 5 +++-- addons/hr_timesheet/wizard/hr_timesheet_print_users.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/hr_timesheet/wizard/hr_timesheet_print_employee.py b/addons/hr_timesheet/wizard/hr_timesheet_print_employee.py index 75bb089bbc7..96ce23fb855 100644 --- a/addons/hr_timesheet/wizard/hr_timesheet_print_employee.py +++ b/addons/hr_timesheet/wizard/hr_timesheet_print_employee.py @@ -27,8 +27,9 @@ class analytical_timesheet_employee(osv.osv_memory): _name = 'hr.analytical.timesheet.employee' _description = 'Print Employee Timesheet & Print My Timesheet' _columns = { - 'month': fields.selection([(x, datetime.date(2000, x, 1).strftime('%B')) for x in range(1, 13)], - 'Month', required=True), + 'month': fields.selection([(1,'January'), (2,'February'), (3,'March'), (4,'April'), + (5,'May'), (6,'June'), (7,'July'), (8,'August'), (9,'September'), + (10,'October'), (11,'November'), (12,'December')], 'Month', required=True), 'year': fields.integer('Year', required=True), 'employee_id': fields.many2one('hr.employee', 'Employee', required=True) diff --git a/addons/hr_timesheet/wizard/hr_timesheet_print_users.py b/addons/hr_timesheet/wizard/hr_timesheet_print_users.py index 865ccacb393..2a91bb607a4 100644 --- a/addons/hr_timesheet/wizard/hr_timesheet_print_users.py +++ b/addons/hr_timesheet/wizard/hr_timesheet_print_users.py @@ -27,8 +27,9 @@ class analytical_timesheet_employees(osv.osv_memory): _name = 'hr.analytical.timesheet.users' _description = 'Print Employees Timesheet' _columns = { - 'month': fields.selection([(x, datetime.date(2000, x, 1).strftime('%B')) for x in range(1, 13)], - 'Month', required=True), + 'month': fields.selection([(1,'January'), (2,'February'), (3,'March'), (4,'April'), + (5,'May'), (6,'June'), (7,'July'), (8,'August'), (9,'September'), + (10,'October'), (11,'November'), (12,'December')], 'Month', required=True), 'year': fields.integer('Year', required=True), 'employee_ids': fields.many2many('hr.employee', 'timesheet_employee_rel', 'timesheet_id', 'employee_id', 'employees', required=True) } From 3f51a37d3b263e9e30b34292817b3c5fd9a44718 Mon Sep 17 00:00:00 2001 From: Paramjit Singh Sahota Date: Wed, 3 Oct 2012 18:46:11 +0530 Subject: [PATCH 007/478] [IMP]Improved code for the kanban of EVENT module. In which date is not getting the shadow effect. bzr revid: psa@tinyerp.com-20121003131611-5i0fvvwjdm7hqety --- addons/event/static/src/css/event.css | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/event/static/src/css/event.css b/addons/event/static/src/css/event.css index 8602ea24d53..dd6cc21ffc9 100644 --- a/addons/event/static/src/css/event.css +++ b/addons/event/static/src/css/event.css @@ -19,6 +19,7 @@ color: #8A89BA; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); background-color: #FFFFFF; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); } .oe_event_month_year{ border-bottom-left-radius:3px; From 7baf04078665cdd1a185eaff4685cf64d9984a8c Mon Sep 17 00:00:00 2001 From: Paramjit Singh Sahota Date: Thu, 4 Oct 2012 12:13:18 +0530 Subject: [PATCH 008/478] [IMP]Improved code for the kanban of Home >> My Groups >> JOIN GROUP which was not properly visible in IE9. bzr revid: psa@tinyerp.com-20121004064318-d91ei034jros4btw --- addons/mail/static/src/css/mail_group.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/mail/static/src/css/mail_group.css b/addons/mail/static/src/css/mail_group.css index b700cb8c80f..9ca0055c17f 100644 --- a/addons/mail/static/src/css/mail_group.css +++ b/addons/mail/static/src/css/mail_group.css @@ -48,10 +48,11 @@ -o-border-radius: 3px; -ms-border-radius: 3px; border-radius: 3px; + border-collapse: separate; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); -o-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); - -box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); } .oe_group_photo { From cb8f5447a7d935f30c07994b25f76c8c5fd2cb78 Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Fri, 5 Oct 2012 12:51:45 +0530 Subject: [PATCH 009/478] [FIX] account_sequence : Fixes the problem module can't installed lp bug: https://launchpad.net/bugs/950629 fixed bzr revid: amp@tinyerp.com-20121005072145-1ebw4zwktme9mmbl --- addons/account_sequence/account_sequence_data.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/addons/account_sequence/account_sequence_data.xml b/addons/account_sequence/account_sequence_data.xml index 1ad362b3979..a5b664abb22 100644 --- a/addons/account_sequence/account_sequence_data.xml +++ b/addons/account_sequence/account_sequence_data.xml @@ -43,6 +43,18 @@ + + Account Journal + account.journal + + + + Account journal sequence + account.journal + AJ + + + From bb6bc1a91b6149d96667fff5ece590e39d645345 Mon Sep 17 00:00:00 2001 From: Paramjit Singh Sahota Date: Wed, 10 Oct 2012 12:03:35 +0530 Subject: [PATCH 010/478] [IMP]Improved code for the kanban css of HR. bzr revid: psa@tinyerp.com-20121010063335-n7n0j6cytjinavxs --- addons/hr/static/src/css/hr.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/hr/static/src/css/hr.css b/addons/hr/static/src/css/hr.css index 00ef92c0fd8..e0eb8c198a5 100644 --- a/addons/hr/static/src/css/hr.css +++ b/addons/hr/static/src/css/hr.css @@ -18,10 +18,11 @@ -o-border-radius: 3px; -ms-border-radius: 3px; border-radius: 3px; + border-collapse: separate; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); -o-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); - -box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); + box-shadow: 0 1px 4px 1px rgba(0, 0, 0, 0.4); } .oe_employee_picture { From b30803cfc9c21ecb98084dcdf1e40f7bf57df973 Mon Sep 17 00:00:00 2001 From: Date: Mon, 15 Oct 2012 13:57:37 +0200 Subject: [PATCH 011/478] [FIX] l10n_ch: removed the name_get of res.partner.bank which is a remaining of older versions but hides a standard feature of account bank types, which allows to configure the format layout per type of bank account. bzr revid: guewen.baconnier@camptocamp.com-20121015115737-z5ktvyn2lqawp1hr --- addons/l10n_ch/bank.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/addons/l10n_ch/bank.py b/addons/l10n_ch/bank.py index 79dcb1a6834..4e4c0e0aa8c 100644 --- a/addons/l10n_ch/bank.py +++ b/addons/l10n_ch/bank.py @@ -52,21 +52,6 @@ class ResPartnerBank(osv.osv): 'my_bank': fields.boolean('Use my account to print BVR ?', help="Check to print BVR invoices"), } - def name_get(self, cursor, uid, ids, context=None): - if not len(ids): - return [] - bank_type_obj = self.pool.get('res.partner.bank.type') - - type_ids = bank_type_obj.search(cursor, uid, []) - bank_type_names = {} - for bank_type in bank_type_obj.browse(cursor, uid, type_ids, - context=context): - bank_type_names[bank_type.code] = bank_type.name - res = [] - for r in self.read(cursor, uid, ids, ['name','state'], context): - res.append((r['id'], r['name']+' : '+bank_type_names.get(r['state'], ''))) - return res - def _prepare_name(self, bank): "Hook to get bank number of bank account" res = u'' From 54c0c6e9ca85cb3375e259395847199fc58a1895 Mon Sep 17 00:00:00 2001 From: Ronald Portier Date: Tue, 16 Oct 2012 10:51:41 +0200 Subject: [PATCH 012/478] [FIX] l10n_nl - vat in the Netherlands went up from 19 to 21%. lp bug: https://launchpad.net/bugs/1067059 fixed bzr revid: ronald@therp.nl-20121016085141-zfa3ymjqmp57j1vg --- addons/l10n_nl/account_chart_netherlands.xml | 126 +++++++++---------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/addons/l10n_nl/account_chart_netherlands.xml b/addons/l10n_nl/account_chart_netherlands.xml index 96100d9a442..f736c6f4895 100644 --- a/addons/l10n_nl/account_chart_netherlands.xml +++ b/addons/l10n_nl/account_chart_netherlands.xml @@ -1424,7 +1424,7 @@ - + Btw af te dragen laag 1601 other @@ -1432,7 +1432,7 @@ - + Btw af te dragen hoog 1602 other @@ -1448,7 +1448,7 @@ - + Btw te vorderen laag 1611 other @@ -1456,7 +1456,7 @@ - + Btw te vorderen hoog 1612 other @@ -3909,7 +3909,7 @@ 1a - Leveringen/diensten belast met 19% (BTW) + Leveringen/diensten belast met 21% (BTW) 1b @@ -4021,7 +4021,7 @@ 1a - Leveringen/diensten belast met 19% (omzet) + Leveringen/diensten belast met 21% (omzet) 1b @@ -4149,22 +4149,22 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge 6% BTW percent - - + + sale - + Verkopen/omzet hoog - 19% BTW - + 21% BTW + percent - - + + @@ -4176,10 +4176,10 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge Verkopen/omzet overig variabel BTW - + percent - - + + @@ -4194,20 +4194,20 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge 6% BTW percent - - + + purchase - + BTW te vorderen hoog (inkopen) - 19% BTW - + 21% BTW + percent - - + + purchase @@ -4216,10 +4216,10 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge BTW te vorderen overig (inkopen) variabel BTW - + percent - - + + purchase @@ -4240,8 +4240,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge BTW af te dragen verlegd (inkopen) - 19% BTW verlegd - + 21% BTW verlegd + percent @@ -4277,8 +4277,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge BTW te vorderen verlegd (inkopen) - 19% BTW verlegd - + 21% BTW verlegd + percent @@ -4330,8 +4330,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase @@ -4342,43 +4342,43 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase - + Inkopen import binnen EU hoog - 19% BTW import binnen EU - + 21% BTW import binnen EU + percent purchase - + Inkopen import binnen EU hoog(1) percent - - - + + + purchase - + Inkopen import binnen EU hoog(2) percent - - - + + + purchase @@ -4400,8 +4400,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase @@ -4412,8 +4412,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase @@ -4463,8 +4463,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase @@ -4475,8 +4475,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase @@ -4485,7 +4485,7 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge Inkopen import buiten EU hoog BTW import buiten EU - + percent @@ -4498,8 +4498,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase @@ -4510,8 +4510,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase @@ -4520,7 +4520,7 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge Inkopen import buiten EU overig BTW import buiten EU - + percent @@ -4533,8 +4533,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase @@ -4545,8 +4545,8 @@ TODO rubriek 1c en 1d moeten nog, zijn variabel, dus BTW percentage moet door ge percent - - + + purchase From f63e3e2df0e057f1dbbddb90fbb5dda86f8142ae Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Thu, 18 Oct 2012 13:25:56 +0530 Subject: [PATCH 013/478] [IMP] Imporved the indentation problem bzr revid: amp@tinyerp.com-20121018075556-lqksynxm2myi1sug --- .../account_sequence_data.xml | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/addons/account_sequence/account_sequence_data.xml b/addons/account_sequence/account_sequence_data.xml index a5b664abb22..b2d40412d0d 100644 --- a/addons/account_sequence/account_sequence_data.xml +++ b/addons/account_sequence/account_sequence_data.xml @@ -43,18 +43,18 @@ - - Account Journal - account.journal - + + Account Journal + account.journal + - - Account journal sequence - account.journal - AJ - - - + + Account journal sequence + account.journal + AJ + + + From 83a0a252b9400dc152381ff9d0c66409477be857 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Fri, 19 Oct 2012 12:12:59 +0200 Subject: [PATCH 014/478] [IMP] database management: added `duplicate` operation. bzr revid: vmt@openerp.com-20121019101259-f32m2wlf6xugk2vi --- addons/web/controllers/main.py | 11 +++++++++++ addons/web/static/src/js/chrome.js | 13 +++++++++++++ addons/web/static/src/xml/base.xml | 27 +++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 72ffd9567f6..3980fc34aed 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -816,6 +816,17 @@ class Database(openerpweb.Controller): return req.session.proxy("db").create_database(*create_attrs) + @openerpweb.jsonrequest + def duplicate(self, req, fields): + params = dict(map(operator.itemgetter('name', 'value'), fields)) + duplicate_attrs = ( + params['super_admin_pwd'], + params['db_original_name'], + params['db_name'], + ) + + return req.session.proxy("db").duplicate_database(*duplicate_attrs) + @openerpweb.jsonrequest def drop(self, req, fields): password, db = operator.itemgetter( diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index a298ac67159..cbff398f0a3 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -326,6 +326,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ self.$el.find("tr td:first-child").addClass("oe_form_group_cell_label"); self.$el.find("label").addClass("oe_form_label"); self.$el.find("form[name=create_db_form]").validate({ submitHandler: self.do_create }); + self.$el.find("form[name=duplicate_db_form]").validate({ submitHandler: self.do_duplicate }); self.$el.find("form[name=drop_db_form]").validate({ submitHandler: self.do_drop }); self.$el.find("form[name=backup_db_form]").validate({ submitHandler: self.do_backup }); self.$el.find("form[name=restore_db_form]").validate({ submitHandler: self.do_restore }); @@ -411,6 +412,18 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ self.do_action(client_action); }); }, + do_duplicate: function(form) { + var self = this; + var fields = $(form).serializeArray(); + self.rpc("/web/database/duplicate", {'fields': fields}).then(function(result) { + if (result.error) { + self.display_error(result); + return; + } + self.do_notify("Duplicating database", "The database has been duplicated."); + self.start(); + }); + }, do_drop: function(form) { var self = this; var $form = $(form), diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index b031ee172e2..f57e5e47c47 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -152,6 +152,32 @@ + From 4b0b9a54bb916e36b73d6cd0e828f6dffd1aa4ce Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 13 Nov 2012 00:19:09 +0100 Subject: [PATCH 304/478] [FIX] group follow buttons bzr revid: fp@openerp.com-20121112231909-sjkldv9bplwphzh5 --- addons/mail/mail_group_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index bd1235a7534..214f6edf571 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -39,8 +39,8 @@
    - - + +
    From 79827cefd5d468f4eeeb9523c5a7d84fa821e66c Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 13 Nov 2012 00:19:52 +0100 Subject: [PATCH 305/478] [FIX] group orders bzr revid: fp@openerp.com-20121112231952-x2713c3gs0b5ikhp --- addons/mail/mail_group.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index d4c9c565bf3..e9d309b7d48 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -30,6 +30,7 @@ class mail_group(osv.Model): """ A mail_group is a collection of users sharing messages in a discussion group. The group mechanics are based on the followers. """ _description = 'Discussion group' + _order = 'name' _name = 'mail.group' _mail_flat_thread = False _inherit = ['mail.thread'] From 1086c96272c0a0be15e4f05330511257eea59e10 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 13 Nov 2012 00:20:43 +0100 Subject: [PATCH 306/478] fix bzr revid: fp@openerp.com-20121112232043-igpq4xynsz2tg6xr --- addons/mail/mail_group.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index e9d309b7d48..d4c9c565bf3 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -30,7 +30,6 @@ class mail_group(osv.Model): """ A mail_group is a collection of users sharing messages in a discussion group. The group mechanics are based on the followers. """ _description = 'Discussion group' - _order = 'name' _name = 'mail.group' _mail_flat_thread = False _inherit = ['mail.thread'] From b6bdd7c699aad5e0ba88746efd647817281c0ac2 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 13 Nov 2012 02:00:59 +0100 Subject: [PATCH 307/478] doc review part1 bzr revid: al@openerp.com-20121113010059-efzzjaak19n1fn7s --- doc/01_getting_started.rst | 295 ++----------------------------- doc/02_architecture.rst | 73 +++----- doc/03_module_dev_01.rst | 349 ++++++++++++++----------------------- doc/03_module_dev_03.rst | 286 +++++++++++++++--------------- 4 files changed, 319 insertions(+), 684 deletions(-) diff --git a/doc/01_getting_started.rst b/doc/01_getting_started.rst index 267e2759550..0403b708d47 100644 --- a/doc/01_getting_started.rst +++ b/doc/01_getting_started.rst @@ -155,6 +155,21 @@ You can specify alternate configuration files with :: -c CONFIG, --config=CONFIG specify alternate config file +Configure addons locations +-------------------------- + +By default, the only directory of addons known by the server is server/bin/addons. +It is possible to add new addons by + + - copying them in server/bin/addons, or creating a symbolic link to each + of them in this directory, or + - specifying another directory containing addons to the server. The later + can be accomplished either by running the server with the ``--addons-path=`` + option, or by configuring this option in the openerp_serverrc file, + automatically generated under Linux in your home directory by the + server when executed with the ``--save`` option. You can provide several + addons to the ``addons_path`` = option, separating them using commas. + Start-up script =============== @@ -173,283 +188,3 @@ Yet another alternative is to use a WSGI-compatible HTTP server and let it call into one of the WSGI entry points of the server. -Appendix -======== - -Command line options example -++++++++++++++++++++++++++++ - -Usage: openerp-server [options] - -**Options**:: - - --version show program's version number and exit - -h, --help show this help message and exit - -**Common options**:: - - -c CONFIG, --config=CONFIG - specify alternate config file - -s, --save save configuration to ~/.openerp_serverrc - -i INIT, --init=INIT - install one or more modules (comma-separated list, use - "all" for all modules), requires -d - -u UPDATE, --update=UPDATE - update one or more modules (comma-separated list, use - "all" for all modules). Requires -d. - --without-demo=WITHOUT_DEMO - disable loading demo data for modules to be installed - (comma-separated, use "all" for all modules). Requires - -d and -i. Default is none - -P IMPORT_PARTIAL, --import-partial=IMPORT_PARTIAL - Use this for big data importation, if it crashes you - will be able to continue at the current state. Provide - a filename to store intermediate importation states. - --pidfile=PIDFILE file where the server pid will be stored - --addons-path=ADDONS_PATH - specify additional addons paths (separated by commas). - --load=SERVER_WIDE_MODULES - Comma-separated list of server-wide modules - default=web - -**XML-RPC Configuration**:: - - --xmlrpc-interface=XMLRPC_INTERFACE - Specify the TCP IP address for the XML-RPC protocol. - The empty string binds to all interfaces. - --xmlrpc-port=XMLRPC_PORT - specify the TCP port for the XML-RPC protocol - --no-xmlrpc disable the XML-RPC protocol - --proxy-mode Enable correct behavior when behind a reverse proxy - -**XML-RPC Secure Configuration**:: - - --xmlrpcs-interface=XMLRPCS_INTERFACE - Specify the TCP IP address for the XML-RPC Secure - protocol. The empty string binds to all interfaces. - --xmlrpcs-port=XMLRPCS_PORT - specify the TCP port for the XML-RPC Secure protocol - --no-xmlrpcs disable the XML-RPC Secure protocol - --cert-file=SECURE_CERT_FILE - specify the certificate file for the SSL connection - --pkey-file=SECURE_PKEY_FILE - specify the private key file for the SSL connection - -**NET-RPC Configuration**:: - - --netrpc-interface=NETRPC_INTERFACE - specify the TCP IP address for the NETRPC protocol - --netrpc-port=NETRPC_PORT - specify the TCP port for the NETRPC protocol - --no-netrpc disable the NETRPC protocol - -**Web interface Configuration**:: - - --db-filter=REGEXP Filter listed database - -**Static HTTP service**:: - - --static-http-enable - enable static HTTP service for serving plain HTML - files - --static-http-document-root=STATIC_HTTP_DOCUMENT_ROOT - specify the directory containing your static HTML - files (e.g '/var/www/') - --static-http-url-prefix=STATIC_HTTP_URL_PREFIX - specify the URL root prefix where you want web - browsers to access your static HTML files (e.g '/') - -**Testing Configuration**:: - - --test-file=TEST_FILE - Launch a YML test file. - --test-report-directory=TEST_REPORT_DIRECTORY - If set, will save sample of all reports in this - directory. - --test-enable Enable YAML and unit tests. - --test-commit Commit database changes performed by YAML or XML - tests. - -**Logging Configuration**:: - - --logfile=LOGFILE file where the server log will be stored - --no-logrotate do not rotate the logfile - --syslog Send the log to the syslog server - --log-handler=PREFIX:LEVEL - setup a handler at LEVEL for a given PREFIX. An empty - PREFIX indicates the root logger. This option can be - repeated. Example: "openerp.orm:DEBUG" or - "werkzeug:CRITICAL" (default: ":INFO") - --log-request shortcut for --log- - handler=openerp.netsvc.rpc.request:DEBUG - --log-response shortcut for --log- - handler=openerp.netsvc.rpc.response:DEBUG - --log-web shortcut for --log- - handler=openerp.addons.web.common.http:DEBUG - --log-sql shortcut for --log-handler=openerp.sql_db:DEBUG - --log-level=LOG_LEVEL - specify the level of the logging. Accepted values: - ['info', 'debug_rpc', 'warn', 'test', 'critical', - 'debug_sql', 'error', 'debug', 'debug_rpc_answer', - 'notset'] (deprecated option). - -**SMTP Configuration**:: - - --email-from=EMAIL_FROM - specify the SMTP email address for sending email - --smtp=SMTP_SERVER specify the SMTP server for sending email - --smtp-port=SMTP_PORT - specify the SMTP port - --smtp-ssl specify the SMTP server support SSL or not - --smtp-user=SMTP_USER - specify the SMTP username for sending email - --smtp-password=SMTP_PASSWORD - specify the SMTP password for sending email - -**Database related options**:: - - -d DB_NAME, --database=DB_NAME - specify the database name - -r DB_USER, --db_user=DB_USER - specify the database user name - -w DB_PASSWORD, --db_password=DB_PASSWORD - specify the database password - --pg_path=PG_PATH specify the pg executable path - --db_host=DB_HOST specify the database host - --db_port=DB_PORT specify the database port - --db_maxconn=DB_MAXCONN - specify the the maximum number of physical connections - to posgresql - --db-template=DB_TEMPLATE - specify a custom database template to create a new - database - -**Internationalisation options**:: - - Use these options to translate OpenERP to another language.See i18n - section of the user manual. Option '-d' is mandatory.Option '-l' is - mandatory in case of importation - - --load-language=LOAD_LANGUAGE - specifies the languages for the translations you want - to be loaded - -l LANGUAGE, --language=LANGUAGE - specify the language of the translation file. Use it - with --i18n-export or --i18n-import - --i18n-export=TRANSLATE_OUT - export all sentences to be translated to a CSV file, a - PO file or a TGZ archive and exit - --i18n-import=TRANSLATE_IN - import a CSV or a PO file with translations and exit. - The '-l' option is required. - --i18n-overwrite overwrites existing translation terms on updating a - module or importing a CSV or a PO file. - --modules=TRANSLATE_MODULES - specify modules to export. Use in combination with - --i18n-export - -**Security-related options**:: - - --no-database-list disable the ability to return the list of databases - -**Advanced options**:: - - --cache-timeout=CACHE_TIMEOUT - set the timeout for the cache system - --debug enable debug mode - --stop-after-init stop the server after its initialization - -t TIMEZONE, --timezone=TIMEZONE - specify reference timezone for the server (e.g. - Europe/Brussels - --osv-memory-count-limit=OSV_MEMORY_COUNT_LIMIT - Force a limit on the maximum number of records kept in - the virtual osv_memory tables. The default is False, - which means no count-based limit. - --osv-memory-age-limit=OSV_MEMORY_AGE_LIMIT - Force a limit on the maximum age of records kept in - the virtual osv_memory tables. This is a decimal value - expressed in hours, and the default is 1 hour. - --max-cron-threads=MAX_CRON_THREADS - Maximum number of threads processing concurrently cron - jobs. - --virtual-memory-limit=VIRTUAL_MEMORY_LIMIT - Maximum allowed virtual memory per Gunicorn process. - When the limit is reached, any memory allocation will - fail. - --virtual-memory-reset=VIRTUAL_MEMORY_RESET - Maximum allowed virtual memory per Gunicorn process. - When the limit is reached, the worker will be reset - after the current request. - --cpu-time-limit=CPU_TIME_LIMIT - Maximum allowed CPU time per Gunicorn process. When - the limit is reached, an exception is raised. - --unaccent Use the unaccent function provided by the database - when available. - -Server configuration file -+++++++++++++++++++++++++ - -:: - - [options] - addons_path = /home/openerp/workspace/openerp-dev/addons/trunk,/home/openerp/workspace/openerp-dev/web/trunk/addons - admin_passwd = admin - cache_timeout = 100000 - cpu_time_limit = 60 - csv_internal_sep = , - db_host = False - db_maxconn = 64 - db_name = False - db_password = False - db_port = False - db_template = template0 - db_user = openerp - dbfilter = .* - debug_mode = False - demo = {} - email_from = False - import_partial = - list_db = True - log_handler = [':INFO'] - log_level = info - logfile = False - login_message = False - logrotate = True - max_cron_threads = 4 - netrpc = True - netrpc_interface = - netrpc_port = 8070 - osv_memory_age_limit = 1.0 - osv_memory_count_limit = False - pg_path = None - pidfile = False - proxy_mode = False - reportgz = False - secure_cert_file = server.cert - secure_pkey_file = server.pkey - server_wide_modules = None - smtp_password = False - smtp_port = 25 - smtp_server = localhost - smtp_ssl = False - smtp_user = False - static_http_document_root = None - static_http_enable = False - static_http_url_prefix = None - syslog = False - test_commit = False - test_enable = False - test_file = False - test_report_directory = False - timezone = False - translate_modules = ['all'] - unaccent = False - virtual_memory_limit = 805306368 - virtual_memory_reset = 671088640 - without_demo = False - xmlrpc = True - xmlrpc_interface = - xmlrpc_port = 8069 - xmlrpcs = True - xmlrpcs_interface = - xmlrpcs_port = 8071 diff --git a/doc/02_architecture.rst b/doc/02_architecture.rst index bf1b3192e37..815a498d5bd 100644 --- a/doc/02_architecture.rst +++ b/doc/02_architecture.rst @@ -33,16 +33,11 @@ three main components: Another layer allows communications between the server and a web browser, the Web layer. Having more than one server is possible, for example in conjunction with a load balancing mechanism. -- the client, which allow users to access OpenERP. Two clients exist, a - desktop GTK client and a browser-based client +- the client running in the a web browser as javascript application. - - the GTK client access directly to the OpenERP Server - - users can also use standard web browsers to access OpenERP. In that - case, an OpenERP application is loaded. It handles communications between - the browser and the Web layer of the server. - -The database server and the OpenERP server can be installed on the same computer, -or distributed onto separate computer servers, for example for performance considerations. +The database server and the OpenERP server can be installed on the same +computer, or distributed onto separate computer servers, for example for +performance considerations. .. _`Figure 1`: .. figure:: _static/02_openerp_architecture.png @@ -116,8 +111,9 @@ The services granted by the ORM are among other : The web layer offers an interface to communicate with standard browsers. In the 6.1 version of OpenERP, the web-client has been rewritten and integrated -into the OpenERP server tier. This layer relies on CherryPy for the routing -layer of communications, especially for session and cookies management. +into the OpenERP server tier. This web layer is a WSGI-compatible application +based on werkzeug. It handles regular http queries to server static file or +dynamic content and JSON-RPC queries for the RPC made from the browser. **Modules** @@ -137,20 +133,8 @@ and display the result (e.g. a list of customers) in different ways (as forms, lists, calendars, ...). Upon user actions, it sends queries to modify data to the server. -Two clients can be used for user access to OpenERP, a GTK client and a -browser-based client. The GTK client communicates directly with the server. -Using the GTK client requires the client to be installed on the workstation -of each user. - -The browser-based client holds an OpenERP application that handles communications -between the browser and the Web layer of the server. The static code of the web -application is minimal. It consists of a minimal flow of HTML that is in charge -of loading the application code in Javascript. This client-side OpenERP application -sends user requests to the server, and gets data back. Data management is -done dynamically in this client. Using this client is therefore easy for -users, but also for administrators because it does not require any software -installation on the user machine. - +The default client of OpenERP is an JavaScript application running in the +browser that communicates with the server using JSON-RPC. MVC architecture in OpenERP =========================== @@ -194,37 +178,32 @@ OpenERP follows the MVC semantic with - view : views are defined in XML files in OpenERP. - controller : The objects of OpenERP. +Network communications and WSGI +=============================== +OpenERP is an HTTP web server and may also be deployed as an WSGI-compliant +application. -Network communications -====================== - -GTK clients communicate with the OpenERP server using XML-RPC protocol by -default. However, using a secured version XML-RPCS is possible when configurating -your OpenERP instance. In previous versions of OpenERP, a custom protocol -called NET-RPC was used. It was a binary version of the XML-RPC protocol, -allowing faster communications. However, this protocol will no longer be -used in OpenERP. The use of JSON-RPC is also planned for the 6.1 version -of OpenERP. - -Web-based clients communicate using HTTP protocol. As for XML-RPC, it is -possible to configure OpenERP to use secured HTTPS connections. - -Services and WSGI -================= +Clients may communicate with OpenERP using sessionless XML-RPC, the recommended +way to interoperate with OpenERP. Web-based clients communicates using the +session aware JSON-RPC. Everything in OpenERP, and objects methods in particular, are exposed via the network and a security layer. Access to the data model is in fact a ‘service’ and it is possible to expose new services. For instance, a WebDAV service and a FTP service are available. -While not mandatory, the services can make use of the `WSGI -`_ stack. WSGI is -a standard solution in the Python ecosystem to write HTTP servers, applications, -and middleware which can be used in a mix-and-match fashion. By using WSGI, -it is possible to run OpenERP in any WSGI compliant server. It is also -possible to use OpenERP to host a WSGI application. +Services can make use of the `WSGI +`_ stack. WSGI is a +standard solution in the Python ecosystem to write HTTP servers, applications, +and middleware which can be used in a mix-and-match fashion. By using WSGI, it +is possible to run OpenERP in any WSGI compliant server. It is also possible to +use OpenERP to host a WSGI application. A striking example of this possibility is the OpenERP Web layer that is the server-side counter part to the web clients. It provides the requested data to the browser and manages web sessions. It is a WSGI-compliant application. As such, it can be run as a stand-alone HTTP server or embedded inside OpenERP. + +The HTTP namespaces /openerp/ /object/ /common/ are reserved for the XML-RPC +layer, every module restrict it's HTTP namespace to // + diff --git a/doc/03_module_dev_01.rst b/doc/03_module_dev_01.rst index a537f5fe396..88a4f96aee7 100644 --- a/doc/03_module_dev_01.rst +++ b/doc/03_module_dev_01.rst @@ -3,16 +3,15 @@ Module structure A module can contain the following elements: - - **Business object** : declared as Python classes extending the OpenObject c - lass osv.Model, the persistence of these resource is completly managed - by OpenObject, + - **Business object** : declared as Python classes extending the class + osv.Model, the persistence of these resource is completly managed by + OpenERP's ORM. - **Data** : XML/CSV files with meta-data (views and workflows declaration), configuration data (modules parametrization) and demo data (optional but recommended for testing), - - **Wizards** : stateful interactive forms used to assist users, often available - as contextual actions on resources, - - **Reports** : RML (XML format). MAKO or OpenOffice report templates, to be - merged with any kind of business data, and generate HTML, ODT or PDF reports. + - **Reports** : RML (XML format). HTML/MAKO or OpenOffice report templates, to + be merged with any kind of business data, and generate HTML, ODT or PDF + reports. .. figure:: _static/03_module_gen_view.png :width: 75% @@ -23,120 +22,91 @@ A module can contain the following elements: Each module is contained in its own directory within either the server/bin/addons directory or another directory of addons, configured in server installation. -To create a new module, the following steps are required: +To create a new module for example the 'OpenAcademy' module, the following +steps are required: - - create a ``my_module`` subdirectory in the source/addons directory - - create the module description file ``__init__.py`` - - create the module declaration file ``__openerp__.py`` + - create a ``openacademy`` subdirectory in the source/addons directory + - create the module import file ``__init__.py`` + - create the module manifield file ``__openerp__.py`` - create **Python** files containing **objects** - create **.xml files** holding module data such as views, menu entries or demo data - - optionally create **reports**, **wizards** or **workflows** + - optionally create **reports** or **workflows** -Description file __init__.py -++++++++++++++++++++++++++++ +Python import file __init__.py +++++++++++++++++++++++++++++++ -The ``__init__.py`` file is the Python module descriptor, because an OpenERP -module is also a regular Python module. Like any Python module, it is executed -at program start. It needs to import the Python files that need to be loaded. +The ``__init__.py`` file is the Python import file, because an OpenERP module +is also a regular Python module. The file should import all the other python +file or submodules. -It contains the importation instruction applied to all Python files of the -module, without the .py extension. For example, if a module contains a single -python file named ``mymodule.py``, the file should look like: +For example, if a module contains a single python file named ``openacademy.py``, +the file should look like: - import module + import openacademy -Declaration file __openerp__.py +Manifest file __openerp__.py +++++++++++++++++++++++++++++++ In the created module directory, you must add a **__openerp__.py** file. -This file, which must be in Python format, is responsible to +This file, which must be a Python dict literal, is responsible to 1. determine the *XML files that will be parsed* during the initialization of the server, and also to 2. determine the *dependencies* of the created module. + 3. declare additional meta data This file must contain a Python dictionary with the following values: :: - name The (Plain English) name of the module. + name The name of the module in English. version The version of the module. + summary Short description or keywords description The module description (text). + category The categrory of the module author The author of the module. - website The website of the module. - license The license of the module (default:GPL-2). - depends List of modules on which this module depends. The base - module must almost always be in the dependencies because - some necessary data for the views, reports, ... are in - the base module. - init_xml List of .xml files to load when the server is launched - with the "--init=module" argument. Filepaths must be - relative to the directory where the module is. OpenERP - XML file format is detailed in this section. - update_xml List of .xml files to load when the server is launched with - the "--update=module" launched. Filepaths must be relative - to the directory where the module is. Files in **update_xml** - concern: views, reports and wizards. + website URL of the website of the module. + license The license of the module (default: AGPL-3). + depends List of modules on which this module depends beside base. + data List of .xml files to load when the module is installed or updated. + demo List of additional .xml files to load when the module is + installed or updated and demo flag is active. installable True or False. Determines whether the module is installable or not. auto_install True or False (default: False). If set to ``True``, the module is a link module. It will be installed as soon as all its dependencies are installed. -For the ``my_module`` module, here is an example of ``__openerp__.py`` +For the ``openacademy`` module, here is an example of ``__openerp__.py`` declaration file: .. code-block:: python { - 'name' : "My Module", + 'name' : "OpenAcademy", 'version' : "1.0", - 'author' : "OpenERP", + 'author' : "OpenERP SA", 'category' : "Tools", - 'depends' : ['base',], - 'init_xml' : [], - 'demo_xml' : [ - 'module_demo.xml' - ], - 'update_xml' : [ - 'module_view.xml', - 'data/module_data.xml', + 'depends' : ['mail'], + 'data' : [ + 'openacademy_view.xml', + 'openacademy_data.xml', 'report/module_report.xml', 'wizard/module_wizard.xml', ], + 'demo' : [ + 'openacademy_demo.xml' + ], 'installable': True, - 'auto_install': False, } -The files that must be placed in init_xml are the ones that relate to the -workflow definition, data to load at the installation of the software and -the data for the demonstrations. - - -XML Files -+++++++++ - -XML files located in the module directory are used to modify the structure of -the database. They are used for many purposes, among which we can cite : - - * initialization and demonstration data declaration, - * views declaration, - * reports declaration, - * wizards declaration, - * workflows declaration. - -General structure of OpenERP XML files is more detailed in the -:ref:`xml-serialization` section. Look here if you are interested in learning -more about *initialization* and *demonstration data declaration* XML files. The -following section are only related to XML specific to *actions, menu entries, -reports, wizards* and *workflows* declaration. - - Objects +++++++ -All OpenERP resources are objects: menus, actions, reports, invoices, partners, ... OpenERP is based on an object relational mapping of a database to control the information. Object names are hierarchical, as in the following examples: +All OpenERP resources are objects: invoices, partners. Metadata are also object +too: menus, actions, reports... Object names are hierarchical, as in the +following examples: * account.transfer : a money transfer * account.invoice : an invoice @@ -144,14 +114,15 @@ All OpenERP resources are objects: menus, actions, reports, invoices, partners, Generally, the first word is the name of the module: account, stock, sale. -Other advantages of an ORM; +Those object are declared in python be subclassing osv.Model - * simpler relations : invoice.partner.address[0].city - * objects have properties and methods: invoice.pay(3400 EUR), - * inheritance, high level constraints, ... - -It is easier to manipulate one object (example, a partner) than several tables (partner address, categories, events, ...) +The ORM of OpenERP is constructed over PostgreSQL. It is thus possible to +query the object used by OpenERP using the object interface (ORM) or by +directly using SQL statements. +But it is dangerous to write or read directly in the PostgreSQL database, as +you will shortcut important steps like constraints checking or workflow +modification. .. figure:: images/pom_3_0_3.png :scale: 50 @@ -160,23 +131,23 @@ It is easier to manipulate one object (example, a partner) than several tables ( *The Physical Objects Model of [OpenERP version 3.0.3]* -PostgreSQL and ORM ------------------- +XML Files ++++++++++ -The ORM of OpenERP is constructed over PostgreSQL. It is thus possible to -query the object used by OpenERP using the object interface or by directly -using SQL statements. +XML files located in the module directory are used to initialize or update the +the database when the module is installed or updated. They are used for many +purposes, among which we can cite : -But it is dangerous to write or read directly in the PostgreSQL database, as -you will shortcut important steps like constraints checking or workflow -modification. + * initialization and demonstration data declaration, + * views declaration, + * reports declaration, + * workflows declaration. -.. note:: - - The Physical Database Model of OpenERP - -Pre-Installed Data ------------------- +General structure of OpenERP XML files is more detailed in the +:ref:`xml-serialization` section. Look here if you are interested in learning +more about *initialization* and *demonstration data declaration* XML files. The +following section are only related to XML specific to *actions, menu entries, +reports, wizards* and *workflows* declaration. Data can be inserted or updated into the PostgreSQL tables corresponding to the OpenERP objects using XML files. The general structure of an OpenERP XML file @@ -188,12 +159,8 @@ is as follows: - - "field1 content" - - - "field2 content" - + "field1 content" + "field2 content" (...) @@ -203,7 +170,52 @@ is as follows: -Fields content are strings that must be encoded as *UTF-8* in XML files. +Record Tag +////////// + +**Description** + +The addition of new data is made with the record tag. This one takes a +mandatory attribute : model. Model is the object name where the insertion has +to be done. The tag record can also take an optional attribute: id. If this +attribute is given, a variable of this name can be used later on, in the same +file, to make reference to the newly created resource ID. + +A record tag may contain field tags. They indicate the record's fields value. +If a field is not specified the default value will be used. + +The Record Field tag +//////////////////// + +The attributes for the field tag are the following: + +name : mandatory + the field name + +eval : optional + python expression that indicating the value to add + +ref + reference to an id defined in this file + +model + model to be looked up in the search + +search + a query + + +**Example** + +.. code-block:: xml + + + account.invoice + Invoices List + account.invoice.list + account/report/invoice.xsl + account/report/invoice.xml + Let's review an example taken from the OpenERP source (base_demo.xml in the base module): @@ -250,47 +262,6 @@ The field **company_id** is a many-to-one relation from the user object to the c This is a classical example of the use of **search** in demo data: here we do not really care about which partner we want to use for the test, so we give an empty list. Notice the **model** attribute is currently mandatory. -Record Tag -////////// - -**Description** - -The addition of new data is made with the record tag. This one takes a mandatory attribute : model. Model is the object name where the insertion has to be done. The tag record can also take an optional attribute: id. If this attribute is given, a variable of this name can be used later on, in the same file, to make reference to the newly created resource ID. - -A record tag may contain field tags. They indicate the record's fields value. If a field is not specified the default value will be used. - -**Example** - -.. code-block:: xml - - - account.invoice - Invoices List - account.invoice.list - account/report/invoice.xsl - account/report/invoice.xml - - -Field tag -///////// - -The attributes for the field tag are the following: - -name : mandatory - the field name - -eval : optional - python expression that indicating the value to add - -ref - reference to an id defined in this file - -model - model to be looked up in the search - -search - a query - Function tag //////////// @@ -311,69 +282,9 @@ eval -Getitem tag -/////////// - -Takes a subset of the evaluation of the last child node of the tag. - -type : mandatory - int or list - -index : mandatory - int or string (a key of a dictionary) - -**Example** - -Evaluates to the first element of the list of ids returned by the function node - -.. code-block:: xml - - - - - -i18n -"""" - -Improving Translations -////////////////////// - -.. describe:: Translating in launchpad - -Translations are managed by -the `Launchpad Web interface `_. Here, you'll -find the list of translatable projects. - -Please read the `FAQ `_ before asking questions. - -.. describe:: Translating your own module - -.. versionchanged:: 5.0 - -Contrary to the 4.2.x version, the translations are now done by module. So, -instead of an unique ``i18n`` folder for the whole application, each module has -its own ``i18n`` folder. In addition, OpenERP can now deal with ``.po`` [#f_po]_ -files as import/export format. The translation files of the installed languages -are automatically loaded when installing or updating a module. OpenERP can also -generate a .tgz archive containing well organised ``.po`` files for each selected -module. - -.. [#f_po] http://www.gnu.org/software/autoconf/manual/gettext/PO-Files.html#PO-Files - -Process -""""""" - -Defining the process -//////////////////// - -Through the interface and module recorder. -Then, put the generated XML in your own module. Views -""""" - -Technical Specifications - Architecture - Views -/////////////////////////////////////////////// ++++++ Views are a way to represent the objects on the client side. They indicate to the client how to lay out the data coming from the objects on the screen. @@ -454,21 +365,23 @@ The squared nodes represent other Workflows; * the shipping +i18n +---- -Appendix -+++++++++ +.. versionchanged:: 5.0 -Configure addons locations --------------------------- +Each module has its own ``i18n`` folder. In addition, OpenERP can now deal with +``.po`` [#f_po]_ files as import/export format. The translation files of the +installed languages are automatically loaded when installing or updating a +module. + +Translations are managed by the `Launchpad Web interface +`_. Here, you'll find the list +of translatable projects. + +Please read the `FAQ `_ before asking questions. + + +.. [#f_po] http://www.gnu.org/software/autoconf/manual/gettext/PO-Files.html#PO-Files -By default, the only directory of addons known by the server is server/bin/addons. -It is possible to add new addons by - - copying them in server/bin/addons, or creating a symbolic link to each - of them in this directory, or - - specifying another directory containing addons to the server. The later - can be accomplished either by running the server with the ``--addons-path=`` - option, or by configuring this option in the openerp_serverrc file, - automatically generated under Linux in your home directory by the - server when executed with the ``--save`` option. You can provide several - addons to the ``addons_path`` = option, separating them using commas. diff --git a/doc/03_module_dev_03.rst b/doc/03_module_dev_03.rst index 975ebbb3064..6091934596f 100644 --- a/doc/03_module_dev_03.rst +++ b/doc/03_module_dev_03.rst @@ -4,15 +4,24 @@ Views and Events Introduction to Views --------------------- -As all data of the program is stored in objects, as explained in the Objects section, how are these objects exposed to the user ? We will try to answer this question in this section. +As all data of the program is stored in objects, as explained in the Objects +section, how are these objects exposed to the user ? We will try to answer this +question in this section. -First of all, let's note that every resource type uses its own interface. For example, the screen to modify a partner's data is not the same as the one to modify an invoice. +First of all, let's note that every resource type uses its own interface. For +example, the screen to modify a partner's data is not the same as the one to +modify an invoice. -Then, you have to know that the OpenERP user interface is dynamic, it means that it is not described "statically" by some code, but dynamically built from XML descriptions of the client screens. +Then, you have to know that the OpenERP user interface is dynamic, it means +that it is not described "statically" by some code, but dynamically built from +XML descriptions of the client screens. From now on, we will call these screen descriptions views. -A notable characteristic of these views is that they can be edited at any moment (even during the program execution). After a modification to a displayed view has occurred, you simply need to close the tab corresponding to that 'view' and re-open it for the changes to appear. +A notable characteristic of these views is that they can be edited at any +moment (even during the program execution). After a modification to a displayed +view has occurred, you simply need to close the tab corresponding to that +'view' and re-open it for the changes to appear. Views principles ++++++++++++++++ @@ -57,9 +66,66 @@ As we can see below in the purple zone of the screen, there is also a way to dis :scale: 50 :align: center +On Change ++++++++++ + +The on_change attribute defines a method that is called when the content of a view field has changed. + +This method takes at least arguments: cr, uid, ids, which are the three classical arguments and also the context dictionary. You can add parameters to the method. They must correspond to other fields defined in the view, and must also be defined in the XML with fields defined this way:: + + + +The example below is from the sale order view. + +You can use the 'context' keyword to access data in the context that can be used as params of the function.:: + + + +.. code-block:: python + + def onchange_shop_id(self, cr, uid, ids, shop_id): + + v={} + if shop_id: + + shop=self.pool.get('sale.shop').browse(cr,uid,shop_id) + v['project_id']=shop.project_id.id + if shop.pricelist_id.id: + + v['pricelist_id']=shop.pricelist_id.id + + v['payment_default_id']=shop.payment_default_id.id + + return {'value':v} + + +When editing the shop_id form field, the onchange_shop_id method of the sale_order object is called and returns a dictionary where the 'value' key contains a dictionary of the new value to use in the 'project_id', 'pricelist_id' and 'payment_default_id' fields. + +Note that it is possible to change more than just the values of +fields. For example, it is possible to change the value of some fields +and the domain of other fields by returning a value of the form: +return {'domain': d, 'value': value} + +:returns: a dictionary with any mix of the following keys: + + ``domain`` + A mapping of ``{field: domain}``. + + The returned domains should be set on the fields instead of the + default ones. + + ``value`` + A mapping of ``{field: value}}``, the values will be set on the + corresponding fields and may trigger new onchanges or attrs + changes + + ``warning`` A dict with the keys ``title`` and ``message``. Both + are mandatory. Indicate that an error message should be + displayed to the user. + Tree views ------------ +---------- These views are used when we work in list mode (in order to visualize several resources at once) and in the search screen. These views are simpler than the form views and thus have less options. @@ -67,81 +133,6 @@ These views are used when we work in list mode (in order to visualize several re :scale: 50 :align: center -Graph views --------------- - -A graph is a new mode of view for all views of type form. If, for example, a sale order line must be visible as list or as graph, define it like this in the action that open this sale order line. Do not set the view mode as "tree,form,graph" or "form,graph" - it must be "graph,tree" to show the graph first or "tree,graph" to show the list first. (This view mode is extra to your "form,tree" view and should have a separate menu item): - -.. code-block:: xml - - form - tree,graph - -view_type:: - - tree = (tree with shortcuts at the left), form = (switchable view form/list) - -view_mode:: - - tree,graph : sequences of the views when switching - -Then, the user will be able to switch from one view to the other. Unlike forms and trees, OpenERP is not able to automatically create a view on demand for the graph type. So, you must define a view for this graph: - - -.. code-block:: xml - - - sale.order.line.graph - sale.order.line - graph - - - - - - - - - -The graph view - -A view of type graph is just a list of fields for the graph. - -Graph tag -++++++++++ - -The default type of the graph is a pie chart - to change it to a barchart change **** to **** You also may change the orientation. - -:Example : - -.. code-block:: xml - - - -Field tag -+++++++++ - -The first field is the X axis. The second one is the Y axis and the optional third one is the Z axis for 3 dimensional graphs. You can apply a few attributes to each field/axis: - - * **group**: if set to true, the client will group all item of the same value for this field. For each other field, it will apply an operator - * **operator**: the operator to apply is another field is grouped. By default it's '+'. Allowed values are: - - + +: addition - + \*: multiply - + \**: exponent - + min: minimum of the list - + max: maximum of the list - -:Defining real statistics on objects: - -The easiest method to compute real statistics on objects is: - - 1. Define a statistic object which is a postgresql view - 2. Create a tree view and a graph view on this object - -You can get en example in all modules of the form: report\_.... Example: report_crm. - - Search views -------------- @@ -320,6 +311,82 @@ We can save this search criteria as a Shortcut or save as Filter. Filters are user specific and can be modified via the Manage Filters option in the filters drop-down. +Graph views +----------- + +A graph is a new mode of view for all views of type form. If, for example, a sale order line must be visible as list or as graph, define it like this in the action that open this sale order line. Do not set the view mode as "tree,form,graph" or "form,graph" - it must be "graph,tree" to show the graph first or "tree,graph" to show the list first. (This view mode is extra to your "form,tree" view and should have a separate menu item): + +.. code-block:: xml + + form + tree,graph + +view_type:: + + tree = (tree with shortcuts at the left), form = (switchable view form/list) + +view_mode:: + + tree,graph : sequences of the views when switching + +Then, the user will be able to switch from one view to the other. Unlike forms and trees, OpenERP is not able to automatically create a view on demand for the graph type. So, you must define a view for this graph: + + +.. code-block:: xml + + + sale.order.line.graph + sale.order.line + graph + + + + + + + + + +The graph view + +A view of type graph is just a list of fields for the graph. + +Graph tag +++++++++++ + +The default type of the graph is a pie chart - to change it to a barchart change **** to **** You also may change the orientation. + +:Example : + +.. code-block:: xml + + + +Field tag ++++++++++ + +The first field is the X axis. The second one is the Y axis and the optional third one is the Z axis for 3 dimensional graphs. You can apply a few attributes to each field/axis: + + * **group**: if set to true, the client will group all item of the same value for this field. For each other field, it will apply an operator + * **operator**: the operator to apply is another field is grouped. By default it's '+'. Allowed values are: + + + +: addition + + \*: multiply + + \**: exponent + + min: minimum of the list + + max: maximum of the list + +:Defining real statistics on objects: + +The easiest method to compute real statistics on objects is: + + 1. Define a statistic object which is a postgresql view + 2. Create a tree view and a graph view on this object + +You can get en example in all modules of the form: report\_.... Example: report_crm. + + + Calendar Views -------------- @@ -1367,62 +1434,3 @@ flexible if you define the child views separately and then specify which child view to use as part of the one2many field. -Events ------- - -On Change -+++++++++ - -The on_change attribute defines a method that is called when the content of a view field has changed. - -This method takes at least arguments: cr, uid, ids, which are the three classical arguments and also the context dictionary. You can add parameters to the method. They must correspond to other fields defined in the view, and must also be defined in the XML with fields defined this way:: - - - -The example below is from the sale order view. - -You can use the 'context' keyword to access data in the context that can be used as params of the function.:: - - - -.. code-block:: python - - def onchange_shop_id(self, cr, uid, ids, shop_id): - - v={} - if shop_id: - - shop=self.pool.get('sale.shop').browse(cr,uid,shop_id) - v['project_id']=shop.project_id.id - if shop.pricelist_id.id: - - v['pricelist_id']=shop.pricelist_id.id - - v['payment_default_id']=shop.payment_default_id.id - - return {'value':v} - - -When editing the shop_id form field, the onchange_shop_id method of the sale_order object is called and returns a dictionary where the 'value' key contains a dictionary of the new value to use in the 'project_id', 'pricelist_id' and 'payment_default_id' fields. - -Note that it is possible to change more than just the values of -fields. For example, it is possible to change the value of some fields -and the domain of other fields by returning a value of the form: -return {'domain': d, 'value': value} - -:returns: a dictionary with any mix of the following keys: - - ``domain`` - A mapping of ``{field: domain}``. - - The returned domains should be set on the fields instead of the - default ones. - - ``value`` - A mapping of ``{field: value}}``, the values will be set on the - corresponding fields and may trigger new onchanges or attrs - changes - - ``warning`` A dict with the keys ``title`` and ``message``. Both - are mandatory. Indicate that an error message should be - displayed to the user. From 4d51fd1c02d825e2d894d339e9f1c2fb82625da7 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Tue, 13 Nov 2012 05:16:58 +0000 Subject: [PATCH 308/478] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20121113051658-s3j4n5kom54a2wex --- openerp/addons/base/i18n/ab.po | 4 +- openerp/addons/base/i18n/af.po | 4 +- openerp/addons/base/i18n/am.po | 4 +- openerp/addons/base/i18n/ar.po | 4 +- openerp/addons/base/i18n/bg.po | 4 +- openerp/addons/base/i18n/bs.po | 4 +- openerp/addons/base/i18n/ca.po | 4 +- openerp/addons/base/i18n/cs.po | 6 +- openerp/addons/base/i18n/da.po | 4 +- openerp/addons/base/i18n/de.po | 4 +- openerp/addons/base/i18n/el.po | 4 +- openerp/addons/base/i18n/en_GB.po | 103 +- openerp/addons/base/i18n/es.po | 2237 ++++++++++++++++++++++---- openerp/addons/base/i18n/es_AR.po | 4 +- openerp/addons/base/i18n/es_CL.po | 4 +- openerp/addons/base/i18n/es_CR.po | 4 +- openerp/addons/base/i18n/es_EC.po | 4 +- openerp/addons/base/i18n/es_MX.po | 4 +- openerp/addons/base/i18n/et.po | 4 +- openerp/addons/base/i18n/eu.po | 4 +- openerp/addons/base/i18n/fa.po | 142 +- openerp/addons/base/i18n/fa_AF.po | 4 +- openerp/addons/base/i18n/fi.po | 4 +- openerp/addons/base/i18n/fr.po | 4 +- openerp/addons/base/i18n/gl.po | 4 +- openerp/addons/base/i18n/gu.po | 8 +- openerp/addons/base/i18n/he.po | 4 +- openerp/addons/base/i18n/hr.po | 4 +- openerp/addons/base/i18n/hu.po | 216 ++- openerp/addons/base/i18n/hy.po | 4 +- openerp/addons/base/i18n/id.po | 4 +- openerp/addons/base/i18n/is.po | 4 +- openerp/addons/base/i18n/it.po | 4 +- openerp/addons/base/i18n/ja.po | 4 +- openerp/addons/base/i18n/ka.po | 4 +- openerp/addons/base/i18n/kk.po | 4 +- openerp/addons/base/i18n/ko.po | 4 +- openerp/addons/base/i18n/lt.po | 20 +- openerp/addons/base/i18n/lv.po | 4 +- openerp/addons/base/i18n/mk.po | 4 +- openerp/addons/base/i18n/mn.po | 6 +- openerp/addons/base/i18n/nb.po | 4 +- openerp/addons/base/i18n/nl.po | 21 +- openerp/addons/base/i18n/nl_BE.po | 4 +- openerp/addons/base/i18n/pl.po | 32 +- openerp/addons/base/i18n/pt.po | 4 +- openerp/addons/base/i18n/pt_BR.po | 4 +- openerp/addons/base/i18n/ro.po | 4 +- openerp/addons/base/i18n/ru.po | 4 +- openerp/addons/base/i18n/sk.po | 4 +- openerp/addons/base/i18n/sl.po | 4 +- openerp/addons/base/i18n/sq.po | 4 +- openerp/addons/base/i18n/sr.po | 4 +- openerp/addons/base/i18n/sr@latin.po | 4 +- openerp/addons/base/i18n/sv.po | 4 +- openerp/addons/base/i18n/th.po | 4 +- openerp/addons/base/i18n/tlh.po | 4 +- openerp/addons/base/i18n/tr.po | 4 +- openerp/addons/base/i18n/uk.po | 4 +- openerp/addons/base/i18n/ur.po | 4 +- openerp/addons/base/i18n/vi.po | 4 +- openerp/addons/base/i18n/zh_CN.po | 4 +- openerp/addons/base/i18n/zh_HK.po | 4 +- openerp/addons/base/i18n/zh_TW.po | 4 +- 64 files changed, 2384 insertions(+), 623 deletions(-) diff --git a/openerp/addons/base/i18n/ab.po b/openerp/addons/base/i18n/ab.po index 7482bae8952..9d19d642114 100644 --- a/openerp/addons/base/i18n/ab.po +++ b/openerp/addons/base/i18n/ab.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:57+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:06+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/af.po b/openerp/addons/base/i18n/af.po index 0e241987519..f42e67b27b3 100644 --- a/openerp/addons/base/i18n/af.po +++ b/openerp/addons/base/i18n/af.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:57+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:06+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/am.po b/openerp/addons/base/i18n/am.po index fe8210a39e6..034fbea8d35 100644 --- a/openerp/addons/base/i18n/am.po +++ b/openerp/addons/base/i18n/am.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:57+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:06+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/ar.po b/openerp/addons/base/i18n/ar.po index 0070c79d763..85e35e9ea9e 100644 --- a/openerp/addons/base/i18n/ar.po +++ b/openerp/addons/base/i18n/ar.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:58+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:06+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/bg.po b/openerp/addons/base/i18n/bg.po index 3368725f7e9..54cd204001c 100644 --- a/openerp/addons/base/i18n/bg.po +++ b/openerp/addons/base/i18n/bg.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:58+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:07+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/bs.po b/openerp/addons/base/i18n/bs.po index 42fd402b1d3..93db819d110 100644 --- a/openerp/addons/base/i18n/bs.po +++ b/openerp/addons/base/i18n/bs.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:58+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:07+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/ca.po b/openerp/addons/base/i18n/ca.po index a03004393b7..e97c92fee90 100644 --- a/openerp/addons/base/i18n/ca.po +++ b/openerp/addons/base/i18n/ca.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:58+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:07+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index d57323cb2d2..211c2e59334 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:58+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:07+0000\n" +"X-Generator: Launchpad (build 16251)\n" "X-Poedit-Language: Czech\n" #. module: base @@ -121,7 +121,7 @@ msgstr "Zobrazit tipy nabídky" #: help:ir.cron,model:0 msgid "" "Model name on which the method to be called is located, e.g. 'res.partner'." -msgstr "" +msgstr "Název modelu umístění volané metody, např. 'res.partner'." #. module: base #: view:ir.module.module:0 diff --git a/openerp/addons/base/i18n/da.po b/openerp/addons/base/i18n/da.po index 2f5b128403b..747807dc8c3 100644 --- a/openerp/addons/base/i18n/da.po +++ b/openerp/addons/base/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:59+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:07+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/de.po b/openerp/addons/base/i18n/de.po index 8c6a7145ed7..cf5d6cb8605 100644 --- a/openerp/addons/base/i18n/de.po +++ b/openerp/addons/base/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:00+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:09+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/el.po b/openerp/addons/base/i18n/el.po index 198d3579aac..16e784a112b 100644 --- a/openerp/addons/base/i18n/el.po +++ b/openerp/addons/base/i18n/el.po @@ -12,8 +12,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:00+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:09+0000\n" +"X-Generator: Launchpad (build 16251)\n" "X-Poedit-Country: GREECE\n" "X-Poedit-Language: Greek\n" "X-Poedit-SourceCharset: utf-8\n" diff --git a/openerp/addons/base/i18n/en_GB.po b/openerp/addons/base/i18n/en_GB.po index 1fb46bb3d8e..b679137a6ec 100644 --- a/openerp/addons/base/i18n/en_GB.po +++ b/openerp/addons/base/i18n/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:05+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:15+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh @@ -4473,7 +4473,7 @@ msgstr "Categories" #. module: base #: model:ir.module.module,shortdesc:base.module_web_mobile msgid "OpenERP Web mobile" -msgstr "" +msgstr "OpenERP Web mobile" #. module: base #: view:base.language.import:0 @@ -5092,7 +5092,7 @@ msgstr "License" #. module: base #: model:ir.module.module,shortdesc:base.module_web_graph msgid "web Graph" -msgstr "" +msgstr "web Graph" #. module: base #: field:ir.attachment,url:0 @@ -5174,7 +5174,7 @@ msgstr "Equatorial Guinea" #. module: base #: model:ir.module.module,shortdesc:base.module_warning msgid "Warning Messages and Alerts" -msgstr "" +msgstr "Warning Messages and Alerts" #. module: base #: view:base.module.import:0 @@ -5185,7 +5185,7 @@ msgstr "Module Import" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch msgid "Switzerland - Accounting" -msgstr "" +msgstr "Switzerland - Accounting" #. module: base #: field:res.bank,zip:0 @@ -5231,7 +5231,7 @@ msgstr "" #. module: base #: model:ir.module.category,description:base.module_category_marketing msgid "Helps you manage your marketing campaigns step by step." -msgstr "" +msgstr "Helps you manage your marketing campaigns step by step." #. module: base #: selection:base.language.install,lang:0 @@ -5275,7 +5275,7 @@ msgstr "Rules" #. module: base #: field:ir.mail_server,smtp_host:0 msgid "SMTP Server" -msgstr "" +msgstr "SMTP Server" #. module: base #: code:addons/base/module/module.py:256 @@ -5329,7 +5329,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications msgid "Specific Industry Applications" -msgstr "" +msgstr "Specific Industry Applications" #. module: base #: model:res.partner.category,name:base.res_partner_category_retailers0 @@ -5339,7 +5339,7 @@ msgstr "Retailers" #. module: base #: model:ir.module.module,shortdesc:base.module_web_uservoice msgid "Receive User Feedback" -msgstr "" +msgstr "Receive User Feedback" #. module: base #: model:res.country,name:base.ls @@ -5349,12 +5349,12 @@ msgstr "Lesotho" #. module: base #: model:ir.module.module,shortdesc:base.module_base_vat msgid "VAT Number Validation" -msgstr "" +msgstr "VAT Number Validation" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign msgid "Partners Geo-Localization" -msgstr "" +msgstr "Partners Geo-Localisation" #. module: base #: model:res.country,name:base.ke @@ -5365,7 +5365,7 @@ msgstr "Kenya" #: model:ir.actions.act_window,name:base.action_translation #: model:ir.ui.menu,name:base.menu_action_translation msgid "Translated Terms" -msgstr "" +msgstr "Translated Terms" #. module: base #: view:res.partner.event:0 @@ -5431,6 +5431,30 @@ msgid "" "Also implements IETF RFC 5785 for services discovery on a http server,\n" "which needs explicit configuration in openerp-server.conf, too.\n" msgstr "" +"\n" +"This module activates the WebDAV server for documents.\n" +"===============================================================\n" +"\n" +"You can then use any compatible browser to remotely see the attachments of " +"OpenObject.\n" +"\n" +"After installation, the WebDAV server can be controlled by a [webdav] " +"section in the server's config.\n" +"Server Configuration Parameter:\n" +"\n" +" [webdav]\n" +" ; enable = True ; Serve webdav over the http(s) servers\n" +" ; vdir = webdav ; the directory that webdav will be served at\n" +" ; this default val means that webdav will be\n" +" ; on \"http://localhost:8069/webdav/\n" +" ; verbose = True ; Turn on the verbose messages of webdav\n" +" ; debug = True ; Turn on the debugging messages of webdav\n" +" ; since the messages are routed to the python logging, with\n" +" ; levels \"debug\" and \"debug_rpc\" respectively, you can leave\n" +" ; these options on\n" +"\n" +"Also implements IETF RFC 5785 for services discovery on a http server,\n" +"which needs explicit configuration in openerp-server.conf, too.\n" #. module: base #: model:res.country,name:base.sm @@ -5485,7 +5509,7 @@ msgstr "That contract is already registered in the system." #: model:ir.actions.act_window,name:base.action_res_partner_bank_type_form #: model:ir.ui.menu,name:base.menu_action_res_partner_bank_typeform msgid "Bank Account Types" -msgstr "" +msgstr "Bank Account Types" #. module: base #: help:ir.sequence,suffix:0 @@ -5495,7 +5519,7 @@ msgstr "Suffix value of the record for the sequence" #. module: base #: help:ir.mail_server,smtp_user:0 msgid "Optional username for SMTP authentication" -msgstr "" +msgstr "Optional username for SMTP authentication" #. module: base #: model:ir.model,name:base.model_ir_actions_actions @@ -5549,12 +5573,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_chat msgid "Web Chat" -msgstr "" +msgstr "Web Chat" #. module: base #: field:res.company,rml_footer2:0 msgid "Bank Accounts Footer" -msgstr "" +msgstr "Bank Accounts Footer" #. module: base #: model:res.country,name:base.mu @@ -5580,12 +5604,12 @@ msgstr "Security" #: code:addons/base/ir/ir_model.py:311 #, python-format msgid "Changing the storing system for field \"%s\" is not allowed." -msgstr "" +msgstr "Changing the storing system for field \"%s\" is not allowed." #. module: base #: help:res.partner.bank,company_id:0 msgid "Only if this bank account belong to your company" -msgstr "" +msgstr "Only if this bank account belongs to your company" #. module: base #: model:res.country,name:base.za @@ -5621,6 +5645,14 @@ msgid "" "This new object will regroup and will allow you to easily keep track and " "order all your purchase orders.\n" msgstr "" +"\n" +"This module lets you manage your Purchase Requisition.\n" +"===========================================================\n" +"\n" +"When a purchase order is created, you now have the opportunity to save the " +"related requisition.\n" +"This new object will regroup and will let you easily track and order all " +"your purchase orders.\n" #. module: base #: model:res.country,name:base.hu @@ -5630,7 +5662,7 @@ msgstr "Hungary" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_recruitment msgid "Recruitment Process" -msgstr "" +msgstr "Recruitment Process" #. module: base #: model:res.country,name:base.br @@ -5691,12 +5723,12 @@ msgstr "System update completed" #. module: base #: sql_constraint:ir.model:0 msgid "Each model must be unique!" -msgstr "" +msgstr "Each model must be unique!" #. module: base #: model:ir.module.category,name:base.module_category_localization msgid "Localization" -msgstr "" +msgstr "Localisation" #. module: base #: model:ir.module.module,description:base.module_sale_mrp @@ -5712,6 +5744,16 @@ msgid "" "It adds sales name and sales Reference on production order.\n" " " msgstr "" +"\n" +"This module provides facility to the user to install mrp and sales modules " +"at a time.\n" +"=============================================================================" +"=======\n" +"\n" +"It is used when we want to keep track of production\n" +"orders generated from sales order.\n" +"It adds sales name and sales Reference on production order.\n" +" " #. module: base #: selection:res.request,state:0 @@ -5829,6 +5871,12 @@ msgid "" " - InfoLogic UK counties listing\n" " - a few other adaptations" msgstr "" +"This is the latest UK OpenERP localisation necessary to run OpenERP " +"accounting for UK SMEs with:\n" +" - a CT600-ready chart of accounts\n" +" - VAT100-ready tax structure\n" +" - InfoLogic UK counties listing\n" +" - a few other adaptations" #. module: base #: field:ir.attachment,create_uid:0 @@ -5844,6 +5892,11 @@ msgid "" " those assets. And it allows to create Move's of the depreciation lines.\n" " " msgstr "" +"Financial and accounting asset management.\n" +" This Module manages the assets owned by a company or individual. It will " +"keep track of depreciation's occurred on\n" +" those assets. And it allows to create moves of the depreciation lines.\n" +" " #. module: base #: model:res.country,name:base.bv @@ -5917,7 +5970,7 @@ msgstr "Field" #. module: base #: model:ir.module.module,shortdesc:base.module_project_long_term msgid "Long Term Projects" -msgstr "" +msgstr "Long Term Projects" #. module: base #: model:res.country,name:base.ve @@ -5937,7 +5990,7 @@ msgstr "Zambia" #. module: base #: view:ir.actions.todo:0 msgid "Launch Configuration Wizard" -msgstr "" +msgstr "Launch Configuration Wizard" #. module: base #: help:res.partner,user_id:0 @@ -6040,7 +6093,7 @@ msgstr "Montserrat" #. module: base #: model:ir.module.module,shortdesc:base.module_decimal_precision msgid "Decimal Precision Configuration" -msgstr "" +msgstr "Decimal Precision Configuration" #. module: base #: model:ir.ui.menu,name:base.menu_translation_app diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 42efe19b696..fb2ca655932 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:04+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:13+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh @@ -658,6 +658,26 @@ msgid "" " Accounting/Reporting/Generic Reporting/Partners/Follow-ups Sent\n" "\n" msgstr "" +"\n" +"Modulo para automatizar cartas para facturas no pagadas, con recordatorios " +"multi-nivel\n" +"==========================================================================\n" +"\n" +"Pueden definirse múltiples niveles de recordatorios a través del menú:\n" +" Contabilidad/Configuración/Varios/Seguimientos\n" +"\n" +"Una vez definidos, pueden imprimirse automáticamente recordatorios cada día, " +"simplemente haciendo clic en el menú: \n" +" Contabilidad/Procesamiento periódico/Facturación/Enviar seguimientos\n" +"\n" +"Se generará un PDF con todas las cartas de acuerdo con los diferentes \n" +"niveles de recordatorio definidos. Se pueden definir diferentes políticas\n" +"para las distintas compañías . También se puede enviar correo al cliente.\n" +"\n" +"Debe denotarse que si se quiere revisar el nivel de seguimiento de una " +"empresa/cuenta determinada, se puede realizar en el menú:\n" +" Contabilidad/Informes/Informes genéricos/Empresas/Seguimientos enviados\n" +"\n" #. module: base #: field:res.country,name:0 @@ -2010,6 +2030,20 @@ msgid "" "The managers can obtain an easy view of best ideas from all the users.\n" "Once installed, check the menu 'Ideas' in the 'Tools' main menu." msgstr "" +"\n" +"Este módulo permite al usuario participar fácilmente y de manera eficiente " +"en la innovación empresarial.\n" +"=============================================================================" +"===============\n" +"\n" +"Permite a todos expresar sus ideas sobre diferentes temas.\n" +"Luego, otros usuarios pueden comentar estas ideas y votar por ideas en " +"particular.\n" +"Cada idea tiene una puntuación basada en los diferentes votos.\n" +"Los administradores pueden obtener una vista fácil de las mejores ideas de " +"los usuarios.\n" +"Una vez instalado, consulte el menú 'Ideas' del menú principal " +"'Herramientas'." #. module: base #: model:ir.model,name:base.model_ir_rule @@ -2109,6 +2143,10 @@ msgid "" " ============================================================\n" " " msgstr "" +"\n" +" Localización china de OpenERP.\n" +"============================================================\n" +" " #. module: base #: model:ir.model,name:base.model_ir_model_access @@ -2161,6 +2199,14 @@ msgid "" "Accounting chart and localization for Ecuador.\n" " " msgstr "" +"\n" +"Este es el módulo base para administrar el plan de cuentas de Ecuador en " +"OpenERP.\n" +"=============================================================================" +"=\n" +"\n" +"Plan de cuentas y localización para Ecuador.\n" +" " #. module: base #: code:addons/base/ir/ir_filters.py:38 @@ -2173,7 +2219,7 @@ msgstr "%s (copia)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_chart msgid "Template of Charts of Accounts" -msgstr "" +msgstr "Plantilla de planes contables" #. module: base #: field:res.partner.address,type:0 @@ -2229,6 +2275,9 @@ msgid "" "today don't come with any additional paid permission for online use of " "'private modules'." msgstr "" +"\n" +"Módulo base para la localización brasileña.\n" +"==========================================" #. module: base #: view:res.request:0 @@ -2363,6 +2412,34 @@ msgid "" "Some statistics by journals are provided.\n" " " msgstr "" +"\n" +"El módulo sale_journal permite categorizar las ventas y entregas (albaranes) " +"entre diferentes diarios.\n" +"=============================================================================" +"==\n" +"\n" +"Este módulo es muy útil para grandes compañías que trabajan por " +"departamentos.\n" +"\n" +"Se pueden usar diarios para diferentes propósitos. Por ejemplo:\n" +" * Separar ventas de diferentes departamentos.\n" +" * Diarios para entregas por UPS o en camión.\n" +"\n" +"Los diarios tienen un responsables y un ciclo que pasa por diversos " +"estados:\n" +" * borrador, abierto, cancelado, realizado.\n" +"\n" +"Se pueden entonces procesar operaciones en lote para los diferentes diarios " +"para por ejemplo confirmar todas las ventas de una vez, para validación o " +"facturación en lote, ...\n" +"\n" +"También soporta métodos de facturación en lote que pueden ser configurados " +"por empresas y pedidos de venta, como por ejemplo:\n" +" * facturación diaria,\n" +" * facturación mensual, ...\n" +"\n" +"Se proveen algunas estadísticas por diario.\n" +" " #. module: base #: field:res.company,logo:0 @@ -2372,7 +2449,7 @@ msgstr "Logo" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_cr msgid "Costa Rica - Accounting" -msgstr "" +msgstr "Costa Rica - Contabilidad" #. module: base #: view:ir.module.module:0 @@ -2398,6 +2475,21 @@ msgid "" "re-invoice your customer's expenses if your work by project.\n" " " msgstr "" +"\n" +"Este módulo permite gestionar los gastos de los empleados.\n" +"===============================================\n" +"\n" +"Se ha implementado el flujo de trabajo completo:\n" +" * Gasto en borrador\n" +" * Confirmación de la hoja por el empleado\n" +" * Validación de su responsable\n" +" * Validación del contable y creación de factura\n" +" * Pago de la factura al empleado\n" +"\n" +"Este módulo también usa la contabilidad analítica y es compatible con la " +"factura en el módulo de hoja de asistencia para que se pueda re-facturar los " +"gastos al cliente si se trabaja por proyecto.\n" +" " #. module: base #: field:ir.values,action_id:0 @@ -2524,6 +2616,18 @@ msgid "" "system to store and search in your CV base.\n" " " msgstr "" +"\n" +"Administra los puestos de trabajo y el proceso de reclutamiento.\n" +"==================================================\n" +"\n" +"Se integra con el módulo de encuestas que le permite definir entrevistas " +"para diferentes trabajos.\n" +"\n" +"Este módulo se integra con la pasarela de correo para el seguimiento " +"automático del correo electrónico enviado a jobs@YOURCOMPANY.com. También " +"está integrado con el sistema de gestión documental para almacenar y buscar " +"en su base de CV.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.action_res_widget_wizard @@ -2603,6 +2707,19 @@ msgid "" "and categorize your interventions with a channel and a priority level.\n" " " msgstr "" +"\n" +"Administración de soporte\n" +"====================\n" +"\n" +"Al igual que la grabación y el procesamiento de reclamaciones, el soporte es " +"una \n" +"buena herramienta para seguir el rastro de las intervenciones realizadas. \n" +"Este menú está más adaptado a una comunicación oral, que no tiene porque \n" +"estar relacionada necesariamente con una reclamación. Seleccione un cliente, " +"\n" +"añada notas y categorice sus intervenciones con un canal y un nivel de " +"prioridad.\n" +" " #. module: base #: sql_constraint:ir.ui.view_sc:0 @@ -2623,6 +2740,17 @@ msgid "" "\n" " " msgstr "" +"\n" +"Módulo para la gestión de recursos.\n" +"===============================\n" +"\n" +"Un recurso representa algo que puede ser planificado\n" +"(un desarrollador en una tarea o un centro de trabajo en órdenes de " +"fabricación).\n" +"Este módulo gestiona los calendarios asociados a cada recurso.\n" +"También gestiona las hojas de todos los recursos.\n" +"\n" +" " #. module: base #: view:ir.rule:0 @@ -2663,6 +2791,12 @@ msgid "" "\n" "Configure servers and trigger synchronization with its database objects.\n" msgstr "" +"\n" +"Sincronización con todos los objetos.\n" +"=================================\n" +"\n" +"Configura servidores y lanza sincronizaciones con sus objetos de base " +"datos.\n" #. module: base #: model:res.country,name:base.mg @@ -2716,6 +2850,13 @@ msgid "" "orders.\n" " " msgstr "" +"\n" +"Módulo base para administrar las distribuciones analíticas en los pedidos de " +"ventas.\n" +"=================================================================\n" +"\n" +"Con este modulo se podrán enlazar cuentas analíticas a pedidos de venta.\n" +" " #. module: base #: field:ir.actions.url,target:0 @@ -2725,7 +2866,7 @@ msgstr "Destino acción" #. module: base #: model:ir.module.module,shortdesc:base.module_base_calendar msgid "Calendar Layer" -msgstr "" +msgstr "Capa calendario" #. module: base #: model:ir.actions.report.xml,name:base.report_ir_model_overview @@ -2802,7 +2943,7 @@ msgstr "Acción servidor" #. module: base #: help:ir.actions.client,params:0 msgid "Arguments sent to the client along withthe view tag" -msgstr "" +msgstr "Argumentos enviados al cliente junto con la etiqueta de vista" #. module: base #: model:ir.module.module,description:base.module_project_gtd @@ -2909,7 +3050,7 @@ msgstr "Hededado" #. module: base #: field:ir.model.fields,serialization_field_id:0 msgid "Serialization Field" -msgstr "" +msgstr "Campo serializacion" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -2971,7 +3112,7 @@ msgstr "¡Error!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr_rib msgid "French RIB Bank Details" -msgstr "" +msgstr "Detalles CC del banco francés" #. module: base #: view:res.lang:0 @@ -3006,6 +3147,11 @@ msgid "" "==================================================\n" " " msgstr "" +"\n" +"Este módulo añade una campo anotación (Pad) en todas las vistas kanban del " +"módulo 'Proyecto'\n" +"===========================================================================\n" +" " #. module: base #: model:ir.actions.act_window,help:base.action_country @@ -3052,19 +3198,19 @@ msgstr "Bangladesh" #. module: base #: model:ir.module.module,shortdesc:base.module_project_retro_planning msgid "Project Retro-planning" -msgstr "" +msgstr "Retro-planeamiento del proyecto" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_planning msgid "Master Procurement Schedule" -msgstr "" +msgstr "Plan maestro de abastecimiento" #. module: base #: model:ir.model,name:base.model_ir_module_category #: field:ir.module.module,application:0 #: field:res.groups,category_id:0 msgid "Application" -msgstr "" +msgstr "Aplicación" #. module: base #: selection:publisher_warranty.contract,state:0 @@ -3082,6 +3228,13 @@ msgid "" "\n" "The decimal precision is configured per company.\n" msgstr "" +"\n" +"Configura la precisión decimal en el precio adaptado a cada uso: " +"contabilidad, ventas, compras, etc.\n" +"=============================================================================" +"=========================\n" +"\n" +"La precisión decimal se configura por empresa.\n" #. module: base #: model:ir.module.module,description:base.module_l10n_pl @@ -3099,11 +3252,17 @@ msgid "" "że wszystkie towary są w obrocie hurtowym.\n" " " msgstr "" +"\n" +"Éste es el módulo para administrar el plan de cuentas e impuestos en OpenERP " +"para Polonia.\n" +"=============================================================================" +"=====\n" +" " #. module: base #: field:ir.actions.client,params_store:0 msgid "Params storage" -msgstr "" +msgstr "Almacenamiento de parámetros" #. module: base #: code:addons/base/module/module.py:409 @@ -3134,6 +3293,20 @@ msgid "" "since it's the same which has been renamed.\n" " " msgstr "" +"\n" +"Este módulo permite a los usuarios realizar segmentaciones de los clientes.\n" +"=================================================================\n" +"\n" +"Mejora los criterios de perfil del anterior módulo 'segmentation'. Gracias " +"al nuevo concepto de cuestionario, ahora se pueden reagrupar preguntas en un " +"cuestionario y utilizarlo directamente en una empresa.\n" +"\n" +"También se ha juntado con la antigua herramienta de segmentación del CRM y " +"del SRM porque había solapamiento.\n" +"\n" +" * Nota: Este módulo no es compatible con el módulo 'segmentation', ya " +"que es el mismo, que ha sido renombrado.\n" +" " #. module: base #: code:addons/report_sxw.py:434 @@ -3254,11 +3427,17 @@ msgid "" "\n" " " msgstr "" +"\n" +" \n" +"Localización belga para facturas de cliente y proveedor (prerrequisito para " +"'account_coda'). \n" +"\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_wiki_quality_manual msgid "Wiki: Quality Manual" -msgstr "" +msgstr "Wiki: Manual de calidad" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -3286,7 +3465,7 @@ msgstr "Sector RRHH" #. module: base #: model:ir.ui.menu,name:base.menu_dashboard_admin msgid "Administration Dashboard" -msgstr "" +msgstr "Tablero de Administración" #. module: base #: code:addons/orm.py:4408 @@ -3346,7 +3525,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_survey_user msgid "Survey / User" -msgstr "" +msgstr "Encuesta / Usuario" #. module: base #: view:ir.module.module:0 @@ -3367,17 +3546,17 @@ msgstr "Archivo icono web (inmóvil)" #. module: base #: model:ir.module.module,description:base.module_web_diagram msgid "Openerp web Diagram view" -msgstr "" +msgstr "Vista Diagrama de OpenERP web" #. module: base #: model:res.groups,name:base.group_hr_user msgid "HR Officer" -msgstr "" +msgstr "Funcionario de RRHH" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_contract msgid "Employee Contracts" -msgstr "" +msgstr "Contratos de los empleados" #. module: base #: model:ir.module.module,description:base.module_wiki_faq @@ -3390,6 +3569,15 @@ msgid "" "for Wiki FAQ.\n" " " msgstr "" +"\n" +"Este módulo provee una plantilla de la sección FAQ (Frequently Asked " +"Questions \n" +"- Preguntas más frecuentes) de la Wiki.\n" +"=========================================\n" +"\n" +"Provee datos demo, creando un grupo Wiki y una página Wiki para la sección " +"FAQ.\n" +" " #. module: base #: view:ir.actions.server:0 @@ -3430,18 +3618,18 @@ msgstr "Títulos de contacto" #. module: base #: model:ir.module.module,shortdesc:base.module_product_manufacturer msgid "Products Manufacturers" -msgstr "" +msgstr "Fabricantes de los productos" #. module: base #: code:addons/base/ir/ir_mail_server.py:217 #, python-format msgid "SMTP-over-SSL mode unavailable" -msgstr "" +msgstr "Modo SMTP sobre SSL no disponible" #. module: base #: model:ir.module.module,shortdesc:base.module_survey msgid "Survey" -msgstr "" +msgstr "Encuesta" #. module: base #: view:base.language.import:0 @@ -3489,7 +3677,7 @@ msgstr "Uruguay" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail_crm msgid "eMail Gateway for Leads" -msgstr "" +msgstr "Pasarela de e-mail para las iniciativas" #. module: base #: selection:base.language.install,lang:0 @@ -3519,7 +3707,7 @@ msgstr "Mapeo de campos" #. module: base #: model:ir.module.module,shortdesc:base.module_web_dashboard msgid "web Dashboard" -msgstr "" +msgstr "Tablero Web" #. module: base #: model:ir.module.module,description:base.module_sale @@ -3563,6 +3751,44 @@ msgid "" " * Graph of Sales by Product's Category in last 90 days\n" " " msgstr "" +"\n" +"Módulo base para gestionar presupuestos y pedidos de venta\n" +"======================================================\n" +"\n" +"Flujo de trabajo con etapas de validación:\n" +"--------------------------------------------------------\n" +" * Presupuesto -> Pedido de venta -> Factura\n" +"\n" +"Métodos de facturación:\n" +"----------------------------------\n" +" * Factura por pedido (antes o después del envío)\n" +" * Factura en la entrega\n" +" * Factura en periodos de tiempo\n" +" * Factura avanzada\n" +"\n" +"Preferencias configurables por empresa:\n" +"--------------------------------------------------------\n" +" * envío\n" +" * facturación\n" +" * incoterm\n" +"\n" +"Stocks y precio de los productos\n" +"--------------------------------------------\n" +"\n" +"Métodos de entrega:\n" +"-----------------------------\n" +" * todo de una\n" +" * multi-parcial\n" +" * costes de envío\n" +"\n" +"Tablero para el administrador de ventas que incluye:\n" +"-----------------------------------------------------------------------\n" +" * Presupuestos\n" +" * Ventas por mes\n" +" * Gráfico de ventas por comercial en los últimos 90 días\n" +" * Gráfico de ventas por cliente en los últimos 90 días\n" +" * Gráfico de ventas por categoría de productos en los últimos 90 días\n" +" " #. module: base #: selection:base.language.install,lang:0 @@ -3586,6 +3812,14 @@ msgid "" "Canadian accounting charts and localizations.\n" " " msgstr "" +"\n" +"Módulo para administrar el plan de cuentas inglés y francés para Canada en " +"OpenERP.\n" +"=============================================================================" +"==============\n" +"\n" +"Planes de cuentas y localización canadienses.\n" +" " #. module: base #: view:base.module.import:0 @@ -3618,6 +3852,10 @@ msgid "" " * the Tax Code Chart for Luxembourg\n" " * the main taxes used in Luxembourg" msgstr "" +"\n" +"Módulo base para la administración del plan de cuentas para Luxemburgo en " +"OpenERP.\n" +"======================================================================" #. module: base #: field:ir.module.module,demo:0 @@ -3642,6 +3880,20 @@ msgid "" "module 'share'.\n" " " msgstr "" +"\n" +"Este módulo define \"portales\" para personalizar el acceso a su base de " +"datos de OpenERP\n" +"para los usuarios externos.\n" +" \n" +"Un portal consta de un menú de usuario personalizado y derechos de acceso " +"para un grupo \n" +"de usuarios (aquellos asociados al portal). También asocia grupos de usuario " +"a los usuarios \n" +"del portal (añadiendo un grupo en el portal lo añade automáticamente a los " +"usuarios del \n" +"portal, etc). Esta característica es muy útil usada en combinación con el " +"módulo 'share'.\n" +" " #. module: base #: selection:res.request,priority:0 @@ -3669,7 +3921,7 @@ msgstr "Instancias" #. module: base #: help:ir.mail_server,smtp_host:0 msgid "Hostname or IP of SMTP server" -msgstr "" +msgstr "Nombre de host o dirección IP del servidor SMTP" #. module: base #: selection:base.language.install,lang:0 @@ -3699,12 +3951,12 @@ msgstr "Formato separador" #. module: base #: constraint:res.partner.bank:0 msgid "The RIB and/or IBAN is not valid" -msgstr "" +msgstr "La CC y/o IBAN no es válida" #. module: base #: model:ir.module.module,shortdesc:base.module_report_webkit msgid "Webkit Report Engine" -msgstr "" +msgstr "Motor de informes Webkit" #. module: base #: selection:publisher_warranty.contract,state:0 @@ -3731,13 +3983,13 @@ msgstr "Mayotte" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_todo msgid "Tasks on CRM" -msgstr "" +msgstr "Tareas del CRM" #. module: base #: model:ir.module.category,name:base.module_category_generic_modules_accounting #: view:res.company:0 msgid "Accounting" -msgstr "" +msgstr "Contabilidad" #. module: base #: model:ir.module.module,description:base.module_account_payment @@ -3752,11 +4004,20 @@ msgid "" "* a basic mechanism to easily plug various automated payment.\n" " " msgstr "" +"\n" +"Módulo para administrar los pagos de facturas.\n" +"=====================================\n" +"\n" +"Este módulo incluye:\n" +"-----------------------------\n" +"* Una forma más eficiente de administrar los pagos de factura.\n" +"* Un mecanismo básico para conectar fácilmente varios pagos automáticos.\n" +" " #. module: base #: view:ir.rule:0 msgid "Interaction between rules" -msgstr "" +msgstr "Interacción entre reglas" #. module: base #: model:ir.module.module,description:base.module_account_invoice_layout @@ -3778,11 +4039,28 @@ msgid "" "\n" " " msgstr "" +"\n" +"Este módulo ofrece algunas características para mejorar el diseño de las " +"facturas.\n" +"=========================================================================\n" +"\n" +"Da la posibilidad de:\n" +"--------------------------------\n" +" * Ordenar todas las líneas de una factura\n" +" * Agregar títulos, líneas de comentarios y líneas de subtotales\n" +" * Dibujar líneas horizontales y poner saltos de página\n" +"\n" +"Por otra parte, hay una opción que permite imprimir todas las facturas " +"seleccionadas con un mensaje especial en la parte inferior. Esta " +"característica puede ser muy útil por ejemplo para imprimir las facturas con " +"felicitaciones de fin de año o condiciones especiales puntuales.\n" +"\n" +" " #. module: base #: constraint:res.partner:0 msgid "Error ! You cannot create recursive associated members." -msgstr "" +msgstr "¡Error! No puede crear miembros asociados recursivamente." #. module: base #: view:res.payterm:0 @@ -3815,6 +4093,10 @@ msgid "" "or data in your OpenERP instance. To install some modules, click on the " "button \"Install\" from the form view and then click on \"Start Upgrade\"." msgstr "" +"Puede instalar nuevos módulos para activar nuevas caracteristicas, menús, " +"informes o datos en la instancia de OpenERP. Para instalar módulos, hay que " +"hacer clic en el botón \"Instalar\" de la vista formulario o la vista " +"\"Kanban\"." #. module: base #: model:ir.actions.act_window,name:base.ir_cron_act @@ -3830,6 +4112,10 @@ msgid "" " OpenERP Web chat module.\n" " " msgstr "" +"\n" +" Módulo para chat por web de OpenERP\n" +"===============================\n" +" " #. module: base #: field:res.partner.address,title:0 @@ -3853,12 +4139,12 @@ msgstr "Se ha detectado recursividad." #. module: base #: model:ir.module.module,shortdesc:base.module_report_webkit_sample msgid "Webkit Report Samples" -msgstr "" +msgstr "Informes Webkit de ejemplo" #. module: base #: model:ir.module.module,shortdesc:base.module_point_of_sale msgid "Point Of Sale" -msgstr "" +msgstr "Terminal punto de venta (TPV)" #. module: base #: code:addons/base/module/module.py:302 @@ -3894,7 +4180,7 @@ msgstr "" #. module: base #: selection:ir.sequence,implementation:0 msgid "Standard" -msgstr "" +msgstr "Estándar" #. module: base #: model:ir.model,name:base.model_maintenance_contract @@ -3923,11 +4209,13 @@ msgid "" "Invalid value for reference field \"%s.%s\" (last part must be a non-zero " "integer): \"%s\"" msgstr "" +"Valor no válido para el campo de referencia \"%s.%s\" (la última parte debe " +"ser un entero distinto de cero): \"%s\"" #. module: base #: model:ir.module.category,name:base.module_category_human_resources msgid "Human Resources" -msgstr "" +msgstr "Recursos humanos" #. module: base #: model:ir.actions.act_window,name:base.action_country @@ -3944,6 +4232,8 @@ msgstr "RML (obsoleto - usar Informe)" #: sql_constraint:ir.translation:0 msgid "Language code of translation item must be among known languages" msgstr "" +"El código de idioma del elemento de traducción debe estar dentro de los " +"lenguajes conocidos" #. module: base #: view:ir.rule:0 @@ -3967,6 +4257,14 @@ msgid "" "templates to target objects.\n" " " msgstr "" +"\n" +" * Soporte multi-idioma para los planes de cuenta, impuestos, códigos de " +"impuestos, diarios, plantillas contables, plan de cuentas analítico y " +"diarios analíticos.\n" +" * Cambios en los asistentes de configuración:\n" +" - Copiar traducciones para plan de cuentas, impuestos, código de " +"impuestos y posiciones fiscales de las plantillas a los objetos.\n" +" " #. module: base #: view:ir.actions.todo:0 @@ -3987,7 +4285,7 @@ msgstr "CIF/NIF" #. module: base #: field:res.users,new_password:0 msgid "Set password" -msgstr "" +msgstr "Establecer contraseña" #. module: base #: view:res.lang:0 @@ -4011,6 +4309,9 @@ msgid "" " OpenERP Web mobile.\n" " " msgstr "" +"\n" +" Interfaz web de OpenERP para móviles.\n" +" " #. module: base #: view:res.lang:0 @@ -4081,6 +4382,8 @@ msgid "" "la moneda Lempira. -- Adds accounting chart for Honduras. It also includes " "taxes and the Lempira currency" msgstr "" +"Agrega plan de cuentas para Honduras. También incluye impuestos y la moneda " +"Lempira." #. module: base #: selection:ir.actions.act_window,view_type:0 @@ -4101,6 +4404,10 @@ msgid "" "Italian accounting chart and localization.\n" " " msgstr "" +"\n" +"Plan de cuentas y localización italiana.\n" +"==============================\n" +" " #. module: base #: model:res.country,name:base.me @@ -4110,12 +4417,12 @@ msgstr "Montenegro" #. module: base #: model:ir.module.module,shortdesc:base.module_document_ics msgid "iCal Support" -msgstr "" +msgstr "Soporte iCal" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail msgid "Email Gateway" -msgstr "" +msgstr "Pasarela de e-mail" #. module: base #: code:addons/base/ir/ir_mail_server.py:439 @@ -4124,6 +4431,8 @@ msgid "" "Mail delivery failed via SMTP server '%s'.\n" "%s: %s" msgstr "" +"La entrega de correo falló vía el servidor SMTP '%s'.\n" +"%s: %s" #. module: base #: view:ir.cron:0 @@ -4139,7 +4448,7 @@ msgstr "Categorías" #. module: base #: model:ir.module.module,shortdesc:base.module_web_mobile msgid "OpenERP Web mobile" -msgstr "" +msgstr "Interfaz web de OpenERP para móviles" #. module: base #: view:base.language.import:0 @@ -4166,6 +4475,17 @@ msgid "" "user rights to Demo user.\n" " " msgstr "" +"\n" +"Derechos de acceso a \"Contabilidad\"\n" +"=============================\n" +"\n" +"Este módulo da acceso de administrador al usuario para todas las " +"características de contabilidad, tales como los elementos del diario y el " +"plan de cuentas.\n" +"\n" +"It assigns manager and user access rights to the Administrator, and only\n" +"user rights to Demo user.\n" +" " #. module: base #: selection:ir.module.module,state:0 @@ -4191,12 +4511,12 @@ msgstr "Liechtenstein" #. module: base #: model:ir.module.module,description:base.module_web_rpc msgid "Openerp web web" -msgstr "" +msgstr "Openerp web" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue_sheet msgid "Timesheet on Issues" -msgstr "" +msgstr "Parte de horas para las incidencias" #. module: base #: model:res.partner.title,name:base.res_partner_title_ltd @@ -4237,7 +4557,7 @@ msgstr "Portugal" #. module: base #: model:ir.module.module,shortdesc:base.module_share msgid "Share any Document" -msgstr "" +msgstr "Compartir cualquier documento" #. module: base #: field:ir.module.module,certificate:0 @@ -4283,11 +4603,40 @@ msgid "" "\n" "\n" msgstr "" +"\n" +"Este módulo mejora el tratamiento multi-moneda en la contabilidad analítica, " +"sobretodo para multi-compañías.\n" +"\n" +"Está basado en el trabajo realizado en los módulos c2c_multicost* " +"disponibles en la versión estable 5.0 y permiten compartir cuentas " +"analíticas entre compañías (incluso si la moneda difiere en cada una).\n" +"\n" +"Lo que se ha realizado hasta ahora es:\n" +"\n" +" * Adaptar el propietario de la línea analítica (= a la compalía que posee " +"la cuenta general asociada a dicha línea analítica).\n" +" * Añadir multi-moneda a las líneas analíticas (similar a la contabilidad " +"financiera).\n" +" * Corregir todos los indicadores de \"costes\" en la contabilidad " +"analítica en base a la moneda correcta (de la compañía propietaria).\n" +" * Por defecto, nada cambia para una implementación mono-compañía.\n" +"\n" +"Como resultado, ahora se puede realmente compartir la misma cuenta analítica " +"entre compañías que no tienen la misma moneda.\n" +"\n" +"- Compañía A : EUR\n" +"- Compañía B : CHF\n" +"\n" +"- Cuenta analítica A : USD, propiedad de la compañía A\n" +"- Cuenta analítica B : CHF, propiedad de la compañía A\n" +"- Cuenta analítica C : EUR, propiedad de la compañía B\n" +"\n" +"\n" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_it msgid "Italy - Accounting" -msgstr "" +msgstr "Italia - Contabilidad" #. module: base #: field:ir.actions.act_window,help:0 @@ -4306,6 +4655,9 @@ msgid "" "its dependencies are satisfied. If the module has no dependency, it is " "always installed." msgstr "" +"Un módulo auto-instalable se instala automáticamente por el sistema cuando " +"todas sus dependencias han sido satisfechas. Si el módulo no tiene " +"dependencias, será instalado siempre." #. module: base #: model:ir.actions.act_window,name:base.res_lang_act_window @@ -4328,6 +4680,14 @@ msgid "" "automatically new claims based on incoming emails.\n" " " msgstr "" +"\n" +"Módulo que permite seguir el rastro de las reclamaciones y quejas de " +"clientes/proveedores.\n" +"========================================================================\n" +"\n" +"Está totalmente integrado con la pasarela de e-mail, por lo que se pueden " +"crear nuevas reclamaciones automáticamente basadas en e-mails entrantes.\n" +" " #. module: base #: selection:workflow.activity,join_mode:0 @@ -4338,7 +4698,7 @@ msgstr "Xor" #. module: base #: model:ir.module.category,name:base.module_category_localization_account_charts msgid "Account Charts" -msgstr "" +msgstr "Planes de cuentas" #. module: base #: view:res.request:0 @@ -4410,6 +4770,24 @@ msgid "" "anonymization process to recover your previous data.\n" " " msgstr "" +"\n" +"Este módulo permite hacer anónima una base de datos.\n" +"===============================================\n" +"\n" +"Este módulo permite mantener confidenciales los datos de una base de datos " +"dada.\n" +"Este proceso es útil si se desea utilizar el proceso de migración y proteger " +"sus\n" +"datos o los de sus clientes de manera confidencial. El principio es que se " +"ejecuta una\n" +"herramienta de anonimización que oculta sus datos confidenciales (los " +"sustituye por\n" +"caracteres 'XXX'). A continuación, se puede enviar la base de datos " +"anonimizada al \n" +"equipo de migración. Cuando regrese su base de datos migrada, la restaura y " +"revierte el\n" +"proceso de anonimización para recuperar sus datos anteriores.\n" +" " #. module: base #: help:publisher_warranty.contract,name:0 @@ -4418,6 +4796,8 @@ msgid "" "Your OpenERP Publisher's Warranty Contract unique key, also called serial " "number." msgstr "" +"Su clave de contrato única para la garantía del editor de OpenERP, también " +"llamada número de serie." #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4432,6 +4812,14 @@ msgid "" "\n" " " msgstr "" +"\n" +"Módulo que permite configurar el sistema cuando se instala una nueva base de " +"datos.\n" +"===================================================================\n" +"\n" +"Muestra una lista de aplicaciones para instalar.\n" +"\n" +" " #. module: base #: field:ir.actions.report.xml,report_sxw_content:0 @@ -4442,7 +4830,7 @@ msgstr "Contenido SXW" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pl msgid "Poland - Accounting" -msgstr "" +msgstr "Polonia - Contabilidad" #. module: base #: view:ir.cron:0 @@ -4472,6 +4860,20 @@ msgid "" "\n" " " msgstr "" +"\n" +"Módulo de compras para generar un pedido de compra para adquirir bienes " +"desde un proveedor.\n" +"=============================================================================" +"============\n" +"\n" +"Se crea una factura de compra desde cada pedido de compra.\n" +"\n" +"Tablero para la administración de compras que incluye:\n" +" * Pedidos de compra actuales\n" +" * Pedidos de compra en borrador\n" +" * Gráfico de cantidad e importe por mes\n" +"\n" +" " #. module: base #: view:ir.model.fields:0 @@ -4493,7 +4895,7 @@ msgstr "Resumen" #. module: base #: model:ir.module.category,name:base.module_category_hidden_dependency msgid "Dependency" -msgstr "" +msgstr "Dependencia" #. module: base #: field:multi_company.default,expression:0 @@ -4516,6 +4918,9 @@ msgid "" "When no specific mail server is requested for a mail, the highest priority " "one is used. Default priority is 10 (smaller number = higher priority)" msgstr "" +"Cuando para un correo no se especifica un servidor de correo en concreto, se " +"usa el de mayor prioridad. La prioridad por defecto es 10 (número más " +"pequeño = más prioridad)" #. module: base #: model:ir.module.module,description:base.module_crm_partner_assign @@ -4534,6 +4939,20 @@ msgid "" "You can also use the geolocalization without using the GPS coordinates.\n" " " msgstr "" +"\n" +"Módulo usado por OpenERP SA para redirigir a los clientes a sus empresas, " +"basado en la geolocalización.\n" +"=============================================================================" +"====\n" +"\n" +"Con este módulo se puede:\n" +"\n" +"- geolocalizar oportunidades usando este módulo.\n" +"- usar geolocalización cuando se asignen oportunidades a empresas.\n" +"- determinar las coordenadas GPS de acuerdo a la dirección de la empresa.\n" +"- asignar la empresa más adecuada.\n" +"- usar la geolicalización sin coordenadas GPS.\n" +" " #. module: base #: help:ir.actions.act_window,help:0 @@ -4567,12 +4986,12 @@ msgstr "Objeto de activación" #. module: base #: sql_constraint:ir.sequence.type:0 msgid "`code` must be unique." -msgstr "" +msgstr "'código' debe ser único." #. module: base #: model:ir.module.module,shortdesc:base.module_hr_expense msgid "Expenses Management" -msgstr "" +msgstr "Gestión de gastos" #. module: base #: view:workflow.activity:0 @@ -4583,7 +5002,7 @@ msgstr "Transiciones entrantes" #. module: base #: field:ir.values,value_unpickle:0 msgid "Default value or action reference" -msgstr "" +msgstr "Valor por defecto o referencia de acción" #. module: base #: model:res.country,name:base.sr @@ -4593,7 +5012,7 @@ msgstr "Surinam" #. module: base #: model:ir.module.module,shortdesc:base.module_project_timesheet msgid "Bill Time on Tasks" -msgstr "" +msgstr "Facturar tiempo en tareas" #. module: base #: model:ir.module.category,name:base.module_category_marketing @@ -4610,7 +5029,7 @@ msgstr "Cuenta bancaria" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_gr msgid "Greece - Accounting" -msgstr "" +msgstr "Grecia - Contabilidad" #. module: base #: selection:base.language.install,lang:0 @@ -4630,7 +5049,7 @@ msgstr "Estructura personalizada" #. module: base #: model:ir.module.module,shortdesc:base.module_web_gantt msgid "web Gantt" -msgstr "" +msgstr "Gantt para web" #. module: base #: field:ir.module.module,license:0 @@ -4640,7 +5059,7 @@ msgstr "Licencia" #. module: base #: model:ir.module.module,shortdesc:base.module_web_graph msgid "web Graph" -msgstr "" +msgstr "Gráficos para web" #. module: base #: field:ir.attachment,url:0 @@ -4687,6 +5106,20 @@ msgid "" "above. Specify the interval information and partner to be invoice.\n" " " msgstr "" +"\n" +"Crear documentos recurrentes\n" +"===========================\n" +"\n" +"Este módulo permite crear nuevos documentos y añadir suscripciones a los " +"mismos. \n" +"\n" +"Por ejemplo: Para tener una factura generada automática y periódicamente, " +"hay que:\n" +"1. Definir un tipo de documento basado en un objeto factura.\n" +"2. Definir una suscripción cuyo documento fuente sea el documento definido " +"antes. \n" +"3. Especificar el intervalo y el cliente a ser facturado.\n" +" " #. module: base #: field:ir.actions.server,srcmodel_id:0 @@ -4723,7 +5156,7 @@ msgstr "Guinea ecuatorial" #. module: base #: model:ir.module.module,shortdesc:base.module_warning msgid "Warning Messages and Alerts" -msgstr "" +msgstr "Mensajes de aviso y alertas" #. module: base #: view:base.module.import:0 @@ -4734,7 +5167,7 @@ msgstr "Importación de módulo" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch msgid "Switzerland - Accounting" -msgstr "" +msgstr "Suiza - Contabilidad" #. module: base #: field:res.bank,zip:0 @@ -4780,7 +5213,7 @@ msgstr "" #. module: base #: model:ir.module.category,description:base.module_category_marketing msgid "Helps you manage your marketing campaigns step by step." -msgstr "" +msgstr "Ayuda a gestionar las campañas de marketing paso a paso." #. module: base #: selection:base.language.install,lang:0 @@ -4824,7 +5257,7 @@ msgstr "Reglas" #. module: base #: field:ir.mail_server,smtp_host:0 msgid "SMTP Server" -msgstr "" +msgstr "Servidor SMTP" #. module: base #: code:addons/base/module/module.py:256 @@ -4855,6 +5288,9 @@ msgid "" "the same values as those available in the condition field, e.g. `Dear [[ " "object.partner_id.name ]]`" msgstr "" +"Contenido del e-mail, que debe contener expresiones encerradas en dobles " +"corchetes basadas en los mismos valores disponibles en el campo condición. " +"Por ejemplo: 'Estimado [[ object.partner_id.name ]]'" #. module: base #: model:ir.actions.act_window,name:base.action_workflow_form @@ -4875,11 +5311,19 @@ msgid "" "modules like share, lunch, pad, idea, survey and subscription.\n" " " msgstr "" +"\n" +"Instalador para herramientas extra como los módulos 'lunch', 'survey', " +"'idea', 'share', etc.\n" +"=================================================================\n" +"\n" +"Hace disponible la configuración extra oculta desde la que se puede instalar " +"módulos como 'share', 'lunch', 'pad', 'idea', 'survey' y 'subscription'.\n" +" " #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications msgid "Specific Industry Applications" -msgstr "" +msgstr "Aplicaciones específicas de la industria" #. module: base #: model:res.partner.category,name:base.res_partner_category_retailers0 @@ -4889,7 +5333,7 @@ msgstr "Minoristas" #. module: base #: model:ir.module.module,shortdesc:base.module_web_uservoice msgid "Receive User Feedback" -msgstr "" +msgstr "Recibir retroalimentación del usuario" #. module: base #: model:res.country,name:base.ls @@ -4899,12 +5343,12 @@ msgstr "Lesotho" #. module: base #: model:ir.module.module,shortdesc:base.module_base_vat msgid "VAT Number Validation" -msgstr "" +msgstr "Validación del NIF" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign msgid "Partners Geo-Localization" -msgstr "" +msgstr "Geo-localización de empresas" #. module: base #: model:res.country,name:base.ke @@ -4915,7 +5359,7 @@ msgstr "Kenia" #: model:ir.actions.act_window,name:base.action_translation #: model:ir.ui.menu,name:base.menu_action_translation msgid "Translated Terms" -msgstr "" +msgstr "Términos traducidos" #. module: base #: view:res.partner.event:0 @@ -4981,6 +5425,31 @@ msgid "" "Also implements IETF RFC 5785 for services discovery on a http server,\n" "which needs explicit configuration in openerp-server.conf, too.\n" msgstr "" +"\n" +"Módulo que activa el servidor de documentos WebDAV.\n" +"============================================\n" +"\n" +"Se puede usar con cualquier navegador compatible para ver de manera remota " +"los adjuntos de OpenERP.\n" +"\n" +"Después de la instalación, el servidor WebDAV puede ser configurado en una " +"sección '[webdav]' dentro del archivo de configuración del servidor.\n" +"\n" +"Parámetros de configuración del servidor:\n" +"\n" +"[webdav]\n" +"; enable = True ; Activar o desactivar WebDAV\n" +"; vdir = webdav ; Carpeta que será servida, lo que significa\n" +"; que para este valor por defecto WebDAV estará en\n" +"; \"http://localhost:8069/webdav/\n" +"; verbose = True ; Activa o desactiva mensajes extendidos.\n" +"; debug = True ; Activa o desactiva los mensaje de depuración de webdav, \n" +"; dado que los mensajes son encauzados al log de python, con niveles \n" +"; 'debug' y 'debug_rpc' respectivamente, se pueden dejar activados.\n" +"\n" +"También implementa el protocolo IETF RFC 5785 para descubrimiento de " +"servicios en un servidor HTTP, que requiere también de una configuración " +"específica también en el archivo de configuración del servidor.\n" #. module: base #: model:res.country,name:base.sm @@ -5003,6 +5472,19 @@ msgid "" "of the survey\n" " " msgstr "" +"\n" +"Módulo para la realización de encuestas.\n" +"==================================\n" +"\n" +"Depende de las respuestas o revisiones de otras preguntas de diferentes " +"usuarios.\n" +"Una encuesta puede tener múltiples páginas. Cada página puede contener " +"múltiples preguntas y cada pregunta múltiples respuestas.\n" +"Usuarios diferentes pueden dar diferentes respuestas de la pregunta y " +"dependiendo de ello la encuesta se realiza.\n" +"A las empresas se les puede enviar un e-mail con un usuario y contraseña " +"para la invitación de la encuesta.\n" +" " #. module: base #: model:res.country,name:base.bm @@ -5035,7 +5517,7 @@ msgstr "Este contrato ya está registrado en el sistema." #: model:ir.actions.act_window,name:base.action_res_partner_bank_type_form #: model:ir.ui.menu,name:base.menu_action_res_partner_bank_typeform msgid "Bank Account Types" -msgstr "" +msgstr "Tipos de cuentas bancarias" #. module: base #: help:ir.sequence,suffix:0 @@ -5045,7 +5527,7 @@ msgstr "Valor del sufijo del registro para la secuencia." #. module: base #: help:ir.mail_server,smtp_user:0 msgid "Optional username for SMTP authentication" -msgstr "" +msgstr "Nombre de usuario opcional para la autenticación SMTP" #. module: base #: model:ir.model,name:base.model_ir_actions_actions @@ -5099,12 +5581,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_chat msgid "Web Chat" -msgstr "" +msgstr "Chat para web" #. module: base #: field:res.company,rml_footer2:0 msgid "Bank Accounts Footer" -msgstr "" +msgstr "Pie de página de las cuentas bancarias" #. module: base #: model:res.country,name:base.mu @@ -5131,11 +5613,12 @@ msgstr "Seguridad" #, python-format msgid "Changing the storing system for field \"%s\" is not allowed." msgstr "" +"No está permitido cambiar el sistema de almacenamiento para el campo \"%s\"." #. module: base #: help:res.partner.bank,company_id:0 msgid "Only if this bank account belong to your company" -msgstr "" +msgstr "Sólo si esta cuenta bancaria pertenece a su compañía" #. module: base #: model:res.country,name:base.za @@ -5171,6 +5654,13 @@ msgid "" "This new object will regroup and will allow you to easily keep track and " "order all your purchase orders.\n" msgstr "" +"\n" +"Módulo que permite administrar solicitudes de compra.\n" +"===========================================\n" +"\n" +"Cuando se crea un pedido de compra, se da la oportunidad de guardar la " +"solicitud asociada. Este nuevo objeto permite reagrupar, seguir la pista y " +"ordenar todos los pedidos de venta.\n" #. module: base #: model:res.country,name:base.hu @@ -5180,7 +5670,7 @@ msgstr "Hungría" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_recruitment msgid "Recruitment Process" -msgstr "" +msgstr "Proceso de selección" #. module: base #: model:res.country,name:base.br @@ -5243,12 +5733,12 @@ msgstr "Actualización del sistema terminada" #. module: base #: sql_constraint:ir.model:0 msgid "Each model must be unique!" -msgstr "" +msgstr "¡Cada modelo debe ser único!" #. module: base #: model:ir.module.category,name:base.module_category_localization msgid "Localization" -msgstr "" +msgstr "Localización" #. module: base #: model:ir.module.module,description:base.module_sale_mrp @@ -5264,6 +5754,15 @@ msgid "" "It adds sales name and sales Reference on production order.\n" " " msgstr "" +"\n" +"Provee facilidades al usuario para instalar los módulos 'mrp' and 'sale' a " +"la vez.\n" +"=============================================================\n" +"\n" +"Se usa básicamente cuando se controlan las órdenes de fabricación generadas " +"desde los pedidos de venta. Añade número y referencia del pedido de venta a " +"la orden de fabricación.\n" +" " #. module: base #: selection:res.request,state:0 @@ -5303,6 +5802,15 @@ msgid "" "revenue\n" "reports, etc." msgstr "" +"Módulo para generar facturas basadas en costes (recursos humanos, gastos, " +"...).\n" +"============================================================================" +"\n" +"\n" +"Genera facturas para gastos, entradas de parte horario, ...\n" +"\n" +"Se pueden definir listas de precios en la contabilidad analítica, para tener " +"informes de ingresos teóricos, etc." #. module: base #: field:ir.ui.menu,parent_id:0 @@ -5313,7 +5821,7 @@ msgstr "Menú padre" #. module: base #: field:res.partner.bank,owner_name:0 msgid "Account Owner Name" -msgstr "" +msgstr "Nombre del propietario de la cuenta" #. module: base #: field:ir.rule,perm_unlink:0 @@ -5342,7 +5850,7 @@ msgstr "Separador de decimales" #: view:ir.module.module:0 #, python-format msgid "Install" -msgstr "" +msgstr "Instalar" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5364,7 +5872,7 @@ msgstr "" #. module: base #: field:ir.filters,name:0 msgid "Filter Name" -msgstr "" +msgstr "Nombre del filtro" #. module: base #: view:res.partner:0 @@ -5382,7 +5890,7 @@ msgid "" " - VAT100-ready tax structure\n" " - InfoLogic UK counties listing\n" " - a few other adaptations" -msgstr "" +msgstr "Localización de OpenERP para contabilidad en Reino Unido." #. module: base #: field:ir.attachment,create_uid:0 @@ -5398,6 +5906,13 @@ msgid "" " those assets. And it allows to create Move's of the depreciation lines.\n" " " msgstr "" +"Módulo para la gestión de activos fijos.\n" +"==============================\n" +"\n" +"Este módulo administra los activos fijos propiedad de la compañía o de un " +"empleado. Permite seguir el rastro a la depreciación ocurrida en dichos " +"activos y permite la creación de asientos con las líneas de depreciación.\n" +" " #. module: base #: model:res.country,name:base.bv @@ -5412,7 +5927,7 @@ msgstr "Plugins" #. module: base #: field:res.company,child_ids:0 msgid "Child Companies" -msgstr "Compañías hijas" +msgstr "Compañías subordinadas" #. module: base #: model:ir.model,name:base.model_res_users @@ -5460,6 +5975,11 @@ msgid "" "\n" " " msgstr "" +"\n" +"Módulo de localización contable de Bélgica para OpenERP.\n" +"==============================================\n" +"\n" +" " #. module: base #: field:ir.property,fields_id:0 @@ -5471,7 +5991,7 @@ msgstr "Campo" #. module: base #: model:ir.module.module,shortdesc:base.module_project_long_term msgid "Long Term Projects" -msgstr "" +msgstr "Proyectos a largo plazo" #. module: base #: model:res.country,name:base.ve @@ -5491,7 +6011,7 @@ msgstr "Zambia" #. module: base #: view:ir.actions.todo:0 msgid "Launch Configuration Wizard" -msgstr "" +msgstr "Iniciar asistente de configuración" #. module: base #: help:res.partner,user_id:0 @@ -5596,7 +6116,7 @@ msgstr "Montserrat" #. module: base #: model:ir.module.module,shortdesc:base.module_decimal_precision msgid "Decimal Precision Configuration" -msgstr "" +msgstr "Configuración de la precisión decimal" #. module: base #: model:ir.ui.menu,name:base.menu_translation_app @@ -5631,6 +6151,30 @@ msgid "" " * Graph : Products to send in delay (date < = today)\n" " " msgstr "" +"\n" +"Módulo de gestión de inventario que permite administrar múltiples almacenes, " +"con ubicaciones múltiples y estructuradas.\n" +"=============================================================================" +"==================\n" +"\n" +"Gracias a la gestión de doble entrada, el control de inventario es potente y " +"flexible:\n" +" * Histórico y planificación de movimientos,\n" +" * Diferentes métodos de inventario (FIFO, LIFO, ...)\n" +" * Valoración de stock (estándar o precio medio, ...)\n" +" * Casamiento robusto para diferencias de inventario\n" +" * Reglas de reordenación automática (niveles de stock, JIT, ...)\n" +" * Soporte para código de barras\n" +" * Detección rápida de errores por el sistema de doble entrada\n" +" * Trazabilidad (hacía arriba/abajo, lotes de fabricación, número de " +"serie, ...)\n" +" * Tablero \"Almacén\" que incluye:\n" +" * Compras en excepción\n" +" * Lista de productos entrantes\n" +" * Lista de productos salientes\n" +" * Gráfico : Productos que se reciben con retraso (fecha <= hoy)\n" +" * Gráfico : Productos que se envían con retraso (fecha <= hoy)\n" +" " #. module: base #: model:ir.model,name:base.model_ir_module_module @@ -5726,7 +6270,7 @@ msgstr "Web" #. module: base #: model:ir.module.module,shortdesc:base.module_lunch msgid "Lunch Orders" -msgstr "" +msgstr "Pedidos de comida" #. module: base #: selection:base.language.install,lang:0 @@ -5879,12 +6423,12 @@ msgstr "Islas Jan Mayen y Svalbard" #. module: base #: model:ir.module.category,name:base.module_category_hidden_test msgid "Test" -msgstr "" +msgstr "Prueba" #. module: base #: model:ir.module.module,shortdesc:base.module_web_kanban msgid "Base Kanban" -msgstr "" +msgstr "Kanban web" #. module: base #: view:ir.actions.act_window:0 @@ -5920,6 +6464,16 @@ msgid "" "You can also view the report of account analytic summary\n" "user-wise as well as month wise.\n" msgstr "" +"\n" +"Este módulo permite modificar la vista de cuentas analíticas para mostrar " +"datos importantes para el responsble de proyectos de las compañías de " +"servicios.\n" +"=============================================================================" +"============================================\n" +"\n" +"Añade un menú para mostrar información relevante para cada responsable. " +"También puede ver el informe del resumen de contabilidad analítica a gusto " +"del usuario.\n" #. module: base #: model:ir.model,name:base.model_base_language_install @@ -5955,6 +6509,16 @@ msgid "" "http://translations.launchpad.net/openerp-costa-rica\n" " " msgstr "" +"\n" +"Plan de cuentas de Costa Rica.\n" +"========================\n" +"Incluye:\n" +"* Tipos de cuenta\n" +"* Plantillas de cuentas\n" +"* Plantillas de impuestos\n" +"* Plantilla de códigos de impuestos\n" +"* Plantillas de plan de cuentas\n" +" " #. module: base #: selection:base.language.export,state:0 @@ -5969,7 +6533,7 @@ msgstr "Propiedad 'On delete' (al borrar) para campos many2one" #. module: base #: model:ir.module.category,name:base.module_category_accounting_and_finance msgid "Accounting & Finance" -msgstr "" +msgstr "Contabilidad y finanzas" #. module: base #: field:ir.actions.server,write_id:0 @@ -5993,13 +6557,13 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_values_form_defaults #: view:ir.values:0 msgid "User-defined Defaults" -msgstr "" +msgstr "Predeterminados definidos por el usuario" #. module: base #: model:ir.module.category,name:base.module_category_usability #: view:res.users:0 msgid "Usability" -msgstr "" +msgstr "Usabilidad" #. module: base #: field:ir.actions.act_window,domain:0 @@ -6010,7 +6574,7 @@ msgstr "Valor de dominio" #. module: base #: model:ir.module.module,shortdesc:base.module_base_module_quality msgid "Analyse Module Quality" -msgstr "" +msgstr "Módulo para análisis de la calidad de un módulo" #. module: base #: selection:base.language.install,lang:0 @@ -6034,6 +6598,8 @@ msgid "" "How many times the method is called,\n" "a negative number indicates no limit." msgstr "" +"Cuántas veces es llamado el método,\n" +"Un número negativo indica que no hay límite." #. module: base #: field:res.partner.bank.type.field,bank_type_id:0 @@ -6050,7 +6616,7 @@ msgstr "El nombre del grupo no puede empezar con \"-\"" #. module: base #: view:ir.module.module:0 msgid "Apps" -msgstr "" +msgstr "Aplicaciones" #. module: base #: view:ir.ui.view_sc:0 @@ -6080,7 +6646,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll msgid "Belgium - Payroll" -msgstr "" +msgstr "Bélgica - Nóminas" #. module: base #: view:publisher_warranty.contract.wizard:0 @@ -6102,12 +6668,12 @@ msgstr "res.empresa.titulo" #. module: base #: view:res.partner.bank:0 msgid "Bank Account Owner" -msgstr "Propietario cuenta bancaria" +msgstr "Titular de la cuenta bancaria" #. module: base #: model:ir.module.category,name:base.module_category_uncategorized msgid "Uncategorized" -msgstr "" +msgstr "Sin categoría" #. module: base #: field:ir.attachment,res_name:0 @@ -6137,6 +6703,19 @@ msgid "" " * Integrated with Holiday Management\n" " " msgstr "" +"\n" +"Sistema genérico de nóminas.\n" +"========================\n" +"\n" +" * Detalles del empleado\n" +" * Contratos de empleados\n" +" * Contrato basado en el pasaporte\n" +" * Provisiones / deducciones\n" +" * Posibilidad de configurar salario básico / bruto / neto\n" +" * Nómina del empleado\n" +" * Registro de nómina mensual\n" +" * Integrado con la administración de vacaciones\n" +" " #. module: base #: selection:ir.cron,interval_type:0 @@ -6170,12 +6749,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_diagram msgid "OpenERP Web Diagram" -msgstr "" +msgstr "Diagrama para web" #. module: base #: view:res.partner.bank:0 msgid "My Banks" -msgstr "" +msgstr "Bancos" #. module: base #: help:multi_company.default,object_id:0 @@ -6209,11 +6788,19 @@ msgid "" "The user can also publish notes.\n" " " msgstr "" +"\n" +"Módulo que permite crear un tablero personalizado.\n" +"=========================================\n" +"\n" +"Este módulo también crea el tablero de \"Administración\".\n" +"\n" +"El usuario puede también publicar notas.\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_project_scrum msgid "Methodology: SCRUM" -msgstr "" +msgstr "Metodología: SCRUM" #. module: base #: view:ir.attachment:0 @@ -6234,7 +6821,7 @@ msgstr "Cargar traducción ofical" #. module: base #: model:ir.module.module,shortdesc:base.module_account_cancel msgid "Cancel Journal Entries" -msgstr "" +msgstr "Cancelar asientos" #. module: base #: view:ir.actions.server:0 @@ -6253,16 +6840,19 @@ msgid "" "If enabled, the full output of SMTP sessions will be written to the server " "log at DEBUG level(this is very verbose and may include confidential info!)" msgstr "" +"Si está habilitado, la salida completa de las sesiones SMTP serán escritas " +"en el registro del servidor en el nivel DEBUG (¿esto es muy detallado y " +"puede incluir información confidencial!" #. module: base #: model:ir.module.module,shortdesc:base.module_base_report_creator msgid "Query Builder" -msgstr "" +msgstr "Constructor de consultas" #. module: base #: selection:ir.actions.todo,type:0 msgid "Launch Automatically" -msgstr "" +msgstr "Iniciar automáticamente" #. module: base #: model:ir.module.module,description:base.module_mail @@ -6296,6 +6886,33 @@ msgid "" "\n" " " msgstr "" +"\n" +"Subsistema genérico de e-mail con almacenamiento y encolado de mensajes.\n" +"============================================================\n" +"\n" +"Este subsistema de e-mail no está pensado para ser preparado con una " +"aplicación independiente, pero provee una capa de abstracción unificada que " +"todas las demás aplicaciones pueden usar.\n" +"\n" +"Las características principales son:\n" +"\n" +" * Recae en los servidores salientes globales configurados en el menú " +"\"Administración\" para entregar el correo saliente. \n" +" * Provee un API para enviar mensajes y archivarlos, agrupados por " +"conversación.\n" +" * Cualquier documento de OpenERP puede actuar como asunto de una " +"conversación, siempre que incluya el soporte necesario para manejar mensajes " +"entrantes. (ver la clase \"mail.thread\" para más detalles). \n" +" * Incluye un mecanismo de encolado con procesamiento configurable basado " +"en calendario.\n" +" * Incluye un asistente genérico de composición de mensaje, que se puede " +"convertir en un asistente de envío masivo, y es capaz de interpretar " +"expresiones simples que serán reemplazadas con datos dinámicos cuando se " +"envíe cada mensaje. Este asistente genérico es fácilmente extensible para " +"incorporar características más avanzadas (ver \"email_template\" para " +"ejemplo, que añade una selección de plantilla a este asistente).\n" +"\n" +" " #. module: base #: view:res.lang:0 @@ -6331,6 +6948,26 @@ msgid "" "an other object.\n" " " msgstr "" +"\n" +"Módulo que permite administrar los contactos\n" +"====================================\n" +"\n" +"Permite definir:\n" +" * contactos no relacionados con una empresa,\n" +" * contactos trabajando en múltiples direcciones (posiblemente para " +"múltiples empresas),\n" +" * contactoss con posibles diferentes funciones para cada una de las " +"direcciones de trabajo\n" +"\n" +"También añade nuevos elementos de menú en:\n" +" Compras / Libreta de direcciones / Contactos\n" +" Ventas / Libreta de direcciones / Contactos\n" +"\n" +"Hay que poner atención en que este módulo convierte las direcciones actuales " +"en \"direcciones + contactos\", lo que significa que algunos campos de las " +"direcciones desaparecerán (como por ejemplo el nombre del contacto), ya que " +"se suponene definidas en otro objeto.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.act_res_partner_event @@ -6358,6 +6995,8 @@ msgid "" "- Action: an action attached to one slot of the given model\n" "- Default: a default value for a model field" msgstr "" +"- Acción: una acción adjunta al modelo dado\n" +"- Por defecto: un valor por defecto para el campo del modelo" #. module: base #: model:ir.actions.act_window,name:base.action_partner_addess_tree @@ -6389,18 +7028,18 @@ msgstr "vsep" #. module: base #: model:res.widget,title:base.openerp_favorites_twitter_widget msgid "OpenERP Tweets" -msgstr "" +msgstr "Tweets OpenERP" #. module: base #: code:addons/base/module/module.py:392 #, python-format msgid "Uninstall" -msgstr "" +msgstr "Desinstalar" #. module: base #: model:ir.module.module,shortdesc:base.module_account_budget msgid "Budgets Management" -msgstr "" +msgstr "Gestión de presupuestos" #. module: base #: field:workflow.triggers,workitem_id:0 @@ -6410,17 +7049,17 @@ msgstr "Elemento de trabajo" #. module: base #: model:ir.module.module,shortdesc:base.module_anonymization msgid "Database Anonymization" -msgstr "" +msgstr "Anonimización de la base de datos" #. module: base #: selection:ir.mail_server,smtp_encryption:0 msgid "SSL/TLS" -msgstr "" +msgstr "SSL/TLS" #. module: base #: field:publisher_warranty.contract,check_opw:0 msgid "OPW" -msgstr "" +msgstr "OPW" #. module: base #: field:res.log,secondary:0 @@ -6466,6 +7105,9 @@ msgid "" "An arbitrary string, interpreted by the client according to its own needs " "and wishes. There is no central tag repository across clients." msgstr "" +"Una cadena arbitraria, interpretada por el cliente de acuerdo con sus " +"propias necesidades y deseos. No hay repositorio central de etiqueta a " +"través de clientes." #. module: base #: sql_constraint:ir.rule:0 @@ -6490,6 +7132,13 @@ msgid "" "using the\n" "FTP client.\n" msgstr "" +"\n" +"Módulo de soporte del interfaz FTP para el sistema de gestión de " +"documentos.\n" +"================================================================\n" +"\n" +"Este módulo permite acceder a los documentos, además de a través de OpenERP, " +"a través de un cliente FTP.\n" #. module: base #: field:ir.model.fields,size:0 @@ -6515,11 +7164,26 @@ msgid "" "\n" " " msgstr "" +"\n" +"Módulo que permite definir cuál es la función por defecto de un usuario " +"específico en una cuenta determinada.\n" +"=============================================================================" +"==========\n" +"\n" +"Esto se usa sobretodo cuando un usuario codifica su hoja de tiempos: se " +"obtienen los valores son obtenidos y se auto-completan los campos. Pero la " +"posibilidad de modificar estos valores todavía está disponible.\n" +"\n" +"Obviamente, si no se ha grabado ningún dato para la cuenta actual, se da el " +"valor por defecto, por lo que este módulo es perfectamente compatible con " +"configuraciones antiguas.\n" +"\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_audittrail msgid "Audit Trail" -msgstr "" +msgstr "Rastro de auditoría" #. module: base #: model:res.country,name:base.sd @@ -6532,7 +7196,7 @@ msgstr "Sudán" #: field:res.currency.rate,currency_rate_type_id:0 #: view:res.currency.rate.type:0 msgid "Currency Rate Type" -msgstr "" +msgstr "Tipo de tasa de cambio" #. module: base #: model:res.country,name:base.fm @@ -6553,12 +7217,12 @@ msgstr "Menús" #. module: base #: selection:ir.actions.todo,type:0 msgid "Launch Manually Once" -msgstr "" +msgstr "Iniciar manualmente una vez" #. module: base #: model:ir.module.category,name:base.module_category_hidden msgid "Hidden" -msgstr "" +msgstr "Oculto" #. module: base #: selection:base.language.install,lang:0 @@ -6573,12 +7237,12 @@ msgstr "Israel" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_syscohada msgid "OHADA - Accounting" -msgstr "" +msgstr "OHADA - Contabilidad" #. module: base #: help:res.bank,bic:0 msgid "Sometimes called BIC or Swift." -msgstr "" +msgstr "Algunas veces llamado BIC o Swift" #. module: base #: model:ir.module.module,description:base.module_l10n_mx @@ -6590,6 +7254,12 @@ msgid "" "Mexican accounting chart and localization.\n" " " msgstr "" +"\n" +"Módulo para gestionar el plan de cuentas para México en OpenERP\n" +"=====================================================\n" +"\n" +"Plan de cuentas y localización mexicanos.\n" +" " #. module: base #: field:res.lang,time_format:0 @@ -6663,7 +7333,7 @@ msgstr "No leído" #. module: base #: field:res.users,id:0 msgid "ID" -msgstr "" +msgstr "ID (identificación)" #. module: base #: field:ir.cron,doall:0 @@ -6684,7 +7354,7 @@ msgstr "Mapeado de objetos" #. module: base #: field:ir.ui.view,xml_id:0 msgid "External ID" -msgstr "" +msgstr "ID externo" #. module: base #: help:res.currency.rate,rate:0 @@ -6737,12 +7407,12 @@ msgstr "Marque esta casilla si la persona es un empleado." #. module: base #: model:ir.module.module,shortdesc:base.module_crm_profiling msgid "Customer Profiling" -msgstr "" +msgstr "Perfiles de clientes" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue msgid "Issues Tracker" -msgstr "" +msgstr "Rastreador de incidencias" #. module: base #: selection:ir.cron,interval_type:0 @@ -6752,7 +7422,7 @@ msgstr "Días laborables" #. module: base #: model:ir.module.module,shortdesc:base.module_multi_company msgid "Multi-Company" -msgstr "" +msgstr "Multi-compañía" #. module: base #: field:ir.actions.report.xml,report_rml_content:0 @@ -6773,6 +7443,8 @@ msgid "" "Please check that all your lines have %d columns.Stopped around line %d " "having %d columns." msgstr "" +"Por favor compruebe que todas sus líneas tienen %d columnas. Parado en torno " +"a la línea %d teniendo %d columnas." #. module: base #: field:base.language.export,advice:0 @@ -6782,14 +7454,14 @@ msgstr "Consejo" #. module: base #: view:res.company:0 msgid "Header/Footer of Reports" -msgstr "" +msgstr "Encabezado/Pie de informes" #. module: base #: code:addons/base/res/res_users.py:746 #: view:res.users:0 #, python-format msgid "Applications" -msgstr "" +msgstr "Aplicaciones" #. module: base #: model:ir.model,name:base.model_ir_attachment @@ -6819,7 +7491,7 @@ msgstr "" #. module: base #: selection:res.currency,position:0 msgid "After Amount" -msgstr "" +msgstr "Después del importe" #. module: base #: selection:base.language.install,lang:0 @@ -6852,6 +7524,8 @@ msgid "" "If you enable this option, existing translations (including custom ones) " "will be overwritten and replaced by those in this file" msgstr "" +"Si habilita esta opción, las traducciones existentes (incluidas las " +"personalizadas) serán sobreescritas y reemplazadas por las de este archivo" #. module: base #: field:ir.ui.view,inherit_id:0 @@ -6866,7 +7540,7 @@ msgstr "Término original" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet_sheet msgid "Timesheets Validation" -msgstr "" +msgstr "Validación partes de tiempo" #. module: base #: model:ir.ui.menu,name:base.menu_main_pm @@ -6897,12 +7571,12 @@ msgstr "Número de serie" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet msgid "Timesheets" -msgstr "" +msgstr "Partes de tiempo" #. module: base #: field:res.partner,function:0 msgid "function" -msgstr "" +msgstr "función" #. module: base #: model:ir.ui.menu,name:base.menu_audit @@ -6912,7 +7586,7 @@ msgstr "Auditoría" #. module: base #: help:ir.values,company_id:0 msgid "If set, action binding only applies for this company" -msgstr "" +msgstr "Si se establece, la acción vinculada sólo se aplica a esta compañía" #. module: base #: model:res.country,name:base.lc @@ -6926,6 +7600,9 @@ msgid "" "password, otherwise leave empty. After a change of password, the user has to " "login again." msgstr "" +"Especifique un valor sólo cuando esté creando un usuario o si está cambiando " +"la contraseña del mismo. En otro caso déjelo vacío. Después de un cambio de " +"contraseña, el usuario debe iniciar sesión de nuevo." #. module: base #: view:publisher_warranty.contract:0 @@ -6970,12 +7647,12 @@ msgstr "Limpiar Ids" #: view:res.partner:0 #: view:res.partner.address:0 msgid "Edit" -msgstr "" +msgstr "Editar" #. module: base #: field:ir.actions.client,params:0 msgid "Supplementary arguments" -msgstr "" +msgstr "Argumentos suplementarios" #. module: base #: field:res.users,view:0 @@ -7010,7 +7687,7 @@ msgstr "Al eliminar" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_multilang msgid "Multi Language Chart of Accounts" -msgstr "" +msgstr "Plan de cuentas multi lenguaje" #. module: base #: selection:res.lang,direction:0 @@ -7037,6 +7714,15 @@ msgid "" "that have no counterpart in the general financial accounts.\n" " " msgstr "" +"\n" +"Módulo para definir un objeto de contabilidad analítica\n" +"===========================================\n" +"\n" +"En OpenERP, las cuentas analíticas se vinculan a cuentas generales, pero son " +"tratadas como totalmente independientes. Por lo que puede introducir varias " +"operaciones analíticas que no tengan contrapartida en las cuentas " +"generales.\n" +" " #. module: base #: field:res.users,signature:0 @@ -7046,7 +7732,7 @@ msgstr "Firma" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_caldav msgid "Meetings Synchronization" -msgstr "" +msgstr "Sincronización de reuniones" #. module: base #: field:ir.actions.act_window,context:0 @@ -7078,7 +7764,7 @@ msgstr "¡El nombre del módulo debe ser único!" #. module: base #: model:ir.module.module,shortdesc:base.module_base_contact msgid "Contacts Management" -msgstr "" +msgstr "Gestión de contactos" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_rib @@ -7114,7 +7800,7 @@ msgstr "" #. module: base #: view:ir.property:0 msgid "Parameters that are used by all resources." -msgstr "" +msgstr "Parámetros usados por todos los recursos." #. module: base #: model:res.country,name:base.mz @@ -7127,6 +7813,8 @@ msgid "" "Action bound to this entry - helper field for binding an action, will " "automatically set the correct reference" msgstr "" +"Acción vinculada a esta entrada - campo accesorio que permite enlazar una " +"acción, que establecerá automáticamente la referencia correcta" #. module: base #: model:ir.ui.menu,name:base.menu_project_long_term @@ -7155,14 +7843,14 @@ msgstr "Comercial" #. module: base #: model:ir.module.module,shortdesc:base.module_account_accountant msgid "Accounting and Finance" -msgstr "" +msgstr "Contabilidad y finanzas" #. module: base #: code:addons/base/module/module.py:429 #: view:ir.module.module:0 #, python-format msgid "Upgrade" -msgstr "" +msgstr "Actualizar" #. module: base #: field:res.partner,address:0 @@ -7178,7 +7866,7 @@ msgstr "Islas Feroe" #. module: base #: field:ir.mail_server,smtp_encryption:0 msgid "Connection Security" -msgstr "" +msgstr "Seguridad de la conexión" #. module: base #: code:addons/base/ir/ir_actions.py:653 @@ -7193,6 +7881,10 @@ msgid "" " United States - Chart of accounts\n" " " msgstr "" +"\n" +" Estados Unidos - Plan de cuentas\n" +"==========================\n" +" " #. module: base #: view:res.widget.wizard:0 @@ -7202,7 +7894,7 @@ msgstr "Añadir" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ec msgid "Ecuador - Accounting" -msgstr "" +msgstr "Ecuador - Contabilidad" #. module: base #: field:res.partner.category,name:0 @@ -7233,6 +7925,16 @@ msgid "" " * HR Jobs\n" " " msgstr "" +"\n" +"Módulo para la administración de recursos humanos.\n" +"=========================================\n" +"\n" +"Con él es posible administrar:\n" +" * Empleados y jerarquías: se pueden definir empleados vinculados a " +"usuarios y mostrar jerarquías\n" +" * Departamentos \n" +" * Puestos de trabajo\n" +" " #. module: base #: view:res.widget.wizard:0 @@ -7242,12 +7944,12 @@ msgstr "Asistente widget" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_hn msgid "Honduras - Accounting" -msgstr "" +msgstr "Honduras - Contabilidad" #. module: base #: model:ir.module.module,shortdesc:base.module_report_intrastat msgid "Intrastat Reporting" -msgstr "" +msgstr "Informe Intrastat" #. module: base #: code:addons/base/res/res_users.py:222 @@ -7309,7 +8011,7 @@ msgstr "Activo" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ma msgid "Maroc - Accounting" -msgstr "" +msgstr "Marruecos - Contabilidad" #. module: base #: model:res.country,name:base.mn @@ -7324,7 +8026,7 @@ msgstr "Menús creados" #. module: base #: model:ir.module.module,shortdesc:base.module_account_analytic_default msgid "Account Analytic Defaults" -msgstr "" +msgstr "Valores por defecto en la contabilidad analítica" #. module: base #: model:ir.module.module,description:base.module_hr_contract @@ -7340,6 +8042,17 @@ msgid "" "You can assign several contracts per employee.\n" " " msgstr "" +"\n" +"Añade todas la información en el formulario del empleado para gestionar " +"contratos.\n" +"==================================================================\n" +"\n" +" * Estado civil,\n" +" * Número de seguridad,\n" +" * Lugar de nacimiento, fecha de nacimiento, ...\n" +"\n" +"Puede asignar múltiples contratos por empleado.\n" +" " #. module: base #: selection:ir.ui.view,type:0 @@ -7364,6 +8077,18 @@ msgid "" "crm modules.\n" " " msgstr "" +"\n" +"Este módulo añade un acceso directo a una o varios oportunidades en el CRM.\n" +"=============================================================\n" +"\n" +"Este acceso directo permite generar un pedido de venta en el caso " +"seleccionado. Si se tienen abiertos diferentes caso (una lista), genera un " +"pedido de venta por cada caso. El caso se cierra entonces y es vinculado al " +"pedido de venta generado.\n" +"\n" +"Sugerimos instalar este módulo si se instalan tanto el módulo 'sale' como el " +"módulo 'crm'.\n" +" " #. module: base #: model:res.country,name:base.bi @@ -7389,6 +8114,7 @@ msgstr "Español (MX) / Español (MX)" #, python-format msgid "Please verify your publisher warranty serial number and validity." msgstr "" +"Por favor verifique su número de serie de garantía del editor y su validez" #. module: base #: view:res.log:0 @@ -7444,17 +8170,17 @@ msgstr "Leído" #. module: base #: model:ir.module.module,shortdesc:base.module_association msgid "Associations Management" -msgstr "" +msgstr "Gestión de asociaciones" #. module: base #: help:ir.model,modules:0 msgid "List of modules in which the object is defined or inherited" -msgstr "" +msgstr "Lista de módulos en los cuales el objeto es definido o heredado" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_payroll msgid "Payroll" -msgstr "" +msgstr "Nómina" #. module: base #: model:ir.actions.act_window,help:base.action_country_state @@ -7479,6 +8205,15 @@ msgid "" "\n" " " msgstr "" +"\n" +"Permite añadir métodos de entrega en los pedidos de venta y en albaranes.\n" +"==============================================================\n" +"\n" +"Permite definir trasnportistas propios y tablas de envío para precios. " +"Cuando se generan facturas desde el albarán, OpenERP es capaz de añadir y " +"calcular la línea de envío.\n" +"\n" +" " #. module: base #: view:workflow.workitem:0 @@ -7523,7 +8258,7 @@ msgstr "" #. module: base #: field:res.partner,title:0 msgid "Partner Firm" -msgstr "" +msgstr "Firma empresa" #. module: base #: model:ir.actions.act_window,name:base.action_model_fields @@ -7564,6 +8299,12 @@ msgid "" "Invite OpenERP user feedback, powered by uservoice.\n" " " msgstr "" +"\n" +"Añade un botón de retroalimentación en la cabecera.\n" +"==========================================\n" +"\n" +"Invita a un usuario de OpenERP a dar retroalimentación.\n" +" " #. module: base #: field:res.company,rml_header2:0 @@ -7584,7 +8325,7 @@ msgstr "Última versión" #. module: base #: view:ir.mail_server:0 msgid "Test Connection" -msgstr "" +msgstr "Probar conexión" #. module: base #: model:ir.actions.act_window,name:base.action_partner_address_form @@ -7600,7 +8341,7 @@ msgstr "Birmania" #. module: base #: help:ir.model.fields,modules:0 msgid "List of modules in which the field is defined" -msgstr "" +msgstr "Lista de módulos en los cuales el campo esta definido" #. module: base #: selection:base.language.install,lang:0 @@ -7631,11 +8372,18 @@ msgid "" "that exceeds minimum amount set by configuration wizard.\n" " " msgstr "" +"\n" +"Doble validación para compras que excedan un importe mínimo.\n" +"==================================================\n" +"\n" +"Este módulo modifica el flujo de trabajo de compras para validar comprar que " +"excedan de un importe mínimo establecido por un asistente de configuración.\n" +" " #. module: base #: field:res.currency,rounding:0 msgid "Rounding Factor" -msgstr "" +msgstr "Factor de redondeo" #. module: base #: model:res.country,name:base.ca @@ -7646,7 +8394,7 @@ msgstr "Canadá" #: code:addons/base/res/res_company.py:158 #, python-format msgid "Reg: " -msgstr "" +msgstr "Reg: " #. module: base #: help:res.currency.rate,currency_rate_type_id:0 @@ -7654,6 +8402,9 @@ msgid "" "Allow you to define your own currency rate types, like 'Average' or 'Year to " "Date'. Leave empty if you simply want to use the normal 'spot' rate type" msgstr "" +"Permite definir tipos de tasa de cambio personalizados, como 'Promedio' o " +"'Año atrás'. Dejar vacío si simplemente se quiere usar el tipo normal " +"'exacto' de tasa de cambio." #. module: base #: selection:ir.module.module.dependency,state:0 @@ -7688,6 +8439,14 @@ msgid "" "Romanian accounting chart and localization.\n" " " msgstr "" +"\n" +"Módulo para administrar el plan de cuentas, estructura de impuestos y número " +"de registro de Rumania en OpenERP.\n" +"=============================================================================" +"==============\n" +"\n" +"Plan de cuentas y localización de Rumania.\n" +" " #. module: base #: model:res.country,name:base.cm @@ -7715,6 +8474,13 @@ msgid "" "all the tasks will change accordingly.\n" " " msgstr "" +"\n" +"Cambia las fechas de acuerdo a la fecha final del proyecto.\n" +"=============================================\n" +"\n" +"Si se cambia la fecha final del proyecto, entonces la fecha límite y de " +"comienzo para todas las tareas se cambiarán consecuentemente.\n" +" " #. module: base #: help:res.users,view:0 @@ -7724,6 +8490,10 @@ msgid "" "interface, which has less features but is easier to use. You can switch to " "the other interface from the User/Preferences menu at any time." msgstr "" +"OpenERP ofrece un interfaz simple o extendido. Si usa OpenERP por primera " +"vez, le recomendamos seleccionar el interfaz simple, que tiene menos " +"opciones pero es más simple. Puede cambiar al otro interfaz desde el botón " +"\"Preferencias\" de la parte superior derecha en cualquier momento." #. module: base #: model:res.country,name:base.cc @@ -7755,7 +8525,7 @@ msgstr "Holandés / Nederlands" #. module: base #: selection:res.company,paper_format:0 msgid "US Letter" -msgstr "" +msgstr "Carta de EEUU" #. module: base #: model:ir.module.module,description:base.module_stock_location @@ -7858,21 +8628,27 @@ msgid "" "Contains the installer for marketing-related modules.\n" " " msgstr "" +"\n" +"Menú para Marketing.\n" +"===================\n" +"\n" +"Contiene el instalador para los módulos relacionados con marketing.\n" +" " #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge Management" -msgstr "" +msgstr "Gestión del conocimiento" #. module: base #: model:ir.actions.act_window,name:base.bank_account_update msgid "Company Bank Accounts" -msgstr "" +msgstr "Cuentas bancarias de la compañía" #. module: base #: help:ir.mail_server,smtp_pass:0 msgid "Optional password for SMTP authentication" -msgstr "" +msgstr "Contraseña opcional para la autenticación SMTP" #. module: base #: model:ir.module.module,description:base.module_project_mrp @@ -7925,11 +8701,14 @@ msgid "" " Module for the Check writing and check printing \n" " " msgstr "" +"\n" +" Módulo para la verificación de escritura y de impresión. \n" +" " #. module: base #: model:res.partner.bank.type,name:base.bank_normal msgid "Normal Bank Account" -msgstr "" +msgstr "Cuenta bancaria habitual" #. module: base #: view:ir.actions.wizard:0 @@ -7990,6 +8769,13 @@ msgid "" "actions(Sign in/Sign out) performed by them.\n" " " msgstr "" +"\n" +"Este módulo permite gestionar la asistencia de los empleados.\n" +"================================================\n" +"\n" +"Mantiene la cuenta de las asistencias de los empleados en base a las " +"acciones realizadas por ellos (entradas/salidas).\n" +" " #. module: base #: field:ir.module.module,maintainer:0 @@ -8038,6 +8824,9 @@ msgid "" "the same values as those available in the condition field, e.g. `Hello [[ " "object.partner_id.name ]]`" msgstr "" +"Asunto del e-mail, que puede contener expresiones encerradas entre corchetes " +"dobles basadas en los mismos valores que los disponibles en el campo " +"\"Condición\". Por ejemplo. 'Hola [[ object.partner_id.name ]]'." #. module: base #: model:ir.module.module,description:base.module_account_sequence @@ -8056,6 +8845,19 @@ msgid "" " * Number Padding\n" " " msgstr "" +"\n" +"Este módulo mantiene una secuencia interna para los asientos contables.\n" +"=========================================================\n" +"\n" +"Permite configurar las secuencias contables a ser utilizadas.\n" +"\n" +"Se pueden personalizar los siguientes atributos de la secuencia:\n" +" * Prefijo\n" +" * Sufijo\n" +" * Siguiente número\n" +" * Incremento\n" +" * Relleno de números\n" +" " #. module: base #: model:res.country,name:base.to @@ -8069,11 +8871,14 @@ msgid "" "serialization field, instead of having its own database column. This cannot " "be changed after creation." msgstr "" +"Si está establecido, este campo se almacenará en la estructura del campo de " +"serialización en lugar de tener su propia columna en la base de datos. No " +"puede ser modificado después de la creación" #. module: base #: view:res.partner.bank:0 msgid "Bank accounts belonging to one of your companies" -msgstr "" +msgstr "Cuentas bancarias pertencientes a alguna de sus compañías" #. module: base #: help:res.users,action_id:0 @@ -8087,7 +8892,7 @@ msgstr "" #. module: base #: selection:ir.module.module,complexity:0 msgid "Easy" -msgstr "" +msgstr "Fácil" #. module: base #: view:ir.values:0 @@ -8100,6 +8905,8 @@ msgid "" "The field on the current object that links to the target object record (must " "be a many2one, or an integer field with the record ID)" msgstr "" +"El campo del objeto actual que enlaza con el registro de objeto objetivo " +"(debe ser un many2one, o un campo entero con el ID del registro)" #. module: base #: code:addons/base/module/module.py:423 @@ -8122,6 +8929,8 @@ msgid "" "Determines where the currency symbol should be placed after or before the " "amount." msgstr "" +"Determina si el símbolo de moneda debe situarse antes o después de la " +"cantidad." #. module: base #: model:ir.model,name:base.model_base_update_translations @@ -8147,7 +8956,7 @@ msgstr "Contacto" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_at msgid "Austria - Accounting" -msgstr "" +msgstr "Austria - Contabilidad" #. module: base #: model:ir.model,name:base.model_ir_ui_menu @@ -8158,7 +8967,7 @@ msgstr "ir.ui.menu" #: model:ir.module.category,name:base.module_category_project_management #: model:ir.module.module,shortdesc:base.module_project msgid "Project Management" -msgstr "" +msgstr "Gestión de proyectos" #. module: base #: model:res.country,name:base.us @@ -8168,7 +8977,7 @@ msgstr "Estados Unidos" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_fundraising msgid "Fundraising" -msgstr "" +msgstr "Recaudación de fondos" #. module: base #: view:ir.module.module:0 @@ -8185,7 +8994,7 @@ msgstr "Comunicación" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic msgid "Analytic Accounting" -msgstr "" +msgstr "Contabilidad analítica" #. module: base #: view:ir.actions.report.xml:0 @@ -8200,7 +9009,7 @@ msgstr "ir.server.objeto.lineas" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be msgid "Belgium - Accounting" -msgstr "" +msgstr "Bélgica - Contabilidad" #. module: base #: code:addons/base/module/module.py:622 @@ -8235,6 +9044,8 @@ msgid "" "You cannot have multiple records with the same external ID in the same " "module!" msgstr "" +"¡No puede haber múltiples registros con el mismo ID externo en el mismo " +"módulo!" #. module: base #: selection:ir.property,type:0 @@ -8255,11 +9066,16 @@ msgid "" "\n" " * Share meeting with other calendar clients like sunbird\n" msgstr "" +"\n" +"Características Caldav en el apartado \"Reuniones\".\n" +"=======================================\n" +"\n" +" * Compartir reuniones con otros clientes de calendario como Sunbird\n" #. module: base #: model:ir.module.module,shortdesc:base.module_base_iban msgid "IBAN Bank Accounts" -msgstr "" +msgstr "Cuentas bancarias IBAN" #. module: base #: field:res.company,user_ids:0 @@ -8274,7 +9090,7 @@ msgstr "Imagen icono web" #. module: base #: field:ir.actions.server,wkf_model_id:0 msgid "Target Object" -msgstr "" +msgstr "Objeto objetivo" #. module: base #: selection:ir.model.fields,select_level:0 @@ -8327,6 +9143,8 @@ msgid "" "Model to which this entry applies - helper field for setting a model, will " "automatically set the correct model name" msgstr "" +"Modelo para el que se aplica esta entrada - campo auxiliar para establecer " +"un modelo, que será automáticamente establecido al nombre de modelo correcto" #. module: base #: view:res.lang:0 @@ -8356,6 +9174,8 @@ msgid "" "The priority of the job, as an integer: 0 means higher priority, 10 means " "lower priority." msgstr "" +"Prioridad del trabajo, expresada con un entero: 0 significa la máxima " +"prioridad, 10 significa la prioridad más baja." #. module: base #: model:ir.model,name:base.model_workflow_transition @@ -8370,12 +9190,12 @@ msgstr "%a - Nombre abreviado del día de la semana." #. module: base #: view:ir.ui.menu:0 msgid "Submenus" -msgstr "" +msgstr "Submenús" #. module: base #: model:res.groups,name:base.group_extended msgid "Extended View" -msgstr "" +msgstr "Vista extendida" #. module: base #: model:res.country,name:base.pf @@ -8390,7 +9210,7 @@ msgstr "Dominica" #. module: base #: model:ir.module.module,shortdesc:base.module_base_module_record msgid "Record and Create Modules" -msgstr "" +msgstr "Graba y crea módulos" #. module: base #: model:ir.model,name:base.model_partner_sms_send @@ -8443,22 +9263,22 @@ msgstr "Ruta XSL" #. module: base #: model:ir.module.module,shortdesc:base.module_account_invoice_layout msgid "Invoice Layouts" -msgstr "" +msgstr "Diseño de factura" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_location msgid "Advanced Routes" -msgstr "" +msgstr "Rutas avanzadas" #. module: base #: model:ir.module.module,shortdesc:base.module_pad msgid "Collaborative Pads" -msgstr "" +msgstr "Pads colaborativos" #. module: base #: model:ir.module.module,shortdesc:base.module_account_anglo_saxon msgid "Anglo-Saxon Accounting" -msgstr "" +msgstr "Contabilidad anglo-sajona" #. module: base #: model:res.country,name:base.np @@ -8469,16 +9289,17 @@ msgstr "Nepal" #: help:res.groups,implied_ids:0 msgid "Users of this group automatically inherit those groups" msgstr "" +"Los usuarios de este grupo automaticamente heredan de aquellos grupos" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_attendance msgid "Attendances" -msgstr "" +msgstr "Asistencias" #. module: base #: field:ir.module.category,visible:0 msgid "Visible" -msgstr "" +msgstr "Visible" #. module: base #: model:ir.actions.act_window,name:base.action_ui_view_custom @@ -8503,13 +9324,20 @@ msgid "" "for Wiki Quality Manual.\n" " " msgstr "" +"\n" +"Plantilla de manual de calidad.\n" +"========================\n" +"\n" +"Provee datos demo, creando un grupo Wiki y una página Wiki para el manual de " +"calidad.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.act_values_form_action #: model:ir.ui.menu,name:base.menu_values_form_action #: view:ir.values:0 msgid "Action Bindings" -msgstr "" +msgstr "Enlaces de acciones" #. module: base #: view:ir.sequence:0 @@ -8533,7 +9361,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account msgid "eInvoicing" -msgstr "" +msgstr "Facturación electrónica" #. module: base #: model:ir.module.module,description:base.module_association @@ -8546,12 +9374,19 @@ msgid "" "memberships, membership products (schemes), etc.\n" " " msgstr "" +"\n" +"Módulo para configurar los módulos relativos a una asociación.\n" +"=================================================\n" +"\n" +"Instala el perfil para asociaciones para administrar eventos, registros, " +"miembros, productos de los miembros (esquemas), etc.\n" +" " #. module: base #: code:addons/orm.py:2693 #, python-format msgid "The value \"%s\" for the field \"%s.%s\" is not in the selection" -msgstr "" +msgstr "El valor \"%s\" para el campo \"%s.%s\" no está en la selección" #. module: base #: view:ir.actions.configuration.wizard:0 @@ -8582,7 +9417,7 @@ msgstr "Esloveno / slovenščina" #. module: base #: model:ir.module.module,shortdesc:base.module_wiki msgid "Wiki" -msgstr "" +msgstr "Wiki" #. module: base #: model:ir.module.module,description:base.module_l10n_de @@ -8596,6 +9431,10 @@ msgid "" "German accounting chart and localization.\n" " " msgstr "" +"\n" +"Plan de cuentas y localización alemana.\n" +"===============================\n" +" " #. module: base #: field:ir.actions.report.xml,attachment_use:0 @@ -8605,7 +9444,7 @@ msgstr "Recargar desde adjunto" #. module: base #: view:ir.module.module:0 msgid "Hide technical modules" -msgstr "" +msgstr "Ocultar módulos técnicos" #. module: base #: model:ir.module.module,description:base.module_procurement @@ -8637,7 +9476,7 @@ msgstr "México" #: code:addons/base/ir/ir_mail_server.py:414 #, python-format msgid "Missing SMTP Server" -msgstr "" +msgstr "Servidor SMTP ausente" #. module: base #: field:ir.attachment,name:0 @@ -8658,7 +9497,7 @@ msgstr "Instalar actualizar módulo" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "E-Mail Templates" -msgstr "" +msgstr "Plantillas de e-mail" #. module: base #: model:ir.model,name:base.model_ir_actions_configuration_wizard @@ -8738,6 +9577,12 @@ msgid "" "la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also " "includes taxes and the Quetzal currency" msgstr "" +"\n" +"Módulo base para administrar el plan de cuentas para Guatemala.\n" +"===================================================\n" +"\n" +"Agrega una nomenclatura contable para Guatemala. También incluye impuestos y " +"la moneda Quetzal." #. module: base #: view:res.lang:0 @@ -8830,12 +9675,12 @@ msgstr "Seleccionable" #: code:addons/base/ir/ir_mail_server.py:199 #, python-format msgid "Everything seems properly set up!" -msgstr "" +msgstr "¡Todo parece correctamente configurado!" #. module: base #: field:res.users,date:0 msgid "Latest Connection" -msgstr "" +msgstr "Última conexión" #. module: base #: view:res.request.link:0 @@ -8855,6 +9700,14 @@ msgid "" "mail into mail.message with attachments.\n" " " msgstr "" +"\n" +"Este módulo provee el conector de Outlook\n" +"==================================\n" +"El conector de Outlook permite seleccionar un objeto al que desea añadir un " +"mensaje y sus adjuntos desde MS Outlook. Puede seleccionar una empresa, una " +"tarea, un proyecto, una cuenta analítica, o cualquier otro objeto, y " +"archivar el correo seleccionado en el objeto mail.message con adjuntos.\n" +" " #. module: base #: view:ir.attachment:0 @@ -8871,6 +9724,10 @@ msgid "" "use the same timezone that is otherwise used to pick and render date and " "time values: your computer's timezone." msgstr "" +"La zona horaria del usuario, usada para mostrar correctamente la fecha y " +"hora dentro de los informes. Es importante establecer un valor para este " +"campo. Debería utilizar la misma zona horaria que se utiliza para mostrar en " +"pantalla los valores de fecha y hora: la zona horaria de su ordenador." #. module: base #: help:res.country,name:0 @@ -8885,22 +9742,22 @@ msgstr "Iteración" #. module: base #: model:ir.module.module,shortdesc:base.module_project_planning msgid "Resources Planing" -msgstr "" +msgstr "Planificación de recursos" #. module: base #: field:ir.module.module,complexity:0 msgid "Complexity" -msgstr "" +msgstr "Complejidad" #. module: base #: selection:ir.actions.act_window,target:0 msgid "Inline" -msgstr "" +msgstr "Incluido" #. module: base #: model:res.partner.bank.type.field,name:base.bank_normal_field_bic msgid "bank_bic" -msgstr "" +msgstr "Número BIC" #. module: base #: code:addons/orm.py:3988 @@ -8923,6 +9780,18 @@ msgid "" "* Date\n" " " msgstr "" +"Establece valores por defecto para las cuentas analíticas\n" +"=====================================================================\n" +"\n" +"Permite seleccionar automáticamente cuentas analíticas basadas en " +"criterios:\n" +"\n" +"* Producto\n" +"* Empresa\n" +"* Usuario\n" +"* Compañía\n" +"* Fecha\n" +" " #. module: base #: model:res.country,name:base.ae @@ -8953,11 +9822,17 @@ msgid "" "Greek accounting chart and localization.\n" " " msgstr "" +"\n" +"Módulo para administrar el plan de cuentas para Grecia.\n" +"============================================\n" +"\n" +"Plan de cuentas y localización griego.\n" +" " #. module: base #: view:ir.values:0 msgid "Action Reference" -msgstr "" +msgstr "Referencia de la acción" #. module: base #: model:res.country,name:base.re @@ -8983,16 +9858,22 @@ msgid "" "Keep track of Wiki groups, pages, and history.\n" " " msgstr "" +"\n" +"Módulo base para administrar documentos (wiki).\n" +"======================================\n" +"\n" +"Permite registrar grupos, páginas e historial de una Wiki.\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_repair msgid "Repairs Management" -msgstr "" +msgstr "Administración de reparaciones" #. module: base #: model:ir.module.module,shortdesc:base.module_account_asset msgid "Assets Management" -msgstr "" +msgstr "Gestión de activos fijos" #. module: base #: view:ir.model.access:0 @@ -9263,7 +10144,7 @@ msgstr "Islas Marianas del Norte" #. module: base #: model:ir.module.module,shortdesc:base.module_claim_from_delivery msgid "Claim on Deliveries" -msgstr "" +msgstr "Reclamación de envíos" #. module: base #: model:res.country,name:base.sb @@ -9314,6 +10195,17 @@ msgid "" " * Generates Relationship Graph\n" " " msgstr "" +"\n" +"Módulo que genera una guía técnica de los módulos seleccionados en formato " +"RST (Restructured Text - Texto reestructurado).\n" +"=============================================================================" +"======================\n" +"\n" +" * Usa la implementación RST de Sphinx (http://sphinx.pocoo.org)\n" +" * Crea un archivo tarball (con extensión .tgz) conteniendo un archivo " +"índice y un archivo por cada módulo\n" +" * Genera un gráfico relacional\n" +" " #. module: base #: field:res.log,create_date:0 @@ -9329,7 +10221,7 @@ msgstr "Traducciones" #. module: base #: model:ir.module.module,shortdesc:base.module_project_gtd msgid "Todo Lists" -msgstr "" +msgstr "Lista de tareas pendientes" #. module: base #: view:ir.actions.report.xml:0 @@ -9344,6 +10236,9 @@ msgid "" "instead.If SSL is needed, an upgrade to Python 2.6 on the server-side should " "do the trick." msgstr "" +"Su servidor OpenERP no soporta SMTP bajo SSL. Puede usar STARTTLS en su " +"lugar. Si se requiere SSL, una actualización a Python 2.6 en el servidor " +"puede funcionar." #. module: base #: model:res.country,name:base.ua @@ -9360,7 +10255,7 @@ msgstr "Sitio web" #. module: base #: selection:ir.mail_server,smtp_encryption:0 msgid "None" -msgstr "" +msgstr "Ninguno" #. module: base #: view:ir.module.category:0 @@ -9380,7 +10275,7 @@ msgstr "Guía de referencia" #. module: base #: view:ir.values:0 msgid "Default Value Scope" -msgstr "" +msgstr "Alcance del valor por defecto" #. module: base #: view:ir.ui.view:0 @@ -9400,6 +10295,8 @@ msgid "" "review and adapt it with your Accountant, before using it in a live " "Environment." msgstr "" +"Este módulo provee el plan de cuentas estándar para Austria, que está basado " +"en la plantilla de BMF.gv.at." #. module: base #: selection:base.language.install,lang:0 @@ -9459,6 +10356,8 @@ msgid "" "\n" " " msgstr "" +"\n" +" " #. module: base #: view:ir.actions.act_window:0 @@ -9488,7 +10387,7 @@ msgstr "Fecha de creación" #. module: base #: help:ir.actions.server,trigger_name:0 msgid "The workflow signal to trigger" -msgstr "" +msgstr "Señal de flujo de trabajo a lanzar" #. module: base #: model:ir.module.module,description:base.module_mrp @@ -9537,7 +10436,7 @@ msgstr "" #. module: base #: model:ir.module.module,description:base.module_google_base_account msgid "The module adds google user in res user" -msgstr "" +msgstr "Este módulo añadir el usuario de Google a res.user" #. module: base #: selection:base.language.install,state:0 @@ -9554,7 +10453,7 @@ msgstr "Configuración general" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_uy msgid "Uruguay - Chart of Accounts" -msgstr "" +msgstr "Uruguay - Plan de cuentas" #. module: base #: model:ir.ui.menu,name:base.menu_administration_shortcut @@ -9574,25 +10473,25 @@ msgstr "Argelia" #. module: base #: model:ir.module.module,shortdesc:base.module_plugin msgid "CRM Plugins" -msgstr "" +msgstr "Plugins CRM" #. module: base #: model:ir.actions.act_window,name:base.action_model_model #: model:ir.model,name:base.model_ir_model #: model:ir.ui.menu,name:base.ir_model_model_menu msgid "Models" -msgstr "" +msgstr "Modelos" #. module: base #: code:addons/base/ir/ir_cron.py:292 #, python-format msgid "Record cannot be modified right now" -msgstr "" +msgstr "El registro no puede ser modificado en este momento" #. module: base #: selection:ir.actions.todo,type:0 msgid "Launch Manually" -msgstr "" +msgstr "Lanzar manualmente" #. module: base #: model:res.country,name:base.be @@ -9602,12 +10501,12 @@ msgstr "Bélgica" #. module: base #: view:res.company:0 msgid "Preview Header" -msgstr "" +msgstr "Previsualizar encabezado" #. module: base #: field:res.company,paper_format:0 msgid "Paper Format" -msgstr "" +msgstr "Formato de papel" #. module: base #: field:base.language.export,lang:0 @@ -9637,7 +10536,7 @@ msgstr "Compañías" #. module: base #: help:res.currency,symbol:0 msgid "Currency sign, to be used when printing amounts." -msgstr "" +msgstr "Símbolo de la moneda, para ser usado cuando se impriman informes." #. module: base #: view:res.lang:0 @@ -9651,6 +10550,8 @@ msgid "" "Your server does not seem to support SSL, you may want to try STARTTLS " "instead" msgstr "" +"Su servidor no parece soportar SSL. Tal vez quiera probar STARTTLS en su " +"lugar." #. module: base #: model:ir.model,name:base.model_res_widget @@ -9671,16 +10572,20 @@ msgid "" "=====================================================\n" "\n" msgstr "" +"\n" +"Interfaz común para un plugin.\n" +"========================\n" +"\n" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_jit msgid "Just In Time Scheduling" -msgstr "" +msgstr "Planificación 'Just in time' (bajo demanda)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions msgid "Bank Statement extensions to support e-banking" -msgstr "" +msgstr "Extensiones de extracto bancario para soportar banca electrónica" #. module: base #: view:ir.actions.server:0 @@ -9707,7 +10612,7 @@ msgstr "osv_memory.autovacuum" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_us msgid "United States - Chart of accounts" -msgstr "" +msgstr "Estados Unidos - Plan de cuentas" #. module: base #: view:base.language.install:0 @@ -9759,11 +10664,21 @@ msgid "" "fund status.\n" " " msgstr "" +"\n" +"Recaudación de fondos.\n" +"===================\n" +"\n" +"Cuando quiera dar soporte a su organización o a una campaña, puede hacer el " +"seguimiento de todas sus actividades para recaudar dinero. El menú abre una " +"lista de búsqueda en la que puede encontrar descripciones de los fondo, e-" +"mail, historial y probabilidad de éxito. Varios botones de acción le " +"permiten modificar fácilmente el estado de los fondos.\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_sale_margin msgid "Margins in Sales Orders" -msgstr "" +msgstr "Márgenes en pedidos de venta" #. module: base #: model:res.partner.category,name:base.res_partner_category_9 @@ -9774,7 +10689,7 @@ msgstr "Proveedor de componentes" #: model:ir.module.category,name:base.module_category_purchase_management #: model:ir.module.module,shortdesc:base.module_purchase msgid "Purchase Management" -msgstr "" +msgstr "Gestión de compras" #. module: base #: field:ir.module.module,published_version:0 @@ -9832,11 +10747,17 @@ msgid "" "This module is the base module for other multi-company modules.\n" " " msgstr "" +"\n" +"Módulo para administrar un entorno multi-compañía.\n" +"=========================================\n" +"\n" +"Este módulo es el módulo base para otros módulos multi-compañía.\n" +" " #. module: base #: sql_constraint:res.currency:0 msgid "The currency code must be unique per company!" -msgstr "" +msgstr "¡El código de moneda debe ser único por compañía!" #. module: base #: model:ir.model,name:base.model_ir_property @@ -9887,6 +10808,9 @@ msgid "" "same values as for the condition field.\n" "Example: object.invoice_address_id.email, or 'me@example.com'" msgstr "" +"Expresión que devuelve la dirección de e-mail a la que enviar el correo. " +"Puede estar basado en los mismos valores que el campo \"Condición\". " +"Ejemplo: object.invoice_address_id.email, o 'me@example.com'" #. module: base #: model:ir.module.module,description:base.module_web_hello @@ -9895,6 +10819,9 @@ msgid "" " OpenERP Web example module.\n" " " msgstr "" +"\n" +" Módulo web de ejemplo.\n" +" " #. module: base #: model:res.country,name:base.gy @@ -9904,7 +10831,7 @@ msgstr "Guayana" #. module: base #: model:ir.module.module,shortdesc:base.module_product_expiry msgid "Products Expiry Date" -msgstr "" +msgstr "Fecha de expiración de productos" #. module: base #: model:ir.module.module,description:base.module_account @@ -10008,6 +10935,12 @@ msgid "" "- SSL/TLS: SMTP sessions are encrypted with SSL/TLS through a dedicated port " "(default: 465)" msgstr "" +"Escoja el esquema de encriptación de la conexión:\n" +"- Ninguno: Las sesiones SMTP se realizan en texto plano.\n" +"- TLS (STARTTLS): Se solicita encriptación TLS al comienzo de la sesión SMTP " +"(Recomendado)\n" +"- SSL/TLS: Las sesiones SMTP son encriptadas con SSL/TLS a través de un " +"puerto dedicado (por defecto: 465)" #. module: base #: view:ir.model:0 @@ -10026,21 +10959,28 @@ msgid "" "modules like base_report_designer and base_report_creator.\n" " " msgstr "" +"\n" +"Instalador para los informes escondidos\n" +"===============================\n" +"\n" +"Hace que la configuración escondida para los informes esté disponible para " +"instalar módulos como 'base_report_designer' o 'base_report_creator'.\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_base_synchro msgid "Multi-DB Synchronization" -msgstr "" +msgstr "Sincronización múltiple de bases de datos" #. module: base #: selection:ir.module.module,complexity:0 msgid "Expert" -msgstr "" +msgstr "Experto" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_holidays msgid "Leaves Management" -msgstr "" +msgstr "Gestión de ausencias" #. module: base #: view:ir.actions.todo:0 @@ -10071,6 +11011,9 @@ msgid "" "Todo list for CRM leads and opportunities.\n" " " msgstr "" +"\n" +"Lista de tareas pendientes para las iniciativas y oportunidades CRM.\n" +" " #. module: base #: field:ir.actions.act_window.view,view_id:0 @@ -10083,7 +11026,7 @@ msgstr "Vista" #. module: base #: model:ir.module.module,shortdesc:base.module_wiki_sale_faq msgid "Wiki: Sale FAQ" -msgstr "" +msgstr "Wiki: FAQ de ventas" #. module: base #: selection:ir.module.module,state:0 @@ -10111,7 +11054,7 @@ msgstr "Base" #: field:ir.model.data,model:0 #: field:ir.values,model:0 msgid "Model Name" -msgstr "" +msgstr "Nombre del modelo" #. module: base #: selection:base.language.install,lang:0 @@ -10129,6 +11072,13 @@ msgid "" "outlook, Sunbird, ical, ...\n" " " msgstr "" +"\n" +"Permite sincronizar calendarios con otras aplicaciones.\n" +"===========================================\n" +"\n" +"Permite sincronizar sus calendarios de OpenERP con el teléfono, Outlook, " +"Sunbird, iCal, etc...\n" +" " #. module: base #: model:res.country,name:base.lr @@ -10145,6 +11095,12 @@ msgid "" "Indian accounting chart and localization.\n" " " msgstr "" +"\n" +"Contabilidad india: Plan de cuentas.\n" +"=====================================\n" +"\n" +"Plan de cuentas y localización india.\n" +" " #. module: base #: view:ir.attachment:0 @@ -10192,6 +11148,7 @@ msgstr "Mónaco" #: view:base.module.import:0 msgid "Please be patient, this operation may take a few minutes..." msgstr "" +"Por favor sea paciente. Esta operación puede tardar algunos minutos..." #. module: base #: selection:ir.cron,interval_type:0 @@ -10201,7 +11158,7 @@ msgstr "Minutos" #. module: base #: view:res.currency:0 msgid "Display" -msgstr "" +msgstr "Mostrar en pantalla" #. module: base #: selection:ir.translation,type:0 @@ -10218,17 +11175,17 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_google_map msgid "Google Maps on Customers" -msgstr "" +msgstr "Google maps en clientes" #. module: base #: model:ir.actions.report.xml,name:base.preview_report msgid "Preview Report" -msgstr "" +msgstr "Vista previa del informe" #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_analytic_plans msgid "Purchase Analytic Plans" -msgstr "" +msgstr "Planes analíticos de compra" #. module: base #: model:ir.module.module,description:base.module_analytic_journal_billing_rate @@ -10249,6 +11206,21 @@ msgid "" "\n" " " msgstr "" +"\n" +"Este módulo permite definir cuál es la proporción de facturación por defecto " +"para un diario específico en una cuenta dada.\n" +"=============================================================================" +"===================\n" +"\n" +"Esto se usa sobretodo cuando un usuario codifica su parte de tiempos: los " +"valores son obtenidos y auto-completados, pero sigue existiendo la " +"posibilidad de cambiar manualmente dichos valores.\n" +"\n" +"Obviously if no data has been recorded for the current account, the default " +"value is given as usual by the account data so that this module is perfectly " +"compatible with older configurations.\n" +"\n" +" " #. module: base #: model:ir.ui.menu,name:base.menu_fundrising @@ -10311,7 +11283,7 @@ msgstr "Semanas" #: code:addons/base/res/res_company.py:157 #, python-format msgid "VAT: " -msgstr "" +msgstr "NIF: " #. module: base #: model:res.country,name:base.af @@ -10328,17 +11300,17 @@ msgstr "¡Error!" #. module: base #: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo msgid "Marketing Campaign - Demo" -msgstr "" +msgstr "Campaña de marketing - Demo" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail_hr_recruitment msgid "eMail Gateway for Applicants" -msgstr "" +msgstr "Pasarela e-mail para los candidatos" #. module: base #: model:ir.module.module,shortdesc:base.module_account_coda msgid "Belgium - Import bank CODA statements" -msgstr "" +msgstr "Bélgica - Importar extractos bancarios CODA" #. module: base #: field:ir.cron,interval_type:0 @@ -10360,7 +11332,7 @@ msgstr "Este método ya no existe" #. module: base #: model:ir.module.module,shortdesc:base.module_import_google msgid "Google Import" -msgstr "" +msgstr "Importación de Google" #. module: base #: model:res.partner.category,name:base.res_partner_category_12 @@ -10380,12 +11352,12 @@ msgstr "Fecha creación" #. module: base #: view:ir.module.module:0 msgid "Keywords" -msgstr "" +msgstr "Palabras clave" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_cn msgid "中国会计科目表 - Accounting" -msgstr "" +msgstr "China - Contabilidad" #. module: base #: view:ir.model.access:0 @@ -10406,12 +11378,12 @@ msgstr "" #. module: base #: help:ir.model.data,res_id:0 msgid "ID of the target record in the database" -msgstr "" +msgstr "ID del registro objetivo en la base de datos" #. module: base #: model:ir.module.module,shortdesc:base.module_account_analytic_analysis msgid "Contracts Management" -msgstr "" +msgstr "Gestión de contratos" #. module: base #: selection:base.language.install,lang:0 @@ -10436,7 +11408,7 @@ msgstr "Para ejecutar" #. module: base #: model:ir.module.module,shortdesc:base.module_product_visible_discount msgid "Prices Visible Discounts" -msgstr "" +msgstr "Descuentos visibles en los precios" #. module: base #: field:ir.attachment,datas:0 @@ -10467,6 +11439,21 @@ msgid "" "account numbers\n" " " msgstr "" +"\n" +"Módule que extiende el objeto estándar account_bank_statement_line para " +"mejorar el soporte de banca electrónica.\n" +"\n" +"Añade:\n" +"- fecha de valor\n" +"- pagos en lote\n" +"- trazabilidad de cambios en las líneas de extracto\n" +"- vistas de líneas de extracto\n" +"- informe de balances de extractos bancarios\n" +"- mejoras en el rendimiento para la importación digital de extractos (vía el " +"flag del contexto 'ebanking_import')\n" +"- name_search en res.partner.bank mejorada para permitir búsqueda de números " +"de cuenta y números IBAN\n" +" " #. module: base #: code:addons/orm.py:1895 @@ -10526,12 +11513,12 @@ msgstr "Nombre del servicio" #. module: base #: model:ir.module.module,shortdesc:base.module_import_base msgid "Framework for complex import" -msgstr "" +msgstr "Framework para importación compleja" #. module: base #: view:ir.actions.todo.category:0 msgid "Wizard Category" -msgstr "" +msgstr "Categoría de asistente" #. module: base #: model:ir.module.module,description:base.module_account_cancel @@ -10544,6 +11531,14 @@ msgid "" "journal. If set to true it allows user to cancel entries & invoices.\n" " " msgstr "" +"\n" +"Permite cancelar asientos contables.\n" +"=============================\n" +"\n" +"Este módulo añade el campo 'Permitir cancelar asientos' en la vista " +"formulario del diario contable. Si se marca, permite al usuario cancelar " +"asientos y facturas.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.action_rule @@ -10565,7 +11560,7 @@ msgstr "Día del año: %(doy)s" #: model:ir.module.category,name:base.module_category_portal #: model:ir.module.module,shortdesc:base.module_portal msgid "Portal" -msgstr "" +msgstr "Portal" #. module: base #: model:ir.module.module,description:base.module_claim_from_delivery @@ -10576,6 +11571,11 @@ msgid "" "\n" "Adds a Claim link to the delivery order.\n" msgstr "" +"\n" +"Crea una reclamación desde una entrega del pedido.\n" +"==========================================\n" +"\n" +"Añade un enlace de la reclamación desde la entrega del pedido.\n" #. module: base #: view:ir.model:0 @@ -10600,6 +11600,9 @@ msgid "" "Please define BIC/Swift code on bank for bank type IBAN Account to make " "valid payments" msgstr "" +"\n" +"Por favor defina el código BIC/Swift del banco para una cuenta de tipo IBAN " +"para realizar pagos válidos" #. module: base #: view:res.lang:0 @@ -10609,7 +11612,7 @@ msgstr "%A - Nombre completo del día de la semana." #. module: base #: help:ir.values,user_id:0 msgid "If set, action binding only applies for this user." -msgstr "" +msgstr "Si se establece, la acción enlazada sólo se aplica a este usuario." #. module: base #: model:res.country,name:base.gw @@ -10649,11 +11652,17 @@ msgid "" "Provide Templates for Chart of Accounts, Taxes for Uruguay\n" "\n" msgstr "" +"\n" +"Plan general de cuentas para Uruguay\n" +"==============================\n" +"\n" +"Proveed plantillas para el plan de cuentas e impuestos para Uruguay.\n" +"\n" #. module: base #: help:res.company,bank_ids:0 msgid "Bank accounts related to this company" -msgstr "" +msgstr "Cuentas bancarias de esta empresa" #. module: base #: model:ir.ui.menu,name:base.menu_base_partner @@ -10677,6 +11686,8 @@ msgstr "Realizado" msgid "" "Specify if missed occurrences should be executed when the server restarts." msgstr "" +"Especifica si las ocurrencias perdidas deben ser ejecutadas cuando el " +"servidor se reinicie." #. module: base #: model:res.partner.title,name:base.res_partner_title_miss @@ -10744,6 +11755,11 @@ msgid "" "\n" "Using this you can directly open Google Map from the URL widget." msgstr "" +"\n" +"Módulo que añade un campo de Google maps en la dirección de la empresa.\n" +"===========================================================\n" +"\n" +"Usando esto, se puede abrir directamente Google maps desde el widget URL." #. module: base #: field:workflow.activity,action:0 @@ -10765,6 +11781,17 @@ msgid "" " http://files.me.com/nbessi/06n92k.mov\n" " " msgstr "" +"\n" +"Ejemplos para el motor de informe Webkit (report_webkit module).\n" +"========================================================\n" +"\n" +"Se incluye en este módulo una factura ejemplo, así como un asistente para " +"añadir entrada de informe Webkit a cualquier documento en el sistema.\n" +"\n" +"Es necesario crear los botones de impresión llamando al asistente. Para más " +"detalles, ver:\n" +" http://files.me.com/nbessi/06n92k.mov\n" +" " #. module: base #: selection:base.language.install,lang:0 @@ -10846,11 +11873,22 @@ msgid "" " * Product Attributes\n" " " msgstr "" +"\n" +"Módulo que añade fabricantes y atributos en la vista formulario del " +"producto.\n" +"============================================================\n" +"\n" +"Puede definir los siguientes datos para el producto:\n" +" * Fabricante\n" +" * Nombre del producto para el fabricante\n" +" * Código del producto para el fabricante\n" +" * Atributos del producto\n" +" " #. module: base #: model:ir.model,name:base.model_ir_actions_todo_category msgid "Configuration Wizard Category" -msgstr "" +msgstr "Categoría del asistente de configuración" #. module: base #: view:base.module.update:0 @@ -10887,11 +11925,21 @@ msgid "" "accounts with a single statement.\n" " " msgstr "" +"\n" +"Este módulo instala la base para las cuentas IBAN (International Bank " +"Account Number - Número de cuenta bancaria internacional) y comprueba su " +"validez.\n" +"=============================================================================" +"======================================================\n" +"\n" +"Incluye la habilidad para extraer la cuenta local correctamente representada " +"de la cuenta IBAN con una sola declaración.\n" +" " #. module: base #: model:ir.model,name:base.model_ir_mail_server msgid "ir.mail_server" -msgstr "" +msgstr "ir.mail_server" #. module: base #: selection:base.language.install,lang:0 @@ -10906,6 +11954,11 @@ msgid "" "the bounds of global ones. The first group rules restrict further than " "global rules, but any additional group rule will add more permissions" msgstr "" +"Las reglas globales (no específicas de un grupo) son restricciones " +"generales, y no pueden ser sobrepasadas. Las reglas de grupo conceden " +"permisos adicionales, pero están restringidas a los límites de las globales. " +"Las reglas del primer grupo restringen más que las reglas globales, pero " +"cualquier regla adicional de grupo añadirá más permisos." #. module: base #: field:res.currency.rate,rate:0 @@ -10936,7 +11989,7 @@ msgstr "Provincia" #. module: base #: model:ir.ui.menu,name:base.next_id_5 msgid "Sequences & Identifiers" -msgstr "" +msgstr "Secuencias e identificadores" #. module: base #: model:ir.module.module,description:base.module_l10n_th @@ -10948,6 +12001,12 @@ msgid "" "Thai accounting chart and localization.\n" " " msgstr "" +"\n" +"Plan de cuentas para Tailandia\n" +"=======================\n" +"\n" +"Plan de cuentas y localización tailandesa.\n" +" " #. module: base #: model:res.country,name:base.kn @@ -10957,7 +12016,7 @@ msgstr "Antillas San Kitts y Nevis" #. module: base #: model:ir.module.category,name:base.module_category_point_of_sale msgid "Point of Sales" -msgstr "" +msgstr "Terminal punto de venta (TPV)" #. module: base #: model:ir.module.module,description:base.module_hr_payroll_account @@ -10971,6 +12030,14 @@ msgid "" " * Company Contribution Management\n" " " msgstr "" +"\n" +"Sistema de nóminas genérico integrado con la contabilidad.\n" +"==============================================\n" +"\n" +" * Creación de gastos\n" +" * Creación de pagos\n" +" * Gestión de la contribución de la compañía\n" +" " #. module: base #: code:addons/base/res/res_currency.py:190 @@ -11002,6 +12069,20 @@ msgid "" " * Allow to refund former sales.\n" " " msgstr "" +"\n" +"Este módulo provee un rápido y sencillo proceso de ventas.\n" +"==============================================\n" +"\n" +"Principales características :\n" +"-------------------------------------\n" +" * Rápida creación de una venta.\n" +" * Permite elegir una forma de pago (la forma rápida) o dividir el pago " +"entre varios modos de pago.\n" +" * Cálculo de la cantidad a devolver.\n" +" * Crea y confirma una lista de venta automáticamente.\n" +" * Permite al usuario crear una factura automáticamente.\n" +" * Permite el reembolso de las ventas.\n" +" " #. module: base #: model:ir.actions.act_window,help:base.action_ui_view_custom @@ -11018,6 +12099,8 @@ msgid "" "Checked if this is an OpenERP Publisher's Warranty contract (versus older " "contract types" msgstr "" +"Marcado si ésta es un contrato de garantía del editor OpenERP (frente a " +"antiguos tipos de contrato)" #. module: base #: field:ir.model.fields,model:0 @@ -11057,6 +12140,9 @@ msgid "" "Helps you manage your human resources by encoding your employees structure, " "generating work sheets, tracking attendance and more." msgstr "" +"Le ayuda a gestionar sus recursos humanos mediante la creación de la " +"estructura de los empleados, la generación de hojas de trabajo, seguimiento " +"de la asistencia y más." #. module: base #: help:ir.model.fields,model_id:0 @@ -11079,6 +12165,13 @@ msgid "" "for Wiki Sale FAQ.\n" " " msgstr "" +"\n" +"Este módulo provee una plantilla para la sección FAQ de ventas.\n" +"==================================================\n" +"\n" +"Provee datos demo, creando un grupo y una página Wiki para la sección FAQ " +"(Frequently Asked Questions - Preguntas más frecuentes) de ventas.\n" +" " #. module: base #: view:ir.sequence.type:0 @@ -11101,6 +12194,18 @@ msgid "" "trigger an automatic reminder email.\n" " " msgstr "" +"\n" +"Este módulo permite implementar reglas de acción para cualquier objeto.\n" +"============================================================\n" +"\n" +"Usa acciones automatizadas para lanzar automáticamente acciones para varias " +"pantallas.\n" +"\n" +"Ejemplo: una iniciativa creada por un usuario específico podría establecerse " +"automáticamente para un equipo de ventas, o una oportunidad que aún tiene " +"estado pendiente después de 14 días podría lanzar un e-mail automático de " +"recordatorio.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.res_request-act @@ -11123,7 +12228,7 @@ msgstr "O" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_br msgid "Brazilian - Accounting" -msgstr "" +msgstr "Brasil - Contabilidad" #. module: base #: model:res.country,name:base.pk @@ -11142,6 +12247,14 @@ msgid "" "The wizard to launch the report has several options to help you get the data " "you need.\n" msgstr "" +"\n" +"Añade un menú de informes en los productos de calcula las ventas, compras, " +"márgenes y otros indicadores interesantes basados en las facturas.\n" +"=============================================================================" +"===================================\n" +"\n" +"El asistente para lanzar el informe tiene varias opciones que ayudan a " +"obtener los datos necesarios.\n" #. module: base #: model:res.country,name:base.al @@ -11154,6 +12267,9 @@ msgid "" "Level of difficulty of module. Easy: intuitive and easy to use for everyone. " "Normal: easy to use for business experts. Expert: requires technical skills." msgstr "" +"Nivel de dificultad del módulo. Fácil: intuitivo y fácil de usar para " +"cualquiera. Normal: fácil para usar por expertos del negocio. Experto: " +"requiere conocimientos técnicos." #. module: base #: code:addons/base/res/res_lang.py:191 @@ -11208,6 +12324,13 @@ msgid "" "Price and Cost Price.\n" " " msgstr "" +"\n" +"Este módulo añade el 'Margen' en los pedidos de venta.\n" +"=============================================\n" +"\n" +"Esto da la rentabilidad calculando la diferencia entre el precio unitario y " +"el precio de coste.\n" +" " #. module: base #: model:ir.actions.act_window,help:base.action_res_bank_form @@ -11254,7 +12377,7 @@ msgstr "Acción inicial" #. module: base #: model:ir.module.module,shortdesc:base.module_event_project msgid "Retro-Planning on Events" -msgstr "" +msgstr "Retro-planificación de eventos" #. module: base #: code:addons/custom.py:555 @@ -11274,7 +12397,7 @@ msgstr "¿Desea limpiar Ids? " #. module: base #: view:res.partner.bank:0 msgid "Information About the Bank" -msgstr "" +msgstr "Información del banco" #. module: base #: help:ir.actions.server,condition:0 @@ -11292,12 +12415,25 @@ msgid "" " - uid: current user id\n" " - context: current context" msgstr "" +"Condición que se prueba antes de que la acción se ejecute, y previene la " +"ejecución si no se verifica.\n" +"Ejemplo: object.list_price > 5000\n" +"Es una expresión Python que puede usar los siguientes valores:\n" +" - self: modelo ORM del registro en el que la acción es lanzada\n" +" - object or obj: browse_record del registro en el que la acción es lanzada\n" +" - pool: pool del modelo ORM (i.e. self.pool)\n" +" - time: módulo de tiempo de Python\n" +" - cr: cursor de la base de datos\n" +" - uid: id del usuario actual\n" +" - context: contexto actual" #. module: base #: view:ir.rule:0 msgid "" "2. Group-specific rules are combined together with a logical OR operator" msgstr "" +"2. Reglas específicas de grupo que se pueden combinar juntas con un operador " +"OR lógico" #. module: base #: model:res.partner.category,name:base.res_partner_category_woodsuppliers0 @@ -11327,7 +12463,7 @@ msgstr "Todo parado" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic_user_function msgid "Jobs on Contracts" -msgstr "" +msgstr "Trabajos de contratos" #. module: base #: model:ir.module.module,description:base.module_import_sugarcrm @@ -11337,13 +12473,16 @@ msgid "" " \"Contacts\", \"Employees\", Meetings, Phonecalls, Emails, and " "Project, Project Tasks Data into OpenERP Module." msgstr "" +"Este módulo importa \"iniciativas\", \"oportunidades\", \"usuarios\", " +"\"cuentas\", \"contactos, \"empleados\", reuniones, llamadas telefónicas, e-" +"mails, y los datos de proyectos desde SugarCRM a OpenERP." #. module: base #: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_add_wizard #: model:ir.ui.menu,name:base.menu_publisher_warranty_contract_add #: view:publisher_warranty.contract.wizard:0 msgid "Register a Contract" -msgstr "Registrar un contracto" +msgstr "Registrar un contrato" #. module: base #: model:ir.module.module,description:base.module_l10n_ve @@ -11354,6 +12493,11 @@ msgid "" "\n" "Este módulo es para manejar un catálogo de cuentas ejemplo para Venezuela.\n" msgstr "" +"\n" +"Este módulo administra el plan de cuentas de Venezuela para OpenERP.\n" +"===========================================================================\n" +"\n" +"Este módulo es para manejar un catálogo de cuentas ejemplo para Venezuela.\n" #. module: base #: view:ir.model.data:0 @@ -11381,6 +12525,8 @@ msgid "" "Lets you install addons geared towards sharing knowledge with and between " "your employees." msgstr "" +"Permite instalar addons orientados a compartir el conocimiento con y entre " +"sus empleados." #. module: base #: selection:base.language.install,lang:0 @@ -11390,7 +12536,7 @@ msgstr "Árabe / الْعَرَبيّة" #. module: base #: model:ir.module.module,shortdesc:base.module_web_hello msgid "Hello" -msgstr "" +msgstr "Hola" #. module: base #: view:ir.actions.configuration.wizard:0 @@ -11405,7 +12551,7 @@ msgstr "Comentario" #. module: base #: model:res.groups,name:base.group_hr_manager msgid "HR Manager" -msgstr "" +msgstr "Responsable de RRHH" #. module: base #: view:ir.filters:0 @@ -11419,7 +12565,7 @@ msgstr "Dominio" #. module: base #: model:ir.module.module,shortdesc:base.module_marketing_campaign msgid "Marketing Campaigns" -msgstr "" +msgstr "Campañas de marketing" #. module: base #: code:addons/base/publisher_warranty/publisher_warranty.py:144 @@ -11430,7 +12576,7 @@ msgstr "Error de validación de contrato" #. module: base #: field:ir.values,key2:0 msgid "Qualifier" -msgstr "" +msgstr "Calificador" #. module: base #: field:res.country.state,name:0 @@ -11440,7 +12586,7 @@ msgstr "Nombre provincia" #. module: base #: view:res.lang:0 msgid "Update Languague Terms" -msgstr "" +msgstr "Actualizar términos de idioma" #. module: base #: field:workflow.activity,join_mode:0 @@ -11455,7 +12601,7 @@ msgstr "Zona horaria" #. module: base #: model:ir.module.module,shortdesc:base.module_wiki_faq msgid "Wiki: Internal FAQ" -msgstr "" +msgstr "Wiki: FAQ interno" #. module: base #: model:ir.model,name:base.model_ir_actions_report_xml @@ -11476,6 +12622,15 @@ msgid "" "handle an issue.\n" " " msgstr "" +"\n" +"Este módulo añade soporte para partes de tiempo para la gestión de " +"incidencias/errores en el proyecto.\n" +"=============================================================================" +"====\n" +"\n" +"Se pueden mantener registros de trabajo para resaltar el número de horas " +"gastadas por los usuarios para manejar una incidencia.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.ir_sequence_form @@ -11556,7 +12711,7 @@ msgstr "Normal" #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_double_validation msgid "Double Validation on Purchases" -msgstr "" +msgstr "Doble validación en compras" #. module: base #: field:res.bank,street2:0 @@ -11623,6 +12778,9 @@ msgid "" "importing a new module you can install it by clicking on the button " "\"Install\" from the form view." msgstr "" +"Este asistente le ayuda a importar un nuevo módulo a su sistema OpenERP. " +"Después de importar un nuevo módulo, puede instalarlo haciendo clic en el " +"botón \"Instalar\"." #. module: base #: model:res.country,name:base.ch @@ -11656,6 +12814,14 @@ msgid "" "picking and invoice. The message is triggered by the form's onchange event.\n" " " msgstr "" +"\n" +"Módulo que lanza avisos en los objetos de OpenERP.\n" +"=========================================\n" +"\n" +"Se pueden mostrar mensajes de aviso para objetos tales como pedidos de " +"venta, pedidos de compra y facturas. El mensaje es lanzado por el evento " +"onchange del formulario.\n" +" " #. module: base #: code:addons/osv.py:150 @@ -11688,7 +12854,7 @@ msgstr "Somalia" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_operations msgid "Manufacturing Operations" -msgstr "" +msgstr "Operaciones de fabricación" #. module: base #: selection:publisher_warranty.contract,state:0 @@ -11716,11 +12882,18 @@ msgid "" "it to all the users.\n" " " msgstr "" +"\n" +"Este módulo provee la funcionalidad de enviar mensajes desde un proyecto.\n" +"===========================================================\n" +"\n" +"Un usuario puede enviar mensajes individualmente a otro usuario. Incluso " +"puede enviar simultáneamente un mensaje a todos los usuarios.\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_hr msgid "Employee Directory" -msgstr "" +msgstr "Directorio de empleados" #. module: base #: view:ir.cron:0 @@ -11754,6 +12927,12 @@ msgid "" "This module gives the details of the goods traded between the countries of " "European Union " msgstr "" +"\n" +"Módulos que añade informes Intrastat.\n" +"==============================\n" +"\n" +"Este módulo da detalles de los bienes comerciados entre países de la Unión " +"Europea. " #. module: base #: model:ir.module.module,description:base.module_stock_invoice_directly @@ -11766,6 +12945,13 @@ msgid "" "the invoicing wizard if the delivery is to be invoiced.\n" " " msgstr "" +"\n" +"Asistente de factura para entregas.\n" +"============================\n" +"\n" +"Cuando envía o entrega bienes, este módulo automáticamente lanza el " +"asistente de factura si la entrega debe ser facturada.\n" +" " #. module: base #: code:addons/orm.py:1388 @@ -11787,12 +12973,12 @@ msgstr "Corrija código EAN13" #. module: base #: selection:res.company,paper_format:0 msgid "A4" -msgstr "" +msgstr "A4" #. module: base #: field:publisher_warranty.contract,check_support:0 msgid "Support Level 1" -msgstr "" +msgstr "Soporte nivel 1" #. module: base #: field:res.partner,customer:0 @@ -11828,6 +13014,23 @@ msgid "" "lines: Unit price=225, Discount=0,00, Net price=225\n" " " msgstr "" +"\n" +"Este módulo permite calcular descuentos en las líneas de pedidos de venta " +"basados en las tarifas.\n" +"============================================================================" +"\n" +"\n" +"Para este fin, una nueva casilla de verificación llamada \"Descuento " +"visible\" se añade al formulario de las tarifas.\n" +"\n" +"Ejemplo:\n" +" Para el producto PC1 y la empresa \"Asustek\": si PVP=450, y el precio " +"calculado usando la tarifa de Asustek es 225.\n" +" Si la casilla está marcada, se tendrá en la línea del pedido de venta: " +"Precio unitario=450, Descuento=50,00, Precio neto=225\n" +" Si la casilla está desmarcada, se tendrá: Precio unitario=225, " +"Descuento=0,00, Precio neto=225.\n" +" " #. module: base #: field:ir.module.module,shortdesc:0 @@ -11897,7 +13100,7 @@ msgstr "Túnez" #. module: base #: view:ir.actions.todo:0 msgid "Wizards to be Launched" -msgstr "" +msgstr "Asistentes pendientes de lanzamiento" #. module: base #: model:ir.module.category,name:base.module_category_manufacturing @@ -11913,7 +13116,7 @@ msgstr "Comores" #. module: base #: view:res.request:0 msgid "Draft and Active" -msgstr "" +msgstr "Borrador y activo" #. module: base #: model:ir.actions.act_window,name:base.action_server_action @@ -11925,7 +13128,7 @@ msgstr "Acciones de servidor" #. module: base #: field:res.partner.bank.type,format_layout:0 msgid "Format Layout" -msgstr "" +msgstr "Formato de presentación" #. module: base #: field:ir.model.fields,selection:0 @@ -11940,7 +13143,7 @@ msgstr "Padre derecho" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_openid msgid "OpenID Authentification" -msgstr "" +msgstr "Autentificación OpenID" #. module: base #: model:ir.module.module,description:base.module_plugin_thunderbird @@ -11956,6 +13159,17 @@ msgid "" "HR Applicant and Project Issue from selected mails.\n" " " msgstr "" +"\n" +"Este módulo requiere del plug-in Thuderbird para funcionar correctamente.\n" +"============================================================\n" +"\n" +"El plug-in permite archivar un e-mail y sus adjuntos a los objetos OpenERP " +"seleccionados. Puede seleccionar una empresa, una tarea, un proyecto, una " +"cuenta analítica o cualquier otro objeto y adjuntar el correo seleccionado " +"como un archivo .eml. Puede crear documentos para una iniciativa CRM, un " +"candidato de RRHH, una incidencia de un proyecto desde los correos " +"seleccionados.\n" +" " #. module: base #: view:res.lang:0 @@ -11970,12 +13184,12 @@ msgstr "Copiar objeto" #. module: base #: model:ir.module.module,shortdesc:base.module_mail msgid "Emails Management" -msgstr "" +msgstr "Gestión de correos" #. module: base #: field:ir.actions.server,trigger_name:0 msgid "Trigger Signal" -msgstr "" +msgstr "Señal disparadora" #. module: base #: code:addons/base/res/res_users.py:119 @@ -12001,6 +13215,19 @@ msgid "" " * Repair quotation report\n" " * Notes for the technician and for the final customer\n" msgstr "" +"\n" +"El objetivo es tener un completo módulo para gestionar todas las " +"reparaciones de productos. Los siguientes temas deberían estar cubiertos por " +"este módulo:\n" +"=============================================================================" +"=================================================\n" +"\n" +" * Añadir/eliminar productos en la reparación\n" +" * Impactar en los stocks\n" +" * Facturación (productos y/o servicios)\n" +" * Concepto de garantía\n" +" * Informe de presupuesto de reparación\n" +" * Notas para el técnico y para el cliente final\n" #. module: base #: model:ir.actions.act_window,name:base.action_country_state @@ -12026,11 +13253,18 @@ msgid "" "document and Wiki based Hidden.\n" " " msgstr "" +"\n" +"Instalador para la parte oculta de gestión del conocimiento.\n" +"===============================================\n" +"\n" +"Hace disponible la configuración de la aplicación de conocimiento desde la " +"que se puede instalar los módulos ocultos de documentos y Wiki.\n" +" " #. module: base #: field:res.groups,trans_implied_ids:0 msgid "Transitively inherits" -msgstr "" +msgstr "Heredar transitivamente" #. module: base #: field:ir.default,ref_table:0 @@ -12041,7 +13275,7 @@ msgstr "Ref. tabla" #: code:addons/base/ir/ir_mail_server.py:443 #, python-format msgid "Mail delivery failed" -msgstr "" +msgstr "Entrega fallida del correo" #. module: base #: field:ir.actions.act_window,res_model:0 @@ -12081,7 +13315,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account_analytic_plans msgid "Multiple Analytic Plans" -msgstr "" +msgstr "Planes analíticos múltiples" #. module: base #: model:ir.module.module,description:base.module_project_timesheet @@ -12097,6 +13331,15 @@ msgid "" "\n" " " msgstr "" +"\n" +"Sincronización de las tareas de proyecto con las hojas de asistencia.\n" +"===================================================\n" +"\n" +"Este módulo permite transferir las entradas de tareas definidas para un " +"proyecto a las líneas de una hoja de asistencia para una fecha y usuario " +"particulares con la posibilidad de crear, editar y eliminar en ambas vías.\n" +"\n" +" " #. module: base #: view:ir.sequence:0 @@ -12111,7 +13354,7 @@ msgstr "Planificación" #. module: base #: model:ir.module.module,shortdesc:base.module_base_tools msgid "Base Tools" -msgstr "" +msgstr "Herramientas base" #. module: base #: help:res.country,address_format:0 @@ -12130,6 +13373,20 @@ msgid "" " \n" "%(country_code)s: the code of the country" msgstr "" +"Puede colocar aquí el formato habitual que se usa en las direcciones " +"pertenecientes a este país.\n" +"\n" +"Puede usar patrones de cadena de estilo python con todos los campos de la " +"dirección (por ejemplo, usar '%(street)s' para mostrar el campo 'street') " +"más:\n" +"\n" +"%(state_name)s: para el nombre de la provincia, región o estado\n" +"\n" +"%(state_code)s: para el código de la provincia, región o estado\n" +"\n" +"%(country_name)s: para el nombre del país\n" +"\n" +"%(country_code)s: para el código del país" #. module: base #: model:ir.module.module,description:base.module_pad @@ -12143,11 +13400,18 @@ msgid "" "(by default, http://ietherpad.com/).\n" " " msgstr "" +"\n" +"Añade soporte extendido para adjuntos (Ether)Pad en el cliente web.\n" +"===================================================================\n" +"\n" +"Permite a la compañía personalizar que instalación Pad debe usarse para " +"enlazar a nuevas anotaciones (por defecto, http://ietherpad.com/).\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_uk msgid "UK - Accounting" -msgstr "" +msgstr "Reino Unido - Contabilidad" #. module: base #: model:ir.module.module,description:base.module_project_scrum @@ -12220,7 +13484,7 @@ msgstr "Configuración" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in msgid "India - Accounting" -msgstr "" +msgstr "India - Contabilidad" #. module: base #: field:ir.actions.server,expression:0 @@ -12235,12 +13499,12 @@ msgstr "Fecha inicial" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_gt msgid "Guatemala - Accounting" -msgstr "" +msgstr "Guatemala - Contabilidad" #. module: base #: help:ir.cron,args:0 msgid "Arguments to be passed to the method, e.g. (uid,)." -msgstr "" +msgstr "Argumentos que se pasarán al método, por ejemplo, uid." #. module: base #: model:res.partner.category,name:base.res_partner_category_5 @@ -12313,6 +13577,19 @@ msgid "" "in the form of pdf file. Implements a dashboard for My Current Evaluations\n" " " msgstr "" +"\n" +"Añade la abilidad para crear evaluaciones al empleado.\n" +"===========================================\n" +"\n" +"Se puede crear una evaluación por empleado para subordinados y becarios, así " +"como para su responsable. La evaluación se realiza bajo un plan en el que se " +"pueden crear varias encuestas y se puede definir que nivel de jerarquía de " +"empleados rellena qué y se realiza una revisión y evaluación final por parte " +"del administrador. Cada evaluación rellenada por los empleados puede ser " +"vista en el formulario o en un archivo PDF. \n" +"\n" +"Implementa también un tablero para visualizar las evaluaciones actuales.\n" +" " #. module: base #: selection:base.language.install,lang:0 @@ -12374,7 +13651,7 @@ msgstr "Criterios de búsqueda inválidos" #. module: base #: view:ir.mail_server:0 msgid "Connection Information" -msgstr "" +msgstr "Información de la conexión" #. module: base #: view:ir.attachment:0 @@ -12406,6 +13683,8 @@ msgid "" "External Key/Identifier that can be used for data integration with third-" "party systems" msgstr "" +"Identificador/clave externo que puede ser usado para integración de datos " +"con sistemas third-party" #. module: base #: model:ir.module.module,description:base.module_mrp_operations @@ -12509,11 +13788,12 @@ msgstr "Ref. vista" #: model:ir.module.category,description:base.module_category_sales_management msgid "Helps you handle your quotations, sale orders and invoicing." msgstr "" +"Le ayuda a gestionar sus presupuestos, pedidos de venta y facturación." #. module: base #: field:res.groups,implied_ids:0 msgid "Inherits" -msgstr "" +msgstr "Hereda" #. module: base #: selection:ir.translation,type:0 @@ -12523,7 +13803,7 @@ msgstr "Selección" #. module: base #: field:ir.module.module,icon:0 msgid "Icon URL" -msgstr "" +msgstr "URL del ícono" #. module: base #: field:ir.actions.act_window,type:0 @@ -12558,6 +13838,11 @@ msgid "" "Chad, Togo.\n" " " msgstr "" +"Este módulo implementa el plan de cuentas para el área de OHADA: Benin, " +"Burkina Faso, Camerún, República Central Africana, Comoros, Congo, Costa " +"Ivory, Gabón, Guinea, Guinea Bissau, Guinea Ecuatorial, Mali, Nigeria, " +"República Democrática del Congo, Senegal, Chad, Togo.\n" +" " #. module: base #: view:base.language.import:0 @@ -12599,7 +13884,7 @@ msgstr "Costa Rica" #. module: base #: model:ir.module.module,shortdesc:base.module_base_module_doc_rst msgid "Generate Docs of Modules" -msgstr "" +msgstr "Generar documentación de los módulos" #. module: base #: model:res.company,overdue_msg:base.main_company @@ -12611,11 +13896,15 @@ msgid "" "queries regarding your account, please contact us.\n" "Thank you in advance.\n" msgstr "" +"Nuestros registros indican que los siguientes pagos estan pendientes. Si la " +"cantidad ya ha sido pagada, por favor ignore este aviso. Sin embargo, si " +"tiene cualquier consulta sobre su cuenta, pongase en contacto con nosotros.\n" +"Gracias de antemano.\n" #. module: base #: model:ir.module.module,shortdesc:base.module_users_ldap msgid "Authentication via LDAP" -msgstr "" +msgstr "Autenticación vóa LDAP" #. module: base #: view:workflow.activity:0 @@ -12638,12 +13927,12 @@ msgstr "Monedas" #: model:ir.model,name:base.model_ir_actions_client #: selection:ir.ui.menu,action:0 msgid "ir.actions.client" -msgstr "" +msgstr "ir.actions.client" #. module: base #: help:ir.values,value:0 msgid "Default value (pickled) or reference to an action" -msgstr "" +msgstr "Valor por defecto o referencia a una acción" #. module: base #: sql_constraint:res.groups:0 @@ -12661,6 +13950,13 @@ msgid "" "you can modify in OpenOffice. Once you have modified it you can\n" "upload the report using the same wizard.\n" msgstr "" +"\n" +"Este módulo se usa junto con el plug-in OpenERP de OpenOffice.\n" +"===================================================\n" +"\n" +"El módulo añade un asistente para importar/exportar un informe .sxw que se " +"puede modificar en OpenOffice/LibreOffice. Una vez modificado, se puede " +"subir usando el mismo asistente.\n" #. module: base #: view:ir.sequence:0 @@ -12698,11 +13994,23 @@ msgid "" "If you need to manage your meetings, you should install the CRM module.\n" " " msgstr "" +"\n" +"Sistema completo de calendario\n" +"=========================\n" +"\n" +"Soporta:\n" +" - Calendario de eventos\n" +" - Alertas (crea peticiones)\n" +" - Eventos recurrentes\n" +" - Invitaciones a gente\n" +"\n" +"Si necesita gestionar sus reuniones, debería instalar el módulo CRM.\n" +" " #. module: base #: view:ir.rule:0 msgid "Rule definition (domain filter)" -msgstr "" +msgstr "Definición de regla (filtro de dominio)" #. module: base #: model:ir.model,name:base.model_workflow_instance @@ -12750,12 +14058,12 @@ msgstr "Tableros" #. module: base #: model:ir.module.module,shortdesc:base.module_procurement msgid "Procurements" -msgstr "" +msgstr "Abastecimientos" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_payroll_account msgid "Payroll Accounting" -msgstr "" +msgstr "Cálculo de nóminas" #. module: base #: help:ir.attachment,type:0 @@ -12765,12 +14073,12 @@ msgstr "Archivo binario o URL externa" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_order_dates msgid "Dates on Sales Order" -msgstr "" +msgstr "Fechas en pedidos de venta" #. module: base #: view:ir.attachment:0 msgid "Creation Month" -msgstr "" +msgstr "Mes de creación" #. module: base #: model:res.country,name:base.nl @@ -12792,6 +14100,17 @@ msgid "" "technical OpenERP documentation at http://doc.openerp.com\n" " " msgstr "" +"\n" +"Provee una plataforma EDI común que otras aplicaciones pueden usar\n" +"=======================================================\n" +"\n" +"OpenERP especifica un formato EDI genérico para intercambiar documentos de " +"negocios entre diferentes sistemas, y provee mecanismos genéricos para " +"importarlos y exportarlos.\n" +"\n" +"Se pueden encontrar más detalles acerca del formato EDI de OpenERP en la " +"documentación técnica de OpenERP en http://doc.openerp.com.\n" +" " #. module: base #: model:ir.ui.menu,name:base.next_id_4 @@ -12801,12 +14120,12 @@ msgstr "Objetos de bajo nivel" #. module: base #: help:ir.values,model:0 msgid "Model to which this entry applies" -msgstr "" +msgstr "Modelo al que se le aplica esta entrada" #. module: base #: field:res.country,address_format:0 msgid "Address Format" -msgstr "" +msgstr "Formato de dirección" #. module: base #: model:ir.model,name:base.model_ir_values @@ -12816,7 +14135,7 @@ msgstr "ir.valores" #. module: base #: model:res.groups,name:base.group_no_one msgid "Technical Features" -msgstr "" +msgstr "Características técnicas" #. module: base #: selection:base.language.install,lang:0 @@ -12830,18 +14149,20 @@ msgid "" "Here is what we got instead:\n" " %s" msgstr "" +"Esto es lo que hay en su lugar:\n" +" %s" #. module: base #: model:ir.actions.act_window,name:base.action_model_data #: view:ir.model.data:0 #: model:ir.ui.menu,name:base.ir_model_data_menu msgid "External Identifiers" -msgstr "" +msgstr "Identificadores externos" #. module: base #: model:res.groups,name:base.group_sale_salesman msgid "User - Own Leads Only" -msgstr "" +msgstr "Usuarios - Sólo iniciativas propias" #. module: base #: model:res.country,name:base.cd @@ -12886,7 +14207,7 @@ msgstr "Número de ejecuciones" #: code:addons/base/res/res_bank.py:189 #, python-format msgid "BANK" -msgstr "" +msgstr "BANCO" #. module: base #: view:base.module.upgrade:0 @@ -12921,11 +14242,15 @@ msgid "" "hesap bilgileriniz,ilgili para birimi gibi bilgiler isteyecek.\n" " " msgstr "" +"\n" +"Plan de cuentas contables de OpenERP para Turquía.\n" +"==========================================\n" +" " #. module: base #: view:res.config:0 msgid "Apply" -msgstr "" +msgstr "Aplicar" #. module: base #: field:res.request,trigger_date:0 @@ -12949,11 +14274,14 @@ msgid "" " OpenERP Web kanban view.\n" " " msgstr "" +"\n" +" Vista kanban para OpenERP web.\n" +" " #. module: base #: model:ir.ui.menu,name:base.menu_project_management_time_tracking msgid "Time Tracking" -msgstr "" +msgstr "Seguimiento de tiempo" #. module: base #: view:res.partner.category:0 @@ -12972,6 +14300,8 @@ msgid "" "Helps you manage your inventory and main stock operations: delivery orders, " "receptions, etc." msgstr "" +"Le ayuda a gestionar su inventario y las operaciones principales de stock: " +"las órdenes de entrega, recepciones, ..." #. module: base #: model:ir.model,name:base.model_base_module_update @@ -13086,7 +14416,7 @@ msgstr "Contenido" #: code:addons/base/ir/ir_mail_server.py:199 #, python-format msgid "Connection test succeeded!" -msgstr "" +msgstr "¡Prueba de conexión realizada con éxito!" #. module: base #: view:partner.massmail.wizard:0 @@ -13130,11 +14460,13 @@ msgid "" "Please define at least one SMTP server, or provide the SMTP parameters " "explicitly." msgstr "" +"Por favor defina al menos un servidor SMTP, o incluya los parámetros SMTP " +"explícitamente." #. module: base #: view:ir.attachment:0 msgid "Filter on my documents" -msgstr "" +msgstr "Filtros en mis documentos" #. module: base #: help:ir.actions.server,code:0 @@ -13142,6 +14474,9 @@ msgid "" "Python code to be executed if condition is met.\n" "It is a Python block that can use the same values as for the condition field" msgstr "" +"Código Python que se ejecutará si se da la condición.\n" +"Es un bloque Python que puede usar los mismos valores que el campo " +"\"Condición\"" #. module: base #: model:ir.actions.act_window,name:base.action_partner_supplier_form @@ -13173,7 +14508,7 @@ msgstr "Gabón" #. module: base #: model:res.groups,name:base.group_multi_company msgid "Multi Companies" -msgstr "" +msgstr "Múltiples compañías" #. module: base #: view:ir.model:0 @@ -13192,7 +14527,7 @@ msgstr "Groenlandia" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "User - All Leads" -msgstr "" +msgstr "Usuario - Mostrar todas las iniciativas" #. module: base #: field:res.partner.bank,acc_number:0 @@ -13205,11 +14540,13 @@ msgid "" "Example: GLOBAL_RULE_1 AND GLOBAL_RULE_2 AND ( (GROUP_A_RULE_1 OR " "GROUP_A_RULE_2) OR (GROUP_B_RULE_1 OR GROUP_B_RULE_2) )" msgstr "" +"Ejemplo: GLOBAL_RULE_1 AND GLOBAL_RULE_2 AND ( (GROUP_A_RULE_1 OR " +"GROUP_A_RULE_2) OR (GROUP_B_RULE_1 OR GROUP_B_RULE_2) )" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_th msgid "Thailand - Accounting" -msgstr "" +msgstr "Tailandia - Contabilidad" #. module: base #: view:res.lang:0 @@ -13257,7 +14594,7 @@ msgstr "Asunto" #. module: base #: selection:res.currency,position:0 msgid "Before Amount" -msgstr "" +msgstr "Antes de la cantidad" #. module: base #: field:res.request,act_from:0 @@ -13278,12 +14615,12 @@ msgstr "Consumidores" #. module: base #: view:res.company:0 msgid "Set Bank Accounts" -msgstr "" +msgstr "Configurar cuentas bancarias" #. module: base #: field:ir.actions.client,tag:0 msgid "Client action tag" -msgstr "" +msgstr "Etiqueta de acción del cliente" #. module: base #: code:addons/base/res/res_lang.py:189 @@ -13295,7 +14632,7 @@ msgstr "" #. module: base #: field:ir.values,model_id:0 msgid "Model (change only)" -msgstr "" +msgstr "Modelo (sólo cambiar)" #. module: base #: model:ir.module.module,description:base.module_marketing_campaign_crm_demo @@ -13308,12 +14645,19 @@ msgid "" "marketing_campaign.\n" " " msgstr "" +"\n" +"Datos demo para el módulo 'marketing_campaign'.\n" +"=======================================\n" +"\n" +"Crea datos demo como iniciativas, campañas y segmentos para el módulo " +"'marketing_campaign'.\n" +" " #. module: base #: selection:ir.actions.act_window.view,view_mode:0 #: selection:ir.ui.view,type:0 msgid "Kanban" -msgstr "" +msgstr "Kanban" #. module: base #: code:addons/base/ir/ir_model.py:251 @@ -13328,12 +14672,12 @@ msgstr "" #. module: base #: view:ir.filters:0 msgid "Current User" -msgstr "" +msgstr "Usuario actual" #. module: base #: field:res.company,company_registry:0 msgid "Company Registry" -msgstr "" +msgstr "Registro de compañía" #. module: base #: view:ir.actions.report.xml:0 @@ -13345,7 +14689,7 @@ msgstr "Varios" #: view:ir.mail_server:0 #: model:ir.ui.menu,name:base.menu_mail_servers msgid "Outgoing Mail Servers" -msgstr "" +msgstr "Servidores de correo saliente" #. module: base #: model:res.country,name:base.cn @@ -13358,6 +14702,8 @@ msgid "" "The object that should receive the workflow signal (must have an associated " "workflow)" msgstr "" +"El objeto que debe recibir la señal del flujo de trabajo (debe tener un " +"flujo de trabajo asociado)" #. module: base #: model:ir.module.category,description:base.module_category_account_voucher @@ -13365,6 +14711,8 @@ msgid "" "Allows you to create your invoices and track the payments. It is an easier " "version of the accounting module for managers who are not accountants." msgstr "" +"Le permite crear sus facturas y controlar los pagos. Es una versión más " +"fácil del módulo de contabilidad para gestores que no sean contables." #. module: base #: model:res.country,name:base.eh @@ -13374,7 +14722,7 @@ msgstr "Sáhara occidental" #. module: base #: model:ir.module.category,name:base.module_category_account_voucher msgid "Invoicing & Payments" -msgstr "" +msgstr "Facturación y pagos" #. module: base #: model:ir.actions.act_window,help:base.action_res_company_form @@ -13447,6 +14795,10 @@ msgid "" "\n" "\n" msgstr "" +"\n" +"Localización suiza:\n" +"\n" +"\n" #. module: base #: help:multi_company.default,expression:0 @@ -13581,7 +14933,7 @@ msgstr "" #. module: base #: field:res.partner.bank,bank_name:0 msgid "Bank Name" -msgstr "" +msgstr "Nombre del banco" #. module: base #: model:res.country,name:base.ki @@ -13627,6 +14979,10 @@ msgid "" "are available. To add a new language, you can use the 'Load an Official " "Translation' wizard available from the 'Administration' menu." msgstr "" +"Idioma por defecto usado en el interfaz, cuando las traducciones están " +"disponibles. Para añadir un nuevo idioma, puede usar el asistente 'Cargar " +"una traducción oficial', disponible desde el menú 'Configuración' / " +"'Traducciones'." #. module: base #: model:ir.module.module,description:base.module_l10n_es @@ -13645,6 +15001,18 @@ msgid "" "Note: You should install the l10n_ES_account_balance_report module\n" "for yearly account reporting (balance, profit & losses).\n" msgstr "" +"\n" +"Planes de cuentas españoles (PGCE 2008).\n" +"=================================\n" +"\n" +"* Define las siguientes plantillas de planes de cuentas:\n" +" * Plan de cuentas español 2008.\n" +" * Plan de cuentas español 2008 para pequeñas y medianas empresas.\n" +"* Define plantillas para impuestos de venta y de compra.\n" +"* Define plantillas de códigos de impuesto.\n" +"\n" +"Nota: Debe instalar el módulo l10n_ES_account_balance_report para la " +"información anual contable (balance, pérdidas y ganancias).\n" #. module: base #: model:ir.model,name:base.model_ir_sequence_type @@ -13660,7 +15028,7 @@ msgstr "Archivo CSV" #: code:addons/base/res/res_company.py:154 #, python-format msgid "Phone: " -msgstr "" +msgstr "Teléfono: " #. module: base #: field:res.company,account_no:0 @@ -13695,11 +15063,19 @@ msgid "" "plans.\n" " " msgstr "" +"\n" +"Módulo base para gestionar distribuciones analíticas en los pedidos de " +"compra.\n" +"=============================================================\n" +"\n" +"Permite al usuario mantener varios planes analíticos. Esto permite dividir " +"una línea de un pedido de compra entrevarias cuentas y planes analíticos.\n" +" " #. module: base #: field:res.company,vat:0 msgid "Tax ID" -msgstr "" +msgstr "ID de impuesto" #. module: base #: field:ir.model.fields,field_description:0 @@ -13823,7 +15199,7 @@ msgstr "Actividades" #. module: base #: model:ir.module.module,shortdesc:base.module_product msgid "Products & Pricelists" -msgstr "" +msgstr "Productos y tarifas" #. module: base #: field:ir.actions.act_window,auto_refresh:0 @@ -13845,12 +15221,12 @@ msgstr "Diagrama" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_es msgid "Spanish - Accounting (PGCE 2008)" -msgstr "" +msgstr "España - Contabilidad (PGCE 2008)" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_no_autopicking msgid "Picking Before Manufacturing" -msgstr "" +msgstr "Selección antes de fabricación" #. module: base #: model:res.country,name:base.wf @@ -13870,12 +15246,12 @@ msgstr "Grecia" #. module: base #: model:ir.module.module,shortdesc:base.module_web_calendar msgid "web calendar" -msgstr "" +msgstr "calendario web" #. module: base #: field:ir.model.data,name:0 msgid "External Identifier" -msgstr "" +msgstr "Identificador externo" #. module: base #: model:ir.actions.act_window,name:base.grant_menu_access @@ -13906,7 +15282,7 @@ msgstr "Acciones" #. module: base #: model:ir.module.module,shortdesc:base.module_delivery msgid "Delivery Costs" -msgstr "" +msgstr "Gastos de envío" #. module: base #: code:addons/base/ir/ir_cron.py:293 @@ -13915,6 +15291,8 @@ msgid "" "This cron task is currently being executed and may not be modified, please " "try again in a few minutes" msgstr "" +"Esta tarea cron está siendo ejecutada y no puede ser modificada. Por favor, " +"vuelva a intentarlo en unos minutos" #. module: base #: model:ir.module.module,description:base.module_product_expiry @@ -13931,6 +15309,17 @@ msgid "" "\n" "Used, for example, in food industries." msgstr "" +"\n" +"Permite controlar diferentes fechas en productos y lotes de producción\n" +"=========================================================\n" +"\n" +"Se pueden seguir las siguientes fechas:\n" +" - fin de vida\n" +" - mejor fecha anterior\n" +" - fecha de eliminación\n" +" - fecha de alerta\n" +"\n" +"Usada, por ejemplo, en las industrias alimentarias." #. module: base #: field:ir.exports.line,export_id:0 @@ -13940,13 +15329,13 @@ msgstr "Exportar" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_nl msgid "Netherlands - Accounting" -msgstr "" +msgstr "Holanda - Contabilidad" #. module: base #: field:res.bank,bic:0 #: field:res.partner.bank,bank_bic:0 msgid "Bank Identifier Code" -msgstr "Código de identificador bancario" +msgstr "Código de identificación bancaria" #. module: base #: model:res.country,name:base.tm @@ -13960,6 +15349,9 @@ msgid "" " OpenERP Web process view.\n" " " msgstr "" +"\n" +" Vista proceso de OpenERP web.\n" +" " #. module: base #: model:ir.module.module,description:base.module_account_chart @@ -13970,6 +15362,11 @@ msgid "" "\n" "Deactivates minimal chart of accounts.\n" msgstr "" +"\n" +"Elimina el plan de cuentas mínimo.\n" +"===========================\n" +"\n" +"Desactiva el plan de cuentas mínimo.\n" #. module: base #: code:addons/base/ir/ir_actions.py:653 @@ -14007,7 +15404,7 @@ msgstr "Error" #. module: base #: model:ir.module.module,shortdesc:base.module_base_crypt msgid "DB Password Encryption" -msgstr "" +msgstr "Encriptación de la contraseña en la BD" #. module: base #: help:workflow.transition,act_to:0 @@ -14017,7 +15414,7 @@ msgstr "Actividad destino" #. module: base #: model:ir.module.module,shortdesc:base.module_account_check_writing msgid "Check writing" -msgstr "" +msgstr "Verificación de escritura" #. module: base #: model:ir.module.module,description:base.module_sale_layout @@ -14033,6 +15430,17 @@ msgid "" "\n" " " msgstr "" +"\n" +"Este módulo provee características para mejorar la presentación del pedido " +"de venta.\n" +"===================================================================\n" +"\n" +"Da la posibilidad de \n" +" * ordenar todas las líneas de un pedido de venta\n" +" * añadir títulos, líneas de comentarios, líneas de subtotal\n" +" * dibujar líneas horizontales y poner saltos de página\n" +"\n" +" " #. module: base #: view:base.module.update:0 @@ -14049,7 +15457,7 @@ msgstr "Guía técnica" #. module: base #: view:res.company:0 msgid "Address Information" -msgstr "" +msgstr "Información de dirección" #. module: base #: model:res.country,name:base.tz @@ -14074,7 +15482,7 @@ msgstr "Isla Natividad" #. module: base #: model:ir.module.module,shortdesc:base.module_web_livechat msgid "Live Chat Support" -msgstr "" +msgstr "Soporte por chat" #. module: base #: view:ir.actions.server:0 @@ -14093,11 +15501,14 @@ msgid "" " OpenERP Web dashboard view.\n" " " msgstr "" +"\n" +" Vista tablero de OpenERP web\n" +" " #. module: base #: view:res.partner:0 msgid "Supplier Partners" -msgstr "" +msgstr "Proveedores" #. module: base #: view:res.config.installer:0 @@ -14127,6 +15538,10 @@ msgid "" " * Salary Maj, ONSS, Withholding Tax, Child Allowance, ...\n" " " msgstr "" +"\n" +"Reglas de nómina belgas.\n" +"=====================\n" +" " #. module: base #: model:ir.model,name:base.model_partner_wizard_ean_check @@ -14136,7 +15551,7 @@ msgstr "Verificación EAN" #. module: base #: view:res.partner:0 msgid "Customer Partners" -msgstr "" +msgstr "Clientes" #. module: base #: sql_constraint:res.users:0 @@ -14172,6 +15587,16 @@ msgid "" "\n" " " msgstr "" +"\n" +"Este módulo muestra el proceso básico This module shows the basic processes " +"involucrado en los módulos seleccionados y la secuencia en la que ocurre\n" +"=============================================================================" +"============================================\n" +"\n" +"Nota: Esto se aplica a los módulos que contienen un archivo " +"'modulename_process_xml', por ejemplo product/process/product_process_xml\n" +"\n" +" " #. module: base #: field:res.users,menu_tips:0 @@ -14202,7 +15627,7 @@ msgstr "Cabecera / Pie de página interna" #. module: base #: model:ir.module.module,shortdesc:base.module_crm msgid "CRM" -msgstr "" +msgstr "CRM" #. module: base #: code:addons/base/module/wizard/base_export_language.py:59 @@ -14227,7 +15652,7 @@ msgstr "_Exportar" #. module: base #: model:ir.module.module,shortdesc:base.module_account_followup msgid "Followup Management" -msgstr "" +msgstr "Gestión de seguimientos" #. module: base #: model:ir.module.module,description:base.module_l10n_fr @@ -14238,6 +15663,11 @@ msgid "" "\n" "Credits: Sistheo Zeekom CrysaLEAD\n" msgstr "" +"\n" +"Este módulo gestiona el plan de cuentas para Francia en OpenERP.\n" +"====================================================\n" +"\n" +"Créditos: Sistheo Zeekom CrysaLEAD\n" #. module: base #: selection:base.language.install,lang:0 @@ -14272,12 +15702,12 @@ msgstr "" #. module: base #: selection:ir.mail_server,smtp_encryption:0 msgid "TLS (STARTTLS)" -msgstr "" +msgstr "TLS (STARTTLS)" #. module: base #: help:ir.actions.act_window,usage:0 msgid "Used to filter menu and home actions from the user form." -msgstr "" +msgstr "Used para filtrar menús y acciones del usuario." #. module: base #: model:res.country,name:base.sa @@ -14288,11 +15718,13 @@ msgstr "Arabia Saudí" #: help:res.company,rml_header1:0 msgid "Appears by default on the top right corner of your printed documents." msgstr "" +"Aparece por defecto en la esquina superior derecha de los documentos " +"impresos." #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail_crm_claim msgid "eMail Gateway for CRM Claim" -msgstr "" +msgstr "Pasarela e-mail para las reclamaciones CRM" #. module: base #: help:res.partner,supplier:0 @@ -14358,6 +15790,9 @@ msgid "" "later is slower than the former but forbids any gap in the sequence (while " "they are possible in the former)." msgstr "" +"Se ofrecen dos implementaciones de objetos secuencia: 'Estándar' y 'Sin " +"huecos'. La última es más lenta que la primera, pero prohíbe cualquier hueco " +"en la secuencia (mientras que son posibles en la primera)." #. module: base #: model:res.country,name:base.gn @@ -14392,12 +15827,12 @@ msgstr "" #. module: base #: model:ir.module.module,description:base.module_auth_openid msgid "Allow users to login through OpenID." -msgstr "" +msgstr "Permite a los usuarios conectarse a través de OpenID." #. module: base #: model:ir.module.module,shortdesc:base.module_account_payment msgid "Suppliers Payment Management" -msgstr "" +msgstr "Gestión de pagos de proveedores" #. module: base #: model:res.country,name:base.sv @@ -14435,11 +15870,19 @@ msgid "" "After installing the module, it adds a menu to define a custom report in\n" "the Administration / Customization / Reporting menu.\n" msgstr "" +"\n" +"Este módulo permite crear cualquier informe estadístico en varios objetos.\n" +"==========================================================\n" +"\n" +"Es un constructor de consultas SQL y un navegador para usuarios finales.\n" +"\n" +"Después de la instalación del módulo, añade un menú para definir informes " +"personalizados en Configuración / Personalización / Informes.\n" #. module: base #: model:ir.module.module,shortdesc:base.module_report_designer msgid "Report Designer" -msgstr "" +msgstr "Diseñador de informes" #. module: base #: model:ir.ui.menu,name:base.menu_address_book @@ -14461,6 +15904,9 @@ msgid "" "cumulatif...). L'intégration comptable a été validé avec l'aide du Cabinet " "d'expertise comptable Seddik au cours du troisième trimestre 2010" msgstr "" +"\n" +"Módulo base para la gestión del plan de cuentas de Marruecos.\n" +"==================================================" #. module: base #: model:ir.module.module,description:base.module_web_calendar @@ -14469,6 +15915,9 @@ msgid "" " OpenERP Web calendar view.\n" " " msgstr "" +"\n" +" Vista calendario de OpenERP web.\n" +" " #. module: base #: model:ir.ui.menu,name:base.menu_crm_config_lead @@ -14496,6 +15945,8 @@ msgstr "Y" msgid "" "Database identifier of the record to which this applies. 0 = for all records" msgstr "" +"Identificador de base de datos del registro al que se le aplica. 0 = para " +"todos los registros" #. module: base #: field:ir.model.fields,relation:0 @@ -14505,7 +15956,7 @@ msgstr "Objeto relación" #. module: base #: model:ir.module.module,shortdesc:base.module_account_voucher msgid "eInvoicing & Payments" -msgstr "" +msgstr "Facturación electrónica y pagos" #. module: base #: view:ir.rule:0 @@ -14553,7 +16004,7 @@ msgstr "Objeto del recurso" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_helpdesk msgid "Helpdesk" -msgstr "" +msgstr "Asistencia/Ayuda" #. module: base #: model:ir.actions.act_window,help:base.grant_menu_access @@ -14578,7 +16029,7 @@ msgstr "Campo hijo" #. module: base #: view:ir.rule:0 msgid "Detailed algorithm:" -msgstr "" +msgstr "Algoritmo detallado" #. module: base #: field:ir.actions.act_window,usage:0 @@ -14599,7 +16050,7 @@ msgstr "workflow.workitem" #. module: base #: model:ir.module.module,shortdesc:base.module_profile_tools msgid "Miscellaneous Tools" -msgstr "" +msgstr "Herramientas varias" #. module: base #: model:ir.module.category,description:base.module_category_tools @@ -14607,6 +16058,8 @@ msgid "" "Lets you install various interesting but non-essential tools like Survey, " "Lunch and Ideas box." msgstr "" +"Permite instalar varias herramientas interesantes pero no esenciales como " +"Informes, Comidas y caja de Ideas." #. module: base #: selection:ir.module.module,state:0 @@ -14637,6 +16090,26 @@ msgid "" "Print product labels with barcode.\n" " " msgstr "" +"\n" +"Éste es el módulo base para administrar productos y tarifas en OpenERP.\n" +"=========================================================\n" +"\n" +"Los productos permiten variantes, diferentes métodos de precio, información " +"del proveedor, métodos de stock, diferentes unidades de medida, empaquetado " +"y propiedades.\n" +"\n" +"Soporte de tarifas:\n" +" * Múltiples niveles de descuento (por producto, categoría, cantidades).\n" +" * Calcular el precio basado en diferentes criterios:\n" +" * Otras tarifas,\n" +" * Precio de coste,\n" +" * PVP,\n" +" * Precio del proveedor, ...\n" +"\n" +"Las tarifas se establecen por producto y/o empresa.\n" +"\n" +"Imprime etiquetas de productos con código de barras.\n" +" " #. module: base #: report:ir.module.reference.graph:0 @@ -14657,17 +16130,17 @@ msgstr "No puede suprimir el campo '%s' !" #. module: base #: view:res.users:0 msgid "Allowed Companies" -msgstr "" +msgstr "Compañías permitidas" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_de msgid "Deutschland - Accounting" -msgstr "" +msgstr "Alemania - Contabilidad" #. module: base #: model:ir.module.module,shortdesc:base.module_auction msgid "Auction Houses" -msgstr "" +msgstr "Casas de subastas" #. module: base #: field:ir.ui.menu,web_icon:0 @@ -14683,7 +16156,7 @@ msgstr "Aplicar actualizaciones programadas" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_journal msgid "Invoicing Journals" -msgstr "" +msgstr "Diarios de facturación" #. module: base #: selection:base.language.install,lang:0 @@ -14730,6 +16203,15 @@ msgid "" "Add \"Support\" button in header from where you can access OpenERP Support.\n" " " msgstr "" +"\n" +"Habilita soporte por chat en directo con aquellos con los que tiene un " +"contrato de mantenimiento\n" +"=============================================================================" +"\n" +"\n" +"Añade el botón \"Soporte\" en la cabecera desde el que se puede acceder al " +"soporte OpenERP.\n" +" " #. module: base #: model:ir.model,name:base.model_base_module_configuration @@ -14744,6 +16226,10 @@ msgid "" " This module provides the core of the OpenERP web client.\n" " " msgstr "" +"\n" +" Núcleo de OpenERP web.\n" +" Este módulo provee el núcleo del cliente web OpenERP.\n" +" " #. module: base #: sql_constraint:res.country:0 @@ -14781,7 +16267,7 @@ msgstr "Aruba" #: code:addons/base/module/wizard/base_module_import.py:60 #, python-format msgid "File is not a zip file!" -msgstr "" +msgstr "¡El archivo no es un archivo zip!" #. module: base #: model:res.country,name:base.ar @@ -14801,6 +16287,15 @@ msgid "" "and decide on their status as they evolve.\n" " " msgstr "" +"\n" +"Este módulo provee gestión de incidencias/errores en el proyecto\n" +"====================================================\n" +"\n" +"OpenERP permite gestionar las incidencias que se encuentre en un proyecto, " +"como fallos en un sistema, quejas del cliente o roturas de stock. Una lista " +"permite al responsable comprobar rápidamente las incidencias, asignarlas y " +"decidir a qué estado evolucionan.\n" +" " #. module: base #: field:res.groups,full_name:0 @@ -14815,7 +16310,7 @@ msgstr "Bahréin" #. module: base #: model:ir.module.module,shortdesc:base.module_web msgid "web" -msgstr "" +msgstr "web" #. module: base #: field:res.bank,fax:0 @@ -14863,6 +16358,11 @@ msgid "" "\n" " " msgstr "" +"\n" +"Módulo para administrar los planes contables de Holanda en OpenERP.\n" +"=======================================================\n" +"\n" +" " #. module: base #: view:res.partner.address:0 @@ -14889,7 +16389,7 @@ msgstr "Compañía" #. module: base #: model:ir.module.category,name:base.module_category_report_designer msgid "Advanced Reporting" -msgstr "" +msgstr "Informes avanzados" #. module: base #: selection:ir.actions.act_window,target:0 @@ -14920,7 +16420,7 @@ msgstr "Servicio de Post-venta" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr msgid "France - Accounting" -msgstr "" +msgstr "Francia - Contabilidad" #. module: base #: view:ir.actions.todo:0 @@ -14930,7 +16430,7 @@ msgstr "Lanzar" #. module: base #: model:ir.module.module,shortdesc:base.module_caldav msgid "Share Calendar using CalDAV" -msgstr "" +msgstr "Compartir calendario usando CalDAV" #. module: base #: field:ir.actions.act_window,limit:0 @@ -14950,6 +16450,7 @@ msgstr "" #, python-format msgid "Serialization field `%s` not found for sparse field `%s`!" msgstr "" +"¡No se ha encontrado el campo de serialización `%s` para el campo `%s`!" #. module: base #: model:res.country,name:base.jm @@ -14960,7 +16461,7 @@ msgstr "Jamaica" #: field:res.partner,color:0 #: field:res.partner.address,color:0 msgid "Color Index" -msgstr "" +msgstr "Índice de colores" #. module: base #: model:ir.actions.act_window,help:base.action_partner_category_form @@ -14990,12 +16491,12 @@ msgstr "Aviso" #. module: base #: model:ir.module.module,shortdesc:base.module_edi msgid "Electronic Data Interchange (EDI)" -msgstr "" +msgstr "Intercambio Electronico de Datos (EDI)" #. module: base #: model:ir.module.category,name:base.module_category_tools msgid "Extra Tools" -msgstr "" +msgstr "Herramientas extra" #. module: base #: model:res.country,name:base.vg @@ -15068,7 +16569,7 @@ msgstr "Checo / Čeština" #. module: base #: model:ir.module.category,name:base.module_category_generic_modules msgid "Generic Modules" -msgstr "" +msgstr "Módulos genéricos" #. module: base #: model:ir.actions.act_window,help:base.action_partner_supplier_form @@ -15107,11 +16608,25 @@ msgid "" "to set up a management by affair.\n" " " msgstr "" +"\n" +"Este módulo implementa un sistema de hojas de asistencia.\n" +"==============================================\n" +"\n" +"Cada empleado puede introducir y seguir el tiempo gastado en los diferentes " +"proyectos. Un proyecto es una cuenta analitica y el tiempo gastado en un " +"proyecto genera un coste en la cuenta analítica.\n" +"\n" +"Se proveen multitud e informes de seguimiento de tiempo y del empleado.\n" +"\n" +"Está completamente integrado con el módulo de contabilidad de costes. " +"Permite establecer una gestión por asunto.\n" +" " #. module: base #: help:ir.mail_server,smtp_port:0 msgid "SMTP Port. Usually 465 for SSL, and 25 or 587 for other cases." msgstr "" +"Puerto SMTP. Habitualmente 465 para SSL, y 25 o 587 para otros casos." #. module: base #: view:ir.sequence:0 @@ -15186,11 +16701,13 @@ msgid "" "Helps you handle your accounting needs, if you are not an accountant, we " "suggest you to install only the Invoicing." msgstr "" +"Le ayuda a manejar sus necesidades contables. Si no es un contable, le " +"recomendamos que sólo instale el módulo 'invoicing'." #. module: base #: model:ir.module.module,shortdesc:base.module_plugin_thunderbird msgid "Thunderbird Plug-In" -msgstr "" +msgstr "Conector Thunderbird" #. module: base #: model:ir.model,name:base.model_res_country @@ -15208,7 +16725,7 @@ msgstr "País" #. module: base #: model:ir.module.module,shortdesc:base.module_project_messages msgid "In-Project Messaging System" -msgstr "" +msgstr "Sistema de mensajes en proyectos" #. module: base #: model:res.country,name:base.pn @@ -15222,11 +16739,14 @@ msgid "" " OpenERP Web test suite.\n" " " msgstr "" +"\n" +" Suite de pruebas de OpenERP web.\n" +" " #. module: base #: view:ir.values:0 msgid "Action Bindings/Defaults" -msgstr "" +msgstr "Enlaces de acción/Valores por defecto" #. module: base #: view:ir.rule:0 @@ -15241,7 +16761,7 @@ msgstr "" #: view:res.partner:0 #: view:res.partner.address:0 msgid "Change Color" -msgstr "" +msgstr "Cambiar color" #. module: base #: model:res.partner.category,name:base.res_partner_category_15 @@ -15280,7 +16800,7 @@ msgstr "" #. module: base #: field:ir.module.module,auto_install:0 msgid "Automatic Installation" -msgstr "" +msgstr "Instalación automática" #. module: base #: model:res.country,name:base.jp @@ -15349,7 +16869,7 @@ msgstr "ir.acciones.server" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ca msgid "Canada - Accounting" -msgstr "" +msgstr "Canada - Contabilidad" #. module: base #: model:ir.actions.act_window,name:base.act_ir_actions_todo_form @@ -15383,12 +16903,12 @@ msgstr "Ubicación" #. module: base #: field:ir.sequence,implementation:0 msgid "Implementation" -msgstr "" +msgstr "Implementación" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ve msgid "Venezuela - Accounting" -msgstr "" +msgstr "Venezuela - Contabilidad" #. module: base #: model:res.country,name:base.cl @@ -15410,7 +16930,7 @@ msgstr "Condición" #. module: base #: help:res.currency,rate:0 msgid "The rate of the currency to the currency of rate 1." -msgstr "" +msgstr "El tipo de la moneda a la moneda de tipo 1." #. module: base #: field:ir.ui.view,name:0 @@ -15420,12 +16940,12 @@ msgstr "Nombre de la vista" #. module: base #: model:ir.module.module,shortdesc:base.module_document_ftp msgid "Shared Repositories (FTP)" -msgstr "" +msgstr "Repositorios compartidos (FTP)" #. module: base #: model:ir.model,name:base.model_res_groups msgid "Access Groups" -msgstr "" +msgstr "Grupos de acceso" #. module: base #: selection:base.language.install,lang:0 @@ -15499,7 +17019,7 @@ msgstr "Cuentas bancarias" #: field:ir.model,modules:0 #: field:ir.model.fields,modules:0 msgid "In modules" -msgstr "" +msgstr "En los módulos" #. module: base #: model:res.country,name:base.sl @@ -15520,7 +17040,7 @@ msgstr "Islas Turcas y Caicos" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail_project_issue msgid "eMail Gateway for Project Issues" -msgstr "" +msgstr "Pasarela e-mail para las incidencias de proyecto" #. module: base #: field:res.partner.bank,partner_id:0 @@ -15544,6 +17064,8 @@ msgid "" "Helps you manage your manufacturing processes and generate reports on those " "processes." msgstr "" +"Le ayuda a gestionar sus procesos de fabricación y generar informes sobre " +"estos procesos." #. module: base #: help:ir.sequence,number_increment:0 @@ -15576,6 +17098,8 @@ msgid "" "Manage relations with prospects and customers using leads, opportunities, " "requests or issues." msgstr "" +"Administra relaciones con los prospectos y clientes usando iniciativas, " +"oportunidades, peticiones o incidencias." #. module: base #: selection:res.partner.address,type:0 @@ -15591,7 +17115,7 @@ msgstr "S.A." #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_requisition msgid "Purchase Requisitions" -msgstr "" +msgstr "Solicitudes de compra" #. module: base #: selection:ir.cron,interval_type:0 @@ -15612,7 +17136,7 @@ msgstr "Empresas: " #. module: base #: field:res.partner.bank,name:0 msgid "Bank Account" -msgstr "" +msgstr "Cuenta bancaria" #. module: base #: model:res.country,name:base.kp @@ -15633,12 +17157,12 @@ msgstr "Contexto" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_mrp msgid "Sales and MRP Management" -msgstr "" +msgstr "Gestión de ventas y MRP" #. module: base #: model:ir.actions.act_window,name:base.action_partner_sms_send msgid "Send an SMS" -msgstr "" +msgstr "Enviar un SMS" #. module: base #: model:res.partner.category,name:base.res_partner_category_1 @@ -15648,7 +17172,7 @@ msgstr "Prospección" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_invoice_directly msgid "Invoice Picking Directly" -msgstr "" +msgstr "Facturar albarán directamente" #. module: base #: selection:base.language.install,lang:0 @@ -15666,6 +17190,13 @@ msgid "" "are accessible if installed.\n" " " msgstr "" +"\n" +"Base común para los módulos de herramientas.\n" +"=====================================\n" +"\n" +"Crea un enlace de menú para \"Herramientas\", donde módulos como survey, " +"lunch, idea, etc. son accesibles si están instalados.\n" +" " #. module: base #: field:ir.exports,name:0 @@ -15693,6 +17224,8 @@ msgid "" "This field is computed automatically based on bank accounts defined, having " "the display on footer checkbox set." msgstr "" +"Este campo es calculado automáticamente basado en las cuentas bancarias " +"definidas, teniendo la visualización en el conjunto de casilla del pie." #. module: base #: model:ir.module.module,description:base.module_mrp_subproduct diff --git a/openerp/addons/base/i18n/es_AR.po b/openerp/addons/base/i18n/es_AR.po index 7c79b0d85e9..67e32ee48c5 100644 --- a/openerp/addons/base/i18n/es_AR.po +++ b/openerp/addons/base/i18n/es_AR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:05+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:15+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/es_CL.po b/openerp/addons/base/i18n/es_CL.po index 4a5b156a075..5d7020f3962 100644 --- a/openerp/addons/base/i18n/es_CL.po +++ b/openerp/addons/base/i18n/es_CL.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:05+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:15+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/es_CR.po b/openerp/addons/base/i18n/es_CR.po index 8190438a02d..d2ecdd97520 100644 --- a/openerp/addons/base/i18n/es_CR.po +++ b/openerp/addons/base/i18n/es_CR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:06+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:16+0000\n" +"X-Generator: Launchpad (build 16251)\n" "Language: \n" #. module: base diff --git a/openerp/addons/base/i18n/es_EC.po b/openerp/addons/base/i18n/es_EC.po index b71c0857970..a2295c7c061 100644 --- a/openerp/addons/base/i18n/es_EC.po +++ b/openerp/addons/base/i18n/es_EC.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-06 04:50+0000\n" -"X-Generator: Launchpad (build 16232)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:16+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/es_MX.po b/openerp/addons/base/i18n/es_MX.po index 6b6aa6d4603..58789752869 100644 --- a/openerp/addons/base/i18n/es_MX.po +++ b/openerp/addons/base/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:06+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:16+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/et.po b/openerp/addons/base/i18n/et.po index 65ac2944ffa..5a01621c43d 100644 --- a/openerp/addons/base/i18n/et.po +++ b/openerp/addons/base/i18n/et.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:59+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:08+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/eu.po b/openerp/addons/base/i18n/eu.po index 48a2c9244e6..ce8f0826d48 100644 --- a/openerp/addons/base/i18n/eu.po +++ b/openerp/addons/base/i18n/eu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:58+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:07+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/fa.po b/openerp/addons/base/i18n/fa.po index ea96a7b2707..ed79ae62a70 100644 --- a/openerp/addons/base/i18n/fa.po +++ b/openerp/addons/base/i18n/fa.po @@ -3,14 +3,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-08-20 15:53+0000\n" -"Last-Translator: avion \n" +"PO-Revision-Date: 2012-11-13 02:22+0000\n" +"Last-Translator: fshahy \n" "Language-Team: OpenERP Iran \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:02+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:11+0000\n" +"X-Generator: Launchpad (build 16251)\n" "X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n" "X-Poedit-Language: Persian\n" @@ -9654,7 +9654,7 @@ msgstr "" #: field:ir.model.fields,readonly:0 #: field:res.partner.bank.type.field,readonly:0 msgid "Readonly" -msgstr "تنها خواندنی" +msgstr "فقط خواندنی" #. module: base #: model:ir.module.module,description:base.module_crm_todo @@ -9681,7 +9681,7 @@ msgstr "" #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "To be installed" -msgstr "برای برپاسازی" +msgstr "برای نصب" #. module: base #: help:ir.actions.act_window,display_menu_tip:0 @@ -9956,12 +9956,12 @@ msgstr "بخش‌بندی" #. module: base #: field:res.lang,thousands_sep:0 msgid "Thousands Separator" -msgstr "جداساز هزارگانی" +msgstr "جداساز هزارگان" #. module: base #: field:res.request,create_date:0 msgid "Created Date" -msgstr "تاریخ پدیدن" +msgstr "تاریخ ایجاد" #. module: base #: view:ir.module.module:0 @@ -10027,7 +10027,7 @@ msgstr "" #. module: base #: field:ir.attachment,datas:0 msgid "File Content" -msgstr "محتوای پرونده" +msgstr "محتوای فایل" #. module: base #: model:res.country,name:base.pa @@ -10270,7 +10270,7 @@ msgstr "دوشیزه" #: field:ir.model.access,perm_write:0 #: view:ir.rule:0 msgid "Write Access" -msgstr "دستی نوشتن" +msgstr "دسترسی نوشتن" #. module: base #: view:res.lang:0 @@ -10608,13 +10608,13 @@ msgstr "" #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "Not Installed" -msgstr "برپاسازی نشده" +msgstr "نصب نشده" #. module: base #: view:workflow.activity:0 #: field:workflow.activity,out_transitions:0 msgid "Outgoing Transitions" -msgstr "گذارهای صادره" +msgstr "ترجمه های صادره" #. module: base #: field:ir.ui.menu,icon:0 @@ -10785,7 +10785,7 @@ msgstr "" #. module: base #: view:base.module.import:0 msgid "Import module" -msgstr "درونش پیمانه" +msgstr "درونش ماژول" #. module: base #: field:ir.actions.server,loop_action:0 @@ -10810,7 +10810,7 @@ msgstr "لائوس" #: field:res.company,email:0 #: field:res.users,user_email:0 msgid "Email" -msgstr "ایمیل" +msgstr "پست الکترونیک" #. module: base #: field:res.users,action_id:0 @@ -10932,7 +10932,7 @@ msgstr "3. %x ,%X ==> 12/05/08, 18:25:20" #. module: base #: selection:ir.model.fields,on_delete:0 msgid "Cascade" -msgstr "چینش" +msgstr "آبشاری" #. module: base #: field:workflow.transition,group_id:0 @@ -10959,7 +10959,7 @@ msgstr "" #. module: base #: view:ir.actions.configuration.wizard:0 msgid "Next Configuration Step" -msgstr "گام پیکربندی پسین" +msgstr "گام پیکربندی بعدی" #. module: base #: field:res.groups,comment:0 @@ -11083,7 +11083,7 @@ msgstr "" #. module: base #: model:res.country,name:base.by msgid "Belarus" -msgstr "روسیه‌ سفید" +msgstr "بلاروس" #. module: base #: field:ir.actions.act_window,name:0 @@ -11166,7 +11166,7 @@ msgstr "" #. module: base #: field:ir.actions.act_window,filter:0 msgid "Filter" -msgstr "پالایه" +msgstr "فیلتر" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam @@ -11229,7 +11229,7 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_workflow msgid "workflow" -msgstr "کارگردش" +msgstr "گردش کار" #. module: base #: code:addons/base/ir/ir_model.py:255 @@ -11414,7 +11414,7 @@ msgstr "پیمایش شمارگانی" #. module: base #: help:multi_company.default,field_id:0 msgid "Select field property" -msgstr "ویژگی فیلد را برگزینید" +msgstr "فیلد ویژگی را انتحاب کنید" #. module: base #: field:res.request.history,date_sent:0 @@ -11477,7 +11477,7 @@ msgstr "" #: view:ir.actions.server:0 #: model:ir.ui.menu,name:base.menu_server_action msgid "Server Actions" -msgstr "کُنش‌های کارپذیر" +msgstr "کُنش‌های سمت سرور" #. module: base #: field:res.partner.bank.type,format_layout:0 @@ -11884,7 +11884,7 @@ msgstr "4. %b, %B ==> Dec, December" #: view:base.language.install:0 #: model:ir.ui.menu,name:base.menu_view_base_language_install msgid "Load an Official Translation" -msgstr "بارگذاری یک برگردان رسمی" +msgstr "بارگذاری یک ترجمه رسمی" #. module: base #: view:res.currency:0 @@ -11894,7 +11894,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_10 msgid "Open Source Service Company" -msgstr "شرکت خدماتی بازمتن" +msgstr "شرکت خدماتی متن باز" #. module: base #: selection:base.language.install,lang:0 @@ -11938,7 +11938,7 @@ msgid "" "If set to true, the wizard will not be displayed on the right toolbar of a " "form view." msgstr "" -"اگر مقدار به درست تنظیم شده باشد، تَردست در سمت راست یک نمای فرمی نمایش داده " +"اگر مقدار به درست تنظیم شده باشد، ویزارد در سمت راست یک نمای فرمی نمایش داده " "نخواهد شد." #. module: base @@ -12069,7 +12069,7 @@ msgstr "" #. module: base #: selection:ir.translation,type:0 msgid "Selection" -msgstr "گزینش" +msgstr "انتخاب" #. module: base #: field:ir.module.module,icon:0 @@ -12221,7 +12221,7 @@ msgstr "ساعت ۰۰->۱۲: %(h12)s" #. module: base #: help:res.partner.address,active:0 msgid "Uncheck the active field to hide the contact." -msgstr "تیک فیلد فعال را برای مخفی شده تماس بردارد." +msgstr "تیک فیلد فعال را برای مخفی شدن تماس بردارید." #. module: base #: model:ir.model,name:base.model_res_widget_wizard @@ -12439,7 +12439,7 @@ msgstr "" #: view:base.module.upgrade:0 #: field:base.module.upgrade,module_info:0 msgid "Modules to update" -msgstr "پیمانه‌ها برای بروزرسانی" +msgstr "ماژول هایی که بروزرسانی می شوند" #. module: base #: help:ir.actions.server,sequence:0 @@ -12529,7 +12529,7 @@ msgstr "" #: view:ir.model.fields:0 #: field:ir.model.fields,translate:0 msgid "Translate" -msgstr "برگردانی" +msgstr "ترجمه" #. module: base #: model:ir.module.module,description:base.module_users_ldap @@ -12656,7 +12656,7 @@ msgstr "" #. module: base #: selection:base.language.export,state:0 msgid "choose" -msgstr "گزینش" +msgstr "انتخاب" #. module: base #: help:ir.model,osv_memory:0 @@ -12690,7 +12690,7 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_procurement_management_supplier_name #: view:res.partner:0 msgid "Suppliers" -msgstr "تامین‌کنندگان فرآورده" +msgstr "تامین‌کنندگان" #. module: base #: view:publisher_warranty.contract.wizard:0 @@ -12724,12 +12724,12 @@ msgstr "" #: model:res.groups,name:base.group_erp_manager #: view:res.users:0 msgid "Access Rights" -msgstr "حقوق دسترسی" +msgstr "سطوح دسترسی" #. module: base #: model:res.country,name:base.gl msgid "Greenland" -msgstr "گروئنلند" +msgstr "گرینلند" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads @@ -13043,7 +13043,7 @@ msgstr "منظره‌ای" #: model:ir.actions.todo.category,name:base.category_administration_config #: model:ir.module.category,name:base.module_category_administration msgid "Administration" -msgstr "راهبری" +msgstr "مدیریت" #. module: base #: view:base.module.update:0 @@ -13186,7 +13186,7 @@ msgstr "ir.sequence.type" #. module: base #: selection:base.language.export,format:0 msgid "CSV File" -msgstr "پرونده CSV" +msgstr "فایل CSV" #. module: base #: code:addons/base/res/res_company.py:154 @@ -13253,7 +13253,7 @@ msgstr "جیبوتی" #. module: base #: field:ir.translation,value:0 msgid "Translation Value" -msgstr "مقدار برگردان" +msgstr "مقدار ترجمه" #. module: base #: model:res.country,name:base.ag @@ -13284,7 +13284,7 @@ msgstr "شناسه منبع" #: view:ir.cron:0 #: field:ir.model,info:0 msgid "Information" -msgstr "آگهگان" +msgstr "اطلاعات" #. module: base #: view:res.widget.user:0 @@ -13576,12 +13576,12 @@ msgstr "راهنمای فنی" #. module: base #: view:res.company:0 msgid "Address Information" -msgstr "" +msgstr "اطلاعات آدرس" #. module: base #: model:res.country,name:base.tz msgid "Tanzania" -msgstr "تانزانیا، جمهوری متحد" +msgstr "تانزانیا" #. module: base #: selection:base.language.install,lang:0 @@ -13611,7 +13611,7 @@ msgstr "پیکربندی سایر کنش‌ها" #. module: base #: selection:ir.module.module.dependency,state:0 msgid "Uninstallable" -msgstr "غیر قابل برپاسازی" +msgstr "غیر قابل نصب" #. module: base #: model:ir.module.module,description:base.module_web_dashboard @@ -13634,7 +13634,7 @@ msgstr "" #. module: base #: view:ir.ui.view:0 msgid "Extra Info" -msgstr "" +msgstr "اطلاعات بیشتر" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll @@ -13683,7 +13683,7 @@ msgstr "" #. module: base #: view:res.request:0 msgid "Send" -msgstr "فرستادن" +msgstr "ارسال" #. module: base #: model:ir.module.module,description:base.module_process @@ -14130,7 +14130,7 @@ msgstr "" #. module: base #: selection:ir.module.module,state:0 msgid "Not Installable" -msgstr "غیرقابل برپاسازی" +msgstr "غیرقابل نصب" #. module: base #: model:ir.module.module,description:base.module_product @@ -14197,7 +14197,7 @@ msgstr "" #: view:base.module.upgrade:0 #: model:ir.ui.menu,name:base.menu_view_base_module_upgrade msgid "Apply Scheduled Upgrades" -msgstr "بکاربندی ارتقای زمان‌بندی‌شده" +msgstr "اعمال ارتقای زمان‌بندی‌شده" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_journal @@ -14207,7 +14207,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Persian / فارس" -msgstr "" +msgstr "Persian / فارسی" #. module: base #: view:ir.actions.act_window:0 @@ -14269,7 +14269,7 @@ msgstr "" #: field:base.language.export,name:0 #: field:ir.attachment,datas_fname:0 msgid "Filename" -msgstr "نام پرونده" +msgstr "نام فایل" #. module: base #: field:ir.model,access_ids:0 @@ -14296,7 +14296,7 @@ msgstr "آروبا" #: code:addons/base/module/wizard/base_module_import.py:60 #, python-format msgid "File is not a zip file!" -msgstr "" +msgstr "این فایل یک فابل zip نیست!" #. module: base #: model:res.country,name:base.ar @@ -14330,7 +14330,7 @@ msgstr "بحرین" #. module: base #: model:ir.module.module,shortdesc:base.module_web msgid "web" -msgstr "" +msgstr "وب" #. module: base #: field:res.bank,fax:0 @@ -14404,13 +14404,13 @@ msgstr "شرکت" #. module: base #: model:ir.module.category,name:base.module_category_report_designer msgid "Advanced Reporting" -msgstr "" +msgstr "گزارش گیری پیشرفته" #. module: base #: selection:ir.actions.act_window,target:0 #: selection:ir.actions.url,target:0 msgid "New Window" -msgstr "پنجره‌ نو" +msgstr "پنجره‌ جدید" #. module: base #: model:ir.model,name:base.model_ir_model_data @@ -14430,17 +14430,17 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_aftersale msgid "After-Sale Services" -msgstr "" +msgstr "خدمات پس از فروش" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr msgid "France - Accounting" -msgstr "" +msgstr "فرانسه - حسابداری" #. module: base #: view:ir.actions.todo:0 msgid "Launch" -msgstr "" +msgstr "بارگذاری" #. module: base #: model:ir.module.module,shortdesc:base.module_caldav @@ -14515,7 +14515,7 @@ msgstr "جزایر ویرجین انگلستان" #: view:ir.property:0 #: model:ir.ui.menu,name:base.next_id_15 msgid "Parameters" -msgstr "" +msgstr "پارامترها" #. module: base #: model:res.country,name:base.pm @@ -14631,7 +14631,7 @@ msgstr "جزایر کوک" #. module: base #: field:ir.model.data,noupdate:0 msgid "Non Updatable" -msgstr "بروزآوری نشدنی" +msgstr "غیرقابل به روزرسانی" #. module: base #: selection:base.language.install,lang:0 @@ -14744,7 +14744,7 @@ msgstr "" #: view:res.partner:0 #: view:res.partner.address:0 msgid "Change Color" -msgstr "" +msgstr "تغییر رنگ" #. module: base #: model:res.partner.category,name:base.res_partner_category_15 @@ -14754,7 +14754,7 @@ msgstr "بخش فن‌آوری اطلاعات" #. module: base #: view:ir.actions.act_window:0 msgid "Select Groups" -msgstr "گروه‌ها را برگزینید" +msgstr "گروه‌ها را انتحاب کنید" #. module: base #: view:res.lang:0 @@ -14782,7 +14782,7 @@ msgstr "" #. module: base #: field:ir.module.module,auto_install:0 msgid "Automatic Installation" -msgstr "" +msgstr "نصب خودکار" #. module: base #: model:res.country,name:base.jp @@ -14798,7 +14798,7 @@ msgstr "" #. module: base #: selection:ir.translation,type:0 msgid "Wizard Button" -msgstr "دکمه تردست" +msgstr "دکمه ویزارد" #. module: base #: selection:ir.translation,type:0 @@ -14851,7 +14851,7 @@ msgstr "ir.actions.server" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ca msgid "Canada - Accounting" -msgstr "" +msgstr "کانادا - حسابداری" #. module: base #: model:ir.actions.act_window,name:base.act_ir_actions_todo_form @@ -14860,7 +14860,7 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_ir_actions_todo_form #: model:ir.ui.menu,name:base.next_id_11 msgid "Configuration Wizards" -msgstr "تردست‌های پیکربندی" +msgstr "ویزارد پیکربندی" #. module: base #: field:res.lang,code:0 @@ -14890,7 +14890,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ve msgid "Venezuela - Accounting" -msgstr "" +msgstr "ونزوپلا - حسابداری" #. module: base #: model:res.country,name:base.cl @@ -14900,7 +14900,7 @@ msgstr "شیلی" #. module: base #: view:ir.cron:0 msgid "Execution" -msgstr "" +msgstr "اجرا" #. module: base #: field:ir.actions.server,condition:0 @@ -14954,7 +14954,7 @@ msgstr "کرواسی" #. module: base #: field:ir.actions.server,mobile:0 msgid "Mobile No" -msgstr "شماره همرا" +msgstr "شماره همراه" #. module: base #: model:ir.actions.act_window,name:base.action_partner_by_category @@ -14968,12 +14968,12 @@ msgstr "دسته‌بندی‌های همکار" #. module: base #: view:base.module.upgrade:0 msgid "System Update" -msgstr "" +msgstr "به روز رسانی سیستم" #. module: base #: selection:ir.translation,type:0 msgid "Wizard Field" -msgstr "فیلد تردست" +msgstr "فیلد ویزارد" #. module: base #: help:ir.sequence,prefix:0 @@ -14999,7 +14999,7 @@ msgstr "حساب‌های بانکی" #: field:ir.model,modules:0 #: field:ir.model.fields,modules:0 msgid "In modules" -msgstr "" +msgstr "در ماژولهای" #. module: base #: model:res.country,name:base.sl @@ -15010,7 +15010,7 @@ msgstr "سیرالئون" #: view:res.company:0 #: view:res.partner:0 msgid "General Information" -msgstr "آگهگان عمومی" +msgstr "اطلاعات عمومی" #. module: base #: model:res.country,name:base.tc @@ -15109,7 +15109,7 @@ msgstr "همکاران: " #. module: base #: field:res.partner.bank,name:0 msgid "Bank Account" -msgstr "" +msgstr "حساب بانکی" #. module: base #: model:res.country,name:base.kp @@ -15119,7 +15119,7 @@ msgstr "کره شمالی" #. module: base #: selection:ir.actions.server,state:0 msgid "Create Object" -msgstr "پدیدن شی" +msgstr "ایجاد شی" #. module: base #: view:ir.filters:0 @@ -15130,12 +15130,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_mrp msgid "Sales and MRP Management" -msgstr "" +msgstr "مدیریت فروش و تولید" #. module: base #: model:ir.actions.act_window,name:base.action_partner_sms_send msgid "Send an SMS" -msgstr "" +msgstr "ارسال پیامک" #. module: base #: model:res.partner.category,name:base.res_partner_category_1 diff --git a/openerp/addons/base/i18n/fa_AF.po b/openerp/addons/base/i18n/fa_AF.po index 6a155a6ce58..7dac533205e 100644 --- a/openerp/addons/base/i18n/fa_AF.po +++ b/openerp/addons/base/i18n/fa_AF.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:06+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:16+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/fi.po b/openerp/addons/base/i18n/fi.po index 3c499ca9d3f..52201adbb1b 100644 --- a/openerp/addons/base/i18n/fi.po +++ b/openerp/addons/base/i18n/fi.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:59+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:08+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index 7b6fa115b29..f11a703196e 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:59+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:08+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/gl.po b/openerp/addons/base/i18n/gl.po index 820d7f37cb1..0262056f841 100644 --- a/openerp/addons/base/i18n/gl.po +++ b/openerp/addons/base/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:00+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:09+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/gu.po b/openerp/addons/base/i18n/gu.po index 00eaa6f64a5..bd0a8742982 100644 --- a/openerp/addons/base/i18n/gu.po +++ b/openerp/addons/base/i18n/gu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:00+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:09+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh @@ -30,7 +30,7 @@ msgstr "બીજા કન્ફિગ્યુરેશન" #. module: base #: selection:ir.property,type:0 msgid "DateTime" -msgstr "દિવસ અને તારીખ" +msgstr "દિવસ અને સમય" #. module: base #: model:ir.module.module,shortdesc:base.module_project_mailgate @@ -51,7 +51,7 @@ msgstr "" #: field:ir.ui.view,arch:0 #: field:ir.ui.view.custom,arch:0 msgid "View Architecture" -msgstr "દૃશ્ય સ્થાપત્ય" +msgstr "સ્થાપત્ય જુઑ" #. module: base #: model:ir.module.module,description:base.module_project diff --git a/openerp/addons/base/i18n/he.po b/openerp/addons/base/i18n/he.po index fbf58c48406..c8aac9ad4fd 100644 --- a/openerp/addons/base/i18n/he.po +++ b/openerp/addons/base/i18n/he.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:00+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:09+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/hr.po b/openerp/addons/base/i18n/hr.po index c2c3af98f4b..6edb8171417 100644 --- a/openerp/addons/base/i18n/hr.po +++ b/openerp/addons/base/i18n/hr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:03+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:12+0000\n" +"X-Generator: Launchpad (build 16251)\n" "Language: hr\n" #. module: base diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index 9bf91fa43a0..556eda022cc 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:00+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:10+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh @@ -401,7 +401,7 @@ msgstr "Invalid group_by" #. module: base #: field:ir.module.category,child_ids:0 msgid "Child Applications" -msgstr "" +msgstr "Alárendelt/gyermek alkalmazások" #. module: base #: field:res.partner,credit_limit:0 @@ -436,7 +436,7 @@ msgstr "Forrás Objektum" #. module: base #: model:res.partner.bank.type,format_layout:base.bank_normal msgid "%(bank_name)s: %(acc_number)s" -msgstr "" +msgstr "%(bank_name)s: %(acc_number)s" #. module: base #: view:ir.actions.todo:0 @@ -466,6 +466,9 @@ msgid "" "Invalid date/time format directive specified. Please refer to the list of " "allowed directives, displayed when you edit a language." msgstr "" +"Nem létező dátum/idő utasítás formátum lett megadva. Kérjük hivatkozzon a " +"listában lévő utasítás formátumokra, mely a nyelv szerkesztése közben a " +"képernyőn látható." #. module: base #: code:addons/orm.py:3895 @@ -488,11 +491,13 @@ msgid "" "The user this filter is available to. When left empty the filter is usable " "by the system only." msgstr "" +"A felhasználó is használhatja ezt a szűrőt. Ha üresen hagyja akkor a szűrőt " +"csak a rendszer használhatja." #. module: base #: help:res.partner,website:0 msgid "Website of Partner." -msgstr "" +msgstr "A kapcsolat/partner weboldala" #. module: base #: help:ir.actions.act_window,views:0 @@ -502,6 +507,10 @@ msgid "" "and reference view. The result is returned as an ordered list of pairs " "(view_id,view_mode)." msgstr "" +"Ez a hivatkozási mező számítja ki a nézetek lista elrendezését amit be kell " +"kapcsolni, ha ki szeretnénk jelezni a művelet eredményét, összesített nézet " +"módot, nézeteket és a hivatkozási nézetet a képernyőre. Az eredményt " +"visszakapjuk, mint egy megrendelési páros lista (nézet_id,nézet_mód)." #. module: base #: model:res.country,name:base.tv @@ -521,7 +530,7 @@ msgstr "Dátum Formátum" #. module: base #: model:ir.module.module,shortdesc:base.module_base_report_designer msgid "OpenOffice Report Designer" -msgstr "" +msgstr "OpenOffice Jelentés Szerkesztő" #. module: base #: field:res.bank,email:0 @@ -552,7 +561,7 @@ msgstr "" #. module: base #: view:ir.values:0 msgid "Action Binding" -msgstr "" +msgstr "Művelet összekötés" #. module: base #: model:res.country,name:base.gf @@ -591,7 +600,7 @@ msgstr "Spanyol (VE)" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice msgid "Invoice on Timesheets" -msgstr "" +msgstr "Számlák az időkimutatásokon" #. module: base #: view:base.module.upgrade:0 @@ -627,6 +636,26 @@ msgid "" " Accounting/Reporting/Generic Reporting/Partners/Follow-ups Sent\n" "\n" msgstr "" +"\n" +"Modul az automata nem kiegyenlített számlák levelezéséhez, több-szintű " +"emlékeztetőkkel.\n" +"==========================================================================\n" +"\n" +"A menün keresztül meg tudja adni a többszintű emlékeztetőket:\n" +" Könyvelés/Beállítások/Egyebek/Nyomon-követés\n" +"Ha már meghatározott, akkor automatikussan nyomtathat emlékeztetőket minden " +"nap egyszerűen a menüre kettintva:\n" +" Könyvelés/Periódikus végrehajtás/Számlázás/Nyomon követés küldése\n" +"\n" +"PDF fájlt generál minden levélhez, \n" +"melyet a különböző ismétlődési szintekhez rendelt. \n" +"Mindegyik vállalathoz külön nyomtató eljárás rendelhető.\n" +"Levelet is küldhet az ügyfélnek.\n" +"\n" +"Figyelje meg, hogy a partner/számla belyegyzéshez tartozó nyomon-követési " +"szintet a menüből is ellenőrizheti:\n" +" Könyvelés/Jelentés/Általános jelentés/Partnerek/Nyomon-követés küldve\n" +"\n" #. module: base #: field:res.country,name:0 @@ -696,7 +725,7 @@ msgstr "Egyéni mező nevének 'x_'-el kell kezdődnie!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_mx msgid "Mexico - Accounting" -msgstr "" +msgstr "Mexico - Könyvelés" #. module: base #: help:ir.actions.server,action_id:0 @@ -716,7 +745,7 @@ msgstr "Exportálás kész." #. module: base #: model:ir.module.module,shortdesc:base.module_plugin_outlook msgid "Outlook Plug-In" -msgstr "" +msgstr "Outlook Plug-In" #. module: base #: view:ir.model:0 @@ -745,7 +774,7 @@ msgstr "Jordánia" #. module: base #: help:ir.cron,nextcall:0 msgid "Next planned execution date for this job." -msgstr "" +msgstr "Ennek a munkának a következő tervezett végrehajtási dátuma." #. module: base #: code:addons/base/ir/ir_model.py:139 @@ -761,7 +790,7 @@ msgstr "Eritrea" #. module: base #: sql_constraint:res.company:0 msgid "The company name must be unique !" -msgstr "" +msgstr "A válláalkozás nevének egyedinek kell lennie" #. module: base #: view:res.config:0 @@ -778,7 +807,7 @@ msgstr "Automatizált műveletek" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ro msgid "Romania - Accounting" -msgstr "" +msgstr "Romania - Könyvelés" #. module: base #: view:partner.wizard.ean.check:0 @@ -799,7 +828,7 @@ msgstr "" #. module: base #: view:ir.mail_server:0 msgid "Security and Authentication" -msgstr "" +msgstr "Biztonság és Hitelesítés" #. module: base #: view:base.language.export:0 @@ -819,6 +848,10 @@ msgid "" "Launch Manually Once: after hacing been launched manually, it sets " "automatically to Done." msgstr "" +"Kézi: Kézell elindított.\n" +"Automatikus: A rendszer újrakonfigurációinál mindíg futtatva lesz.\n" +"Egyseri futtatás kézzel: Kézzel való elindítás után, autómatán elvégzettre " +"állítva." #. module: base #: selection:base.language.install,lang:0 @@ -889,7 +922,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_document_webdav msgid "Shared Repositories (WebDAV)" -msgstr "" +msgstr "Megosztott tárterület (WebDAV)" #. module: base #: model:ir.module.module,description:base.module_import_google @@ -897,11 +930,13 @@ msgid "" "The module adds google contact in partner address and add google calendar " "events details in Meeting" msgstr "" +"A modul a google kapcsolatokat a partner címekhez adja valamint a google " +"naptár bejegyzés részletit a Találkozókhoz" #. module: base #: view:res.users:0 msgid "Email Preferences" -msgstr "" +msgstr "Email preferencia" #. module: base #: model:ir.module.module,description:base.module_audittrail @@ -916,6 +951,15 @@ msgid "" "delete on objects and can check logs.\n" " " msgstr "" +"\n" +"A modul az adminisztrátor számára nyomonkövetést biztosít minden " +"felhasználói művelethez minden rendszer objektumra vonatkozólag.\n" +"=============================================================================" +"==============\n" +"\n" +"Az adminisztrátor feliratozhat az objektum olvasási, írási és törlési " +"szabályhoz és ellenőrizheti a naplót.\n" +" " #. module: base #: model:res.partner.category,name:base.res_partner_category_4 @@ -978,7 +1022,7 @@ msgstr "Omán" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp msgid "MRP" -msgstr "" +msgstr "MRP" #. module: base #: report:ir.module.reference.graph:0 @@ -993,7 +1037,7 @@ msgstr "Niue" #. module: base #: model:ir.module.module,shortdesc:base.module_membership msgid "Membership Management" -msgstr "" +msgstr "Tagok adatkezelése" #. module: base #: selection:ir.module.module,license:0 @@ -1020,7 +1064,7 @@ msgstr "Hivatkozás típusok kérése" #. module: base #: model:ir.module.module,shortdesc:base.module_google_base_account msgid "Google Users" -msgstr "" +msgstr "Google felhasználók" #. module: base #: help:ir.server.object.lines,value:0 @@ -1057,6 +1101,8 @@ msgstr "TGZ Archívum" msgid "" "Users added to this group are automatically added in the following groups." msgstr "" +"Ehhez a csoporthoz adott felhasználók automatikussan hozzá lesznek rendelve " +"a következő csoportokhoz." #. module: base #: view:res.lang:0 @@ -1083,7 +1129,7 @@ msgstr "Típus" #. module: base #: field:ir.mail_server,smtp_user:0 msgid "Username" -msgstr "" +msgstr "Felhasználó név" #. module: base #: code:addons/orm.py:398 @@ -1110,7 +1156,7 @@ msgstr "Üres jelszó beállítása biztonsági okokból nem engedélyezett!" #: code:addons/base/ir/ir_mail_server.py:192 #, python-format msgid "Connection test failed!" -msgstr "" +msgstr "Csatlakozás teszt nem sikerült!" #. module: base #: selection:ir.actions.server,state:0 @@ -1231,12 +1277,12 @@ msgstr "Spanyol (GT) / Español (GT)" #. module: base #: field:ir.mail_server,smtp_port:0 msgid "SMTP Port" -msgstr "" +msgstr "SMTP Port" #. module: base #: model:ir.module.module,shortdesc:base.module_import_sugarcrm msgid "SugarCRM Import" -msgstr "" +msgstr "SugarCRM Import" #. module: base #: view:res.lang:0 @@ -1252,12 +1298,12 @@ msgstr "" #: code:addons/base/module/wizard/base_language_install.py:55 #, python-format msgid "Language Pack" -msgstr "" +msgstr "Nyelvi csomag" #. module: base #: model:ir.module.module,shortdesc:base.module_web_tests msgid "Tests" -msgstr "" +msgstr "Teszts" #. module: base #: field:ir.ui.view_sc,res_id:0 @@ -1318,7 +1364,7 @@ msgstr "" #. module: base #: field:ir.module.category,parent_id:0 msgid "Parent Application" -msgstr "" +msgstr "Szülő alkalmazás" #. module: base #: code:addons/base/res/res_users.py:222 @@ -1335,12 +1381,12 @@ msgstr "Új nyelv exportálásához ne válasszon ki nyelvet." #: model:ir.module.module,shortdesc:base.module_document #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Document Management System" -msgstr "" +msgstr "Dokumentum kezelési rendszer" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_claim msgid "Claims Management" -msgstr "" +msgstr "Igények kezelése" #. module: base #: model:ir.ui.menu,name:base.menu_purchase_root @@ -1365,6 +1411,10 @@ msgid "" "use the accounting application of OpenERP, journals and accounts will be " "created automatically based on these data." msgstr "" +"A vállalata bank számláinak beállítása és a jelentés lábjegyzetben " +"megjelenítani kívánt számla kiválasztása. A bankszámokat újrarendezheti a " +"lista nézetből. Ha használja az OpenERP könyvelését akkor naplók és " +"folyószámlák lesznek létrehozva automatikussan ezekből az adatokból." #. module: base #: view:ir.module.module:0 @@ -1384,11 +1434,19 @@ msgid "" " * Commitment Date\n" " * Effective Date\n" msgstr "" +"\n" +"Kiegészítő dátum információs adatokat ad a megrendeléshez.\n" +"===================================================\n" +"\n" +"A következő kiegészítő adatokat adhatja a megrendeléshez:\n" +" * Igényelt dátum\n" +" * Elvállalt/elkötelezett dátum\n" +" * Tényleges Date\n" #. module: base #: model:ir.module.module,shortdesc:base.module_account_sequence msgid "Entries Sequence Numbering" -msgstr "" +msgstr "Tételsorszámozás" #. module: base #: model:ir.model,name:base.model_ir_exports @@ -1425,6 +1483,26 @@ msgid "" "database,\n" " but in the servers rootpad like /server/bin/filestore.\n" msgstr "" +"\n" +"Ez egy teljes dokumentum kezelő rendszer.\n" +"==============================================\n" +"\n" +" * Felhasználó hitelesítés\n" +" * Documentum Indexálás :- .pptx és .docx fájlok nem támogatottak Windows " +"rendszerekben.\n" +" * Dashboard dokumentumokhoz mely magában foglalja:\n" +" * Új fájlok (lista)\n" +" * Fájlok forrás tipusa szerint (grafikon)\n" +" * Fájlok partnerek zerint (grafokon)\n" +" * Fájlok nagysága havi lebontásban (grafokon)\n" +"\n" +"FIGYELEM:\n" +" - Ha telepíti ezt a modult egy már meglévő vállalatra melyre már van PDF " +"fájl tárolva az adatbázisban,\n" +" akkor azt az összeset el fogja veszíteni.\n" +" - Miután telepítette a modult a PDF-ek már nem az adatbázisban lesznek " +"tárolva, \n" +" hanem a server győkerében mint /server/bin/filestore.\n" #. module: base #: view:res.lang:0 @@ -1438,6 +1516,9 @@ msgid "" " OpenERP Web gantt chart view.\n" " " msgstr "" +"\n" +" OpenERP Web gantt diagram nézet.\n" +" " #. module: base #: report:ir.module.reference.graph:0 @@ -1490,6 +1571,15 @@ msgid "" "Web.\n" " " msgstr "" +"\n" +"Ez a teszt modul megmutatja a HTML cimke támogatást normal XML forma " +"nézetben.\n" +"=============================================================================" +"\n" +"\n" +"Minta forma-nézetet hoz létre HTML cimkékkel. Kizárólag OpenERP Web-el " +"tekinthető meg.\n" +" " #. module: base #: model:ir.module.category,description:base.module_category_purchase_management @@ -1497,6 +1587,8 @@ msgid "" "Helps you manage your purchase-related processes such as requests for " "quotations, supplier invoices, etc..." msgstr "" +"Segít Önnek a beszerzéshez kapcsolódó folyamatainak kezelésében, mint " +"például ajánlatkérések, szállítói számlák, stb..." #. module: base #: help:base.language.install,overwrite:0 @@ -1555,7 +1647,7 @@ msgstr "Bejelentkező név" #: model:ir.actions.act_window,name:base.action_wizard_update_translations #: model:ir.ui.menu,name:base.menu_wizard_update_translations msgid "Synchronize Terms" -msgstr "" +msgstr "Feltételek szinkronizáása" #. module: base #: view:ir.actions.server:0 @@ -1583,6 +1675,19 @@ msgid "" " - You can define new types of events in\n" " Association / Configuration / Types of Events\n" msgstr "" +"\n" +"Rendezvények szervezése és kezelése.\n" +"======================================\n" +"\n" +"Ez a modul lehetővé teszi\n" +" * az rendezvényel szervezését és nyilvántartásait\n" +" * automatikus elfogadó és visszaigazoló emailek használatát és küldését " +"bármely bejegyzett eseményre\n" +" * ...\n" +"\n" +"Vegye figyelembe:\n" +" - Új tipusú eseményt definiálhat itt\n" +" Asszociáció,összekapcsolás / Beállítások / Rendezvény típusa\n" #. module: base #: model:ir.ui.menu,name:base.menu_tools @@ -1598,7 +1703,7 @@ msgstr "Lebegőpontos" #: model:ir.module.category,name:base.module_category_warehouse_management #: model:ir.module.module,shortdesc:base.module_stock msgid "Warehouse Management" -msgstr "" +msgstr "Raktár kezelés" #. module: base #: model:ir.model,name:base.model_res_request_link @@ -1629,7 +1734,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_lu msgid "Luxembourg - Accounting" -msgstr "" +msgstr "Luxembourg - Könyvelés" #. module: base #: model:res.country,name:base.tp @@ -1687,6 +1792,26 @@ msgid "" "\n" " " msgstr "" +"\n" +"Ez a modul általános megoszó eszköz a meglévő OpenERP adatbázishoz.\n" +"========================================================================\n" +"\n" +"Kifejezetten hozzáad egy 'megoszt' kapcsológombot a Web clienshez, mellyel " +"bármely \n" +"OpenERP adat megosztható a kollégákkal, ügyfelekkel, barátokkal, stb.\n" +"\n" +"A rendszer úgy fog működni, hogy folyamatosan létrehoz új felhasználókat és " +"csoportokat, melyek\n" +"hozzáférési jogosultségainak kombinációival és ir.jogosultságokkal ahhoz, " +"hogy\n" +"biztosítva legyen, a megosztott adatot csak azok a felhasználók " +"használhassák akikkel\n" +"az meg lett osztva.\n" +"\n" +"Ez nagyon kihasználható egy közös munkában, ismeret átadásban, másik\n" +"vállalat szinkronizációjánál, stb.\n" +"\n" +" " #. module: base #: field:res.currency,accuracy:0 @@ -1703,6 +1828,13 @@ msgid "" " Apply Different Category for the product.\n" " " msgstr "" +"\n" +" Alap modul az ebédpénz nyilvántartásához\n" +"\n" +" nyilvántartja az ebéd rendelést, a pénz mozgást, kézi pénztárat, " +"terméket.\n" +" Különböző kategória alkalmazása a termékhez.\n" +" " #. module: base #: model:res.country,name:base.kg @@ -1773,6 +1905,9 @@ msgid "" "simplified payment mode encoding, automatic picking lists generation and " "more." msgstr "" +"Segít Önnek, hogy a legtöbbet hozza ki az értékesítési helyeiből gyors " +"értékesítési kódolással, egyszerűsített fizetési mód kódolással, automatikus " +"csomaglisták generálásával, stb." #. module: base #: model:res.country,name:base.mv @@ -1808,27 +1943,28 @@ msgstr "Napok" #. module: base #: model:ir.module.module,shortdesc:base.module_web_rpc msgid "OpenERP Web web" -msgstr "" +msgstr "OpenERP Web web" #. module: base #: model:ir.module.module,shortdesc:base.module_html_view msgid "Html View" -msgstr "" +msgstr "Html nézet" #. module: base #: field:res.currency,position:0 msgid "Symbol position" -msgstr "" +msgstr "Szinbólum pozíció" #. module: base #: model:ir.module.module,shortdesc:base.module_process msgid "Enterprise Process" -msgstr "" +msgstr "Vállalati folyamat" #. module: base #: help:ir.cron,function:0 msgid "Name of the method to be called when this job is processed." msgstr "" +"A módszer hivatkozási neve ha ez a munkavégzés végrehajtás alatt van." #. module: base #: model:ir.module.module,shortdesc:base.module_hr_evaluation @@ -1850,7 +1986,7 @@ msgstr " (másolat)" #. module: base #: field:res.company,rml_footer1:0 msgid "General Information Footer" -msgstr "" +msgstr "Általános információ lábjegyzet" #. module: base #: view:res.lang:0 @@ -1872,7 +2008,7 @@ msgstr "Bal szülő" #. module: base #: model:ir.module.module,shortdesc:base.module_project_mrp msgid "Create Tasks on SO" -msgstr "" +msgstr "Munka végzés ezen a megrendelésen" #. module: base #: field:ir.attachment,res_model:0 @@ -1882,7 +2018,7 @@ msgstr "Csatolt modell" #. module: base #: field:res.partner.bank,footer:0 msgid "Display on Reports" -msgstr "" +msgstr "Megjenítés a jelentéseken" #. module: base #: model:ir.module.module,description:base.module_l10n_cn @@ -1957,7 +2093,7 @@ msgstr "%s (másolat)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_chart msgid "Template of Charts of Accounts" -msgstr "" +msgstr "Számlatükrők sablonjai" #. module: base #: field:res.partner.address,type:0 diff --git a/openerp/addons/base/i18n/hy.po b/openerp/addons/base/i18n/hy.po index dcfbd2a11cb..9304d12bf8a 100644 --- a/openerp/addons/base/i18n/hy.po +++ b/openerp/addons/base/i18n/hy.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:58+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:06+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/id.po b/openerp/addons/base/i18n/id.po index 6ea4d58e4b5..fc7ab7ef639 100644 --- a/openerp/addons/base/i18n/id.po +++ b/openerp/addons/base/i18n/id.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:01+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:10+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/is.po b/openerp/addons/base/i18n/is.po index 9ff3d927213..d839741a626 100644 --- a/openerp/addons/base/i18n/is.po +++ b/openerp/addons/base/i18n/is.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:01+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:10+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index 4d92bc2ce73..9bb77c82d4c 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:01+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:10+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/ja.po b/openerp/addons/base/i18n/ja.po index a158254951e..21d4eaeeb48 100644 --- a/openerp/addons/base/i18n/ja.po +++ b/openerp/addons/base/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:01+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:10+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/ka.po b/openerp/addons/base/i18n/ka.po index d4634812d04..ac98b5e7315 100644 --- a/openerp/addons/base/i18n/ka.po +++ b/openerp/addons/base/i18n/ka.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:59+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:09+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/kk.po b/openerp/addons/base/i18n/kk.po index 75e5eab826d..8b1aab64faa 100644 --- a/openerp/addons/base/i18n/kk.po +++ b/openerp/addons/base/i18n/kk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:01+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:10+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/ko.po b/openerp/addons/base/i18n/ko.po index 4d7bd7a3580..4b41554e49f 100644 --- a/openerp/addons/base/i18n/ko.po +++ b/openerp/addons/base/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:01+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:10+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/lt.po b/openerp/addons/base/i18n/lt.po index 69b8cade04d..8d83ba3a377 100644 --- a/openerp/addons/base/i18n/lt.po +++ b/openerp/addons/base/i18n/lt.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:02+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:11+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh @@ -24,17 +24,17 @@ msgstr "Šv. Elenos sala" #. module: base #: view:ir.actions.report.xml:0 msgid "Other Configuration" -msgstr "" +msgstr "Kiti nustatymai" #. module: base #: selection:ir.property,type:0 msgid "DateTime" -msgstr "" +msgstr "Data laikas" #. module: base #: model:ir.module.module,shortdesc:base.module_project_mailgate msgid "Tasks-Mail Integration" -msgstr "" +msgstr "Užduoties-Pašto sujungimas" #. module: base #: code:addons/fields.py:582 @@ -43,6 +43,8 @@ msgid "" "The second argument of the many2many field %s must be a SQL table !You used " "%s, which is not a valid SQL table name." msgstr "" +"many2many laukelio %s antrasis argumentas turi SQL lentelė! Naudojamas %s " +"nėra SQL lentelės pavadinimas." #. module: base #: field:ir.ui.view,arch:0 @@ -88,7 +90,7 @@ msgstr "Darbų eiga" #. module: base #: selection:ir.sequence,implementation:0 msgid "No gap" -msgstr "" +msgstr "Be tarpelių" #. module: base #: selection:base.language.install,lang:0 @@ -219,7 +221,7 @@ msgstr "Svazilandas" #: code:addons/orm.py:4206 #, python-format msgid "created." -msgstr "" +msgstr "sukurtas." #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_tr @@ -963,7 +965,7 @@ msgstr "" #: model:ir.actions.act_window,name:base.act_menu_create #: view:wizard.ir.model.menu.create:0 msgid "Create Menu" -msgstr "" +msgstr "Sukurti meniu" #. module: base #: model:res.country,name:base.in @@ -1473,7 +1475,7 @@ msgstr "" #. module: base #: field:workflow,on_create:0 msgid "On Create" -msgstr "" +msgstr "Sukuriant" #. module: base #: code:addons/base/ir/ir_model.py:681 diff --git a/openerp/addons/base/i18n/lv.po b/openerp/addons/base/i18n/lv.po index 93413c9f30a..3b3c3fb3807 100644 --- a/openerp/addons/base/i18n/lv.po +++ b/openerp/addons/base/i18n/lv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:02+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:11+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po index e521873a418..e13239c9641 100644 --- a/openerp/addons/base/i18n/mk.po +++ b/openerp/addons/base/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:02+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:11+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/mn.po b/openerp/addons/base/i18n/mn.po index f5dddc2bb2a..aeb1a9dbbe8 100644 --- a/openerp/addons/base/i18n/mn.po +++ b/openerp/addons/base/i18n/mn.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:02+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:11+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh @@ -8170,7 +8170,7 @@ msgstr "" #. module: base #: field:res.partner,title:0 msgid "Partner Firm" -msgstr "Түнш Фирм" +msgstr "Харилцагчийн хэлбэр" #. module: base #: model:ir.actions.act_window,name:base.action_model_fields diff --git a/openerp/addons/base/i18n/nb.po b/openerp/addons/base/i18n/nb.po index fbb0b1e081f..e856f578ea1 100644 --- a/openerp/addons/base/i18n/nb.po +++ b/openerp/addons/base/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:02+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:11+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/nl.po b/openerp/addons/base/i18n/nl.po index f9478a968e7..70d6913a7ec 100644 --- a/openerp/addons/base/i18n/nl.po +++ b/openerp/addons/base/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:59+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:08+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh @@ -3730,7 +3730,7 @@ msgid "" "button \"Install\" from the form view and then click on \"Start Upgrade\"." msgstr "" "U kunt nieuwe modules installeren om nieuwe functies, menu, rapporten of " -"gegevens in OpenERP te activeren. Ommodules te installeren, klik op de knop " +"gegevens in OpenERP te activeren. Om modules te installeren, klik op de knop " "\"Installeer\" uit de formulierweergave en klik dan op \"Start bijwerken\"." #. module: base @@ -11307,6 +11307,14 @@ msgid "" "The wizard to launch the report has several options to help you get the data " "you need.\n" msgstr "" +"\n" +"Deze module voegt een rapportage toe met verkopen, inkopen, marges en andere " +"interessante gegevens, gebaseerd op facturen.\n" +"=============================================================================" +"===================\n" +"\n" +"Bij het starten van het rapport krijgt u een wizard, die u helpt bij het " +"kiezen van de juiste gegevens.\n" #. module: base #: model:res.country,name:base.al @@ -11378,6 +11386,13 @@ msgid "" "Price and Cost Price.\n" " " msgstr "" +"\n" +"Deze module voegt het veld \"marge\" toe aan de verkooporders.\n" +"===================================================\n" +"\n" +"Het marge veld geeft de winstgevendheid aan door het berekenen van het " +"verschil tussen de inkoopwaarde en verkoopwaarde.\n" +" " #. module: base #: model:ir.actions.act_window,help:base.action_res_bank_form diff --git a/openerp/addons/base/i18n/nl_BE.po b/openerp/addons/base/i18n/nl_BE.po index 6453617e3d8..35bde66f845 100644 --- a/openerp/addons/base/i18n/nl_BE.po +++ b/openerp/addons/base/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:05+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:15+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index 84dbeaef812..c183d6f762e 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:02+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:12+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh @@ -34,7 +34,7 @@ msgstr "Data i godzina" #. module: base #: model:ir.module.module,shortdesc:base.module_project_mailgate msgid "Tasks-Mail Integration" -msgstr "" +msgstr "Integracja Mail-Zadania" #. module: base #: code:addons/fields.py:582 @@ -43,6 +43,8 @@ msgid "" "The second argument of the many2many field %s must be a SQL table !You used " "%s, which is not a valid SQL table name." msgstr "" +"Drugi argument definicji pola many2many (%s) musi być tabelą SQL! Użyłeś %s, " +"to nie jest prawidłowa nazwa tabeli SQL." #. module: base #: field:ir.ui.view,arch:0 @@ -69,6 +71,21 @@ msgid "" " * Graph of My Remaining Hours by Project\n" " " msgstr "" +"\n" +"Moduł zarządzania projektami; pozwala zarządzać wielopoziomowymi projektami, " +"zadaniami, wykonaną pracą itp.\n" +"=============================================================================" +"===========\n" +"\n" +"Może przygotowywać plan, zlecać zadania itp.\n" +"\n" +"Pulpit dla członków projektów zawierający:\n" +"--------------------------------------------\n" +" * Listę otwartych zadań\n" +" * Listę oddelegowanych zadań\n" +" * Wykres projektów: Zaplanowane a Przepracowane Godziny\n" +" * Wykres pozostałych godzin, z podziałem na projekty\n" +" " #. module: base #: field:base.language.import,code:0 @@ -144,6 +161,11 @@ msgid "" "\n" "This module allows you to create retro planning for managing your events.\n" msgstr "" +"\n" +"Organizacja i zarządzanie zdarzeniami\n" +"======================================\n" +"\n" +"Moduł umożliwia planowanie wsteczne zarządzające twoimi wydarzeniami.\n" #. module: base #: help:ir.model.fields,domain:0 @@ -176,7 +198,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_process msgid "Process" -msgstr "" +msgstr "Proces" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate @@ -201,7 +223,7 @@ msgstr "" #: code:addons/osv.py:129 #, python-format msgid "Constraint Error" -msgstr "" +msgstr "Błąd ograniczeń" #. module: base #: model:ir.model,name:base.model_ir_ui_view_custom diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index f1713cb6d0c..1b6c9da92de 100644 --- a/openerp/addons/base/i18n/pt.po +++ b/openerp/addons/base/i18n/pt.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:03+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:12+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index bc162853381..48d55bde275 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:05+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:15+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/ro.po b/openerp/addons/base/i18n/ro.po index f0213c19916..912a77b558b 100644 --- a/openerp/addons/base/i18n/ro.po +++ b/openerp/addons/base/i18n/ro.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:03+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:12+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index 7969b36fc35..e89a079706f 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-26 04:55+0000\n" -"X-Generator: Launchpad (build 16194)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:12+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/sk.po b/openerp/addons/base/i18n/sk.po index 276bb943ad3..cb485d0a24b 100644 --- a/openerp/addons/base/i18n/sk.po +++ b/openerp/addons/base/i18n/sk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:04+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:13+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/sl.po b/openerp/addons/base/i18n/sl.po index cdf2945a44b..865348becbe 100644 --- a/openerp/addons/base/i18n/sl.po +++ b/openerp/addons/base/i18n/sl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-11-02 05:09+0000\n" -"X-Generator: Launchpad (build 16218)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:13+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/sq.po b/openerp/addons/base/i18n/sq.po index 02a94f658b1..47a530ce55e 100644 --- a/openerp/addons/base/i18n/sq.po +++ b/openerp/addons/base/i18n/sq.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 04:57+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:06+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/sr.po b/openerp/addons/base/i18n/sr.po index 11c2bfe8516..bdd18e34029 100644 --- a/openerp/addons/base/i18n/sr.po +++ b/openerp/addons/base/i18n/sr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:03+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:12+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/sr@latin.po b/openerp/addons/base/i18n/sr@latin.po index 191ad3a7578..373fe898c85 100644 --- a/openerp/addons/base/i18n/sr@latin.po +++ b/openerp/addons/base/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:06+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:16+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/sv.po b/openerp/addons/base/i18n/sv.po index dd30e936311..86b5a156d12 100644 --- a/openerp/addons/base/i18n/sv.po +++ b/openerp/addons/base/i18n/sv.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:04+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:13+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/th.po b/openerp/addons/base/i18n/th.po index f559f5474f5..90182f73245 100644 --- a/openerp/addons/base/i18n/th.po +++ b/openerp/addons/base/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:04+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:13+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/tlh.po b/openerp/addons/base/i18n/tlh.po index 85897a3d863..84e76ed2913 100644 --- a/openerp/addons/base/i18n/tlh.po +++ b/openerp/addons/base/i18n/tlh.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:04+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:13+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/tr.po b/openerp/addons/base/i18n/tr.po index c72a69cc5d2..c86044b9714 100644 --- a/openerp/addons/base/i18n/tr.po +++ b/openerp/addons/base/i18n/tr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:04+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:14+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/uk.po b/openerp/addons/base/i18n/uk.po index 266c92f7fab..1924315a055 100644 --- a/openerp/addons/base/i18n/uk.po +++ b/openerp/addons/base/i18n/uk.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:04+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:14+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/ur.po b/openerp/addons/base/i18n/ur.po index a3b26a9b1d8..3a7ddef1b8e 100644 --- a/openerp/addons/base/i18n/ur.po +++ b/openerp/addons/base/i18n/ur.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:05+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:14+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/vi.po b/openerp/addons/base/i18n/vi.po index a9551f7e3d8..85ca2a0bdd4 100644 --- a/openerp/addons/base/i18n/vi.po +++ b/openerp/addons/base/i18n/vi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:05+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:14+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/zh_CN.po b/openerp/addons/base/i18n/zh_CN.po index 1ef33cccb63..ef90c52ef81 100644 --- a/openerp/addons/base/i18n/zh_CN.po +++ b/openerp/addons/base/i18n/zh_CN.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:06+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:16+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/zh_HK.po b/openerp/addons/base/i18n/zh_HK.po index 35f822e0662..fa4bc7bd4e7 100644 --- a/openerp/addons/base/i18n/zh_HK.po +++ b/openerp/addons/base/i18n/zh_HK.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:05+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:15+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh diff --git a/openerp/addons/base/i18n/zh_TW.po b/openerp/addons/base/i18n/zh_TW.po index 5b61198592c..d4405c6d631 100644 --- a/openerp/addons/base/i18n/zh_TW.po +++ b/openerp/addons/base/i18n/zh_TW.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-10-20 05:06+0000\n" -"X-Generator: Launchpad (build 16165)\n" +"X-Launchpad-Export-Date: 2012-11-13 05:15+0000\n" +"X-Generator: Launchpad (build 16251)\n" #. module: base #: model:res.country,name:base.sh From 7113965a6d309bb7f891d427e0f6d5318a31ce43 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Tue, 13 Nov 2012 05:17:21 +0000 Subject: [PATCH 309/478] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20121113051721-ejf86rj1g6qkdbo9 --- addons/l10n_be_hr_payroll/i18n/es.po | 158 +++++ addons/l10n_be_invoice_bba/i18n/es.po | 141 ++++ addons/l10n_in_hr_payroll/i18n/es.po | 942 ++++++++++++++++++++++++++ 3 files changed, 1241 insertions(+) create mode 100644 addons/l10n_be_hr_payroll/i18n/es.po create mode 100644 addons/l10n_be_invoice_bba/i18n/es.po create mode 100644 addons/l10n_in_hr_payroll/i18n/es.po diff --git a/addons/l10n_be_hr_payroll/i18n/es.po b/addons/l10n_be_hr_payroll/i18n/es.po new file mode 100644 index 00000000000..c0deb99952c --- /dev/null +++ b/addons/l10n_be_hr_payroll/i18n/es.po @@ -0,0 +1,158 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-11-12 16:09+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-11-13 05:17+0000\n" +"X-Generator: Launchpad (build 16251)\n" + +#. module: l10n_be_hr_payroll +#: help:hr.employee,disabled_spouse_bool:0 +msgid "if recipient spouse is declared disabled by law" +msgstr "" + +#. module: l10n_be_hr_payroll +#: help:hr.employee,disabled_children_bool:0 +msgid "if recipient children is/are declared disabled by law" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,misc_onss_deduction:0 +msgid "Miscellaneous exempt ONSS " +msgstr "" + +#. module: l10n_be_hr_payroll +#: model:ir.model,name:l10n_be_hr_payroll.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,disabled_spouse_bool:0 +msgid "Disabled Spouse" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,retained_net_amount:0 +msgid "Net retained " +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,resident_bool:0 +msgid "Nonresident" +msgstr "" + +#. module: l10n_be_hr_payroll +#: help:hr.employee,resident_bool:0 +msgid "if recipient lives in a foreign country" +msgstr "" + +#. module: l10n_be_hr_payroll +#: view:hr.employee:0 +msgid "if spouse has professionnel income or not" +msgstr "" + +#. module: l10n_be_hr_payroll +#: view:hr.contract:0 +msgid "Miscellaneous" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,insurance_employee_deduction:0 +msgid "Insurance Group - by worker " +msgstr "" + +#. module: l10n_be_hr_payroll +#: selection:hr.employee,spouse_fiscal_status:0 +msgid "With Income" +msgstr "" + +#. module: l10n_be_hr_payroll +#: selection:hr.employee,spouse_fiscal_status:0 +msgid "Without Income" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,disabled_children_number:0 +msgid "Number of disabled children" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,additional_net_amount:0 +msgid "Net supplements" +msgstr "" + +#. module: l10n_be_hr_payroll +#: constraint:hr.employee:0 +msgid "Error ! You cannot create recursive Hierarchy of Employees." +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,car_company_amount:0 +msgid "Company car employer" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,misc_advantage_amount:0 +msgid "Benefits of various nature " +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,car_employee_deduction:0 +msgid "Company Car Deduction for Worker" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,disabled_children_bool:0 +msgid "Disabled Children" +msgstr "" + +#. module: l10n_be_hr_payroll +#: model:ir.model,name:l10n_be_hr_payroll.model_hr_contract +msgid "Contract" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,meal_voucher_amount:0 +msgid "Check Value Meal " +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,travel_reimbursement_amount:0 +msgid "Reimbursement of travel expenses" +msgstr "" + +#. module: l10n_be_hr_payroll +#: constraint:hr.contract:0 +msgid "Error! contract start-date must be lower then contract end-date." +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.employee,spouse_fiscal_status:0 +msgid "Tax status for spouse" +msgstr "" + +#. module: l10n_be_hr_payroll +#: view:hr.contract:0 +msgid "by Worker" +msgstr "" + +#. module: l10n_be_hr_payroll +#: view:hr.employee:0 +msgid "number of dependent children declared as disabled" +msgstr "" + +#. module: l10n_be_hr_payroll +#: field:hr.contract,meal_voucher_employee_deduction:0 +msgid "Check Value Meal - by worker " +msgstr "" diff --git a/addons/l10n_be_invoice_bba/i18n/es.po b/addons/l10n_be_invoice_bba/i18n/es.po new file mode 100644 index 00000000000..42f11478e9d --- /dev/null +++ b/addons/l10n_be_invoice_bba/i18n/es.po @@ -0,0 +1,141 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-11-12 16:43+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-11-13 05:17+0000\n" +"X-Generator: Launchpad (build 16251)\n" + +#. module: l10n_be_invoice_bba +#: sql_constraint:account.invoice:0 +msgid "Invoice Number must be unique per Company!" +msgstr "" + +#. module: l10n_be_invoice_bba +#: model:ir.model,name:l10n_be_invoice_bba.model_account_invoice +msgid "Invoice" +msgstr "" + +#. module: l10n_be_invoice_bba +#: constraint:res.partner:0 +msgid "Error ! You cannot create recursive associated members." +msgstr "" + +#. module: l10n_be_invoice_bba +#: constraint:account.invoice:0 +msgid "Invalid BBA Structured Communication !" +msgstr "" + +#. module: l10n_be_invoice_bba +#: selection:res.partner,out_inv_comm_algorithm:0 +msgid "Random" +msgstr "" + +#. module: l10n_be_invoice_bba +#: help:res.partner,out_inv_comm_type:0 +msgid "Select Default Communication Type for Outgoing Invoices." +msgstr "" + +#. module: l10n_be_invoice_bba +#: help:res.partner,out_inv_comm_algorithm:0 +msgid "" +"Select Algorithm to generate the Structured Communication on Outgoing " +"Invoices." +msgstr "" + +#. module: l10n_be_invoice_bba +#: code:addons/l10n_be_invoice_bba/invoice.py:114 +#: code:addons/l10n_be_invoice_bba/invoice.py:140 +#, python-format +msgid "" +"The daily maximum of outgoing invoices with an automatically generated BBA " +"Structured Communications has been exceeded!\n" +"Please create manually a unique BBA Structured Communication." +msgstr "" + +#. module: l10n_be_invoice_bba +#: code:addons/l10n_be_invoice_bba/invoice.py:155 +#, python-format +msgid "Error!" +msgstr "" + +#. module: l10n_be_invoice_bba +#: code:addons/l10n_be_invoice_bba/invoice.py:126 +#, python-format +msgid "" +"The Partner should have a 3-7 digit Reference Number for the generation of " +"BBA Structured Communications!\n" +"Please correct the Partner record." +msgstr "" + +#. module: l10n_be_invoice_bba +#: code:addons/l10n_be_invoice_bba/invoice.py:113 +#: code:addons/l10n_be_invoice_bba/invoice.py:125 +#: code:addons/l10n_be_invoice_bba/invoice.py:139 +#: code:addons/l10n_be_invoice_bba/invoice.py:167 +#: code:addons/l10n_be_invoice_bba/invoice.py:177 +#: code:addons/l10n_be_invoice_bba/invoice.py:202 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: l10n_be_invoice_bba +#: selection:res.partner,out_inv_comm_algorithm:0 +msgid "Customer Reference" +msgstr "" + +#. module: l10n_be_invoice_bba +#: field:res.partner,out_inv_comm_type:0 +msgid "Communication Type" +msgstr "" + +#. module: l10n_be_invoice_bba +#: code:addons/l10n_be_invoice_bba/invoice.py:178 +#: code:addons/l10n_be_invoice_bba/invoice.py:203 +#, python-format +msgid "" +"The BBA Structured Communication has already been used!\n" +"Please create manually a unique BBA Structured Communication." +msgstr "" + +#. module: l10n_be_invoice_bba +#: selection:res.partner,out_inv_comm_algorithm:0 +msgid "Date" +msgstr "" + +#. module: l10n_be_invoice_bba +#: model:ir.model,name:l10n_be_invoice_bba.model_res_partner +msgid "Partner" +msgstr "" + +#. module: l10n_be_invoice_bba +#: code:addons/l10n_be_invoice_bba/invoice.py:156 +#, python-format +msgid "" +"Unsupported Structured Communication Type Algorithm '%s' !\n" +"Please contact your OpenERP support channel." +msgstr "" + +#. module: l10n_be_invoice_bba +#: field:res.partner,out_inv_comm_algorithm:0 +msgid "Communication Algorithm" +msgstr "" + +#. module: l10n_be_invoice_bba +#: code:addons/l10n_be_invoice_bba/invoice.py:168 +#, python-format +msgid "" +"Empty BBA Structured Communication!\n" +"Please fill in a unique BBA Structured Communication." +msgstr "" diff --git a/addons/l10n_in_hr_payroll/i18n/es.po b/addons/l10n_in_hr_payroll/i18n/es.po new file mode 100644 index 00000000000..52f443733fb --- /dev/null +++ b/addons/l10n_in_hr_payroll/i18n/es.po @@ -0,0 +1,942 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-08-17 06:46+0000\n" +"PO-Revision-Date: 2012-11-12 17:08+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-11-13 05:17+0000\n" +"X-Generator: Launchpad (build 16251)\n" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "E-mail Address" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:payment.advice.report,employee_bank_no:0 +msgid "Employee Bank Account" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Payment Advices which are in draft state" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Title" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Payment Advice from" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_yearly_salary_detail +msgid "Hr Salary Employee By Category Report" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Employees Salary Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Allowances with Basic:" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Department" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Deductions:" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "A/C no." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,driver_salay:0 +msgid "Driver Salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_yearly_salary_detail +#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.yearly_salary +#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_yearly_salary_detail +msgid "Yearly Salary by Employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.act_hr_emp_payslip_list +msgid "Payslips" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "March" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "(" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice,company_id:0 +#: field:hr.payroll.advice.line,company_id:0 +#: view:payment.advice.report:0 +#: field:payment.advice.report,company_id:0 +msgid "Company" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "The Manager" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Letter Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "," +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Set to Draft" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.employee,number_of_year:0 +msgid "Total years of work experience" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "to" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Total :" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payslip.run,available_advice:0 +msgid "Made Payment Advice?" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Advices which are paid using NEFT transfer" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,tds:0 +msgid "Amount for Tax Deduction at Source" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip +msgid "Pay Slip" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: field:payment.advice.report,day:0 +msgid "Day" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Month of Payment Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: constraint:hr.payslip:0 +msgid "Payslip 'Date From' must be before 'Date To'." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,batch_id:0 +msgid "Batch" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Code" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Other Information" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:hr.payroll.advice,state:0 +#: selection:payment.advice.report,state:0 +msgid "Cancelled" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "For" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Details by Salary Rule Category:" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,voluntary_provident_fund:0 +msgid "VPF computed as percentage(%)" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,number:0 +#: report:paylip.details.in:0 +msgid "Reference" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: view:payment.advice.report:0 +msgid "Group By..." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,medical_insurance:0 +msgid "Medical Insurance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Identification No" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:hr.payroll.advice,state:0 +#: selection:payment.advice.report,state:0 +msgid "Confirmed" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +#: report:salary.employee.bymonth:0 +msgid "From" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,bysal:0 +#: field:payment.advice.report,bysal:0 +#: report:payroll.advice:0 +msgid "By Salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: view:payment.advice.report:0 +msgid "Confirm" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,chaque_nos:0 +#: field:payment.advice.report,cheque_nos:0 +msgid "Cheque Numbers" +msgstr "" + +#. module: l10n_in_hr_payroll +#: constraint:res.company:0 +msgid "Error! You can not create recursive companies." +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_salary_employee_month +#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.hr_salary_employee_bymonth +#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_salary_employee_month +msgid "Yearly Salary by Head" +msgstr "" + +#. module: l10n_in_hr_payroll +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 +#, python-format +msgid "You can not confirm Payment advice without advice lines." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,state:0 +#: field:payment.advice.report,state:0 +msgid "State" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Yours Sincerely" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,medical_insurance:0 +msgid "Deduction towards company provided medical insurance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice_line +msgid "Bank Advice Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Email" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.payslip.run,available_advice:0 +msgid "" +"If this box is checked which means that Payment Advice exists for current " +"batch" +msgstr "" + +#. module: l10n_in_hr_payroll +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:184 +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 +#, python-format +msgid "Error !" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +#: view:yearly.salary.detail:0 +msgid "Print" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payslip_run +msgid "Payslip Batches" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,debit_credit:0 +#: report:payroll.advice:0 +msgid "C/D" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.employee.bymonth:0 +msgid "Yearly Salary Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payroll_advice +msgid "Print Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,line_ids:0 +msgid "Employee Salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "July" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:res.company:0 +msgid "Configuration" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_view_hr_bank_advice_tree +#: model:ir.ui.menu,name:l10n_in_hr_payroll.hr_menu_payment_advice +msgid "Payment Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,name:l10n_in_hr_payroll.action_payment_advice_report_all +#: model:ir.ui.menu,name:l10n_in_hr_payroll.menu_reporting_payment_advice +#: view:payment.advice.report:0 +msgid "Advices Analysis" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +msgid "" +"This wizard will print report which displays employees break-up of Net Head " +"for a specified dates." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,ifsc:0 +msgid "IFSC" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Date To" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,tds:0 +msgid "TDS" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.employee,join_date:0 +msgid "Join Date" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Confirm Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: constraint:hr.contract:0 +msgid "Error! Contract start-date must be less than contract end-date." +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:res.company,dearness_allowance:0 +msgid "Dearness Allowance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "August" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.contract:0 +msgid "Deduction" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Search Payment advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "SI. No." +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Payment Advices which are in confirm state" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "December" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Confirm Sheet" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: field:payment.advice.report,month:0 +msgid "Month" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Employee Code" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:hr.contract,city_type:0 +msgid "Non Metro" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +#: view:yearly.salary.detail:0 +msgid "or" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_salary_employee_month +msgid "Hr Salary Employee By Month Report" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.salary.employee.month,category_id:0 +msgid "Category" +msgstr "" + +#. module: l10n_in_hr_payroll +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:240 +#, python-format +msgid "" +"Payment advice already exists for %s, 'Set to Draft' to create a new advice." +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payslip.run:0 +msgid "To Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.employee,number_of_year:0 +msgid "No. of Years of Service" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Note" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Salary Rule Category" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: selection:hr.payroll.advice,state:0 +#: view:payment.advice.report:0 +#: selection:payment.advice.report,state:0 +msgid "Draft" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Date From" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,voluntary_provident_fund:0 +msgid "Voluntary Provident Fund" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Employee Name" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_payment_advice_report +msgid "Payment Advice Analysis" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: view:payment.advice.report:0 +msgid "Status" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.contract,city_type:0 +msgid "Type of City" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:res.company,dearness_allowance:0 +msgid "Check this box if your company provide Dearness Allowance to employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,ifsc_code:0 +#: field:payment.advice.report,ifsc_code:0 +#: report:payroll.advice:0 +msgid "IFSC Code" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "June" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: field:payment.advice.report,nbr:0 +msgid "# Payment Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.report.xml,name:l10n_in_hr_payroll.payslip_details_report +msgid "PaySlip Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Payment Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,date:0 +#: field:payment.advice.report,date:0 +msgid "Date" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "November" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.actions.act_window,help:l10n_in_hr_payroll.action_payment_advice_report_all +msgid "This report performs analysis on Payment Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "October" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: report:salary.detail.byyear:0 +msgid "Designation" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "January" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:yearly.salary.detail:0 +msgid "Pay Head Employee Breakup" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_res_company +msgid "Companies" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: report:payroll.advice:0 +msgid "Authorized Signature" +msgstr "" + +#. module: l10n_in_hr_payroll +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_contract +msgid "Contract" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice.line:0 +msgid "Advice Lines" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "To," +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.contract,driver_salay:0 +msgid "Check this box if you provide allowance for driver" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice.line,advice_id:0 +#: field:hr.payslip,advice_id:0 +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_payroll_advice +msgid "Bank Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Other No." +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Draft Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.payroll.advice,neft:0 +msgid "Check this box if your company use online transfer for salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "To" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:payment.advice.report,number:0 +msgid "Number" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "September" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: view:hr.salary.employee.month:0 +#: view:yearly.salary.detail:0 +msgid "Cancel" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Day of Payment Advices" +msgstr "" + +#. module: l10n_in_hr_payroll +#: constraint:hr.employee:0 +msgid "Error! You cannot create recursive hierarchy of Employee(s)." +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:yearly.salary.detail:0 +msgid "" +"This wizard will print report which display a pay head employee breakup for " +"a specified dates." +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payslip.run:0 +msgid "Payslip Batches ready to be Adviced" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Pay Slip Details" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Total Salary" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,employee_id:0 +#: model:ir.model,name:l10n_in_hr_payroll.model_hr_employee +#: view:payment.advice.report:0 +#: field:payment.advice.report,employee_id:0 +msgid "Employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +msgid "Compute Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.employee,join_date:0 +msgid "Joining date of employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Dear Sir/Madam," +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,note:0 +msgid "Description" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid ")" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:res.company:0 +msgid "Payroll" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "NEFT" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: report:salary.detail.byyear:0 +msgid "Address" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice,bank_id:0 +#: view:payment.advice.report:0 +#: field:payment.advice.report,bank_id:0 +#: report:payroll.advice:0 +#: report:salary.detail.byyear:0 +msgid "Bank" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.salary.employee.month,end_date:0 +#: field:yearly.salary.detail,date_to:0 +msgid "End Date" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "February" +msgstr "" + +#. module: l10n_in_hr_payroll +#: sql_constraint:res.company:0 +msgid "The company name must be unique !" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payroll.advice:0 +#: field:hr.payroll.advice,name:0 +#: report:paylip.details.in:0 +#: field:payment.advice.report,name:0 +#: report:salary.employee.bymonth:0 +msgid "Name" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:hr.contract,city_type:0 +msgid "Metro" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +#: field:hr.salary.employee.month,employee_ids:0 +#: view:yearly.salary.detail:0 +#: field:yearly.salary.detail,employee_ids:0 +msgid "Employees" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Bank Account" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "April" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "Name of the Employe" +msgstr "" + +#. module: l10n_in_hr_payroll +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:158 +#: code:addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py:257 +#, python-format +msgid "Please define bank account for the %s employee" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.salary.employee.month,start_date:0 +#: field:yearly.salary.detail,date_from:0 +msgid "Start Date" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.contract:0 +msgid "Allowance" +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.payroll.advice,bank_id:0 +msgid "Select the Bank from which the salary is going to be paid" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.salary.employee.month:0 +msgid "Employee Pay Head Breakup" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:salary.detail.byyear:0 +msgid "Phone No." +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +msgid "Credit" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice.line,name:0 +#: report:payroll.advice:0 +msgid "Bank Account No." +msgstr "" + +#. module: l10n_in_hr_payroll +#: help:hr.payroll.advice,date:0 +msgid "Advice Date is used to search Payslips" +msgstr "" + +#. module: l10n_in_hr_payroll +#: selection:payment.advice.report,month:0 +msgid "May" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:hr.payslip.run:0 +msgid "Create Advice" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +#: field:payment.advice.report,year:0 +msgid "Year" +msgstr "" + +#. module: l10n_in_hr_payroll +#: field:hr.payroll.advice,neft:0 +#: field:payment.advice.report,neft:0 +msgid "NEFT Transaction" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:paylip.details.in:0 +#: report:salary.detail.byyear:0 +#: report:salary.employee.bymonth:0 +msgid "Total" +msgstr "" + +#. module: l10n_in_hr_payroll +#: report:payroll.advice:0 +msgid "form period" +msgstr "" + +#. module: l10n_in_hr_payroll +#: view:payment.advice.report:0 +msgid "Year of Payment Advices" +msgstr "" From 7d745f7195827088b9f01648effcaf5e0a4797f7 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 13 Nov 2012 11:14:48 +0100 Subject: [PATCH 310/478] [FIX] comment jquery ui bootstrap global styling bzr revid: fme@openerp.com-20121113101448-a3603utoogsvvjta --- .../css/custom-theme/jquery-ui-1.9.0.custom.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/jquery-ui-1.9.0.custom.css b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/jquery-ui-1.9.0.custom.css index a06e9447afc..f19c56caed1 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/jquery-ui-1.9.0.custom.css +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/jquery-ui-1.9.0.custom.css @@ -1115,7 +1115,7 @@ body .ui-tooltip { border-width:2px; } /*** Input field styling from Bootstrap **/ - input, textarea { +/* input, textarea { -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; -moz-transition: border linear 0.2s, box-shadow linear 0.2s; -ms-transition: border linear 0.2s, box-shadow linear 0.2s; @@ -1137,12 +1137,12 @@ input[type=file]:focus, input[type=checkbox]:focus, select:focus { -moz-box-shadow: none; box-shadow: none; outline: 1px dotted #666; -} +}*/ -input[type="text"], -input[type="password"], +/*input[type="text"], +input[type="password"],*/ .ui-autocomplete-input, -textarea, +/*textarea,*/ .uneditable-input { display: inline-block; padding: 4px; From d0d4f400f7eafe1f20ed7c4cae0b932a5124a928 Mon Sep 17 00:00:00 2001 From: nwi-openerp Date: Tue, 13 Nov 2012 11:35:30 +0100 Subject: [PATCH 311/478] [MERGE] SYNC trunk-improve-css-all-browsers bzr revid: nwi@openerp.com-20121113103530-s2r2m2iq8nt8cp8z --- addons/mail/static/src/css/mail.css | 7 +++++++ addons/mail/static/src/css/mail_group.css | 2 ++ 2 files changed, 9 insertions(+) diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index 18d19a848cc..eb668162e30 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -374,11 +374,13 @@ .openerp .oe_mail .oe_msg_footer button.oe_attach{ width: 24px; overflow: hidden; + filter:none; } .openerp .oe_mail .oe_msg_footer button.oe_attach .oe_e{ position: relative; top: -1px; left: -9px; + filter:none; } .openerp .oe_mail .oe_hidden_input_file, .openerp .oe_mail .oe_hidden_input_file form{ display:inline; @@ -387,11 +389,13 @@ width:24px; overflow:hidden; float: right; + filter:none; } .openerp .oe_mail .oe_msg_footer button.oe_full .oe_e{ position: relative; top: -1px; left: -9px; + filter:none; } .openerp .oe_mail button.oe_attach, .openerp .oe_mail button.oe_full{ background: transparent; @@ -399,6 +403,7 @@ box-shadow: none; border: none; text-shadow: none; + filter:none; } .openerp .oe_mail .oe_attach_label{ color: #7C7BAD; @@ -410,6 +415,7 @@ height: 28px; width: 52px; margin-top: -6px; + filter:none; } .openerp .oe_mail .oe_mail_list_recipients{ font-size: 12px; @@ -472,6 +478,7 @@ } .openerp .oe_followers button.oe_follower.oe_following:hover{ color: white; + filter:none; background-color: #A21A1A; background-image: -webkit-linear-gradient(top, #DF3F3F, #A21A1A); background-image: -moz-linear-gradient(top, #DF3F3F, #A21A1A); diff --git a/addons/mail/static/src/css/mail_group.css b/addons/mail/static/src/css/mail_group.css index 97f26dc0ff5..467bc53d80f 100644 --- a/addons/mail/static/src/css/mail_group.css +++ b/addons/mail/static/src/css/mail_group.css @@ -44,6 +44,7 @@ text-align: center; overflow: hidden; -moz-border-radius: 3px; + border-collapse: separate; -webkit-border-radius: 3px; -o-border-radius: 3px; -ms-border-radius: 3px; @@ -59,6 +60,7 @@ width: 100px; height: 100px; clip: rect(0px, 100px, 100px, 0px); + border:none; } .oe_group_details { From 22edf6193dda6bd1e966b34a7fc80687473b1cf9 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 13 Nov 2012 11:44:07 +0100 Subject: [PATCH 312/478] [FIX] listview display when action button deletes the corresponding record if a record has disappeared between activating a button and refreshing the record, remove it from the list view lp bug: https://launchpad.net/bugs/1042718 fixed bzr revid: xmo@openerp.com-20121113104407-n924vinluqfdtesf --- addons/web/static/src/js/view_list.js | 5 ++ addons/web/static/test/list.js | 68 +++++++++++++++++++++++++++ addons/web/static/test/test.html | 1 + 3 files changed, 74 insertions(+) create mode 100644 addons/web/static/test/list.js diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 3d777b381bb..321faf40c0f 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -503,12 +503,17 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi return this.reload_content(); }, reload_record: function (record) { + var self = this; return this.dataset.read_ids( [record.get('id')], _.pluck(_(this.columns).filter(function (r) { return r.tag === 'field'; }), 'name') ).done(function (records) { + if (!records[0]) { + self.records.remove(record); + return; + } _(records[0]).each(function (value, key) { record.set(key, value, {silent: true}); }); diff --git a/addons/web/static/test/list.js b/addons/web/static/test/list.js new file mode 100644 index 00000000000..63cc16a5022 --- /dev/null +++ b/addons/web/static/test/list.js @@ -0,0 +1,68 @@ +$(document).ready(function () { + var instance; + var $fix = $('#qunit-fixture'); + + module('list.buttons', { + setup: function () { + instance = openerp.testing.instanceFor('list'); + + openerp.testing.loadTemplate(instance); + + openerp.testing.mockifyRPC(instance); + } + }); + asyncTest('record-deletion', 2, function () { + instance.session.responses['/web/view/load'] = function () { + return {result: { + type: 'tree', + fields: { + a: {type: 'char', string: "A"} + }, + arch: { + tag: 'tree', + attrs: { }, + children: [ + {tag: 'field', attrs: {name: 'a'}}, + {tag: 'button', attrs: {type: 'object', name: 'foo'}} + ] + } + }}; + }; + instance.session.responses['/web/dataset/call_kw:read'] = function (req) { + var args = req.params.args[0]; + if (_.isEqual(args, [1, 2, 3])) { + return {result: [ + {id: 1, a: 'foo'}, {id: 2, a: 'bar'}, {id: 3, a: 'baz'} + ]}; + } else if (_.isEqual(args, [2])) { + // button action virtually removed record + return {result: []}; + } + throw new Error(JSON.stringify(req.params)); + }; + instance.session.responses['/web/dataset/call_button'] = function () { + return {result: false}; + }; + var ds = new instance.web.DataSetStatic(null, 'demo', null, [1, 2, 3]); + var l = new instance.web.ListView({}, ds, false, {editable: 'top'}); + l.appendTo($fix) + .then(l.proxy('reload_content')) + .then(function () { + var d = $.Deferred(); + l.records.bind('remove', function () { + d.resolve(); + }); + $fix.find('table tbody tr:eq(1) button').click(); + return d.promise(); + }) + .always(function () { start(); }) + .then(function () { + strictEqual(l.records.length, 2, + "should have 2 records left"); + strictEqual($fix.find('table tbody tr[data-id]').length, 2, + "should have 2 rows left"); + }, function (e) { + ok(false, e && e.message || e); + }); + }); +}); diff --git a/addons/web/static/test/test.html b/addons/web/static/test/test.html index 185125659cc..275db0f37a7 100644 --- a/addons/web/static/test/test.html +++ b/addons/web/static/test/test.html @@ -58,5 +58,6 @@ + From ea4eb01ac15ddf2fbe1b3e0e2649d72eaf706e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 13 Nov 2012 12:20:38 +0100 Subject: [PATCH 313/478] [FIX] sale, purchase, account: send by email button calls the mail.compose.message in comment mode. bzr revid: tde@openerp.com-20121113112038-hwp41jldofq1al6k --- addons/account/account_invoice.py | 1 + addons/purchase/purchase.py | 1 + addons/sale/sale.py | 1 + 3 files changed, 3 insertions(+) diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index b37118c3baa..409551585fa 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -402,6 +402,7 @@ class account_invoice(osv.osv): 'default_res_id': ids[0], 'default_use_template': True, 'default_template_id': template_id, + 'default_composition_mode': 'comment', }) return { 'view_type': 'form', diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 0227e74905f..5bb38316604 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -395,6 +395,7 @@ class purchase_order(osv.osv): 'default_res_id': ids[0], 'default_use_template': True, 'default_template_id': template_id, + 'default_composition_mode': 'comment', }) return { 'view_type': 'form', diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 3c21492827f..5fe84c34bc3 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -645,6 +645,7 @@ class sale_order(osv.osv): 'default_res_id': ids[0], 'default_use_template': True, 'default_template_id': template_id, + 'default_composition_mode': 'comment', 'mark_so_as_sent': True }) return { From a370d1c0598a52b4a2020289620d45a27e65a36e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 13 Nov 2012 12:36:25 +0100 Subject: [PATCH 314/478] [IMP] email_template: relooked a bit the mail.compose.message wizard, use_template by default, on bottom-right choose the template; rendre only when use_template and template_id set. bzr revid: tde@openerp.com-20121113113625-fg3jp3047gnrx2wr --- .../wizard/mail_compose_message.py | 9 ++++-- .../wizard/mail_compose_message_view.xml | 32 +++++++++---------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py index 1f69377cf53..742f9646406 100644 --- a/addons/email_template/wizard/mail_compose_message.py +++ b/addons/email_template/wizard/mail_compose_message.py @@ -52,8 +52,9 @@ class mail_compose_message(osv.TransientModel): context = {} result = super(mail_compose_message, self).default_get(cr, uid, fields, context=context) result['template_id'] = context.get('default_template_id', context.get('mail.compose.template_id', False)) + # pre-render the template if any - if result.get('use_template'): + if result.get('use_template') and result.get('template_id'): onchange_res = self.onchange_use_template(cr, uid, [], result.get('use_template'), result.get('template_id'), result.get('composition_mode'), result.get('model'), result.get('res_id'), context=context) result.update(onchange_res['value']) @@ -65,6 +66,10 @@ class mail_compose_message(osv.TransientModel): 'template_id': fields.selection(_get_templates, 'Template', size=-1), } + _defaults = { + 'use_template': True, + } + def onchange_template_id(self, cr, uid, ids, use_template, template_id, composition_mode, model, res_id, context=None): """ - use_template not set: return default_get - use_template set in mass_mailing: we cannot render, so return the template values @@ -154,7 +159,7 @@ class mail_compose_message(osv.TransientModel): # transform email_to, email_cc into partner_ids values['partner_ids'] = [] - mails = tools.email_split( values.pop('email_to', '') + ' ' + values.pop('email_cc', '') ) + 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) values['partner_ids'].append(partner_id) diff --git a/addons/email_template/wizard/mail_compose_message_view.xml b/addons/email_template/wizard/mail_compose_message_view.xml index 05d0e8dffa1..0a530299d4a 100644 --- a/addons/email_template/wizard/mail_compose_message_view.xml +++ b/addons/email_template/wizard/mail_compose_message_view.xml @@ -8,23 +8,23 @@ - - - - - + + - - + + - diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index bd0ade31b68..c72af5eadaf 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -20,6 +20,7 @@ ############################################################################## import logging +import pdb import tools from email.header import decode_header @@ -50,8 +51,9 @@ class mail_message(osv.Model): _description = 'Message' _inherit = ['ir.needaction_mixin'] _order = 'id desc' + _rec_name = 'record_name' - _message_read_limit = 10 + _message_read_limit = 30 _message_read_fields = ['id', 'parent_id', 'model', 'res_id', 'body', 'subject', 'date', 'to_read', 'email_from', 'type', 'vote_user_ids', 'attachment_ids', 'author_id', 'partner_ids', 'record_name', 'favorite_user_ids'] _message_record_name_length = 18 @@ -120,21 +122,26 @@ class mail_message(osv.Model): "message, comment for other messages such as user replies"), 'email_from': fields.char('From', help="Email address of the sender. This field is set when no matching partner is found for incoming emails."), - 'author_id': fields.many2one('res.partner', 'Author', + 'author_id': fields.many2one('res.partner', 'Author', select=1, + ondelete='set null', help="Author of the message. If not set, email_from may hold an email address that did not match any partner."), 'partner_ids': fields.many2many('res.partner', string='Recipients'), 'notified_partner_ids': fields.many2many('res.partner', 'mail_notification', - 'message_id', 'partner_id', 'Recipients'), + 'message_id', 'partner_id', 'Notified partners', + help='Partners that have a notification pushing this message in their mailboxes'), 'attachment_ids': fields.many2many('ir.attachment', 'message_attachment_rel', 'message_id', 'attachment_id', 'Attachments'), - 'parent_id': fields.many2one('mail.message', 'Parent Message', select=True, ondelete='set null', help="Initial thread message."), + 'parent_id': fields.many2one('mail.message', 'Parent Message', select=True, + ondelete='set null', help="Initial thread message."), 'child_ids': fields.one2many('mail.message', 'parent_id', 'Child Messages'), 'model': fields.char('Related Document Model', size=128, select=1), 'res_id': fields.integer('Related Document ID', select=1), 'record_name': fields.function(_get_record_name, type='char', store=True, string='Message Record Name', help="Name get of the related document."), - 'notification_ids': fields.one2many('mail.notification', 'message_id', 'Notifications'), + 'notification_ids': fields.one2many('mail.notification', 'message_id', + string='Notifications', + help='Technical field holding the message notifications. Use notified_partner_ids to access notified partners.'), 'subject': fields.char('Subject'), 'date': fields.datetime('Date'), 'message_id': fields.char('Message-Id', help='Message unique identifier', select=1, readonly=1), @@ -142,7 +149,8 @@ class mail_message(osv.Model): 'to_read': fields.function(_get_to_read, fnct_search=_search_to_read, type='boolean', string='To read', help='Functional field to search for messages the current user has to read'), - 'subtype_id': fields.many2one('mail.message.subtype', 'Subtype'), + 'subtype_id': fields.many2one('mail.message.subtype', 'Subtype', + ondelete='set null', select=1,), 'vote_user_ids': fields.many2many('res.users', 'mail_vote', 'message_id', 'user_id', string='Votes', help='Users that voted for this message'), @@ -200,67 +208,99 @@ class mail_message(osv.Model): # Message loading for web interface #------------------------------------------------------ - def _message_get_dict(self, cr, uid, message, context=None): - """ Return a dict representation of the message. This representation is - used in the JS client code, to display the messages. + def _message_read_dict_postprocess(self, cr, uid, messages, message_tree, context=None): + """ Post-processing on values given by message_read. This method will + handle partners in batch to avoid doing numerous queries. - :param dict message: read result of a mail.message + :param list messages: list of message, as get_dict result + :param dict message_tree: {[msg.id]: msg browse record} """ - # TDE note: this method should be optimized, to lessen the number of queries, will be done ASAP - is_author = False - if message['author_id']: - is_author = message['author_id'][0] == self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=None)['partner_id'][0] - author_id = message['author_id'] - elif message['email_from']: - author_id = (0, message['email_from']) + res_partner_obj = self.pool.get('res.partner') + ir_attachment_obj = self.pool.get('ir.attachment') + pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=None)['partner_id'][0] - has_voted = False - if uid in message.get('vote_user_ids'): - has_voted = True + # 1. Aggregate partners (author_id and partner_ids) and attachments + partner_ids = set() + attachment_ids = set() + for key, message in message_tree.iteritems(): + if message.author_id: + partner_ids |= set([message.author_id.id]) + if message.partner_ids: + partner_ids |= set([partner.id for partner in message.partner_ids]) + if message.attachment_ids: + attachment_ids |= set([attachment.id for attachment in message.attachment_ids]) - is_favorite = False - if uid in message.get('favorite_user_ids'): - is_favorite = True + # Filter author_ids uid can see + # partner_ids = self.pool.get('res.partner').search(cr, uid, [('id', 'in', partner_ids)], context=context) + partners = res_partner_obj.name_get(cr, uid, list(partner_ids), context=context) + partner_tree = dict((partner[0], partner) for partner in partners) - is_private = True - if message.get('model') and message.get('res_id'): - is_private = False + # 2. Attachments + attachments = ir_attachment_obj.read(cr, uid, list(attachment_ids), ['id', 'datas_fname'], context=context) + attachments_tree = dict((attachment['id'], {'id': attachment['id'], 'filename': attachment['datas_fname']}) for attachment in attachments) - try: - attachment_ids = [{'id': attach[0], 'name': attach[1]} for attach in self.pool.get('ir.attachment').name_get(cr, uid, message['attachment_ids'], context=context)] - except (orm.except_orm, osv.except_osv): - attachment_ids = [] - - # TDE note: should we send partner_ids ? - # TDE note: shouldn't we separated followers and other partners ? costly to compute maybe , - try: - partner_ids = self.pool.get('res.partner').name_get(cr, uid, message['partner_ids'], context=context) - except (orm.except_orm, osv.except_osv): + # 3. Update message dictionaries + for message_dict in messages: + message_id = message_dict.get('id') + message = message_tree[message_id] + if message.author_id: + author = partner_tree[message.author_id.id] + else: + author = (0, message.email_from) partner_ids = [] + for partner in message.partner_ids: + if partner.id in partner_tree: + partner_ids.append(partner_tree[partner.id]) + attachment_ids = [] + for attachment in message.attachment_ids: + if attachment.id in attachments_tree: + attachment_ids.append(attachments_tree[attachment.id]) + message_dict.update({ + 'is_author': pid == author[0], + 'author_id': author, + 'partner_ids': partner_ids, + 'attachment_ids': attachment_ids, + }) + return True - return { - 'id': message['id'], - 'type': message['type'], - 'attachment_ids': attachment_ids, - 'body': message['body'], - 'model': message['model'], - 'res_id': message['res_id'], - 'record_name': message['record_name'], - 'subject': message['subject'], - 'date': message['date'], - 'author_id': author_id, - 'is_author': is_author, - 'partner_ids': partner_ids, - 'parent_id': False, - 'vote_nb': len(message['vote_user_ids']), - 'has_voted': has_voted, - 'is_private': is_private, - 'is_favorite': is_favorite, - 'to_read': message['to_read'], - } + def _message_read_dict(self, cr, uid, message, parent_id=False, context=None): + """ Return a dict representation of the message. This representation is + used in the JS client code, to display the messages. Partners and + attachments related stuff will be done in post-processing in batch. - def _message_read_add_expandables(self, cr, uid, message_list, read_messages, - thread_level=0, message_loaded_ids=[], domain=[], parent_id=False, context=None, limit=None): + :param dict message: mail.message browse record + """ + # private message: no model, no res_id + is_private = False + if not message.model or not message.res_id: + is_private = True + # votes and favorites: res.users ids, no prefetching should be done + vote_nb = len(message.vote_user_ids) + has_voted = uid in [user.id for user in message.vote_user_ids] + is_favorite = uid in [user.id for user in message.favorite_user_ids] + + return {'id': message.id, + 'type': message.type, + 'body': message.body, + 'model': message.model, + 'res_id': message.res_id, + 'record_name': message.record_name, + 'subject': message.subject, + 'date': message.date, + 'to_read': message.to_read, + 'parent_id': parent_id, + 'is_private': is_private, + 'author_id': False, + 'is_author': False, + 'partner_ids': [], + 'vote_nb': vote_nb, + 'has_voted': has_voted, + 'is_favorite': is_favorite, + 'attachment_ids': [], + } + + def _message_read_add_expandables(self, cr, uid, messages, message_tree, parent_tree, + message_unload_ids=[], thread_level=0, domain=[], parent_id=False, context=None): """ Create expandables for message_read, to load new messages. 1. get the expandable for new threads if display is flat (thread_level == 0): @@ -275,96 +315,82 @@ class mail_message(osv.Model): for each hole in the child list based on message displayed, create an expandable - :param list message_list:list of message structure for the Chatter + :param list messages: list of message structure for the Chatter widget to which expandables are added - :param dict read_messages: dict [id]: read result of the messages to - easily have access to their values, given their ID + :param dict message_tree: dict [id]: browse record of this message + :param dict parent_tree: dict [parent_id]: [child_ids] + :param list message_unload_ids: list of message_ids we do not want + to load :return bool: True """ - def _get_expandable(domain, message_nb, parent_id, id, model): + def _get_expandable(domain, message_nb, parent_id, max_limit): return { 'domain': domain, 'nb_messages': message_nb, 'type': 'expandable', 'parent_id': parent_id, - 'id': id, - # TDE note: why do we need model sometimes, and sometimes not ??? - 'model': model, + 'max_limit': max_limit, } - # all_not_loaded_ids = [] - id_list = sorted(read_messages.keys()) - if not id_list: - return message_list + if not messages: + return True + message_ids = sorted(message_tree.keys()) # 1. get the expandable for new threads if thread_level == 0: - exp_domain = domain + [('id', '<', min(message_loaded_ids + id_list))] + exp_domain = domain + [('id', '<', min(message_unload_ids + message_ids))] else: - exp_domain = domain + ['!', ('id', 'child_of', message_loaded_ids + id_list)] + exp_domain = domain + ['!', ('id', 'child_of', message_unload_ids + parent_tree.keys())] ids = self.search(cr, uid, exp_domain, context=context, limit=1) if ids: - message_list.append(_get_expandable(exp_domain, -1, parent_id, -1, None)) + # inside a thread: prepend + if parent_id: + messages.insert(0, _get_expandable(exp_domain, -1, parent_id, True)) + # new threads: append + else: + messages.append(_get_expandable(exp_domain, -1, parent_id, True)) # 2. get the expandables for new messages inside threads if display is not flat if thread_level == 0: return True - for message_id in id_list: - message = read_messages[message_id] + for message_id in message_ids: + message = message_tree[message_id] - # message is not a thread header (has a parent_id) - # TDE note: parent_id is false is there is a parent we can not see -> ok - if message.get('parent_id'): + # generate only for thread header messages (TDE note: parent_id may be False is uid cannot see parent_id, seems ok) + if message.parent_id: continue - # TDE note: check search is correctly implemented in mail.message - not_loaded_ids = self.search(cr, uid, [ - ('id', 'child_of', message['id']), - ('id', 'not in', message_loaded_ids), - ], context=context, limit=self._message_read_more_limit) - if not not_loaded_ids: + # check there are message for expandable + child_ids = set([child.id for child in message.child_ids]) - set(message_unload_ids) + child_ids = sorted(list(child_ids), reverse=True) + if not child_ids: continue - # all_not_loaded_ids += not_loaded_ids - # group childs not read - id_min, id_max, nb = max(not_loaded_ids), 0, 0 - for not_loaded_id in not_loaded_ids: - if not read_messages.get(not_loaded_id): + # make groups of unread messages + id_min, id_max, nb = max(child_ids), 0, 0 + for child_id in child_ids: + if not child_id in message_ids: nb += 1 - if id_min > not_loaded_id: - id_min = not_loaded_id - if id_max < not_loaded_id: - id_max = not_loaded_id + if id_min > child_id: + id_min = child_id + if id_max < child_id: + id_max = child_id elif nb > 0: exp_domain = [('id', '>=', id_min), ('id', '<=', id_max), ('id', 'child_of', message_id)] - message_list.append(_get_expandable(exp_domain, nb, message_id, id_min, message.get('model'))) - id_min, id_max, nb = max(not_loaded_ids), 0, 0 + messages.append(_get_expandable(exp_domain, nb, message_id, False)) + id_min, id_max, nb = max(child_ids), 0, 0 else: - id_min, id_max, nb = max(not_loaded_ids), 0, 0 + id_min, id_max, nb = max(child_ids), 0, 0 if nb > 0: exp_domain = [('id', '>=', id_min), ('id', '<=', id_max), ('id', 'child_of', message_id)] - message_list.append(_get_expandable(exp_domain, nb, message_id, id_min, message.get('model'))) - - # message_loaded_ids = list(set(message_loaded_ids + read_messages.keys() + all_not_loaded_ids)) + idx = [msg.get('id') for msg in messages].index(message_id) + 1 + # messages.append(_get_expandable(exp_domain, nb, message_id, id_min)) + messages.insert(idx, _get_expandable(exp_domain, nb, message_id, False)) return True - def _get_parent(self, cr, uid, message, context=None): - """ Tools method that tries to get the parent of a mail.message. If - no parent, or if uid has no access right on the parent, False - is returned. - - :param dict message: read result of a mail.message - """ - if not message['parent_id']: - return False - parent_id = message['parent_id'][0] - try: - return self.read(cr, uid, parent_id, self._message_read_fields, context=context) - except (orm.except_orm, osv.except_osv): - return False - - def message_read(self, cr, uid, ids=None, domain=None, message_unload_ids=None, thread_level=0, context=None, parent_id=False, limit=None): + def message_read(self, cr, uid, ids=None, domain=None, message_unload_ids=None, + thread_level=0, context=None, parent_id=False, limit=None): """ Read messages from mail.message, and get back a list of structured messages to be displayed as discussion threads. If IDs is set, fetch these records. Otherwise use the domain to fetch messages. @@ -388,46 +414,56 @@ class mail_message(osv.Model): ancestors and expandables :return list: list of message structure for the Chatter widget """ - # print 'message_read', ids, domain, message_unload_ids, thread_level, context, parent_id, limit assert thread_level in [0, 1], 'message_read() thread_level should be 0 (flat) or 1 (1 level of thread); given %s.' % thread_level domain = domain if domain is not None else [] message_unload_ids = message_unload_ids if message_unload_ids is not None else [] if message_unload_ids: domain += [('id', 'not in', message_unload_ids)] limit = limit or self._message_read_limit - read_messages = {} + message_tree = {} message_list = [] + parent_tree = {} # no specific IDS given: fetch messages according to the domain, add their parents if uid has access to if ids is None: ids = self.search(cr, uid, domain, context=context, limit=limit) - for message in self.read(cr, uid, ids, self._message_read_fields, context=context): - message_id = message['id'] - # if not in tree and not in message_loaded list - if not message_id in read_messages and not message_id in message_unload_ids: - read_messages[message_id] = message - message_list.append(self._message_get_dict(cr, uid, message, context=context)) + # fetch parent if threaded, sort messages + for message in self.browse(cr, uid, ids, context=context): + message_id = message.id + if message_id in message_tree: + continue + message_tree[message_id] = message - # get the older ancestor the user can read, update its ancestor field - if not thread_level: - message_list[-1]['parent_id'] = parent_id - continue - parent = self._get_parent(cr, uid, message, context=context) - while parent and parent.get('id') != parent_id: - message_list[-1]['parent_id'] = parent.get('id') - message = parent - parent = self._get_parent(cr, uid, message, context=context) - # if in thread: add its ancestor to the list of messages - if not message['id'] in read_messages and not message['id'] in message_unload_ids: - read_messages[message['id']] = message - message_list.append(self._message_get_dict(cr, uid, message, context=context)) + # find parent_id + if thread_level == 0: + tree_parent_id = parent_id + else: + tree_parent_id = message_id + parent = message + while parent.parent_id and parent.parent_id.id != parent_id: + parent = parent.parent_id + tree_parent_id = parent.id + if not parent.id in message_tree: + message_tree[parent.id] = parent + # newest messages first + parent_tree.setdefault(tree_parent_id, []) + if tree_parent_id != message_id: + parent_tree[tree_parent_id].append(self._message_read_dict(cr, uid, message_tree[message_id], parent_id=tree_parent_id, context=context)) + + if thread_level: + for key, message_id_list in parent_tree.iteritems(): + message_id_list.sort(key=lambda item: item['id']) + message_id_list.insert(0, self._message_read_dict(cr, uid, message_tree[key], context=context)) + + parent_list = parent_tree.items() + parent_list = sorted(parent_list, key=lambda item: max([msg.get('id') for msg in item[1]]) if item[1] else item[0], reverse=True) + message_list = [message for (key, msg_list) in parent_list for message in msg_list] # get the child expandable messages for the tree - message_list = sorted(message_list, key=lambda k: k['id']) - self._message_read_add_expandables(cr, uid, message_list, read_messages, thread_level=thread_level, - message_loaded_ids=message_unload_ids, domain=domain, parent_id=parent_id, context=context, limit=limit) - + self._message_read_dict_postprocess(cr, uid, message_list, message_tree, context=context) + self._message_read_add_expandables(cr, uid, message_list, message_tree, parent_tree, + thread_level=thread_level, message_unload_ids=message_unload_ids, domain=domain, parent_id=parent_id, context=context) return message_list # TDE Note: do we need this ? @@ -461,7 +497,6 @@ class mail_message(osv.Model): - otherwise: remove the id """ # Rules do not apply to administrator - # print '_search', uid, args if uid == SUPERUSER_ID: return super(mail_message, self)._search(cr, uid, args, offset=offset, limit=limit, order=order, context=context, count=count, access_rights_uid=access_rights_uid) @@ -592,11 +627,14 @@ class mail_message(osv.Model): other_ids = other_ids - set(document_related_ids) if not other_ids: return + raise orm.except_orm(_('Access Denied'), _('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: %s, Operation: %s)') % \ (self._description, operation)) def create(self, cr, uid, values, context=None): + if 'default_res_model' in context: + values['model']=context.get('default_res_model') if not values.get('message_id') and values.get('res_id') and values.get('model'): values['message_id'] = tools.generate_tracking_message_id('%(res_id)s-%(model)s' % values) newid = super(mail_message, self).create(cr, uid, values, context) diff --git a/addons/mail/mail_message_view.xml b/addons/mail/mail_message_view.xml index 93b35797fd5..7d2e9483773 100644 --- a/addons/mail/mail_message_view.xml +++ b/addons/mail/mail_message_view.xml @@ -59,21 +59,26 @@ + + - + + @@ -84,7 +89,6 @@ form tree,form - {'search_default_to_read_message':True} diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index f3203336615..ee00b88dbd9 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -74,17 +74,17 @@ class mail_thread(osv.AbstractModel): - message_unread: has uid unread message for the document - message_summary: html snippet summarizing the Chatter for kanban views """ res = dict((id, dict(message_unread=False, message_summary='')) for id in ids) + user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] - # search for unread messages, by reading directly mail.notification, as SUPERUSER - notif_obj = self.pool.get('mail.notification') - notif_ids = notif_obj.search(cr, SUPERUSER_ID, [ - ('partner_id.user_ids', 'in', [uid]), - ('message_id.res_id', 'in', ids), - ('message_id.model', '=', self._name), - ('read', '=', False) - ], context=context) - for notif in notif_obj.browse(cr, SUPERUSER_ID, notif_ids, context=context): - res[notif.message_id.res_id]['message_unread'] = True + # search for unread messages, directly in SQL to improve performances + cr.execute(""" SELECT m.res_id FROM mail_message m + RIGHT JOIN mail_notification n + ON (n.message_id = m.id AND n.partner_id = %s AND n.read = False) + WHERE m.model = %s AND m.res_id in %s""", + (user_pid, self._name, tuple(ids),)) + msg_ids = [result[0] for result in cr.fetchall()] + for msg_id in msg_ids: + res[msg_id]['message_unread'] = True for thread in self.browse(cr, uid, ids, context=context): cls = res[thread.id]['message_unread'] and ' class="oe_kanban_mail_new"' or '' diff --git a/addons/mail/mail_thread_view.xml b/addons/mail/mail_thread_view.xml index 07b24725b05..cdeade04d84 100644 --- a/addons/mail/mail_thread_view.xml +++ b/addons/mail/mail_thread_view.xml @@ -4,48 +4,126 @@ Inbox mail.wall - + mail.message + { + 'default_model': 'res.users', + 'default_res_id': uid + } + + +

    + Good Job! Your inbox is empty. +

    + Your inbox contains private messages or emails sent to you + as well as information related to documents or people you + follow. +

    +
    To: me mail.wall - + mail.message + { + 'default_model': 'res.users', + 'default_res_id': uid, + 'search_default_message_unread': True + } + + +

    + No private message. +

    + This list contains messages sent to you. +

    +
    - Favorites + Todo mail.wall - + mail.message + { + 'default_model': 'res.users', + 'default_res_id': uid, + 'search_default_message_unread': True + } + + +

    + No todo! +

    + When you process messages in your inbox, you can mark some + as todo. From this menu, you can process all your todo. +

    +
    Archives mail.wall - + { + 'default_model': 'res.users', + 'default_res_id': uid, + 'search_default_message_read': True + } + + +

    + No message found. +

    +
    Sent mail.wall - + { + 'default_model': 'res.users', + 'default_res_id': uid + } + + +

    + No message sent yet. +

    + Click on the top-right icon to compose a message. This + message will be sent by email if it's an internal contact. +

    +
    - - + @@ -61,7 +139,7 @@ - Favorites + Todo diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index af3cc3ed359..18d19a848cc 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -1,7 +1,36 @@ +/* ------------ TOPBAR MAIL BUTTON --------------- */ + +/* FIXME this css is not very pretty because it uses a + * 'button' element wich comes with a lot of inappropriate + * styling. Entypo is also a headache to center properly + * */ + +.openerp .oe_topbar_item.oe_topbar_compose_full_email{ + padding: 0px; + width: 32px; + height: 32px; +} +.openerp .oe_topbar_item.oe_topbar_compose_full_email button{ + position: relative; + top: -3px; /* centering entypo ... urgh */ + box-sizing: border-box; + border: none; + box-shadow: none; + color: white; + background: none; + text-shadow: 0px 1px 2px black; + width: 32px; + height: 32px; + padding: 0px; + margin: 0px + border-radius: 0px; +} /* ------------ MAIL WIDGET --------------- */ .openerp .oe_mail, .openerp .oe_mail *{ - box-sizing: border-box; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } .openerp .oe_mail { display: block; @@ -42,9 +71,10 @@ } .openerp .oe_mail .oe_msg .oe_msg_footer{ padding-left: 4px; + padding-top: 3px; overflow: hidden; - opacity:0.8; - -webkit-transition: opacity 0.2s linear; + margin-bottom: 4px; + font-size: 11px; } .openerp .oe_mail .oe_msg .oe_msg_content{ display: block; @@ -80,18 +110,24 @@ .openerp .oe_mail .oe_msg.oe_msg_indented .oe_msg_content{ padding-top:2px; } +.openerp .oe_mail .oe_msg.oe_msg_indented .oe_msg_footer{ + margin-bottom: 0px; +} + /* b) Votes (likes) */ + .openerp .oe_mail .oe_mail_vote_count{ display: inline; position: relative; - background: #7C7BAD; - color: white; + background: white; + box-shadow: 0px 0px 0px 1px rgba(124, 123, 173, 0.36) inset; + color: #7c7bad; text-shadow: none; border-radius: 3px; margin: 0px; padding-left: 3px; - padding-right: 18px; - margin-right: 3px; + padding-right: 15px; + margin-right: 5px; } .openerp .oe_mail .oe_mail_vote_count .oe_e{ position: absolute; @@ -102,12 +138,6 @@ /* c) Message action icons */ -.openerp .oe_mail .oe_msg.oe_msg_unread .oe_unread{ - display:none; -} -.openerp .oe_mail .oe_msg.oe_msg_read .oe_read{ - display:none; -} .openerp .oe_mail .oe_msg .oe_msg_icons{ float: right; margin-top: 4px; @@ -115,6 +145,9 @@ margin-left: 8px; height: 24px; -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .openerp .oe_mail .oe_msg .oe_msg_icons span{ float:right; @@ -128,10 +161,16 @@ color: #FFF; text-shadow: 0px 1px #AAA,0px -1px #AAA, -1px 0px #AAA, 1px 0px #AAA, 0px 3px 3px rgba(0,0,0,0.1); -webkit-transition: all 0.2s linear; + -moz-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + transition: all 0.2s linear; } .openerp .oe_mail .oe_msg:hover .oe_msg_icons a{ opacity: 1; -webkit-transition: all 0.1s linear; + -moz-transition: all 0.1s linear; + -o-transition: all 0.1s linear; + transition: all 0.1s linear; } .openerp .oe_mail .oe_msg .oe_msg_icons .oe_star:hover a{ color: #FFF6C0; @@ -155,7 +194,7 @@ } .openerp .oe_mail .oe_msg .oe_msg_content textarea{ width: 100%; - height: 32px; + height: 64px; margin: 0px; padding: 0px; resize: vertical; @@ -171,6 +210,150 @@ width: 100%; } +/* --------------------- ATTACHMENTS --------------------- */ + +.openerp .oe_mail .oe_msg_attachment_list{ + display: none; + margin-top: 12px; + margin-bottom: 12px; +} +.openerp .oe_mail .oe_msg_composer .oe_msg_attachment_list{ + display: block; +} +.openerp .oe_mail .oe_attachment{ + display: inline-block; + width: 100px; + margin: 2px; + min-height: 80px; + position: relative; + border-radius: 3px; + text-align: center; + vertical-align: top; +} +.openerp .oe_mail .oe_attachment .oe_name{ + display: inline-block; + max-width: 100%; + padding: 1px 3px; + margin-top: 50px; + margin-bottom: 5px; + background: rgba(124, 123, 173, 0.13); + overflow: hidden; + color: #4c4c4c; + text-shadow: none; + border-radius: 3px; +} + +.openerp .oe_mail .oe_attachment.oe_preview{ + background: url( data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAJ0lEQVQYV2MsLS39z4AGLCws0IUYGIeCwrVr12J45sSJE5ieGQIKAbuZKf/EMCs7AAAAAElFTkSuQmCC ); +} +.openerp .oe_mail .oe_attachment .oe_progress_bar{ + display: none; + position: absolute; + top: 18px; + left: 16px; + right: 16px; + height: 17px; + line-height: 13px; + padding: 0px; + background: #4BBD00; + color: white; + text-align: center; + border-radius: 3px; + border: solid 1px rgba(0,0,0,0.2); + box-shadow: 0px 3px 10px rgba(0, 0, 0, 0.34); + -webkit-animation: oe_mail_attach_loading_anim 0.75s infinite linear; + -moz-animation: oe_mail_attach_loading_anim 0.75s infinite linear; + -o-animation: oe_mail_attach_loading_anim 0.75s infinite linear; + animation: oe_mail_attach_loading_anim 0.75s infinite linear; +} +.openerp .oe_mail .oe_attachment.oe_uploading .oe_progress_bar{ + display: block; +} +@-webkit-keyframes oe_mail_attach_loading_anim{ + 0% { background: #4BBD00 } + 50% { background: #009123 } + 100% { background: #4BBD00 } +} +@-moz-keyframes oe_mail_attach_loading_anim{ + 0% { background: #4BBD00 } + 50% { background: #009123 } + 100% { background: #4BBD00 } +} +@-o-keyframes oe_mail_attach_loading_anim{ + 0% { background: #4BBD00 } + 50% { background: #009123 } + 100% { background: #4BBD00 } +} +@keyframes oe_mail_attach_loading_anim{ + 0% { background: #4BBD00 } + 50% { background: #009123 } + 100% { background: #4BBD00 } +} +.openerp .oe_mail .oe_attachment.oe_preview .oe_name{ + position: absolute; + bottom: 0px; + margin: 0px; + left: 0px; + right: 0px; + max-height: 64px; + background: rgba(0,0,0,0.8); + color: white; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} +.openerp .oe_mail .oe_attachment.oe_preview:hover .oe_name{ + opacity: 1; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} +.openerp .oe_mail .oe_attachment img{ + position: absolute; + width: 48px; + height: 48px; + top: 0px; + left: 50%; + margin-left: -24px; +} +.openerp .oe_mail .oe_attachment.oe_preview img{ + display: block; + position: relative; + margin:0px; + width: 100px; + height: 100px; + border-radius: 3px; + margin-left: -50px; +} +.openerp .oe_mail .oe_attachment .oe_delete{ + display: none; +} +.openerp .oe_mail .oe_msg_composer .oe_attachment .oe_delete{ + display: block; + position: absolute; + top: -7px; + right: 0px; + color: black; + text-shadow: 1px 0px white, -1px 0px white, 0px 1px white, 0px -1px white; + cursor: pointer; + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} +.openerp .oe_mail .oe_msg_composer .oe_attachment:hover .oe_delete{ + opacity: 1; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} /* ---------------- MESSAGE QUICK COMPOSER --------------- */ .openerp .oe_mail .oe_msg_composer .oe_msg_footer{ @@ -178,37 +361,6 @@ padding-top: 2px; padding-bottom:6px; } -.openerp .oe_mail .oe_msg_attachments.oe_hidden, -.openerp .oe_mail .oe_msg_images.oe_hidden{ - margin:0px; - border: none; - display: none; -} -.openerp .oe_mail .oe_msg_attachments{ - margin-bottom: 4px; - margin-right: 0px; - font-size: 12px; - border-radius: 2px; - border: solid 1px rgba(124,123,173,0.14); -} -.openerp .oe_mail .oe_msg_attachments .oe_attachment{ - padding: 2px; - padding-left: 4px; - padding-right: 4px; -} -.openerp .oe_mail .oe_msg_attachments .oe_attachment .oe_e{ - font-size: 23px; - margin-top: -5px; -} -.openerp .oe_mail .oe_msg_attachments .oe_attachment .oe_e:hover{ - text-decoration: none; -} -.openerp .oe_mail .oe_msg_attachments .oe_attachment:nth-child(odd){ - background:white; -} -.openerp .oe_mail .oe_msg_attachments .oe_attachment:nth-child(even){ - background: #F4F5FA; -} .openerp .oe_mail .oe_msg_images { display: block; } @@ -269,6 +421,7 @@ .openerp .oe_mail .oe_msg_content.oe_msg_more_message{ text-align: right; + cursor: pointer; } .openerp .oe_mail .oe_msg_content.oe_msg_more_message .oe_separator{ height: 0; @@ -280,7 +433,7 @@ } .openerp .oe_mail .oe_msg_more_message .oe_msg_fetch_more { background: white; - margin-right: 280px; + margin-right: 210px; padding-left: 8px; padding-right: 8px; text-decoration: none; @@ -298,6 +451,7 @@ padding-top: 5px; width: 160px; float: right; + margin-right: 16px; } /* a) THE FOLLOW BUTTON */ @@ -308,9 +462,22 @@ width:100%; } .openerp .oe_followers button.oe_follower.oe_following{ + color: white; background-color: #3465A4; background-image: -webkit-linear-gradient(top, #729FCF, #3465A4); + background-image: -moz-linear-gradient(top, #729FCF, #3465A4); + background-image: -ms-linear-gradient(top, #729FCF, #3465A4); + background-image: -o-linear-gradient(top, #729FCF, #3465A4); + background-image: linear-gradient(to bottom, #729FCF, #3465A4); +} +.openerp .oe_followers button.oe_follower.oe_following:hover{ color: white; + background-color: #A21A1A; + background-image: -webkit-linear-gradient(top, #DF3F3F, #A21A1A); + background-image: -moz-linear-gradient(top, #DF3F3F, #A21A1A); + background-image: -ms-linear-gradient(top, #DF3F3F, #A21A1A); + background-image: -o-linear-gradient(top, #DF3F3F, #A21A1A); + background-image: linear-gradient(to bottom, #DF3F3F, #A21A1A); } .openerp .oe_followers button.oe_follower .oe_follow, @@ -371,12 +538,17 @@ .openerp .oe_record_thread{ display: block; - margin-right: 180px; + margin-left: 16px; + margin-right: 212px; } /* ----------- INBOX INTEGRATION ----------- */ .openerp .oe_mail_wall .oe_mail{ margin: 16px; - width: 720px; + width: 600px; +} + +.openerp .oe_mail .oe_view_nocontent > p { + padding-left: 15px; } diff --git a/addons/mail/static/src/css/mail_group.css b/addons/mail/static/src/css/mail_group.css index b700cb8c80f..3146247c1bc 100644 --- a/addons/mail/static/src/css/mail_group.css +++ b/addons/mail/static/src/css/mail_group.css @@ -68,30 +68,31 @@ min-height: 120px; } -.oe_group_details a, .oe_group_details a:hover { - font-weight: bold; - color: #4c4c4c; -} - .oe_group_details h4 { margin: 0; font-size: 13px; } -.oe_group_details h4 a { - color: #4c4c4c; -} - -.oe_group_details h4 a:hover { - text-decoration: underline; -} - .oe_group_details ul { margin: 3px 0 5px; padding: 0; list-style: none; } -.oe_group_details li { +.openerp .oe_group_details li { margin: 2px 0; } + +.openerp .oe_group_button { + padding-top: 7px; +} + +.openerp .oe_group_button .oe_group_join { + color: white; + background-color: #3465A4; + background-image: -webkit-linear-gradient(top, #729FCF, #3465A4); + background-image: -moz-linear-gradient(top, #729FCF, #3465A4); + background-image: -ms-linear-gradient(top, #729FCF, #3465A4); + background-image: -o-linear-gradient(top, #729FCF, #3465A4); + background-image: linear-gradient(to bottom, #729FCF, #3465A4); +} diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 1eb3c29e556..e214168cb25 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -26,7 +26,8 @@ openerp.mail = function (session) { 'default_use_template', 'default_partner_ids', 'default_model', 'default_res_id', 'default_content_subtype', , 'default_subject', 'default_body', 'active_id', 'lang', 'bin_raw', 'tz', - 'active_model', 'edi_web_url_view', 'active_ids'] + 'active_model', 'edi_web_url_view', 'active_ids', + 'default_attachment_ids'] for (var key in action.context) { if (_.indexOf(context_keys, key) == -1) { action.context[key] = null; @@ -54,8 +55,8 @@ openerp.mail = function (session) { mail.ChatterUtils = { /* Get an image in /web/binary/image?... */ - get_image: function (session, model, field, id) { - return session.prefix + '/web/binary/image?session_id=' + session.session_id + '&model=' + model + '&field=' + field + '&id=' + (id || ''); + get_image: function (session, model, field, id, resize) { + return session.prefix + '/web/binary/image?session_id=' + session.session_id + '&model=' + model + '&field=' + field + '&id=' + (id || '') + '&resize=' + (resize ? encodeURIComponent(resize) : ''); }, /* Get the url of an attachment {'id': id} */ @@ -111,10 +112,265 @@ openerp.mail = function (session) { } return domain; - } + }, + + // inserts zero width space between each letter of a string so that + // the word will correctly wrap in html boxes smaller than the text + breakword: function(str){ + var out = ''; + if (!str) { + return str; + } + for(var i = 0, len = str.length; i < len; i++){ + out += _.str.escapeHTML(str[i]) + '​'; + } + return out; + }, + + // returns the file type of a file based on its extension + // As it only looks at the extension it is quite approximative. + filetype: function(url){ + url = url.filename || url; + var tokens = url.split('.'); + if(tokens.length <= 1){ + return 'unknown'; + } + var extension = tokens[tokens.length -1]; + if(extension.length === 0){ + return 'unknown'; + }else{ + extension = extension.toLowerCase(); + } + var filetypes = { + 'webimage': ['png','jpg','jpeg','jpe','gif'], // those have browser preview + 'image': ['tif','tiff','tga', + 'bmp','xcf','psd','ppm','pbm','pgm','pnm','mng', + 'xbm','ico','icon','exr','webp','psp','pgf','xcf', + 'jp2','jpx','dng','djvu','dds'], + 'vector': ['ai','svg','eps','vml','cdr','xar','cgm','odg','sxd'], + 'print': ['dvi','pdf','ps'], + 'document': ['doc','docx','odm','odt'], + 'presentation': ['key','keynote','odp','pps','ppt'], + 'font': ['otf','ttf','woff','eot'], + 'archive': ['zip','7z','ace','apk','bzip2','cab','deb','dmg','gzip','jar', + 'rar','tar','gz','pak','pk3','pk4','lzip','lz','rpm'], + 'certificate': ['cer','key','pfx','p12','pem','crl','der','crt','csr'], + 'audio': ['aiff','wav','mp3','ogg','flac','wma','mp2','aac', + 'm4a','ra','mid','midi'], + 'video': ['asf','avi','flv','mkv','m4v','mpeg','mpg','mpe','wmv','mp4','ogm'], + 'text': ['txt','rtf','ass'], + 'html': ['html','xhtml','xml','htm','css'], + 'disk': ['iso','nrg','img','ccd','sub','cdi','cue','mds','mdx'], + 'script': ['py','js','c','cc','cpp','cs','h','java','bat','sh', + 'd','rb','pl','as','cmd','coffee','m','r','vbs','lisp'], + 'spreadsheet': ['123','csv','ods','numbers','sxc','xls','vc','xlsx'], + 'binary': ['exe','com','bin','app'], + }; + for(filetype in filetypes){ + var ext_list = filetypes[filetype]; + for(var i = 0, len = ext_list.length; i < len; i++){ + if(extension === ext_list[i]){ + return filetype; + } + } + } + return 'unknown'; + }, + }; + /** + * ------------------------------------------------------------ + * MessageCommon + * ------------------------------------------------------------ + * + * Common base for expandables, chatter messages and composer. It manages + * the various variables common to those models. + */ + + mail.MessageCommon = session.web.Widget.extend({ + + /** + * ------------------------------------------------------------ + * FIXME: this comment was moved as is from the ThreadMessage Init as + * part of a refactoring. Check that it is still correct + * ------------------------------------------------------------ + * This widget handles the display of a messages in a thread. + * Displays a record and performs some formatting on the record : + * - record.date: formatting according to the user timezone + * - record.timerelative: relative time givein by timeago lib + * - record.avatar: image url + * - record.attachment_ids[].url: url of each attachmentThe + * thread view : + * - root thread + * - - sub message (parent_id = root message) + * - - - sub thread + * - - - - sub sub message (parent id = sub thread) + * - - sub message (parent_id = root message) + * - - - sub thread + */ + + init: function (parent, datasets, options) { + this._super(parent, options); + + // record options + this.options = datasets.options || options || {}; + // record domain and context + this.domain = datasets.domain || options.domain || []; + this.context = _.extend({ + default_model: false, + default_res_id: 0, + default_parent_id: false }, options.context || {}); + + // data of this message + this.id = datasets.id || false, + this.last_id = this.id, + this.model = datasets.model || this.context.default_model || false, + this.res_id = datasets.res_id || this.context.default_res_id || false, + this.parent_id = datasets.parent_id || false, + this.type = datasets.type || false, + this.is_author = datasets.is_author || false, + this.is_private = datasets.is_private || false, + this.subject = datasets.subject || false, + this.name = datasets.name || false, + this.record_name = datasets.record_name || false, + this.body = datasets.body || false, + this.vote_nb = datasets.vote_nb || 0, + this.has_voted = datasets.has_voted || false, + this.is_favorite = datasets.is_favorite || false, + this.thread_level = datasets.thread_level || 0, + this.to_read = datasets.to_read || false, + this.author_id = datasets.author_id || false, + this.attachment_ids = datasets.attachment_ids || [], + this.partner_ids = datasets.partner_ids || []; + this._date = datasets.date; + + this.format_data(); + + // record options and data + this.show_record_name = this.record_name && !this.thread_level && this.model != 'res.partner'; + this.options.show_read = false; + this.options.show_unread = false; + if (this.options.show_read_unread_button) { + if (this.options.read_action == 'read') this.options.show_read = true; + else if (this.options.read_action == 'unread') this.options.show_unread = true; + else { + this.options.show_read = this.to_read; + this.options.show_unread = !this.to_read; + this.options.rerender = true; + this.options.toggle_read = true; + } + } + this.parent_thread = parent.messages != undefined ? parent : this.options.root_thread; + this.thread = false; + }, + + /* Convert date, timerelative and avatar in displayable data. */ + format_data: function () { + + //formating and add some fields for render + if (this._date) { + this.date = session.web.format_value(this._date, {type:"datetime"}); + this.timerelative = $.timeago(this.date); + } + if (this.type == 'email' && (!this.author_id || !this.author_id[0])) { + this.avatar = ('/mail/static/src/img/email_icon.png'); + } else if (this.author_id && this.template != 'mail.compose_message') { + this.avatar = mail.ChatterUtils.get_image(this.session, 'res.partner', 'image_small', this.author_id[0]); + } else { + this.avatar = mail.ChatterUtils.get_image(this.session, 'res.users', 'image_small', this.session.uid); + } + + }, + + + /* upload the file on the server, add in the attachments list and reload display + */ + display_attachments: function () { + for (var l in this.attachment_ids) { + var attach = this.attachment_ids[l]; + if (!attach.formating) { + attach.url = mail.ChatterUtils.get_attachment_url(this.session, attach); + attach.filetype = mail.ChatterUtils.filetype(attach.filename); + attach.name = mail.ChatterUtils.breakword(attach.name || attach.filename); + attach.formating = true; + } + } + this.$(".oe_msg_attachment_list").html( session.web.qweb.render('mail.thread.message.attachments', {'widget': this}) ); + }, + + /* return the link to resized image + */ + attachments_resize_image: function (id, resize) { + return mail.ChatterUtils.get_image(this.session, 'ir.attachment', 'datas', id, resize); + }, + + /* get all child message id linked. + * @return array of id + */ + get_child_ids: function () { + return _.map(this.get_childs(), function (val) { return val.id; }); + }, + + /* get all child message linked. + * @return array of message object + */ + get_childs: function (nb_thread_level) { + var res=[]; + if (arguments[1] && this.id) res.push(this); + if ((isNaN(nb_thread_level) || nb_thread_level>0) && this.thread) { + _(this.thread.messages).each(function (val, key) { + res = res.concat( val.get_childs((isNaN(nb_thread_level) ? undefined : nb_thread_level-1), true) ); + }); + } + return res; + }, + + /** + * search a message in all thread and child thread. + * This method return an object message. + * @param {object}{int} option.id + * @param {object}{string} option.model + * @param {object}{boolean} option._go_thread_wall + * private for check the top thread + * @return thread object + */ + browse_message: function (options) { + // goto the wall thread for launch browse + if (!options._go_thread_wall) { + options._go_thread_wall = true; + for (var i in this.options.root_thread.messages) { + var res=this.options.root_thread.messages[i].browse_message(options); + if (res) return res; + } + } + + if (this.id==options.id) + return this; + + for (var i in this.thread.messages) { + if (this.thread.messages[i].thread) { + var res=this.thread.messages[i].browse_message(options); + if (res) return res; + } + } + + return false; + }, + + /** + * call on_message_delete on his parent thread + */ + destroy: function () { + + this._super(); + this.parent_thread.on_message_detroy(this); + + } + + }); + /** * ------------------------------------------------------------ * ComposeMessage widget @@ -126,7 +382,7 @@ openerp.mail = function (session) { * When the user focuses the textarea, the compose message is instantiated. */ - mail.ThreadComposeMessage = session.web.Widget.extend({ + mail.ThreadComposeMessage = mail.MessageCommon.extend({ template: 'mail.compose_message', /** @@ -138,45 +394,22 @@ openerp.mail = function (session) { */ init: function (parent, datasets, options) { - var self = this; - this._super(parent); - this.context = options.context || {}; - this.options = options.options; - + this._super(parent, datasets, options); this.show_compact_message = false; - - // data of this compose message - this.attachment_ids = []; - this.id = datasets.id; - this.model = datasets.model; - this.res_model = datasets.res_model; - this.is_private = datasets.is_private || false; - this.partner_ids = datasets.partner_ids || []; - this.avatar = mail.ChatterUtils.get_image(this.session, 'res.users', 'image_small', this.session.uid); - this.thread_level = datasets.thread_level; - this.parent_thread= parent.messages!= undefined ? parent : false; - - this.ds_attachment = new session.web.DataSetSearch(this, 'ir.attachment'); this.show_delete_attachment = true; - - this.fileupload_id = _.uniqueId('oe_fileupload_temp'); - $(window).on(self.fileupload_id, self.on_attachment_loaded); }, start: function () { + this._super.apply(this, arguments); + + this.ds_attachment = new session.web.DataSetSearch(this, 'ir.attachment'); + this.fileupload_id = _.uniqueId('oe_fileupload_temp'); + $(window).on(this.fileupload_id, this.on_attachment_loaded); + this.display_attachments(); this.bind_events(); }, - /* upload the file on the server, add in the attachments list and reload display - */ - display_attachments: function () { - this.$(".oe_msg_attachment_list").html( - session.web.qweb.render('mail.thread.message.attachments', {'widget': this}) ); - // event: delete an attachment - this.$(".oe_msg_attachment_list").on('click', '.oe_mail_attachment_delete', this.on_attachment_delete); - }, - /* when a user click on the upload button, send file read on_attachment_loaded */ on_attachment_change: function (event) { @@ -263,24 +496,31 @@ openerp.mail = function (session) { this.$('textarea.oe_compact').on('focus', _.bind( this.on_compose_expandable, this)); // set the function called when attachments are added - this.$el.on('change', 'input.oe_form_binary_file', _.bind( this.on_attachment_change, this) ); + this.$('input.oe_form_binary_file').on('change', _.bind( this.on_attachment_change, this) ); - this.$el.on('click', '.oe_cancel', _.bind( this.on_cancel, this) ); - this.$el.on('click', '.oe_post', _.bind( this.on_message_post, this) ); - this.$el.on('click', '.oe_full', _.bind( this.on_compose_fullmail, this, 'reply') ); + this.$('.oe_cancel').on('click', _.bind( this.on_cancel, this) ); + this.$('.oe_post').on('click', _.bind( this.on_message_post, this) ); + this.$('.oe_full').on('click', _.bind( this.on_compose_fullmail, this, this.id ? 'reply' : 'comment') ); /* stack for don't close the compose form if the user click on a button */ - this.$el.on('mousedown', '.oe_msg_footer', _.bind( function () { this.stay_open = true; }, this)); - this.$('textarea:not(.oe_compact):first').on('focus, mouseup, keydown', _.bind( function () { this.stay_open = false; }, this)); - this.$('textarea:not(.oe_compact):first').autosize(); + this.$('.oe_msg_footer').on('mousedown', _.bind( function () { this.stay_open = true; }, this)); + var ev_stay = {}; + ev_stay.mouseup = ev_stay.keydown = ev_stay.focus = function () { self.stay_open = false; }; + this.$('textarea:not(.oe_compact)').on(ev_stay); + this.$('textarea:not(.oe_compact)').autosize(); // auto close - this.$el.on('blur', 'textarea:not(.oe_compact):first', _.bind( this.on_compose_expandable, this)); + this.$('textarea:not(.oe_compact)').on('blur', _.bind( this.on_compose_expandable, this)); + + // event: delete child attachments off the oe_msg_attachment_list box + this.$(".oe_msg_attachment_list").on('click', '.oe_delete', this.on_attachment_delete); }, on_compose_fullmail: function (default_composition_mode) { if (default_composition_mode == 'reply') { var context = { + 'default_model': this.context.default_model, + 'default_res_id': this.context.default_res_id, 'default_composition_mode': default_composition_mode, 'default_parent_id': this.id, 'default_body': mail.ChatterUtils.get_text2html(this.$el ? (this.$el.find('textarea:not(.oe_compact)').val() || '') : ''), @@ -357,10 +597,15 @@ openerp.mail = function (session) { this.context.default_parent_id, attachments, this.parent_thread.context - ]).then(function (record) { + ]).done(function (record) { var thread = self.parent_thread; + + if (self.options.display_indented_thread < self.thread_level && thread.parent_message) { + thread = thread.parent_message.parent_thread; + } // create object and attach to the thread object - thread.message_fetch(false, false, [record], function (arg, data) { + thread.message_fetch([['id', 'child_of', [self.id]]], false, [record], function (arg, data) { + data[0].no_sorted = true; var message = thread.create_message_object( data[0] ); // insert the message on dom thread.insert_message( message, self.$el ); @@ -419,30 +664,16 @@ openerp.mail = function (session) { * - - visible message * - - expandable */ - mail.ThreadExpandable = session.web.Widget.extend({ + mail.ThreadExpandable = mail.MessageCommon.extend({ template: 'mail.thread.expandable', - init: function (parent, datasets, context) { - this._super(parent); - this.domain = datasets.domain || []; - this.options = datasets.options; - this.context = _.extend({ - default_model: 'mail.thread', - default_res_id: 0, - default_parent_id: false }, context || {}); - - // data of this expandable message - this.id = datasets.id || -1, - this.model = datasets.model || false, - this.parent_id = datasets.parent_id || false, - this.nb_messages = datasets.nb_messages || 0, - this.thread_level = datasets.thread_level || 0, - this.type = 'expandable', - this.max_limit = this.id < 0 || false, - this.flag_used = false, - this.parent_thread= parent.messages!= undefined ? parent : this.options._parents[0]; + init: function (parent, datasets, options) { + this._super(parent, datasets, options); + this.type = 'expandable'; + this.max_limit = datasets.max_limit; + this.nb_messages = datasets.nb_messages; + this.flag_used = false; }, - start: function () { this._super.apply(this, arguments); @@ -460,7 +691,7 @@ openerp.mail = function (session) { * Bind events in the widget. Each event is slightly described * in the function. */ bind_events: function () { - this.$el.on('click', 'a.oe_msg_fetch_more', this.on_expandable); + this.$('.oe_msg_more_message').on('click', this.on_expandable); }, animated_destroy: function (fadeTime) { @@ -480,154 +711,36 @@ openerp.mail = function (session) { } this.flag_used = true; - this.animated_destroy(200); - this.parent_thread.message_fetch(this.domain, this.context); + var self = this; + + // read messages + self.parent_thread.message_fetch(this.domain, this.context, false, function (arg, data) { + // insert the message on dom after this message + self.id = false; + self.parent_thread.switch_new_message( data, self.$el ); + self.animated_destroy(200); + }); + return false; }, - /** - * call on_message_delete on his parent thread - */ - destroy: function () { - - this._super(); - this.parent_thread.on_message_detroy(this); - - } }); - /** - * ------------------------------------------------------------ - * Thread Message Widget - * ------------------------------------------------------------ - * This widget handles the display of a messages in a thread. - * Displays a record and performs some formatting on the record : - * - record.date: formatting according to the user timezone - * - record.timerelative: relative time givein by timeago lib - * - record.avatar: image url - * - record.attachment_ids[].url: url of each attachmentThe - * thread view : - * - root thread - * - - sub message (parent_id = root message) - * - - - sub thread - * - - - - sub sub message (parent id = sub thread) - * - - sub message (parent_id = root message) - * - - - sub thread - */ - mail.ThreadMessage = session.web.Widget.extend({ + mail.ThreadMessage = mail.MessageCommon.extend({ template: 'mail.thread.message', - /** - * @param {Object} parent parent - * @param {Array} [domain] - * @param {Object} [context] context of the thread. It should - contain at least default_model, default_res_id. Please refer to - the ComposeMessage widget for more information about it. - * @param {Object} [options] - * @param {Object} [thread] read obout mail.Thread object - * @param {Object} [message] - * @param {Number} [truncate_limit=250] number of character to - * display before having a "show more" link; note that the text - * will not be truncated if it does not have 110% of the parameter - * @param {Boolean} [show_record_name] - *... @param {int} [show_reply_button] number thread level to display the reply button - *... @param {int} [show_read_unread_button] number thread level to display the read/unread button - */ - init: function (parent, datasets, context) { - this._super(parent); - - // record domain and context - this.domain = datasets.domain || []; - this.context = _.extend({ - default_model: 'mail.thread', - default_res_id: 0, - default_parent_id: false }, context || {}); - - // record options - this.options = datasets.options; - - // data of this message - this.id = datasets.id || -1, - this.model = datasets.model || false, - this.parent_id = datasets.parent_id || false, - this.res_id = datasets.res_id || false, - this.type = datasets.type || false, - this.is_author = datasets.is_author || false, - this.is_private = datasets.is_private || false, - this.subject = datasets.subject || false, - this.name = datasets.name || false, - this.record_name = datasets.record_name || false, - this.body = datasets.body || false, - this.vote_nb = datasets.vote_nb || 0, - this.has_voted = datasets.has_voted || false, - this.is_favorite = datasets.is_favorite || false, - this.thread_level = datasets.thread_level || 0, - this.to_read = datasets.to_read || false, - this.author_id = datasets.author_id || [], - this.attachment_ids = datasets.attachment_ids || [], - this._date = datasets.date; - - - this.show_reply_button = this.options.show_compose_message && this.options.show_reply_button > this.thread_level; - this.show_read_unread_button = this.options.show_read_unread_button > this.thread_level; - - // record options and data - this.parent_thread= parent.messages!= undefined ? parent : this.options._parents[0]; - this.thread = false; - - if ( this.id > 0 ) { - this.formating_data(); - } - - this.ds_notification = new session.web.DataSetSearch(this, 'mail.notification'); - this.ds_message = new session.web.DataSetSearch(this, 'mail.message'); - this.ds_follow = new session.web.DataSetSearch(this, 'mail.followers'); - }, - - /* Convert date, timerelative and avatar in displayable data. */ - formating_data: function () { - - //formating and add some fields for render - this.date = session.web.format_value(this._date, {type:"datetime"}); - this.timerelative = $.timeago(this.date); - if (this.type == 'email') { - this.avatar = ('/mail/static/src/img/email_icon.png'); - } else { - this.avatar = mail.ChatterUtils.get_image(this.session, 'res.partner', 'image_small', this.author_id[0]); - } - for (var l in this.attachment_ids) { - var attach = this.attachment_ids[l]; - attach['url'] = mail.ChatterUtils.get_attachment_url(this.session, attach); - - if ((attach.filename || attach.name).match(/[.](jpg|jpg|gif|png|tif|svg)$/i)) { - attach.is_image = true; - attach['url'] = mail.ChatterUtils.get_image(this.session, 'ir.attachment', 'datas', attach.id); - } - } - }, start: function () { this._super.apply(this, arguments); this.expender(); - this.$el.hide().fadeIn(750, function () {$(this).css('display', '');}); - this.resize_img(); this.bind_events(); if(this.thread_level < this.options.display_indented_thread) { this.create_thread(); } this.$('.oe_msg_attachments, .oe_msg_images').addClass("oe_hidden"); - }, - resize_img: function () { - var resize = function () { - var h = $(this).height(); - var w = $(this).width(); - if ( h > 100 || w >100 ) { - var ratio = 100 / (h > w ? h : w); - $(this).attr("width", parseInt( w*ratio )).attr("height", parseInt( h*ratio )); - } - }; - this.$("img").load(resize).each(resize); + this.ds_notification = new session.web.DataSetSearch(this, 'mail.notification'); + this.ds_message = new session.web.DataSetSearch(this, 'mail.message'); }, /** @@ -635,30 +748,15 @@ openerp.mail = function (session) { * in the function. */ bind_events: function () { var self = this; + // header icons bindings + this.$('.oe_read').on('click', this.on_message_read); + this.$('.oe_unread').on('click', this.on_message_unread); + this.$('.oe_msg_delete').on('click', this.on_message_delete); + this.$('.oe_reply').on('click', this.on_message_reply); + this.$('.oe_star').on('click', this.on_star); + this.$('.oe_msg_vote').on('click', this.on_vote); + this.$('.oe_view_attachments').on('click', this.on_view_attachments); - // event: click on 'Attachment(s)' in msg - this.$('.oe_mail_msg_view_attachments').on('click', function (event) { - var attach = self.$('.oe_msg_attachments:first, .oe_msg_images:first'); - if ( self.$('.oe_msg_attachments:first').hasClass("oe_hidden") ) { - attach.removeClass("oe_hidden"); - } else { - attach.addClass("oe_hidden"); - } - self.resize_img(); - }); - // event: click on icone 'Read' in header - this.$el.on('click', '.oe_read', this.on_message_read_unread); - // event: click on icone 'UnRead' in header - this.$el.on('click', '.oe_unread', this.on_message_read_unread); - // event: click on 'Delete' in msg side menu - this.$el.on('click', '.oe_msg_delete', this.on_message_delete); - - // event: click on 'Reply' in msg - this.$el.on('click', '.oe_reply', this.on_message_reply); - // event: click on 'Vote' button - this.$el.on('click', '.oe_msg_vote', this.on_vote); - // event: click on 'starred/favorite' button - this.$el.on('click', '.oe_star', this.on_star); }, /* Call the on_compose_message on the thread of this message. */ @@ -673,7 +771,7 @@ openerp.mail = function (session) { this.$('.oe_msg_body:first').expander({ slicePoint: this.options.truncate_limit, expandText: 'read more', - userCollapseText: '[^]', + userCollapseText: 'read less', detailClass: 'oe_msg_tail', moreClass: 'oe_mail_expand', lessClass: 'oe_mail_reduce', @@ -717,6 +815,17 @@ openerp.mail = function (session) { } }, + /* Call the on_compose_message on the thread of this message. */ + on_view_attachments:function (event) { + event.stopPropagation(); + var self = this; + if (!this.toggle_attachment) { + self.display_attachments(); + this.toggle_attachment = true; + } + this.$('.oe_msg_attachment_list').toggle(200); + }, + /** * Wait a confirmation for delete the message on the DB. * Make an animate destroy @@ -732,81 +841,90 @@ openerp.mail = function (session) { return false; }, + /* Check if the message must be destroy and detroy it or check for re render widget + * @param {callback} apply function + */ + check_for_rerender: function () { + var self = this; + + var messages = [this].concat(this.get_childs()); + var message_ids = _.map(messages, function (msg) { return msg.id;}); + var domain = mail.ChatterUtils.expand_domain( this.options.root_thread.domain ) + .concat([["id", "in", message_ids ]]); + + return this.parent_thread.ds_message.call('message_read', [undefined, domain, [], !!this.parent_thread.options.display_indented_thread, this.context, this.parent_thread.id]) + .then( function (records) { + // remove message not loaded + _.map(messages, function (msg) { + if(!_.find(records, function (record) { return record.id == msg.id; })) { + msg.animated_destroy(150); + } else { + msg.renderElement(); + msg.start() + } + }); + + }); + }, + + on_message_read: function (event) { + event.stopPropagation(); + this.on_message_read_unread(true); + return false; + }, + + on_message_unread: function (event) { + event.stopPropagation(); + this.on_message_read_unread(false); + return false; + }, + /*The selected thread and all childs (messages/thread) became read * @param {object} mouse envent */ - on_message_read_unread: function (event) { - event.stopPropagation(); - var self=this; + on_message_read_unread: function (read_value) { + var self = this; + var messages = [this].concat(this.get_childs()); - if ( (this.to_read && this.options.typeof_thread == 'inbox') || - (!this.to_read && this.options.typeof_thread == 'archives')) { - this.animated_destroy(150); - } - - // if this message is read, all childs message display is read - this.ds_notification.call('set_message_read', [ [this.id].concat( this.get_child_ids() ) , this.to_read, this.context]).pipe(function () { - self.$el.removeClass(self.to_read ? 'oe_msg_unread':'oe_msg_read').addClass(self.to_read ? 'oe_msg_read':'oe_msg_unread'); - self.to_read = !self.to_read; - }); - return false; - }, - - /** - * search a message in all thread and child thread. - * This method return an object message. - * @param {object}{int} option.id - * @param {object}{string} option.model - * @param {object}{boolean} option._go_thread_wall - * private for check the top thread - * @return thread object - */ - browse_message: function (options) { - // goto the wall thread for launch browse - if (!options._go_thread_wall) { - options._go_thread_wall = true; - for (var i in this.options._parents[0].messages) { - var res=this.options._parents[0].messages[i].browse_message(options); - if (res) return res; - } - } - - if (this.id==options.id) - return this; - - for (var i in this.thread.messages) { - if (this.thread.messages[i].thread) { - var res=this.thread.messages[i].browse_message(options); - if (res) return res; + // inside the inbox, when the user mark a message as read/done, don't apply this value + // for the stared/favorite message + if (this.options.view_inbox && read_value) { + var messages = _.filter(messages, function (val) { return !val.is_favorite && val.id; }); + if (!messages.length) { + this.check_for_rerender(); + return false; } } + var message_ids = _.map(messages, function (val) { return val.id; }); + this.ds_notification.call('set_message_read', [message_ids, read_value, this.context]) + .then(function () { + // apply modification + _.each(messages, function (msg) { + msg.to_read = !read_value; + if (msg.options.toggle_read) { + msg.options.show_read = msg.to_read; + msg.options.show_unread = !msg.to_read; + } + }); + // check if the message must be display, destroy or rerender + self.check_for_rerender(); + }); return false; }, - /* get all child message id linked. - * @return array of id - */ - get_child_ids: function () { - var res=[] - if (arguments[0]) res.push(this.id); - if (this.thread) { - res = res.concat( this.thread.get_child_ids(true) ); - } - return res; - }, - /** * add or remove a vote for a message and display the result */ on_vote: function (event) { event.stopPropagation(); - var self=this; - return this.ds_message.call('vote_toggle', [[self.id]]).pipe(function (vote) { - self.has_voted = vote; - self.vote_nb += self.has_voted ? 1 : -1; - self.display_vote(); - }); + this.ds_message.call('vote_toggle', [[this.id]]) + .then( + _.bind(function (vote) { + this.has_voted = vote; + this.vote_nb += this.has_voted ? 1 : -1; + this.display_vote(); + }, this)); return false; }, @@ -814,10 +932,10 @@ openerp.mail = function (session) { * Display the render of this message's vote */ display_vote: function () { - var self = this; - var vote_element = session.web.qweb.render('mail.thread.message.vote', {'widget': self}); - self.$(".oe_msg_vote:first").remove(); - self.$(".oe_mail_vote_count:first").replaceWith(vote_element); + var vote_element = session.web.qweb.render('mail.thread.message.vote', {'widget': this}); + this.$(".oe_msg_footer:first .oe_mail_vote_count").remove(); + this.$(".oe_msg_footer:first .oe_msg_vote").replaceWith(vote_element); + this.$('.oe_msg_vote').on('click', this.on_vote); }, /** @@ -827,34 +945,29 @@ openerp.mail = function (session) { event.stopPropagation(); var self=this; var button = self.$('.oe_star:first'); - return this.ds_message.call('favorite_toggle', [[self.id]]).pipe(function (star) { - self.is_favorite=star; - if (self.is_favorite) { - button.addClass('oe_starred'); - } else { - button.removeClass('oe_starred'); - if ( self.options.typeof_thread == 'stared' ) { - self.animated_destroy(150); + + this.ds_message.call('favorite_toggle', [[self.id]]) + .then(function (star) { + self.is_favorite=star; + if (self.is_favorite) { + button.addClass('oe_starred'); + } else { + button.removeClass('oe_starred'); } - } - }); + + if (self.options.view_inbox && self.is_favorite) { + self.on_message_read_unread(true); + } else { + self.check_for_rerender(); + } + }); return false; }, - /** - * call on_message_delete on his parent thread - */ - destroy: function () { - - this._super(); - this.parent_thread.on_message_detroy(this); - - } - }); /** - * ------------------------------------------------------------ + * ------------------------------------------------------------ * Thread Widget * ------------------------------------------------------------ * @@ -881,14 +994,11 @@ openerp.mail = function (session) { * @param {Object} [thread] * @param {int} [display_indented_thread] number thread level to indented threads. * other are on flat mode - * @param {Select} [typeof_thread] inbox/archives/stared/sent - * type of thread and option for user application like animate - * destroy for read/unread * @param {Array} [parents] liked with the parents thread * use with browse, fetch... [O]= top parent */ init: function (parent, datasets, options) { - this._super(parent); + this._super(parent, options); this.domain = options.domain || []; this.context = _.extend({ default_model: 'mail.thread', @@ -896,21 +1006,24 @@ openerp.mail = function (session) { default_parent_id: false }, options.context || {}); this.options = options.options; - this.options._parents = (options.options._parents != undefined ? options.options._parents : []).concat( [this] ); - + this.options.root_thread = (options.options.root_thread != undefined ? options.options.root_thread : this); + this.options.show_compose_message = this.options.show_compose_message && (this.options.display_indented_thread >= this.thread_level || !this.thread_level); + // record options and data this.parent_message= parent.thread!= undefined ? parent : false ; // data of this thread this.id = datasets.id || false, - this.model = datasets.model || false, + this.last_id = datasets.last_id || false, this.parent_id = datasets.parent_id || false, + this.is_private = datasets.is_private || false, this.author_id = datasets.author_id || false, this.thread_level = (datasets.thread_level+1) || 0, this.partner_ids = _.filter(datasets.partner_ids, function (partner) { return partner[0]!=datasets.author_id[0]; } ) this.messages = []; - this.show_compose_message = this.options.show_compose_message && (this.options.show_reply_button > this.thread_level || !this.thread_level); + + this.options.flat_mode = !!(this.options.display_indented_thread > this.thread_level ? this.options.display_indented_thread - this.thread_level : 0); // object compose message this.compose_message = false; @@ -934,13 +1047,10 @@ openerp.mail = function (session) { 'context': this.context, 'options': this.options, }); - if (!this.thread_level) { - // root view + if (!this.thread_level || this.thread_level > this.options.display_indented_thread) { this.compose_message.insertBefore(this.$el); - } else if (this.thread_level > this.options.display_indented_thread) { - this.compose_message.insertAfter(this.$el); } else { - this.compose_message.appendTo(this.$el); + this.compose_message.prependTo(this.$el); } } }, @@ -948,21 +1058,20 @@ openerp.mail = function (session) { /* When the expandable object is visible on screen (with scrolling) * then the on_expandable function is launch */ - on_scroll: function (event) { - if (event)event.stopPropagation(); - this.$('.oe_msg_expandable:last'); - - var message = this.messages[this.messages.length-1]; - if (message && message.type=="expandable" && message.max_limit) { - var pos = message.$el.position(); + on_scroll: function () { + var expandables = + _.each( _.filter(this.messages, function (val) {return val.max_limit && !val.parent_id;}), function (val) { + var pos = val.$el.position(); if (pos.top) { /* bottom of the screen */ var bottom = $(window).scrollTop()+$(window).height()+200; if (bottom > pos.top) { - message.on_expandable(); + val.on_expandable(); + // load only one time + val.loading = true; } } - } + }); }, /** @@ -970,8 +1079,8 @@ openerp.mail = function (session) { * in the function. */ bind_events: function () { var self = this; - self.$el.on('click', '.oe_mail_list_recipients .oe_more', self.on_show_recipients); - self.$el.on('click', '.oe_mail_compose_textarea .oe_more_hidden', self.on_hide_recipients); + self.$('.oe_mail_list_recipients .oe_more').on('click', self.on_show_recipients); + self.$('.oe_mail_compose_textarea .oe_more_hidden').on('click', self.on_hide_recipients); }, /** @@ -981,6 +1090,7 @@ openerp.mail = function (session) { var p=$(this).parent(); p.find('.oe_more_hidden, .oe_hidden').show(); p.find('.oe_more').hide(); + return false; }, /** @@ -990,15 +1100,14 @@ openerp.mail = function (session) { var p=$(this).parent(); p.find('.oe_more_hidden, .oe_hidden').hide(); p.find('.oe_more').show(); + return false; }, /* get all child message/thread id linked. * @return array of id */ get_child_ids: function () { - var res=[]; - _(this.get_childs()).each(function (val, key) { res.push(val.id); }); - return res; + return _.map(this.get_childs(), function (val) { return val.id; }); }, /* get all child message/thread linked. @@ -1033,17 +1142,17 @@ openerp.mail = function (session) { // goto the wall thread for launch browse if (!options._go_thread_wall) { options._go_thread_wall = true; - return this.options._parents[0].browse_thread(options); + return this.options.root_thread.browse_thread(options); } - if (this.id==options.id) { + if (this.id == options.id) { return this; } if (options.id) { for (var i in this.messages) { if (this.messages[i].thread) { - var res=this.messages[i].thread.browse_thread({'id':options.id, '_go_thread_wall':true}); + var res = this.messages[i].thread.browse_thread({'id':options.id, '_go_thread_wall':true}); if (res) return res; } } @@ -1067,8 +1176,8 @@ openerp.mail = function (session) { * @return message object */ browse_message: function (options) { - if (this.options._parents[0].messages[0]) - return this.options._parents[0].messages[0].browse_message(options); + if (this.options.root_thread.messages[0]) + return this.options.root_thread.messages[0].browse_message(options); }, /** @@ -1079,6 +1188,7 @@ openerp.mail = function (session) { on_compose_message: function () { this.instantiate_compose_message(); this.compose_message.on_compose_expandable(); + return false; }, /** @@ -1086,8 +1196,8 @@ openerp.mail = function (session) { */ no_message: function () { var no_message = $(session.web.qweb.render('mail.wall_no_message', {})); - if (this.options.no_message) { - no_message.html(this.options.no_message); + if (this.options.help) { + no_message.html(this.options.help); } no_message.appendTo(this.$el); }, @@ -1101,18 +1211,20 @@ openerp.mail = function (session) { * @param {Array} ids read (if the are some ids, the method don't use the domain) */ message_fetch: function (replace_domain, replace_context, ids, callback) { - var self = this; - - // domain and context: options + additional - fetch_domain = replace_domain ? replace_domain : this.domain; - fetch_context = replace_context ? replace_context : this.context; - var message_loaded_ids = this.id ? [this.id].concat( self.get_child_ids() ) : self.get_child_ids(); - - // CHM note : option for sending in flat mode by server - var thread_level = this.options.display_indented_thread > this.thread_level ? this.options.display_indented_thread - this.thread_level : 0; - - return this.ds_message.call('message_read', [ids, fetch_domain, message_loaded_ids, thread_level, fetch_context, this.context.default_parent_id || undefined]) - .then(callback ? _.bind(callback, this, arguments) : this.proxy('switch_new_message')); + return this.ds_message.call('message_read', [ + // ids force to read + ids == false ? undefined : ids, + // domain + additional + (replace_domain ? replace_domain : this.domain), + // ids allready loaded + (this.id ? [this.id].concat( this.get_child_ids() ) : this.get_child_ids()), + // option for sending in flat mode by server + this.options.flat_mode, + // context + additional + (replace_context ? replace_context : this.context), + // parent_id + this.context.default_parent_id || undefined + ]).done(callback ? _.bind(callback, this, arguments) : this.proxy('switch_new_message')); }, /** @@ -1128,22 +1240,23 @@ openerp.mail = function (session) { data.options = _.extend(self.options, data.options); if (data.type=='expandable') { - var message = new mail.ThreadExpandable(self, data, { + var message = new mail.ThreadExpandable(self, data, {'context':{ 'default_model': data.model || self.context.default_model, 'default_res_id': data.res_id || self.context.default_res_id, 'default_parent_id': self.id, - }); + }}); } else { - var message = new mail.ThreadMessage(self, data, { + var message = new mail.ThreadMessage(self, data, {'context':{ 'default_model': data.model, 'default_res_id': data.res_id, 'default_parent_id': data.id, - }); + }}); } // check if the message is already create for (var i in self.messages) { if (self.messages[i] && self.messages[i].id == message.id) { + console.log('Reload message', message.id); self.messages[i].destroy(); } } @@ -1163,74 +1276,18 @@ openerp.mail = function (session) { */ insert_message: function (message, dom_insert_after) { var self=this; - - if (this.show_compose_message && this.options.show_compact_message) { + if (this.options.show_compact_message > this.thread_level) { this.instantiate_compose_message(); this.compose_message.do_show_compact(); } - this.$('.oe_wall_no_message').remove(); + this.$('.oe_view_nocontent').remove(); if (dom_insert_after) { message.insertAfter(dom_insert_after); - return message - } - - // check older and newer message for insertion - var message_newer = false; - var message_older = false; - if (message.id > 0) { - for (var i in self.messages) { - if (self.messages[i].id > message.id) { - if (!message_newer || message_newer.id > self.messages[i].id) { - message_newer = self.messages[i]; - } - } else if (self.messages[i].id > 0 && self.messages[i].id < message.id) { - if (!message_older || message_older.id < self.messages[i].id) { - message_older = self.messages[i]; - } - } - } - } - - var sort = (!!self.thread_level || message.id<0); - - if (sort) { - if (message_older) { - - message.insertAfter(message_older.thread ? (message_older.thread.compose_message ? message_older.thread.compose_message.$el : message_older.thread.$el) : message_older.$el); - - } else if (message_newer) { - - message.insertBefore(message_newer.$el); - - } else if (message.id < 0) { - - message.appendTo(self.$el); - - } else { - - message.prependTo(self.$el); - } } else { - if (message_older) { - - message.insertBefore(message_older.$el); - - } else if (message_newer) { - - message.insertAfter(message_newer.thread ? (message_newer.thread.compose_message ? message_newer.thread.compose_message.$el : message_newer.thread.$el) : message_newer.$el ); - - } else if (message.id < 0) { - - message.prependTo(self.$el); - - } else { - - message.appendTo(self.$el); - - } + message.appendTo(self.$el); } return message @@ -1241,7 +1298,7 @@ openerp.mail = function (session) { * Each message is send to his parent object (or parent thread flat mode) for creating the object message. * @param : {Array} datas from calling RPC to "message_read" */ - switch_new_message: function (records) { + switch_new_message: function (records, dom_insert_after) { var self=this; _(records).each(function (record) { var thread = self.browse_thread({ @@ -1251,7 +1308,7 @@ openerp.mail = function (session) { // create object and attach to the thread object var message = thread.create_message_object( record ); // insert the message on dom - thread.insert_message( message ); + thread.insert_message( message, typeof dom_insert_after == 'object' ? dom_insert_after : false); }); }, @@ -1262,6 +1319,10 @@ openerp.mail = function (session) { on_message_detroy: function (message) { this.messages = _.filter(this.messages, function (val) { return !val.isDestroyed(); }); + if (this.options.root_thread == this && !this.messages.length) { + this.no_message(); + } + return false; }, @@ -1323,7 +1384,6 @@ openerp.mail = function (session) { } else { // create a expandable message var expandable = new mail.ThreadExpandable(this, { - 'id': message.id, 'model': message.model, 'parent_id': message.parent_id, 'nb_messages': 1, @@ -1332,9 +1392,11 @@ openerp.mail = function (session) { 'domain': message_dom, 'options': message.options, }, { - 'default_model': message.model || this.context.default_model, - 'default_res_id': message.res_id || this.context.default_res_id, - 'default_parent_id': this.id, + 'context':{ + 'default_model': message.model || this.context.default_model, + 'default_res_id': message.res_id || this.context.default_res_id, + 'default_parent_id': this.id, + } }); // add object on array and DOM @@ -1350,7 +1412,7 @@ openerp.mail = function (session) { }); /** - * ------------------------------------------------------------ + * ------------------------------------------------------------ * mail : root Widget * ------------------------------------------------------------ * @@ -1360,7 +1422,7 @@ openerp.mail = function (session) { */ session.web.client_actions.add('mail.Widget', 'session.mail.Widget'); mail.Widget = session.web.Widget.extend({ - template: 'mail.Widget', + template: 'mail.Root', /** * @param {Object} parent parent @@ -1368,15 +1430,13 @@ openerp.mail = function (session) { * @param {Object} [context] context of the thread. It should * contain at least default_model, default_res_id. Please refer to * the compose_message widget for more information about it. - * ... @param {Select} [typeof_thread=(mail|stared|archives|send|other)] - * options for destroy message when the user click on a button * @param {Object} [options] *... @param {Number} [truncate_limit=250] number of character to * display before having a "show more" link; note that the text * will not be truncated if it does not have 110% of the parameter *... @param {Boolean} [show_record_name] display the name and link for do action - *... @param {int} [show_reply_button] number thread level to display the reply button - *... @param {int} [show_read_unread_button] number thread level to display the read/unread button + *... @param {boolean} [show_reply_button] display the reply button + *... @param {boolean} [show_read_unread_button] display the read/unread button *... @param {int} [display_indented_thread] number thread level to indented threads. * other are on flat mode *... @param {Boolean} [show_compose_message] allow to display the composer @@ -1387,35 +1447,25 @@ openerp.mail = function (session) { * @param {String} [no_message] Message to display when there are no message */ init: function (parent, action) { - var options = action.params || {}; - this._super(parent); - this.domain = options.domain || []; - this.context = options.context || {}; - this.search_results = {'domain': [], 'context': {}, 'groupby': {}}; + this._super(parent, action); + var self = this; + this.action = _.clone(action); + this.domain = this.action.domain || this.action.params.domain || []; + this.context = this.action.context || this.action.params.context || {}; - this.options = _.extend({ - 'typeof_thread' : 'inbox', + this.action.params = _.extend({ 'display_indented_thread' : -1, - 'show_reply_button' : -1, - 'show_read_unread_button' : -1, + 'show_reply_button' : false, + 'show_read_unread_button' : false, 'truncate_limit' : 250, 'show_record_name' : false, 'show_compose_message' : false, 'show_compact_message' : false, + 'view_inbox': false, 'message_ids': undefined, - 'no_message': false - }, options); + }, this.action.params); - if (this.display_indented_thread === false) { - this.display_indented_thread = -1; - } - if (this.show_reply_button === false) { - this.show_reply_button = -1; - } - if (this.show_read_unread_button === false) { - this.show_read_unread_button = -1; - } - + this.action.params.help = this.action.help || false; }, start: function (options) { @@ -1423,7 +1473,6 @@ openerp.mail = function (session) { this.message_render(); this.bind_events(); }, - /** *Create the root thread and display this object in the DOM. @@ -1435,35 +1484,32 @@ openerp.mail = function (session) { this.thread = new mail.Thread(this, {}, { 'domain' : this.domain, 'context' : this.context, - 'options': this.options, + 'options': this.action.params, }); this.thread.appendTo( this.$el ); this.thread.no_message(); - this.thread.message_fetch(null, null, this.options.message_ids); - if (this.options.show_compose_message) { + if (this.action.params.show_compose_message) { this.thread.instantiate_compose_message(); - if (this.options.show_compact_message) { - this.thread.compose_message.do_show_compact(); - } else { - this.thread.compose_message.do_hide_compact(); - } + this.thread.compose_message.do_show_compact(); } + + this.thread.message_fetch(null, null, this.action.params.message_ids); + }, bind_events: function () { - if (this.context['typeof_thread']!='other') { - $(document).scroll( this.thread.on_scroll ); - $(window).resize( this.thread.on_scroll ); - window.setTimeout( this.thread.on_scroll, 500 ); - } + $(document).scroll( _.bind(this.thread.on_scroll, this.thread) ); + $(window).resize( _.bind(this.thread.on_scroll, this.thread) ); + this.$el.resize( _.bind(this.thread.on_scroll, this.thread) ); + window.setTimeout( _.bind(this.thread.on_scroll, this.thread), 500 ); } }); /** - * ------------------------------------------------------------ + * ------------------------------------------------------------ * mail_thread Widget * ------------------------------------------------------------ * @@ -1476,10 +1522,19 @@ openerp.mail = function (session) { mail.RecordThread = session.web.form.AbstractField.extend({ template: 'mail.record_thread', - init: function () { + init: function (parent, node) { this._super.apply(this, arguments); - this.options.domain = this.options.domain || []; - this.options.context = {'default_model': 'mail.thread', 'default_res_id': false}; + this.node = _.clone(node); + + this.node.params = _.extend({ + 'display_indented_thread': -1, + 'show_reply_button': false, + 'show_read_unread_button': false, + 'show_compose_message': this.view.is_action_enabled('edit'), + 'show_compact_message': 1, + }, this.node.params); + + this.domain = this.node.params && this.node.params.domain || []; }, start: function () { @@ -1492,42 +1547,32 @@ openerp.mail = function (session) { _check_visibility: function () { this.$el.toggle(this.view.get("actual_mode") !== "create"); }, + render_value: function () { var self = this; + if (! this.view.datarecord.id || session.web.BufferedDataSet.virtual_id_regex.test(this.view.datarecord.id)) { this.$('oe_mail_thread').hide(); return; } - // update context - _.extend(this.options.context, { - default_res_id: this.view.datarecord.id, - default_model: this.view.model, - default_is_private: false }); - // update domain - var domain = this.options.domain.concat([['model', '=', this.view.model], ['res_id', '=', this.view.datarecord.id]]); - var show_compose_message = this.view.is_action_enabled('edit') || - (this.getParent().fields.message_is_follower && this.getParent().fields.message_is_follower.get_value()); - - var message_ids = this.getParent().fields.message_ids && this.getParent().fields.message_ids.get_value(); + this.node.params = _.extend({ + 'message_ids': this.getParent().fields.message_ids ? this.getParent().fields.message_ids.get_value() : undefined, + }, this.node.params); + this.node.context = { + 'default_res_id': this.view.datarecord.id || false, + 'default_model': this.view.model || false, + }; if (this.root) { + $('').insertAfter(this.root.$el); this.root.destroy(); } // create and render Thread widget - this.root = new mail.Widget(this, { params: { - 'domain' : domain, - 'context' : this.options.context, - 'typeof_thread': this.options.context['typeof_thread'] || 'other', - 'display_indented_thread': -1, - 'show_reply_button': 0, - 'show_read_unread_button': -1, - 'show_compose_message': show_compose_message, - 'message_ids': message_ids, - 'show_compact_message': true, - 'no_message': this.node.attrs.help - }} - ); + this.root = new mail.Widget(this, _.extend(this.node, { + 'domain' : (this.domain || []).concat([['model', '=', this.view.model], ['res_id', '=', this.view.datarecord.id]]), + + })); return this.root.replace(this.$('.oe_mail-placeholder')); }, @@ -1535,7 +1580,7 @@ openerp.mail = function (session) { /** - * ------------------------------------------------------------ + * ------------------------------------------------------------ * Wall Widget * ------------------------------------------------------------ * @@ -1543,6 +1588,7 @@ openerp.mail = function (session) { * use is to receive a context and a domain, and to delegate the message * fetching and displaying to the Thread widget. */ + session.web.client_actions.add('mail.wall', 'session.mail.Wall'); mail.Wall = session.web.Widget.extend({ template: 'mail.wall', @@ -1555,35 +1601,53 @@ openerp.mail = function (session) { * contain default_model, default_res_id, to give it to the threads. */ init: function (parent, action) { - this._super(parent); - var options = action.params || {}; - this.options = options; - this.options.domain = options.domain || []; - this.options.context = options.context || {}; - this.search_results = {'domain': [], 'context': {}, 'groupby': {}} - this.ds_msg = new session.web.DataSetSearch(this, 'mail.message'); + this._super(parent, action); + + this.action = _.clone(action); + this.domain = this.action.params.domain || this.action.domain || []; + this.context = this.action.params.context || this.action.context || {}; + + this.defaults = {}; + for (var key in this.context) { + if (key.match(/^search_default_/)) { + this.defaults[key.replace(/^search_default_/, '')] = this.context[key]; + } + } + + this.action.params = _.extend({ + 'display_indented_thread': 1, + 'show_reply_button': true, + 'show_read_unread_button': true, + 'show_compose_message': true, + 'show_compact_message': this.action.params.view_mailbox ? false : 1, + 'view_inbox': false, + }, this.action.params); }, start: function () { - this._super.apply(this, arguments); - var searchview_ready = this.load_searchview({}, false); - var thread_displayed = this.message_render(); - this.options.domain = this.options.domain.concat(this.search_results['domain']); + this._super.apply(this); this.bind_events(); - return $.when(searchview_ready, thread_displayed); + var searchview_loaded = this.load_searchview(this.defaults); + if (! this.searchview.has_defaults) { + this.message_render(); + } + }, /** * Load the mail.message search view * @param {Object} defaults ?? - * @param {Boolean} hidden some kind of trick we do not care here */ - load_searchview: function (defaults, hidden) { + load_searchview: function (defaults) { var self = this; - this.searchview = new session.web.SearchView(this, this.ds_msg, false, defaults || {}, hidden || false); - return this.searchview.appendTo(this.$('.oe_view_manager_view_search')).then(function () { - self.searchview.on('search_data', self, self.do_searchview_search); - }); + var ds_msg = new session.web.DataSetSearch(this, 'mail.message'); + this.searchview = new session.web.SearchView(this, ds_msg, false, defaults || {}, false); + this.searchview.appendTo(this.$('.oe_view_manager_view_search')) + .then(function () { self.searchview.on('search_data', self, self.do_searchview_search); }); + if (this.searchview.has_defaults) { + this.searchview.ready.then(this.searchview.do_search); + } + return this.searchview }, /** @@ -1600,32 +1664,25 @@ openerp.mail = function (session) { contexts: contexts || [], group_by_seq: groupbys || [] }).then(function (results) { - self.search_results['context'] = results.context; - self.search_results['domain'] = results.domain; - self.root.destroy(); - return self.message_render(); + if(self.root) { + $('').insertAfter(self.root.$el); + self.root.destroy(); + } + return self.message_render(results); }); }, - /** - *Create the root thread widget and display this object in the DOM - */ + * Create the root thread widget and display this object in the DOM + */ message_render: function (search) { - var domain = this.options.domain.concat(this.search_results['domain']); - var context = _.extend(this.options.context, search&&search.search_results['context'] ? search.search_results['context'] : {}); - this.root = new mail.Widget(this, { params: { + var domain = this.domain.concat(search && search['domain'] ? search['domain'] : []); + var context = _.extend(this.context, search && search['context'] ? search['context'] : {}); + + this.root = new mail.Widget(this, _.extend(this.action, { 'domain' : domain, 'context' : context, - 'typeof_thread': context['typeof_thread'] || 'other', - 'display_indented_thread': 1, - 'show_reply_button': 10, - 'show_read_unread_button': 11, - 'show_compose_message': true, - 'show_compact_message': false, - }} - ); - + })); return this.root.replace(this.$('.oe_mail-placeholder')); }, @@ -1653,19 +1710,18 @@ openerp.mail = function (session) { /** - * ------------------------------------------------------------ + * ------------------------------------------------------------ * UserMenu * ------------------------------------------------------------ * * Add a link on the top user bar for write a full mail */ session.web.ComposeMessageTopButton = session.web.Widget.extend({ - template:'mail.compose_message.button_top_bar', + template:'mail.ComposeMessageTopButton', - start: function (parent, params) { - var self = this; - this.$el.on('click', 'button', self.on_compose_message ); - this._super(parent, params); + start: function () { + this.$('button').on('click', this.on_compose_message ); + this._super(); }, on_compose_message: function (event) { @@ -1675,26 +1731,22 @@ openerp.mail = function (session) { res_model: 'mail.compose.message', view_mode: 'form', view_type: 'form', - action_from: 'mail.ThreadComposeMessage', views: [[false, 'form']], target: 'new', - context: { - 'default_model': '', - 'default_res_id': false, - 'default_content_subtype': 'html', - }, + context: { 'default_content_subtype': 'html' }, }; session.client.action_manager.do_action(action); }, - }); - session.web.UserMenu = session.web.UserMenu.extend({ - start: function (parent, params) { - var render = new session.web.ComposeMessageTopButton(); - render.insertAfter(this.$el); - this._super(parent, params); - } + session.web.UserMenu.include({ + do_update: function(){ + var self = this; + this._super.apply(this, arguments); + this.update_promise.then(function() { + var mail_button = new session.web.ComposeMessageTopButton(); + mail_button.appendTo(session.webclient.$el.find('.oe_systray')); + }); + }, }); - }; diff --git a/addons/mail/static/src/js/mail_followers.js b/addons/mail/static/src/js/mail_followers.js index a13d2048bf3..7bb019cde4f 100644 --- a/addons/mail/static/src/js/mail_followers.js +++ b/addons/mail/static/src/js/mail_followers.js @@ -30,6 +30,8 @@ openerp_mail_followers = function(session, mail) { this.ds_model = new session.web.DataSetSearch(this, this.view.model); this.ds_follow = new session.web.DataSetSearch(this, this.field.relation); this.ds_users = new session.web.DataSetSearch(this, 'res.users'); + + this.value = []; }, start: function() { @@ -41,6 +43,11 @@ openerp_mail_followers = function(session, mail) { this._super(); }, + set_value: function(_value) { + this.value = _value; + this._super(_value); + }, + _check_visibility: function() { this.$el.toggle(this.view.get("actual_mode") !== "create"); }, @@ -85,22 +92,23 @@ openerp_mail_followers = function(session, mail) { read_value: function () { var self = this; - return this.ds_model.read_ids([this.view.datarecord.id], ['message_follower_ids']).pipe(function (results) { - self.set_value(results[0].message_follower_ids); + return this.ds_model.read_ids([this.view.datarecord.id], ['message_follower_ids']).then(function (results) { + self.value = results[0].message_follower_ids; + self.render_value(); }); }, render_value: function () { this.reinit(); - return this.fetch_followers(this.get("value")); + return this.fetch_followers(this.value); }, fetch_followers: function (value_) { this.value = value_ || {}; return this.ds_follow.call('read', [this.value, ['name', 'user_ids']]) - .pipe(this.proxy('display_followers'), this.proxy('fetch_generic')) - .pipe(this.proxy('display_buttons')) - .pipe(this.proxy('fetch_subtypes')); + .then(this.proxy('display_followers'), this.proxy('fetch_generic')) + .then(this.proxy('display_buttons')) + .then(this.proxy('fetch_subtypes')); }, /** Read on res.partner failed: fall back on a generic case @@ -109,10 +117,10 @@ openerp_mail_followers = function(session, mail) { fetch_generic: function (error, event) { var self = this; event.preventDefault(); - return this.ds_users.call('read', [this.session.uid, ['partner_id']]).pipe(function (results) { + return this.ds_users.call('read', [this.session.uid, ['partner_id']]).then(function (results) { var pid = results['partner_id'][0]; - self.message_is_follower = (_.indexOf(self.get('value'), pid) != -1); - }).pipe(self.proxy('display_generic')); + self.message_is_follower = (_.indexOf(self.value, pid) != -1); + }).then(self.proxy('display_generic')); }, _format_followers: function(count){ // TDE note: why redefining _t ? @@ -131,7 +139,7 @@ openerp_mail_followers = function(session, mail) { display_generic: function () { var self = this; var node_user_list = this.$('.oe_follower_list').empty(); - this.$('.oe_follower_title').html(this._format_followers(this.get('value').length)); + this.$('.oe_follower_title').html(this._format_followers(this.value.length)); }, /** Display the followers */ @@ -179,7 +187,7 @@ openerp_mail_followers = function(session, mail) { var subtype_list_ul = this.$('.oe_subtype_list').empty(); if (! this.message_is_follower) return; var context = new session.web.CompoundContext(this.build_context(), {}); - this.ds_model.call('message_get_subscription_data', [[this.view.datarecord.id], context]).pipe(this.proxy('display_subtypes')); + this.ds_model.call('message_get_subscription_data', [[this.view.datarecord.id], context]).then(this.proxy('display_subtypes')); }, /** Display subtypes: {'name': default, followed} */ @@ -206,7 +214,8 @@ openerp_mail_followers = function(session, mail) { $(record).attr('checked',false); }); var context = new session.web.CompoundContext(this.build_context(), {}); - return this.ds_model.call('message_unsubscribe_users', [[this.view.datarecord.id], [this.session.uid], context]).pipe(this.proxy('read_value')); + return this.ds_model.call('message_unsubscribe_users', [[this.view.datarecord.id], [this.session.uid], context]) + .then(this.proxy('read_value')); }, do_update_subscription: function (event) { @@ -220,8 +229,8 @@ openerp_mail_followers = function(session, mail) { }); var context = new session.web.CompoundContext(this.build_context(), {}); - return this.ds_model.call('message_subscribe_users', [[this.view.datarecord.id], [this.session.uid], this.message_is_follower ? checklist:undefined, context]) - .pipe(this.proxy('read_value')); + return this.ds_model.call('message_subscribe_users', [[this.view.datarecord.id], [this.session.uid], this.message_is_follower ? checklist : undefined, context]) + .then(this.proxy('read_value')); }, }); }; diff --git a/addons/mail/static/src/js/many2many_tags_email.js b/addons/mail/static/src/js/many2many_tags_email.js index 52dcbf7aeb5..cc701e8a585 100644 --- a/addons/mail/static/src/js/many2many_tags_email.js +++ b/addons/mail/static/src/js/many2many_tags_email.js @@ -46,7 +46,7 @@ instance.web.form.FieldMany2ManyTagsEmail = instance.web.form.FieldMany2ManyTags ["email", "=", false], ["notification_email_send", "in", ['all', 'comment']] ]], {context: this.build_context()}) - .pipe(function (record_ids) { + .then(function (record_ids) { // valid partner var valid_partner = _.difference(ids, record_ids); self.values = self.values.concat(valid_partner); diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml index caa85cd3deb..2ba1733043a 100644 --- a/addons/mail/static/src/xml/mail.xml +++ b/addons/mail/static/src/xml/mail.xml @@ -1,8 +1,9 @@