summaryrefslogtreecommitdiff
path: root/openerp
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2014-09-05 15:28:22 +0200
committerChristophe Simonis <chs@odoo.com>2014-09-05 15:28:22 +0200
commit31bf30d2d0eb78baaa36360b99fe58bf7cd4c9e7 (patch)
treed7be61ecd6bb4c8b5552e39b03e2a64eebbbf323 /openerp
parentafba9e8817c458640ae446ac7aaaab79be4fe1e9 (diff)
parented1c173971968eaa96693cb4e1547efa6e6c34e0 (diff)
[MERGE] forward port of branch 8.0 up to ed1c173
Diffstat (limited to 'openerp')
-rw-r--r--openerp/addons/base/base.sql2
-rw-r--r--openerp/addons/base/i18n/base.pot16411
-rw-r--r--openerp/addons/base/ir/ir_actions.py55
-rw-r--r--openerp/addons/base/ir/ir_cron.py33
-rw-r--r--openerp/addons/base/ir/ir_http.py9
-rw-r--r--openerp/addons/base/ir/ir_model.py8
-rw-r--r--openerp/addons/base/ir/ir_qweb.py7
-rw-r--r--openerp/addons/base/ir/ir_translation.py12
-rw-r--r--openerp/addons/base/ir/ir_translation_view.xml2
-rw-r--r--openerp/addons/base/ir/ir_ui_view.py38
-rw-r--r--openerp/addons/base/ir/ir_ui_view_view.xml4
-rw-r--r--openerp/addons/base/res/res_currency.py18
-rw-r--r--openerp/addons/base/res/res_font.py13
-rw-r--r--openerp/addons/base/res/res_partner.py27
-rw-r--r--openerp/addons/base/res/res_partner_view.xml20
-rw-r--r--openerp/addons/base/res/res_users.py160
-rw-r--r--openerp/addons/base/rng/view.rng85
-rw-r--r--openerp/addons/base/security/ir.model.access.csv4
-rw-r--r--openerp/addons/base/tests/test_base.py10
-rw-r--r--openerp/addons/base/tests/test_mail.py38
-rw-r--r--openerp/addons/base/tests/test_mail_examples.py69
-rw-r--r--openerp/addons/base/tests/test_orm.py6
-rw-r--r--openerp/addons/base/tests/test_views.py20
-rw-r--r--openerp/addons/base/workflow/workflow.py4
-rw-r--r--openerp/addons/base/workflow/workflow_report.py2
-rw-r--r--openerp/addons/base/workflow/workflow_view.xml4
-rw-r--r--openerp/addons/test_inherit/ir.model.access.csv2
-rw-r--r--openerp/addons/test_inherit/models.py20
-rw-r--r--openerp/addons/test_inherit/tests/test_inherit.py28
-rw-r--r--openerp/addons/test_new_api/views.xml4
-rw-r--r--openerp/api.py121
-rw-r--r--openerp/cli/scaffold.py274
-rw-r--r--openerp/cli/scaffold/__init__.jinja23
-rw-r--r--openerp/cli/scaffold/controllers.jinja212
-rw-r--r--openerp/cli/scaffold/ir.model.access.jinja26
-rw-r--r--openerp/cli/scaffold/models.jinja29
-rw-r--r--openerp/cli/scaffold/record.jinja24
-rw-r--r--openerp/cli/scaffold/theme_css.jinja24
-rw-r--r--openerp/cli/scaffold/theme_xml.jinja226
-rw-r--r--openerp/cli/scaffold/webclient_css.jinja24
-rw-r--r--openerp/cli/scaffold/webclient_js.jinja214
-rw-r--r--openerp/cli/scaffold/webclient_xml.jinja27
-rw-r--r--openerp/cli/scaffold/xmldata.jinja25
-rw-r--r--openerp/cli/templates/default/__init__.py3
-rw-r--r--openerp/cli/templates/default/__openerp__.py (renamed from openerp/cli/scaffold/__openerp__.jinja2)17
-rw-r--r--openerp/cli/templates/default/controllers.py23
-rw-r--r--openerp/cli/templates/default/demo.xml11
-rw-r--r--openerp/cli/templates/default/models.py8
-rw-r--r--openerp/cli/templates/default/security/ir.model.access.csv6
-rw-r--r--openerp/cli/templates/default/templates.xml22
-rw-r--r--openerp/cli/templates/theme/__init__.py1
-rw-r--r--openerp/cli/templates/theme/__openerp__.py20
-rw-r--r--openerp/cli/templates/theme/static/style/custom.less0
-rw-r--r--openerp/cli/templates/theme/views/options.xml0
-rw-r--r--openerp/cli/templates/theme/views/pages.xml0
-rw-r--r--openerp/cli/templates/theme/views/snippets.xml0
-rw-r--r--openerp/exceptions.py4
-rw-r--r--openerp/fields.py376
-rw-r--r--openerp/http.py200
-rw-r--r--openerp/import_xml.rng152
-rw-r--r--openerp/models.py713
-rw-r--r--openerp/modules/loading.py5
-rw-r--r--openerp/modules/module.py1
-rw-r--r--openerp/modules/registry.py6
-rw-r--r--openerp/netsvc.py2
-rw-r--r--openerp/osv/fields.py60
-rw-r--r--openerp/release.py5
-rw-r--r--openerp/report/report_sxw.py7
-rw-r--r--openerp/sql_db.py110
-rw-r--r--openerp/tests/addons/test_translation_import/__init__.py2
-rw-r--r--openerp/tests/addons/test_translation_import/__openerp__.py15
-rw-r--r--openerp/tests/addons/test_translation_import/i18n/fr.po52
-rw-r--r--openerp/tests/addons/test_translation_import/i18n/test_translation_import.pot58
-rw-r--r--openerp/tests/addons/test_translation_import/models.py20
-rw-r--r--openerp/tests/addons/test_translation_import/tests.yml13
-rw-r--r--openerp/tests/addons/test_translation_import/tests/__init__.py9
-rw-r--r--openerp/tests/addons/test_translation_import/tests/test_term_count.py16
-rw-r--r--openerp/tests/addons/test_translation_import/view.xml23
-rw-r--r--openerp/tools/config.py10
-rw-r--r--openerp/tools/convert.py231
-rw-r--r--openerp/tools/func.py4
-rw-r--r--openerp/tools/mail.py19
-rw-r--r--openerp/tools/misc.py30
-rw-r--r--openerp/tools/translate.py200
-rw-r--r--openerp/tools/view_validation.py16
-rw-r--r--openerp/tools/yaml_import.py21
-rw-r--r--openerp/workflow/workitem.py6
87 files changed, 11099 insertions, 9002 deletions
diff --git a/openerp/addons/base/base.sql b/openerp/addons/base/base.sql
index e026ad57cd6..9b42bacd794 100644
--- a/openerp/addons/base/base.sql
+++ b/openerp/addons/base/base.sql
@@ -86,7 +86,7 @@ CREATE TABLE ir_module_module (
summary character varying(256),
name character varying(128) NOT NULL,
author character varying(128),
- icon character varying(64),
+ icon varchar,
state character varying(16),
latest_version character varying(64),
shortdesc character varying(256),
diff --git a/openerp/addons/base/i18n/base.pot b/openerp/addons/base/i18n/base.pot
index 74f61a47d1e..a4790824f78 100644
--- a/openerp/addons/base/i18n/base.pot
+++ b/openerp/addons/base/i18n/base.pot
@@ -1,13 +1,13 @@
-# Translation of OpenERP Server.
+# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base
#
msgid ""
msgstr ""
-"Project-Id-Version: OpenERP Server 7.0alpha\n"
+"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2012-12-21 17:04+0000\n"
+"POT-Creation-Date: 2014-08-14 13:08+0000\n"
+"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,231 +16,662 @@ msgstr ""
"Plural-Forms: \n"
#. module: base
-#: model:ir.module.module,description:base.module_account_check_writing
+#: model:ir.module.module,description:base.module_l10n_cn
msgid "\n"
-"Module for the Check Writing and Check Printing.\n"
-"================================================\n"
+"\n"
+" 科目类型\\会计科目表模板\\增值税\\辅助核算类别\\管理会计凭证簿\\财务会计凭证簿\n"
+"\n"
+" 添加中文省份数据\n"
+"\n"
+" 增加小企业会计科目表\n"
+" \n"
" "
msgstr ""
#. module: base
-#: model:res.country,name:base.sh
-msgid "Saint Helena"
+#: model:ir.module.module,description:base.module_pos_restaurant
+msgid "\n"
+"\n"
+"=======================\n"
+"\n"
+"This module adds several restaurant features to the Point of Sale:\n"
+"- Bill Printing: Allows you to print a receipt before the order is paid\n"
+"- Bill Splitting: Allows you to split an order into different orders\n"
+"- Kitchen Order Printing: allows you to print orders updates to kitchen or bar printers\n"
+"\n"
+""
msgstr ""
#. module: base
-#: view:ir.actions.report.xml:0
-msgid "Other Configuration"
+#: model:ir.module.module,description:base.module_pos_discount
+msgid "\n"
+"\n"
+"=======================\n"
+"\n"
+"This module allows the cashier to quickly give a percentage\n"
+"sale discount to a customer.\n"
+"\n"
+""
msgstr ""
#. module: base
-#: selection:ir.property,type:0
-msgid "DateTime"
+#: model:ir.module.module,description:base.module_l10n_hu
+msgid "\n"
+"\n"
+"Base module for Hungarian localization\n"
+"==========================================\n"
+"\n"
+"This module consists :\n"
+"\n"
+" - Generic Hungarian chart of accounts\n"
+" - Hungarian taxes\n"
+" - Hungarian Bank information\n"
+" \n"
+" "
msgstr ""
#. module: base
-#: code:addons/fields.py:643
+#: model:ir.module.module,description:base.module_crm_claim
+msgid "\n"
+"\n"
+"Manage Customer Claims.\n"
+"=======================\n"
+"This application allows you to track your customers/suppliers claims and grievances.\n"
+"\n"
+"It is fully integrated with the email gateway so that you can create\n"
+"automatically new claims based on incoming emails.\n"
+" "
+msgstr ""
+
+#. module: base
+#: code:addons/base/res/res_config.py:379
#, python-format
-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."
+msgid "\n"
+"\n"
+"This addon is already installed on your system"
msgstr ""
#. module: base
-#: field:ir.ui.view,arch:0
-#: field:ir.ui.view.custom,arch:0
-msgid "View Architecture"
+#: model:ir.module.module,description:base.module_l10n_be_invoice_bba
+msgid "\n"
+" \n"
+"Belgian localization for in- and outgoing invoices (prereq to account_coda):\n"
+"============================================================================\n"
+" - Rename 'reference' field labels to 'Communication'\n"
+" - Add support for Belgian Structured Communication\n"
+"\n"
+"A Structured Communication can be generated automatically on outgoing invoices according to the following algorithms:\n"
+"---------------------------------------------------------------------------------------------------------------------\n"
+" 1) Random : +++RRR/RRRR/RRRDD+++\n"
+" **R..R =** Random Digits, **DD =** Check Digits\n"
+" 2) Date : +++DOY/YEAR/SSSDD+++\n"
+" **DOY =** Day of the Year, **SSS =** Sequence Number, **DD =** Check Digits\n"
+" 3) Customer Reference +++RRR/RRRR/SSSDDD+++\n"
+" **R..R =** Customer Reference without non-numeric characters, **SSS =** Sequence Number, **DD =** Check Digits \n"
+" \n"
+"The preferred type of Structured Communication and associated Algorithm can be\n"
+"specified on the Partner records. A 'random' Structured Communication will\n"
+"generated if no algorithm is specified on the Partner record. \n"
+"\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_sale_stock
-msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
+#: model:ir.module.module,description:base.module_l10n_multilang
+msgid "\n"
+" * Multi language support for Chart of Accounts, Taxes, Tax Codes, Journals,\n"
+" Accounting Templates, Analytic Chart of Accounts and Analytic Journals.\n"
+" * Setup wizard changes\n"
+" - Copy translations for COA, Tax, Tax Code and Fiscal Position from\n"
+" templates to target objects.\n"
+" "
msgstr ""
#. module: base
-#: selection:ir.sequence,implementation:0
-msgid "No gap"
+#: model:ir.module.module,description:base.module_website_certification
+msgid "\n"
+" Display your network of certified people on your website\n"
+" "
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Hungarian / Magyar"
+#: model:ir.module.module,description:base.module_report_intrastat
+msgid "\n"
+"A module that adds intrastat reports.\n"
+"=====================================\n"
+"\n"
+"This module gives the details of the goods traded between the countries of\n"
+"European Union."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (PY) / Español (PY)"
+#: model:ir.module.module,description:base.module_account_accountant
+msgid "\n"
+"Accounting Access Rights\n"
+"========================\n"
+"It gives the Administrator user access to all accounting features such as journal items and the chart of accounts.\n"
+"\n"
+"It assigns manager and user access rights to the Administrator and only user rights to the Demo user. \n"
+""
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_project_management
-msgid "Helps you manage your projects and tasks by tracking them, generating plannings, etc..."
+#: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account
+msgid "\n"
+"Accounting Data for Belgian Payroll Rules.\n"
+"==========================================\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_point_of_sale
-msgid "Touchscreen Interface for Shops"
+#: model:ir.module.module,description:base.module_account
+msgid "\n"
+"Accounting and Financial Management.\n"
+"====================================\n"
+"\n"
+"Financial and accounting module that covers:\n"
+"--------------------------------------------\n"
+" * General Accounting\n"
+" * Cost/Analytic accounting\n"
+" * Third party accounting\n"
+" * Taxes management\n"
+" * Budgets\n"
+" * Customer and Supplier Invoices\n"
+" * Bank statements\n"
+" * Reconciliation process by partner\n"
+"\n"
+"Creates a dashboard for accountants that includes:\n"
+"--------------------------------------------------\n"
+" * List of Customer Invoices to Approve\n"
+" * Company Analysis\n"
+" * Graph of Treasury\n"
+"\n"
+"Processes like maintaining general ledgers are done through the defined Financial Journals (entry move line or grouping is maintained through a journal) \n"
+"for a particular financial year and for preparation of vouchers there is a module named account_voucher.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
-msgid "Indian Payroll"
+#: model:ir.module.module,description:base.module_sale_order_dates
+msgid "\n"
+"Add additional date information to the sales order.\n"
+"===================================================\n"
+"\n"
+"You can add the following additional dates to a sales order:\n"
+"------------------------------------------------------------\n"
+" * Requested Date (will be used as the expected date on pickings)\n"
+" * Commitment Date\n"
+" * Effective Date\n"
+""
msgstr ""
#. module: base
-#: help:ir.cron,model:0
-msgid "Model name on which the method to be called is located, e.g. 'res.partner'."
+#: model:ir.module.module,description:base.module_hr_contract
+msgid "\n"
+"Add all information on the employee form to manage contracts.\n"
+"=============================================================\n"
+"\n"
+" * Contract\n"
+" * Place of Birth,\n"
+" * Medical Examination Date\n"
+" * Company Vehicle\n"
+"\n"
+"You can assign several contracts per employee.\n"
+" "
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Created Views"
+#: model:ir.module.module,description:base.module_product_email_template
+msgid "\n"
+"Add email templates to products to be send on invoice confirmation\n"
+"==================================================================\n"
+"\n"
+"With this module, link your products to a template to send complete information and tools to your customer.\n"
+"For instance when invoicing a training, the training agenda and materials will automatically be sent to your customers.'\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_product_manufacturer
+#: model:ir.module.module,description:base.module_product_margin
msgid "\n"
-"A module that adds manufacturers and attributes on the product form.\n"
-"====================================================================\n"
+"Adds a reporting menu in products that computes sales, purchases, margins and other interesting indicators based on invoices.\n"
+"=============================================================================================================================\n"
"\n"
-"You can now define the following for a product:\n"
-"-----------------------------------------------\n"
-" * Manufacturer\n"
-" * Manufacturer Product Name\n"
-" * Manufacturer Product Code\n"
-" * Product Attributes\n"
+"The wizard to launch the report has several options to help you get the data you need.\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_pad
+msgid "\n"
+"Adds enhanced support for (Ether)Pad attachments in the web client.\n"
+"===================================================================\n"
+"\n"
+"Lets the company customize which Pad installation should be used to link to new\n"
+"pads (by default, http://ietherpad.com/).\n"
" "
msgstr ""
#. module: base
-#: field:ir.actions.client,params:0
-msgid "Supplementary arguments"
+#: model:ir.module.module,description:base.module_auth_ldap
+msgid "\n"
+"Adds support for authentication by LDAP server.\n"
+"===============================================\n"
+"This module allows users to login with their LDAP username and password, and\n"
+"will automatically create OpenERP users for them on the fly.\n"
+"\n"
+"**Note:** This module only work on servers who have Python's ``ldap`` module installed.\n"
+"\n"
+"Configuration:\n"
+"--------------\n"
+"After installing this module, you need to configure the LDAP parameters in the\n"
+"Configuration tab of the Company details. Different companies may have different\n"
+"LDAP servers, as long as they have unique usernames (usernames need to be unique\n"
+"in OpenERP, even across multiple companies).\n"
+"\n"
+"Anonymous LDAP binding is also supported (for LDAP servers that allow it), by\n"
+"simply keeping the LDAP user and password empty in the LDAP configuration.\n"
+"This does not allow anonymous authentication for users, it is only for the master\n"
+"LDAP account that is used to verify if a user exists before attempting to\n"
+"authenticate it.\n"
+"\n"
+"Securing the connection with STARTTLS is available for LDAP servers supporting\n"
+"it, by enabling the TLS option in the LDAP configuration.\n"
+"\n"
+"For further options configuring the LDAP settings, refer to the ldap.conf\n"
+"manpage: manpage:`ldap.conf(5)`.\n"
+"\n"
+"Security Considerations:\n"
+"------------------------\n"
+"Users' LDAP passwords are never stored in the OpenERP database, the LDAP server\n"
+"is queried whenever a user needs to be authenticated. No duplication of the\n"
+"password occurs, and passwords are managed in one place only.\n"
+"\n"
+"OpenERP does not manage password changes in the LDAP, so any change of password\n"
+"should be conducted by other means in the LDAP directory directly (for LDAP users).\n"
+"\n"
+"It is also possible to have local OpenERP users in the database along with\n"
+"LDAP-authenticated users (the Administrator account is one obvious example).\n"
+"\n"
+"Here is how it works:\n"
+"---------------------\n"
+" * The system first attempts to authenticate users against the local OpenERP\n"
+" database;\n"
+" * if this authentication fails (for example because the user has no local\n"
+" password), the system then attempts to authenticate against LDAP;\n"
+"\n"
+"As LDAP users have blank passwords by default in the local OpenERP database\n"
+"(which means no access), the first step always fails and the LDAP server is\n"
+"queried to do the authentication.\n"
+"\n"
+"Enabling STARTTLS ensures that the authentication query to the LDAP server is\n"
+"encrypted.\n"
+"\n"
+"User Template:\n"
+"--------------\n"
+"In the LDAP configuration on the Company form, it is possible to select a *User\n"
+"Template*. If set, this user will be used as template to create the local users\n"
+"whenever someone authenticates for the first time via LDAP authentication. This\n"
+"allows pre-setting the default groups and menus of the first-time users.\n"
+"\n"
+"**Warning:** if you set a password for the user template, this password will be\n"
+" assigned as local password for each new LDAP user, effectively setting\n"
+" a *master password* for these users (until manually changed). You\n"
+" usually do not want this. One easy way to setup a template user is to\n"
+" login once with a valid LDAP user, let OpenERP create a blank local\n"
+" user with the same login (and a blank password), then rename this new\n"
+" user to a username that does not exist in LDAP, and setup its groups\n"
+" the way you want.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_google_base_account
+#: model:ir.module.module,description:base.module_auth_oauth
msgid "\n"
-"The module adds google user in res user.\n"
-"========================================\n"
+"Allow users to login through OAuth2 Provider.\n"
+"=============================================\n"
""
msgstr ""
#. module: base
-#: help:res.partner,employee:0
-msgid "Check this box if this contact is an Employee."
+#: model:ir.module.module,description:base.module_auth_openid
+msgid "\n"
+"Allow users to login through OpenID.\n"
+"====================================\n"
+""
msgstr ""
#. module: base
-#: help:ir.model.fields,domain:0
-msgid "The optional domain to restrict possible values for relationship fields, specified as a Python expression defining a list of triplets. For example: [('color','=','red')]"
+#: model:ir.module.module,description:base.module_auth_signup
+msgid "\n"
+"Allow users to sign up and reset their password\n"
+"===============================================\n"
+" "
msgstr ""
#. module: base
-#: field:res.partner,ref:0
-msgid "Reference"
+#: model:ir.module.module,description:base.module_account_cancel
+msgid "\n"
+"Allows canceling accounting entries.\n"
+"====================================\n"
+"\n"
+"This module adds 'Allow Canceling Entries' field on form view of account journal.\n"
+"If set to true it allows user to cancel entries & invoices.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
-msgid "Belgium - Structured Communication"
+#: model:ir.module.module,description:base.module_delivery
+msgid "\n"
+"Allows you to add delivery methods in sale orders and picking.\n"
+"==============================================================\n"
+"\n"
+"You can define your own carrier and delivery grids for prices. When creating \n"
+"invoices from picking, OpenERP is able to add and compute the shipping line.\n"
+""
msgstr ""
#. module: base
-#: field:ir.actions.act_window,target:0
-msgid "Target Window"
+#: model:ir.module.module,description:base.module_l10n_ar
+msgid "\n"
+"Argentinian accounting chart and tax localization.\n"
+"==================================================\n"
+"\n"
+"Plan contable argentino e impuestos de acuerdo a disposiciones vigentes\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,report_rml:0
-msgid "Main Report File Path"
+#: model:ir.module.module,description:base.module_website_forum
+msgid "\n"
+"Ask questions, get answers, no distractions\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
-msgid "Sales Analytic Distribution"
+#: model:ir.module.module,description:base.module_account_test
+msgid "\n"
+"Asserts on accounting.\n"
+"======================\n"
+"With this module you can manually check consistencies and inconsistencies of accounting module from menu Reporting/Accounting/Accounting Tests.\n"
+"\n"
+"You can write a query in order to create Consistency Test and you will get the result of the test \n"
+"in PDF format which can be accessed by Menu Reporting -> Accounting Tests, then select the test \n"
+"and print the report from Print button in header area.\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_timesheet_invoice
+#: model:ir.module.module,description:base.module_base_gengo
msgid "\n"
-"Generate your Invoices from Expenses, Timesheet Entries.\n"
-"========================================================\n"
+"Automated Translations through Gengo API\n"
+"========================================\n"
"\n"
-"Module to generate invoices based on costs (human resources, expenses, ...).\n"
+"This module will install passive scheduler job for automated translations \n"
+"using the Gengo API. To activate it, you must\n"
+"1) Configure your Gengo authentication parameters under `Settings > Companies > Gengo Parameters`\n"
+"2) Launch the wizard under `Settings > Application Terms > Gengo: Manual Request of Translation` and follow the wizard.\n"
"\n"
-"You can define price lists in analytic account, make some theoretical revenue\n"
-"reports."
+"This wizard will activate the CRON job and the Scheduler and will start the automatic translation via Gengo Services for all the terms where you requested it.\n"
+" "
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_sequence.py:104
-#: code:addons/base/ir/ir_sequence.py:130
-#: code:addons/base/res/res_users.py:467
-#, python-format
-msgid "Warning!"
+#: model:ir.module.module,description:base.module_sale_service
+msgid "\n"
+"Automatically creates project tasks from procurement lines.\n"
+"===========================================================\n"
+"\n"
+"This module will automatically create a new task for each procurement order line\n"
+"(e.g. for sale order lines), if the corresponding product meets the following\n"
+"characteristics:\n"
+"\n"
+" * Product Type = Service\n"
+" * Procurement Method (Order fulfillment) = MTO (Make to Order)\n"
+" * Supply/Procurement Method = Manufacture\n"
+"\n"
+"If on top of that a projet is specified on the product form (in the Procurement\n"
+"tab), then the new task will be created in that specific project. Otherwise, the\n"
+"new task will not belong to any project, and may be added to a project manually\n"
+"later.\n"
+"\n"
+"When the project task is completed or cancelled, the corresponding procurement\n"
+"is updated accordingly. For example, if this procurement corresponds to a sale\n"
+"order line, the sale order line will be considered delivered when the task is\n"
+"completed.\n"
+""
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:399
-#, python-format
-msgid "Properties of base fields cannot be altered in this manner! Please modify them through Python code, preferably through a custom addon!"
+#: model:ir.module.module,description:base.module_hw_scale
+msgid "\n"
+"Barcode Scanner Hardware Driver\n"
+"================================\n"
+"\n"
+"This module allows the point of sale to connect to a scale using a USB HSM Serial Scale Interface,\n"
+"such as the Mettler Toledo Ariva.\n"
+"\n"
+""
msgstr ""
#. module: base
-#: code:addons/osv.py:132
-#, python-format
-msgid "Constraint Error"
+#: model:ir.module.module,description:base.module_hw_scanner
+msgid "\n"
+"Barcode Scanner Hardware Driver\n"
+"================================\n"
+"\n"
+"This module allows the web client to access a remotely installed barcode\n"
+"scanner, and is used by the posbox to provide barcode scanner support to the\n"
+"point of sale module. \n"
+"\n"
+""
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_ui_view_custom
-msgid "ir.ui.view.custom"
+#: model:ir.module.module,description:base.module_l10n_et
+msgid "\n"
+"Base Module for Ethiopian Localization\n"
+"======================================\n"
+"\n"
+"This is the latest Ethiopian OpenERP localization and consists of:\n"
+" - Chart of Accounts\n"
+" - VAT tax structure\n"
+" - Withholding tax structure\n"
+" - Regional State listings\n"
+" "
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:368
-#, python-format
-msgid "Renaming sparse field \"%s\" is not allowed"
+#: model:ir.module.module,description:base.module_l10n_br
+msgid "\n"
+"Base module for the Brazilian localization\n"
+"==========================================\n"
+"\n"
+"This module consists in:\n"
+"\n"
+" - Generic Brazilian chart of accounts\n"
+" - Brazilian taxes such as:\n"
+"\n"
+" - IPI\n"
+" - ICMS\n"
+" - PIS\n"
+" - COFINS\n"
+" - ISS\n"
+" - IR\n"
+" - IRPJ\n"
+" - CSLL\n"
+"\n"
+"The field tax_discount has also been added in the account.tax.template and \n"
+"account.tax objects to allow the proper computation of some Brazilian VATs \n"
+"such as ICMS. The chart of account creation wizard has been extended to \n"
+"propagate those new data properly.\n"
+"\n"
+"It's important to note however that this module lack many implementations to \n"
+"use OpenERP properly in Brazil. Those implementations (such as the electronic \n"
+"fiscal Invoicing which is already operational) are brought by more than 15 \n"
+"additional modules of the Brazilian Launchpad localization project \n"
+"https://launchpad.net/openerp.pt-br-localiz and their dependencies in the \n"
+"extra addons branch. Those modules aim at not breaking with the remarkable \n"
+"OpenERP modularity, this is why they are numerous but small. One of the \n"
+"reasons for maintaining those modules apart is that Brazilian Localization \n"
+"leaders need commit rights agility to complete the localization as companies \n"
+"fund the remaining legal requirements (such as soon fiscal ledgers, \n"
+"accounting SPED, fiscal SPED and PAF ECF that are still missing as September \n"
+"2011). Those modules are also strictly licensed under AGPL V3 and today don't \n"
+"come with any additional paid permission for online use of 'private modules'.\n"
+""
msgstr ""
#. module: base
-#: model:res.country,name:base.sz
-msgid "Swaziland"
+#: model:ir.module.module,description:base.module_l10n_be_hr_payroll
+msgid "\n"
+"Belgian Payroll Rules.\n"
+"======================\n"
+"\n"
+" * Employee Details\n"
+" * Employee Contracts\n"
+" * Passport based Contract\n"
+" * Allowances/Deductions\n"
+" * Allow to configure Basic/Gross/Net Salary\n"
+" * Employee Payslip\n"
+" * Monthly Payroll Register\n"
+" * Integrated with Holiday Management\n"
+" * Salary Maj, ONSS, Withholding Tax, Child Allowance, ...\n"
+" "
msgstr ""
#. module: base
-#: code:addons/orm.py:4485
-#, python-format
-msgid "created."
+#: model:ir.module.module,description:base.module_l10n_bo
+msgid "\n"
+"Bolivian accounting chart and tax localization.\n"
+"\n"
+"Plan contable boliviano e impuestos de acuerdo a disposiciones vigentes\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,report_xsl:0
-msgid "XSL Path"
+#: model:ir.module.module,description:base.module_marketing_crm
+msgid "\n"
+"Bridge module between marketing and CRM\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_tr
-msgid "Turkey - Accounting"
+#: model:ir.module.module,description:base.module_mail
+msgid "\n"
+"Business oriented Social Networking\n"
+"===================================\n"
+"The Social Networking module provides a unified social network abstraction layer allowing applications to display a complete\n"
+"communication history on documents with a fully-integrated email and message management system.\n"
+"\n"
+"It enables the users to read and send messages as well as emails. It also provides a feeds page combined to a subscription mechanism that allows to follow documents and to be constantly updated about recent news.\n"
+"\n"
+"Main Features\n"
+"-------------\n"
+"* Clean and renewed communication history for any OpenERP document that can act as a discussion topic\n"
+"* Subscription mechanism to be updated about new messages on interesting documents\n"
+"* Unified feeds page to see recent messages and activity on followed documents\n"
+"* User communication through the feeds page\n"
+"* Threaded discussion design on documents\n"
+"* Relies on the global outgoing mail server - an integrated email management system - allowing to send emails with a configurable scheduler-based processing engine\n"
+"* Includes an extensible generic email composition assistant, that can turn into a mass-mailing assistant and is capable of interpreting simple *placeholder expressions* that will be replaced with dynamic data when each email is actually sent.\n"
+" "
msgstr ""
#. module: base
-#: field:ir.sequence,number_increment:0
-msgid "Increment Number"
+#: model:ir.module.module,description:base.module_l10n_ve
+msgid "\n"
+"Chart of Account for Venezuela.\n"
+"===============================\n"
+"\n"
+"Venezuela doesn't have any chart of account by law, but the default\n"
+"proposed in OpenERP should comply with some Accepted best practices in Venezuela, \n"
+"this plan comply with this practices.\n"
+"\n"
+"This module has been tested as base for more of 1000 companies, because \n"
+"it is based in a mixtures of most common software in the Venezuelan \n"
+"market what will allow for sure to accountants feel them first steps with \n"
+"OpenERP more confortable.\n"
+"\n"
+"This module doesn't pretend be the total localization for Venezuela, \n"
+"but it will help you to start really quickly with OpenERP in this country.\n"
+"\n"
+"This module give you.\n"
+"---------------------\n"
+"\n"
+"- Basic taxes for Venezuela.\n"
+"- Have basic data to run tests with community localization.\n"
+"- Start a company from 0 if your needs are basic from an accounting PoV.\n"
+"\n"
+"We recomend install account_anglo_saxon if you want valued your \n"
+"stocks as Venezuela does with out invoices.\n"
+"\n"
+"If you install this module, and select Custom chart a basic chart will be proposed, \n"
+"but you will need set manually account defaults for taxes.\n"
+""
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_res_company_tree
-#: model:ir.ui.menu,name:base.menu_action_res_company_tree
-msgid "Company's Structure"
+#: model:ir.module.module,description:base.module_l10n_th
+msgid "\n"
+"Chart of Accounts for Thailand.\n"
+"===============================\n"
+"\n"
+"Thai accounting chart and localization.\n"
+" "
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
+#: model:ir.module.module,description:base.module_l10n_co
+msgid "\n"
+"Chart of account for Colombia\n"
+"=============================\n"
+"\n"
+"Source of this chart of account is here_.\n"
+"\n"
+"All the documentation available in this website is embeded in this module, to\n"
+"be sure when you open OpenERP it has all necesary information to manage \n"
+"accounting en Colombia.\n"
+"\n"
+"The law that enable this chart of account as valid for this country is \n"
+"available in this other link_.\n"
+"\n"
+"This module has the intention to put available out of the box the chart of \n"
+"account for Colombia in Openerp.\n"
+"\n"
+"We recommend install the module account_anglo_sxon to be able to have the cost\n"
+"accounting correctly setted in out invoices.\n"
+"\n"
+"After installing this module, the Configuration wizard for accounting is launched.\n"
+" * We have the account templates which can be helpful to generate Charts of Accounts.\n"
+" * On that particular wizard, you will be asked to pass the name of the company,\n"
+" the chart template to follow, the no. of digits to generate, the code for your\n"
+" account and bank account, currency to create journals.\n"
+"\n"
+".. _here: http://puc.com.co/\n"
+".. _link: http://puc.com.co/normatividad/\n"
+" "
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_multi_currency
-msgid "Multi Currencies"
+#: model:ir.module.module,description:base.module_l10n_cr
+msgid "\n"
+"Chart of accounts for Costa Rica.\n"
+"=================================\n"
+"\n"
+"Includes:\n"
+"---------\n"
+" * account.type\n"
+" * account.account.template\n"
+" * account.tax.template\n"
+" * account.tax.code.template\n"
+" * account.chart.template\n"
+"\n"
+"Everything is in English with Spanish translation. Further translations are welcome,\n"
+"please go to http://translations.launchpad.net/openerp-costa-rica.\n"
+" "
msgstr ""
#. module: base
@@ -254,229 +685,825 @@ msgid "\n"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_sale
-msgid "Sales Management"
+#: model:ir.module.module,description:base.module_decimal_precision
+msgid "\n"
+"Configure the price accuracy you need for different kinds of usage: accounting, sales, purchases.\n"
+"=================================================================================================\n"
+"\n"
+"The decimal precision is configured per company.\n"
+""
msgstr ""
#. module: base
-#: help:res.partner,user_id:0
-msgid "The internal user that is in charge of communicating with this contact if any."
+#: model:ir.module.module,description:base.module_claim_from_delivery
+msgid "\n"
+"Create a claim from a delivery order.\n"
+"=====================================\n"
+"\n"
+"Adds a Claim link to the delivery order.\n"
+""
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Search Partner"
+#: model:ir.module.module,description:base.module_survey
+msgid "\n"
+"Create beautiful web surveys and visualize answers\n"
+"==================================================\n"
+"\n"
+"It depends on the answers or reviews of some questions by different users. A\n"
+"survey may have multiple pages. Each page may contain multiple questions and\n"
+"each question may have multiple answers. Different users may give different\n"
+"answers of question and according to that survey is done. Partners are also\n"
+"sent mails with personal token for the invitation of the survey.\n"
+" "
msgstr ""
#. module: base
-#: field:ir.module.category,module_nr:0
-msgid "Number of Modules"
+#: model:ir.module.module,description:base.module_subscription
+msgid "\n"
+"Create recurring documents.\n"
+"===========================\n"
+"\n"
+"This module allows to create new documents and add subscriptions on that document.\n"
+"\n"
+"e.g. To have an invoice generated automatically periodically:\n"
+"-------------------------------------------------------------\n"
+" * Define a document type based on Invoice object\n"
+" * Define a subscription whose source document is the document defined as\n"
+" above. Specify the interval information and partner to be invoice.\n"
+" "
msgstr ""
#. module: base
-#: help:multi_company.default,company_dest_id:0
-msgid "Company to store the current record"
+#: model:ir.module.module,description:base.module_event_sale
+msgid "\n"
+"Creating registration with sale orders.\n"
+"=======================================\n"
+"\n"
+"This module allows you to automate and connect your registration creation with\n"
+"your main sale flow and therefore, to enable the invoicing feature of registrations.\n"
+"\n"
+"It defines a new kind of service products that offers you the possibility to\n"
+"choose an event category associated with it. When you encode a sale order for\n"
+"that product, you will be able to choose an existing event of that category and\n"
+"when you confirm your sale order it will automatically create a registration for\n"
+"this event.\n"
+""
msgstr ""
#. module: base
-#: field:res.partner.bank.type.field,size:0
-msgid "Max. Size"
+#: model:ir.module.module,description:base.module_l10n_hr
+msgid "\n"
+"Croatian localisation.\n"
+"======================\n"
+"\n"
+"Author: Goran Kliska, Slobodni programi d.o.o., Zagreb\n"
+" http://www.slobodni-programi.hr\n"
+"\n"
+"Contributions:\n"
+" Tomislav Bošnjaković, Storm Computers: tipovi konta\n"
+" Ivan Vađić, Slobodni programi: tipovi konta\n"
+"\n"
+"Description:\n"
+"\n"
+"Croatian Chart of Accounts (RRIF ver.2012)\n"
+"\n"
+"RRIF-ov računski plan za poduzetnike za 2012.\n"
+"Vrste konta\n"
+"Kontni plan prema RRIF-u, dorađen u smislu kraćenja naziva i dodavanja analitika\n"
+"Porezne grupe prema poreznoj prijavi\n"
+"Porezi PDV obrasca\n"
+"Ostali porezi \n"
+"Osnovne fiskalne pozicije\n"
+"\n"
+"Izvori podataka:\n"
+" http://www.rrif.hr/dok/preuzimanje/rrif-rp2011.rar\n"
+" http://www.rrif.hr/dok/preuzimanje/rrif-rp2012.rar\n"
+"\n"
+""
msgstr ""
#. module: base
-#: help:ir.actions.act_window,res_id:0
-msgid "Database ID of record to open in form view, when ``view_mode`` is set to 'form' only"
+#: model:ir.module.module,description:base.module_portal
+msgid "\n"
+"Customize access to your OpenERP database to external users by creating portals.\n"
+"================================================================================\n"
+"A portal defines a specific user menu and access rights for its members. This\n"
+"menu can ben seen by portal members, public users and any other user that\n"
+"have the access to technical features (e.g. the administrator).\n"
+"Also, each portal member is linked to a specific partner.\n"
+"\n"
+"The module also associates user groups to the portal users (adding a group in\n"
+"the portal automatically adds it to the portal users, etc). That feature is\n"
+"very handy when used in combination with the module 'share'.\n"
+" "
msgstr ""
#. module: base
-#: help:ir.values,key2:0
-msgid "For actions, one of the possible action slots: \n"
-" - client_action_multi\n"
-" - client_print_multi\n"
-" - client_action_relate\n"
-" - tree_but_open\n"
-"For defaults, an optional condition"
+#: model:ir.module.module,description:base.module_website_sale_delivery
+msgid "\n"
+"Delivery Costs\n"
+"==============\n"
+""
msgstr ""
#. module: base
-#: sql_constraint:res.lang:0
-msgid "The name of the language must be unique !"
+#: model:ir.module.module,description:base.module_marketing_campaign_crm_demo
+msgid "\n"
+"Demo data for the module marketing_campaign.\n"
+"============================================\n"
+"\n"
+"Creates demo data like leads, campaigns and segments for the module marketing_campaign.\n"
+" "
msgstr ""
#. module: base
-#: selection:res.request,state:0
-msgid "active"
+#: model:ir.module.module,description:base.module_l10n_de
+msgid "\n"
+"Dieses Modul beinhaltet einen deutschen Kontenrahmen basierend auf dem SKR03.\n"
+"==============================================================================\n"
+"\n"
+"German accounting chart and localization.\n"
+" "
msgstr ""
#. module: base
-#: field:ir.actions.wizard,wiz_name:0
-msgid "Wizard Name"
+#: model:ir.module.module,description:base.module_website_twitter
+msgid "\n"
+"Display best tweets\n"
+"========================\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_knowledge
+#: model:ir.module.module,description:base.module_website_forum_doc
msgid "\n"
-"Installer for knowledge-based Hidden.\n"
-"=====================================\n"
+"Documentation based on question and pertinent answers of Forum\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_purchase_double_validation
+msgid "\n"
+"Double-validation for purchases exceeding minimum amount.\n"
+"=========================================================\n"
"\n"
-"Makes the Knowledge Application Configuration available from where you can install\n"
-"document and Wiki based Hidden.\n"
+"This module modifies the purchase workflow in order to validate purchases that\n"
+"exceeds minimum amount set by configuration wizard.\n"
" "
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_customer_relationship_management
-msgid "Customer Relationship Management"
+#: model:ir.module.module,description:base.module_hw_escpos
+msgid "\n"
+"ESC/POS Hardware Driver\n"
+"=======================\n"
+"\n"
+"This module allows openerp to print with ESC/POS compatible printers and\n"
+"to open ESC/POS controlled cashdrawers in the point of sale and other modules\n"
+"that would need such functionality.\n"
+"\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_delivery
+#: model:ir.module.module,description:base.module_mass_mailing
msgid "\n"
-"Allows you to add delivery methods in sale orders and picking.\n"
-"==============================================================\n"
+"Easily send mass mailing to your leads, opportunities or customers. Track\n"
+"marketing campaigns performance to improve conversion rates. Design\n"
+"professional emails and reuse templates in a few clicks.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_auth_crypt
+msgid "\n"
+"Ecrypted passwords\n"
+"==================\n"
"\n"
-"You can define your own carrier and delivery grids for prices. When creating \n"
-"invoices from picking, OpenERP is able to add and compute the shipping line.\n"
+"Interaction with LDAP authentication:\n"
+"-------------------------------------\n"
+"This module is currently not compatible with the ``user_ldap`` module and\n"
+"will disable LDAP authentication completely if installed at the same time.\n"
""
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_filters.py:80
-#, python-format
-msgid "There is already a shared filter set as default for %(model)s, delete or change it before setting a new default"
+#: model:ir.module.module,description:base.module_email_template
+msgid "\n"
+"Email Templating (simplified version of the original Power Email by Openlabs).\n"
+"==============================================================================\n"
+"\n"
+"Lets you design complete email templates related to any OpenERP document (Sale\n"
+"Orders, Invoices and so on), including sender, recipient, subject, body (HTML and\n"
+"Text). You may also automatically attach files to your templates, or print and\n"
+"attach a report.\n"
+"\n"
+"For advanced use, the templates may include dynamic attributes of the document\n"
+"they are related to. For example, you may use the name of a Partner's country\n"
+"when writing to them, also providing a safe default in case the attribute is\n"
+"not defined. Each template contains a built-in assistant to help with the\n"
+"inclusion of these dynamic values.\n"
+"\n"
+"If you enable the option, a composition assistant will also appear in the sidebar\n"
+"of the OpenERP documents to which the template applies (e.g. Invoices).\n"
+"This serves as a quick way to send a new email based on the template, after\n"
+"reviewing and adapting the contents, if needed.\n"
+"This composition assistant will also turn into a mass mailing system when called\n"
+"for multiple documents at once.\n"
+"\n"
+"These email templates are also at the heart of the marketing campaign system\n"
+"(see the ``marketing_campaign`` application), if you need to automate larger\n"
+"campaigns on any OpenERP document.\n"
+"\n"
+" **Technical note:** only the templating system of the original Power Email by Openlabs was kept.\n"
+" "
msgstr ""
#. module: base
-#: code:addons/orm.py:2648
-#, python-format
-msgid "Invalid group_by"
+#: model:ir.module.module,description:base.module_account_asset
+msgid "\n"
+"Financial and accounting asset management.\n"
+"==========================================\n"
+"\n"
+"This Module manages the assets owned by a company or an individual. It will keep \n"
+"track of depreciation's occurred on those assets. And it allows to create Move's \n"
+"of the depreciation lines.\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: field:ir.module.category,child_ids:0
-msgid "Child Applications"
+#: model:ir.module.module,description:base.module_l10n_fr_hr_payroll
+msgid "\n"
+"French Payroll Rules.\n"
+"=====================\n"
+"\n"
+" - Configuration of hr_payroll for French localization\n"
+" - All main contributions rules for French payslip, for 'cadre' and 'non-cadre'\n"
+" - New payslip report\n"
+"\n"
+"TODO:\n"
+"-----\n"
+" - Integration with holidays module for deduction and allowance\n"
+" - Integration with hr_payroll_account for the automatic account_move_line\n"
+" creation from the payslip\n"
+" - Continue to integrate the contribution. Only the main contribution are\n"
+" currently implemented\n"
+" - Remake the report under webkit\n"
+" - The payslip.line with appears_in_payslip = False should appears in the\n"
+" payslip interface, but not in the payslip report\n"
+" "
msgstr ""
#. module: base
-#: field:res.partner,credit_limit:0
-msgid "Credit Limit"
+#: model:ir.module.module,description:base.module_gamification
+msgid "\n"
+"Gamification process\n"
+"====================\n"
+"The Gamification module provides ways to evaluate and motivate the users of OpenERP.\n"
+"\n"
+"The users can be evaluated using goals and numerical objectives to reach.\n"
+"**Goals** are assigned through **challenges** to evaluate and compare members of a team with each others and through time.\n"
+"\n"
+"For non-numerical achievements, **badges** can be granted to users. From a simple \"thank you\" to an exceptional achievement, a badge is an easy way to exprimate gratitude to a user for their good work.\n"
+"\n"
+"Both goals and badges are flexibles and can be adapted to a large range of modules and actions. When installed, this module creates easy goals to help new users to discover OpenERP and configure their user profile.\n"
+""
msgstr ""
#. module: base
-#: field:ir.model.constraint,date_update:0
-#: field:ir.model.data,date_update:0
-#: field:ir.model.relation,date_update:0
-msgid "Update Date"
+#: model:ir.module.module,description:base.module_l10n_uy
+msgid "\n"
+"General Chart of Accounts.\n"
+"==========================\n"
+"\n"
+"Provide Templates for Chart of Accounts, Taxes for Uruguay.\n"
+"\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_base_action_rule
-msgid "Automated Action Rules"
+#: model:ir.module.module,description:base.module_hr_timesheet_invoice
+msgid "\n"
+"Generate your Invoices from Expenses, Timesheet Entries.\n"
+"========================================================\n"
+"\n"
+"Module to generate invoices based on costs (human resources, expenses, ...).\n"
+"\n"
+"You can define price lists in analytic account, make some theoretical revenue\n"
+"reports."
msgstr ""
#. module: base
-#: view:ir.attachment:0
-#: field:ir.attachment,create_uid:0
-msgid "Owner"
+#: model:ir.module.module,description:base.module_hr_payroll_account
+msgid "\n"
+"Generic Payroll system Integrated with Accounting.\n"
+"==================================================\n"
+"\n"
+" * Expense Encoding\n"
+" * Payment Encoding\n"
+" * Company Contribution Management\n"
+" "
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-msgid "Source Object"
+#: model:ir.module.module,description:base.module_hr_payroll
+msgid "\n"
+"Generic Payroll system.\n"
+"=======================\n"
+"\n"
+" * Employee Details\n"
+" * Employee Contracts\n"
+" * Passport based Contract\n"
+" * Allowances/Deductions\n"
+" * Allow to configure Basic/Gross/Net Salary\n"
+" * Employee Payslip\n"
+" * Monthly Payroll Register\n"
+" * Integrated with Holiday Management\n"
+" "
msgstr ""
#. module: base
-#: model:res.partner.bank.type,format_layout:base.bank_normal
-msgid "%(bank_name)s: %(acc_number)s"
+#: model:ir.module.module,description:base.module_web_analytics
+msgid "\n"
+"Google Analytics.\n"
+"=================\n"
+"\n"
+"Collects web application usage with Google Analytics.\n"
+" "
msgstr ""
#. module: base
-#: view:ir.actions.todo:0
-msgid "Config Wizard Steps"
+#: model:ir.module.module,description:base.module_web_graph
+msgid "\n"
+"Graph Views for Web Client.\n"
+"===========================\n"
+"\n"
+" * Parse a <graph> view but allows changing dynamically the presentation\n"
+" * Graph Types: pie, lines, areas, bars, radar\n"
+" * Stacked/Not Stacked for areas and bars\n"
+" * Legends: top, inside (top/left), hidden\n"
+" * Features: download as PNG or CSV, browse data grid, switch orientation\n"
+" * Unlimited \"Group By\" levels (not stacked), two cross level analysis (stacked)\n"
+""
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_ui_view_sc
-msgid "ir.ui.view_sc"
+#: model:ir.module.module,description:base.module_hw_proxy
+msgid "\n"
+"Hardware Poxy\n"
+"=============\n"
+"\n"
+"This module allows you to remotely use peripherals connected to this server.\n"
+"\n"
+"This modules only contains the enabling framework. The actual devices drivers\n"
+"are found in other modules that must be installed separately. \n"
+"\n"
+""
msgstr ""
#. module: base
-#: view:ir.model.access:0
-#: field:ir.model.access,group_id:0
-#: view:res.groups:0
-msgid "Group"
+#: model:ir.module.module,description:base.module_crm_helpdesk
+msgid "\n"
+"Helpdesk Management.\n"
+"====================\n"
+"\n"
+"Like records and processing of claims, Helpdesk and Support are good tools\n"
+"to trace your interventions. This menu is more adapted to oral communication,\n"
+"which is not necessarily related to a claim. Select a customer, add notes\n"
+"and categorize your interventions with a channel and a priority level.\n"
+" "
msgstr ""
#. module: base
-#: constraint:res.lang:0
-msgid "Invalid date/time format directive specified. Please refer to the list of allowed directives, displayed when you edit a language."
+#: model:ir.module.module,description:base.module_hr
+msgid "\n"
+"Human Resources Management\n"
+"==========================\n"
+"\n"
+"This application enables you to manage important aspects of your company's staff and other details such as their skills, contacts, working time...\n"
+"\n"
+"\n"
+"You can manage:\n"
+"---------------\n"
+"* Employees and hierarchies : You can define your employee with User and display hierarchies\n"
+"* HR Departments\n"
+"* HR Jobs\n"
+" "
msgstr ""
#. module: base
-#: code:addons/orm.py:4152
-#, python-format
-msgid "One of the records you are trying to modify has already been deleted (Document type: %s)."
+#: model:ir.module.module,description:base.module_base_import_module
+msgid "\n"
+"Import a custom data module\n"
+"===========================\n"
+"\n"
+"This module allows authorized users to import a custom data module (.xml files and static assests)\n"
+"for customization purpose.\n"
+""
msgstr ""
#. module: base
-#: help:ir.actions.act_window,views:0
-msgid "This function field computes the ordered list of views that should be enabled when displaying the result of an action, federating view mode, views and reference view. The result is returned as an ordered list of pairs (view_id,view_mode)."
+#: model:ir.module.module,description:base.module_l10n_in
+msgid "\n"
+"Indian Accounting: Chart of Account.\n"
+"====================================\n"
+"\n"
+"Indian accounting chart and localization.\n"
+"\n"
+"OpenERP allows to manage Indian Accounting by providing Two Formats Of Chart of Accounts i.e Indian Chart Of Accounts - Standard and Indian Chart Of Accounts - Schedule VI.\n"
+"\n"
+"Note: The Schedule VI has been revised by MCA and is applicable for all Balance Sheet made after\n"
+"31st March, 2011. The Format has done away with earlier two options of format of Balance\n"
+"Sheet, now only Vertical format has been permitted Which is Supported By OpenERP.\n"
+" "
msgstr ""
#. module: base
-#: field:ir.model.relation,name:0
-msgid "Relation Name"
+#: model:ir.module.module,description:base.module_l10n_in_hr_payroll
+msgid "\n"
+"Indian Payroll Salary Rules.\n"
+"============================\n"
+"\n"
+" -Configuration of hr_payroll for India localization\n"
+" -All main contributions rules for India payslip.\n"
+" * New payslip report\n"
+" * Employee Contracts\n"
+" * Allow to configure Basic / Gross / Net Salary\n"
+" * Employee PaySlip\n"
+" * Allowance / Deduction\n"
+" * Integrated with Holiday Management\n"
+" * Medical Allowance, Travel Allowance, Child Allowance, ...\n"
+" - Payroll Advice and Report\n"
+" - Yearly Salary by Head and Yearly Salary by Employee Report\n"
+" "
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Create Access Right"
+#: model:ir.module.module,description:base.module_knowledge
+msgid "\n"
+"Installer for knowledge-based Hidden.\n"
+"=====================================\n"
+"\n"
+"Makes the Knowledge Application Configuration available from where you can install\n"
+"document and Wiki based Hidden.\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.tv
-msgid "Tuvalu"
+#: model:ir.module.module,description:base.module_im_chat
+msgid "\n"
+"Instant Messaging\n"
+"=================\n"
+"\n"
+"Allows users to chat with each other in real time. Find other users easily and\n"
+"chat in real time. It support several chats in parallel.\n"
+" "
msgstr ""
#. module: base
-#: field:ir.actions.configuration.wizard,note:0
-msgid "Next Wizard"
+#: model:ir.module.module,description:base.module_google_drive
+msgid "\n"
+"Integrate google document to OpenERP record.\n"
+"============================================\n"
+"\n"
+"This module allows you to integrate google documents to any of your OpenERP record quickly and easily using OAuth 2.0 for Installed Applications,\n"
+"You can configure your google Authorization Code from Settings > Configuration > General Settings by clicking on \"Generate Google Authorization Code\"\n"
+""
msgstr ""
#. module: base
-#: field:res.lang,date_format:0
-msgid "Date Format"
+#: model:ir.module.module,description:base.module_stock_invoice_directly
+msgid "\n"
+"Invoice Wizard for Delivery.\n"
+"============================\n"
+"\n"
+"When you send or deliver goods, this module automatically launch the invoicing\n"
+"wizard if the delivery is to be invoiced.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_base_report_designer
-msgid "OpenOffice Report Designer"
+#: model:ir.module.module,description:base.module_account_voucher
+msgid "\n"
+"Invoicing & Payments by Accounting Voucher & Receipts\n"
+"=====================================================\n"
+"The specific and easy-to-use Invoicing system in OpenERP allows you to keep track of your accounting, even when you are not an accountant. It provides an easy way to follow up on your suppliers and customers. \n"
+"\n"
+"You could use this simplified accounting in case you work with an (external) account to keep your books, and you still want to keep track of payments. \n"
+"\n"
+"The Invoicing system includes receipts and vouchers (an easy way to keep track of sales and purchases). It also offers you an easy method of registering payments, without having to encode complete abstracts of account.\n"
+"\n"
+"This module manages:\n"
+"\n"
+"* Voucher Entry\n"
+"* Voucher Receipt [Sales & Purchase]\n"
+"* Voucher Payment [Customer & Supplier]\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.an
-msgid "Netherlands Antilles"
+#: model:ir.module.module,description:base.module_stock_landed_costs
+msgid "\n"
+"Landed Costs Management\n"
+"=======================\n"
+"This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.\n"
+" "
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:307
-#, python-format
-msgid "You can not remove the admin user as it is used internally for resources created by OpenERP (updates, module installation, ...)"
+#: model:ir.module.module,description:base.module_crm_project_issue
+msgid "\n"
+"Lead to Issues\n"
+"==============\n"
+"\n"
+"Link module to map leads to issues\n"
+" "
msgstr ""
#. module: base
-#: view:workflow.transition:0
-msgid "Workflow Transition"
+#: model:ir.module.module,description:base.module_board
+msgid "\n"
+"Lets the user create a custom dashboard.\n"
+"========================================\n"
+"\n"
+"Allows users to create custom dashboard.\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.gf
-msgid "French Guyana"
+#: model:ir.module.module,description:base.module_im_livechat
+msgid "\n"
+"Live Chat Support\n"
+"=================\n"
+"\n"
+"Allow to drop instant messaging widgets on any web page that will communicate\n"
+"with the current server and dispatch visitors request amongst several live\n"
+"chat operators.\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_hr
-msgid "Jobs, Departments, Employees Details"
+#: model:ir.module.module,description:base.module_stock_dropshipping
+msgid "\n"
+"Manage drop shipping orders\n"
+"===========================\n"
+"\n"
+"This module adds a pre-configured Drop Shipping picking type\n"
+"as well as a procurement route that allow configuring Drop\n"
+"Shipping products and orders.\n"
+"\n"
+"When drop shipping is used the goods are directly transferred\n"
+"from suppliers to customers (direct delivery) without\n"
+"going through the retailer's warehouse. In this case no\n"
+"internal transfer document is needed.\n"
+"\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_hr_expense
+msgid "\n"
+"Manage expenses by Employees\n"
+"============================\n"
+"\n"
+"This application allows you to manage your employees' daily expenses. It gives you access to your employees’ fee notes and give you the right to complete and validate or refuse the notes. After validation it creates an invoice for the employee.\n"
+"Employee can encode their own expenses and the validation flow puts it automatically in the accounting after validation by managers.\n"
+"\n"
+"\n"
+"The whole flow is implemented as:\n"
+"---------------------------------\n"
+"* Draft expense\n"
+"* Confirmation of the sheet by the employee\n"
+"* Validation by his manager\n"
+"* Validation by the accountant and accounting entries creation\n"
+"\n"
+"This module also uses analytic accounting and is compatible with the invoice on timesheet module so that you are able to automatically re-invoice your customers' expenses if your work by project.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_purchase
+msgid "\n"
+"Manage goods requirement by Purchase Orders easily\n"
+"==================================================\n"
+"\n"
+"Purchase management enables you to track your suppliers' price quotations and convert them into purchase orders if necessary.\n"
+"OpenERP has several methods of monitoring invoices and tracking the receipt of ordered goods. You can handle partial deliveries in OpenERP, so you can keep track of items that are still to be delivered in your orders, and you can issue reminders automatically.\n"
+"\n"
+"OpenERP’s replenishment management rules enable the system to generate draft purchase orders automatically, or you can configure it to run a lean process driven entirely by current production needs.\n"
+"\n"
+"Dashboard / Reports for Purchase Management will include:\n"
+"---------------------------------------------------------\n"
+"* Request for Quotations\n"
+"* Purchase Orders Waiting Approval\n"
+"* Monthly Purchases by Category\n"
+"* Receipt Analysis\n"
+"* Purchase Analysis\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_hr_recruitment
+msgid "\n"
+"Manage job positions and the recruitment process\n"
+"================================================\n"
+"\n"
+"This application allows you to easily keep track of jobs, vacancies, applications, interviews...\n"
+"\n"
+"It is integrated with the mail gateway to automatically fetch email sent to <jobs@yourcompany.com> in the list of applications. It's also integrated with the document management system to store and search in the CV base and find the candidate that you are looking for. Similarly, it is integrated with the survey module to allow you to define interviews for different jobs.\n"
+"You can define the different phases of interviews and easily rate the applicant from the kanban view.\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_hr_holidays
+msgid "\n"
+"Manage leaves and allocation requests\n"
+"=====================================\n"
+"\n"
+"This application controls the holiday schedule of your company. It allows employees to request holidays. Then, managers can review requests for holidays and approve or reject them. This way you can control the overall holiday planning for the company or department.\n"
+"\n"
+"You can configure several kinds of leaves (sickness, holidays, paid days, ...) and allocate leaves to an employee or department quickly using allocation requests. An employee can also make a request for more days off by making a new Allocation. It will increase the total of available days for that leave type (if the request is accepted).\n"
+"\n"
+"You can keep track of leaves in different ways by following reports: \n"
+"\n"
+"* Leaves Summary\n"
+"* Leaves by Department\n"
+"* Leaves Analysis\n"
+"\n"
+"A synchronization with an internal agenda (Meetings of the CRM module) is also possible in order to automatically create a meeting when a holiday request is accepted by setting up a type of meeting in Leave Type.\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_stock
+msgid "\n"
+"Manage multi-warehouses, multi- and structured stock locations\n"
+"==============================================================\n"
+"\n"
+"The warehouse and inventory management is based on a hierarchical location structure, from warehouses to storage bins.\n"
+"The double entry inventory system allows you to manage customers, suppliers as well as manufacturing inventories.\n"
+"\n"
+"OpenERP has the capacity to manage lots and serial numbers ensuring compliance with the traceability requirements imposed by the majority of industries.\n"
+"\n"
+"Key Features\n"
+"------------\n"
+"* Moves history and planning,\n"
+"* Minimum stock rules\n"
+"* Support for barcodes\n"
+"* Rapid detection of mistakes through double entry system\n"
+"* Traceability (Serial Numbers, Packages, ...)\n"
+"\n"
+"Dashboard / Reports for Warehouse Management will include:\n"
+"----------------------------------------------------------\n"
+"* Incoming Products (Graph)\n"
+"* Outgoing Products (Graph)\n"
+"* Procurement in Exception\n"
+"* Inventory Analysis\n"
+"* Last Product Inventories\n"
+"* Moves Analysis\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_sale
+msgid "\n"
+"Manage sales quotations and orders\n"
+"==================================\n"
+"\n"
+"This application allows you to manage your sales goals in an effective and efficient manner by keeping track of all sales orders and history.\n"
+"\n"
+"It handles the full sales workflow:\n"
+"\n"
+"* **Quotation** -> **Sales order** -> **Invoice**\n"
+"\n"
+"Preferences (only with Warehouse Management installed)\n"
+"------------------------------------------------------\n"
+"\n"
+"If you also installed the Warehouse Management, you can deal with the following preferences:\n"
+"\n"
+"* Shipping: Choice of delivery at once or partial delivery\n"
+"* Invoicing: choose how invoices will be paid\n"
+"* Incoterms: International Commercial terms\n"
+"\n"
+"You can choose flexible invoicing methods:\n"
+"\n"
+"* *On Demand*: Invoices are created manually from Sales Orders when needed\n"
+"* *On Delivery Order*: Invoices are generated from picking (delivery)\n"
+"* *Before Delivery*: A Draft invoice is created and must be paid before delivery\n"
+"\n"
+"\n"
+"The Dashboard for the Sales Manager will include\n"
+"------------------------------------------------\n"
+"* My Quotations\n"
+"* Monthly Turnover (Graph)\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_sale_stock
+msgid "\n"
+"Manage sales quotations and orders\n"
+"==================================\n"
+"\n"
+"This module makes the link between the sales and warehouses management applications.\n"
+"\n"
+"Preferences\n"
+"-----------\n"
+"* Shipping: Choice of delivery at once or partial delivery\n"
+"* Invoicing: choose how invoices will be paid\n"
+"* Incoterms: International Commercial terms\n"
+"\n"
+"You can choose flexible invoicing methods:\n"
+"\n"
+"* *On Demand*: Invoices are created manually from Sales Orders when needed\n"
+"* *On Delivery Order*: Invoices are generated from picking (delivery)\n"
+"* *Before Delivery*: A Draft invoice is created and must be paid before delivery\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_mrp
+msgid "\n"
+"Manage the Manufacturing process in OpenERP\n"
+"===========================================\n"
+"\n"
+"The manufacturing module allows you to cover planning, ordering, stocks and the manufacturing or assembly of products from raw materials and components. It handles the consumption and production of products according to a bill of materials and the necessary operations on machinery, tools or human resources according to routings.\n"
+"\n"
+"It supports complete integration and planification of stockable goods, consumables or services. Services are completely integrated with the rest of the software. For instance, you can set up a sub-contracting service in a bill of materials to automatically purchase on order the assembly of your production.\n"
+"\n"
+"Key Features\n"
+"------------\n"
+"* Make to Stock/Make to Order\n"
+"* Multi-level bill of materials, no limit\n"
+"* Multi-level routing, no limit\n"
+"* Routing and work center integrated with analytic accounting\n"
+"* Periodical scheduler computation \n"
+"* Allows to browse bills of materials in a complete structure that includes child and phantom bills of materials\n"
+"\n"
+"Dashboard / Reports for MRP will include:\n"
+"-----------------------------------------\n"
+"* Procurements in Exception (Graph)\n"
+"* Stock Value Variation (Graph)\n"
+"* Work Order Analysis\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_sale_layout
+msgid "\n"
+"Manage your sales reports\n"
+"=========================\n"
+"With this module you can personnalize the sale order and invoice report with\n"
+"separators, page-breaks or subtotals.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_crm_mass_mailing
+msgid "\n"
+"Mass Mailing with Crm Marketing\n"
+"================================\n"
+"\n"
+"Link module mass mailing with the marketing mixin from crm.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_marketing
+msgid "\n"
+"Menu for Marketing.\n"
+"===================\n"
+"\n"
+"Contains the installer for marketing-related modules.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_l10n_mx
+msgid "\n"
+"Minimal accounting configuration for Mexico.\n"
+"============================================\n"
+"\n"
+"This Chart of account is a minimal proposal to be able to use OoB the \n"
+"accounting feature of Openerp.\n"
+"\n"
+"This doesn't pretend be all the localization for MX it is just the minimal \n"
+"data required to start from 0 in mexican localization.\n"
+"\n"
+"This modules and its content is updated frequently by openerp-mexico team.\n"
+"\n"
+"With this module you will have:\n"
+"\n"
+" - Minimal chart of account tested in production eviroments.\n"
+" - Minimal chart of taxes, to comply with SAT_ requirements.\n"
+"\n"
+".. SAT: http://www.sat.gob.mx/\n"
+" "
msgstr ""
#. module: base
@@ -492,8 +1519,391 @@ msgid "\n"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_idea
-msgid "Ideas"
+#: model:ir.module.module,description:base.module_resource
+msgid "\n"
+"Module for resource management.\n"
+"===============================\n"
+"\n"
+"A resource represent something that can be scheduled (a developer on a task or a\n"
+"work center on manufacturing orders). This module manages a resource calendar\n"
+"associated to every resource. It also manages the leaves of every resource.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_account_check_writing
+msgid "\n"
+"Module for the Check Writing and Check Printing.\n"
+"================================================\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_account_bank_statement_extensions
+msgid "\n"
+"Module that extends the standard account_bank_statement_line object for improved e-banking support.\n"
+"===================================================================================================\n"
+"\n"
+"This module adds:\n"
+"-----------------\n"
+" - valuta date\n"
+" - batch payments\n"
+" - traceability of changes to bank statement lines\n"
+" - bank statement line views\n"
+" - bank statements balances report\n"
+" - performance improvements for digital import of bank statement (via \n"
+" 'ebanking_import' context flag)\n"
+" - name_search on res.partner.bank enhanced to allow search on bank \n"
+" and iban account numbers\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_account_followup
+msgid "\n"
+"Module to automate letters for unpaid invoices, with multi-level recalls.\n"
+"=========================================================================\n"
+"\n"
+"You can define your multiple levels of recall through the menu:\n"
+"---------------------------------------------------------------\n"
+" Configuration / Follow-up / Follow-up Levels\n"
+" \n"
+"Once it is defined, you can automatically print recalls every day through simply clicking on the menu:\n"
+"------------------------------------------------------------------------------------------------------\n"
+" Payment Follow-Up / Send Email and letters\n"
+"\n"
+"It will generate a PDF / send emails / set manual actions according to the the different levels \n"
+"of recall defined. You can define different policies for different companies. \n"
+"\n"
+"Note that if you want to check the follow-up level for a given partner/account entry, you can do from in the menu:\n"
+"------------------------------------------------------------------------------------------------------------------\n"
+" Reporting / Accounting / **Follow-ups Analysis\n"
+"\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_l10n_be_coda
+msgid "\n"
+"Module to import CODA bank statements.\n"
+"======================================\n"
+"\n"
+"Supported are CODA flat files in V2 format from Belgian bank accounts.\n"
+"----------------------------------------------------------------------\n"
+" * CODA v1 support.\n"
+" * CODA v2.2 support.\n"
+" * Foreign Currency support.\n"
+" * Support for all data record types (0, 1, 2, 3, 4, 8, 9).\n"
+" * Parsing & logging of all Transaction Codes and Structured Format\n"
+" Communications.\n"
+" * Automatic Financial Journal assignment via CODA configuration parameters.\n"
+" * Support for multiple Journals per Bank Account Number.\n"
+" * Support for multiple statements from different bank accounts in a single\n"
+" CODA file.\n"
+" * Support for 'parsing only' CODA Bank Accounts (defined as type='info' in\n"
+" the CODA Bank Account configuration records).\n"
+" * Multi-language CODA parsing, parsing configuration data provided for EN,\n"
+" NL, FR.\n"
+"\n"
+"The machine readable CODA Files are parsed and stored in human readable format in\n"
+"CODA Bank Statements. Also Bank Statements are generated containing a subset of\n"
+"the CODA information (only those transaction lines that are required for the\n"
+"creation of the Financial Accounting records). The CODA Bank Statement is a\n"
+"'read-only' object, hence remaining a reliable representation of the original\n"
+"CODA file whereas the Bank Statement will get modified as required by accounting\n"
+"business processes.\n"
+"\n"
+"CODA Bank Accounts configured as type 'Info' will only generate CODA Bank Statements.\n"
+"\n"
+"A removal of one object in the CODA processing results in the removal of the\n"
+"associated objects. The removal of a CODA File containing multiple Bank\n"
+"Statements will also remove those associated statements.\n"
+"\n"
+"Instead of a manual adjustment of the generated Bank Statements, you can also\n"
+"re-import the CODA after updating the OpenERP database with the information that\n"
+"was missing to allow automatic reconciliation.\n"
+"\n"
+"Remark on CODA V1 support:\n"
+"~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
+"In some cases a transaction code, transaction category or structured\n"
+"communication code has been given a new or clearer description in CODA V2.The\n"
+"description provided by the CODA configuration tables is based upon the CODA\n"
+"V2.2 specifications.\n"
+"If required, you can manually adjust the descriptions via the CODA configuration menu.\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_account_payment
+msgid "\n"
+"Module to manage the payment of your supplier invoices.\n"
+"=======================================================\n"
+"\n"
+"This module allows you to create and manage your payment orders, with purposes to\n"
+"--------------------------------------------------------------------------------- \n"
+" * serve as base for an easy plug-in of various automated payment mechanisms.\n"
+" * provide a more efficient way to manage invoice payment.\n"
+"\n"
+"Warning:\n"
+"~~~~~~~~\n"
+"The confirmation of a payment order does _not_ create accounting entries, it just \n"
+"records the fact that you gave your payment order to your bank. The booking of \n"
+"your order must be encoded as usual through a bank statement. Indeed, it's only \n"
+"when you get the confirmation from your bank that your order has been accepted \n"
+"that you can book it in your accounting. To help you with that operation, you \n"
+"have a new option to import payment orders as bank statement lines.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_warning
+msgid "\n"
+"Module to trigger warnings in OpenERP objects.\n"
+"==============================================\n"
+"\n"
+"Warning messages can be displayed for objects like sale order, purchase order,\n"
+"picking and invoice. The message is triggered by the form's onchange event.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_base_import
+msgid "\n"
+"New extensible file import for OpenERP\n"
+"======================================\n"
+"\n"
+"Re-implement openerp's file import system:\n"
+"\n"
+"* Server side, the previous system forces most of the logic into the\n"
+" client which duplicates the effort (between clients), makes the\n"
+" import system much harder to use without a client (direct RPC or\n"
+" other forms of automation) and makes knowledge about the\n"
+" import/export system much harder to gather as it is spread over\n"
+" 3+ different projects.\n"
+"\n"
+"* In a more extensible manner, so users and partners can build their\n"
+" own front-end to import from other file formats (e.g. OpenDocument\n"
+" files) which may be simpler to handle in their work flow or from\n"
+" their data production sources.\n"
+"\n"
+"* In a module, so that administrators and users of OpenERP who do not\n"
+" need or want an online import can avoid it being available to users.\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_livechat
+msgid "\n"
+"Odoo Website LiveChat\n"
+"========================\n"
+"For website built with Odoo CMS, this module include a chat button on your Website, and allow your visitors to chat with your collabarators.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_event_track
+msgid "\n"
+"Online Advanced Events\n"
+"======================\n"
+"\n"
+"Adds support for:\n"
+"- sponsors\n"
+"- dedicated menu per event\n"
+"- news per event\n"
+"- tracks\n"
+"- agenda\n"
+"- call for proposals\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_event_sale
+msgid "\n"
+"Online Event's Tickets\n"
+"======================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_event
+msgid "\n"
+"Online Events\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_blog
+msgid "\n"
+"OpenERP Blog\n"
+"============\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_crm
+#: model:ir.module.module,description:base.module_website_hr_recruitment
+msgid "\n"
+"OpenERP Contact Form\n"
+"====================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_customer
+msgid "\n"
+"OpenERP Customer References\n"
+"===========================\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_sale
+#: model:ir.module.module,description:base.module_website_sale_options
+msgid "\n"
+"OpenERP E-Commerce\n"
+"==================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_mail_group
+msgid "\n"
+"OpenERP Mail Group : Mailing List Archives\n"
+"==========================================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_project
+msgid "\n"
+"OpenERP Projects\n"
+"================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_quote
+msgid "\n"
+"OpenERP Sale Quote Roller\n"
+"=========================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_calendar
+msgid "\n"
+"OpenERP Web Calendar view.\n"
+"==========================\n"
+"\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_gantt
+msgid "\n"
+"OpenERP Web Gantt chart view.\n"
+"=============================\n"
+"\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_linkedin
+msgid "\n"
+"OpenERP Web LinkedIn module.\n"
+"============================\n"
+"This module provides the Integration of the LinkedIn with OpenERP.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web
+msgid "\n"
+"OpenERP Web core module.\n"
+"========================\n"
+"\n"
+"This module provides the core of the OpenERP Web Client.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_tests_demo
+msgid "\n"
+"OpenERP Web demo of a test suite\n"
+"================================\n"
+"\n"
+"Test suite example, same code as that used in the testing documentation.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_kanban
+msgid "\n"
+"OpenERP Web kanban view.\n"
+"========================\n"
+"\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_tests
+msgid "\n"
+"OpenERP Web test suite.\n"
+"=======================\n"
+"\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_view_editor
+msgid "\n"
+"OpenERP Web to edit views.\n"
+"==========================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website
+msgid "\n"
+"OpenERP Website CMS\n"
+"===================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_website_google_map
+msgid "\n"
+"OpenERP Website Google Map\n"
+"==========================\n"
+"\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_api
+msgid "\n"
+"Openerp Web API.\n"
+"================\n"
+"\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_web_diagram
+msgid "\n"
+"Openerp Web Diagram view.\n"
+"=========================\n"
+"\n"
+""
msgstr ""
#. module: base
@@ -513,406 +1923,1026 @@ msgid "\n"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Bosnian / bosanski jezik"
-msgstr ""
-
-#. module: base
-#: help:ir.actions.report.xml,attachment_use:0
-msgid "If you check this, then the second time the user prints with same attachment name, it returns the previous report."
+#: model:ir.module.module,description:base.module_website_hr
+msgid "\n"
+"Our Team Page\n"
+"=============\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_mrp_byproduct
+#: model:ir.module.module,description:base.module_l10n_pa
msgid "\n"
-"This module allows you to produce several products from one production order.\n"
-"=============================================================================\n"
+"Panamenian accounting chart and tax localization.\n"
"\n"
-"You can configure by-products in the bill of material.\n"
+"Plan contable panameño e impuestos de acuerdo a disposiciones vigentes\n"
"\n"
-"Without this module:\n"
-"--------------------\n"
-" A + B + C -> D\n"
+"Con la Colaboración de \n"
+"- AHMNET CORP http://www.ahmnet.com\n"
"\n"
-"With this module:\n"
-"-----------------\n"
-" A + B + C -> D + E\n"
" "
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (VE) / Español (VE)"
+#: model:ir.module.module,description:base.module_base_geolocalize
+msgid "\n"
+"Partners geolocalization\n"
+"========================\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice
-msgid "Invoice on Timesheets"
+#: model:ir.module.module,description:base.module_hr_evaluation
+msgid "\n"
+"Periodical Employees evaluation and appraisals\n"
+"==============================================\n"
+"\n"
+"By using this application you can maintain the motivational process by doing periodical evaluations of your employees' performance. The regular assessment of human resources can benefit your people as well your organization.\n"
+"\n"
+"An evaluation plan can be assigned to each employee. These plans define the frequency and the way you manage your periodic personal evaluations. You will be able to define steps and attach interview forms to each step.\n"
+"\n"
+"Manages several types of evaluations: bottom-up, top-down, self-evaluations and the final evaluation by the manager.\n"
+"\n"
+"Key Features\n"
+"------------\n"
+"* Ability to create employees evaluations.\n"
+"* An evaluation can be created by an employee for subordinates, juniors as well as his manager.\n"
+"* The evaluation is done according to a plan in which various surveys can be created. Each survey can be answered by a particular level in the employees hierarchy. The final review and evaluation is done by the manager.\n"
+"* Every evaluation filled by employees can be viewed in a PDF form.\n"
+"* Interview Requests are generated automatically by OpenERP according to employees evaluation plans. Each user receives automatic emails and requests to perform a periodical evaluation of their colleagues.\n"
+""
msgstr ""
#. module: base
-#: view:base.module.upgrade:0
-msgid "Your system will be updated."
+#: model:ir.module.module,description:base.module_l10n_pe
+msgid "\n"
+"Peruvian accounting chart and tax localization. According the PCGE 2010.\n"
+"========================================================================\n"
+"\n"
+"Plan contable peruano e impuestos de acuerdo a disposiciones vigentes de la\n"
+"SUNAT 2011 (PCGE 2010).\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: field:ir.actions.todo,note:0
-#: selection:ir.property,type:0
-msgid "Text"
+#: model:ir.module.module,description:base.module_l10n_it
+msgid "\n"
+"Piano dei conti italiano di un'impresa generica.\n"
+"================================================\n"
+"\n"
+"Italian accounting chart and localization.\n"
+" "
msgstr ""
#. module: base
-#: field:res.country,name:0
-msgid "Country Name"
+#: model:ir.module.module,description:base.module_hw_posbox_homepage
+msgid "\n"
+"PosBox Homepage\n"
+"===============\n"
+"\n"
+"This module overrides openerp web interface to display a simple\n"
+"Homepage that explains what's the posbox and show the status,\n"
+"and where to find documentation.\n"
+"\n"
+"If you activate this module, you won't be able to access the \n"
+"regular openerp interface anymore. \n"
+"\n"
+""
msgstr ""
#. module: base
-#: model:res.country,name:base.co
-msgid "Colombia"
+#: model:ir.module.module,description:base.module_hw_posbox_upgrade
+msgid "\n"
+"PosBox Software Upgrader\n"
+"========================\n"
+"\n"
+"This module allows to remotely upgrade the PosBox software to a\n"
+"new version. This module is specific to the PosBox setup and environment\n"
+"and should not be installed on regular openerp servers.\n"
+"\n"
+""
msgstr ""
#. module: base
-#: model:res.partner.title,name:base.res_partner_title_mister
-msgid "Mister"
+#: model:ir.module.module,description:base.module_website_instantclick
+msgid "\n"
+"Preloads data on anonymous mode of website\n"
+"==========================================\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: help:res.country,code:0
-msgid "The ISO country code in two chars.\n"
-"You can use this field for quick search."
+#: model:ir.module.module,description:base.module_product_extended
+msgid "\n"
+"Product extension. This module adds:\n"
+" * Last purchase order for each product supplier \n"
+" * New functional field: Available stock (real+outgoing stock)\n"
+" * Computes standard price from the BoM of the product (optional for each product)\n"
+" * Standard price is shown in the BoM and it can be computed with a wizard \n"
+""
msgstr ""
#. module: base
-#: model:res.country,name:base.pw
-msgid "Palau"
+#: model:ir.module.module,description:base.module_edi
+msgid "\n"
+"Provides a common EDI platform that other Applications can use.\n"
+"===============================================================\n"
+"\n"
+"OpenERP specifies a generic EDI format for exchanging business documents between \n"
+"different systems, and provides generic mechanisms to import and export them.\n"
+"\n"
+"More details about OpenERP's EDI format may be found in the technical OpenERP \n"
+"documentation at http://doc.openerp.com.\n"
+" "
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Sales & Purchases"
+#: model:ir.module.module,description:base.module_website_crm_partner_assign
+msgid "\n"
+"Publish and Assign Partner\n"
+"==========================\n"
+" "
msgstr ""
#. module: base
-#: view:ir.translation:0
-msgid "Untranslated"
+#: model:ir.module.module,description:base.module_point_of_sale
+msgid "\n"
+"Quick and Easy sale process\n"
+"===========================\n"
+"\n"
+"This module allows you to manage your shop sales very easily with a fully web based touchscreen interface.\n"
+"It is compatible with all PC tablets and the iPad, offering multiple payment methods. \n"
+"\n"
+"Product selection can be done in several ways: \n"
+"\n"
+"* Using a barcode reader\n"
+"* Browsing through categories of products or via a text search.\n"
+"\n"
+"Main Features\n"
+"-------------\n"
+"* Fast encoding of the sale\n"
+"* Choose one payment method (the quick way) or split the payment between several payment methods\n"
+"* Computation of the amount of money to return\n"
+"* Create and confirm the picking list automatically\n"
+"* Allows the user to create an invoice automatically\n"
+"* Refund previous sales\n"
+" "
msgstr ""
#. module: base
-#: view:ir.mail_server:0
-msgid "Outgoing Mail Server"
+#: model:ir.module.module,description:base.module_hr_timesheet_sheet
+msgid "\n"
+"Record and validate timesheets and attendances easily\n"
+"=====================================================\n"
+"\n"
+"This application supplies a new screen enabling you to manage both attendances (Sign in/Sign out) and your work encoding (timesheet) by period. Timesheet entries are made by employees each day. At the end of the defined period, employees validate their sheet and the manager must then approve his team's entries. Periods are defined in the company forms and you can set them to run monthly or weekly.\n"
+"\n"
+"The complete timesheet validation process is:\n"
+"---------------------------------------------\n"
+"* Draft sheet\n"
+"* Confirmation at the end of the period by the employee\n"
+"* Validation by the project manager\n"
+"\n"
+"The validation can be configured in the company:\n"
+"------------------------------------------------\n"
+"* Period size (Day, Week, Month)\n"
+"* Maximal difference between timesheet and attendances\n"
+" "
msgstr ""
#. module: base
-#: help:ir.actions.act_window,context:0
-#: help:ir.actions.client,context:0
-msgid "Context dictionary as Python expression, empty by default (Default: {})"
+#: model:ir.module.module,description:base.module_account_chart
+msgid "\n"
+"Remove minimal account chart.\n"
+"=============================\n"
+"\n"
+"Deactivates minimal chart of accounts.\n"
+""
msgstr ""
#. module: base
-#: field:res.company,logo_web:0
-msgid "Logo Web"
+#: model:ir.module.module,description:base.module_report
+msgid "\n"
+"Report\n"
+" "
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:339
-#, python-format
-msgid "Custom fields must have a name that starts with 'x_' !"
+#: model:ir.module.module,description:base.module_fetchmail
+msgid "\n"
+"Retrieve incoming email on POP/IMAP servers.\n"
+"============================================\n"
+"\n"
+"Enter the parameters of your POP/IMAP account(s), and any incoming emails on\n"
+"these accounts will be automatically downloaded into your OpenERP system. All\n"
+"POP3/IMAP-compatible servers are supported, included those that require an\n"
+"encrypted SSL/TLS connection.\n"
+"\n"
+"This can be used to easily create email-based workflows for many email-enabled OpenERP documents, such as:\n"
+"----------------------------------------------------------------------------------------------------------\n"
+" * CRM Leads/Opportunities\n"
+" * CRM Claims\n"
+" * Project Issues\n"
+" * Project Tasks\n"
+" * Human Resource Recruitments (Applicants)\n"
+"\n"
+"Just install the relevant application, and you can assign any of these document\n"
+"types (Leads, Project Issues) to your incoming email accounts. New emails will\n"
+"automatically spawn new documents of the chosen type, so it's a snap to create a\n"
+"mailbox-to-OpenERP integration. Even better: these documents directly act as mini\n"
+"conversations synchronized by email. You can reply from within OpenERP, and the\n"
+"answers will automatically be collected when they come back, and attached to the\n"
+"same *conversation* document.\n"
+"\n"
+"For more specific needs, you may also assign custom-defined actions\n"
+"(technically: Server Actions) to be triggered for each incoming mail.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_mx
-msgid "Mexico - Accounting"
+#: model:ir.module.module,description:base.module_account_analytic_default
+msgid "\n"
+"Set default values for your analytic accounts.\n"
+"==============================================\n"
+"\n"
+"Allows to automatically select analytic accounts based on criterions:\n"
+"---------------------------------------------------------------------\n"
+" * Product\n"
+" * Partner\n"
+" * User\n"
+" * Company\n"
+" * Date\n"
+" "
msgstr ""
#. module: base
-#: help:ir.actions.server,action_id:0
-msgid "Select the Action Window, Report, Wizard to be executed."
+#: model:ir.module.module,description:base.module_l10n_sg
+msgid "\n"
+"Singapore accounting chart and localization.\n"
+"=======================================================\n"
+"\n"
+"After installing this module, the Configuration wizard for accounting is launched.\n"
+" * The Chart of Accounts consists of the list of all the general ledger accounts\n"
+" required to maintain the transactions of Singapore.\n"
+" * On that particular wizard, you will be asked to pass the name of the company,\n"
+" the chart template to follow, the no. of digits to generate, the code for your\n"
+" account and bank account, currency to create journals.\n"
+"\n"
+" * The Chart of Taxes would display the different types/groups of taxes such as\n"
+" Standard Rates, Zeroed, Exempted, MES and Out of Scope.\n"
+" * The tax codes are specified considering the Tax Group and for easy accessibility of\n"
+" submission of GST Tax Report.\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: sql_constraint:ir.config_parameter:0
-msgid "Key must be unique."
+#: model:ir.module.module,description:base.module_l10n_es
+msgid "\n"
+"Spanish charts of accounts (PGCE 2008).\n"
+"========================================\n"
+"\n"
+" * Defines the following chart of account templates:\n"
+" * Spanish general chart of accounts 2008\n"
+" * Spanish general chart of accounts 2008 for small and medium companies\n"
+" * Spanish general chart of accounts 2008 for associations\n"
+" * Defines templates for sale and purchase VAT\n"
+" * Defines tax code templates\n"
+" * Defines fiscal positions for spanish fiscal legislation\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_plugin_outlook
-msgid "Outlook Plug-In"
+#: model:ir.module.module,description:base.module_survey_crm
+msgid "\n"
+"Survey - CRM (bridge module)\n"
+"=================================================================================\n"
+"This module adds a Survey mass mailing button inside the more option of lead/customers views\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account
+#: model:ir.module.module,description:base.module_l10n_ch
msgid "\n"
-"Accounting and Financial Management.\n"
-"====================================\n"
+"Swiss localization\n"
+"==================\n"
+" **Multilang swiss STERCHI account chart and taxes**\n"
+" **Author:** Camptocamp SA\n"
"\n"
-"Financial and accounting module that covers:\n"
-"--------------------------------------------\n"
-" * General Accounting\n"
-" * Cost/Analytic accounting\n"
-" * Third party accounting\n"
-" * Taxes management\n"
-" * Budgets\n"
-" * Customer and Supplier Invoices\n"
-" * Bank statements\n"
-" * Reconciliation process by partner\n"
+" **Financial contributors:** Prisme Solutions Informatique SA, Quod SA\n"
"\n"
-"Creates a dashboard for accountants that includes:\n"
-"--------------------------------------------------\n"
-" * List of Customer Invoice to Approve\n"
-" * Company Analysis\n"
-" * Graph of Treasury\n"
+" **Translation contributors:** brain-tec AG, Agile Business Group\n"
"\n"
-"The processes like maintaining of general ledger is done through the defined financial Journals (entry move line orgrouping is maintained through journal) \n"
-"for a particular financial year and for preparation of vouchers there is a module named account_voucher.\n"
-" "
+" **This release will introduce major changes to l10n_ch.**\n"
+"\n"
+" Due to important refactoring needs and the Switzerland adoption of new international payment standard during 2013-2014. We have reorganised the swiss localization addons this way:\n"
+"\n"
+" - **l10n_ch**: Multilang swiss STERCHI account chart and taxes (official addon)\n"
+" - **l10n_ch_base_bank**: Technical module that introduces a new and simplified version of bank type management\n"
+" - **l10n_ch_bank**: List of swiss banks\n"
+" - **l10n_ch_zip**: List of swiss postal zip\n"
+" - **l10n_ch_dta**: Support of dta payment protocol (will be deprecated end 2014)\n"
+" - **l10n_ch_payment_slip**: Support of ESR/BVR payment slip report and reconciliation. Report refactored with easy element positioning.\n"
+" - **l10n_ch_sepa**: Alpha implementation of PostFinance SEPA/PAIN support will be completed during 2013/2014\n"
+"\n"
+" The modules will be soon available on OpenERP swiss localization on launchpad:\n"
+" https://launchpad.net/openerp-swiss-localization\n"
+""
msgstr ""
#. module: base
-#: view:ir.model:0
-#: field:ir.model,name:0
-msgid "Model Description"
+#: model:ir.module.module,description:base.module_project_timesheet
+msgid "\n"
+"Synchronization of project task work entries with timesheet entries.\n"
+"====================================================================\n"
+"\n"
+"This module lets you transfer the entries under tasks defined for Project\n"
+"Management to the Timesheet line entries for particular date and particular user\n"
+"with the effect of creating, editing and deleting either ways.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_marketing
+#: model:ir.module.module,description:base.module_mrp_repair
msgid "\n"
-"Menu for Marketing.\n"
-"===================\n"
+"The aim is to have a complete module to manage all products repairs.\n"
+"====================================================================\n"
"\n"
-"Contains the installer for marketing-related modules.\n"
-" "
+"The following topics should be covered by this module:\n"
+"------------------------------------------------------\n"
+" * Add/remove products in the reparation\n"
+" * Impact for stocks\n"
+" * Invoicing (products and/or services)\n"
+" * Warranty concept\n"
+" * Repair quotation report\n"
+" * Notes for the technician and for the final customer\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_linkedin
+#: model:ir.module.module,description:base.module_purchase_analytic_plans
msgid "\n"
-"OpenERP Web LinkedIn module.\n"
-"============================\n"
-"This module provides the Integration of the LinkedIn with OpenERP.\n"
-" "
+"The base module to manage analytic distribution and purchase orders.\n"
+"====================================================================\n"
+"\n"
+"Allows the user to maintain several analysis plans. These let you split a line\n"
+"on a supplier purchase order into several accounts and analytic plans.\n"
+" "
msgstr ""
#. module: base
-#: help:ir.actions.act_window,src_model:0
-msgid "Optional model name of the objects on which this action should be visible"
+#: model:ir.module.module,description:base.module_sale_analytic_plans
+msgid "\n"
+"The base module to manage analytic distribution and sales orders.\n"
+"=================================================================\n"
+"\n"
+"Using this module you will be able to link analytic accounts to sales orders.\n"
+" "
msgstr ""
#. module: base
-#: field:workflow.transition,trigger_expr_id:0
-msgid "Trigger Expression"
+#: model:ir.module.module,description:base.module_lunch
+msgid "\n"
+"The base module to manage lunch.\n"
+"================================\n"
+"\n"
+"Many companies order sandwiches, pizzas and other, from usual suppliers, for their employees to offer them more facilities. \n"
+"\n"
+"However lunches management within the company requires proper administration especially when the number of employees or suppliers is important. \n"
+"\n"
+"The “Lunch Order” module has been developed to make this management easier but also to offer employees more tools and usability. \n"
+"\n"
+"In addition to a full meal and supplier management, this module offers the possibility to display warning and provides quick order selection based on employee’s preferences.\n"
+"\n"
+"If you want to save your employees' time and avoid them to always have coins in their pockets, this module is essential.\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.jo
-msgid "Jordan"
+#: model:ir.module.module,description:base.module_crm
+msgid "\n"
+"The generic OpenERP Customer Relationship Management\n"
+"====================================================\n"
+"\n"
+"This application enables a group of people to intelligently and efficiently manage leads, opportunities, meetings and phone calls.\n"
+"\n"
+"It manages key tasks such as communication, identification, prioritization, assignment, resolution and notification.\n"
+"\n"
+"OpenERP ensures that all cases are successfully tracked by users, customers and suppliers. It can automatically send reminders, escalate the request, trigger specific methods and many other actions based on your own enterprise rules.\n"
+"\n"
+"The greatest thing about this system is that users don't need to do anything special. The CRM module has an email gateway for the synchronization interface between mails and OpenERP. That way, users can just send emails to the request tracker.\n"
+"\n"
+"OpenERP will take care of thanking them for their message, automatically routing it to the appropriate staff and make sure all future correspondence gets to the right place.\n"
+"\n"
+"\n"
+"Dashboard for CRM will include:\n"
+"-------------------------------\n"
+"* Planned Revenue by Stage and User (graph)\n"
+"* Opportunities by Stage (graph)\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_hr
-msgid "Croatia - RRIF 2012 COA"
+#: model:ir.module.module,description:base.module_base
+msgid "\n"
+"The kernel of OpenERP, needed for all installation.\n"
+"===================================================\n"
+""
msgstr ""
#. module: base
-#: help:ir.cron,nextcall:0
-msgid "Next planned execution date for this job."
+#: model:ir.module.module,description:base.module_google_account
+msgid "\n"
+"The module adds google user in res user.\n"
+"========================================\n"
+""
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_ui_view
-msgid "ir.ui.view"
+#: model:ir.module.module,description:base.module_google_spreadsheet
+msgid "\n"
+"The module adds the possibility to display data from OpenERP in Google Spreadsheets in real time.\n"
+"=================================================================================================\n"
+""
msgstr ""
#. module: base
-#: model:res.country,name:base.er
-msgid "Eritrea"
+#: model:ir.module.module,description:base.module_google_calendar
+msgid "\n"
+"The module adds the possibility to synchronize Google Calendar with OpenERP\n"
+"===========================================================================\n"
+""
msgstr ""
#. module: base
-#: sql_constraint:res.company:0
-msgid "The company name must be unique !"
+#: model:ir.module.module,description:base.module_sale_journal
+msgid "\n"
+"The sales journal modules allows you to categorise your sales and deliveries (picking lists) between different journals.\n"
+"========================================================================================================================\n"
+"\n"
+"This module is very helpful for bigger companies that works by departments.\n"
+"\n"
+"You can use journal for different purposes, some examples:\n"
+"----------------------------------------------------------\n"
+" * isolate sales of different departments\n"
+" * journals for deliveries by truck or by UPS\n"
+"\n"
+"Journals have a responsible and evolves between different status:\n"
+"-----------------------------------------------------------------\n"
+" * draft, open, cancel, done.\n"
+"\n"
+"Batch operations can be processed on the different journals to confirm all sales\n"
+"at once, to validate or invoice packing.\n"
+"\n"
+"It also supports batch invoicing methods that can be configured by partners and sales orders, examples:\n"
+"-------------------------------------------------------------------------------------------------------\n"
+" * daily invoicing\n"
+" * monthly invoicing\n"
+"\n"
+"Some statistics by journals are provided.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_base_action_rule_admin
-msgid "Automated Actions"
+#: model:ir.module.module,description:base.module_document
+msgid "\n"
+"This is a complete document management system.\n"
+"==============================================\n"
+" * User Authentication\n"
+" * Document Indexation:- .pptx and .docx files are not supported in Windows platform.\n"
+" * Dashboard for Document that includes:\n"
+" * New Files (list)\n"
+" * Files by Resource Type (graph)\n"
+" * Files by Partner (graph)\n"
+" * Files Size by Month (graph)\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_ro
-msgid "Romania - Accounting"
+#: model:ir.module.module,description:base.module_calendar
+msgid "\n"
+"This is a full-featured calendar system.\n"
+"========================================\n"
+"\n"
+"It supports:\n"
+"------------\n"
+" - Calendar of events\n"
+" - Recurring events\n"
+"\n"
+"If you need to manage your meetings, you should install the CRM module.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_config_settings
-msgid "res.config.settings"
+#: model:ir.module.module,description:base.module_product
+msgid "\n"
+"This is the base module for managing products and pricelists in OpenERP.\n"
+"========================================================================\n"
+"\n"
+"Products support variants, different pricing methods, suppliers information,\n"
+"make to stock/order, different unit of measures, packaging and properties.\n"
+"\n"
+"Pricelists support:\n"
+"-------------------\n"
+" * Multiple-level of discount (by product, category, quantities)\n"
+" * Compute price based on different criteria:\n"
+" * Other pricelist\n"
+" * Cost price\n"
+" * List price\n"
+" * Supplier price\n"
+"\n"
+"Pricelists preferences by product and/or partners.\n"
+"\n"
+"Print product labels with barcode.\n"
+" "
msgstr ""
#. module: base
-#: help:res.partner,image_small:0
-msgid "Small-sized image of this contact. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required."
+#: model:ir.module.module,description:base.module_l10n_be
+msgid "\n"
+"This is the base module to manage the accounting chart for Belgium in OpenERP.\n"
+"==============================================================================\n"
+"\n"
+"After installing this module, the Configuration wizard for accounting is launched.\n"
+" * We have the account templates which can be helpful to generate Charts of Accounts.\n"
+" * On that particular wizard, you will be asked to pass the name of the company,\n"
+" the chart template to follow, the no. of digits to generate, the code for your\n"
+" account and bank account, currency to create journals.\n"
+"\n"
+"Thus, the pure copy of Chart Template is generated.\n"
+"\n"
+"Wizards provided by this module:\n"
+"--------------------------------\n"
+" * Partner VAT Intra: Enlist the partners with their related VAT and invoiced\n"
+" amounts. Prepares an XML file format.\n"
+" \n"
+" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium Statements/Partner VAT Intra\n"
+" * Periodical VAT Declaration: Prepares an XML file for Vat Declaration of\n"
+" the Main company of the User currently Logged in.\n"
+" \n"
+" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium Statements/Periodical VAT Declaration\n"
+" * Annual Listing Of VAT-Subjected Customers: Prepares an XML file for Vat\n"
+" Declaration of the Main company of the User currently Logged in Based on\n"
+" Fiscal year.\n"
+" \n"
+" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium Statements/Annual Listing Of VAT-Subjected Customers\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: help:ir.actions.server,mobile:0
-msgid "Provides fields that be used to fetch the mobile number, e.g. you select the invoice, then `object.invoice_address_id.mobile` is the field which gives the correct mobile number"
+#: model:ir.module.module,description:base.module_l10n_ec
+msgid "\n"
+"This is the base module to manage the accounting chart for Ecuador in OpenERP.\n"
+"==============================================================================\n"
+"\n"
+"Accounting chart and localization for Ecuador.\n"
+" "
msgstr ""
#. module: base
-#: view:ir.mail_server:0
-msgid "Security and Authentication"
+#: model:ir.module.module,description:base.module_l10n_gr
+msgid "\n"
+"This is the base module to manage the accounting chart for Greece.\n"
+"==================================================================\n"
+"\n"
+"Greek accounting chart and localization.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_calendar
-msgid "Web Calendar"
+#: model:ir.module.module,description:base.module_l10n_gt
+msgid "\n"
+"This is the base module to manage the accounting chart for Guatemala.\n"
+"=====================================================================\n"
+"\n"
+"Agrega una nomenclatura contable para Guatemala. También icluye impuestos y\n"
+"la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also includes\n"
+"taxes and the Quetzal currency."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Swedish / svenska"
+#: model:ir.module.module,description:base.module_l10n_hn
+msgid "\n"
+"This is the base module to manage the accounting chart for Honduras.\n"
+"====================================================================\n"
+" \n"
+"Agrega una nomenclatura contable para Honduras. También incluye impuestos y la\n"
+"moneda Lempira. -- Adds accounting chart for Honduras. It also includes taxes\n"
+"and the Lempira currency."
msgstr ""
#. module: base
-#: field:base.language.export,name:0
-#: field:ir.attachment,datas_fname:0
-msgid "File Name"
+#: model:ir.module.module,description:base.module_l10n_lu
+msgid "\n"
+"This is the base module to manage the accounting chart for Luxembourg.\n"
+"======================================================================\n"
+"\n"
+" * the Luxembourg Official Chart of Accounts (law of June 2009 + 2011 chart and Taxes),\n"
+" * the Tax Code Chart for Luxembourg\n"
+" * the main taxes used in Luxembourg\n"
+" * default fiscal position for local, intracom, extracom "
msgstr ""
#. module: base
-#: model:res.country,name:base.rs
-msgid "Serbia"
+#: model:ir.module.module,description:base.module_l10n_ma
+msgid "\n"
+"This is the base module to manage the accounting chart for Maroc.\n"
+"=================================================================\n"
+"\n"
+"Ce Module charge le modèle du plan de comptes standard Marocain et permet de\n"
+"générer les états comptables aux normes marocaines (Bilan, CPC (comptes de\n"
+"produits et charges), balance générale à 6 colonnes, Grand livre cumulatif...).\n"
+"L'intégration comptable a été validé avec l'aide du Cabinet d'expertise comptable\n"
+"Seddik au cours du troisième trimestre 2010."
msgstr ""
#. module: base
-#: selection:ir.translation,type:0
-msgid "Wizard View"
+#: model:ir.module.module,description:base.module_l10n_uk
+msgid "\n"
+"This is the latest UK OpenERP localisation necessary to run OpenERP accounting for UK SME's with:\n"
+"=================================================================================================\n"
+" - a CT600-ready chart of accounts\n"
+" - VAT100-ready tax structure\n"
+" - InfoLogic UK counties listing\n"
+" - a few other adaptations"
msgstr ""
#. module: base
-#: model:res.country,name:base.kh
-msgid "Cambodia, Kingdom of"
+#: model:ir.module.module,description:base.module_procurement
+msgid "\n"
+"This is the module for computing Procurements.\n"
+"==============================================\n"
+"\n"
+"In the MRP process, procurements orders are created to launch manufacturing\n"
+"orders, purchase orders, stock allocations. Procurement orders are\n"
+"generated automatically by the system and unless there is a problem, the\n"
+"user will not be notified. In case of problems, the system will raise some\n"
+"procurement exceptions to inform the user about blocking problems that need\n"
+"to be resolved manually (like, missing BoM structure or missing supplier).\n"
+"\n"
+"The procurement order will schedule a proposal for automatic procurement\n"
+"for the product which needs replenishment. This procurement will start a\n"
+"task, either a purchase order form for the supplier, or a production order\n"
+"depending on the product's configuration.\n"
+" "
msgstr ""
#. module: base
-#: field:base.language.import,overwrite:0
-#: field:base.language.install,overwrite:0
-msgid "Overwrite Existing Terms"
+#: model:ir.module.module,description:base.module_l10n_ro
+msgid "\n"
+"This is the module to manage the Accounting Chart, VAT structure, Fiscal Position and Tax Mapping.\n"
+"It also adds the Registration Number for Romania in OpenERP.\n"
+"================================================================================================================\n"
+"\n"
+"Romanian accounting chart and localization.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_holidays
+#: model:ir.module.module,description:base.module_l10n_ca
msgid "\n"
-"Manage leaves and allocation requests\n"
-"=====================================\n"
+"This is the module to manage the English and French - Canadian accounting chart in OpenERP.\n"
+"===========================================================================================\n"
"\n"
-"This application controls the holiday schedule of your company. It allows employees to request holidays. Then, managers can review requests for holidays and approve or reject them. This way you can control the overall holiday planning for the company or department.\n"
+"Canadian accounting charts and localizations.\n"
"\n"
-"You can configure several kinds of leaves (sickness, holidays, paid days, ...) and allocate leaves to an employee or department quickly using allocation requests. An employee can also make a request for more days off by making a new Allocation. It will increase the total of available days for that leave type (if the request is accepted).\n"
+"Fiscal positions\n"
+"----------------\n"
"\n"
-"You can keep track of leaves in different ways by following reports: \n"
+"When considering taxes to be applied, it is the province where the delivery occurs that matters. \n"
+"Therefore we decided to implement the most common case in the fiscal positions: delivery is the \n"
+"responsibility of the supplier and done at the customer location.\n"
"\n"
-"* Leaves Summary\n"
-"* Leaves by Department\n"
-"* Leaves Analysis\n"
+"Some examples:\n"
"\n"
-"A synchronization with an internal agenda (Meetings of the CRM module) is also possible in order to automatically create a meeting when a holiday request is accepted by setting up a type of meeting in Leave Type.\n"
-""
+"1) You have a customer from another province and you deliver to his location.\n"
+"On the customer, set the fiscal position to his province.\n"
+"\n"
+"2) You have a customer from another province. However this customer comes to your location\n"
+"with their truck to pick up products. On the customer, do not set any fiscal position.\n"
+"\n"
+"3) An international supplier doesn't charge you any tax. Taxes are charged at customs \n"
+"by the customs broker. On the supplier, set the fiscal position to International.\n"
+"\n"
+"4) An international supplier charge you your provincial tax. They are registered with your\n"
+"provincial government and remit taxes themselves. On the supplier, do not set any fiscal \n"
+"position.\n"
+" "
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Albanian / Shqip"
+#: model:ir.module.module,description:base.module_l10n_pl
+msgid "\n"
+"This is the module to manage the accounting chart and taxes for Poland in OpenERP.\n"
+"==================================================================================\n"
+"\n"
+"To jest moduł do tworzenia wzorcowego planu kont, podatków, obszarów podatkowych i\n"
+"rejestrów podatkowych. Moduł ustawia też konta do kupna i sprzedaży towarów\n"
+"zakładając, że wszystkie towary są w obrocie hurtowym.\n"
+"\n"
+"Niniejszy moduł jest przeznaczony dla odoo 8.0.\n"
+"Wewnętrzny numer wersji OpenGLOBE 1.01\n"
+" "
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_crm_config_opportunity
-msgid "Opportunities"
+#: model:ir.module.module,description:base.module_l10n_fr
+msgid "\n"
+"This is the module to manage the accounting chart for France in OpenERP.\n"
+"========================================================================\n"
+"\n"
+"This module applies to companies based in France mainland. It doesn't apply to\n"
+"companies based in the DOM-TOMs (Guadeloupe, Martinique, Guyane, Réunion, Mayotte).\n"
+"\n"
+"This localisation module creates the VAT taxes of type 'tax included' for purchases\n"
+"(it is notably required when you use the module 'hr_expense'). Beware that these\n"
+"'tax included' VAT taxes are not managed by the fiscal positions provided by this\n"
+"module (because it is complex to manage both 'tax excluded' and 'tax included'\n"
+"scenarios in fiscal positions).\n"
+"\n"
+"This localisation module doesn't properly handle the scenario when a France-mainland\n"
+"company sells services to a company based in the DOMs. We could manage it in the\n"
+"fiscal positions, but it would require to differentiate between 'product' VAT taxes\n"
+"and 'service' VAT taxes. We consider that it is too 'heavy' to have this by default\n"
+"in l10n_fr; companies that sell services to DOM-based companies should update the\n"
+"configuration of their taxes and fiscal positions manually.\n"
+"\n"
+"**Credits:** Sistheo, Zeekom, CrysaLEAD, Akretion and Camptocamp.\n"
+""
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_base_language_export
-msgid "base.language.export"
+#: model:ir.module.module,description:base.module_l10n_nl
+msgid "\n"
+"This is the module to manage the accounting chart for Netherlands in OpenERP.\n"
+"=============================================================================\n"
+"\n"
+"Read changelog in file __openerp__.py for version information.\n"
+"Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor\n"
+"Nederlandse bedrijven te installeren in OpenERP versie 7.0.\n"
+"\n"
+"De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te genereren,\n"
+"denk b.v. aan intracommunautaire verwervingen waarbij u 21% BTW moet opvoeren,\n"
+"maar tegelijkertijd ook 21% als voorheffing weer mag aftrekken.\n"
+"\n"
+"Na installatie van deze module word de configuratie wizard voor 'Accounting' aangeroepen.\n"
+" * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het\n"
+" Nederlandse grootboekschema bevind.\n"
+"\n"
+" * Als de configuratie wizard start, wordt u gevraagd om de naam van uw bedrijf\n"
+" in te voeren, welke grootboekschema te installeren, uit hoeveel cijfers een\n"
+" grootboekrekening mag bestaan, het rekeningnummer van uw bank en de currency\n"
+" om Journalen te creeren.\n"
+"\n"
+"Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit 4\n"
+"cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal verhogen.\n"
+"De extra cijfers worden dan achter het rekeningnummer aangevult met 'nullen'.\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.pg
-msgid "Papua New Guinea"
+#: model:ir.module.module,description:base.module_l10n_vn
+msgid "\n"
+"This is the module to manage the accounting chart for Vietnam in OpenERP.\n"
+"=========================================================================\n"
+"\n"
+"This module applies to companies based in Vietnamese Accounting Standard (VAS).\n"
+"\n"
+"**Credits:** General Solutions.\n"
+""
msgstr ""
#. module: base
-#: help:ir.actions.report.xml,report_type:0
-msgid "Report Type, e.g. pdf, html, raw, sxw, odt, html2html, mako2html, ..."
+#: model:ir.module.module,description:base.module_crm_partner_assign
+msgid "\n"
+"This is the module used by OpenERP SA to redirect customers to its partners, based on geolocation.\n"
+"======================================================================================================\n"
+"\n"
+"This modules lets you geolocate Leads, Opportunities and Partners based on their address.\n"
+"\n"
+"Once the coordinates of the Lead/Opportunity is known, they can be automatically assigned\n"
+"to an appropriate local partner, based on the distance and the weight that was assigned to the partner.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_document_webdav
-msgid "Shared Repositories (WebDAV)"
+#: model:ir.module.module,description:base.module_pad_project
+msgid "\n"
+"This module adds a PAD in all project kanban views.\n"
+"===================================================\n"
+" "
msgstr ""
#. module: base
-#: view:res.users:0
-msgid "Email Preferences"
+#: model:ir.module.module,description:base.module_portal_sale
+msgid "\n"
+"This module adds a Sales menu to your portal as soon as sale and portal are installed.\n"
+"======================================================================================\n"
+"\n"
+"After installing this module, portal users will be able to access their own documents\n"
+"via the following menus:\n"
+"\n"
+" - Quotations\n"
+" - Sale Orders\n"
+" - Delivery Orders\n"
+" - Products (public ones)\n"
+" - Invoices\n"
+" - Payments/Refunds\n"
+"\n"
+"If online payment acquirers are configured, portal users will also be given the opportunity to\n"
+"pay online on their Sale Orders and Invoices that are not paid yet. Paypal is included\n"
+"by default, you simply need to configure a Paypal account in the Accounting/Invoicing settings.\n"
+" "
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:195
-#, python-format
-msgid "'%s' does not seem to be a valid date for field '%%(field)s'"
+#: model:ir.module.module,description:base.module_report_webkit
+msgid "\n"
+"This module adds a new Report Engine based on WebKit library (wkhtmltopdf) to support reports designed in HTML + CSS.\n"
+"=====================================================================================================================\n"
+"\n"
+"The module structure and some code is inspired by the report_openoffice module.\n"
+"\n"
+"The module allows:\n"
+"------------------\n"
+" - HTML report definition\n"
+" - Multi header support\n"
+" - Multi logo\n"
+" - Multi company support\n"
+" - HTML and CSS-3 support (In the limit of the actual WebKIT version)\n"
+" - JavaScript support\n"
+" - Raw HTML debugger\n"
+" - Book printing capabilities\n"
+" - Margins definition\n"
+" - Paper size definition\n"
+"\n"
+"Multiple headers and logos can be defined per company. CSS style, header and\n"
+"footer body are defined per company.\n"
+"\n"
+"For a sample report see also the webkit_report_sample module, and this video:\n"
+" http://files.me.com/nbessi/06n92k.mov\n"
+"\n"
+"Requirements and Installation:\n"
+"------------------------------\n"
+"This module requires the ``wkthtmltopdf`` library to render HTML documents as\n"
+"PDF. Version 0.9.9 or later is necessary, and can be found at\n"
+"http://code.google.com/p/wkhtmltopdf/ for Linux, Mac OS X (i386) and Windows (32bits).\n"
+"\n"
+"After installing the library on the OpenERP Server machine, you may need to set\n"
+"the path to the ``wkthtmltopdf`` executable file in a system parameter named\n"
+"``webkit_path`` in Settings -> Customization -> Parameters -> System Parameters\n"
+"\n"
+"If you are experiencing missing header/footer problems on Linux, be sure to\n"
+"install a 'static' version of the library. The default ``wkhtmltopdf`` on\n"
+"Ubuntu is known to have this issue.\n"
+"\n"
+"\n"
+"TODO:\n"
+"-----\n"
+" * JavaScript support activation deactivation\n"
+" * Collated and book format support\n"
+" * Zip return for separated PDF\n"
+" * Web client WYSIWYG\n"
+""
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "My Partners"
+#: model:ir.module.module,description:base.module_sale_crm
+msgid "\n"
+"This module adds a shortcut on one or several opportunity cases in the CRM.\n"
+"===========================================================================\n"
+"\n"
+"This shortcut allows you to generate a sales order based on the selected case.\n"
+"If different cases are open (a list), it generates one sale order by case.\n"
+"The case is then closed and linked to the generated sales order.\n"
+"\n"
+"We suggest you to install this module, if you installed both the sale and the crm\n"
+"modules.\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.zw
-msgid "Zimbabwe"
+#: model:ir.module.module,description:base.module_portal_stock
+msgid "\n"
+"This module adds access rules to your portal if stock and portal are installed.\n"
+"==========================================================================================\n"
+" "
msgstr ""
#. module: base
-#: help:ir.model.constraint,type:0
-msgid "Type of the constraint: `f` for a foreign key, `u` for other constraints."
+#: model:ir.module.module,description:base.module_portal_claim
+msgid "\n"
+"This module adds claim menu and features to your portal if claim and portal are installed.\n"
+"==========================================================================================\n"
+" "
msgstr ""
#. module: base
-#: view:ir.actions.report.xml:0
-msgid "XML Report"
+#: model:ir.module.module,description:base.module_share
+msgid "\n"
+"This module adds generic sharing tools to your current OpenERP database.\n"
+"========================================================================\n"
+"\n"
+"It specifically adds a 'share' button that is available in the Web client to\n"
+"share any kind of OpenERP data with colleagues, customers, friends.\n"
+"\n"
+"The system will work by creating new users and groups on the fly, and by\n"
+"combining the appropriate access rights and ir.rules to ensure that the shared\n"
+"users only have access to the data that has been shared with them.\n"
+"\n"
+"This is extremely useful for collaborative work, knowledge sharing,\n"
+"synchronization with other companies.\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.es
-msgid "Spain"
+#: model:ir.module.module,description:base.module_portal_project_issue
+msgid "\n"
+"This module adds issue menu and features to your portal if project_issue and portal are installed.\n"
+"==================================================================================================\n"
+" "
msgstr ""
#. module: base
-#: help:ir.actions.act_window,domain:0
-msgid "Optional domain filtering of the destination data, as a Python expression"
+#: model:ir.module.module,description:base.module_portal_project
+msgid "\n"
+"This module adds project menu and features (tasks) to your portal if project and portal are installed.\n"
+"======================================================================================================\n"
+" "
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_base_module_upgrade
-msgid "Module Upgrade"
+#: model:ir.module.module,description:base.module_portal_gamification
+msgid "\n"
+"This module adds security rules for gamification to allow portal users to participate to challenges\n"
+"===================================================================================================\n"
+" "
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (UY) / Español (UY)"
+#: model:ir.module.module,description:base.module_mrp_operations
+msgid "\n"
+"This module adds state, date_start, date_stop in manufacturing order operation lines (in the 'Work Orders' tab).\n"
+"================================================================================================================\n"
+"\n"
+"Status: draft, confirm, done, cancel\n"
+"When finishing/confirming, cancelling manufacturing orders set all state lines\n"
+"to the according state.\n"
+"\n"
+"Create menus:\n"
+"-------------\n"
+" **Manufacturing** > **Manufacturing** > **Work Orders**\n"
+"\n"
+"Which is a view on 'Work Orders' lines in manufacturing order.\n"
+"\n"
+"Add buttons in the form view of manufacturing order under workorders tab:\n"
+"-------------------------------------------------------------------------\n"
+" * start (set state to confirm), set date_start\n"
+" * done (set state to done), set date_stop\n"
+" * set to draft (set state to draft)\n"
+" * cancel set state to cancel\n"
+"\n"
+"When the manufacturing order becomes 'ready to produce', operations must\n"
+"become 'confirmed'. When the manufacturing order is done, all operations\n"
+"must become done.\n"
+"\n"
+"The field 'Working Hours' is the delay(stop date - start date).\n"
+"So, that we can compare the theoretic delay and real delay. \n"
+" "
msgstr ""
#. module: base
-#: field:res.partner,mobile:0
-msgid "Mobile"
+#: model:ir.module.module,description:base.module_sale_margin
+msgid "\n"
+"This module adds the 'Margin' on sales order.\n"
+"=============================================\n"
+"\n"
+"This gives the profitability by calculating the difference between the Unit\n"
+"Price and Cost Price.\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.om
-msgid "Oman"
+#: model:ir.module.module,description:base.module_project_issue_sheet
+msgid "\n"
+"This module adds the Timesheet support for the Issues/Bugs Management in Project.\n"
+"=================================================================================\n"
+"\n"
+"Worklogs can be maintained to signify number of hours spent by users to handle an issue.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_mrp
-msgid "MRP"
+#: model:ir.module.module,description:base.module_stock_picking_wave
+msgid "\n"
+"This module adds the picking wave option in warehouse management.\n"
+"=================================================================\n"
+" "
msgstr ""
#. module: base
@@ -927,977 +2957,1398 @@ msgid "\n"
msgstr ""
#. module: base
-#: model:res.country,name:base.nu
-msgid "Niue"
+#: model:ir.module.module,description:base.module_procurement_jit
+msgid "\n"
+"This module allows Just In Time computation of procurement orders.\n"
+"==================================================================\n"
+"\n"
+"If you install this module, you will not have to run the regular procurement\n"
+"scheduler anymore (but you still need to run the minimum order point rule\n"
+"scheduler, or for example let it run daily).\n"
+"All procurement orders will be processed immediately, which could in some\n"
+"cases entail a small performance impact.\n"
+"\n"
+"It may also increase your stock size because products are reserved as soon\n"
+"as possible and the scheduler time range is not taken into account anymore.\n"
+"In that case, you can not use priorities any more on the different picking.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_membership
-msgid "Membership Management"
+#: model:ir.module.module,description:base.module_account_budget
+msgid "\n"
+"This module allows accountants to manage analytic and crossovered budgets.\n"
+"==========================================================================\n"
+"\n"
+"Once the Budgets are defined (in Invoicing/Budgets/Budgets), the Project Managers \n"
+"can set the planned amount on each Analytic Account.\n"
+"\n"
+"The accountant has the possibility to see the total of amount planned for each\n"
+"Budget in order to ensure the total planned is not greater/lower than what he \n"
+"planned for this Budget. Each list of record can also be switched to a graphical \n"
+"view of it.\n"
+"\n"
+"Three reports are available:\n"
+"----------------------------\n"
+" 1. The first is available from a list of Budgets. It gives the spreading, for \n"
+" these Budgets, of the Analytic Accounts.\n"
+"\n"
+" 2. The second is a summary of the previous one, it only gives the spreading, \n"
+" for the selected Budgets, of the Analytic Accounts.\n"
+"\n"
+" 3. The last one is available from the Analytic Chart of Accounts. It gives \n"
+" the spreading, for the selected Analytic Accounts of Budgets.\n"
+""
msgstr ""
#. module: base
-#: selection:ir.module.module,license:0
-msgid "Other OSI Approved Licence"
+#: model:ir.module.module,description:base.module_base_action_rule
+msgid "\n"
+"This module allows to implement action rules for any object.\n"
+"============================================================\n"
+"\n"
+"Use automated actions to automatically trigger actions for various screens.\n"
+"\n"
+"**Example:** A lead created by a specific user may be automatically set to a specific\n"
+"sales team, or an opportunity which still has status pending after 14 days might\n"
+"trigger an automatic reminder email.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_gantt
-msgid "Web Gantt"
+#: model:ir.module.module,description:base.module_account_analytic_plans
+msgid "\n"
+"This module allows to use several analytic plans according to the general journal.\n"
+"==================================================================================\n"
+"\n"
+"Here multiple analytic lines are created when the invoice or the entries\n"
+"are confirmed.\n"
+"\n"
+"For example, you can define the following analytic structure:\n"
+"-------------------------------------------------------------\n"
+" * **Projects**\n"
+" * Project 1\n"
+" + SubProj 1.1\n"
+" \n"
+" + SubProj 1.2\n"
+"\n"
+" * Project 2\n"
+" \n"
+" * **Salesman**\n"
+" * Eric\n"
+" \n"
+" * Fabien\n"
+"\n"
+"Here, we have two plans: Projects and Salesman. An invoice line must be able to write analytic entries in the 2 plans: SubProj 1.1 and Fabien. The amount can also be split.\n"
+" \n"
+"The following example is for an invoice that touches the two subprojects and assigned to one salesman:\n"
+"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
+"**Plan1:**\n"
+"\n"
+" * SubProject 1.1 : 50%\n"
+" \n"
+" * SubProject 1.2 : 50%\n"
+" \n"
+"**Plan2:**\n"
+" Eric: 100%\n"
+"\n"
+"So when this line of invoice will be confirmed, it will generate 3 analytic lines,for one account entry.\n"
+"\n"
+"The analytic plan validates the minimum and maximum percentage at the time of creation of distribution models.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.act_menu_create
-#: view:wizard.ir.model.menu.create:0
-msgid "Create Menu"
+#: model:ir.module.module,description:base.module_note
+msgid "\n"
+"This module allows users to create their own notes inside OpenERP\n"
+"=================================================================\n"
+"\n"
+"Use notes to write meeting minutes, organize ideas, organize personal todo\n"
+"lists, etc. Each user manages his own personal Notes. Notes are available to\n"
+"their authors only, but they can share notes to others users so that several\n"
+"people can work on the same note in real time. It's very efficient to share\n"
+"meeting minutes.\n"
+"\n"
+"Notes can be found in the 'Home' menu.\n"
+""
msgstr ""
#. module: base
-#: model:res.country,name:base.in
-msgid "India"
+#: model:ir.module.module,description:base.module_crm_profiling
+msgid "\n"
+"This module allows users to perform segmentation within partners.\n"
+"=================================================================\n"
+"\n"
+"It uses the profiles criteria from the earlier segmentation module and improve it. \n"
+"Thanks to the new concept of questionnaire. You can now regroup questions into a \n"
+"questionnaire and directly use it on a partner.\n"
+"\n"
+"It also has been merged with the earlier CRM & SRM segmentation tool because they \n"
+"were overlapping.\n"
+"\n"
+" **Note:** this module is not compatible with the module segmentation, since it's the same which has been renamed.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.res_request_link-act
-#: model:ir.ui.menu,name:base.menu_res_request_link_act
-msgid "Request Reference Types"
+#: model:ir.module.module,description:base.module_anonymization
+msgid "\n"
+"This module allows you to anonymize a database.\n"
+"===============================================\n"
+"\n"
+"This module allows you to keep your data confidential for a given database.\n"
+"This process is useful, if you want to use the migration process and protect\n"
+"your own or your customer’s confidential data. The principle is that you run\n"
+"an anonymization tool which will hide your confidential data(they are replaced\n"
+"by ‘XXX’ characters). Then you can send the anonymized database to the migration\n"
+"team. Once you get back your migrated database, you restore it and reverse the\n"
+"anonymization process to recover your previous data.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_google_base_account
-msgid "Google Users"
+#: model:ir.module.module,description:base.module_analytic_user_function
+msgid "\n"
+"This module allows you to define what is the default function of a specific user on a given account.\n"
+"====================================================================================================\n"
+"\n"
+"This is mostly used when a user encodes his timesheet: the values are retrieved\n"
+"and the fields are auto-filled. But the possibility to change these values is\n"
+"still available.\n"
+"\n"
+"Obviously if no data has been recorded for the current account, the default\n"
+"value is given as usual by the employee data so that this module is perfectly\n"
+"compatible with older configurations.\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_fleet
-msgid "Fleet Management"
+#: model:ir.module.module,description:base.module_membership
+msgid "\n"
+"This module allows you to manage all operations for managing memberships.\n"
+"=========================================================================\n"
+"\n"
+"It supports different kind of members:\n"
+"--------------------------------------\n"
+" * Free member\n"
+" * Associated member (e.g.: a group subscribes to a membership for all subsidiaries)\n"
+" * Paid members\n"
+" * Special member prices\n"
+"\n"
+"It is integrated with sales and accounting to allow you to automatically\n"
+"invoice and send propositions for membership renewal.\n"
+" "
msgstr ""
#. module: base
-#: help:ir.server.object.lines,value:0
-msgid "Expression containing a value specification. \n"
-"When Formula type is selected, this field may be a Python expression that can use the same values as for the condition field on the server action.\n"
-"If Value type is selected, the value will be used directly without evaluation."
+#: model:ir.module.module,description:base.module_purchase_requisition
+msgid "\n"
+"This module allows you to manage your Purchase Requisition.\n"
+"===========================================================\n"
+"\n"
+"When a purchase order is created, you now have the opportunity to save the\n"
+"related requisition. This new object will regroup and will allow you to easily\n"
+"keep track and order all your purchase orders.\n"
+""
msgstr ""
#. module: base
-#: model:res.country,name:base.ad
-msgid "Andorra, Principality of"
+#: model:ir.module.module,description:base.module_mrp_byproduct
+msgid "\n"
+"This module allows you to produce several products from one production order.\n"
+"=============================================================================\n"
+"\n"
+"You can configure by-products in the bill of material.\n"
+"\n"
+"Without this module:\n"
+"--------------------\n"
+" A + B + C -> D\n"
+"\n"
+"With this module:\n"
+"-----------------\n"
+" A + B + C -> D + E\n"
+" "
msgstr ""
#. module: base
-#: field:ir.rule,perm_read:0
-msgid "Apply for Read"
+#: model:ir.module.module,description:base.module_contacts
+msgid "\n"
+"This module gives you a quick view of your address book, accessible from your home page.\n"
+"You can track your suppliers, customers and other contacts.\n"
+""
msgstr ""
#. module: base
-#: model:res.country,name:base.mn
-msgid "Mongolia"
+#: model:ir.module.module,description:base.module_base_setup
+msgid "\n"
+"This module helps to configure the system at the installation of a new database.\n"
+"================================================================================\n"
+"\n"
+"Shows you a list of applications features to install from.\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_crm
+#: model:ir.module.module,description:base.module_hr_timesheet
msgid "\n"
-"The generic OpenERP Customer Relationship Management\n"
-"====================================================\n"
+"This module implements a timesheet system.\n"
+"==========================================\n"
"\n"
-"This application enables a group of people to intelligently and efficiently manage leads, opportunities, meetings and phone calls.\n"
+"Each employee can encode and track their time spent on the different projects.\n"
+"A project is an analytic account and the time spent on a project generates costs on\n"
+"the analytic account.\n"
"\n"
-"It manages key tasks such as communication, identification, prioritization, assignment, resolution and notification.\n"
+"Lots of reporting on time and employee tracking are provided.\n"
"\n"
-"OpenERP ensures that all cases are successfully tracked by users, customers and suppliers. It can automatically send reminders, escalate the request, trigger specific methods and many other actions based on your own enterprise rules.\n"
+"It is completely integrated with the cost accounting module. It allows you to set\n"
+"up a management by affair.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_l10n_syscohada
+msgid "\n"
+"This module implements the accounting chart for OHADA area.\n"
+"===========================================================\n"
+" \n"
+"It allows any company or association to manage its financial accounting.\n"
"\n"
-"The greatest thing about this system is that users don't need to do anything special. The CRM module has an email gateway for the synchronization interface between mails and OpenERP. That way, users can just send emails to the request tracker.\n"
+"Countries that use OHADA are the following:\n"
+"-------------------------------------------\n"
+" Benin, Burkina Faso, Cameroon, Central African Republic, Comoros, Congo,\n"
+" \n"
+" Ivory Coast, Gabon, Guinea, Guinea Bissau, Equatorial Guinea, Mali, Niger,\n"
+" \n"
+" Replica of Democratic Congo, Senegal, Chad, Togo.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_base_iban
+msgid "\n"
+"This module installs the base for IBAN (International Bank Account Number) bank accounts and checks for it's validity.\n"
+"======================================================================================================================\n"
"\n"
-"OpenERP will take care of thanking them for their message, automatically routing it to the appropriate staff and make sure all future correspondence gets to the right place.\n"
+"The ability to extract the correctly represented local accounts from IBAN accounts \n"
+"with a single statement.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_multi_company
+msgid "\n"
+"This module is for managing a multicompany environment.\n"
+"=======================================================\n"
"\n"
+"This module is the base module for other multi-company modules.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_account_analytic_analysis
+msgid "\n"
+"This module is for modifying account analytic view to show important data to project manager of services companies.\n"
+"===================================================================================================================\n"
"\n"
-"Dashboard for CRM will include:\n"
-"-------------------------------\n"
-"* Planned Revenue by Stage and User (graph)\n"
-"* Opportunities by Stage (graph)\n"
+"Adds menu to show relevant information to each manager.You can also view the report of account analytic summary user-wise as well as month-wise.\n"
""
msgstr ""
#. module: base
-#: selection:base.language.export,format:0
-msgid "TGZ Archive"
+#: model:ir.module.module,description:base.module_analytic_contract_hr_expense
+msgid "\n"
+"This module is for modifying account analytic view to show some data related to the hr_expense module.\n"
+"======================================================================================================\n"
+""
msgstr ""
#. module: base
-#: view:res.groups:0
-msgid "Users added to this group are automatically added in the following groups."
+#: model:ir.module.module,description:base.module_association
+msgid "\n"
+"This module is to configure modules related to an association.\n"
+"==============================================================\n"
+"\n"
+"It installs the profile for associations to manage events, registrations, memberships, \n"
+"membership products (schemes).\n"
+" "
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:725
-#: code:addons/base/ir/ir_model.py:728
-#, python-format
-msgid "Document model"
+#: model:ir.module.module,description:base.module_base_report_designer
+msgid "\n"
+"This module is used along with OpenERP OpenOffice Plugin.\n"
+"=========================================================\n"
+"\n"
+"This module adds wizards to Import/Export .sxw report that you can modify in OpenOffice. \n"
+"Once you have modified it you can upload the report using the same wizard.\n"
+""
msgstr ""
#. module: base
-#: view:res.users:0
-msgid "Change the user password."
+#: model:ir.module.module,description:base.module_l10n_fr_rib
+msgid "\n"
+"This module lets users enter the banking details of Partners in the RIB format (French standard for bank accounts details).\n"
+"===========================================================================================================================\n"
+"\n"
+"RIB Bank Accounts can be entered in the \"Accounting\" tab of the Partner form by specifying the account type \"RIB\". \n"
+"\n"
+"The four standard RIB fields will then become mandatory:\n"
+"-------------------------------------------------------- \n"
+" - Bank Code\n"
+" - Office Code\n"
+" - Account number\n"
+" - RIB key\n"
+" \n"
+"As a safety measure, OpenERP will check the RIB key whenever a RIB is saved, and\n"
+"will refuse to record the data if the key is incorrect. Please bear in mind that\n"
+"this can only happen when the user presses the 'save' button, for example on the\n"
+"Partner Form. Since each bank account may relate to a Bank, users may enter the\n"
+"RIB Bank Code in the Bank form - it will the pre-fill the Bank Code on the RIB\n"
+"when they select the Bank. To make this easier, this module will also let users\n"
+"find Banks using their RIB code.\n"
+"\n"
+"The module base_iban can be a useful addition to this module, because French banks\n"
+"are now progressively adopting the international IBAN format instead of the RIB format.\n"
+"The RIB and IBAN codes for a single account can be entered by recording two Bank\n"
+"Accounts in OpenERP: the first with the type 'RIB', the second with the type 'IBAN'. \n"
+""
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%B - Full month name."
+#: model:ir.module.module,description:base.module_product_visible_discount
+msgid "\n"
+"This module lets you calculate discounts on Sale Order lines and Invoice lines base on the partner's pricelist.\n"
+"===============================================================================================================\n"
+"\n"
+"To this end, a new check box named 'Visible Discount' is added to the pricelist form.\n"
+"\n"
+"**Example:**\n"
+" For the product PC1 and the partner \"Asustek\": if listprice=450, and the price\n"
+" calculated using Asustek's pricelist is 225. If the check box is checked, we\n"
+" will have on the sale order line: Unit price=450, Discount=50,00, Net price=225.\n"
+" If the check box is unchecked, we will have on Sale Order and Invoice lines:\n"
+" Unit price=225, Discount=0,00, Net price=225.\n"
+" "
msgstr ""
#. module: base
-#: field:ir.actions.todo,type:0
-#: view:ir.attachment:0
-#: field:ir.attachment,type:0
-#: field:ir.model,state:0
-#: field:ir.model.fields,state:0
-#: field:ir.property,type:0
-#: field:ir.server.object.lines,type:0
-#: field:ir.translation,type:0
-#: view:ir.ui.view:0
-#: view:ir.values:0
-#: field:ir.values,key:0
-msgid "Type"
+#: model:ir.module.module,description:base.module_account_sequence
+msgid "\n"
+"This module maintains internal sequence number for accounting entries.\n"
+"======================================================================\n"
+"\n"
+"Allows you to configure the accounting sequences to be maintained.\n"
+"\n"
+"You can customize the following attributes of the sequence:\n"
+"-----------------------------------------------------------\n"
+" * Prefix\n"
+" * Suffix\n"
+" * Next Number\n"
+" * Increment Number\n"
+" * Number Padding\n"
+" "
msgstr ""
#. module: base
-#: field:ir.mail_server,smtp_user:0
-msgid "Username"
+#: model:ir.module.module,description:base.module_sale_mrp
+msgid "\n"
+"This module provides facility to the user to install mrp and sales modulesat a time.\n"
+"====================================================================================\n"
+"\n"
+"It is basically used when we want to keep track of production orders generated\n"
+"from sales order. It adds sales name and sales Reference on production order.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_br
+#: model:ir.module.module,description:base.module_marketing_campaign
msgid "\n"
-"Base module for the Brazilian localization\n"
-"==========================================\n"
+"This module provides leads automation through marketing campaigns (campaigns can in fact be defined on any resource, not just CRM Leads).\n"
+"=========================================================================================================================================\n"
"\n"
-"This module consists in:\n"
+"The campaigns are dynamic and multi-channels. The process is as follows:\n"
+"------------------------------------------------------------------------\n"
+" * Design marketing campaigns like workflows, including email templates to\n"
+" send, reports to print and send by email, custom actions\n"
+" * Define input segments that will select the items that should enter the\n"
+" campaign (e.g leads from certain countries.)\n"
+" * Run you campaign in simulation mode to test it real-time or accelerated,\n"
+" and fine-tune it\n"
+" * You may also start the real campaign in manual mode, where each action\n"
+" requires manual validation\n"
+" * Finally launch your campaign live, and watch the statistics as the\n"
+" campaign does everything fully automatically.\n"
"\n"
-" - Generic Brazilian chart of accounts\n"
-" - Brazilian taxes such as:\n"
+"While the campaign runs you can of course continue to fine-tune the parameters,\n"
+"input segments, workflow.\n"
"\n"
-" - IPI\n"
-" - ICMS\n"
-" - PIS\n"
-" - COFINS\n"
-" - ISS\n"
-" - IR\n"
-" - IRPJ\n"
-" - CSLL\n"
+"**Note:** If you need demo data, you can install the marketing_campaign_crm_demo\n"
+" module, but this will also install the CRM application as it depends on\n"
+" CRM Leads.\n"
+" "
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_l10n_at
+msgid "\n"
+"This module provides the standard Accounting Chart for Austria which is based on the Template from BMF.gv.at.\n"
+"============================================================================================================= \n"
+"Please keep in mind that you should review and adapt it with your Accountant, before using it in a live Environment.\n"
+""
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_account_anglo_saxon
+msgid "\n"
+"This module supports the Anglo-Saxon accounting methodology by changing the accounting logic with stock transactions.\n"
+"=====================================================================================================================\n"
"\n"
-"The field tax_discount has also been added in the account.tax.template and \n"
-"account.tax objects to allow the proper computation of some Brazilian VATs \n"
-"such as ICMS. The chart of account creation wizard has been extended to \n"
-"propagate those new data properly.\n"
+"The difference between the Anglo-Saxon accounting countries and the Rhine \n"
+"(or also called Continental accounting) countries is the moment of taking \n"
+"the Cost of Goods Sold versus Cost of Sales. Anglo-Saxons accounting does \n"
+"take the cost when sales invoice is created, Continental accounting will \n"
+"take the cost at the moment the goods are shipped.\n"
+"\n"
+"This module will add this functionality by using a interim account, to \n"
+"store the value of shipped goods and will contra book this interim \n"
+"account when the invoice is created to transfer this amount to the \n"
+"debtor or creditor account. Secondly, price differences between actual \n"
+"purchase price and fixed product standard price are booked on a separate \n"
+"account."
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,description:base.module_note_pad
+msgid "\n"
+"This module update memos inside OpenERP for using an external pad\n"
+"=================================================================\n"
+"\n"
+"Use for update your text memo in real time with the following user that you invite.\n"
"\n"
-"It's important to note however that this module lack many implementations to \n"
-"use OpenERP properly in Brazil. Those implementations (such as the electronic \n"
-"fiscal Invoicing which is already operational) are brought by more than 15 \n"
-"additional modules of the Brazilian Launchpad localization project \n"
-"https://launchpad.net/openerp.pt-br-localiz and their dependencies in the \n"
-"extra addons branch. Those modules aim at not breaking with the remarkable \n"
-"OpenERP modularity, this is why they are numerous but small. One of the \n"
-"reasons for maintaining those modules apart is that Brazilian Localization \n"
-"leaders need commit rights agility to complete the localization as companies \n"
-"fund the remaining legal requirements (such as soon fiscal ledgers, \n"
-"accounting SPED, fiscal SPED and PAF ECF that are still missing as September \n"
-"2011). Those modules are also strictly licensed under AGPL V3 and today don't \n"
-"come with any additional paid permission for online use of 'private modules'.\n"
""
msgstr ""
#. module: base
-#: code:addons/orm.py:406
-#, python-format
-msgid "Language with code \"%s\" is not defined in your system !\n"
-"Define it through the Administration menu."
+#: model:ir.module.module,description:base.module_web_kanban_gauge
+msgid "\n"
+"This widget allows to display gauges using justgage library.\n"
+""
msgstr ""
#. module: base
-#: model:res.country,name:base.gu
-msgid "Guam (USA)"
+#: model:ir.module.module,description:base.module_web_kanban_sparkline
+msgid "\n"
+"This widget allows to display sparklines using jquery.sparkline library.\n"
+""
msgstr ""
#. module: base
-#: sql_constraint:res.country:0
-msgid "The name of the country must be unique !"
+#: model:ir.module.module,description:base.module_project_issue
+msgid "\n"
+"Track Issues/Bugs Management for Projects\n"
+"=========================================\n"
+"This application allows you to manage the issues you might face in a project like bugs in a system, client complaints or material breakdowns. \n"
+"\n"
+"It allows the manager to quickly check the issues, assign them and decide on their status quickly as they evolve.\n"
+" "
msgstr ""
#. module: base
-#: field:ir.module.module,installed_version:0
-msgid "Latest Version"
+#: model:ir.module.module,description:base.module_product_expiry
+msgid "\n"
+"Track different dates on products and production lots.\n"
+"======================================================\n"
+"\n"
+"Following dates can be tracked:\n"
+"-------------------------------\n"
+" - end of life\n"
+" - best before date\n"
+" - removal date\n"
+" - alert date\n"
+"\n"
+"Also implements the removal strategy First Expiry First Out (FEFO) widely used, for example, in food industries.\n"
+""
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Delete Access Right"
+#: model:ir.module.module,description:base.module_project
+msgid "\n"
+"Track multi-level projects, tasks, work done on tasks\n"
+"=====================================================\n"
+"\n"
+"This application allows an operational project management system to organize your activities into tasks and plan the work you need to get the tasks completed.\n"
+"\n"
+"Gantt diagrams will give you a graphical representation of your project plans, as well as resources availability and workload.\n"
+"\n"
+"Dashboard / Reports for Project Management will include:\n"
+"--------------------------------------------------------\n"
+"* My Tasks\n"
+"* Open Tasks\n"
+"* Tasks Analysis\n"
+"* Cumulative Flow\n"
+" "
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:212
-#, python-format
-msgid "Connection test failed!"
+#: model:ir.module.module,description:base.module_l10n_tr
+msgid "\n"
+"Türkiye için Tek düzen hesap planı şablonu OpenERP Modülü.\n"
+"==========================================================\n"
+"\n"
+"Bu modül kurulduktan sonra, Muhasebe yapılandırma sihirbazı çalışır\n"
+" * Sihirbaz sizden hesap planı şablonu, planın kurulacağı şirket, banka hesap\n"
+" bilgileriniz, ilgili para birimi gibi bilgiler isteyecek.\n"
+" "
msgstr ""
#. module: base
-#: selection:ir.actions.server,state:0
-#: selection:workflow.activity,kind:0
-msgid "Dummy"
+#: model:ir.module.module,description:base.module_l10n_ae
+msgid "\n"
+"United Arab Emirates accounting chart and localization.\n"
+"=======================================================\n"
+"\n"
+" "
msgstr ""
#. module: base
-#: constraint:ir.ui.view:0
-msgid "Invalid XML for View Architecture!"
+#: model:ir.module.module,description:base.module_l10n_us
+msgid "\n"
+"United States - Chart of accounts.\n"
+"==================================\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.ky
-msgid "Cayman Islands"
+#: model:ir.module.module,description:base.module_website_report
+msgid "\n"
+"Use the website editor to customize your reports.\n"
+" "
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Record Rule"
+#: model:ir.module.module,description:base.module_sales_team
+msgid "\n"
+"Using this application you can manage Sales Team with CRM and/or Sales \n"
+"=======================================================================\n"
+" "
msgstr ""
#. module: base
-#: model:res.country,name:base.kr
-msgid "South Korea"
+#: model:ir.module.module,description:base.module_base_vat
+msgid "\n"
+"VAT validation for Partner's VAT numbers.\n"
+"=========================================\n"
+"\n"
+"After installing this module, values entered in the VAT field of Partners will\n"
+"be validated for all supported countries. The country is inferred from the\n"
+"2-letter country code that prefixes the VAT number, e.g. ``BE0477472701``\n"
+"will be validated using the Belgian rules.\n"
+"\n"
+"There are two different levels of VAT number validation:\n"
+"--------------------------------------------------------\n"
+" * By default, a simple off-line check is performed using the known validation\n"
+" rules for the country, usually a simple check digit. This is quick and \n"
+" always available, but allows numbers that are perhaps not truly allocated,\n"
+" or not valid anymore.\n"
+" \n"
+" * When the \"VAT VIES Check\" option is enabled (in the configuration of the user's\n"
+" Company), VAT numbers will be instead submitted to the online EU VIES\n"
+" database, which will truly verify that the number is valid and currently\n"
+" allocated to a EU company. This is a little bit slower than the simple\n"
+" off-line check, requires an Internet connection, and may not be available\n"
+" all the time. If the service is not available or does not support the\n"
+" requested country (e.g. for non-EU countries), a simple check will be performed\n"
+" instead.\n"
+"\n"
+"Supported countries currently include EU countries, and a few non-EU countries\n"
+"such as Chile, Colombia, Mexico, Norway or Russia. For unsupported countries,\n"
+"only the country code will be validated.\n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_si
-msgid "Kontni načrt za gospodarske družbe"
+#: model:ir.module.module,description:base.module_fleet
+msgid "\n"
+"Vehicle, leasing, insurances, cost\n"
+"==================================\n"
+"With this module, OpenERP helps you managing all your vehicles, the\n"
+"contracts associated to those vehicle as well as services, fuel log\n"
+"entries, costs and many other features necessary to the management \n"
+"of your fleet of vehicle(s)\n"
+"\n"
+"Main Features\n"
+"-------------\n"
+"* Add vehicles to your fleet\n"
+"* Manage contracts for vehicles\n"
+"* Reminder when a contract reach its expiration date\n"
+"* Add services, fuel log entry, odometer values for all vehicles\n"
+"* Show all costs associated to a vehicle or to a type of service\n"
+"* Analysis graph for costs\n"
+""
msgstr ""
#. module: base
-#: code:addons/orm.py:4917
-#, python-format
-msgid "Record #%d of %s not found, cannot copy!"
+#: model:ir.module.module,description:base.module_stock_account
+msgid "\n"
+"WMS Accounting module\n"
+"======================\n"
+"This module makes the link between the 'stock' and 'account' modules and allows you to create accounting entries to value your stock movements\n"
+"\n"
+"Key Features\n"
+"------------\n"
+"* Stock Valuation (periodical or automatic)\n"
+"* Invoice from Picking\n"
+"\n"
+"Dashboard / Reports for Warehouse Management includes:\n"
+"------------------------------------------------------\n"
+"* Stock Inventory Value at given date (support dates in the past)\n"
+" "
msgstr ""
#. module: base
-#: field:ir.module.module,contributors:0
-msgid "Contributors"
+#: model:ir.module.module,description:base.module_website_gengo
+msgid "\n"
+"Website Gengo Translator\n"
+"========================\n"
+"\n"
+"Translate you website in one click\n"
+""
msgstr ""
#. module: base
-#: field:ir.rule,perm_unlink:0
-msgid "Apply for Delete"
+#: model:ir.module.module,description:base.module_website_membership
+msgid "\n"
+"Website for browsing Associations, Groups and Memberships\n"
+"=========================================================\n"
+""
msgstr ""
#. module: base
-#: selection:ir.property,type:0
-msgid "Char"
+#: code:addons/base/res/res_company.py:68
+#, python-format
+msgid " (copy)"
msgstr ""
#. module: base
-#: field:ir.module.category,visible:0
-msgid "Visible"
+#: model:res.partner.bank.type,format_layout:base.bank_normal
+msgid "%(bank_name)s: %(acc_number)s"
msgstr ""
#. module: base
-#: model:ir.actions.client,name:base.action_client_base_menu
-msgid "Open Settings Menu"
+#: view:res.lang:base.res_lang_form
+msgid "%A - Full weekday name."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (AR) / Español (AR)"
+#: view:res.lang:base.res_lang_form
+msgid "%B - Full month name."
msgstr ""
#. module: base
-#: model:res.country,name:base.ug
-msgid "Uganda"
+#: view:res.lang:base.res_lang_form
+msgid "%H - Hour (24-hour clock) [00,23]."
msgstr ""
#. module: base
-#: field:ir.model.access,perm_unlink:0
-msgid "Delete Access"
+#: view:res.lang:base.res_lang_form
+msgid "%I - Hour (12-hour clock) [01,12]."
msgstr ""
#. module: base
-#: model:res.country,name:base.ne
-msgid "Niger"
+#: view:res.lang:base.res_lang_form
+msgid "%M - Minute [00,59]."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Chinese (HK)"
+#: view:res.lang:base.res_lang_form
+msgid "%S - Seconds [00,61]."
msgstr ""
#. module: base
-#: model:res.country,name:base.ba
-msgid "Bosnia-Herzegovina"
+#: view:res.lang:base.res_lang_form
+msgid "%U - Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0."
msgstr ""
#. module: base
-#: selection:ir.translation,type:0
-msgid "Wizard Field"
+#: view:res.lang:base.res_lang_form
+msgid "%W - Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (GT) / Español (GT)"
+#: view:res.lang:base.res_lang_form
+msgid "%X - Appropriate time representation."
msgstr ""
#. module: base
-#: field:ir.mail_server,smtp_port:0
-msgid "SMTP Port"
+#: view:res.lang:base.res_lang_form
+msgid "%Y - Year with century."
msgstr ""
#. module: base
-#: help:res.users,login:0
-msgid "Used to log into the system"
+#: view:res.lang:base.res_lang_form
+msgid "%a - Abbreviated weekday name."
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "TGZ format: this is a compressed archive containing a PO file, directly suitable\n"
-" for uploading to OpenERP's translation platform,"
+#: view:res.lang:base.res_lang_form
+msgid "%b - Abbreviated month name."
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%W - Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0."
+#: view:res.lang:base.res_lang_form
+msgid "%c - Appropriate date and time representation."
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_language_install.py:53
-#, python-format
-msgid "Language Pack"
+#: view:res.lang:base.res_lang_form
+msgid "%d - Day of the month [01,31]."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_tests
-msgid "Tests"
+#: view:res.lang:base.res_lang_form
+msgid "%j - Day of the year [001,366]."
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,attachment:0
-msgid "Save as Attachment Prefix"
+#: view:res.lang:base.res_lang_form
+msgid "%m - Month number [01,12]."
msgstr ""
#. module: base
-#: field:ir.ui.view_sc,res_id:0
-msgid "Resource Ref."
+#: view:res.lang:base.res_lang_form
+msgid "%p - Equivalent of either AM or PM."
msgstr ""
#. module: base
-#: field:ir.actions.act_url,url:0
-msgid "Action URL"
+#: code:addons/base/ir/ir_filters.py:36
+#: code:addons/base/res/res_partner.py:355
+#: code:addons/base/res/res_users.py:120
+#: code:addons/base/res/res_users.py:366
+#: code:addons/base/res/res_users.py:368
+#, python-format
+msgid "%s (copy)"
msgstr ""
#. module: base
-#: field:base.module.import,module_name:0
-#: field:ir.module.module,shortdesc:0
-msgid "Module Name"
+#: view:res.lang:base.res_lang_form
+msgid "%w - Weekday number [0(Sunday),6]."
msgstr ""
#. module: base
-#: model:res.country,name:base.mh
-msgid "Marshall Islands"
+#: view:res.lang:base.res_lang_form
+msgid "%x - Appropriate date representation."
+msgstr ""
+
+#. module: base
+#: view:res.lang:base.res_lang_form
+msgid "%y - Year without century [00,99]."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:423
+#: code:addons/base/ir/ir_model.py:977
#, python-format
-msgid "Changing the model of a field is forbidden!"
+msgid "'%s' contains too many dots. XML ids should not contain dots ! These are used to refer to other modules data, as in module.reference_id"
msgstr ""
#. module: base
-#: model:res.country,name:base.ht
-msgid "Haiti"
+#: code:addons/base/ir/ir_fields.py:191
+#, python-format
+msgid "'%s' does not seem to be a number for field '%%(field)s'"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll
-msgid "French Payroll"
+#: code:addons/base/ir/ir_fields.py:204
+#, python-format
+msgid "'%s' does not seem to be a valid date for field '%%(field)s'"
msgstr ""
#. module: base
-#: view:ir.ui.view:0
-#: selection:ir.ui.view,type:0
-msgid "Search"
+#: code:addons/base/ir/ir_fields.py:235
+#, python-format
+msgid "'%s' does not seem to be a valid datetime for field '%%(field)s'"
msgstr ""
#. module: base
-#: code:addons/osv.py:135
+#: code:addons/base/ir/ir_fields.py:183
#, python-format
-msgid "The operation cannot be completed, probably due to the following:\n"
-"- deletion: you may be trying to delete a record while other records still reference it\n"
-"- creation/update: a mandatory field is not correctly set"
+msgid "'%s' does not seem to be an integer for field '%%(field)s'"
msgstr ""
#. module: base
-#: field:ir.module.category,parent_id:0
-msgid "Parent Application"
+#: view:res.partner:base.view_partner_form
+msgid "(edit company address)"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_action_wizard
-#: view:ir.actions.wizard:0
-#: model:ir.ui.menu,name:base.menu_ir_action_wizard
-msgid "Wizards"
+#: view:res.company:base.view_company_form
+msgid "(reload fonts)"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:131
-#, python-format
-msgid "Operation Canceled"
+#: view:base.language.export:base.wizard_lang_export
+msgid ", or your preferred text editor"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_document
-msgid "Document Management System"
+#: help:ir.values,key:0
+msgid "- Action: an action attached to one slot of the given model\n"
+"- Default: a default value for a model field"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_crm_claim
-msgid "Claims Management"
+#: view:ir.module.module:base.module_form
+msgid "-This module does not create menu."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_document_webdav
-msgid "\n"
-"With this module, the WebDAV server for documents is activated.\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 \n"
-"the server's config.\n"
-"\n"
-"Server Configuration Parameter:\n"
-"-------------------------------\n"
-"[webdav]:\n"
-"+++++++++ \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"
-""
+#: view:ir.module.module:base.module_form
+msgid "-This module does not create report."
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_purchase_management
-#: model:ir.ui.menu,name:base.menu_purchase_root
-msgid "Purchases"
+#: view:ir.module.module:base.module_form
+msgid "-This module does not create views."
msgstr ""
#. module: base
-#: model:res.country,name:base.md
-msgid "Moldavia"
+#: view:ir.module.module:base.module_form
+msgid "-This module does not depends on any other module."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_iban
-msgid "\n"
-"This module installs the base for IBAN (International Bank Account Number) bank accounts and checks for it's validity.\n"
-"======================================================================================================================\n"
-"\n"
-"The ability to extract the correctly represented local accounts from IBAN accounts \n"
-"with a single statement.\n"
-" "
+#: view:res.lang:base.res_lang_form
+msgid "1. %c ==> Fri Dec 5 18:25:20 2008"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Features"
+#: view:ir.rule:base.view_rule_form
+msgid "1. Global rules are combined together with a logical AND operator, and with the result of the following steps"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "Data"
+#: view:res.lang:base.res_lang_form
+msgid "10. %S ==> 20"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_claim
-msgid "\n"
-"This module adds claim menu and features to your portal if claim and portal are installed.\n"
-"==========================================================================================\n"
-" "
+#: view:res.lang:base.res_lang_form
+msgid "11. %U or %W ==> 48 (49th week)"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_res_partner_bank_account_form
-msgid "Configure your company's bank accounts and select those that must appear on the report footer. You can reorder bank accounts from the list view. If you use the accounting application of OpenERP, journals and accounts will be created automatically based on these data."
+#: view:res.lang:base.res_lang_form
+msgid "12. %w ==> 5 ( Friday is the 6th day)"
msgstr ""
#. module: base
#: report:ir.module.reference:0
-msgid "Version"
+msgid "1cm 28cm 20cm 28cm"
msgstr ""
#. module: base
-#: help:res.users,action_id:0
-msgid "If specified, this action will be opened at logon for this user, in addition to the standard menu."
+#: view:res.lang:base.res_lang_form
+msgid "2. %a ,%A ==> Fri, Friday"
msgstr ""
#. module: base
-#: model:res.country,name:base.mf
-msgid "Saint Martin (French part)"
+#: view:ir.rule:base.view_rule_form
+msgid "2. Group-specific rules are combined together with a logical OR operator"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_exports
-msgid "ir.exports"
+#: view:res.lang:base.res_lang_form
+msgid "3. %x ,%X ==> 12/05/08, 18:25:20"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_lu
-msgid "\n"
-"This is the base module to manage the accounting chart for Luxembourg.\n"
-"======================================================================\n"
-"\n"
-" * the Luxembourg Official Chart of Accounts (law of June 2009 + 2011 chart and Taxes),\n"
-" * the Tax Code Chart for Luxembourg\n"
-" * the main taxes used in Luxembourg\n"
-" * default fiscal position for local, intracom, extracom "
+#: view:ir.rule:base.view_rule_form
+msgid "3. If user belongs to several groups, the results from step 2 are combined with logical OR operator"
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_update_translations.py:39
-#, python-format
-msgid "No language with code \"%s\" exists"
+#: view:res.lang:base.res_lang_form
+msgid "4. %b, %B ==> Dec, December"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_social_network
-#: model:ir.module.module,shortdesc:base.module_mail
-msgid "Social Network"
+#: view:res.lang:base.res_lang_form
+msgid "5. %y, %Y ==> 08, 2008"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%Y - Year with century."
+#: view:res.lang:base.res_lang_form
+msgid "6. %d, %m ==> 05, 12"
msgstr ""
#. module: base
-#: view:res.company:0
-msgid "Report Footer Configuration"
+#: view:res.lang:base.res_lang_form
+msgid "7. %H:%M:%S ==> 18:25:20"
msgstr ""
#. module: base
-#: field:ir.translation,comments:0
-msgid "Translation comments"
+#: view:res.lang:base.res_lang_form
+msgid "8. %I:%M:%S %p ==> 06:25:20 PM"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_lunch
-msgid "\n"
-"The base module to manage lunch.\n"
-"================================\n"
-"\n"
-"Many companies order sandwiches, pizzas and other, from usual suppliers, for their employees to offer them more facilities. \n"
-"\n"
-"However lunches management within the company requires proper administration especially when the number of employees or suppliers is important. \n"
-"\n"
-"The “Lunch Order” module has been developed to make this management easier but also to offer employees more tools and usability. \n"
-"\n"
-"In addition to a full meal and supplier management, this module offers the possibility to display warning and provides quick order selection based on employee’s preferences.\n"
-"\n"
-"If you want to save your employees' time and avoid them to always have coins in their pockets, this module is essential.\n"
-" "
+#: view:res.lang:base.res_lang_form
+msgid "9. %j ==> 340"
msgstr ""
#. module: base
-#: view:wizard.ir.model.menu.create:0
-msgid "Create _Menu"
+#: model:ir.actions.act_window,help:base.action_partner_customer_form
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+" Click to add a contact in your address book.\n"
+" </p><p>\n"
+" Odoo helps you easily track all activities related to\n"
+" a customer: discussions, history of business opportunities,\n"
+" documents, etc.\n"
+" </p>\n"
+" "
msgstr ""
#. module: base
-#: help:ir.actions.server,trigger_obj_id:0
-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)"
+#: model:ir.actions.act_window,help:base.action_partner_form
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+" Click to add a contact in your address book.\n"
+" </p><p>\n"
+" Odoo helps you easily track all activities related to\n"
+" a customer; discussions, history of business opportunities,\n"
+" documents, etc.\n"
+" </p>\n"
+" "
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_bank
-#: view:res.bank:0
-#: field:res.partner.bank,bank:0
-msgid "Bank"
+#: model:ir.actions.act_window,help:base.action_partner_supplier_form
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+" Click to add a contact in your address book.\n"
+" </p><p>\n"
+" Odoo helps you easily track all activities related to\n"
+" a supplier: discussions, history of purchases,\n"
+" documents, etc.\n"
+" </p>\n"
+" "
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_exports_line
-msgid "ir.exports.line"
+#: model:ir.actions.act_window,help:base.action_res_partner_bank_account_form
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+" Click to create a bank account.\n"
+" </p><p>\n"
+" Configure your company's bank accounts and select those that must appear on the report footer.\n"
+" You can reorder bank accounts from the list view.\n"
+" </p>\n"
+" <p>\n"
+" If you use the accounting application of Odoo, journals and accounts will be created automatically based on these data.\n"
+" </p> \n"
+" "
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_purchase_management
-msgid "Helps you manage your purchase-related processes such as requests for quotations, supplier invoices, etc..."
+#: model:ir.actions.act_window,help:base.action_res_bank_form
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+" Click to create a new bank.\n"
+" </p><p>\n"
+" Manage bank records you want to be used in the system.\n"
+" </p>\n"
+" "
msgstr ""
#. module: base
-#: help:res.partner,website:0
-msgid "Website of Partner or Company"
+#: model:ir.actions.act_window,help:base.action_partner_category_form
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+" Click to create a new partner tags.\n"
+" </p><p>\n"
+" Manage the partner tags to better classify them for tracking and analysis purposes.\n"
+" A partner may have several tags and tags have a hierarchical structure: a partner with a tag has also the parent tags.\n"
+" </p>\n"
+" "
msgstr ""
#. module: base
-#: help:base.language.install,overwrite:0
-msgid "If you check this box, your customized translations will be overwritten and replaced by the official ones."
+#: model:ir.actions.act_window,help:base.action_ui_view_custom
+msgid "<p class=\"oe_view_nocontent_create\">Click here to create a customized view</p><p>Customized views are used when users reorganize the content of their dashboard views (via web client)</p>"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_action_report_xml
-#: field:ir.module.module,reports_by_module:0
-#: model:ir.ui.menu,name:base.menu_ir_action_report_xml
-msgid "Reports"
+#: model:ir.actions.act_window,help:base.open_module_tree
+msgid "<p><b>No module found!</b></p>\n"
+" <p>You should try others search criteria.</p>\n"
+" "
msgstr ""
#. module: base
-#: help:ir.actions.act_window.view,multi:0
-#: help:ir.actions.report.xml,multi:0
-msgid "If set to true, the action will not be displayed on the right toolbar of a form view."
+#: view:res.lang:base.res_lang_form
+msgid "======================================================"
msgstr ""
#. module: base
-#: field:workflow,on_create:0
-msgid "On Create"
+#: model:ir.actions.act_window,help:base.action_res_groups
+msgid "A group is a set of functional areas that will be assigned to the user in order to give them access and rights to specific applications and tasks in the system. You can create custom groups or edit the ones existing by default in order to customize the view of the menu that users will be able to see. Whether they can have a read, write, create and delete access right can be managed from here."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:906
-#, python-format
-msgid "'%s' contains too many dots. XML ids should not contain dots ! These are used to refer to other modules data, as in module.reference_id"
+#: model:ir.module.module,summary:base.module_hw_posbox_homepage
+msgid "A homepage for the PosBox"
msgstr ""
#. module: base
-#: field:res.users,login:0
-msgid "Login"
+#: model:ir.module.module,description:base.module_test_exceptions
+msgid "A module to generate exceptions."
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Access all the fields related to the current object using expressions, i.e. object.partner_id.name "
+#: model:ir.module.module,description:base.module_test_workflow
+msgid "A module to play with workflows."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_project_issue
-msgid "Portal Issue"
+#: model:ir.module.module,description:base.module_test_impex
+msgid "A module to test import/export."
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_tools
-msgid "Tools"
+#: model:ir.module.module,description:base.module_test_new_api
+msgid "A module to test the new API."
msgstr ""
#. module: base
-#: selection:ir.property,type:0
-msgid "Float"
+#: model:ir.module.module,description:base.module_test_uninstall
+msgid "A module to test the uninstall feature."
msgstr ""
#. module: base
-#: help:ir.actions.todo,type:0
-msgid "Manual: Launched manually.\n"
-"Automatic: Runs whenever the system is reconfigured.\n"
-"Launch Manually Once: after having been launched manually, it sets automatically to Done."
+#: model:ir.module.module,description:base.module_test_inherit
+msgid "A module to verify the inheritance."
msgstr ""
#. module: base
-#: field:res.partner,image_small:0
-msgid "Small-sized image"
+#: model:ir.module.module,description:base.module_test_limits
+msgid "A module with dummy methods."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_stock
-msgid "Warehouse Management"
+#: code:addons/base/ir/ir_qweb.py:837
+#, python-format
+msgid "A unit must be provided to duration widgets"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_request_link
-msgid "res.request.link"
+#: selection:res.company,rml_paper_format:0
+msgid "A4"
msgstr ""
#. module: base
-#: field:ir.actions.wizard,name:0
-msgid "Wizard Info"
+#: field:res.partner.title,shortcut:0
+msgid "Abbreviation"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_wizard_lang_export
-#: model:ir.ui.menu,name:base.menu_wizard_lang_export
-msgid "Export Translation"
+#: selection:base.language.install,lang:0
+msgid "Abkhazian / аҧсуа"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_server_action
-#: view:ir.actions.server:0
-#: model:ir.ui.menu,name:base.menu_server_action
-msgid "Server Actions"
+#: field:res.company,user_ids:0
+msgid "Accepted Users"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_lu
-msgid "Luxembourg - Accounting"
+#: field:ir.model,access_ids:0
+#: view:ir.model.access:base.ir_access_view_form
+msgid "Access"
msgstr ""
#. module: base
-#: model:res.country,name:base.tp
-msgid "East Timor"
+#: view:ir.model.access:base.ir_access_view_search
+msgid "Access Control"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:415
-#: view:ir.module.module:0
-#, python-format
-msgid "Install"
+#: view:ir.model.access:base.ir_access_view_form
+#: view:ir.model.access:base.ir_access_view_search
+#: view:ir.model.access:base.ir_access_view_tree
+#: view:res.groups:base.view_groups_form
+#: field:res.groups,model_access:0
+msgid "Access Controls"
msgstr ""
#. module: base
-#: field:res.currency,accuracy:0
-msgid "Computational Accuracy"
+#: model:ir.actions.act_window,name:base.ir_access_act
+#: model:ir.ui.menu,name:base.menu_ir_access_act
+msgid "Access Controls List"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_at
-msgid "\n"
-"This module provides the standard Accounting Chart for Austria which is based on the Template from BMF.gv.at.\n"
-"============================================================================================================= \n"
-"Please keep in mind that you should review and adapt it with your Accountant, before using it in a live Environment.\n"
-""
+#: model:ir.model,name:base.model_res_groups
+msgid "Access Groups"
msgstr ""
#. module: base
-#: model:res.country,name:base.kg
-msgid "Kyrgyz Republic (Kyrgyzstan)"
+#: field:res.groups,menu_access:0
+msgid "Access Menu"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_accountant
-msgid "\n"
-"Accounting Access Rights\n"
-"========================\n"
-"It gives the Administrator user access to all accounting features such as journal items and the chart of accounts.\n"
-"\n"
-"It assigns manager and user access rights to the Administrator and only user rights to the Demo user. \n"
-""
+#: view:ir.model:base.view_model_form
+#: view:ir.rule:base.view_rule_form
+#: view:res.groups:base.view_groups_form
+#: model:res.groups,name:base.group_erp_manager
+#: view:res.users:base.view_users_form
+#: view:res.users:base.view_users_simple_form
+msgid "Access Rights"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Day: %(day)s"
+#: view:ir.model:base.view_model_form
+#: view:res.groups:base.view_groups_form
+msgid "Access Rules"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_point_of_sale
-msgid "Helps you get the most out of your points of sales with fast sale encoding, simplified payment mode encoding, automatic picking lists generation and more."
+#: model:ir.module.module,shortdesc:base.module_account_analytic_default
+msgid "Account Analytic Defaults"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:164
-#, python-format
-msgid "Unknown value '%s' for boolean field '%%(field)s', assuming '%s'"
+#: model:ir.module.category,name:base.module_category_localization_account_charts
+msgid "Account Charts"
msgstr ""
#. module: base
-#: model:res.country,name:base.nl
-msgid "Netherlands"
+#: field:res.company,account_no:0
+msgid "Account No."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_event
-msgid "Portal Event"
+#: view:res.partner.bank:base.view_partner_bank_form
+#: field:res.partner.bank,acc_number:0
+msgid "Account Number"
msgstr ""
#. module: base
-#: selection:ir.translation,state:0
-msgid "Translation in Progress"
+#: field:res.partner.bank,partner_id:0
+msgid "Account Owner"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_rule
-msgid "ir.rule"
+#: field:res.partner.bank,owner_name:0
+msgid "Account Owner Name"
msgstr ""
#. module: base
-#: selection:ir.cron,interval_type:0
-msgid "Days"
+#: model:ir.module.category,name:base.module_category_generic_modules_accounting
+#: view:res.company:base.view_company_form
+msgid "Accounting"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_fleet
-msgid "Vehicle, leasing, insurances, costs"
+#: model:ir.module.category,name:base.module_category_accounting_and_finance
+msgid "Accounting & Finance"
msgstr ""
#. module: base
-#: view:ir.model.access:0
-#: field:ir.model.access,perm_read:0
-msgid "Read Access"
+#: model:ir.module.module,shortdesc:base.module_account_test
+msgid "Accounting Consistency Tests"
msgstr ""
#. module: base
-#: help:ir.attachment,res_id:0
-msgid "The record id this is attached to"
+#: model:ir.module.module,shortdesc:base.module_account_accountant
+msgid "Accounting and Finance"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_share
-msgid "\n"
-"This module adds generic sharing tools to your current OpenERP database.\n"
-"========================================================================\n"
-"\n"
-"It specifically adds a 'share' button that is available in the Web client to\n"
-"share any kind of OpenERP data with colleagues, customers, friends.\n"
-"\n"
-"The system will work by creating new users and groups on the fly, and by\n"
-"combining the appropriate access rights and ir.rules to ensure that the shared\n"
-"users only have access to the data that has been shared with them.\n"
-"\n"
-"This is extremely useful for collaborative work, knowledge sharing,\n"
-"synchronization with other companies.\n"
-" "
+#: view:ir.actions.act_window:base.view_window_action_search
+#: field:ir.actions.act_window.view,act_window_id:0
+#: view:ir.actions.actions:base.action_view
+#: view:ir.actions.actions:base.action_view_search
+#: view:ir.actions.actions:base.action_view_tree
+#: field:ir.actions.todo,action_id:0
+#: field:ir.filters,action_id:0
+#: field:ir.ui.menu,action:0
+#: selection:ir.values,key:0
+msgid "Action"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_process
-msgid "Enterprise Process"
+#: field:ir.values,action_id:0
+msgid "Action (change only)"
msgstr ""
#. module: base
-#: help:res.partner,supplier:0
-msgid "Check this box if this contact is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."
+#: model:ir.actions.act_window,name:base.act_values_form_action
+#: model:ir.ui.menu,name:base.menu_values_form_action
+#: view:ir.values:base.values_view_form_action
+msgid "Action Bindings"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_evaluation
-msgid "Employee Appraisals"
+#: view:ir.values:base.values_view_tree_action
+msgid "Action Bindings/Defaults"
msgstr ""
#. module: base
-#: selection:ir.actions.server,state:0
-msgid "Write Object"
+#: field:ir.actions.act_url,name:0
+#: field:ir.actions.act_window,name:0
+#: field:ir.actions.client,name:0
+#: field:ir.actions.server,name:0
+msgid "Action Name"
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:68
-#, python-format
-msgid " (copy)"
+#: view:ir.values:base.values_view_form_action
+msgid "Action Reference"
msgstr ""
#. module: base
-#: model:res.country,name:base.tm
-msgid "Turkmenistan"
+#: field:ir.actions.act_url,target:0
+msgid "Action Target"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "7. %H:%M:%S ==> 18:25:20"
+#: field:ir.actions.server,state:0
+msgid "Action To Do"
msgstr ""
#. module: base
-#: view:res.partner:0
-#: field:res.partner.category,partner_ids:0
-msgid "Partners"
+#: field:ir.actions.act_url,type:0
+#: field:ir.actions.act_window,type:0
+#: field:ir.actions.act_window_close,type:0
+#: field:ir.actions.actions,type:0
+#: field:ir.actions.client,type:0
+#: field:ir.actions.report.xml,type:0
+#: view:ir.actions.server:base.view_server_action_search
+#: field:ir.actions.server,type:0
+msgid "Action Type"
msgstr ""
#. module: base
-#: field:res.partner.category,parent_left:0
-msgid "Left parent"
+#: field:ir.actions.act_url,url:0
+msgid "Action URL"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_project_mrp
-msgid "Create Tasks on SO"
+#: field:ir.actions.act_url,usage:0
+#: field:ir.actions.act_window,usage:0
+#: field:ir.actions.act_window_close,usage:0
+#: field:ir.actions.actions,usage:0
+#: field:ir.actions.client,usage:0
+#: field:ir.actions.report.xml,usage:0
+#: field:ir.actions.server,usage:0
+msgid "Action Usage"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:318
-#, python-format
-msgid "This column contains module data and cannot be removed!"
+#: help:ir.values,action_id:0
+msgid "Action bound to this entry - helper field for binding an action, will automatically set the correct reference"
msgstr ""
#. module: base
-#: field:res.partner.bank,footer:0
-msgid "Display on Reports"
+#: field:ir.actions.act_url,help:0
+#: field:ir.actions.act_window,help:0
+#: field:ir.actions.act_window_close,help:0
+#: field:ir.actions.actions,help:0
+#: field:ir.actions.client,help:0
+#: field:ir.actions.report.xml,help:0
+#: field:ir.actions.server,help:0
+msgid "Action description"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_project_timesheet
-msgid "\n"
-"Synchronization of project task work entries with timesheet entries.\n"
-"====================================================================\n"
-"\n"
-"This module lets you transfer the entries under tasks defined for Project\n"
-"Management to the Timesheet line entries for particular date and particular user\n"
-"with the effect of creating, editing and deleting either ways.\n"
-" "
+#: view:ir.cron:base.ir_cron_view
+msgid "Action to Trigger"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_model_access
-msgid "ir.model.access"
+#: model:ir.actions.act_window,name:base.ir_sequence_actions
+#: model:ir.ui.menu,name:base.menu_ir_sequence_actions
+#: model:ir.ui.menu,name:base.next_id_6
+#: view:workflow.activity:base.view_workflow_activity_form
+msgid "Actions"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_multilang
-msgid "\n"
-" * Multi language support for Chart of Accounts, Taxes, Tax Codes, Journals,\n"
-" Accounting Templates, Analytic Chart of Accounts and Analytic Journals.\n"
-" * Setup wizard changes\n"
-" - Copy translations for COA, Tax, Tax Code and Fiscal Position from\n"
-" templates to target objects.\n"
-" "
+#: field:ir.cron,active:0
+#: field:ir.mail_server,active:0
+#: field:ir.model.access,active:0
+#: field:ir.rule,active:0
+#: field:ir.sequence,active:0
+#: field:res.bank,active:0
+#: field:res.currency,active:0
+#: field:res.lang,active:0
+#: field:res.partner,active:0
+#: field:res.partner.category,active:0
+#: field:res.users,active:0
+#: view:workflow.instance:base.view_workflow_instance_search
+#: view:workflow.workitem:base.view_workflow_workitem_search
+msgid "Active"
msgstr ""
#. module: base
-#: field:workflow.transition,act_from:0
-msgid "Source Activity"
+#: model:ir.actions.act_window,name:base.action_workflow_activity_form
+#: model:ir.ui.menu,name:base.menu_workflow_activity
+#: field:workflow,activities:0
+msgid "Activities"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Legend (for prefix, suffix)"
+#: view:workflow.activity:base.view_workflow_activity_form
+#: view:workflow.activity:base.view_workflow_activity_tree
+#: field:workflow.workitem,act_id:0
+msgid "Activity"
msgstr ""
#. module: base
-#: selection:ir.server.object.lines,type:0
-msgid "Formula"
+#: model:ir.module.module,summary:base.module_website_sale_delivery
+msgid "Add Delivery Costs to Online Sales"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:307
-#, python-format
-msgid "Can not remove root user!"
+#: field:ir.actions.report.xml,header:0
+msgid "Add RML Header"
msgstr ""
#. module: base
-#: model:res.country,name:base.mw
-msgid "Malawi"
+#: help:ir.actions.act_window,auto_refresh:0
+msgid "Add an auto-refresh on the view"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_ec
-msgid "\n"
-"This is the base module to manage the accounting chart for Ecuador in OpenERP.\n"
-"==============================================================================\n"
-"\n"
-"Accounting chart and localization for Ecuador.\n"
-" "
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Add in the 'More' menu"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_filters.py:36
-#: code:addons/base/res/res_partner.py:314
-#: code:addons/base/res/res_users.py:92
-#: code:addons/base/res/res_users.py:331
-#: code:addons/base/res/res_users.py:333
-#, python-format
-msgid "%s (copy)"
+#: help:ir.actions.report.xml,header:0
+msgid "Add or not the corporate RML header"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_chart
-msgid "Template of Charts of Accounts"
+#: model:ir.module.module,summary:base.module_website_twitter
+msgid "Add twitter scroller snippet in website builder"
+msgstr ""
+
+#. module: base
+#: view:res.bank:base.view_res_bank_form
+#: view:res.company:base.view_company_form
+#: view:res.partner:base.view_partner_form
+#: view:res.partner.bank:base.view_partner_bank_form
+msgid "Address"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_contacts
+#: model:ir.ui.menu,name:base.menu_config_address_book
+msgid "Address Book"
+msgstr ""
+
+#. module: base
+#: field:res.country,address_format:0
+msgid "Address Format"
msgstr ""
#. module: base
@@ -1906,145 +4357,179 @@ msgid "Address Type"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_sale_stock
-msgid "\n"
-"Manage sales quotations and orders\n"
-"==================================\n"
-"\n"
-"This module makes the link between the sales and warehouses management applications.\n"
-"\n"
-"Preferences\n"
-"-----------\n"
-"* Shipping: Choice of delivery at once or partial delivery\n"
-"* Invoicing: choose how invoices will be paid\n"
-"* Incoterms: International Commercial terms\n"
-"\n"
-"You can choose flexible invoicing methods:\n"
-"\n"
-"* *On Demand*: Invoices are created manually from Sales Orders when needed\n"
-"* *On Delivery Order*: Invoices are generated from picking (delivery)\n"
-"* *Before Delivery*: A Draft invoice is created and must be paid before delivery\n"
-""
+#: view:res.country:base.view_country_form
+msgid "Address format..."
msgstr ""
#. module: base
-#: field:ir.ui.menu,complete_name:0
-msgid "Full Path"
+#: model:ir.module.category,name:base.module_category_administration
+msgid "Administration"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "The next step depends on the file format:"
+#: help:res.country.state,name:0
+msgid "Administrative divisions of a country. E.g. Fed. State, Departement, Canton"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%U - Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0."
+#: code:addons/base/ir/ir_model.py:531
+#: code:addons/base/ir/ir_model.py:592
+#: code:addons/base/ir/ir_model.py:1096
+#, python-format
+msgid "Administrator access is required to uninstall a module"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "PO(T) format: you should edit it with a PO editor such as"
+#: model:ir.module.module,shortdesc:base.module_website_event_track
+msgid "Advanced Events"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_administration
-#: model:res.groups,name:base.group_system
-msgid "Settings"
+#: model:ir.module.category,name:base.module_category_report_designer
+msgid "Advanced Reporting"
msgstr ""
#. module: base
-#: selection:ir.actions.act_window,view_type:0
-#: selection:ir.actions.act_window.view,view_mode:0
-#: view:ir.ui.view:0
-#: selection:ir.ui.view,type:0
-msgid "Tree"
+#: selection:ir.model.fields,select_level:0
+msgid "Advanced Search (deprecated)"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Create / Write / Copy"
+#: model:ir.module.module,description:base.module_payment_adyen
+#: model:ir.module.module,shortdesc:base.module_payment_adyen
+msgid "Adyen Payment Acquirer"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Second: %(sec)s"
+#: selection:ir.module.module,license:0
+msgid "Affero GPL-3"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,view_mode:0
-msgid "View Mode"
+#: model:res.country,name:base.af
+msgid "Afghanistan, Islamic State of"
msgstr ""
#. module: base
-#: help:res.partner.bank,footer:0
-msgid "Display this bank account on the footer of printed documents like invoices and sales orders."
+#: selection:res.currency,position:0
+msgid "After Amount"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish / Español"
+#: model:ir.ui.menu,name:base.menu_aftersale
+msgid "After-Sale Services"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.al
+msgid "Albania"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Korean (KP) / 한국어 (KP)"
+msgid "Albanian / Shqip"
msgstr ""
#. module: base
-#: model:res.country,name:base.ax
-msgid "Åland Islands"
+#: model:res.country,name:base.dz
+msgid "Algeria"
msgstr ""
#. module: base
-#: field:res.company,logo:0
-msgid "Logo"
+#: view:base.module.configuration:base.view_base_module_configuration_form
+msgid "All pending configuration wizards have been executed. You may restart individual wizards via the list of configuration wizards."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_cr
-msgid "Costa Rica - Accounting"
+#: view:res.users:base.view_users_form
+msgid "Allowed Companies"
msgstr ""
#. module: base
-#: selection:ir.actions.act_url,target:0
-#: selection:ir.actions.act_window,target:0
-msgid "New Window"
+#: model:ir.module.module,summary:base.module_hw_posbox_upgrade
+msgid "Allows to remotely upgrade the PosBox software"
msgstr ""
#. module: base
-#: field:ir.values,action_id:0
-msgid "Action (change only)"
+#: model:ir.module.category,description:base.module_category_account_voucher
+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 ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_subscription
-msgid "Recurring Documents"
+#: selection:ir.model.fields,select_level:0
+msgid "Always Searchable"
msgstr ""
#. module: base
-#: model:res.country,name:base.bs
-msgid "Bahamas"
+#: selection:ir.ui.view,application:0
+msgid "Always applied"
msgstr ""
#. module: base
-#: field:ir.rule,perm_create:0
-msgid "Apply for Create"
+#: code:addons/base/ir/ir_fields.py:373
+#, python-format
+msgid "Ambiguous specification for field '%(field)s', only provide one of name, external id or database id"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_tools
-msgid "Extra Tools"
+#: model:res.country,name:base.as
+msgid "American Samoa"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "Attachment"
+#: selection:base.language.install,lang:0
+msgid "Amharic / አምሃርኛ"
msgstr ""
#. module: base
-#: model:res.country,name:base.ie
-msgid "Ireland"
+#: help:ir.actions.client,tag:0
+msgid "An arbitrary string, interpreted by the client according to its own needs and wishes. There is no central tag repository across clients."
+msgstr ""
+
+#. module: base
+#: help:ir.module.module,auto_install:0
+msgid "An auto-installable module is automatically installed by the system when all its dependencies are satisfied. If the module has no dependency, it is always installed."
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_analytic
+msgid "Analytic Accounting"
+msgstr ""
+
+#. module: base
+#: selection:workflow.activity,join_mode:0
+#: selection:workflow.activity,split_mode:0
+msgid "And"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.ad
+msgid "Andorra, Principality of"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_account_anglo_saxon
+msgid "Anglo-Saxon Accounting"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.ao
+msgid "Angola"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.ai
+msgid "Anguilla"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.aq
+msgid "Antarctica"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.ag
+msgid "Antigua and Barbuda"
msgstr ""
#. module: base
@@ -2053,263 +4538,368 @@ msgid "Appears by default on the top right corner of your printed documents (rep
msgstr ""
#. module: base
-#: field:base.module.update,update:0
-msgid "Number of modules updated"
+#: model:ir.module.module,shortdesc:base.module_hr_applicant_document
+msgid "Applicant Resumes and Letters"
msgstr ""
#. module: base
-#: field:ir.cron,function:0
-msgid "Method"
+#: code:addons/base/res/res_users.py:728
+#: model:ir.model,name:base.model_ir_module_category
+#: field:ir.module.module,application:0
+#: field:res.groups,category_id:0
+#: view:res.users:base.user_groups_view
+#, python-format
+msgid "Application"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_auth_crypt
-msgid "Password Encryption"
+#: model:ir.ui.menu,name:base.menu_translation_app
+msgid "Application Terms"
msgstr ""
#. module: base
-#: view:workflow.activity:0
-msgid "Workflow Activity"
+#: field:ir.ui.view,application:0
+msgid "Application status"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_timesheet_sheet
-msgid "\n"
-"Record and validate timesheets and attendances easily\n"
-"=====================================================\n"
-"\n"
-"This application supplies a new screen enabling you to manage both attendances (Sign in/Sign out) and your work encoding (timesheet) by period. Timesheet entries are made by employees each day. At the end of the defined period, employees validate their sheet and the manager must then approve his team's entries. Periods are defined in the company forms and you can set them to run monthly or weekly.\n"
-"\n"
-"The complete timesheet validation process is:\n"
-"---------------------------------------------\n"
-"* Draft sheet\n"
-"* Confirmation at the end of the period by the employee\n"
-"* Validation by the project manager\n"
-"\n"
-"The validation can be configured in the company:\n"
-"------------------------------------------------\n"
-"* Period size (Day, Week, Month)\n"
-"* Maximal difference between timesheet and attendances\n"
-" "
+#: view:res.config:base.res_config_view_base
+msgid "Apply"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:341
+#: code:addons/base/module/module.py:568
+#: view:base.module.upgrade:base.view_base_module_upgrade_install
+#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade
#, python-format
-msgid "No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'"
+msgid "Apply Schedule Upgrade"
msgstr ""
#. module: base
-#: field:change.password.user,new_passwd:0
-msgid "New Password"
+#: model:ir.ui.menu,name:base.menu_view_base_module_upgrade
+msgid "Apply Scheduled Upgrades"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_ui_view
-msgid "Views allows you to personalize each view of OpenERP. You can add new fields, move fields, rename them or delete the ones that you do not need."
+#: field:ir.rule,perm_create:0
+msgid "Apply for Create"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_base_setup
-msgid "Initial Setup Tools"
+#: field:ir.rule,perm_unlink:0
+msgid "Apply for Delete"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,groups_id:0
-#: model:ir.actions.act_window,name:base.action_res_groups
-#: field:ir.actions.report.xml,groups_id:0
-#: view:ir.actions.todo:0
-#: field:ir.actions.todo,groups_id:0
-#: field:ir.actions.wizard,groups_id:0
-#: view:ir.model:0
-#: field:ir.model.fields,groups:0
-#: field:ir.rule,groups:0
-#: view:ir.ui.menu:0
-#: field:ir.ui.menu,groups_id:0
-#: model:ir.ui.menu,name:base.menu_action_res_groups
-#: view:ir.ui.view:0
-#: field:ir.ui.view,groups_id:0
-#: view:res.groups:0
-#: field:res.users,groups_id:0
-msgid "Groups"
+#: field:ir.rule,perm_read:0
+msgid "Apply for Read"
+msgstr ""
+
+#. module: base
+#: field:ir.rule,perm_write:0
+msgid "Apply for Write"
+msgstr ""
+
+#. module: base
+#: model:ir.actions.client,name:base.modules_act_cl
+#: view:ir.module.module:base.view_module_filter
+#: model:ir.ui.menu,name:base.module_mi
+msgid "Apps"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Spanish (CL) / Español (CL)"
+msgid "Arabic / الْعَرَبيّة"
msgstr ""
#. module: base
-#: model:res.country,name:base.bz
-msgid "Belize"
+#: view:ir.ui.view:base.view_view_form
+msgid "Architecture"
msgstr ""
#. module: base
-#: help:ir.actions.report.xml,header:0
-msgid "Add or not the corporate RML header"
+#: model:res.country,name:base.ar
+msgid "Argentina"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_anonymous
-msgid "\n"
-"Allow anonymous to Access Portal.\n"
-"=================================\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_l10n_ar
+msgid "Argentina Localization Chart Account"
msgstr ""
#. module: base
-#: model:res.country,name:base.ge
-msgid "Georgia"
+#: field:ir.cron,args:0
+msgid "Arguments"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_be_invoice_bba
-msgid "\n"
-" \n"
-"Belgian localization for in- and outgoing invoices (prereq to account_coda):\n"
-"============================================================================\n"
-" - Rename 'reference' field labels to 'Communication'\n"
-" - Add support for Belgian Structured Communication\n"
-"\n"
-"A Structured Communication can be generated automatically on outgoing invoices according to the following algorithms:\n"
-"---------------------------------------------------------------------------------------------------------------------\n"
-" 1) Random : +++RRR/RRRR/RRRDD+++\n"
-" **R..R =** Random Digits, **DD =** Check Digits\n"
-" 2) Date : +++DOY/YEAR/SSSDD+++\n"
-" **DOY =** Day of the Year, **SSS =** Sequence Number, **DD =** Check Digits\n"
-" 3) Customer Reference +++RRR/RRRR/SSSDDD+++\n"
-" **R..R =** Customer Reference without non-numeric characters, **SSS =** Sequence Number, **DD =** Check Digits \n"
-" \n"
-"The preferred type of Structured Communication and associated Algorithm can be\n"
-"specified on the Partner records. A 'random' Structured Communication will\n"
-"generated if no algorithm is specified on the Partner record. \n"
-"\n"
-" "
+#: help:ir.actions.client,params:0
+msgid "Arguments sent to the client along withthe view tag"
msgstr ""
#. module: base
-#: model:res.country,name:base.pl
-msgid "Poland"
+#: help:ir.cron,args:0
+msgid "Arguments to be passed to the method, e.g. (uid,)."
msgstr ""
#. module: base
-#: help:ir.actions.act_window,view_mode:0
-msgid "Comma-separated list of allowed view modes, such as 'form', 'tree', 'calendar', etc. (Default: tree,form)"
+#: model:res.country,name:base.am
+msgid "Armenia"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.aw
+msgid "Aruba"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_account_asset
+msgid "Assets Management"
+msgstr ""
+
+#. module: base
+#: model:ir.module.category,name:base.module_category_association
+#: model:ir.ui.menu,name:base.menu_association
+#: model:ir.ui.menu,name:base.menu_report_association
+msgid "Association"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_association
+msgid "Associations Management"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_website_membership
+msgid "Associations: Members"
+msgstr ""
+
+#. module: base
+#: field:ir.actions.server,link_new_record:0
+msgid "Attach the new record"
+msgstr ""
+
+#. module: base
+#: view:ir.attachment:base.view_attachment_form
+msgid "Attached To"
+msgstr ""
+
+#. module: base
+#: view:ir.attachment:base.view_attachment_search
+msgid "Attachment"
+msgstr ""
+
+#. module: base
+#: field:ir.attachment,name:0
+msgid "Attachment Name"
+msgstr ""
+
+#. module: base
+#: model:ir.actions.act_window,name:base.action_attachment
+#: view:ir.attachment:base.view_attachment_form
+#: view:ir.attachment:base.view_attachment_search
+#: view:ir.attachment:base.view_attachment_tree
+#: model:ir.ui.menu,name:base.menu_action_attachment
+msgid "Attachments"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_hr_attendance
+#: model:res.groups,name:base.group_hr_attendance
+msgid "Attendances"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.au
+msgid "Australia"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.at
+msgid "Austria"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_l10n_at
+msgid "Austria - Accounting"
+msgstr ""
+
+#. module: base
+#: model:ir.module.category,name:base.module_category_authentication
+msgid "Authentication"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_auth_ldap
+msgid "Authentication via LDAP"
+msgstr ""
+
+#. module: base
+#: view:ir.module.module:base.view_module_filter
+#: field:ir.module.module,author:0
+msgid "Author"
+msgstr ""
+
+#. module: base
+#: field:ir.actions.act_window,auto_search:0
+msgid "Auto Search"
+msgstr ""
+
+#. module: base
+#: field:ir.actions.act_window,auto_refresh:0
+msgid "Auto-Refresh"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_base_action_rule
+msgid "Automated Action Rules"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_base_gengo
+msgid "Automated Translations through Gengo API"
+msgstr ""
+
+#. module: base
+#: field:ir.module.module,auto_install:0
+msgid "Automatic Installation"
+msgstr ""
+
+#. module: base
+#: help:ir.translation,state:0
+msgid "Automatically set to let administators find new terms that might need to be translated"
+msgstr ""
+
+#. module: base
+#: model:ir.ui.menu,name:base.menu_automation
+msgid "Automation"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.az
+msgid "Azerbaijan"
msgstr ""
#. module: base
-#: code:addons/orm.py:3842
+#: code:addons/base/res/res_bank.py:185
#, python-format
-msgid "A document was modified since you last viewed it (%s:%d)"
+msgid "BANK"
msgstr ""
#. module: base
-#: view:workflow:0
-msgid "Workflow Editor"
+#: model:res.country,name:base.bs
+msgid "Bahamas"
msgstr ""
#. module: base
-#: selection:ir.module.module,state:0
-#: selection:ir.module.module.dependency,state:0
-msgid "To be removed"
+#: model:res.country,name:base.bh
+msgid "Bahrain"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_sequence
-msgid "ir.sequence"
+#: model:res.country,name:base.bd
+msgid "Bangladesh"
msgstr ""
#. module: base
-#: help:ir.actions.server,expression:0
-msgid "Enter the field/expression that will return the list. E.g. select the sale order in Object, and you can have loop on the sales order line. Expression = `object.order_line`."
+#: model:ir.model,name:base.model_res_bank
+#: view:res.bank:base.view_res_bank_form
+#: field:res.partner.bank,bank:0
+msgid "Bank"
msgstr ""
#. module: base
-#: field:ir.mail_server,smtp_debug:0
-msgid "Debugging"
+#: code:addons/base/res/res_company.py:175
+#: field:res.partner.bank,name:0
+#, python-format
+msgid "Bank Account"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_crm_helpdesk
-msgid "\n"
-"Helpdesk Management.\n"
-"====================\n"
-"\n"
-"Like records and processing of claims, Helpdesk and Support are good tools\n"
-"to trace your interventions. This menu is more adapted to oral communication,\n"
-"which is not necessarily related to a claim. Select a customer, add notes\n"
-"and categorize your interventions with a channel and a priority level.\n"
-" "
+#: view:res.partner.bank:base.view_partner_bank_form
+msgid "Bank Account Owner"
msgstr ""
#. module: base
-#: help:ir.actions.act_window,view_type:0
-msgid "View type: Tree type to use for the tree view, set to 'tree' for a hierarchical tree view, or 'form' for a regular list view"
+#: model:ir.model,name:base.model_res_partner_bank_type
+#: field:res.partner.bank,state:0
+#: view:res.partner.bank.type:base.view_partner_bank_type_form
+#: view:res.partner.bank.type:base.view_partner_bank_type_tree
+msgid "Bank Account Type"
msgstr ""
#. module: base
-#: sql_constraint:ir.ui.view_sc:0
-msgid "Shortcut for this menu already exists!"
+#: 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 ""
#. module: base
-#: view:ir.rule:0
-msgid "Groups (no group = global)"
+#: code:addons/base/res/res_company.py:175
+#: model:ir.actions.act_window,name:base.action_res_partner_bank_account_form
+#: model:ir.model,name:base.model_res_partner_bank
+#: model:ir.ui.menu,name:base.menu_action_res_partner_bank_form
+#: view:res.company:base.view_company_form
+#: field:res.company,bank_ids:0
+#: view:res.partner.bank:base.view_partner_bank_search
+#: view:res.partner.bank:base.view_partner_bank_tree
+#, python-format
+msgid "Bank Accounts"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Extra"
+#: field:res.bank,bic:0
+#: field:res.partner.bank,bank_bic:0
+msgid "Bank Identifier Code"
msgstr ""
#. module: base
-#: model:res.country,name:base.st
-msgid "Saint Tome (Sao Tome) and Principe"
+#: view:res.partner.bank:base.view_partner_bank_search
+#: field:res.partner.bank,bank_name:0
+msgid "Bank Name"
msgstr ""
#. module: base
-#: selection:res.partner,type:0
-msgid "Invoice"
+#: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions
+msgid "Bank Statement Extensions to Support e-banking"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_product
-msgid "\n"
-"This is the base module for managing products and pricelists in OpenERP.\n"
-"========================================================================\n"
-"\n"
-"Products support variants, different pricing methods, suppliers information,\n"
-"make to stock/order, different unit of measures, packaging and properties.\n"
-"\n"
-"Pricelists support:\n"
-"-------------------\n"
-" * Multiple-level of discount (by product, category, quantities)\n"
-" * Compute price based on different criteria:\n"
-" * Other pricelist\n"
-" * Cost price\n"
-" * List price\n"
-" * Supplier price\n"
-"\n"
-"Pricelists preferences by product and/or partners.\n"
-"\n"
-"Print product labels with barcode.\n"
-" "
+#: field:res.partner.bank.type.field,bank_type_id:0
+msgid "Bank Type"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_analytic_default
-msgid "\n"
-"Set default values for your analytic accounts.\n"
-"==============================================\n"
-"\n"
-"Allows to automatically select analytic accounts based on criterions:\n"
-"---------------------------------------------------------------------\n"
-" * Product\n"
-" * Partner\n"
-" * User\n"
-" * Company\n"
-" * Date\n"
-" "
+#: view:res.partner.bank:base.view_partner_bank_form
+msgid "Bank account"
+msgstr ""
+
+#. module: base
+#: view:res.partner.bank:base.view_partner_bank_search
+msgid "Bank accounts belonging to one of your companies"
+msgstr ""
+
+#. module: base
+#: help:res.company,bank_ids:0
+msgid "Bank accounts related to this company"
+msgstr ""
+
+#. module: base
+#: model:ir.model,name:base.model_res_partner_bank_type_field
+msgid "Bank type fields"
+msgstr ""
+
+#. module: base
+#: model:ir.actions.act_window,name:base.action_res_bank_form
+#: model:ir.ui.menu,name:base.menu_action_res_bank_form
+#: view:res.bank:base.view_res_bank_tree
+#: field:res.partner,bank_ids:0
+msgid "Banks"
+msgstr ""
+
+#. module: base
+#: help:res.partner,ean13:0
+msgid "BarCode"
msgstr ""
#. module: base
@@ -2318,2472 +4908,2383 @@ msgid "Barbados"
msgstr ""
#. module: base
-#: model:res.country,name:base.mg
-msgid "Madagascar"
+#: model:ir.module.module,shortdesc:base.module_hw_scanner
+msgid "Barcode Scanner Hardware Driver"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:126
+#: view:ir.model:base.view_model_search
+#: view:ir.model.fields:base.view_model_fields_search
+#: model:ir.module.category,name:base.module_category_base
+#: model:ir.module.module,shortdesc:base.module_base
+#: field:res.currency,base:0
+msgid "Base"
+msgstr ""
+
+#. module: base
+#: selection:ir.model.fields,state:0
+msgid "Base Field"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_web_kanban
+msgid "Base Kanban"
+msgstr ""
+
+#. module: base
+#: code:addons/base/res/res_lang.py:189
#, python-format
-msgid "The Object name must start with x_ and not contain any special character !"
+msgid "Base Language 'en_US' can not be deleted!"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_auth_oauth_signup
-msgid "Signup with OAuth2 Authentication"
+#: field:ir.actions.server,model_id:0
+msgid "Base Model"
msgstr ""
#. module: base
#: selection:ir.model,state:0
-msgid "Custom Object"
+msgid "Base Object"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_menu_admin
-#: view:ir.ui.menu:0
-#: field:ir.ui.menu,name:0
-msgid "Menu"
+#: model:ir.module.module,shortdesc:base.module_base_import
+msgid "Base import"
msgstr ""
#. module: base
-#: field:res.currency,rate:0
-msgid "Current Rate"
+#: model:ir.module.module,shortdesc:base.module_base_import_module
+msgid "Base import module"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Greek / Ελληνικά"
+#: help:ir.actions.server,model_id:0
+msgid "Base model on which the server action runs."
msgstr ""
#. module: base
-#: field:res.company,custom_footer:0
-msgid "Custom Footer"
+#: model:ir.module.module,description:base.module_website_partner
+msgid "Base module holding website-related stuff for partner model"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_sale_crm
-msgid "Opportunity to Quotation"
+#: selection:ir.ui.view,mode:0
+msgid "Base view"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_sale_analytic_plans
-msgid "\n"
-"The base module to manage analytic distribution and sales orders.\n"
-"=================================================================\n"
-"\n"
-"Using this module you will be able to link analytic accounts to sales orders.\n"
-" "
+#: selection:res.currency,position:0
+msgid "Before Amount"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_us
-msgid "\n"
-"United States - Chart of accounts.\n"
-"==================================\n"
-" "
+#: model:res.country,name:base.by
+msgid "Belarus"
msgstr ""
#. module: base
-#: field:ir.actions.act_url,target:0
-msgid "Action Target"
+#: model:res.country,name:base.be
+msgid "Belgium"
msgstr ""
#. module: base
-#: model:res.country,name:base.ai
-msgid "Anguilla"
+#: model:ir.module.module,shortdesc:base.module_l10n_be
+msgid "Belgium - Accounting"
msgstr ""
#. module: base
-#: model:ir.actions.report.xml,name:base.report_ir_model_overview
-msgid "Model Overview"
+#: model:ir.module.module,shortdesc:base.module_l10n_be_coda
+msgid "Belgium - Import Bank CODA Statements"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_product_margin
-msgid "Margins by Products"
+#: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll
+msgid "Belgium - Payroll"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_invoiced
-msgid "Invoicing"
+#: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll_account
+msgid "Belgium - Payroll with Accounting"
msgstr ""
#. module: base
-#: field:ir.ui.view_sc,name:0
-msgid "Shortcut Name"
+#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
+msgid "Belgium - Structured Communication"
msgstr ""
#. module: base
-#: field:res.partner,contact_address:0
-msgid "Complete Address"
+#: model:res.country,name:base.bz
+msgid "Belize"
msgstr ""
#. module: base
-#: help:ir.actions.act_window,limit:0
-msgid "Default limit for the list view"
+#: model:res.country,name:base.bj
+msgid "Benin"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_document
-msgid "\n"
-"This is a complete document management system.\n"
-"==============================================\n"
-" * User Authentication\n"
-" * Document Indexation:- .pptx and .docx files are not supported in Windows platform.\n"
-" * Dashboard for Document that includes:\n"
-" * New Files (list)\n"
-" * Files by Resource Type (graph)\n"
-" * Files by Partner (graph)\n"
-" * Files Size by Month (graph)\n"
-""
+#: model:res.country,name:base.bm
+msgid "Bermuda"
msgstr ""
#. module: base
-#: view:ir.actions.report.xml:0
-msgid "RML Report"
+#: model:res.country,name:base.bt
+msgid "Bhutan"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_translation_export
-msgid "Import / Export"
+#: model:ir.module.module,shortdesc:base.module_project_timesheet
+msgid "Bill Time on Tasks"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_sale
-msgid "\n"
-"Manage sales quotations and orders\n"
-"==================================\n"
-"\n"
-"This application allows you to manage your sales goals in an effective and efficient manner by keeping track of all sales orders and history.\n"
-"\n"
-"It handles the full sales workflow:\n"
-"\n"
-"* **Quotation** -> **Sales order** -> **Invoice**\n"
-"\n"
-"Preferences (only with Warehouse Management installed)\n"
-"------------------------------------------------------\n"
-"\n"
-"If you also installed the Warehouse Management, you can deal with the following preferences:\n"
-"\n"
-"* Shipping: Choice of delivery at once or partial delivery\n"
-"* Invoicing: choose how invoices will be paid\n"
-"* Incoterms: International Commercial terms\n"
-"\n"
-"You can choose flexible invoicing methods:\n"
-"\n"
-"* *On Demand*: Invoices are created manually from Sales Orders when needed\n"
-"* *On Delivery Order*: Invoices are generated from picking (delivery)\n"
-"* *Before Delivery*: A Draft invoice is created and must be paid before delivery\n"
-"\n"
-"\n"
-"The Dashboard for the Sales Manager will include\n"
-"------------------------------------------------\n"
-"* My Quotations\n"
-"* Monthly Turnover (Graph)\n"
-" "
+#: view:ir.attachment:base.view_attachment_search
+#: selection:ir.attachment,type:0
+#: selection:ir.property,type:0
+msgid "Binary"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,res_id:0
-#: field:ir.model.data,res_id:0
-#: field:ir.translation,res_id:0
-#: field:ir.values,res_id:0
-msgid "Record ID"
+#: help:ir.attachment,type:0
+msgid "Binary File or URL"
msgstr ""
#. module: base
-#: view:ir.filters:0
-msgid "My Filters"
+#: field:res.partner,birthdate:0
+msgid "Birthdate"
msgstr ""
#. module: base
-#: field:ir.actions.server,email:0
-msgid "Email Address"
+#: model:ir.module.module,shortdesc:base.module_website_blog
+msgid "Blogs"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_google_docs
-msgid "\n"
-"Module to attach a google document to any model.\n"
-"================================================\n"
-""
+#: model:res.country,name:base.bo
+msgid "Bolivia"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:333
-#, python-format
-msgid "Found multiple matches for field '%%(field)s' (%d matches)"
+#: model:ir.module.module,shortdesc:base.module_l10n_bo
+msgid "Bolivia Localization Chart Account"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.bq
+msgid "Bonaire, Sint Eustatius and Saba"
+msgstr ""
+
+#. module: base
+#: selection:ir.property,type:0
+msgid "Boolean"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.ba
+msgid "Bosnia-Herzegovina"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "French (BE) / Français (BE)"
+msgid "Bosnian / bosanski jezik"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_pe
-msgid "\n"
-"Peruvian accounting chart and tax localization. According the PCGE 2010.\n"
-"========================================================================\n"
-"\n"
-"Plan contable peruano e impuestos de acuerdo a disposiciones vigentes de la\n"
-"SUNAT 2011 (PCGE 2010).\n"
-"\n"
-" "
+#: model:res.country,name:base.bw
+msgid "Botswana"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-#: field:workflow.activity,action_id:0
-msgid "Server Action"
+#: model:res.country,name:base.bv
+msgid "Bouvet Island"
msgstr ""
#. module: base
-#: help:ir.actions.client,params:0
-msgid "Arguments sent to the client along withthe view tag"
+#: model:res.country,name:base.br
+msgid "Brazil"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_contacts
-msgid "Contacts, People and Companies"
+#: model:ir.module.module,shortdesc:base.module_l10n_br
+msgid "Brazilian - Accounting"
msgstr ""
#. module: base
-#: model:res.country,name:base.tt
-msgid "Trinidad and Tobago"
+#: model:ir.module.module,description:base.module_website_payment
+msgid "Bridge module for acquirers and website."
msgstr ""
#. module: base
-#: model:res.country,name:base.lv
-msgid "Latvia"
+#: model:res.country,name:base.io
+msgid "British Indian Ocean Territory"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Field Mappings"
+#: model:res.partner.category,name:base.res_partner_category_6
+msgid "Bronze"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "Export Translations"
+#: model:res.country,name:base.bn
+msgid "Brunei Darussalam"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_auth_crypt
-msgid "\n"
-"Ecrypted passwords\n"
-"==================\n"
-"\n"
-"Interaction with LDAP authentication:\n"
-"-------------------------------------\n"
-"This module is currently not compatible with the ``user_ldap`` module and\n"
-"will disable LDAP authentication completely if installed at the same time.\n"
-""
+#: model:ir.module.module,description:base.module_payment_buckaroo
+#: model:ir.module.module,shortdesc:base.module_payment_buckaroo
+msgid "Buckaroo Payment Acquirer"
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_hr_manager
-#: model:res.groups,name:base.group_sale_manager
-#: model:res.groups,name:base.group_tool_manager
-msgid "Manager"
+#: model:ir.module.module,shortdesc:base.module_account_budget
+msgid "Budgets Management"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:719
-#, python-format
-msgid "Sorry, you are not allowed to access this document."
+#: model:ir.module.module,summary:base.module_website
+msgid "Build Your Enterprise Website"
msgstr ""
#. module: base
-#: model:res.country,name:base.py
-msgid "Paraguay"
+#: model:res.country,name:base.bg
+msgid "Bulgaria"
msgstr ""
#. module: base
-#: model:res.country,name:base.fj
-msgid "Fiji"
+#: selection:base.language.install,lang:0
+msgid "Bulgarian / български език"
msgstr ""
#. module: base
-#: view:ir.actions.report.xml:0
-msgid "Report Xml"
+#: model:res.country,name:base.bf
+msgid "Burkina Faso"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_purchase
-msgid "\n"
-"Manage goods requirement by Purchase Orders easily\n"
-"==================================================\n"
-"\n"
-"Purchase management enables you to track your suppliers' price quotations and convert them into purchase orders if necessary.\n"
-"OpenERP has several methods of monitoring invoices and tracking the receipt of ordered goods. You can handle partial deliveries in OpenERP, so you can keep track of items that are still to be delivered in your orders, and you can issue reminders automatically.\n"
-"\n"
-"OpenERP’s replenishment management rules enable the system to generate draft purchase orders automatically, or you can configure it to run a lean process driven entirely by current production needs.\n"
-"\n"
-"Dashboard / Reports for Purchase Management will include:\n"
-"---------------------------------------------------------\n"
-"* Request for Quotations\n"
-"* Purchase Orders Waiting Approval \n"
-"* Monthly Purchases by Category\n"
-"* Receptions Analysis\n"
-"* Purchase Analysis\n"
-" "
+#: model:res.country,name:base.bi
+msgid "Burundi"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_act_window_close
-msgid "ir.actions.act_window_close"
+#: model:ir.module.module,shortdesc:base.module_crm
+msgid "CRM"
msgstr ""
#. module: base
-#: field:ir.server.object.lines,col1:0
-msgid "Destination"
+#: model:ir.module.module,shortdesc:base.module_gamification_sale_crm
+msgid "CRM Gamification"
msgstr ""
#. module: base
-#: model:res.country,name:base.lt
-msgid "Lithuania"
+#: selection:base.language.export,format:0
+msgid "CSV File"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_graph
-msgid "\n"
-"Graph Views for Web Client.\n"
-"===========================\n"
-"\n"
-" * Parse a <graph> view but allows changing dynamically the presentation\n"
-" * Graph Types: pie, lines, areas, bars, radar\n"
-" * Stacked/Not Stacked for areas and bars\n"
-" * Legends: top, inside (top/left), hidden\n"
-" * Features: download as PNG or CSV, browse data grid, switch orientation\n"
-" * Unlimited \"Group By\" levels (not stacked), two cross level analysis (stacked)\n"
-""
+#: view:base.language.export:base.wizard_lang_export
+msgid "CSV format: you may edit it directly with your favorite spreadsheet software,\n"
+" the rightmost column (value) contains the translations"
msgstr ""
#. module: base
-#: view:res.groups:0
-msgid "Inherited"
+#: selection:ir.actions.act_window.view,view_mode:0
+#: model:ir.module.module,shortdesc:base.module_calendar
+#: selection:ir.ui.view,type:0
+msgid "Calendar"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:146
+#: model:res.country,name:base.kh
+msgid "Cambodia, Kingdom of"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.cm
+msgid "Cameroon"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_crm_mass_mailing
+msgid "Campaign in Mass Mailing"
+msgstr ""
+
+#. module: base
+#: code:addons/base/ir/ir_fields.py:370
#, python-format
-msgid "yes"
+msgid "Can not create Many-To-One records indirectly, import the field separately"
msgstr ""
#. module: base
-#: field:ir.model.fields,serialization_field_id:0
-msgid "Serialization Field"
+#: code:addons/base/res/res_users.py:342
+#, python-format
+msgid "Can not remove root user!"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_be_hr_payroll
-msgid "\n"
-"Belgian Payroll Rules.\n"
-"======================\n"
-"\n"
-" * Employee Details\n"
-" * Employee Contracts\n"
-" * Passport based Contract\n"
-" * Allowances/Deductions\n"
-" * Allow to configure Basic/Gross/Net Salary\n"
-" * Employee Payslip\n"
-" * Monthly Payroll Register\n"
-" * Integrated with Holiday Management\n"
-" * Salary Maj, ONSS, Withholding Tax, Child Allowance, ...\n"
-" "
+#: code:addons/base/module/module.py:548
+#, python-format
+msgid "Can not upgrade module '%s'. It is not installed."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:174
+#: code:addons/base/ir/ir_model.py:439
#, python-format
-msgid "'%s' does not seem to be an integer for field '%%(field)s'"
+msgid "Can only rename one column at a time!"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_report_designer
-msgid "Lets you install various tools to simplify and enhance OpenERP's report creation."
+#: code:addons/base/ir/ir_ui_view.py:300
+#, python-format
+msgid "Can't toggle view %d with application %r"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%y - Year without century [00,99]."
+#: model:res.country,name:base.ca
+msgid "Canada"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_anglo_saxon
-msgid "\n"
-"This module supports the Anglo-Saxon accounting methodology by changing the accounting logic with stock transactions.\n"
-"=====================================================================================================================\n"
-"\n"
-"The difference between the Anglo-Saxon accounting countries and the Rhine \n"
-"(or also called Continental accounting) countries is the moment of taking \n"
-"the Cost of Goods Sold versus Cost of Sales. Anglo-Saxons accounting does \n"
-"take the cost when sales invoice is created, Continental accounting will \n"
-"take the cost at the moment the goods are shipped.\n"
-"\n"
-"This module will add this functionality by using a interim account, to \n"
-"store the value of shipped goods and will contra book this interim \n"
-"account when the invoice is created to transfer this amount to the \n"
-"debtor or creditor account. Secondly, price differences between actual \n"
-"purchase price and fixed product standard price are booked on a separate \n"
-"account."
+#: model:ir.module.module,shortdesc:base.module_l10n_ca
+msgid "Canada - Accounting"
msgstr ""
#. module: base
-#: model:res.country,name:base.si
-msgid "Slovenia"
+#: view:base.language.export:base.wizard_lang_export
+#: view:base.language.import:base.view_base_import_language
+#: view:base.language.install:base.view_base_language_install
+#: view:base.module.update:base.view_base_module_update
+#: view:base.module.upgrade:base.view_base_module_upgrade
+#: view:base.module.upgrade:base.view_base_module_upgrade_install
+#: view:base.update.translations:base.wizard_update_translations
+#: view:change.password.wizard:base.change_password_wizard_view
+#: view:res.config:base.res_config_view_base
+#: view:res.users:base.view_users_form_simple_modif
+#: view:wizard.ir.model.menu.create:base.view_model_menu_create
+msgid "Cancel"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_status
-msgid "\n"
-"This module handles state and stage. It is derived from the crm_base and crm_case classes from crm.\n"
-"===================================================================================================\n"
-"\n"
-" * ``base_state``: state management\n"
-" * ``base_stage``: stage management\n"
-" "
+#: view:ir.module.module:base.module_form
+msgid "Cancel Install"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_linkedin
-msgid "LinkedIn Integration"
+#: model:ir.module.module,shortdesc:base.module_account_cancel
+msgid "Cancel Journal Entries"
msgstr ""
#. module: base
-#: code:addons/orm.py:2020
-#: code:addons/orm.py:2031
+#: view:ir.module.module:base.module_form
+msgid "Cancel Uninstall"
+msgstr ""
+
+#. module: base
+#: view:ir.module.module:base.module_form
+msgid "Cancel Upgrade"
+msgstr ""
+
+#. module: base
+#: code:addons/base/res/res_config.py:436
#, python-format
-msgid "Invalid Object Architecture!"
+msgid "Cannot duplicate configuration!"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:366
-#: code:addons/base/ir/ir_model.py:368
-#: code:addons/base/ir/ir_model.py:398
-#: code:addons/base/ir/ir_model.py:412
-#: code:addons/base/ir/ir_model.py:414
-#: code:addons/base/ir/ir_model.py:416
-#: code:addons/base/ir/ir_model.py:423
-#: code:addons/base/ir/ir_model.py:426
-#: code:addons/base/module/wizard/base_update_translations.py:39
+#: code:addons/base/ir/ir_model.py:441
#, python-format
-msgid "Error!"
+msgid "Cannot rename column to %s, because that column already exists!"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_fr_rib
-msgid "French RIB Bank Details"
+#: model:res.country,name:base.cv
+msgid "Cape Verde"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%p - Equivalent of either AM or PM."
+#: selection:ir.model.fields,on_delete:0
+msgid "Cascade"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Iteration Actions"
+#: selection:base.language.install,lang:0
+msgid "Catalan / Català"
msgstr ""
#. module: base
-#: help:multi_company.default,company_id:0
-msgid "Company where the user is connected"
+#: view:ir.module.module:base.view_module_filter
+#: field:ir.module.module,category_id:0
+msgid "Category"
msgstr ""
#. module: base
-#: model:res.groups,comment:base.group_sale_manager
-msgid "the user will have an access to the sales configuration as well as statistic reports."
+#: field:res.partner.category,name:0
+msgid "Category Name"
msgstr ""
#. module: base
-#: model:res.country,name:base.nz
-msgid "New Zealand"
+#: model:res.country,name:base.ky
+msgid "Cayman Islands"
msgstr ""
#. module: base
-#: field:ir.exports.line,name:0
-#: view:ir.model.fields:0
-#: field:res.partner.bank.type.field,name:0
-msgid "Field Name"
+#: model:res.country,name:base.cf
+msgid "Central African Republic"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_country
-msgid "Display and manage the list of all countries that can be assigned to your partner records. You can create or delete countries to make sure the ones you are working on will be maintained."
+#: model:ir.module.module,shortdesc:base.module_website_certification
+msgid "Certified People"
msgstr ""
#. module: base
-#: model:res.country,name:base.nf
-msgid "Norfolk Island"
+#: model:res.country,name:base.td
+msgid "Chad"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Korean (KR) / 한국어 (KR)"
+#: model:ir.actions.act_window,name:base.action_res_users_my
+msgid "Change My Preferences"
msgstr ""
#. module: base
-#: help:ir.model.fields,model:0
-msgid "The technical name of the model this field belongs to"
+#: view:change.password.wizard:base.change_password_wizard_view
+#: model:ir.actions.act_window,name:base.change_password_wizard_action
+#: view:res.users:base.view_users_form
+msgid "Change Password"
msgstr ""
#. module: base
-#: field:ir.actions.server,action_id:0
-#: selection:ir.actions.server,state:0
-#: view:ir.values:0
-msgid "Client Action"
+#: model:ir.model,name:base.model_change_password_wizard
+msgid "Change Password Wizard"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_subscription
-msgid "\n"
-"Create recurring documents.\n"
-"===========================\n"
-"\n"
-"This module allows to create new documents and add subscriptions on that document.\n"
-"\n"
-"e.g. To have an invoice generated automatically periodically:\n"
-"-------------------------------------------------------------\n"
-" * Define a document type based on Invoice object\n"
-" * Define a subscription whose source document is the document defined as\n"
-" above. Specify the interval information and partner to be invoice.\n"
-" "
+#: model:ir.model,name:base.model_change_password_user
+msgid "Change Password Wizard User"
msgstr ""
#. module: base
-#: field:res.company,rml_header1:0
-msgid "Company Tagline"
+#: view:res.users:base.view_users_form_simple_modif
+msgid "Change password"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:668
-#: model:ir.model,name:base.model_ir_module_category
-#: field:ir.module.module,application:0
-#: field:res.groups,category_id:0
-#: view:res.users:0
-#, python-format
-msgid "Application"
+#: view:res.users:base.view_users_form
+msgid "Change the user password."
msgstr ""
#. module: base
-#: model:res.groups,comment:base.group_hr_manager
-msgid "the user will have an access to the human resources configuration as well as statistic reports."
+#: code:addons/base/res/res_partner.py:379
+#, python-format
+msgid "Changing the company of a contact should only be done if it was never correctly set. If an existing contact starts working for a new company then a new contact should be created under that new company. You can use the \"Discard\" button to abandon this change."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_pl
-msgid "\n"
-"This is the module to manage the accounting chart and taxes for Poland in OpenERP.\n"
-"==================================================================================\n"
-"\n"
-"To jest moduł do tworzenia wzorcowego planu kont i podstawowych ustawień do podatków\n"
-"VAT 0%, 7% i 22%. Moduł ustawia też konta do kupna i sprzedaży towarów zakładając,\n"
-"że wszystkie towary są w obrocie hurtowym.\n"
-" "
+#: code:addons/base/ir/ir_model.py:450
+#, python-format
+msgid "Changing the model of a field is forbidden!"
msgstr ""
#. module: base
-#: field:ir.actions.client,params_store:0
-msgid "Params storage"
+#: code:addons/base/ir/ir_model.py:396
+#, python-format
+msgid "Changing the storing system for field \"%s\" is not allowed."
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:526
+#: code:addons/base/ir/ir_model.py:453
#, python-format
-msgid "Can not upgrade module '%s'. It is not installed."
+msgid "Changing the type of a column is not yet supported. Please drop it and create it again!"
msgstr ""
#. module: base
-#: model:res.country,name:base.cu
-msgid "Cuba"
+#: selection:ir.property,type:0
+msgid "Char"
msgstr ""
#. module: base
-#: code:addons/report_sxw.py:441
-#, python-format
-msgid "Unknown report type: %s"
+#: model:ir.module.module,summary:base.module_website_livechat
+msgid "Chat With Your Website Visitors"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_hr_expense
-msgid "Expenses Validation, Invoicing"
+#: model:ir.module.module,shortdesc:base.module_account_check_writing
+msgid "Check Writing"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account
-msgid "\n"
-"Accounting Data for Belgian Payroll Rules.\n"
-"==========================================\n"
-" "
+#: help:res.partner,is_company:0
+msgid "Check if the contact is a company, otherwise it is a person"
msgstr ""
#. module: base
-#: model:res.country,name:base.am
-msgid "Armenia"
+#: help:res.partner,customer:0
+msgid "Check this box if this contact is a customer."
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_hr_evaluation
-msgid "Periodical Evaluations, Appraisals, Surveys"
+#: help:res.partner,supplier:0
+msgid "Check this box if this contact is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_property_form
-#: model:ir.ui.menu,name:base.menu_ir_property_form_all
-msgid "Configuration Parameters"
+#: help:res.partner,employee:0
+msgid "Check this box if this contact is an Employee."
msgstr ""
#. module: base
-#: constraint:ir.cron:0
-msgid "Invalid arguments"
+#: help:ir.actions.server,link_new_record:0
+msgid "Check this if you want to link the newly-created record to the current record on which the server action runs."
msgstr ""
#. module: base
-#: model:res.country,name:base.se
-msgid "Sweden"
+#: help:res.company,custom_footer:0
+msgid "Check this to define the report footer manually. Otherwise it will be filled in automatically."
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,report_file:0
-msgid "Report File"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Check to attach the newly created record to the record on which the server action runs."
msgstr ""
#. module: base
-#: selection:ir.actions.act_window.view,view_mode:0
-#: selection:ir.ui.view,type:0
-msgid "Gantt"
+#: field:ir.actions.server,child_ids:0
+msgid "Child Actions"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_in_hr_payroll
-msgid "\n"
-"Indian Payroll Salary Rules.\n"
-"============================\n"
-"\n"
-" -Configuration of hr_payroll for India localization\n"
-" -All main contributions rules for India payslip.\n"
-" * New payslip report\n"
-" * Employee Contracts\n"
-" * Allow to configure Basic / Gross / Net Salary\n"
-" * Employee PaySlip\n"
-" * Allowance / Deduction\n"
-" * Integrated with Holiday Management\n"
-" * Medical Allowance, Travel Allowance, Child Allowance, ...\n"
-" - Payroll Advice and Report\n"
-" - Yearly Salary by Head and Yearly Salary by Employee Report\n"
-" "
+#: field:ir.module.category,child_ids:0
+msgid "Child Applications"
msgstr ""
#. module: base
-#: code:addons/orm.py:3870
-#, python-format
-msgid "Missing document(s)"
+#: field:res.partner.category,child_ids:0
+msgid "Child Categories"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_partner_bank_type
-#: field:res.partner.bank,state:0
-#: view:res.partner.bank.type:0
-msgid "Bank Account Type"
+#: field:res.company,child_ids:0
+msgid "Child Companies"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_expense
-msgid "\n"
-"Manage expenses by Employees\n"
-"============================\n"
-"\n"
-"This application allows you to manage your employees' daily expenses. It gives you access to your employees’ fee notes and give you the right to complete and validate or refuse the notes. After validation it creates an invoice for the employee.\n"
-"Employee can encode their own expenses and the validation flow puts it automatically in the accounting after validation by managers.\n"
-"\n"
-"\n"
-"The whole flow is implemented as:\n"
-"---------------------------------\n"
-"* Draft expense\n"
-"* Confirmation of the sheet by the employee\n"
-"* Validation by his manager\n"
-"* Validation by the accountant and receipt creation\n"
-"\n"
-"This module also uses analytic accounting and is compatible with the invoice on timesheet module so that you are able to automatically re-invoice your customers' expenses if your work by project.\n"
-" "
+#: field:ir.ui.view,field_parent:0
+msgid "Child Field"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "For more details about translating OpenERP in your language, please refer to the"
+#: field:ir.ui.menu,child_id:0
+msgid "Child IDs"
msgstr ""
#. module: base
-#: field:res.partner,image:0
-msgid "Image"
+#: help:ir.actions.server,child_ids:0
+msgid "Child server actions that will be executed. Note that the last return returned action value will be used as global return value."
msgstr ""
#. module: base
-#: model:res.country,name:base.at
-msgid "Austria"
+#: model:res.country,name:base.cl
+msgid "Chile"
msgstr ""
#. module: base
-#: selection:ir.actions.act_window.view,view_mode:0
-#: model:ir.module.module,shortdesc:base.module_base_calendar
-#: model:ir.ui.menu,name:base.menu_calendar_configuration
-#: selection:ir.ui.view,type:0
-msgid "Calendar"
+#: model:ir.module.module,shortdesc:base.module_l10n_cl
+msgid "Chile Localization Chart Account"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_knowledge_management
-msgid "Knowledge"
+#: model:res.country,name:base.cn
+msgid "China"
msgstr ""
#. module: base
-#: field:workflow.activity,signal_send:0
-msgid "Signal (subflow.*)"
+#: selection:base.language.install,lang:0
+msgid "Chinese (CN) / 简体中文"
msgstr ""
#. module: base
-#: code:addons/orm.py:4684
-#, python-format
-msgid "Invalid \"order\" specified. A valid \"order\" specification is a comma-separated list of valid field names (optionally followed by asc/desc for the direction)"
+#: selection:base.language.install,lang:0
+msgid "Chinese (HK)"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_module_module_dependency
-msgid "Module dependency"
+#: selection:base.language.install,lang:0
+msgid "Chinese (TW) / 正體字"
msgstr ""
#. module: base
-#: model:res.country,name:base.bd
-msgid "Bangladesh"
+#: selection:ir.actions.server,use_write:0
+msgid "Choose and Update a record in the database"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_partner_title_contact
-msgid "Manage the contact titles you want to have available in your system and the way you want to print them in letters and other documents. Some example: Mr., Mrs. "
+#: selection:ir.actions.server,use_create:0
+msgid "Choose and copy a record in the database"
msgstr ""
#. module: base
-#: view:ir.model.access:0
-#: view:res.groups:0
-#: field:res.groups,model_access:0
-msgid "Access Controls"
+#: help:ir.mail_server,smtp_encryption:0
+msgid "Choose the connection encryption scheme:\n"
+"- None: SMTP sessions are done in cleartext.\n"
+"- TLS (STARTTLS): TLS encryption is requested at start of SMTP session (Recommended)\n"
+"- SSL/TLS: SMTP sessions are encrypted with SSL/TLS through a dedicated port (default: 465)"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:275
-#, python-format
-msgid "The Selection Options expression is not a valid Pythonic expression.Please provide an expression in the [('key','Label'), ...] format."
+#: model:res.country,name:base.cx
+msgid "Christmas Island"
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_survey_user
-msgid "Survey / User"
+#: view:res.bank:base.view_res_bank_form
+#: field:res.bank,city:0
+#: view:res.company:base.view_company_form
+#: field:res.company,city:0
+#: view:res.partner:base.view_partner_form
+#: field:res.partner,city:0
+#: view:res.partner.bank:base.view_partner_bank_form
+#: field:res.partner.bank,city:0
+msgid "City"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-#: field:ir.module.module,dependencies_id:0
-msgid "Dependencies"
+#: model:ir.module.module,shortdesc:base.module_claim_from_delivery
+msgid "Claim on Deliveries"
msgstr ""
#. module: base
-#: field:multi_company.default,company_id:0
-msgid "Main Company"
+#: model:ir.module.module,shortdesc:base.module_crm_claim
+msgid "Claims Management"
msgstr ""
#. module: base
-#: field:ir.ui.menu,web_icon_hover:0
-msgid "Web Icon File (hover)"
+#: view:base.module.update:base.view_base_module_update
+msgid "Click on Update below to start the process..."
msgstr ""
#. module: base
-#: help:res.currency,name:0
-msgid "Currency Code (ISO 4217)"
+#: view:res.company:base.view_company_form
+msgid "Click to set your company logo."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_contract
-msgid "Employee Contracts"
+#: view:ir.actions.server:base.view_server_action_form
+#: selection:ir.logging,type:0
+msgid "Client"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "If you use a formula type, use a python expression using the variable 'object'."
+#: field:ir.actions.server,action_id:0
+#: view:ir.values:base.values_view_search_action
+msgid "Client Action"
msgstr ""
#. module: base
-#: constraint:res.company:0
-msgid "Error! You can not create recursive companies."
+#: view:ir.values:base.values_view_search_action
+msgid "Client Actions"
msgstr ""
#. module: base
-#: field:res.partner,birthdate:0
-msgid "Birthdate"
+#: field:ir.actions.client,tag:0
+msgid "Client action tag"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_partner_title_contact
-#: model:ir.ui.menu,name:base.menu_partner_title_contact
-msgid "Contact Titles"
+#: view:base.language.export:base.wizard_lang_export
+#: view:base.language.install:base.view_base_language_install
+#: view:base.module.configuration:base.view_base_module_configuration_form
+#: view:base.module.update:base.view_base_module_update
+msgid "Close"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_product_manufacturer
-msgid "Products Manufacturers"
+#: model:res.country,name:base.cc
+msgid "Cocos (Keeling) Islands"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:237
-#, python-format
-msgid "SMTP-over-SSL mode unavailable"
+#: view:base.language.import:base.view_base_import_language
+#: field:ir.sequence.type,code:0
+#: selection:ir.translation,type:0
+#: field:res.partner.bank.type,code:0
+msgid "Code"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_survey
-#: model:ir.ui.menu,name:base.next_id_10
-msgid "Survey"
+#: model:ir.module.module,shortdesc:base.module_pad
+msgid "Collaborative Pads"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (DO) / Español (DO)"
+#: model:res.country,name:base.co
+msgid "Colombia"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_workflow_activity
-msgid "workflow.activity"
+#: model:ir.module.module,shortdesc:base.module_l10n_co
+msgid "Colombian - Accounting"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "Export Complete"
+#: field:res.partner,color:0
+msgid "Color Index"
+msgstr ""
+
+#. module: base
+#: help:ir.actions.act_window,view_mode:0
+msgid "Comma-separated list of allowed view modes, such as 'form', 'tree', 'calendar', etc. (Default: tree,form)"
msgstr ""
#. module: base
-#: help:ir.ui.view_sc,res_id:0
-msgid "Reference of the target resource, whose model/table depends on the 'Resource Name' field."
+#: field:res.groups,comment:0
+msgid "Comment"
msgstr ""
#. module: base
-#: field:ir.model.fields,select_level:0
-msgid "Searchable"
+#: view:ir.translation:base.view_translation_form
+msgid "Comments"
msgstr ""
#. module: base
-#: model:res.country,name:base.uy
-msgid "Uruguay"
+#: field:res.partner,commercial_partner_id:0
+msgid "Commercial Entity"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Finnish / Suomi"
+#: view:res.bank:base.view_res_bank_form
+msgid "Communication"
msgstr ""
#. module: base
-#: view:ir.config_parameter:0
-msgid "System Properties"
+#: model:res.country,name:base.km
+msgid "Comoros"
msgstr ""
#. module: base
-#: field:ir.sequence,prefix:0
-msgid "Prefix"
+#: model:ir.actions.act_window,name:base.action_res_company_form
+#: model:ir.actions.act_window,name:base.company_normal_action_tree
+#: model:ir.model,name:base.model_res_company
+#: model:ir.ui.menu,name:base.menu_action_res_company_form
+#: model:ir.ui.menu,name:base.menu_res_company_global
+#: view:res.company:base.view_company_tree
+#: view:res.partner:base.view_res_partner_filter
+#: field:res.users,company_ids:0
+msgid "Companies"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "German / Deutsch"
+#: view:ir.attachment:base.view_attachment_search
+#: field:ir.attachment,company_id:0
+#: field:ir.default,company_id:0
+#: field:ir.property,company_id:0
+#: field:ir.sequence,company_id:0
+#: field:ir.values,company_id:0
+#: view:res.company:base.view_company_form
+#: field:res.currency,company_id:0
+#: view:res.partner:base.view_partner_form
+#: view:res.partner:base.view_partner_simple_form
+#: view:res.partner:base.view_res_partner_filter
+#: field:res.partner,company_id:0
+#: field:res.partner.bank,company_id:0
+#: view:res.users:base.view_users_search
+#: field:res.users,company_id:0
+msgid "Company"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Fields Mapping"
+#: model:ir.actions.act_window,name:base.bank_account_update
+msgid "Company Bank Accounts"
msgstr ""
#. module: base
-#: model:res.partner.title,name:base.res_partner_title_sir
-#: model:res.partner.title,shortcut:base.res_partner_title_sir
-msgid "Sir"
+#: model:ir.actions.act_window,name:base.action_inventory_form
+#: model:ir.ui.menu,name:base.menu_action_inventory_form
+msgid "Company Defaults"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_ca
-msgid "\n"
-"This is the module to manage the English and French - Canadian accounting chart in OpenERP.\n"
-"===========================================================================================\n"
-"\n"
-"Canadian accounting charts and localizations.\n"
-" "
+#: field:res.company,name:0
+msgid "Company Name"
msgstr ""
#. module: base
-#: view:base.module.import:0
-msgid "Select module package to import (.zip file):"
+#: model:ir.actions.act_window,name:base.ir_property_form
+#: model:ir.ui.menu,name:base.menu_ir_property_form_all
+msgid "Company Properties"
msgstr ""
#. module: base
-#: view:ir.filters:0
-msgid "Personal"
+#: field:res.company,company_registry:0
+msgid "Company Registry"
msgstr ""
#. module: base
-#: field:base.language.export,modules:0
-msgid "Modules To Export"
+#: field:res.company,rml_header1:0
+msgid "Company Tagline"
msgstr ""
#. module: base
-#: model:res.country,name:base.mt
-msgid "Malta"
+#: help:multi_company.default,company_dest_id:0
+msgid "Company to store the current record"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:725
-#, python-format
-msgid "Only users with the following access level are currently allowed to do that"
+#: help:multi_company.default,company_id:0
+msgid "Company where the user is connected"
msgstr ""
#. module: base
-#: field:ir.actions.server,fields_lines:0
-msgid "Field Mappings."
+#: model:ir.actions.act_window,name:base.action_res_company_tree
+#: model:ir.ui.menu,name:base.menu_action_res_company_tree
+msgid "Company's Structure"
msgstr ""
#. module: base
-#: selection:res.request,priority:0
-msgid "High"
+#: field:res.partner,contact_address:0
+msgid "Complete Address"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_mrp
-msgid "\n"
-"Manage the Manufacturing process in OpenERP\n"
-"===========================================\n"
-"\n"
-"The manufacturing module allows you to cover planning, ordering, stocks and the manufacturing or assembly of products from raw materials and components. It handles the consumption and production of products according to a bill of materials and the necessary operations on machinery, tools or human resources according to routings.\n"
-"\n"
-"It supports complete integration and planification of stockable goods, consumables or services. Services are completely integrated with the rest of the software. For instance, you can set up a sub-contracting service in a bill of materials to automatically purchase on order the assembly of your production.\n"
-"\n"
-"Key Features\n"
-"------------\n"
-"* Make to Stock/Make to Order\n"
-"* Multi-level bill of materials, no limit\n"
-"* Multi-level routing, no limit\n"
-"* Routing and work center integrated with analytic accounting\n"
-"* Periodical scheduler computation \n"
-"* Allows to browse bills of materials in a complete structure that includes child and phantom bills of materials\n"
-"\n"
-"Dashboard / Reports for MRP will include:\n"
-"-----------------------------------------\n"
-"* Procurements in Exception (Graph)\n"
-"* Stock Value Variation (Graph)\n"
-"* Work Order Analysis\n"
-" "
+#: field:ir.model.data,complete_name:0
+msgid "Complete ID"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-#: field:ir.attachment,description:0
-#: field:ir.mail_server,name:0
-#: field:ir.module.category,description:0
-#: view:ir.module.module:0
-#: field:ir.module.module,description:0
-msgid "Description"
+#: field:ir.model.fields,complete_name:0
+msgid "Complete Name"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_workflow_instance_form
-#: model:ir.ui.menu,name:base.menu_workflow_instance
-msgid "Instances"
+#: model:res.partner.category,name:base.res_partner_category_9
+msgid "Components Buyer"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_purchase_requisition
-msgid "\n"
-"This module allows you to manage your Purchase Requisition.\n"
-"===========================================================\n"
-"\n"
-"When a purchase order is created, you now have the opportunity to save the\n"
-"related requisition. This new object will regroup and will allow you to easily\n"
-"keep track and order all your purchase orders.\n"
-""
+#: field:res.currency,accuracy:0
+msgid "Computational Accuracy"
msgstr ""
#. module: base
-#: help:ir.mail_server,smtp_host:0
-msgid "Hostname or IP of SMTP server"
+#: field:ir.actions.server,condition:0
+#: view:ir.values:base.values_view_form_defaults
+#: field:workflow.transition,condition:0
+msgid "Condition"
msgstr ""
#. module: base
-#: model:res.country,name:base.aq
-msgid "Antarctica"
+#: help:ir.actions.server,condition:0
+msgid "Condition verified before executing the server action. If it is not verified, the action will not be executed. The condition is a Python expression, like 'object.list_price > 5000'. A void condition is considered as always True. Help about python expression is given in the help tab."
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Persons"
+#: view:workflow.activity:base.view_workflow_activity_form
+msgid "Conditions"
msgstr ""
#. module: base
-#: view:base.language.import:0
-msgid "_Import"
+#: view:ir.actions.todo:base.config_wizard_step_view_form
+#: view:ir.actions.todo:base.ir_actions_todo_tree
+msgid "Config Wizard Steps"
msgstr ""
#. module: base
-#: field:res.users,action_id:0
-msgid "Home Action"
+#: model:ir.ui.menu,name:base.menu_base_config
+#: model:ir.ui.menu,name:base.menu_config
+#: model:ir.ui.menu,name:base.menu_definitions
+#: model:ir.ui.menu,name:base.menu_event_config
+#: model:ir.ui.menu,name:base.menu_marketing_config_association
+#: model:ir.ui.menu,name:base.menu_marketing_config_root
+#: model:ir.ui.menu,name:base.menu_reporting_config
+#: view:res.company:base.view_company_form
+#: view:res.config:base.res_config_view_base
+msgid "Configuration"
msgstr ""
#. module: base
-#: field:res.lang,grouping:0
-msgid "Separator Format"
+#: view:res.company:base.view_company_form
+msgid "Configuration (RML)"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_report_webkit
-msgid "Webkit Report Engine"
+#: view:res.config.installer:base.res_config_installer
+msgid "Configuration Installer"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.next_id_9
-msgid "Database Structure"
+#: model:ir.actions.act_window,name:base.act_ir_actions_todo_form
+#: model:ir.model,name:base.model_ir_actions_todo
+#: model:ir.ui.menu,name:base.menu_ir_actions_todo_form
+msgid "Configuration Wizards"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_partner_mass_mail
-msgid "Mass Mailing"
+#: view:base.module.upgrade:base.view_base_module_upgrade
+msgid "Confirm"
msgstr ""
#. module: base
-#: model:res.country,name:base.yt
-msgid "Mayotte"
+#: model:res.country,name:base.cg
+msgid "Congo"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_crm_todo
-msgid "Tasks on CRM"
+#: model:res.country,name:base.cd
+msgid "Congo, Democratic Republic of the"
msgstr ""
#. module: base
-#: help:ir.model.fields,relation_field:0
-msgid "For one2many fields, the field on the target model that implement the opposite many2one relationship"
+#: model:ir.module.module,summary:base.module_hw_proxy
+msgid "Connect the Web Client to Hardware Peripherals"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Interaction between rules"
+#: view:ir.mail_server:base.ir_mail_server_form
+msgid "Connection Information"
msgstr ""
#. module: base
-#: field:res.company,rml_footer:0
-#: field:res.company,rml_footer_readonly:0
-msgid "Report Footer"
+#: field:ir.mail_server,smtp_encryption:0
+msgid "Connection Security"
msgstr ""
#. module: base
-#: selection:res.lang,direction:0
-msgid "Right-to-Left"
+#: code:addons/base/ir/ir_mail_server.py:217
+#, python-format
+msgid "Connection Test Failed!"
msgstr ""
#. module: base
-#: model:res.country,name:base.sx
-msgid "Sint Maarten (Dutch part)"
+#: code:addons/base/ir/ir_mail_server.py:224
+#, python-format
+msgid "Connection Test Succeeded!"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-#: model:ir.actions.act_window,name:base.actions_ir_filters_view
-#: view:ir.filters:0
-#: model:ir.model,name:base.model_ir_filters
-msgid "Filters"
+#: field:ir.model.constraint,name:0
+#: selection:ir.translation,type:0
+msgid "Constraint"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_cron_act
-#: view:ir.cron:0
-#: model:ir.ui.menu,name:base.menu_ir_cron_act
-msgid "Scheduled Actions"
+#: field:ir.model.constraint,type:0
+msgid "Constraint Type"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_reporting
-#: model:ir.ui.menu,name:base.menu_lunch_reporting
-#: model:ir.ui.menu,name:base.menu_reporting
-msgid "Reporting"
+#: sql_constraint:ir.model.constraint:0
+msgid "Constraints with the same name are unique per module."
msgstr ""
#. module: base
-#: field:res.partner,title:0
-#: field:res.partner.title,name:0
-msgid "Title"
+#: model:res.partner.category,name:base.res_partner_category_8
+msgid "Consultancy Services"
msgstr ""
#. module: base
-#: help:ir.property,res_id:0
-msgid "If not set, acts as a default value for new resources"
+#: view:res.partner:base.view_partner_form
+#: view:res.partner:base.view_partner_simple_form
+#: selection:res.partner,type:0
+#: selection:res.partner.title,domain:0
+msgid "Contact"
msgstr ""
#. module: base
-#: code:addons/orm.py:4245
-#, python-format
-msgid "Recursivity Detected."
+#: model:res.groups,name:base.group_partner_manager
+msgid "Contact Creation"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_et
-msgid "Ethiopia - Accounting"
+#: model:ir.module.module,shortdesc:base.module_website_crm
+msgid "Contact Form"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:366
-#, python-format
-msgid "Recursion error in modules dependencies !"
+#: field:res.partner,ref:0
+msgid "Contact Reference"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_analytic_user_function
-msgid "\n"
-"This module allows you to define what is the default function of a specific user on a given account.\n"
-"====================================================================================================\n"
-"\n"
-"This is mostly used when a user encodes his timesheet: the values are retrieved\n"
-"and the fields are auto-filled. But the possibility to change these values is\n"
-"still available.\n"
-"\n"
-"Obviously if no data has been recorded for the current account, the default\n"
-"value is given as usual by the employee data so that this module is perfectly\n"
-"compatible with older configurations.\n"
-"\n"
-" "
+#: model:ir.actions.act_window,name:base.action_partner_title_contact
+#: model:ir.ui.menu,name:base.menu_partner_title_contact
+msgid "Contact Titles"
msgstr ""
#. module: base
-#: view:ir.model:0
-msgid "Create a Menu"
+#: view:res.partner:base.view_partner_form
+#: view:res.partner:base.view_partner_tree
+#: field:res.partner,child_ids:0
+msgid "Contacts"
msgstr ""
#. module: base
-#: model:res.country,name:base.tg
-msgid "Togo"
+#: model:ir.module.module,summary:base.module_contacts
+msgid "Contacts, People and Companies"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,res_model:0
-#: field:ir.actions.client,res_model:0
-msgid "Destination Model"
+#: field:ir.filters,context:0
+msgid "Context"
msgstr ""
#. module: base
-#: selection:ir.sequence,implementation:0
-msgid "Standard"
+#: field:ir.actions.act_window,context:0
+#: field:ir.actions.client,context:0
+msgid "Context Value"
msgstr ""
#. module: base
-#: model:res.country,name:base.ru
-msgid "Russian Federation"
+#: help:ir.actions.act_window,context:0
+#: help:ir.actions.client,context:0
+msgid "Context dictionary as Python expression, empty by default (Default: {})"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Urdu / اردو"
+#: model:ir.module.module,shortdesc:base.module_account_analytic_analysis
+msgid "Contracts Management"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:732
-#: code:addons/orm.py:3566
-#: code:addons/orm.py:3859
-#: code:addons/orm.py:3901
-#, python-format
-msgid "Access Denied"
+#: model:ir.module.module,shortdesc:base.module_analytic_contract_hr_expense
+msgid "Contracts Management: hr_expense link"
msgstr ""
#. module: base
-#: field:res.company,name:0
-msgid "Company Name"
+#: field:ir.module.module,contributors:0
+msgid "Contributors"
+msgstr ""
+
+#. module: base
+#: selection:ir.actions.report.xml,report_type:0
+msgid "Controller"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.ck
+msgid "Cook Islands"
msgstr ""
#. module: base
-#: code:addons/orm.py:2807
+#: selection:ir.actions.server,use_create:0
+msgid "Copy the current record"
+msgstr ""
+
+#. module: base
+#: model:res.partner.title,name:base.res_partner_title_pvt_ltd
+#: model:res.partner.title,shortcut:base.res_partner_title_pvt_ltd
+msgid "Corp."
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.cr
+msgid "Costa Rica"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_l10n_cr
+msgid "Costa Rica - Accounting"
+msgstr ""
+
+#. module: base
+#: code:addons/base/res/res_partner.py:630
#, python-format
-msgid "Invalid value for reference field \"%s.%s\" (last part must be a non-zero integer): \"%s\""
+msgid "Couldn't create contact without email address!"
msgstr ""
#. module: base
#: model:ir.actions.act_window,name:base.action_country
#: model:ir.ui.menu,name:base.menu_country_partner
+#: field:res.country.group,country_ids:0
msgid "Countries"
msgstr ""
#. module: base
-#: selection:ir.translation,type:0
-msgid "RML (deprecated - use Report)"
+#: model:ir.model,name:base.model_res_country
+#: view:res.bank:base.view_res_bank_form
+#: field:res.bank,country:0
+#: view:res.company:base.view_company_form
+#: field:res.company,country_id:0
+#: view:res.country:base.view_country_form
+#: view:res.country:base.view_country_tree
+#: field:res.country.state,country_id:0
+#: view:res.partner:base.view_partner_form
+#: view:res.partner:base.view_res_partner_filter
+#: field:res.partner,country_id:0
+#: view:res.partner.bank:base.view_partner_bank_form
+#: field:res.partner.bank,country_id:0
+msgid "Country"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_fr_hr_payroll
-msgid "\n"
-"French Payroll Rules.\n"
-"=====================\n"
-"\n"
-" - Configuration of hr_payroll for French localization\n"
-" - All main contributions rules for French payslip, for 'cadre' and 'non-cadre'\n"
-" - New payslip report\n"
-"\n"
-"TODO:\n"
-"-----\n"
-" - Integration with holidays module for deduction and allowance\n"
-" - Integration with hr_payroll_account for the automatic account_move_line\n"
-" creation from the payslip\n"
-" - Continue to integrate the contribution. Only the main contribution are\n"
-" currently implemented\n"
-" - Remake the report under webkit\n"
-" - The payslip.line with appears_in_payslip = False should appears in the\n"
-" payslip interface, but not in the payslip report\n"
-" "
+#: field:res.country,code:0
+msgid "Country Code"
msgstr ""
#. module: base
-#: model:res.country,name:base.pm
-msgid "Saint Pierre and Miquelon"
+#: model:ir.actions.act_window,name:base.action_country_group
+#: model:ir.model,name:base.model_res_country_group
+#: model:ir.ui.menu,name:base.menu_country_group
+#: view:res.country.group:base.view_country_group_form
+#: view:res.country.group:base.view_country_group_tree
+msgid "Country Group"
msgstr ""
#. module: base
-#: view:ir.actions.todo:0
-msgid "Search Actions"
+#: field:res.country,name:0
+msgid "Country Name"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_calendar
-msgid "\n"
-"This is a full-featured calendar system.\n"
-"========================================\n"
-"\n"
-"It supports:\n"
-"------------\n"
-" - Calendar of events\n"
-" - Recurring events\n"
-"\n"
-"If you need to manage your meetings, you should install the CRM module.\n"
-" "
+#: model:ir.model,name:base.model_res_country_state
+msgid "Country state"
msgstr ""
#. module: base
-#: model:res.country,name:base.je
-msgid "Jersey"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Create / Write / Copy"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_translation
-msgid "ir.translation"
+#: field:ir.model.access,perm_create:0
+msgid "Create Access"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "12. %w ==> 5 ( Friday is the 6th day)"
+#: view:ir.rule:base.view_rule_search
+msgid "Create Access Right"
msgstr ""
#. module: base
-#: constraint:res.partner.category:0
-msgid "Error ! You can not create recursive categories."
+#: field:ir.logging,create_date:0
+#: field:ir.ui.view,create_date:0
+#: field:res.partner,create_date:0
+#: field:res.users,create_date:0
+msgid "Create Date"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%x - Appropriate date representation."
+#: model:ir.module.module,summary:base.module_crm_project_issue
+msgid "Create Issues from Leads"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Tag"
+#: model:ir.module.module,summary:base.module_website_crm
+msgid "Create Leads From Contact Form"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%d - Day of the month [01,31]."
+#: model:ir.actions.act_window,name:base.act_menu_create
+#: view:wizard.ir.model.menu.create:base.view_model_menu_create
+msgid "Create Menu"
msgstr ""
#. module: base
-#: model:res.country,name:base.tj
-msgid "Tajikistan"
+#: model:ir.module.module,shortdesc:base.module_sale_service
+msgid "Create Tasks on SO"
msgstr ""
#. module: base
-#: selection:ir.module.module,license:0
-msgid "GPL-2 or later version"
+#: view:wizard.ir.model.menu.create:base.view_model_menu_create
+msgid "Create _Menu"
msgstr ""
#. module: base
-#: selection:workflow.activity,kind:0
-msgid "Stop All"
+#: view:ir.model:base.view_model_form
+msgid "Create a Menu"
msgstr ""
#. module: base
-#: field:res.company,paper_format:0
-msgid "Paper Format"
+#: selection:ir.actions.server,use_create:0
+msgid "Create a new record in another model"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:645
-#, python-format
-msgid "Can not create the module file:\n"
-" %s"
+#: selection:ir.actions.server,use_create:0
+msgid "Create a new record in the Base Model"
msgstr ""
#. module: base
-#: model:res.country,name:base.sk
-msgid "Slovakia"
+#: model:ir.actions.act_window,help:base.action_res_company_form
+msgid "Create and manage the companies that will be managed by Odoo from here. Shops or subsidiaries can be created and maintained from here."
msgstr ""
#. module: base
-#: model:res.country,name:base.nr
-msgid "Nauru"
+#: model:ir.actions.act_window,help:base.action_res_users
+msgid "Create and manage users that will connect to the system. Users can be deactivated should there be a period of time during which they will/should not connect to the system. You can assign them groups in order to give them specific access to the applications they need to use in the system."
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:166
-#, python-format
-msgid "Reg"
+#: model:ir.module.module,summary:base.module_survey
+msgid "Create surveys, collect answers and print statistics"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_property
-msgid "ir.property"
+#: field:ir.actions.server,crud_model_name:0
+msgid "Create/Write Target Model Name"
msgstr ""
#. module: base
-#: selection:ir.actions.act_window,view_type:0
-#: selection:ir.actions.act_window.view,view_mode:0
-#: view:ir.ui.view:0
-#: selection:ir.ui.view,type:0
-msgid "Form"
+#: view:ir.module.module:base.module_form
+msgid "Created Menus"
msgstr ""
#. module: base
-#: model:res.country,name:base.pf
-msgid "Polynesia (French)"
+#: view:ir.module.module:base.module_form
+msgid "Created Views"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_it
-msgid "\n"
-"Piano dei conti italiano di un'impresa generica.\n"
-"================================================\n"
-"\n"
-"Italian accounting chart and localization.\n"
-" "
+#: field:base.language.export,create_uid:0
+#: field:base.language.import,create_uid:0
+#: field:base.language.install,create_uid:0
+#: field:base.module.configuration,create_uid:0
+#: field:base.module.update,create_uid:0
+#: field:base.module.upgrade,create_uid:0
+#: field:base.update.translations,create_uid:0
+#: field:change.password.user,create_uid:0
+#: field:change.password.wizard,create_uid:0
+#: field:ir.actions.act_url,create_uid:0
+#: field:ir.actions.act_window,create_uid:0
+#: field:ir.actions.act_window.view,create_uid:0
+#: field:ir.actions.act_window_close,create_uid:0
+#: field:ir.actions.actions,create_uid:0
+#: field:ir.actions.client,create_uid:0
+#: field:ir.actions.report.xml,create_uid:0
+#: field:ir.actions.server,create_uid:0
+#: field:ir.actions.todo,create_uid:0
+#: field:ir.config_parameter,create_uid:0
+#: field:ir.cron,create_uid:0
+#: field:ir.default,create_uid:0
+#: field:ir.exports,create_uid:0
+#: field:ir.exports.line,create_uid:0
+#: field:ir.fields.converter,create_uid:0
+#: field:ir.filters,create_uid:0
+#: field:ir.mail_server,create_uid:0
+#: field:ir.model,create_uid:0
+#: field:ir.model.access,create_uid:0
+#: field:ir.model.constraint,create_uid:0
+#: field:ir.model.data,create_uid:0
+#: field:ir.model.fields,create_uid:0
+#: field:ir.model.relation,create_uid:0
+#: field:ir.module.category,create_uid:0
+#: field:ir.module.module,create_uid:0
+#: field:ir.module.module.dependency,create_uid:0
+#: field:ir.property,create_uid:0
+#: field:ir.rule,create_uid:0
+#: field:ir.sequence,create_uid:0
+#: field:ir.sequence.type,create_uid:0
+#: field:ir.server.object.lines,create_uid:0
+#: field:ir.ui.menu,create_uid:0
+#: field:ir.ui.view,create_uid:0
+#: field:ir.ui.view.custom,create_uid:0
+#: field:ir.values,create_uid:0
+#: field:multi_company.default,create_uid:0
+#: field:osv_memory.autovacuum,create_uid:0
+#: field:res.bank,create_uid:0
+#: field:res.company,create_uid:0
+#: field:res.config,create_uid:0
+#: field:res.config.installer,create_uid:0
+#: field:res.config.settings,create_uid:0
+#: field:res.country,create_uid:0
+#: field:res.country.group,create_uid:0
+#: field:res.country.state,create_uid:0
+#: field:res.currency,create_uid:0
+#: field:res.currency.rate,create_uid:0
+#: field:res.font,create_uid:0
+#: field:res.groups,create_uid:0
+#: field:res.lang,create_uid:0
+#: field:res.partner,create_uid:0
+#: field:res.partner.bank,create_uid:0
+#: field:res.partner.bank.type,create_uid:0
+#: field:res.partner.bank.type.field,create_uid:0
+#: field:res.partner.category,create_uid:0
+#: field:res.partner.title,create_uid:0
+#: field:res.request.link,create_uid:0
+#: field:res.users,create_uid:0
+#: field:wizard.ir.model.menu.create,create_uid:0
+#: field:workflow,create_uid:0
+#: field:workflow.activity,create_uid:0
+#: field:workflow.transition,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: base
+#: field:base.language.export,create_date:0
+#: field:base.language.import,create_date:0
+#: field:base.language.install,create_date:0
+#: field:base.module.configuration,create_date:0
+#: field:base.module.update,create_date:0
+#: field:base.module.upgrade,create_date:0
+#: field:base.update.translations,create_date:0
+#: field:change.password.user,create_date:0
+#: field:change.password.wizard,create_date:0
+#: field:ir.actions.act_url,create_date:0
+#: field:ir.actions.act_window,create_date:0
+#: field:ir.actions.act_window.view,create_date:0
+#: field:ir.actions.act_window_close,create_date:0
+#: field:ir.actions.actions,create_date:0
+#: field:ir.actions.client,create_date:0
+#: field:ir.actions.report.xml,create_date:0
+#: field:ir.actions.server,create_date:0
+#: field:ir.actions.todo,create_date:0
+#: field:ir.config_parameter,create_date:0
+#: field:ir.cron,create_date:0
+#: field:ir.default,create_date:0
+#: field:ir.exports,create_date:0
+#: field:ir.exports.line,create_date:0
+#: field:ir.fields.converter,create_date:0
+#: field:ir.filters,create_date:0
+#: field:ir.mail_server,create_date:0
+#: field:ir.model,create_date:0
+#: field:ir.model.access,create_date:0
+#: field:ir.model.constraint,create_date:0
+#: field:ir.model.data,create_date:0
+#: field:ir.model.fields,create_date:0
+#: field:ir.model.relation,create_date:0
+#: field:ir.module.category,create_date:0
+#: field:ir.module.module,create_date:0
+#: field:ir.module.module.dependency,create_date:0
+#: field:ir.property,create_date:0
+#: field:ir.rule,create_date:0
+#: field:ir.sequence,create_date:0
+#: field:ir.sequence.type,create_date:0
+#: field:ir.server.object.lines,create_date:0
+#: field:ir.ui.menu,create_date:0
+#: field:ir.ui.view.custom,create_date:0
+#: field:ir.values,create_date:0
+#: field:multi_company.default,create_date:0
+#: field:osv_memory.autovacuum,create_date:0
+#: field:res.bank,create_date:0
+#: field:res.company,create_date:0
+#: field:res.config,create_date:0
+#: field:res.config.installer,create_date:0
+#: field:res.config.settings,create_date:0
+#: field:res.country,create_date:0
+#: field:res.country.group,create_date:0
+#: field:res.country.state,create_date:0
+#: field:res.currency,create_date:0
+#: field:res.currency.rate,create_date:0
+#: field:res.font,create_date:0
+#: field:res.groups,create_date:0
+#: field:res.lang,create_date:0
+#: field:res.partner.bank,create_date:0
+#: field:res.partner.bank.type,create_date:0
+#: field:res.partner.bank.type.field,create_date:0
+#: field:res.partner.category,create_date:0
+#: field:res.partner.title,create_date:0
+#: field:res.request.link,create_date:0
+#: field:wizard.ir.model.menu.create,create_date:0
+#: field:workflow,create_date:0
+#: field:workflow.activity,create_date:0
+#: field:workflow.transition,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: base
+#: view:ir.attachment:base.view_attachment_form
+msgid "Creation"
msgstr ""
#. module: base
-#: model:res.country,name:base.me
-msgid "Montenegro"
+#: view:ir.attachment:base.view_attachment_search
+msgid "Creation Month"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_fetchmail
-msgid "Email Gateway"
+#: field:ir.actions.server,use_create:0
+msgid "Creation Policy"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:465
-#, python-format
-msgid "Mail delivery failed via SMTP server '%s'.\n"
-"%s: %s"
+#: field:res.partner,credit_limit:0
+msgid "Credit Limit"
msgstr ""
#. module: base
-#: model:res.country,name:base.tk
-msgid "Tokelau"
+#: model:res.country,name:base.hr
+msgid "Croatia"
msgstr ""
#. module: base
-#: view:ir.cron:0
-#: view:ir.module.module:0
-msgid "Technical Data"
+#: model:ir.module.module,shortdesc:base.module_l10n_hr
+msgid "Croatia - RRIF 2012 COA"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_co
-msgid "\n"
-"Chart of account for Colombia\n"
-"=============================\n"
-"\n"
-"Source of this chart of account is here_.\n"
-"\n"
-"All the documentation available in this website is embeded in this module, to\n"
-"be sure when you open OpenERP it has all necesary information to manage \n"
-"accounting en Colombia.\n"
-"\n"
-"The law that enable this chart of account as valid for this country is \n"
-"available in this other link_.\n"
-"\n"
-"This module has the intention to put available out of the box the chart of \n"
-"account for Colombia in Openerp.\n"
-"\n"
-"We recommend install the module account_anglo_sxon to be able to have the cost\n"
-"accounting correctly setted in out invoices.\n"
-"\n"
-"After installing this module, the Configuration wizard for accounting is launched.\n"
-" * We have the account templates which can be helpful to generate Charts of Accounts.\n"
-" * On that particular wizard, you will be asked to pass the name of the company,\n"
-" the chart template to follow, the no. of digits to generate, the code for your\n"
-" account and bank account, currency to create journals.\n"
-"\n"
-".. _here: http://puc.com.co/\n"
-".. _link: http://puc.com.co/normatividad/\n"
-" "
+#: selection:base.language.install,lang:0
+msgid "Croatian / hrvatski jezik"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_bank_statement_extensions
-msgid "\n"
-"Module that extends the standard account_bank_statement_line object for improved e-banking support.\n"
-"===================================================================================================\n"
-"\n"
-"This module adds:\n"
-"-----------------\n"
-" - valuta date\n"
-" - batch payments\n"
-" - traceability of changes to bank statement lines\n"
-" - bank statement line views\n"
-" - bank statements balances report\n"
-" - performance improvements for digital import of bank statement (via \n"
-" 'ebanking_import' context flag)\n"
-" - name_search on res.partner.bank enhanced to allow search on bank \n"
-" and iban account numbers\n"
-" "
+#: model:res.country,name:base.cu
+msgid "Cuba"
msgstr ""
#. module: base
-#: selection:ir.module.module,state:0
-#: selection:ir.module.module.dependency,state:0
-msgid "To be upgraded"
+#: model:res.country,name:base.cw
+msgid "Curaçao"
msgstr ""
#. module: base
-#: model:res.country,name:base.ly
-msgid "Libya"
+#: model:ir.actions.act_window,name:base.action_currency_form
+#: model:ir.ui.menu,name:base.menu_action_currency_form
+#: view:res.currency:base.view_currency_search
+#: view:res.currency:base.view_currency_tree
+msgid "Currencies"
msgstr ""
#. module: base
-#: model:res.country,name:base.cf
-msgid "Central African Republic"
+#: model:ir.model,name:base.model_res_currency
+#: field:res.company,currency_id:0
+#: field:res.company,currency_ids:0
+#: field:res.country,currency_id:0
+#: view:res.currency:base.view_currency_form
+#: view:res.currency:base.view_currency_search
+#: field:res.currency,name:0
+#: field:res.currency.rate,currency_id:0
+msgid "Currency"
msgstr ""
#. module: base
-#: model:res.country,name:base.li
-msgid "Liechtenstein"
+#: help:res.currency,name:0
+msgid "Currency Code (ISO 4217)"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_project_issue_sheet
-msgid "Timesheet on Issues"
+#: model:ir.model,name:base.model_res_currency_rate
+msgid "Currency Rate"
msgstr ""
#. module: base
-#: model:res.partner.title,name:base.res_partner_title_ltd
-msgid "Ltd"
+#: help:res.currency,symbol:0
+msgid "Currency sign, to be used when printing amounts."
msgstr ""
#. module: base
-#: model:ir.actions.server,name:base.action_run_ir_action_todo
-msgid "Run Remaining Action Todo"
+#: field:res.currency,rate:0
+#: field:res.currency,rate_silent:0
+msgid "Current Rate"
msgstr ""
#. module: base
-#: field:res.partner,ean13:0
-msgid "EAN13"
+#: selection:ir.actions.act_window,target:0
+msgid "Current Window"
msgstr ""
#. module: base
-#: code:addons/orm.py:2246
-#, python-format
-msgid "Invalid Architecture!"
+#: view:ir.sequence:base.sequence_view
+msgid "Current Year with Century: %(year)s"
msgstr ""
#. module: base
-#: model:res.country,name:base.pt
-msgid "Portugal"
+#: view:ir.sequence:base.sequence_view
+msgid "Current Year without Century: %(y)s"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_share
-msgid "Share any Document"
+#: view:ir.model:base.view_model_search
+#: view:ir.model.fields:base.view_model_fields_search
+msgid "Custom"
msgstr ""
#. module: base
-#: field:workflow.transition,group_id:0
-msgid "Group Required"
+#: selection:ir.model.fields,state:0
+msgid "Custom Field"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "6. %d, %m ==> 05, 12"
+#: field:res.company,custom_footer:0
+msgid "Custom Footer"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_it
-msgid "Italy - Accounting"
+#: selection:ir.model,state:0
+msgid "Custom Object"
msgstr ""
#. module: base
-#: field:ir.actions.act_url,help:0
-#: field:ir.actions.act_window,help:0
-#: field:ir.actions.act_window_close,help:0
-#: field:ir.actions.actions,help:0
-#: field:ir.actions.client,help:0
-#: field:ir.actions.report.xml,help:0
-#: field:ir.actions.server,help:0
-#: field:ir.actions.wizard,help:0
-msgid "Action description"
+#: field:ir.actions.report.xml,auto:0
+msgid "Custom Python Parser"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_ma
-msgid "\n"
-"This is the base module to manage the accounting chart for Maroc.\n"
-"=================================================================\n"
-"\n"
-"Ce Module charge le modèle du plan de comptes standard Marocain et permet de\n"
-"générer les états comptables aux normes marocaines (Bilan, CPC (comptes de\n"
-"produits et charges), balance générale à 6 colonnes, Grand livre cumulatif...).\n"
-"L'intégration comptable a été validé avec l'aide du Cabinet d'expertise comptable\n"
-"Seddik au cours du troisième trimestre 2010."
+#: model:ir.ui.menu,name:base.menu_administration_shortcut
+msgid "Custom Shortcuts"
msgstr ""
#. module: base
-#: help:ir.module.module,auto_install:0
-msgid "An auto-installable module is automatically installed by the system when all its dependencies are satisfied. If the module has no dependency, it is always installed."
+#: code:addons/base/ir/ir_model.py:361
+#, python-format
+msgid "Custom fields must have a name that starts with 'x_' !"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.res_lang_act_window
-#: model:ir.model,name:base.model_res_lang
-#: model:ir.ui.menu,name:base.menu_res_lang_act_window
-#: view:res.lang:0
-msgid "Languages"
+#: field:res.partner,customer:0
+msgid "Customer"
msgstr ""
#. module: base
-#: selection:workflow.activity,join_mode:0
-#: selection:workflow.activity,split_mode:0
-msgid "Xor"
+#: view:res.partner:base.view_res_partner_filter
+msgid "Customer Partners"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_localization_account_charts
-msgid "Account Charts"
+#: model:ir.module.module,shortdesc:base.module_crm_profiling
+msgid "Customer Profiling"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_website_customer
+msgid "Customer References"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_event_main
-msgid "Events Organization"
+#: model:ir.module.category,name:base.module_category_customer_relationship_management
+msgid "Customer Relationship Management"
msgstr ""
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_customer_form
#: model:ir.actions.act_window,name:base.action_partner_form
#: model:ir.ui.menu,name:base.menu_partner_form
-#: view:res.partner:0
+#: view:res.partner:base.view_res_partner_filter
msgid "Customers"
msgstr ""
#. module: base
-#: model:res.country,name:base.au
-msgid "Australia"
+#: model:ir.actions.act_window,name:base.action_ui_view_custom
+#: model:ir.ui.menu,name:base.menu_action_ui_view_custom
+#: view:ir.ui.view.custom:base.view_view_custom_form
+#: view:ir.ui.view.custom:base.view_view_custom_search
+#: view:ir.ui.view.custom:base.view_view_custom_tree
+msgid "Customized Views"
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "Menu :"
+#: model:res.country,name:base.cy
+msgid "Cyprus"
msgstr ""
#. module: base
-#: selection:ir.model.fields,state:0
-msgid "Base Field"
+#: selection:base.language.install,lang:0
+msgid "Czech / Čeština"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts
-msgid "Managing vehicles and contracts"
+#: model:res.country,name:base.cz
+msgid "Czech Republic"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_setup
-msgid "\n"
-"This module helps to configure the system at the installation of a new database.\n"
-"================================================================================\n"
-"\n"
-"Shows you a list of applications features to install from.\n"
-"\n"
-" "
+#: selection:base.language.install,lang:0
+msgid "Danish / Dansk"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_board
+#: model:ir.ui.menu,name:base.menu_reporting_dashboard
+msgid "Dashboards"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_config
-msgid "res.config"
+#: view:ir.attachment:base.view_attachment_form
+msgid "Data"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_pl
-msgid "Poland - Accounting"
+#: model:ir.module.module,description:base.module_test_convert
+msgid "Data for xml conversion tests"
msgstr ""
#. module: base
-#: view:ir.cron:0
-msgid "Action to Trigger"
+#: view:ir.logging:base.ir_logging_search_view
+msgid "Database"
msgstr ""
#. module: base
-#: field:ir.model.constraint,name:0
-#: selection:ir.translation,type:0
-msgid "Constraint"
+#: model:ir.module.module,shortdesc:base.module_anonymization
+msgid "Database Anonymization"
msgstr ""
#. module: base
-#: selection:ir.values,key:0
-#: selection:res.partner,type:0
-msgid "Default"
+#: field:ir.attachment,db_datas:0
+msgid "Database Data"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_lunch
-msgid "Lunch Order, Meal, Food"
+#: help:ir.actions.act_window,res_id:0
+msgid "Database ID of record to open in form view, when ``view_mode`` is set to 'form' only"
msgstr ""
#. module: base
-#: view:ir.model.fields:0
-#: field:ir.model.fields,required:0
-#: field:res.partner.bank.type.field,required:0
-msgid "Required"
+#: field:ir.logging,dbname:0
+msgid "Database Name"
msgstr ""
#. module: base
-#: model:res.country,name:base.ro
-msgid "Romania"
+#: model:ir.ui.menu,name:base.next_id_9
+msgid "Database Structure"
msgstr ""
#. module: base
-#: field:ir.module.module,summary:0
-#: field:res.request.history,name:0
-msgid "Summary"
+#: help:ir.values,res_id:0
+msgid "Database identifier of the record to which this applies. 0 = for all records"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_hidden_dependency
-msgid "Dependency"
+#: selection:ir.property,type:0
+#: field:res.currency.rate,name:0
+#: field:res.partner,date:0
+msgid "Date"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal
-msgid "\n"
-"Customize access to your OpenERP database to external users by creating portals.\n"
-"================================================================================\n"
-"A portal defines a specific user menu and access rights for its members. This\n"
-"menu can ben seen by portal members, anonymous users and any other user that\n"
-"have the access to technical features (e.g. the administrator).\n"
-"Also, each portal member is linked to a specific partner.\n"
-"\n"
-"The module also associates user groups to the portal users (adding a group in\n"
-"the portal automatically adds it to the portal users, etc). That feature is\n"
-"very handy when used in combination with the module 'share'.\n"
-" "
+#: field:ir.attachment,create_date:0
+msgid "Date Created"
msgstr ""
#. module: base
-#: field:multi_company.default,expression:0
-msgid "Expression"
+#: field:res.lang,date_format:0
+msgid "Date Format"
msgstr ""
#. module: base
-#: view:res.company:0
-msgid "Header/Footer"
+#: field:ir.attachment,write_date:0
+msgid "Date Modified"
msgstr ""
#. module: base
-#: help:ir.mail_server,sequence:0
-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)"
+#: selection:ir.property,type:0
+msgid "DateTime"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_sale
-msgid "Quotations, Sales Orders, Invoicing"
+#: model:ir.module.module,shortdesc:base.module_sale_order_dates
+msgid "Dates on Sales Order"
msgstr ""
#. module: base
-#: field:res.partner,parent_id:0
-msgid "Related Company"
+#: view:ir.logging:base.ir_logging_search_view
+msgid "Day"
msgstr ""
#. module: base
-#: help:ir.actions.act_url,help:0
-#: help:ir.actions.act_window,help:0
-#: help:ir.actions.act_window_close,help:0
-#: help:ir.actions.actions,help:0
-#: help:ir.actions.client,help:0
-#: help:ir.actions.report.xml,help:0
-#: help:ir.actions.server,help:0
-#: help:ir.actions.wizard,help:0
-msgid "Optional help text for the users with a description of the target view, such as its usage and purpose."
+#: view:ir.sequence:base.sequence_view
+msgid "Day of the Week (0:Monday): %(weekday)s"
msgstr ""
#. module: base
-#: model:res.country,name:base.va
-msgid "Holy See (Vatican City State)"
+#: view:ir.sequence:base.sequence_view
+msgid "Day of the Year: %(doy)s"
msgstr ""
#. module: base
-#: field:base.module.import,module_file:0
-msgid "Module .ZIP file"
+#: view:ir.sequence:base.sequence_view
+msgid "Day: %(day)s"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_17
-msgid "Telecom sector"
+#: selection:ir.cron,interval_type:0
+msgid "Days"
msgstr ""
#. module: base
-#: field:workflow.transition,trigger_model:0
-msgid "Trigger Object"
+#: model:res.company,overdue_msg:base.main_company
+msgid "Dear Sir/Madam,\n"
+"\n"
+"Our records indicate that some payments on your account are still due. Please find details below.\n"
+"If the amount has already been paid, please disregard this notice. Otherwise, please forward us the total amount stated below.\n"
+"If you have any queries regarding your account, Please contact us.\n"
+"\n"
+"Thank you in advance for your cooperation.\n"
+"Best Regards,"
msgstr ""
#. module: base
-#: sql_constraint:ir.sequence.type:0
-msgid "`code` must be unique."
+#: field:ir.mail_server,smtp_debug:0
+msgid "Debugging"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_knowledge
-msgid "Knowledge Management System"
+#: model:ir.module.module,shortdesc:base.module_decimal_precision
+msgid "Decimal Precision Configuration"
msgstr ""
#. module: base
-#: view:workflow.activity:0
-#: field:workflow.activity,in_transitions:0
-msgid "Incoming Transitions"
+#: field:res.lang,decimal_point:0
+msgid "Decimal Separator"
+msgstr ""
+
+#. module: base
+#: selection:ir.values,key:0
+#: selection:res.partner,type:0
+msgid "Default"
msgstr ""
#. module: base
+#: field:multi_company.default,company_dest_id:0
+msgid "Default Company"
+msgstr ""
+
+#. module: base
+#: field:ir.default,value:0
+msgid "Default Value"
+msgstr ""
+
+#. module: base
+#: field:ir.filters,is_default:0
+msgid "Default filter"
+msgstr ""
+
+#. module: base
+#: help:ir.actions.act_window,limit:0
+msgid "Default limit for the list view"
+msgstr ""
+
+#. module: base
+#: model:ir.model,name:base.model_multi_company_default
+msgid "Default multi company"
+msgstr ""
+
+#. module: base
+#: help:ir.values,value:0
+msgid "Default value (pickled) or reference to an action"
+msgstr ""
+
+#. module: base
+#: view:ir.values:base.values_view_form_defaults
#: field:ir.values,value_unpickle:0
msgid "Default value or action reference"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_note_pad
-msgid "\n"
-"This module update memos inside OpenERP for using an external pad\n"
-"=================================================================\n"
-"\n"
-"Use for update your text memo in real time with the following user that you invite.\n"
-"\n"
-""
+#: view:ir.module.module:base.module_form
+msgid "Defined Reports"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_sequence
-msgid "\n"
-"This module maintains internal sequence number for accounting entries.\n"
-"======================================================================\n"
-"\n"
-"Allows you to configure the accounting sequences to be maintained.\n"
-"\n"
-"You can customize the following attributes of the sequence:\n"
-"-----------------------------------------------------------\n"
-" * Prefix\n"
-" * Suffix\n"
-" * Next Number\n"
-" * Increment Number\n"
-" * Number Padding\n"
-" "
+#: field:ir.model.access,perm_unlink:0
+msgid "Delete Access"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_project_timesheet
-msgid "Bill Time on Tasks"
+#: view:ir.rule:base.view_rule_search
+msgid "Delete Access Right"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_marketing
-#: model:ir.module.module,shortdesc:base.module_marketing
-#: model:ir.ui.menu,name:base.marketing_menu
-#: model:ir.ui.menu,name:base.menu_report_marketing
-msgid "Marketing"
+#: code:addons/base/ir/ir_actions.py:835
+#, python-format
+msgid "Deletion of the action record failed."
msgstr ""
#. module: base
-#: view:res.partner.bank:0
-msgid "Bank account"
+#: model:ir.module.module,shortdesc:base.module_delivery
+msgid "Delivery Costs"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_calendar
-msgid "\n"
-"OpenERP Web Calendar view.\n"
-"==========================\n"
-"\n"
-""
+#: field:ir.module.module,demo:0
+msgid "Demo Data"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (HN) / Español (HN)"
+#: model:ir.module.module,shortdesc:base.module_web_tests_demo
+msgid "Demonstration of web/javascript tests"
msgstr ""
#. module: base
-#: view:ir.sequence.type:0
-msgid "Sequence Type"
+#: model:res.country,name:base.dk
+msgid "Denmark"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "Unicode/UTF-8"
+#: view:ir.module.module:base.module_form
+#: field:ir.module.module,dependencies_id:0
+msgid "Dependencies"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Hindi / हिंदी"
+#: report:ir.module.reference:0
+msgid "Dependencies :"
msgstr ""
#. module: base
-#: view:base.language.install:0
-#: model:ir.actions.act_window,name:base.action_view_base_language_install
-#: model:ir.ui.menu,name:base.menu_view_base_language_install
-msgid "Load a Translation"
+#: model:ir.module.category,name:base.module_category_hidden_dependency
+msgid "Dependency"
msgstr ""
#. module: base
-#: field:ir.module.module,latest_version:0
-msgid "Installed Version"
+#: view:ir.attachment:base.view_attachment_form
+#: field:ir.attachment,description:0
+#: field:ir.mail_server,name:0
+#: field:ir.module.category,description:0
+#: field:ir.module.module,description:0
+msgid "Description"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_test
-msgid "\n"
-"Asserts on accounting.\n"
-"======================\n"
-"With this module you can manually check consistencies and inconsistencies of accounting module from menu Reporting/Accounting/Accounting Tests.\n"
-"\n"
-"You can write a query in order to create Consistency Test and you will get the result of the test \n"
-"in PDF format which can be accessed by Menu Reporting -> Accounting Tests, then select the test \n"
-"and print the report from Print button in header area.\n"
-""
+#: field:ir.module.module,description_html:0
+msgid "Description HTML"
msgstr ""
#. module: base
-#: field:ir.module.module,license:0
-msgid "License"
+#: model:ir.module.module,summary:base.module_mass_mailing
+msgid "Design, send and track emails"
msgstr ""
#. module: base
-#: field:ir.attachment,url:0
-msgid "Url"
+#: field:workflow.transition,act_to:0
+msgid "Destination Activity"
msgstr ""
#. module: base
-#: selection:ir.translation,type:0
-msgid "SQL Constraint"
+#: field:workflow.triggers,instance_id:0
+msgid "Destination Instance"
msgstr ""
#. module: base
-#: help:ir.ui.menu,groups_id:0
-msgid "If you have groups, the visibility of this menu will be based on these groups. If this field is empty, OpenERP will compute visibility based on the related object's read access."
+#: field:ir.actions.act_window,res_model:0
+#: field:ir.actions.client,res_model:0
+msgid "Destination Model"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_event_sale
-msgid "\n"
-"Creating registration with sale orders.\n"
-"=======================================\n"
-"\n"
-"This module allows you to automate and connect your registration creation with\n"
-"your main sale flow and therefore, to enable the invoicing feature of registrations.\n"
-"\n"
-"It defines a new kind of service products that offers you the possibility to\n"
-"choose an event category associated with it. When you encode a sale order for\n"
-"that product, you will be able to choose an existing event of that category and\n"
-"when you confirm your sale order it will automatically create a registration for\n"
-"this event.\n"
-""
+#: view:ir.rule:base.view_rule_form
+msgid "Detailed algorithm:"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_sale_order_dates
-msgid "\n"
-"Add additional date information to the sales order.\n"
-"===================================================\n"
-"\n"
-"You can add the following additional dates to a sales order:\n"
-"------------------------------------------------------------\n"
-" * Requested Date\n"
-" * Commitment Date\n"
-" * Effective Date\n"
-""
+#: help:res.currency,position:0
+msgid "Determines where the currency symbol should be placed after or before the amount."
msgstr ""
#. module: base
-#: field:ir.actions.server,srcmodel_id:0
-#: field:ir.filters,model_id:0
-#: view:ir.model:0
-#: field:ir.model,model:0
-#: field:ir.model.constraint,model:0
-#: field:ir.model.fields,model_id:0
-#: field:ir.model.relation,model:0
-#: view:ir.values:0
-msgid "Model"
+#: model:ir.module.module,shortdesc:base.module_l10n_de
+msgid "Deutschland - Accounting"
msgstr ""
#. module: base
-#: view:base.language.install:0
-msgid "The selected language has been successfully installed. You must change the preferences of the user and open a new menu to view the changes."
+#: selection:ir.ui.view,type:0
+msgid "Diagram"
msgstr ""
#. module: base
-#: field:ir.actions.act_window.view,view_id:0
-#: field:ir.default,page:0
-#: selection:ir.translation,type:0
-#: view:ir.ui.view:0
-msgid "View"
+#: field:res.lang,direction:0
+msgid "Direction"
+msgstr ""
+
+#. module: base
+#: report:ir.module.reference:0
+msgid "Directory"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:146
+#: code:addons/base/res/res_config.py:471
#, python-format
-msgid "no"
+msgid "Disabling this option will also uninstall the following modules \n"
+"%s"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_crm_partner_assign
-msgid "\n"
-"This is the module used by OpenERP SA to redirect customers to its partners, based on geolocalization.\n"
-"======================================================================================================\n"
-"\n"
-"You can geolocalize your opportunities by using this module.\n"
-"\n"
-"Use geolocalization when assigning opportunities to partners.\n"
-"Determine the GPS coordinates according to the address of the partner.\n"
-"\n"
-"The most appropriate partner can be assigned.\n"
-"You can also use the geolocalization without using the GPS coordinates.\n"
-" "
+#: model:ir.module.module,summary:base.module_mail
+msgid "Discussions, Mailing Lists, News"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-msgid "Open a Window"
+#: view:res.currency:base.view_currency_form
+msgid "Display"
msgstr ""
#. module: base
-#: model:res.country,name:base.gq
-msgid "Equatorial Guinea"
+#: model:res.groups,name:base.group_website_publisher
+msgid "Display Editor Bar on Website"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_api
-msgid "OpenERP Web API"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Display an option on related documents to run this sever action"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_fr_rib
-msgid "\n"
-"This module lets users enter the banking details of Partners in the RIB format (French standard for bank accounts details).\n"
-"===========================================================================================================================\n"
-"\n"
-"RIB Bank Accounts can be entered in the \"Accounting\" tab of the Partner form by specifying the account type \"RIB\". \n"
-"\n"
-"The four standard RIB fields will then become mandatory:\n"
-"-------------------------------------------------------- \n"
-" - Bank Code\n"
-" - Office Code\n"
-" - Account number\n"
-" - RIB key\n"
-" \n"
-"As a safety measure, OpenERP will check the RIB key whenever a RIB is saved, and\n"
-"will refuse to record the data if the key is incorrect. Please bear in mind that\n"
-"this can only happen when the user presses the 'save' button, for example on the\n"
-"Partner Form. Since each bank account may relate to a Bank, users may enter the\n"
-"RIB Bank Code in the Bank form - it will the pre-fill the Bank Code on the RIB\n"
-"when they select the Bank. To make this easier, this module will also let users\n"
-"find Banks using their RIB code.\n"
-"\n"
-"The module base_iban can be a useful addition to this module, because French banks\n"
-"are now progressively adopting the international IBAN format instead of the RIB format.\n"
-"The RIB and IBAN codes for a single account can be entered by recording two Bank\n"
-"Accounts in OpenERP: the first with the type 'RIB', the second with the type 'IBAN'. \n"
-""
+#: model:ir.actions.act_window,help:base.action_country_group
+msgid "Display and manage the list of all countries group. You can create or delete country group to make sure the ones you are working on will be maintained."
msgstr ""
#. module: base
-#: model:res.country,name:base.ps
-msgid "Palestinian Territory, Occupied"
+#: model:ir.actions.act_window,help:base.action_country
+msgid "Display and manage the list of all countries that can be assigned to your partner records. You can create or delete countries to make sure the ones you are working on will be maintained."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_ch
-msgid "Switzerland - Accounting"
+#: field:res.partner.bank,footer:0
+msgid "Display on Reports"
msgstr ""
#. module: base
-#: field:res.bank,zip:0
-#: field:res.company,zip:0
-#: field:res.partner,zip:0
-#: field:res.partner.bank,zip:0
-msgid "Zip"
+#: help:res.partner.bank,footer:0
+msgid "Display this bank account on the footer of printed documents like invoices and sales orders."
msgstr ""
#. module: base
-#: view:ir.module.module:0
-#: field:ir.module.module,author:0
-msgid "Author"
+#: model:ir.module.module,summary:base.module_website_certification
+msgid "Display your network of certified people on your website"
msgstr ""
#. module: base
-#: view:ir.actions.todo:0
-msgid "Set as Todo"
+#: model:res.partner.category,name:base.res_partner_category_13
+msgid "Distributor"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%c - Appropriate date and time representation."
+#: model:res.country,name:base.dj
+msgid "Djibouti"
+msgstr ""
+
+#. module: base
+#: model:res.groups,name:base.group_mono_salesteams
+msgid "Do Not Use Sales Teams"
msgstr ""
#. module: base
-#: code:addons/base/res/res_config.py:387
+#: model:res.partner.title,name:base.res_partner_title_doctor
+msgid "Doctor"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_document
+msgid "Document Management System"
+msgstr ""
+
+#. module: base
+#: code:addons/base/ir/ir_model.py:754
+#: code:addons/base/ir/ir_model.py:757
#, python-format
-msgid "Your database is now fully configured.\n"
-"\n"
-"Click 'Continue' and enjoy your OpenERP experience..."
+msgid "Document model"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_marketing
-msgid "Helps you manage your marketing campaigns step by step."
+#: model:ir.module.module,shortdesc:base.module_website_forum_doc
+msgid "Documentation"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Hebrew / עִבְרִי"
+#: field:ir.filters,domain:0
+#: field:ir.model.fields,domain:0
+#: field:ir.rule,domain:0
+#: field:ir.rule,domain_force:0
+#: field:res.partner.title,domain:0
+msgid "Domain"
msgstr ""
#. module: base
-#: model:res.country,name:base.bo
-msgid "Bolivia"
+#: field:ir.actions.act_window,domain:0
+msgid "Domain Value"
msgstr ""
#. module: base
-#: model:res.country,name:base.gh
-msgid "Ghana"
+#: model:res.country,name:base.dm
+msgid "Dominica"
msgstr ""
#. module: base
-#: field:res.lang,direction:0
-msgid "Direction"
+#: model:res.country,name:base.do
+msgid "Dominican Republic"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-#: model:ir.actions.act_window,name:base.action_ui_view
-#: field:ir.actions.act_window,view_ids:0
-#: field:ir.actions.act_window,views:0
-#: view:ir.model:0
-#: field:ir.model,view_ids:0
-#: field:ir.module.module,views_by_module:0
-#: model:ir.ui.menu,name:base.menu_action_ui_view
-#: view:ir.ui.view:0
-#: view:res.groups:0
-#: field:res.groups,view_access:0
-msgid "Views"
+#: selection:ir.actions.todo,state:0
+msgid "Done"
msgstr ""
#. module: base
-#: view:res.groups:0
-#: field:res.groups,rule_groups:0
-msgid "Rules"
+#: model:ir.module.module,shortdesc:base.module_purchase_double_validation
+msgid "Double Validation on Purchases"
msgstr ""
#. module: base
-#: field:ir.mail_server,smtp_host:0
-msgid "SMTP Server"
+#: model:res.partner.title,shortcut:base.res_partner_title_doctor
+msgid "Dr."
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_stock_dropshipping
+#: model:ir.module.module,summary:base.module_stock_dropshipping
+msgid "Drop Shipping"
+msgstr ""
+
+#. module: base
+#: selection:workflow.activity,kind:0
+msgid "Dummy"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:320
+#: code:addons/base/workflow/workflow.py:42
#, python-format
-msgid "You try to remove a module that is installed or will be installed"
+msgid "Duplicating workflows is not possible, please create a new workflow"
msgstr ""
#. module: base
-#: view:base.module.upgrade:0
-msgid "The selected modules have been updated / installed !"
+#: code:addons/base/ir/ir_qweb.py:835
+#, python-format
+msgid "Durations can't be negative"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Spanish (PR) / Español (PR)"
+msgid "Dutch / Nederlands"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_crm_profiling
-msgid "\n"
-"This module allows users to perform segmentation within partners.\n"
-"=================================================================\n"
-"\n"
-"It uses the profiles criteria from the earlier segmentation module and improve it. \n"
-"Thanks to the new concept of questionnaire. You can now regroup questions into a \n"
-"questionnaire and directly use it on a partner.\n"
-"\n"
-"It also has been merged with the earlier CRM & SRM segmentation tool because they \n"
-"were overlapping.\n"
-"\n"
-" **Note:** this module is not compatible with the module segmentation, since it's the same which has been renamed.\n"
-" "
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Dynamic expression builder"
msgstr ""
#. module: base
-#: model:res.country,name:base.gt
-msgid "Guatemala"
+#: field:res.partner,ean13:0
+msgid "EAN13"
msgstr ""
#. module: base
-#: help:ir.actions.server,message:0
-msgid "Email contents, may contain expressions enclosed in double brackets based on the same values as those available in the condition field, e.g. `Dear [[ object.partner_id.name ]]`"
+#: model:ir.module.module,shortdesc:base.module_hw_escpos
+msgid "ESC/POS Hardware Driver"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_workflow_form
-#: model:ir.ui.menu,name:base.menu_workflow
-#: model:ir.ui.menu,name:base.menu_workflow_root
-msgid "Workflows"
+#: sql_constraint:ir.model:0
+msgid "Each model must be unique!"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.next_id_73
-msgid "Purchase"
+#: model:res.country,name:base.tp
+msgid "East Timor"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Portuguese (BR) / Português (BR)"
+#: model:res.country,name:base.ec
+msgid "Ecuador"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_needaction_mixin
-msgid "ir.needaction_mixin"
+#: model:ir.module.module,shortdesc:base.module_l10n_ec
+msgid "Ecuador - Accounting"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "This file was generated using the universal"
+#: code:addons/base/ir/ir_qweb.py:261
+#, python-format
+msgid "Editor disabled because some content can not be seen by a user who does not belong to the groups %s"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_7
-msgid "IT Services"
+#: model:res.country,name:base.eg
+msgid "Egypt"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_specific_industry_applications
-msgid "Specific Industry Applications"
+#: model:res.country,name:base.sv
+msgid "El Salvador"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_google_docs
-msgid "Google Docs integration"
+#: model:ir.module.module,shortdesc:base.module_edi
+msgid "Electronic Data Interchange (EDI)"
msgstr ""
#. module: base
-#: help:ir.attachment,res_model:0
-msgid "The database object this attachment will be attached to"
+#: code:addons/base/ir/ir_ui_view.py:496
+#, python-format
+msgid "Element '%s' cannot be located in parent view"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:327
+#: code:addons/base/res/res_company.py:165
+#: model:ir.ui.menu,name:base.menu_email
+#: field:res.bank,email:0
+#: field:res.company,email:0
+#: field:res.partner,email:0
#, python-format
-msgid "name"
+msgid "Email"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_mrp_operations
-msgid "\n"
-"This module adds state, date_start, date_stop in manufacturing order operation lines (in the 'Work Orders' tab).\n"
-"================================================================================================================\n"
-"\n"
-"Status: draft, confirm, done, cancel\n"
-"When finishing/confirming, cancelling manufacturing orders set all state lines\n"
-"to the according state.\n"
-"\n"
-"Create menus:\n"
-"-------------\n"
-" **Manufacturing** > **Manufacturing** > **Work Orders**\n"
-"\n"
-"Which is a view on 'Work Orders' lines in manufacturing order.\n"
-"\n"
-"Add buttons in the form view of manufacturing order under workorders tab:\n"
-"-------------------------------------------------------------------------\n"
-" * start (set state to confirm), set date_start\n"
-" * done (set state to done), set date_stop\n"
-" * set to draft (set state to draft)\n"
-" * cancel set state to cancel\n"
-"\n"
-"When the manufacturing order becomes 'ready to produce', operations must\n"
-"become 'confirmed'. When the manufacturing order is done, all operations\n"
-"must become done.\n"
-"\n"
-"The field 'Working Hours' is the delay(stop date - start date).\n"
-"So, that we can compare the theoretic delay and real delay. \n"
-" "
+#: view:res.users:base.view_users_form
+#: view:res.users:base.view_users_simple_form
+msgid "Email Address"
msgstr ""
#. module: base
-#: view:res.config.installer:0
-msgid "Skip"
+#: model:ir.module.module,shortdesc:base.module_fetchmail
+msgid "Email Gateway"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_event_sale
-msgid "Events Sales"
+#: view:res.users:base.view_users_form_simple_modif
+msgid "Email Preferences"
msgstr ""
#. module: base
-#: model:res.country,name:base.ls
-msgid "Lesotho"
+#: model:ir.module.module,shortdesc:base.module_email_template
+msgid "Email Templates"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid ", or your preferred text editor"
+#: model:res.groups,name:base.group_user
+#: field:res.partner,employee:0
+#: model:res.partner.category,name:base.res_partner_category_3
+msgid "Employee"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_crm_partner_assign
-msgid "Partners Geo-Localization"
+#: model:ir.module.module,shortdesc:base.module_hr_evaluation
+msgid "Employee Appraisals"
msgstr ""
#. module: base
-#: model:res.country,name:base.ke
-msgid "Kenya"
+#: model:ir.module.module,shortdesc:base.module_hr_contract
+msgid "Employee Contracts"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_translation
-#: model:ir.ui.menu,name:base.menu_action_translation
-msgid "Translated Terms"
+#: model:ir.module.module,shortdesc:base.module_hr
+msgid "Employee Directory"
+msgstr ""
+
+#. module: base
+#: model:ir.actions.act_window,name:base.action_partner_employee_form
+msgid "Employees"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Abkhazian / аҧсуа"
+msgid "English (CA)"
msgstr ""
#. module: base
-#: view:base.module.configuration:0
-msgid "System Configuration Done"
+#: selection:base.language.install,lang:0
+msgid "English (UK)"
msgstr ""
#. module: base
-#: code:addons/orm.py:1539
-#, python-format
-msgid "Error occurred while validating the field(s) %s: %s"
+#: selection:base.language.install,lang:0
+msgid "English (US)"
msgstr ""
#. module: base
-#: view:ir.property:0
-msgid "Generic"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_document_ftp
-msgid "Shared Repositories (FTP)"
+#: model:ir.module.module,shortdesc:base.module_account_sequence
+msgid "Entries Sequence Numbering"
msgstr ""
#. module: base
-#: model:res.country,name:base.sm
-msgid "San Marino"
+#: model:res.country,name:base.gq
+msgid "Equatorial Guinea"
msgstr ""
#. module: base
-#: model:res.country,name:base.bm
-msgid "Bermuda"
+#: model:res.country,name:base.er
+msgid "Eritrea"
msgstr ""
#. module: base
-#: model:res.country,name:base.pe
-msgid "Peru"
+#: code:addons/base/ir/ir_actions.py:840
+#: code:addons/base/ir/ir_model.py:164
+#: code:addons/base/ir/ir_model.py:283
+#: code:addons/base/ir/ir_model.py:297
+#: code:addons/base/ir/ir_model.py:337
+#: code:addons/base/ir/ir_model.py:356
+#: code:addons/base/ir/ir_model.py:361
+#: code:addons/base/ir/ir_model.py:364
+#: code:addons/base/ir/ir_translation.py:392
+#: code:addons/base/module/module.py:339
+#: code:addons/base/module/module.py:381
+#: code:addons/base/module/module.py:386
+#: code:addons/base/module/module.py:396
+#: code:addons/base/module/module.py:522
+#: code:addons/base/module/module.py:548
+#: code:addons/base/module/module.py:562
+#: code:addons/base/res/res_currency.py:229
+#: code:addons/base/res/res_users.py:126
+#: code:addons/custom.py:554
+#, python-format
+msgid "Error"
msgstr ""
#. module: base
-#: selection:ir.model.fields,on_delete:0
-msgid "Set NULL"
+#: code:addons/base/ir/ir_ui_menu.py:458
+#, python-format
+msgid "Error ! You can not create recursive Menu."
msgstr ""
#. module: base
-#: view:res.users:0
-msgid "Save"
+#: constraint:res.partner.category:0
+msgid "Error ! You can not create recursive categories."
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,report_xml:0
-msgid "XML Path"
+#: code:addons/base/ir/ir_ui_view.py:369
+#, python-format
+msgid "Error context:\n"
+"View `%(view_name)s`"
msgstr ""
#. module: base
-#: model:res.country,name:base.bj
-msgid "Benin"
+#: code:addons/base/ir/ir_model.py:396
+#: code:addons/base/ir/ir_model.py:398
+#: code:addons/base/ir/ir_model.py:425
+#: code:addons/base/ir/ir_model.py:439
+#: code:addons/base/ir/ir_model.py:441
+#: code:addons/base/ir/ir_model.py:443
+#: code:addons/base/ir/ir_model.py:450
+#: code:addons/base/ir/ir_model.py:453
+#: code:addons/base/module/wizard/base_update_translations.py:39
+#: code:addons/base/res/res_currency.py:58
+#, python-format
+msgid "Error!"
msgstr ""
#. module: base
-#: 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"
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
msgstr ""
#. module: base
-#: help:ir.sequence,suffix:0
-msgid "Suffix value of the record for the sequence"
+#: model:res.country,name:base.ee
+msgid "Estonia"
msgstr ""
#. module: base
-#: help:ir.mail_server,smtp_user:0
-msgid "Optional username for SMTP authentication"
+#: selection:base.language.install,lang:0
+msgid "Estonian / Eesti keel"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_actions
-msgid "ir.actions.actions"
+#: model:res.country,name:base.et
+msgid "Ethiopia"
msgstr ""
#. module: base
-#: selection:ir.model.fields,select_level:0
-msgid "Not Searchable"
+#: model:ir.module.module,shortdesc:base.module_l10n_et
+msgid "Ethiopia - Accounting"
msgstr ""
#. module: base
-#: view:ir.config_parameter:0
-#: field:ir.config_parameter,key:0
-msgid "Key"
+#: field:ir.server.object.lines,type:0
+msgid "Evaluation Type"
msgstr ""
#. module: base
-#: field:res.company,rml_header:0
-msgid "RML Header"
+#: model:ir.module.module,shortdesc:base.module_event
+msgid "Events Organisation"
msgstr ""
#. module: base
-#: help:res.country,address_format:0
-msgid "You can state here the usual format to use for the addresses belonging to this country.\n"
-"\n"
-"You can use the python-style string patern with all the field of the address (for example, use '%(street)s' to display the field 'street') plus\n"
-" \n"
-"%(state_name)s: the name of the state\n"
-" \n"
-"%(state_code)s: the code of the state\n"
-" \n"
-"%(country_name)s: the name of the country\n"
-" \n"
-"%(country_code)s: the code of the country"
+#: model:ir.module.module,shortdesc:base.module_event_sale
+msgid "Events Sales"
msgstr ""
#. module: base
-#: model:res.country,name:base.mu
-msgid "Mauritius"
+#: code:addons/base/ir/ir_mail_server.py:224
+#, python-format
+msgid "Everything seems properly set up!"
msgstr ""
#. module: base
-#: view:ir.model.access:0
-msgid "Full Access"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Example of condition expression using Python"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_pt
-msgid "Plano de contas SNC para Portugal"
+#: model:ir.module.module,description:base.module_gamification_sale_crm
+msgid "Example of goal definitions and challenges that can be used related to the usage of the CRM Sale module."
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-#: view:ir.actions.report.xml:0
-#: model:ir.ui.menu,name:base.menu_security
-msgid "Security"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Example of python code"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Portuguese / Português"
+#: view:ir.rule:base.view_rule_form
+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 ""
#. module: base
-#: code:addons/base/ir/ir_model.py:366
-#, python-format
-msgid "Changing the storing system for field \"%s\" is not allowed."
+#: view:res.lang:base.res_lang_form
+msgid "Examples"
msgstr ""
#. module: base
-#: help:res.partner.bank,company_id:0
-msgid "Only if this bank account belong to your company"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Execute several actions"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:337
-#, python-format
-msgid "Unknown sub-field '%s'"
+#: view:ir.cron:base.ir_cron_view_search
+msgid "Execution"
msgstr ""
#. module: base
-#: model:res.country,name:base.za
-msgid "South Africa"
+#: model:ir.module.module,shortdesc:base.module_hr_expense
+msgid "Expense Management"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-#: selection:ir.module.module,state:0
-#: selection:ir.module.module.dependency,state:0
-msgid "Installed"
+#: model:ir.module.module,summary:base.module_hr_expense
+msgid "Expenses Validation, Invoicing"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Ukrainian / українська"
+#: view:base.language.export:base.wizard_lang_export
+#: field:ir.exports.line,export_id:0
+msgid "Export"
msgstr ""
#. module: base
-#: model:res.country,name:base.sn
-msgid "Senegal"
+#: view:base.language.export:base.wizard_lang_export
+msgid "Export Complete"
msgstr ""
#. module: base
-#: model:res.country,name:base.hu
-msgid "Hungary"
+#: field:ir.exports,export_fields:0
+msgid "Export ID"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_analytics
-msgid "\n"
-"Google Analytics.\n"
-"=================\n"
-"\n"
-"Collects web application usage with Google Analytics.\n"
-" "
+#: field:ir.exports,name:0
+msgid "Export Name"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_recruitment
-msgid "Recruitment Process"
+#: view:base.language.export:base.wizard_lang_export
+msgid "Export Settings"
msgstr ""
#. module: base
-#: model:res.country,name:base.br
-msgid "Brazil"
+#: model:ir.actions.act_window,name:base.action_wizard_lang_export
+#: model:ir.ui.menu,name:base.menu_wizard_lang_export
+msgid "Export Translation"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%M - Minute [00,59]."
+#: view:base.language.export:base.wizard_lang_export
+msgid "Export Translations"
msgstr ""
#. module: base
-#: selection:ir.module.module,license:0
-msgid "Affero GPL-3"
+#: field:ir.actions.server,write_expression:0
+#: field:multi_company.default,expression:0
+msgid "Expression"
msgstr ""
#. module: base
-#: field:ir.sequence,number_next:0
-msgid "Next Number"
+#: help:ir.server.object.lines,value:0
+msgid "Expression containing a value specification. \n"
+"When Formula type is selected, this field may be a Python expression that can use the same values as for the condition field on the server action.\n"
+"If Value type is selected, the value will be used directly without evaluation."
msgstr ""
#. module: base
@@ -4792,1592 +7293,1378 @@ msgid "Expression to be satisfied if we want the transition done."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (PA) / Español (PA)"
+#: help:multi_company.default,expression:0
+msgid "Expression, must be True to match\n"
+"use context.get or user (browse)"
msgstr ""
#. module: base
-#: view:res.currency:0
-#: field:res.currency,rate_ids:0
-msgid "Rates"
+#: selection:ir.ui.view,mode:0
+msgid "Extension View"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_email_template
-msgid "Email Templates"
+#: field:ir.module.category,xml_id:0
+#: field:ir.ui.view,xml_id:0
+msgid "External ID"
msgstr ""
#. module: base
-#: model:res.country,name:base.sy
-msgid "Syria"
+#: view:ir.model.data:base.view_model_data_search
+#: field:ir.model.data,name:0
+msgid "External Identifier"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "======================================================"
+#: model:ir.actions.act_window,name:base.action_model_data
+#: view:ir.model.data:base.view_model_data_form
+#: view:ir.model.data:base.view_model_data_list
+#: view:ir.model.data:base.view_model_data_search
+#: model:ir.ui.menu,name:base.ir_model_data_menu
+msgid "External Identifiers"
msgstr ""
#. module: base
-#: sql_constraint:ir.model:0
-msgid "Each model must be unique!"
+#: help:ir.model.data,name:0
+msgid "External Key/Identifier that can be used for data integration with third-party systems"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_localization
-#: model:ir.ui.menu,name:base.menu_localisation
-msgid "Localization"
+#: view:ir.module.module:base.view_module_filter
+msgid "Extra"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_api
-msgid "\n"
-"Openerp Web API.\n"
-"================\n"
-"\n"
-""
+#: model:ir.module.category,name:base.module_category_tools
+msgid "Extra Tools"
msgstr ""
#. module: base
-#: selection:res.request,state:0
-msgid "draft"
+#: model:res.country,name:base.fk
+msgid "Falkland Islands"
msgstr ""
#. module: base
-#: selection:ir.property,type:0
-#: field:res.currency,date:0
-#: field:res.currency.rate,name:0
-#: field:res.partner,date:0
-#: field:res.request,date_sent:0
-msgid "Date"
+#: model:res.country,name:base.fo
+msgid "Faroe Islands"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_event_moodle
-msgid "Event Moodle"
+#: code:addons/base/res/res_company.py:164
+#: field:res.bank,fax:0
+#: field:res.company,fax:0
+#: field:res.partner,fax:0
+#, python-format
+msgid "Fax"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_email_template
-msgid "\n"
-"Email Templating (simplified version of the original Power Email by Openlabs).\n"
-"==============================================================================\n"
-"\n"
-"Lets you design complete email templates related to any OpenERP document (Sale\n"
-"Orders, Invoices and so on), including sender, recipient, subject, body (HTML and\n"
-"Text). You may also automatically attach files to your templates, or print and\n"
-"attach a report.\n"
-"\n"
-"For advanced use, the templates may include dynamic attributes of the document\n"
-"they are related to. For example, you may use the name of a Partner's country\n"
-"when writing to them, also providing a safe default in case the attribute is\n"
-"not defined. Each template contains a built-in assistant to help with the\n"
-"inclusion of these dynamic values.\n"
-"\n"
-"If you enable the option, a composition assistant will also appear in the sidebar\n"
-"of the OpenERP documents to which the template applies (e.g. Invoices).\n"
-"This serves as a quick way to send a new email based on the template, after\n"
-"reviewing and adapting the contents, if needed.\n"
-"This composition assistant will also turn into a mass mailing system when called\n"
-"for multiple documents at once.\n"
-"\n"
-"These email templates are also at the heart of the marketing campaign system\n"
-"(see the ``marketing_campaign`` application), if you need to automate larger\n"
-"campaigns on any OpenERP document.\n"
-"\n"
-" **Technical note:** only the templating system of the original Power Email by Openlabs was kept.\n"
-" "
+#: view:res.partner:base.view_partner_form
+msgid "Fax:"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_partner_category_form
-msgid "Partner Tags"
+#: field:res.bank,state:0
+#: field:res.company,state_id:0
+#: field:res.partner.bank,state_id:0
+msgid "Fed. State"
msgstr ""
#. module: base
-#: view:res.company:0
-msgid "Preview Header/Footer"
+#: model:ir.actions.act_window,name:base.action_country_state
+#: model:ir.ui.menu,name:base.menu_country_state_partner
+msgid "Fed. States"
msgstr ""
#. module: base
-#: field:ir.ui.menu,parent_id:0
-#: field:wizard.ir.model.menu.create,menu_id:0
-msgid "Parent Menu"
+#: field:ir.actions.server,model_object_field:0
+#: view:ir.model.fields:base.view_model_fields_search
+#: field:ir.property,fields_id:0
+#: field:ir.server.object.lines,col1:0
+#: selection:ir.translation,type:0
+#: field:multi_company.default,field_id:0
+msgid "Field"
msgstr ""
#. module: base
-#: field:res.partner.bank,owner_name:0
-msgid "Account Owner Name"
+#: field:ir.model.fields,field_description:0
+msgid "Field Label"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:414
-#, python-format
-msgid "Cannot rename column to %s, because that column already exists!"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Field Mapping"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "Attached To"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Field Mappings"
msgstr ""
#. module: base
-#: field:res.lang,decimal_point:0
-msgid "Decimal Separator"
+#: field:ir.exports.line,name:0
+#: view:ir.model.fields:base.view_model_fields_form
+#: field:res.partner.bank.type.field,name:0
+msgid "Field Name"
msgstr ""
#. module: base
-#: code:addons/orm.py:5318
-#, python-format
-msgid "Missing required value for the field '%s'."
+#: field:ir.model.fields,ttype:0
+msgid "Field Type"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Write Access Right"
+#: code:addons/base/ir/ir_ui_view.py:845
+#, python-format
+msgid "Field `%(field_name)s` does not exist"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_res_groups
-msgid "A group is a set of functional areas that will be assigned to the user in order to give them access and rights to specific applications and tasks in the system. You can create custom groups or edit the ones existing by default in order to customize the view of the menu that users will be able to see. Whether they can have a read, write, create and delete access right can be managed from here."
+#: model:ir.actions.act_window,name:base.action_model_fields
+#: view:ir.model:base.view_model_form
+#: field:ir.model,field_id:0
+#: model:ir.model,name:base.model_ir_model_fields
+#: view:ir.model.fields:base.view_model_fields_form
+#: view:ir.model.fields:base.view_model_fields_search
+#: view:ir.model.fields:base.view_model_fields_tree
+#: model:ir.ui.menu,name:base.ir_model_model_fields
+msgid "Fields"
msgstr ""
#. module: base
-#: view:ir.filters:0
-#: field:ir.filters,name:0
-msgid "Filter Name"
+#: view:ir.model:base.view_model_form
+msgid "Fields Description"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-#: view:res.partner:0
-#: field:res.request,history:0
-msgid "History"
+#: model:res.country,name:base.fj
+msgid "Fiji"
msgstr ""
#. module: base
-#: model:res.country,name:base.im
-msgid "Isle of Man"
+#: field:base.language.export,data:0
+#: field:base.language.import,data:0
+msgid "File"
msgstr ""
#. module: base
-#: help:ir.actions.client,res_model:0
-msgid "Optional model, mostly used for needactions."
+#: field:ir.attachment,datas:0
+msgid "File Content"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:306
-#, python-format
-msgid "The name of the module must be unique !"
+#: field:base.language.export,format:0
+msgid "File Format"
msgstr ""
#. module: base
-#: model:res.country,name:base.bv
-msgid "Bouvet Island"
+#: field:base.language.export,name:0
+#: field:ir.attachment,datas_fname:0
+msgid "File Name"
msgstr ""
#. module: base
-#: field:ir.model.constraint,type:0
-msgid "Constraint Type"
+#: field:ir.attachment,file_size:0
+msgid "File Size"
msgstr ""
#. module: base
-#: field:res.company,child_ids:0
-msgid "Child Companies"
+#: field:ir.actions.act_window,filter:0
+msgid "Filter"
msgstr ""
#. module: base
-#: model:res.country,name:base.ni
-msgid "Nicaragua"
+#: view:ir.filters:base.ir_filters_view_search
+#: field:ir.filters,name:0
+msgid "Filter Name"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_stock_invoice_directly
-msgid "\n"
-"Invoice Wizard for Delivery.\n"
-"============================\n"
-"\n"
-"When you send or deliver goods, this module automatically launch the invoicing\n"
-"wizard if the delivery is to be invoiced.\n"
-" "
+#: sql_constraint:ir.filters:0
+msgid "Filter names must be unique"
msgstr ""
#. module: base
-#: selection:ir.translation,type:0
-msgid "Wizard Button"
+#: view:ir.attachment:base.view_attachment_search
+msgid "Filter on my documents"
msgstr ""
#. module: base
-#: view:ir.model.fields:0
-#: field:ir.property,fields_id:0
-#: selection:ir.translation,type:0
-#: field:multi_company.default,field_id:0
-msgid "Field"
+#: view:ir.actions.act_window:base.view_window_action_form
+#: model:ir.actions.act_window,name:base.actions_ir_filters_view
+#: view:ir.filters:base.ir_filters_view_form
+#: view:ir.filters:base.ir_filters_view_search
+#: view:ir.filters:base.ir_filters_view_tree
+#: model:ir.model,name:base.model_ir_filters
+msgid "Filters"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_project_long_term
-msgid "Long Term Projects"
+#: view:ir.filters:base.ir_filters_view_search
+msgid "Filters created by myself"
msgstr ""
#. module: base
-#: model:res.country,name:base.ve
-msgid "Venezuela"
+#: view:ir.filters:base.ir_filters_view_search
+msgid "Filters shared with all users"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "9. %j ==> 340"
+#: view:ir.filters:base.ir_filters_view_search
+msgid "Filters visible only for one user"
msgstr ""
#. module: base
-#: model:res.country,name:base.zm
-msgid "Zambia"
+#: help:ir.actions.server,copyvalue:0
+msgid "Final placeholder expression, to be copy-pasted in the desired template field."
msgstr ""
#. module: base
-#: view:ir.actions.todo:0
-msgid "Launch Configuration Wizard"
+#: model:ir.module.module,summary:base.module_account_accountant
+msgid "Financial and Analytic Accounting"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_mrp
-msgid "Manufacturing Orders, Bill of Materials, Routing"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Find the ID of a record in the database"
msgstr ""
#. module: base
-#: field:ir.attachment,name:0
-msgid "Attachment Name"
+#: model:res.country,name:base.fi
+msgid "Finland"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Cancel Upgrade"
+#: selection:base.language.install,lang:0
+msgid "Finnish / Suomi"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_report_webkit
-msgid "\n"
-"This module adds a new Report Engine based on WebKit library (wkhtmltopdf) to support reports designed in HTML + CSS.\n"
-"=====================================================================================================================\n"
-"\n"
-"The module structure and some code is inspired by the report_openoffice module.\n"
-"\n"
-"The module allows:\n"
-"------------------\n"
-" - HTML report definition\n"
-" - Multi header support\n"
-" - Multi logo\n"
-" - Multi company support\n"
-" - HTML and CSS-3 support (In the limit of the actual WebKIT version)\n"
-" - JavaScript support\n"
-" - Raw HTML debugger\n"
-" - Book printing capabilities\n"
-" - Margins definition\n"
-" - Paper size definition\n"
-"\n"
-"Multiple headers and logos can be defined per company. CSS style, header and\n"
-"footer body are defined per company.\n"
-"\n"
-"For a sample report see also the webkit_report_sample module, and this video:\n"
-" http://files.me.com/nbessi/06n92k.mov\n"
-"\n"
-"Requirements and Installation:\n"
-"------------------------------\n"
-"This module requires the ``wkthtmltopdf`` library to render HTML documents as\n"
-"PDF. Version 0.9.9 or later is necessary, and can be found at\n"
-"http://code.google.com/p/wkhtmltopdf/ for Linux, Mac OS X (i386) and Windows (32bits).\n"
-"\n"
-"After installing the library on the OpenERP Server machine, you need to set the\n"
-"path to the ``wkthtmltopdf`` executable file on each Company.\n"
-"\n"
-"If you are experiencing missing header/footer problems on Linux, be sure to\n"
-"install a 'static' version of the library. The default ``wkhtmltopdf`` on\n"
-"Ubuntu is known to have this issue.\n"
-"\n"
-"\n"
-"TODO:\n"
-"-----\n"
-" * JavaScript support activation deactivation\n"
-" * Collated and book format support\n"
-" * Zip return for separated PDF\n"
-" * Web client WYSIWYG\n"
-""
+#: model:ir.module.module,shortdesc:base.module_fleet
+msgid "Fleet Management"
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_sale_salesman_all_leads
-msgid "See all Leads"
+#: selection:base.language.install,lang:0
+msgid "Flemish (BE) / Vlaams (BE)"
msgstr ""
#. module: base
-#: model:res.country,name:base.ci
-msgid "Ivory Coast (Cote D'Ivoire)"
+#: selection:ir.property,type:0
+msgid "Float"
msgstr ""
#. module: base
-#: model:res.country,name:base.kz
-msgid "Kazakhstan"
+#: view:workflow.activity:base.view_workflow_activity_search
+#: field:workflow.activity,flow_start:0
+msgid "Flow Start"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%w - Weekday number [0(Sunday),6]."
+#: view:workflow.activity:base.view_workflow_activity_search
+#: field:workflow.activity,flow_stop:0
+msgid "Flow Stop"
msgstr ""
#. module: base
-#: field:ir.attachment,res_name:0
-#: field:ir.ui.view_sc,resource:0
-msgid "Resource Name"
+#: code:addons/base/module/wizard/base_module_upgrade.py:99
+#, python-format
+msgid "Following modules are not installed or unknown: %s"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_ir_filters
-msgid "User-defined Filters"
+#: field:res.company,font:0
+msgid "Font"
msgstr ""
#. module: base
-#: field:ir.actions.act_window_close,name:0
-#: field:ir.actions.actions,name:0
-#: field:ir.actions.report.xml,name:0
-#: field:ir.actions.todo,name:0
-#: field:ir.cron,name:0
-#: field:ir.model.access,name:0
-#: field:ir.model.fields,name:0
-#: field:ir.module.category,name:0
-#: field:ir.module.module.dependency,name:0
-#: report:ir.module.reference:0
-#: view:ir.property:0
-#: field:ir.property,name:0
-#: field:ir.rule,name:0
-#: field:ir.sequence,name:0
-#: field:ir.sequence.type,name:0
-#: field:ir.values,name:0
-#: view:multi_company.default:0
-#: field:multi_company.default,name:0
-#: field:res.bank,name:0
-#: view:res.currency.rate.type:0
-#: field:res.currency.rate.type,name:0
-#: field:res.groups,name:0
-#: field:res.lang,name:0
-#: field:res.partner,name:0
-#: field:res.partner.bank.type,name:0
-#: field:res.request.link,name:0
-#: field:workflow,name:0
-#: field:workflow.activity,name:0
-msgid "Name"
+#: field:res.font,name:0
+msgid "Font Name"
msgstr ""
#. module: base
-#: help:ir.actions.act_window,multi:0
-msgid "If set to true, the action will not be displayed on the right toolbar of a form view"
+#: field:res.font,family:0
+msgid "Font family"
msgstr ""
#. module: base
-#: model:res.country,name:base.ms
-msgid "Montserrat"
+#: model:ir.model,name:base.model_res_font
+msgid "Fonts available"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_decimal_precision
-msgid "Decimal Precision Configuration"
+#: help:res.company,rml_footer:0
+msgid "Footer text displayed at the bottom of all reports."
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_act_url
-#: selection:ir.ui.menu,action:0
-msgid "ir.actions.act_url"
+#: help:ir.actions.report.xml,report_name:0
+msgid "For QWeb reports, name of the template used in the rendering. The method 'render_html' of the model 'report.template_name' will be called (if any) to give the html. For RML reports, this is the LocalService name."
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_translation_app
-msgid "Application Terms"
+#: help:ir.values,key2:0
+msgid "For actions, one of the possible action slots: \n"
+" - client_action_multi\n"
+" - client_print_multi\n"
+" - client_action_relate\n"
+" - tree_but_open\n"
+"For defaults, an optional condition"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.open_module_tree
-msgid "<p><b>No module found!</b></p>\n"
-" <p>You should try others search criteria.</p>\n"
-" "
+#: view:base.language.export:base.wizard_lang_export
+msgid "For more details about translating OpenERP in your language, please refer to the"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_module_module
-#: field:ir.model.constraint,module:0
-#: view:ir.model.data:0
-#: field:ir.model.data,module:0
-#: field:ir.model.relation,module:0
-#: view:ir.module.module:0
-#: field:ir.module.module.dependency,module_id:0
-#: report:ir.module.reference:0
-#: field:ir.translation,module:0
-msgid "Module"
+#: help:ir.model.fields,relation_field:0
+msgid "For one2many fields, the field on the target model that implement the opposite many2one relationship"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "English (UK)"
+#: help:ir.model.fields,relation:0
+msgid "For relationship fields, the technical name of the target model"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Japanese / 日本語"
+#: code:addons/base/ir/ir_model.py:356
+#, python-format
+msgid "For selection fields, the Selection Options must be given!"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_base_language_import
-msgid "Language Import"
+#: selection:ir.actions.act_window,view_type:0
+#: selection:ir.actions.act_window.view,view_mode:0
+#: view:ir.ui.view:base.view_view_search
+#: selection:ir.ui.view,type:0
+msgid "Form"
msgstr ""
#. module: base
-#: help:workflow.transition,act_from:0
-msgid "Source activity. When this activity is over, the condition is tested to determine if we can start the ACT_TO activity."
+#: field:res.partner.bank.type,format_layout:0
+msgid "Format Layout"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_generic_modules_accounting
-#: view:res.company:0
-msgid "Accounting"
+#: code:addons/base/res/res_bank.py:188
+#, python-format
+msgid "Formating Error"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_vat
-msgid "\n"
-"VAT validation for Partner's VAT numbers.\n"
-"=========================================\n"
-"\n"
-"After installing this module, values entered in the VAT field of Partners will\n"
-"be validated for all supported countries. The country is inferred from the\n"
-"2-letter country code that prefixes the VAT number, e.g. ``BE0477472701``\n"
-"will be validated using the Belgian rules.\n"
-"\n"
-"There are two different levels of VAT number validation:\n"
-"--------------------------------------------------------\n"
-" * By default, a simple off-line check is performed using the known validation\n"
-" rules for the country, usually a simple check digit. This is quick and \n"
-" always available, but allows numbers that are perhaps not truly allocated,\n"
-" or not valid anymore.\n"
-" \n"
-" * When the \"VAT VIES Check\" option is enabled (in the configuration of the user's\n"
-" Company), VAT numbers will be instead submitted to the online EU VIES\n"
-" database, which will truly verify that the number is valid and currently\n"
-" allocated to a EU company. This is a little bit slower than the simple\n"
-" off-line check, requires an Internet connection, and may not be available\n"
-" all the time. If the service is not available or does not support the\n"
-" requested country (e.g. for non-EU countries), a simple check will be performed\n"
-" instead.\n"
-"\n"
-"Supported countries currently include EU countries, and a few non-EU countries\n"
-"such as Chile, Colombia, Mexico, Norway or Russia. For unsupported countries,\n"
-"only the country code will be validated.\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_website_forum
+msgid "Forum"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_act_window_view
-msgid "ir.actions.act_window.view"
+#: model:ir.module.module,summary:base.module_website_forum_doc
+msgid "Forum, Documentation"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web
-#: report:ir.module.reference:0
-msgid "Web"
+#: model:ir.module.module,summary:base.module_website_forum
+msgid "Forum, FAQ, Q&A"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_lunch
-msgid "Lunch Orders"
+#: code:addons/base/ir/ir_fields.py:343
+#, python-format
+msgid "Found multiple matches for field '%%(field)s' (%d matches)"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "English (CA)"
+#: model:res.country,name:base.fr
+msgid "France"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_human_resources
-msgid "Human Resources"
+#: model:ir.module.module,shortdesc:base.module_l10n_fr
+msgid "France - Accounting"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_syscohada
-msgid "\n"
-"This module implements the accounting chart for OHADA area.\n"
-"===========================================================\n"
-" \n"
-"It allows any company or association to manage its financial accounting.\n"
-"\n"
-"Countries that use OHADA are the following:\n"
-"-------------------------------------------\n"
-" Benin, Burkina Faso, Cameroon, Central African Republic, Comoros, Congo,\n"
-" \n"
-" Ivory Coast, Gabon, Guinea, Guinea Bissau, Equatorial Guinea, Mali, Niger,\n"
-" \n"
-" Replica of Democratic Congo, Senegal, Chad, Togo.\n"
-" "
+#: selection:base.language.install,lang:0
+msgid "French (BE) / Français (BE)"
msgstr ""
#. module: base
-#: view:ir.translation:0
-msgid "Comments"
+#: selection:base.language.install,lang:0
+msgid "French (CA) / Français (CA)"
msgstr ""
#. module: base
-#: model:res.country,name:base.et
-msgid "Ethiopia"
+#: selection:base.language.install,lang:0
+msgid "French (CH) / Français (CH)"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_authentication
-msgid "Authentication"
+#: selection:base.language.install,lang:0
+msgid "French / Français"
msgstr ""
#. module: base
-#: model:res.country,name:base.sj
-msgid "Svalbard and Jan Mayen Islands"
+#: model:res.country,name:base.gf
+msgid "French Guyana"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_wizard
-#: selection:ir.ui.menu,action:0
-msgid "ir.actions.wizard"
+#: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll
+msgid "French Payroll"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_kanban
-msgid "Base Kanban"
+#: model:ir.module.module,shortdesc:base.module_l10n_fr_rib
+msgid "French RIB Bank Details"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-#: view:ir.actions.report.xml:0
-#: view:ir.actions.server:0
-msgid "Group By"
+#: model:res.country,name:base.tf
+msgid "French Southern Territories"
msgstr ""
#. module: base
-#: view:res.config.installer:0
-msgid "title"
+#: view:ir.model.access:base.ir_access_view_search
+msgid "Full Access"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:146
-#, python-format
-msgid "true"
+#: view:ir.rule:base.view_rule_search
+msgid "Full Access Right"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_base_language_install
-msgid "Install Language"
+#: field:res.partner.category,complete_name:0
+msgid "Full Name"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_11
-msgid "Services"
+#: field:ir.ui.menu,complete_name:0
+msgid "Full Path"
msgstr ""
#. module: base
-#: view:ir.translation:0
-msgid "Translation"
+#: field:ir.logging,func:0
+#: selection:workflow.activity,kind:0
+msgid "Function"
msgstr ""
#. module: base
-#: selection:res.request,state:0
-msgid "closed"
+#: selection:ir.module.module,license:0
+msgid "GPL Version 2"
msgstr ""
#. module: base
-#: selection:base.language.export,state:0
-msgid "get"
+#: selection:ir.module.module,license:0
+msgid "GPL Version 3"
msgstr ""
#. module: base
-#: help:ir.model.fields,on_delete:0
-msgid "On delete property for many2one fields"
+#: selection:ir.module.module,license:0
+msgid "GPL-2 or later version"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_accounting_and_finance
-msgid "Accounting & Finance"
+#: selection:ir.module.module,license:0
+msgid "GPL-3 or later version"
msgstr ""
#. module: base
-#: field:ir.actions.server,write_id:0
-msgid "Write Id"
+#: model:res.country,name:base.ga
+msgid "Gabon"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_product
-msgid "Products"
+#: selection:base.language.install,lang:0
+msgid "Galician / Galego"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.act_values_form_defaults
-#: model:ir.ui.menu,name:base.menu_values_form_defaults
-#: view:ir.values:0
-msgid "User-defined Defaults"
+#: model:res.country,name:base.gm
+msgid "Gambia"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_auth_signup
-msgid "\n"
-"Allow users to sign up and reset their password\n"
-"===============================================\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_gamification
+msgid "Gamification"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_usability
-#: view:res.users:0
-msgid "Usability"
+#: selection:ir.actions.act_window.view,view_mode:0
+#: selection:ir.ui.view,type:0
+msgid "Gantt"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,domain:0
-msgid "Domain Value"
+#: model:ir.module.module,shortdesc:base.module_web_kanban_gauge
+msgid "Gauge Widget for Kanban"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_association
-msgid "\n"
-"This module is to configure modules related to an association.\n"
-"==============================================================\n"
-"\n"
-"It installs the profile for associations to manage events, registrations, memberships, \n"
-"membership products (schemes).\n"
-" "
+#: view:ir.rule:base.view_rule_form
+msgid "General"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_base_config
-#: model:ir.ui.menu,name:base.menu_config
-#: model:ir.ui.menu,name:base.menu_definitions
-#: model:ir.ui.menu,name:base.menu_event_config
-#: model:ir.ui.menu,name:base.menu_lunch_survey_root
-#: model:ir.ui.menu,name:base.menu_marketing_config_association
-#: model:ir.ui.menu,name:base.menu_marketing_config_root
-#: model:ir.ui.menu,name:base.menu_reporting_config
-#: view:res.company:0
-#: view:res.config:0
-msgid "Configuration"
+#: view:res.company:base.view_company_form
+msgid "General Information"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_edi
-msgid "\n"
-"Provides a common EDI platform that other Applications can use.\n"
-"===============================================================\n"
-"\n"
-"OpenERP specifies a generic EDI format for exchanging business documents between \n"
-"different systems, and provides generic mechanisms to import and export them.\n"
-"\n"
-"More details about OpenERP's EDI format may be found in the technical OpenERP \n"
-"documentation at http://doc.openerp.com.\n"
-" "
+#: view:ir.actions.act_window:base.view_window_action_form
+msgid "General Settings"
msgstr ""
#. module: base
-#: code:addons/base/ir/workflow/workflow.py:99
-#, python-format
-msgid "Operation forbidden"
+#: view:ir.property:base.ir_property_view_search
+msgid "Generic"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "SMS Configuration"
+#: model:ir.module.category,name:base.module_category_generic_modules
+msgid "Generic Modules"
msgstr ""
#. module: base
-#: help:ir.rule,active:0
-msgid "If you uncheck the active field, it will disable the record rule without deleting it (if you delete a native record rule, it may be re-created when you reload the module."
+#: model:res.country,name:base.ge
+msgid "Georgia"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Spanish (BO) / Español (BO)"
+msgid "German / Deutsch"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_board
-msgid "\n"
-"Lets the user create a custom dashboard.\n"
-"========================================\n"
-"\n"
-"Allows users to create custom dashboard.\n"
-" "
+#: model:res.country,name:base.de
+msgid "Germany"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_access_act
-#: model:ir.ui.menu,name:base.menu_ir_access_act
-msgid "Access Controls List"
+#: model:res.country,name:base.gh
+msgid "Ghana"
msgstr ""
#. module: base
-#: model:res.country,name:base.um
-msgid "USA Minor Outlying Islands"
+#: model:res.country,name:base.gi
+msgid "Gibraltar"
msgstr ""
#. module: base
-#: help:ir.cron,numbercall:0
-msgid "How many times the method is called,\n"
-"a negative number indicates no limit."
+#: view:ir.model.access:base.ir_access_view_search
+#: view:ir.rule:base.view_rule_search
+#: field:ir.rule,global:0
+msgid "Global"
msgstr ""
#. module: base
-#: field:res.partner.bank.type.field,bank_type_id:0
-msgid "Bank Type"
+#: view:ir.rule:base.view_rule_form
+msgid "Global rules (non group-specific) are restrictions, and cannot be bypassed. Group-local rules grant additional permissions, but are constrained within the bounds of global ones. The first group rules restrict further than global rules, but any additional group rule will add more permissions"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:99
+#: model:ir.module.module,description:base.module_website_mail
+msgid "Glue module holding mail improvements for website."
+msgstr ""
+
+#. module: base
+#: code:addons/base/res/res_config.py:703
#, python-format
-msgid "The name of the group can not start with \"-\""
+msgid "Go to the configuration panel"
msgstr ""
#. module: base
-#: model:ir.actions.client,name:base.modules_act_cl
-#: view:ir.module.module:0
-#: model:ir.ui.menu,name:base.module_mi
-msgid "Apps"
+#: model:res.partner.category,name:base.res_partner_category_4
+msgid "Gold"
msgstr ""
#. module: base
-#: view:ir.ui.view_sc:0
-msgid "Shortcut"
+#: model:ir.module.module,shortdesc:base.module_web_analytics
+msgid "Google Analytics"
msgstr ""
#. module: base
-#: field:ir.model.data,date_init:0
-msgid "Init Date"
+#: model:ir.module.module,shortdesc:base.module_google_calendar
+msgid "Google Calendar"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Gujarati / ગુજરાતી"
+#: model:ir.module.module,shortdesc:base.module_google_drive
+msgid "Google Drive™ integration"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:361
-#, python-format
-msgid "Unable to process module \"%s\" because an external dependency is not met: %s"
+#: model:ir.module.module,shortdesc:base.module_google_spreadsheet
+msgid "Google Spreadsheet"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll
-msgid "Belgium - Payroll"
+#: model:ir.module.module,shortdesc:base.module_google_account
+msgid "Google Users"
msgstr ""
#. module: base
-#: view:workflow.activity:0
-#: field:workflow.activity,flow_start:0
-msgid "Flow Start"
+#: selection:ir.actions.act_window.view,view_mode:0
+#: selection:ir.ui.view,type:0
+msgid "Graph"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_partner_title
-msgid "res.partner.title"
+#: model:ir.module.module,shortdesc:base.module_web_graph
+msgid "Graph Views"
msgstr ""
#. module: base
-#: view:res.partner.bank:0
-msgid "Bank Account Owner"
+#: model:res.country,name:base.gr
+msgid "Greece"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_uncategorized
-msgid "Uncategorized"
+#: model:ir.module.module,shortdesc:base.module_l10n_gr
+msgid "Greece - Accounting"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Phone:"
+#: selection:base.language.install,lang:0
+msgid "Greek / Ελληνικά"
msgstr ""
#. module: base
-#: field:res.partner,is_company:0
-msgid "Is a Company"
+#: model:res.country,name:base.gl
+msgid "Greenland"
msgstr ""
#. module: base
-#: selection:ir.cron,interval_type:0
-msgid "Hours"
+#: model:res.country,name:base.gd
+msgid "Grenada"
msgstr ""
#. module: base
-#: model:res.country,name:base.gp
-msgid "Guadeloupe (French)"
+#: view:ir.model.access:base.ir_access_view_search
+#: field:ir.model.access,group_id:0
+#: view:res.groups:base.view_groups_search
+msgid "Group"
msgstr ""
#. module: base
-#: code:addons/base/res/res_lang.py:185
-#: code:addons/base/res/res_lang.py:187
-#: code:addons/base/res/res_lang.py:189
-#, python-format
-msgid "User Error"
+#: view:ir.actions.act_window:base.view_window_action_search
+#: view:ir.actions.report.xml:base.act_report_xml_search_view
+#: view:ir.actions.server:base.view_server_action_search
+#: view:ir.attachment:base.view_attachment_search
+#: view:ir.cron:base.ir_cron_view_search
+#: view:ir.filters:base.ir_filters_view_search
+#: view:ir.logging:base.ir_logging_search_view
+#: view:ir.model.access:base.ir_access_view_search
+#: view:ir.model.data:base.view_model_data_search
+#: view:ir.model.fields:base.view_model_fields_search
+#: view:ir.module.module:base.view_module_filter
+#: view:ir.ui.view:base.view_view_search
+#: view:ir.values:base.values_view_search_action
+#: view:res.partner:base.view_res_partner_filter
+#: view:workflow.activity:base.view_workflow_activity_search
+msgid "Group By"
msgstr ""
#. module: base
-#: help:workflow.transition,signal:0
-msgid "When the operation of transition comes from a button pressed in the client form, signal tests the name of the pressed button. If signal is NULL, no button is necessary to validate this transition."
+#: field:res.groups,full_name:0
+msgid "Group Name"
msgstr ""
#. module: base
-#: field:ir.ui.view.custom,ref_id:0
-msgid "Original View"
+#: field:workflow.transition,group_id:0
+msgid "Group Required"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_kanban
-msgid "\n"
-"OpenERP Web kanban view.\n"
-"========================\n"
-"\n"
-""
+#: field:ir.actions.act_window,groups_id:0
+#: model:ir.actions.act_window,name:base.action_res_groups
+#: field:ir.actions.report.xml,groups_id:0
+#: view:ir.actions.todo:base.config_wizard_step_view_form
+#: field:ir.actions.todo,groups_id:0
+#: field:ir.config_parameter,group_ids:0
+#: view:ir.model:base.view_model_form
+#: field:ir.model.fields,groups:0
+#: field:ir.rule,groups:0
+#: view:ir.ui.menu:base.edit_menu_access
+#: field:ir.ui.menu,groups_id:0
+#: model:ir.ui.menu,name:base.menu_action_res_groups
+#: view:ir.ui.view:base.view_view_form
+#: field:ir.ui.view,groups_id:0
+#: view:res.groups:base.view_groups_form
+#: view:res.groups:base.view_groups_search
+#: field:res.users,groups_id:0
+msgid "Groups"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:182
-#, python-format
-msgid "'%s' does not seem to be a number for field '%%(field)s'"
+#: view:ir.rule:base.view_rule_form
+msgid "Groups (no group = global)"
msgstr ""
#. module: base
-#: help:res.country.state,name:0
-msgid "Administrative divisions of a country. E.g. Fed. State, Departement, Canton"
+#: model:res.country,name:base.gp
+msgid "Guadeloupe (French)"
msgstr ""
#. module: base
-#: view:res.partner.bank:0
-msgid "My Banks"
+#: model:res.country,name:base.gu
+msgid "Guam (USA)"
msgstr ""
#. module: base
-#: sql_constraint:ir.filters:0
-msgid "Filter names must be unique"
+#: model:res.country,name:base.gt
+msgid "Guatemala"
msgstr ""
#. module: base
-#: help:multi_company.default,object_id:0
-msgid "Object affected by this rule"
+#: model:ir.module.module,shortdesc:base.module_l10n_gt
+msgid "Guatemala - Accounting"
msgstr ""
#. module: base
-#: selection:ir.actions.act_window,target:0
-msgid "Inline View"
+#: model:res.country,name:base.gg
+msgid "Guernsey"
msgstr ""
#. module: base
-#: field:ir.filters,is_default:0
-msgid "Default filter"
+#: model:res.country,name:base.gn
+msgid "Guinea"
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "Directory"
+#: model:res.country,name:base.gw
+msgid "Guinea Bissau"
msgstr ""
#. module: base
-#: field:wizard.ir.model.menu.create,name:0
-msgid "Menu Name"
+#: selection:base.language.install,lang:0
+msgid "Gujarati / ગુજરાતી"
msgstr ""
#. module: base
-#: field:ir.values,key2:0
-msgid "Qualifier"
+#: model:res.country,name:base.gy
+msgid "Guyana"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_be_coda
-msgid "\n"
-"Module to import CODA bank statements.\n"
-"======================================\n"
-"\n"
-"Supported are CODA flat files in V2 format from Belgian bank accounts.\n"
-"----------------------------------------------------------------------\n"
-" * CODA v1 support.\n"
-" * CODA v2.2 support.\n"
-" * Foreign Currency support.\n"
-" * Support for all data record types (0, 1, 2, 3, 4, 8, 9).\n"
-" * Parsing & logging of all Transaction Codes and Structured Format \n"
-" Communications.\n"
-" * Automatic Financial Journal assignment via CODA configuration parameters.\n"
-" * Support for multiple Journals per Bank Account Number.\n"
-" * Support for multiple statements from different bank accounts in a single \n"
-" CODA file.\n"
-" * Support for 'parsing only' CODA Bank Accounts (defined as type='info' in \n"
-" the CODA Bank Account configuration records).\n"
-" * Multi-language CODA parsing, parsing configuration data provided for EN, \n"
-" NL, FR.\n"
-"\n"
-"The machine readable CODA Files are parsed and stored in human readable format in \n"
-"CODA Bank Statements. Also Bank Statements are generated containing a subset of \n"
-"the CODA information (only those transaction lines that are required for the \n"
-"creation of the Financial Accounting records). The CODA Bank Statement is a \n"
-"'read-only' object, hence remaining a reliable representation of the original\n"
-"CODA file whereas the Bank Statement will get modified as required by accounting \n"
-"business processes.\n"
-"\n"
-"CODA Bank Accounts configured as type 'Info' will only generate CODA Bank Statements.\n"
-"\n"
-"A removal of one object in the CODA processing results in the removal of the \n"
-"associated objects. The removal of a CODA File containing multiple Bank \n"
-"Statements will also remove those associated statements.\n"
-"\n"
-"The following reconciliation logic has been implemented in the CODA processing:\n"
-"-------------------------------------------------------------------------------\n"
-" 1) The Company's Bank Account Number of the CODA statement is compared against \n"
-" the Bank Account Number field of the Company's CODA Bank Account \n"
-" configuration records (whereby bank accounts defined in type='info' \n"
-" configuration records are ignored). If this is the case an 'internal transfer'\n"
-" transaction is generated using the 'Internal Transfer Account' field of the \n"
-" CODA File Import wizard.\n"
-" 2) As a second step the 'Structured Communication' field of the CODA transaction\n"
-" line is matched against the reference field of in- and outgoing invoices \n"
-" (supported : Belgian Structured Communication Type).\n"
-" 3) When the previous step doesn't find a match, the transaction counterparty is \n"
-" located via the Bank Account Number configured on the OpenERP Customer and \n"
-" Supplier records.\n"
-" 4) In case the previous steps are not successful, the transaction is generated \n"
-" by using the 'Default Account for Unrecognized Movement' field of the CODA \n"
-" File Import wizard in order to allow further manual processing.\n"
-"\n"
-"In stead of a manual adjustment of the generated Bank Statements, you can also \n"
-"re-import the CODA after updating the OpenERP database with the information that \n"
-"was missing to allow automatic reconciliation.\n"
-"\n"
-"Remark on CODA V1 support:\n"
-"~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
-"In some cases a transaction code, transaction category or structured \n"
-"communication code has been given a new or clearer description in CODA V2.The\n"
-"description provided by the CODA configuration tables is based upon the CODA \n"
-"V2.2 specifications.\n"
-"If required, you can manually adjust the descriptions via the CODA configuration menu.\n"
-""
+#: model:ir.module.module,shortdesc:base.module_hr_gamification
+msgid "HR Gamification"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "Month"
+#: selection:ir.actions.report.xml,report_type:0
+msgid "HTML"
msgstr ""
#. module: base
-#: model:res.country,name:base.my
-msgid "Malaysia"
+#: help:ir.actions.report.xml,report_type:0
+msgid "HTML will open the report directly in your browser, PDF will use wkhtmltopdf to render the HTML into a PDF file and let you download it, Controller allows you to define the url of a custom controller outputting any kind of report."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_sequence.py:104
-#: code:addons/base/ir/ir_sequence.py:130
-#, python-format
-msgid "Increment number must not be zero."
+#: model:ir.model,name:base.model_ir_http
+msgid "HTTP routing"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_cancel
-msgid "Cancel Journal Entries"
+#: model:res.country,name:base.ht
+msgid "Haiti"
msgstr ""
#. module: base
-#: field:res.partner,tz_offset:0
-msgid "Timezone offset"
+#: model:ir.module.module,summary:base.module_hw_scanner
+msgid "Hardware Driver for Barcode Scanners"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_marketing_campaign
-msgid "\n"
-"This module provides leads automation through marketing campaigns (campaigns can in fact be defined on any resource, not just CRM Leads).\n"
-"=========================================================================================================================================\n"
-"\n"
-"The campaigns are dynamic and multi-channels. The process is as follows:\n"
-"------------------------------------------------------------------------\n"
-" * Design marketing campaigns like workflows, including email templates to\n"
-" send, reports to print and send by email, custom actions\n"
-" * Define input segments that will select the items that should enter the\n"
-" campaign (e.g leads from certain countries.)\n"
-" * Run you campaign in simulation mode to test it real-time or accelerated,\n"
-" and fine-tune it\n"
-" * You may also start the real campaign in manual mode, where each action\n"
-" requires manual validation\n"
-" * Finally launch your campaign live, and watch the statistics as the\n"
-" campaign does everything fully automatically.\n"
-"\n"
-"While the campaign runs you can of course continue to fine-tune the parameters,\n"
-"input segments, workflow.\n"
-"\n"
-"**Note:** If you need demo data, you can install the marketing_campaign_crm_demo\n"
-" module, but this will also install the CRM application as it depends on\n"
-" CRM Leads.\n"
-" "
+#: model:ir.module.module,summary:base.module_hw_escpos
+msgid "Hardware Driver for ESC/POS Printers and Cashdrawers"
msgstr ""
#. module: base
-#: help:ir.mail_server,smtp_debug:0
-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!)"
+#: model:ir.module.module,summary:base.module_hw_scale
+msgid "Hardware Driver for Weighting Scales"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_sale_margin
-msgid "\n"
-"This module adds the 'Margin' on sales order.\n"
-"=============================================\n"
-"\n"
-"This gives the profitability by calculating the difference between the Unit\n"
-"Price and Cost Price.\n"
-" "
+#: model:ir.module.category,name:base.module_category_hardware_drivers
+msgid "Hardware Drivers"
msgstr ""
#. module: base
-#: selection:ir.actions.todo,type:0
-msgid "Launch Automatically"
+#: model:ir.module.module,shortdesc:base.module_hw_proxy
+msgid "Hardware Proxy"
msgstr ""
#. module: base
-#: help:ir.model.fields,translate:0
-msgid "Whether values for this field can be translated (enables the translation mechanism for that field)"
+#: model:res.country,name:base.hm
+msgid "Heard and McDonald Islands"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Indonesian / Bahasa Indonesia"
+msgid "Hebrew / עִבְרִי"
msgstr ""
#. module: base
-#: model:res.country,name:base.cv
-msgid "Cape Verde"
+#: view:ir.actions.act_window:base.view_window_action_form
+#: view:ir.actions.server:base.view_server_action_form
+#: selection:ir.translation,type:0
+msgid "Help"
msgstr ""
#. module: base
-#: model:res.groups,comment:base.group_sale_salesman
-msgid "the user will have access to his own data in the sales application."
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Help with Python expressions."
msgstr ""
#. module: base
-#: model:res.groups,comment:base.group_user
-msgid "the user will be able to manage his own human resources stuff (leave request, timesheets, ...), if he is linked to an employee in the system."
+#: model:ir.module.module,shortdesc:base.module_crm_helpdesk
+msgid "Helpdesk"
msgstr ""
#. module: base
-#: code:addons/orm.py:2246
-#, python-format
-msgid "There is no view of type '%s' defined for the structure!"
+#: model:ir.module.category,description:base.module_category_point_of_sale
+msgid "Helps you get the most out of your points of sales with fast sale encoding, simplified payment mode encoding, automatic picking lists generation and more."
msgstr ""
#. module: base
-#: help:ir.values,key:0
-msgid "- Action: an action attached to one slot of the given model\n"
-"- Default: a default value for a model field"
+#: model:ir.module.category,description:base.module_category_accounting_and_finance
+msgid "Helps you handle your accounting needs, if you are not an accountant, we suggest you to install only the Invoicing."
msgstr ""
#. module: base
-#: field:base.module.update,add:0
-msgid "Number of modules added"
+#: model:ir.module.category,description:base.module_category_sales_management
+msgid "Helps you handle your quotations, sale orders and invoicing."
msgstr ""
#. module: base
-#: view:res.currency:0
-msgid "Price Accuracy"
+#: model:ir.module.category,description:base.module_category_human_resources
+msgid "Helps you manage your human resources by encoding your employees structure, generating work sheets, tracking attendance and more."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Latvian / latviešu valoda"
+#: model:ir.module.category,description:base.module_category_warehouse_management
+msgid "Helps you manage your inventory and main stock operations: delivery orders, receptions, etc."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "French / Français"
+#: model:ir.module.category,description:base.module_category_manufacturing
+msgid "Helps you manage your manufacturing processes and generate reports on those processes."
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Created Menus"
+#: model:ir.module.category,description:base.module_category_marketing
+msgid "Helps you manage your marketing campaigns step by step."
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:503
-#: view:ir.module.module:0
+#: model:ir.module.category,description:base.module_category_project_management
+msgid "Helps you manage your projects and tasks by tracking them, generating plannings, etc..."
+msgstr ""
+
+#. module: base
+#: model:ir.module.category,description:base.module_category_purchase_management
+msgid "Helps you manage your purchase-related processes such as requests for quotations, supplier invoices, etc..."
+msgstr ""
+
+#. module: base
+#: view:base.language.export:base.wizard_lang_export
+msgid "Here is the exported translation file:"
+msgstr ""
+
+#. module: base
+#: code:addons/base/ir/ir_mail_server.py:217
#, python-format
-msgid "Uninstall"
+msgid "Here is what we got instead:\n"
+" %s"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_budget
-msgid "Budgets Management"
+#: selection:base.language.install,lang:0
+msgid "Hindi / हिंदी"
msgstr ""
#. module: base
-#: field:workflow.triggers,workitem_id:0
-msgid "Workitem"
+#: view:ir.attachment:base.view_attachment_form
+msgid "History"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_anonymization
-msgid "Database Anonymization"
+#: model:ir.module.module,summary:base.module_hr_holidays
+msgid "Holidays, Allocation and Leave Requests"
msgstr ""
#. module: base
-#: selection:ir.mail_server,smtp_encryption:0
-msgid "SSL/TLS"
+#: model:res.country,name:base.va
+msgid "Holy See (Vatican City State)"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_hr
-msgid "\n"
-"Croatian localisation.\n"
-"======================\n"
-"\n"
-"Author: Goran Kliska, Slobodni programi d.o.o., Zagreb\n"
-" http://www.slobodni-programi.hr\n"
-"\n"
-"Contributions:\n"
-" Tomislav Bošnjaković, Storm Computers: tipovi konta\n"
-" Ivan Vađić, Slobodni programi: tipovi konta\n"
-"\n"
-"Description:\n"
-"\n"
-"Croatian Chart of Accounts (RRIF ver.2012)\n"
-"\n"
-"RRIF-ov računski plan za poduzetnike za 2012.\n"
-"Vrste konta\n"
-"Kontni plan prema RRIF-u, dorađen u smislu kraćenja naziva i dodavanja analitika\n"
-"Porezne grupe prema poreznoj prijavi\n"
-"Porezi PDV obrasca\n"
-"Ostali porezi \n"
-"Osnovne fiskalne pozicije\n"
-"\n"
-"Izvori podataka:\n"
-" http://www.rrif.hr/dok/preuzimanje/rrif-rp2011.rar\n"
-" http://www.rrif.hr/dok/preuzimanje/rrif-rp2012.rar\n"
-"\n"
-""
+#: field:res.users,action_id:0
+msgid "Home Action"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-#: field:ir.actions.act_window.view,act_window_id:0
-#: view:ir.actions.actions:0
-#: field:ir.actions.todo,action_id:0
-#: field:ir.ui.menu,action:0
-#: selection:ir.values,key:0
-msgid "Action"
+#: model:res.country,name:base.hn
+msgid "Honduras"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Email Configuration"
+#: model:ir.module.module,shortdesc:base.module_l10n_hn
+msgid "Honduras - Accounting"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_cron
-msgid "ir.cron"
+#: model:res.country,name:base.hk
+msgid "Hong Kong"
msgstr ""
#. module: base
-#: model:res.country,name:base.cw
-msgid "Curaçao"
+#: help:ir.mail_server,smtp_host:0
+msgid "Hostname or IP of SMTP server"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Current Year without Century: %(y)s"
+#: view:ir.sequence:base.sequence_view
+msgid "Hour 00->12: %(h12)s"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_config_list_action
-#: view:ir.config_parameter:0
-#: model:ir.ui.menu,name:base.ir_config_menu
-msgid "System Parameters"
+#: view:ir.sequence:base.sequence_view
+msgid "Hour 00->24: %(h24)s"
msgstr ""
#. module: base
-#: help:ir.actions.client,tag:0
-msgid "An arbitrary string, interpreted by the client according to its own needs and wishes. There is no central tag repository across clients."
+#: selection:ir.cron,interval_type:0
+msgid "Hours"
msgstr ""
#. module: base
-#: sql_constraint:ir.rule:0
-msgid "Rule must have at least one checked access right !"
+#: help:ir.cron,numbercall:0
+msgid "How many times the method is called,\n"
+"a negative number indicates no limit."
msgstr ""
#. module: base
-#: field:res.partner.bank.type,format_layout:0
-msgid "Format Layout"
+#: model:ir.module.category,name:base.module_category_human_resources
+msgid "Human Resources"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_document_ftp
-msgid "\n"
-"This is a support FTP Interface with document management system.\n"
-"================================================================\n"
-"\n"
-"With this module you would not only be able to access documents through OpenERP\n"
-"but you would also be able to connect with them through the file system using the\n"
-"FTP client.\n"
-""
+#: model:ir.module.category,name:base.module_category_human_ressources
+msgid "Human Ressources"
msgstr ""
#. module: base
-#: field:ir.model.fields,size:0
-msgid "Size"
+#: model:ir.module.module,shortdesc:base.module_l10n_hu
+msgid "Hungarian - Accounting"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_audittrail
-msgid "Audit Trail"
+#: selection:base.language.install,lang:0
+msgid "Hungarian / Magyar"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:264
-#, python-format
-msgid "Value '%s' not found in selection field '%%(field)s'"
+#: model:res.country,name:base.hu
+msgid "Hungary"
msgstr ""
#. module: base
-#: model:res.country,name:base.sd
-msgid "Sudan"
+#: model:ir.module.module,shortdesc:base.module_base_iban
+msgid "IBAN Bank Accounts"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_currency_rate_type_form
-#: model:ir.model,name:base.model_res_currency_rate_type
-#: field:res.currency.rate,currency_rate_type_id:0
-#: view:res.currency.rate.type:0
-msgid "Currency Rate Type"
+#: field:base.language.export,id:0
+#: field:base.language.import,id:0
+#: field:base.language.install,id:0
+#: field:base.module.configuration,id:0
+#: field:base.module.update,id:0
+#: field:base.module.upgrade,id:0
+#: field:base.update.translations,id:0
+#: field:change.password.user,id:0
+#: field:change.password.wizard,id:0
+#: field:ir.actions.act_url,id:0
+#: field:ir.actions.act_window,id:0
+#: field:ir.actions.act_window.view,id:0
+#: field:ir.actions.act_window_close,id:0
+#: field:ir.actions.actions,id:0
+#: field:ir.actions.client,id:0
+#: field:ir.actions.report.xml,id:0
+#: field:ir.actions.server,id:0
+#: field:ir.actions.todo,id:0
+#: field:ir.attachment,id:0
+#: field:ir.config_parameter,id:0
+#: field:ir.cron,id:0
+#: field:ir.default,id:0
+#: field:ir.exports,id:0
+#: field:ir.exports.line,id:0
+#: field:ir.fields.converter,id:0
+#: field:ir.filters,id:0
+#: field:ir.http,id:0
+#: field:ir.logging,id:0
+#: field:ir.mail_server,id:0
+#: field:ir.model,id:0
+#: field:ir.model.access,id:0
+#: field:ir.model.constraint,id:0
+#: field:ir.model.data,id:0
+#: field:ir.model.fields,id:0
+#: field:ir.model.relation,id:0
+#: field:ir.module.category,id:0
+#: field:ir.module.module,id:0
+#: field:ir.module.module.dependency,id:0
+#: field:ir.needaction_mixin,id:0
+#: field:ir.property,id:0
+#: field:ir.qweb,id:0
+#: field:ir.qweb.field,id:0
+#: field:ir.qweb.field.contact,id:0
+#: field:ir.qweb.field.date,id:0
+#: field:ir.qweb.field.datetime,id:0
+#: field:ir.qweb.field.duration,id:0
+#: field:ir.qweb.field.float,id:0
+#: field:ir.qweb.field.html,id:0
+#: field:ir.qweb.field.image,id:0
+#: field:ir.qweb.field.many2one,id:0
+#: field:ir.qweb.field.monetary,id:0
+#: field:ir.qweb.field.qweb,id:0
+#: field:ir.qweb.field.relative,id:0
+#: field:ir.qweb.field.selection,id:0
+#: field:ir.qweb.field.text,id:0
+#: field:ir.qweb.widget,id:0
+#: field:ir.qweb.widget.monetary,id:0
+#: field:ir.rule,id:0
+#: field:ir.sequence,id:0
+#: field:ir.sequence.type,id:0
+#: field:ir.server.object.lines,id:0
+#: field:ir.translation,id:0
+#: field:ir.ui.menu,id:0
+#: field:ir.ui.view,id:0
+#: field:ir.ui.view.custom,id:0
+#: field:ir.values,id:0
+#: field:multi_company.default,id:0
+#: field:osv_memory.autovacuum,id:0
+#: field:res.bank,id:0
+#: field:res.company,id:0
+#: field:res.config,id:0
+#: field:res.config.installer,id:0
+#: field:res.config.settings,id:0
+#: field:res.country,id:0
+#: field:res.country.group,id:0
+#: field:res.country.state,id:0
+#: field:res.currency,id:0
+#: field:res.currency.rate,id:0
+#: field:res.font,id:0
+#: field:res.groups,id:0
+#: field:res.lang,id:0
+#: field:res.partner,id:0
+#: field:res.partner.bank,id:0
+#: field:res.partner.bank.type,id:0
+#: field:res.partner.bank.type.field,id:0
+#: field:res.partner.category,id:0
+#: field:res.partner.title,id:0
+#: field:res.request.link,id:0
+#: field:res.users,id:0
+#: field:wizard.ir.model.menu.create,id:0
+#: field:workflow,id:0
+#: field:workflow.activity,id:0
+#: field:workflow.instance,id:0
+#: field:workflow.transition,id:0
+#: field:workflow.triggers,id:0
+#: field:workflow.workitem,id:0
+msgid "ID"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_fr
-msgid "\n"
-"This is the module to manage the accounting chart for France in OpenERP.\n"
-"========================================================================\n"
-"\n"
-"This module applies to companies based in France mainland. It doesn't apply to\n"
-"companies based in the DOM-TOMs (Guadeloupe, Martinique, Guyane, Réunion, Mayotte).\n"
-"\n"
-"This localisation module creates the VAT taxes of type 'tax included' for purchases\n"
-"(it is notably required when you use the module 'hr_expense'). Beware that these\n"
-"'tax included' VAT taxes are not managed by the fiscal positions provided by this\n"
-"module (because it is complex to manage both 'tax excluded' and 'tax included'\n"
-"scenarios in fiscal positions).\n"
-"\n"
-"This localisation module doesn't properly handle the scenario when a France-mainland\n"
-"company sells services to a company based in the DOMs. We could manage it in the\n"
-"fiscal positions, but it would require to differentiate between 'product' VAT taxes\n"
-"and 'service' VAT taxes. We consider that it is too 'heavy' to have this by default\n"
-"in l10n_fr; companies that sell services to DOM-based companies should update the\n"
-"configuration of their taxes and fiscal positions manually.\n"
-"\n"
-"**Credits:** Sistheo, Zeekom, CrysaLEAD, Akretion and Camptocamp.\n"
-""
+#: field:ir.default,ref_id:0
+msgid "ID Ref."
msgstr ""
#. module: base
-#: model:res.country,name:base.fm
-msgid "Micronesia"
+#: help:ir.model.data,res_id:0
+msgid "ID of the target record in the database"
msgstr ""
#. module: base
-#: field:ir.module.module,menus_by_module:0
-#: view:res.groups:0
-msgid "Menus"
+#: help:ir.ui.view,xml_id:0
+msgid "ID of the view defined in xml file"
msgstr ""
#. module: base
-#: selection:ir.actions.todo,type:0
-msgid "Launch Manually Once"
+#: model:ir.module.module,shortdesc:base.module_bus
+msgid "IM Bus"
msgstr ""
#. module: base
-#: view:workflow:0
-#: view:workflow.activity:0
-#: field:workflow.activity,wkf_id:0
-#: field:workflow.instance,wkf_id:0
-#: field:workflow.transition,wkf_id:0
-#: field:workflow.workitem,wkf_id:0
-msgid "Workflow"
+#: field:base.language.import,code:0
+msgid "ISO Code"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Serbian (Latin) / srpski"
+#: help:base.language.import,code:0
+msgid "ISO Language and Country code, e.g. en_US"
msgstr ""
#. module: base
-#: model:res.country,name:base.il
-msgid "Israel"
+#: field:res.lang,iso_code:0
+msgid "ISO code"
msgstr ""
#. module: base
-#: code:addons/base/res/res_config.py:443
-#, python-format
-msgid "Cannot duplicate configuration!"
+#: model:res.partner.category,name:base.res_partner_category_7
+msgid "IT Services"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_syscohada
-msgid "OHADA - Accounting"
+#: model:res.country,name:base.is
+msgid "Iceland"
msgstr ""
#. module: base
-#: help:res.bank,bic:0
-msgid "Sometimes called BIC or Swift."
+#: field:ir.module.module,icon_image:0
+#: field:ir.ui.menu,icon:0
+msgid "Icon"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_in
-msgid "Indian - Accounting"
+#: field:ir.module.module,icon:0
+msgid "Icon URL"
msgstr ""
#. module: base
-#: field:res.lang,time_format:0
-msgid "Time Format"
+#: help:ir.actions.act_window,multi:0
+msgid "If checked and the action is bound to a model, it will only appear in the More menu on list views"
msgstr ""
#. module: base
-#: field:res.company,rml_header3:0
-msgid "RML Internal Header for Landscape Reports"
+#: help:ir.mail_server,smtp_debug:0
+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 ""
#. module: base
-#: model:res.groups,name:base.group_partner_manager
-msgid "Contact Creation"
+#: help:ir.rule,global:0
+msgid "If no group is specified the rule is global and applied to everyone"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Defined Reports"
+#: help:ir.property,res_id:0
+msgid "If not set, acts as a default value for new resources"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_project_gtd
-msgid "Todo Lists"
+#: help:ir.actions.act_window.view,multi:0
+#: help:ir.actions.report.xml,multi:0
+msgid "If set to true, the action will not be displayed on the right toolbar of a form view."
msgstr ""
#. module: base
-#: view:ir.actions.report.xml:0
-msgid "Report xml"
+#: help:ir.values,company_id:0
+msgid "If set, action binding only applies for this company"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_module_open_categ
-#: model:ir.actions.act_window,name:base.open_module_tree
-#: field:ir.module.category,module_ids:0
-#: view:ir.module.module:0
-#: model:ir.ui.menu,name:base.menu_management
-msgid "Modules"
+#: help:ir.values,user_id:0
+msgid "If set, action binding only applies for this user."
msgstr ""
#. module: base
-#: view:workflow.activity:0
-#: selection:workflow.activity,kind:0
-#: field:workflow.activity,subflow_id:0
-#: field:workflow.workitem,subflow_id:0
-msgid "Subflow"
+#: help:ir.model.fields,serialization_field_id:0
+msgid "If set, this field will be stored in the sparse structure of the serialization field, instead of having its own database column. This cannot be changed after creation."
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_res_bank_form
-#: model:ir.ui.menu,name:base.menu_action_res_bank_form
-#: view:res.bank:0
-#: field:res.partner,bank_ids:0
-msgid "Banks"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "If several child actions return an action, only the last one will be executed.\n"
+" This may happen when having server actions executing code that returns an action, or server actions returning a client action."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web
-msgid "\n"
-"OpenERP Web core module.\n"
-"========================\n"
-"\n"
-"This module provides the core of the OpenERP Web Client.\n"
-" "
+#: help:res.users,action_id:0
+msgid "If specified, this action will be opened at log on for this user, in addition to the standard menu."
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Week of the Year: %(woy)s"
+#: help:ir.ui.menu,needaction_enabled:0
+msgid "If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false."
msgstr ""
#. module: base
-#: field:res.users,id:0
-msgid "ID"
+#: help:res.partner,lang:0
+msgid "If the selected language is loaded in the system, all documents related to this contact will be printed in this language. If not, it will be English."
msgstr ""
#. module: base
-#: field:ir.cron,doall:0
-msgid "Repeat Missed"
+#: help:ir.ui.view,groups_id:0
+msgid "If this field is empty, the view applies to all users. Otherwise, the view applies to the users of those groups only."
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_module_import.py:67
-#, python-format
-msgid "Can not create the module file: %s !"
+#: help:ir.ui.view,application:0
+msgid "If this view is inherited,\n"
+"* if always, the view always extends its parent\n"
+"* if enabled, the view currently extends its parent but can be disabled\n"
+"* if disabled, the view currently does not extend its parent but can be enabled\n"
+" "
msgstr ""
#. module: base
-#: field:ir.server.object.lines,server_id:0
-msgid "Object Mapping"
+#: model:ir.actions.act_window,help:base.action_country_state
+msgid "If you are working on the American market, you can manage the different federal states you are working on from here. Each state is attached to one country."
msgstr ""
#. module: base
-#: field:ir.module.category,xml_id:0
-#: field:ir.ui.view,xml_id:0
-msgid "External ID"
+#: help:base.language.install,overwrite:0
+msgid "If you check this box, your customized translations will be overwritten and replaced by the official ones."
msgstr ""
#. module: base
-#: help:res.currency.rate,rate:0
-msgid "The rate of the currency to the currency of rate 1"
+#: help:ir.actions.report.xml,attachment_use:0
+msgid "If you check this, then the second time the user prints with same attachment name, it returns the previous report."
msgstr ""
#. module: base
-#: model:res.country,name:base.uk
-msgid "United Kingdom"
+#: help:base.language.import,overwrite:0
+msgid "If you enable this option, existing translations (including custom ones) will be overwritten and replaced by those in this file"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_pa
-msgid "Panama Localization Chart Account"
+#: help:ir.ui.menu,groups_id:0
+msgid "If you have groups, the visibility of this menu will be based on these groups. If this field is empty, Odoo will compute visibility based on the related object's read access."
msgstr ""
#. module: base
-#: help:res.partner.category,active:0
-msgid "The active field allows you to hide the category without removing it."
+#: help:ir.model.access,active:0
+msgid "If you uncheck the active field, it will disable the ACL without deleting it (if you delete a native ACL, it will be re-created when you reload the module."
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "Object:"
+#: help:ir.rule,active:0
+msgid "If you uncheck the active field, it will disable the record rule without deleting it (if you delete a native record rule, it may be re-created when you reload the module."
msgstr ""
#. module: base
-#: model:res.country,name:base.bw
-msgid "Botswana"
+#: view:base.module.upgrade:base.view_base_module_upgrade
+msgid "If you wish to cancel the process, press the cancel button below"
msgstr ""
#. module: base
-#: view:res.partner.title:0
-msgid "Partner Titles"
+#: field:res.country,image:0
+#: field:res.partner,image:0
+msgid "Image"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:196
-#: code:addons/base/ir/ir_fields.py:227
-#, python-format
-msgid "Use the format '%s'"
+#: view:base.module.upgrade:base.view_base_module_upgrade
+msgid "Impacted Modules"
msgstr ""
#. module: base
-#: help:ir.actions.act_window,auto_refresh:0
-msgid "Add an auto-refresh on the view"
+#: field:ir.sequence,implementation:0
+msgid "Implementation"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_crm_profiling
-msgid "Customer Profiling"
+#: model:ir.ui.menu,name:base.menu_import_crm
+msgid "Import & Synchronize"
msgstr ""
#. module: base
-#: selection:ir.cron,interval_type:0
-msgid "Work Days"
+#: model:ir.ui.menu,name:base.menu_translation_export
+msgid "Import / Export"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_multi_company
-msgid "Multi-Company"
+#: view:base.language.import:base.view_base_import_language
+#: model:ir.actions.act_window,name:base.action_view_base_import_language
+#: model:ir.ui.menu,name:base.menu_view_base_import_language
+msgid "Import Translation"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_workflow_workitem_form
-#: model:ir.ui.menu,name:base.menu_workflow_workitem
-msgid "Workitems"
+#: view:ir.model:base.view_model_search
+msgid "In Memory"
msgstr ""
#. module: base
-#: code:addons/base/res/res_bank.py:195
-#, python-format
-msgid "Invalid Bank Account Type Name format."
+#: field:ir.model,modules:0
+#: field:ir.model.fields,modules:0
+msgid "In Modules"
msgstr ""
#. module: base
-#: view:ir.filters:0
-msgid "Filters visible only for one user"
+#: view:workflow.activity:base.view_workflow_activity_form
+#: field:workflow.activity,in_transitions:0
+msgid "Incoming Transitions"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_attachment
-msgid "ir.attachment"
+#: constraint:ir.actions.server:0
+msgid "Incorrect Write Record Expression"
msgstr ""
#. module: base
-#: code:addons/orm.py:4347
+#: field:ir.sequence,number_increment:0
+msgid "Increment Number"
+msgstr ""
+
+#. module: base
+#: code:addons/base/ir/ir_sequence.py:134
+#: code:addons/base/ir/ir_sequence.py:160
#, python-format
-msgid "You cannot perform this operation. New Record Creation is not allowed for this object as this object is for reporting purpose."
+msgid "Increment number must not be zero."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_import
-msgid "\n"
-"New extensible file import for OpenERP\n"
-"======================================\n"
-"\n"
-"Re-implement openerp's file import system:\n"
-"\n"
-"* Server side, the previous system forces most of the logic into the\n"
-" client which duplicates the effort (between clients), makes the\n"
-" import system much harder to use without a client (direct RPC or\n"
-" other forms of automation) and makes knowledge about the\n"
-" import/export system much harder to gather as it is spread over\n"
-" 3+ different projects.\n"
-"\n"
-"* In a more extensible manner, so users and partners can build their\n"
-" own front-end to import from other file formats (e.g. OpenDocument\n"
-" files) which may be simpler to handle in their work flow or from\n"
-" their data production sources.\n"
-"\n"
-"* In a module, so that administrators and users of OpenERP who do not\n"
-" need or want an online import can avoid it being available to users.\n"
-""
+#: model:res.country,name:base.in
+msgid "India"
msgstr ""
#. module: base
-#: selection:res.currency,position:0
-msgid "After Amount"
+#: model:ir.module.module,shortdesc:base.module_l10n_in
+msgid "Indian - Accounting"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Lithuanian / Lietuvių kalba"
+#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
+msgid "Indian Payroll"
msgstr ""
#. module: base
-#: help:ir.actions.server,record_id:0
-msgid "Provide the field name where the record id is stored after the create operations. If it is empty, you can not track the new record."
+#: model:res.country,name:base.id
+msgid "Indonesia"
msgstr ""
#. module: base
-#: model:res.groups,comment:base.group_hr_user
-msgid "the user will be able to approve document created by employees."
+#: selection:base.language.install,lang:0
+msgid "Indonesian / Bahasa Indonesia"
msgstr ""
#. module: base
-#: field:ir.ui.menu,needaction_enabled:0
-msgid "Target model uses the need action mechanism"
+#: view:ir.cron:base.ir_cron_view
+#: field:ir.model,info:0
+#: view:ir.module.module:base.module_form
+msgid "Information"
msgstr ""
#. module: base
-#: help:ir.model.fields,relation:0
-msgid "For relationship fields, the technical name of the target model"
+#: view:res.partner.bank:base.view_partner_bank_form
+msgid "Information About the Bank"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%S - Seconds [00,61]."
+#: view:ir.ui.view:base.view_view_search
+msgid "Inherit"
msgstr ""
#. module: base
-#: help:base.language.import,overwrite:0
-msgid "If you enable this option, existing translations (including custom ones) will be overwritten and replaced by those in this file"
+#: field:ir.ui.view,inherit_children_ids:0
+msgid "Inherit Views"
+msgstr ""
+
+#. module: base
+#: view:res.groups:base.view_groups_form
+msgid "Inherited"
msgstr ""
#. module: base
@@ -6386,953 +8673,969 @@ msgid "Inherited View"
msgstr ""
#. module: base
-#: view:ir.translation:0
-msgid "Source Term"
+#: view:ir.ui.view:base.view_view_form
+msgid "Inherited Views"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_project_management
-#: model:ir.ui.menu,name:base.menu_main_pm
-#: model:ir.ui.menu,name:base.menu_project_config
-#: model:ir.ui.menu,name:base.menu_project_report
-msgid "Project"
+#: field:res.groups,implied_ids:0
+msgid "Inherits"
msgstr ""
#. module: base
-#: field:ir.ui.menu,web_icon_hover_data:0
-msgid "Web Icon Image (hover)"
+#: field:ir.model.data,date_init:0
+msgid "Init Date"
msgstr ""
#. module: base
-#: view:base.module.import:0
-msgid "Module file successfully imported!"
+#: model:ir.module.module,shortdesc:base.module_base_setup
+msgid "Initial Setup Tools"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_model_constraint
-#: view:ir.model.constraint:0
-#: model:ir.ui.menu,name:base.ir_model_constraint_menu
-msgid "Model Constraints"
+#: field:ir.model.constraint,date_init:0
+#: field:ir.model.relation,date_init:0
+msgid "Initialization Date"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_workflow_transition_form
-#: model:ir.ui.menu,name:base.menu_workflow_transition
-#: view:workflow.activity:0
-msgid "Transitions"
+#: selection:ir.actions.act_window,target:0
+msgid "Inline Edit"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_timesheet
-#: model:ir.module.module,shortdesc:base.module_hr_timesheet_sheet
-msgid "Timesheets"
+#: selection:ir.actions.act_window,target:0
+msgid "Inline View"
msgstr ""
#. module: base
-#: help:ir.values,company_id:0
-msgid "If set, action binding only applies for this company"
+#: code:addons/base/module/module.py:440
+#: view:ir.module.module:base.module_form
+#: view:ir.module.module:base.module_view_kanban
+#, python-format
+msgid "Install"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_cn
-msgid "\n"
-"添加中文省份数据\n"
-"科目类型\\会计科目表模板\\增值税\\辅助核算类别\\管理会计凭证簿\\财务会计凭证簿\n"
-"============================================================\n"
-" "
+#: model:ir.model,name:base.model_base_language_install
+msgid "Install Language"
msgstr ""
#. module: base
-#: model:res.country,name:base.lc
-msgid "Saint Lucia"
+#: view:res.config.installer:base.res_config_installer
+msgid "Install Modules"
msgstr ""
#. module: base
-#: help:res.users,new_password:0
-msgid "Specify a value only when creating a user or if you're changing the user's password, otherwise leave empty. After a change of password, the user has to login again."
+#: view:ir.module.module:base.module_view_kanban
+#: view:ir.module.module:base.view_module_filter
+#: selection:ir.module.module,state:0
+msgid "Installed"
msgstr ""
#. module: base
-#: model:res.country,name:base.so
-msgid "Somalia"
+#: view:ir.module.module:base.module_form
+msgid "Installed Features"
msgstr ""
#. module: base
-#: model:res.partner.title,shortcut:base.res_partner_title_doctor
-msgid "Dr."
+#: model:ir.actions.act_window,name:base.open_module_tree
+#: model:ir.ui.menu,name:base.menu_module_tree
+msgid "Installed Modules"
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_user
-#: field:res.partner,employee:0
-#: model:res.partner.category,name:base.res_partner_category_3
-msgid "Employee"
+#: field:ir.module.module,latest_version:0
+msgid "Installed Version"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_project_issue
-msgid "\n"
-"Track Issues/Bugs Management for Projects\n"
-"=========================================\n"
-"This application allows you to manage the issues you might face in a project like bugs in a system, client complaints or material breakdowns. \n"
-"\n"
-"It allows the manager to quickly check the issues, assign them and decide on their status quickly as they evolve.\n"
-" "
+#: field:workflow.workitem,inst_id:0
+msgid "Instance"
msgstr ""
#. module: base
-#: field:ir.model.access,perm_create:0
-msgid "Create Access"
+#: model:ir.actions.act_window,name:base.action_workflow_instance_form
+#: model:ir.ui.menu,name:base.menu_workflow_instance
+msgid "Instances"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_timesheet
-msgid "\n"
-"This module implements a timesheet system.\n"
-"==========================================\n"
-"\n"
-"Each employee can encode and track their time spent on the different projects.\n"
-"A project is an analytic account and the time spent on a project generates costs on\n"
-"the analytic account.\n"
-"\n"
-"Lots of reporting on time and employee tracking are provided.\n"
-"\n"
-"It is completely integrated with the cost accounting module. It allows you to set\n"
-"up a management by affair.\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_im_chat
+msgid "Instant Messaging"
msgstr ""
#. module: base
-#: field:res.bank,state:0
-#: field:res.company,state_id:0
-#: field:res.partner.bank,state_id:0
-msgid "Fed. State"
+#: model:ir.module.module,description:base.module_bus
+msgid "Instant Messaging Bus allow you to send messages to users, in live."
msgstr ""
#. module: base
-#: field:ir.actions.server,copy_object:0
-msgid "Copy Of"
+#: selection:ir.property,type:0
+msgid "Integer"
msgstr ""
#. module: base
-#: field:ir.model.data,display_name:0
-msgid "Record Name"
+#: view:ir.rule:base.view_rule_form
+msgid "Interaction between rules"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_client
-#: selection:ir.ui.menu,action:0
-msgid "ir.actions.client"
+#: view:res.partner:base.view_partner_form
+msgid "Internal Notes"
msgstr ""
#. module: base
-#: model:res.country,name:base.io
-msgid "British Indian Ocean Territory"
+#: field:ir.cron,interval_number:0
+msgid "Interval Number"
msgstr ""
#. module: base
-#: model:ir.actions.server,name:base.action_server_module_immediate_install
-msgid "Module Immediate Install"
+#: field:ir.cron,interval_type:0
+msgid "Interval Unit"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Field Mapping"
+#: model:ir.module.module,shortdesc:base.module_report_intrastat
+msgid "Intrastat Reporting"
msgstr ""
#. module: base
-#: field:ir.model.fields,ttype:0
-msgid "Field Type"
+#: report:ir.module.reference:0
+msgid "Introspection report on objects"
msgstr ""
#. module: base
-#: field:res.country.state,code:0
-msgid "State Code"
+#: selection:base.language.install,lang:0
+msgid "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_multilang
-msgid "Multi Language Chart of Accounts"
+#: code:addons/base/res/res_bank.py:188
+#, python-format
+msgid "Invalid Bank Account Type Name format."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_gt
-msgid "\n"
-"This is the base module to manage the accounting chart for Guatemala.\n"
-"=====================================================================\n"
-"\n"
-"Agrega una nomenclatura contable para Guatemala. También icluye impuestos y\n"
-"la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also includes\n"
-"taxes and the Quetzal currency."
+#: code:addons/base/ir/ir_model.py:84
+#, python-format
+msgid "Invalid Search Criteria"
msgstr ""
#. module: base
-#: selection:res.lang,direction:0
-msgid "Left-to-Right"
+#: constraint:ir.cron:0
+msgid "Invalid arguments"
msgstr ""
#. module: base
-#: field:ir.model.fields,translate:0
-#: view:res.lang:0
-#: field:res.lang,translatable:0
-msgid "Translatable"
+#: code:addons/base/res/res_users.py:839
+#, python-format
+msgid "Invalid context default_groups_ref value (model.name_id) : \"%s\""
msgstr ""
#. module: base
-#: help:base.language.import,code:0
-msgid "ISO Language and Country code, e.g. en_US"
+#: code:addons/base/res/res_users.py:839
+#, python-format
+msgid "Invalid context value"
msgstr ""
#. module: base
-#: model:res.country,name:base.vn
-msgid "Vietnam"
+#: code:addons/base/ir/ir_fields.py:323
+#, python-format
+msgid "Invalid database id '%s' for the field '%%(field)s'"
msgstr ""
#. module: base
-#: field:res.users,signature:0
-msgid "Signature"
+#: constraint:res.lang:0
+msgid "Invalid date/time format directive specified. Please refer to the list of allowed directives, displayed when you edit a language."
msgstr ""
#. module: base
-#: field:res.partner.category,complete_name:0
-msgid "Full Name"
+#: sql_constraint:ir.ui.view:0
+msgid "Invalid inheritance mode: if the mode is 'extension', the view must extend an other view"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "on"
+#: code:addons/base/ir/ir_actions.py:222
+#, python-format
+msgid "Invalid model name in the action definition."
msgstr ""
#. module: base
-#: view:ir.property:0
-msgid "Parameters that are used by all resources."
+#: code:addons/base/ir/ir_ui_view.py:488
+#, python-format
+msgid "Invalid position attribute: '%s'"
msgstr ""
#. module: base
-#: model:res.country,name:base.mz
-msgid "Mozambique"
+#: code:addons/base/ir/ir_sequence.py:260
+#, python-format
+msgid "Invalid prefix or suffix for sequence '%s'"
msgstr ""
#. module: base
-#: help:ir.values,action_id:0
-msgid "Action bound to this entry - helper field for binding an action, will automatically set the correct reference"
+#: constraint:ir.ui.view:0
+msgid "Invalid view definition"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_project_long_term
-msgid "Long Term Planning"
+#: model:ir.module.category,name:base.module_category_generic_modules_inventory_control
+msgid "Inventory Control"
msgstr ""
#. module: base
-#: field:ir.actions.server,message:0
-msgid "Message"
+#: model:ir.module.module,summary:base.module_stock
+msgid "Inventory, Logistic, Storage"
msgstr ""
#. module: base
-#: field:ir.actions.act_window.view,multi:0
-#: field:ir.actions.report.xml,multi:0
-msgid "On Multiple Doc."
+#: model:ir.module.module,summary:base.module_stock_account
+msgid "Inventory, Logistic, Valuation, Accounting"
msgstr ""
#. module: base
-#: view:base.language.export:0
-#: view:base.language.import:0
-#: view:base.language.install:0
-#: view:base.module.import:0
-#: view:base.module.update:0
-#: view:base.module.upgrade:0
-#: view:base.update.translations:0
-#: view:change.password.wizard:0
-#: view:ir.actions.configuration.wizard:0
-#: view:res.config:0
-#: view:res.config.installer:0
-#: view:res.users:0
-#: view:wizard.ir.model.menu.create:0
-msgid "or"
+#: selection:res.partner,type:0
+msgid "Invoice"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_accountant
-msgid "Accounting and Finance"
+#: model:ir.module.module,shortdesc:base.module_stock_invoice_directly
+msgid "Invoice Picking Directly"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Upgrade"
+#: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice
+msgid "Invoice on Timesheets"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_action_rule
-msgid "\n"
-"This module allows to implement action rules for any object.\n"
-"============================================================\n"
-"\n"
-"Use automated actions to automatically trigger actions for various screens.\n"
-"\n"
-"**Example:** A lead created by a specific user may be automatically set to a specific\n"
-"sales team, or an opportunity which still has status pending after 14 days might\n"
-"trigger an automatic reminder email.\n"
-" "
+#: model:ir.ui.menu,name:base.menu_invoiced
+msgid "Invoicing"
msgstr ""
#. module: base
-#: field:res.partner,function:0
-msgid "Job Position"
+#: model:ir.module.category,name:base.module_category_account_voucher
+msgid "Invoicing & Payments"
msgstr ""
#. module: base
-#: view:res.partner:0
-#: field:res.partner,child_ids:0
-msgid "Contacts"
+#: model:ir.module.module,shortdesc:base.module_sale_journal
+msgid "Invoicing Journals"
msgstr ""
#. module: base
-#: model:res.country,name:base.fo
-msgid "Faroe Islands"
+#: model:res.country,name:base.ir
+msgid "Iran"
msgstr ""
#. module: base
-#: field:ir.mail_server,smtp_encryption:0
-msgid "Connection Security"
+#: model:res.country,name:base.iq
+msgid "Iraq"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_actions.py:606
-#, python-format
-msgid "Please specify an action to launch !"
+#: model:res.country,name:base.ie
+msgid "Ireland"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_ec
-msgid "Ecuador - Accounting"
+#: field:res.partner,is_company:0
+msgid "Is a Company"
msgstr ""
#. module: base
-#: field:res.partner.category,name:0
-msgid "Category Name"
+#: view:res.partner:base.view_partner_form
+#: view:res.partner:base.view_partner_simple_form
+msgid "Is a Company?"
msgstr ""
#. module: base
-#: model:res.country,name:base.mp
-msgid "Northern Mariana Islands"
+#: model:res.country,name:base.im
+msgid "Isle of Man"
msgstr ""
#. module: base
-#: field:change.password.user,user_login:0
-msgid "User Login"
+#: model:res.country,name:base.il
+msgid "Israel"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_hn
-msgid "Honduras - Accounting"
+#: model:ir.module.module,shortdesc:base.module_project_issue
+msgid "Issue Tracker"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_report_intrastat
-msgid "Intrastat Reporting"
+#: selection:base.language.install,lang:0
+msgid "Italian / Italiano"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:131
-#, python-format
-msgid "Please use the change password wizard (in User Preferences or User menu) to change your own password."
+#: model:res.country,name:base.it
+msgid "Italy"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_config_parameter
-msgid "ir.config_parameter"
+#: model:ir.module.module,shortdesc:base.module_l10n_it
+msgid "Italy - Accounting"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_project_long_term
-msgid "\n"
-"Long Term Project management module that tracks planning, scheduling, resources allocation.\n"
-"===========================================================================================\n"
-"\n"
-"Features:\n"
-"---------\n"
-" * Manage Big project\n"
-" * Define various Phases of Project\n"
-" * Compute Phase Scheduling: Compute start date and end date of the phases\n"
-" which are in draft, open and pending state of the project given. If no\n"
-" project given then all the draft, open and pending state phases will be taken.\n"
-" * Compute Task Scheduling: This works same as the scheduler button on\n"
-" project.phase. It takes the project as argument and computes all the open,\n"
-" draft and pending tasks.\n"
-" * Schedule Tasks: All the tasks which are in draft, pending and open state\n"
-" are scheduled with taking the phase's start date.\n"
-" "
+#: model:res.country,name:base.ci
+msgid "Ivory Coast (Cote D'Ivoire)"
msgstr ""
#. module: base
-#: code:addons/orm.py:2020
-#, python-format
-msgid "Insufficient fields for Calendar View!"
+#: model:res.country,name:base.jm
+msgid "Jamaica"
msgstr ""
#. module: base
-#: selection:ir.property,type:0
-msgid "Integer"
+#: model:res.country,name:base.jp
+msgid "Japan"
msgstr ""
#. module: base
-#: help:ir.actions.report.xml,report_rml:0
-msgid "The path to the main report file (depending on Report Type) or NULL if the content is in another data field"
+#: selection:base.language.install,lang:0
+msgid "Japanese / 日本語"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_14
-msgid "Manufacturer"
+#: model:res.country,name:base.je
+msgid "Jersey"
msgstr ""
#. module: base
-#: help:res.users,company_id:0
-msgid "The company this user is currently working for."
+#: model:ir.module.module,summary:base.module_website_hr_recruitment
+msgid "Job Descriptions And Application Forms"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_wizard_ir_model_menu_create
-msgid "wizard.ir.model.menu.create"
+#: field:res.partner,function:0
+msgid "Job Position"
msgstr ""
#. module: base
-#: view:workflow.transition:0
-msgid "Transition"
+#: model:ir.module.module,shortdesc:base.module_website_hr_recruitment
+msgid "Jobs"
msgstr ""
#. module: base
-#: field:ir.cron,active:0
-#: field:ir.model.access,active:0
-#: field:ir.rule,active:0
-#: field:ir.sequence,active:0
-#: field:res.bank,active:0
-#: field:res.currency,active:0
-#: field:res.lang,active:0
-#: field:res.partner,active:0
-#: field:res.partner.category,active:0
-#: field:res.request,active:0
-#: field:res.users,active:0
-#: view:workflow.instance:0
-#: view:workflow.workitem:0
-msgid "Active"
+#: model:ir.module.module,shortdesc:base.module_analytic_user_function
+msgid "Jobs on Contracts"
msgstr ""
#. module: base
-#: model:res.country,name:base.na
-msgid "Namibia"
+#: model:ir.module.module,summary:base.module_hr
+msgid "Jobs, Departments, Employees Details"
msgstr ""
#. module: base
-#: field:res.partner.category,child_ids:0
-msgid "Child Categories"
+#: model:ir.module.module,summary:base.module_hr_recruitment
+msgid "Jobs, Recruitment, Applications, Job Interviews, Surveys"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_actions.py:606
-#: code:addons/base/ir/ir_actions.py:702
-#: code:addons/base/ir/ir_actions.py:705
-#: code:addons/base/ir/ir_model.py:164
-#: code:addons/base/ir/ir_model.py:274
-#: code:addons/base/ir/ir_model.py:288
-#: code:addons/base/ir/ir_model.py:318
-#: code:addons/base/ir/ir_model.py:334
-#: code:addons/base/ir/ir_model.py:339
-#: code:addons/base/ir/ir_model.py:342
-#: code:addons/base/ir/ir_translation.py:341
-#: code:addons/base/module/module.py:320
-#: code:addons/base/module/module.py:362
-#: code:addons/base/module/module.py:366
-#: code:addons/base/module/module.py:372
-#: code:addons/base/module/module.py:500
-#: code:addons/base/module/module.py:526
-#: code:addons/base/module/module.py:540
-#: code:addons/base/module/module.py:645
-#: code:addons/base/res/res_currency.py:193
-#: code:addons/base/res/res_users.py:98
-#: code:addons/custom.py:555
-#: code:addons/orm.py:785
-#: code:addons/orm.py:3960
-#, python-format
-msgid "Error"
+#: field:workflow.activity,join_mode:0
+msgid "Join Mode"
msgstr ""
#. module: base
-#: help:res.partner,tz:0
-msgid "The partner's timezone, used to output proper date and time values inside printed reports. It is important to set a value for this field. You should use the same timezone that is otherwise used to pick and render date and time values: your computer's timezone."
+#: model:res.country,name:base.jo
+msgid "Jordan"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_analytic_default
-msgid "Account Analytic Defaults"
+#: model:ir.module.module,shortdesc:base.module_procurement_jit
+msgid "Just In Time Scheduling"
msgstr ""
#. module: base
+#: selection:ir.actions.act_window.view,view_mode:0
+#: view:ir.ui.view:base.view_view_search
#: selection:ir.ui.view,type:0
-msgid "mdx"
+msgid "Kanban"
msgstr ""
#. module: base
-#: view:ir.cron:0
-msgid "Scheduled Action"
+#: model:res.country,name:base.kz
+msgid "Kazakhstan"
msgstr ""
#. module: base
-#: model:res.country,name:base.bi
-msgid "Burundi"
+#: model:res.country,name:base.ke
+msgid "Kenya"
msgstr ""
#. module: base
-#: view:base.language.export:0
-#: view:base.language.install:0
-#: view:base.module.configuration:0
-#: view:base.module.update:0
-msgid "Close"
+#: view:ir.config_parameter:base.view_ir_config_search
+#: field:ir.config_parameter,key:0
+msgid "Key"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (MX) / Español (MX)"
+#: sql_constraint:ir.config_parameter:0
+msgid "Key must be unique."
msgstr ""
#. module: base
-#: view:ir.actions.todo:0
-msgid "Wizards to be Launched"
+#: field:workflow.activity,kind:0
+msgid "Kind"
msgstr ""
#. module: base
-#: model:res.country,name:base.bt
-msgid "Bhutan"
+#: model:res.country,name:base.ki
+msgid "Kiribati"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_event
-msgid "\n"
-"This module adds event menu and features to your portal if event and portal are installed.\n"
-"==========================================================================================\n"
-" "
+#: selection:base.language.install,lang:0
+msgid "Klingon"
msgstr ""
#. module: base
-#: help:ir.sequence,number_next:0
-msgid "Next number of this sequence"
+#: model:ir.module.category,name:base.module_category_knowledge_management
+msgid "Knowledge"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "at"
+#: model:ir.module.module,shortdesc:base.module_knowledge
+msgid "Knowledge Management System"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Rule Definition (Domain Filter)"
+#: model:ir.module.module,description:base.module_l10n_si
+msgid "Kontni načrt za gospodarske družbe"
msgstr ""
#. module: base
-#: selection:ir.actions.act_url,target:0
-msgid "This Window"
+#: selection:base.language.install,lang:0
+msgid "Korean (KP) / 한국어 (KP)"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_anonymous
-msgid "Anonymous portal"
+#: selection:base.language.install,lang:0
+msgid "Korean (KR) / 한국어 (KR)"
msgstr ""
#. module: base
-#: field:base.language.export,format:0
-msgid "File Format"
+#: model:res.country,name:base.kw
+msgid "Kuwait"
msgstr ""
#. module: base
-#: field:res.lang,iso_code:0
-msgid "ISO code"
+#: model:res.country,name:base.kg
+msgid "Kyrgyz Republic (Kyrgyzstan)"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_association
-msgid "Associations Management"
+#: model:ir.actions.report.xml,name:base.res_partner_address_report
+msgid "Labels"
msgstr ""
#. module: base
-#: help:ir.model,modules:0
-msgid "List of modules in which the object is defined or inherited"
+#: model:ir.module.module,summary:base.module_stock_landed_costs
+msgid "Landed Costs"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_localization_payroll
-#: model:ir.module.module,shortdesc:base.module_hr_payroll
-msgid "Payroll"
+#: field:base.language.export,lang:0
+#: field:base.language.install,lang:0
+#: field:base.update.translations,lang:0
+#: field:ir.translation,lang:0
+#: view:res.lang:base.res_lang_search
+#: field:res.partner,lang:0
+msgid "Language"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_country_state
-msgid "If you are working on the American market, you can manage the different federal states you are working on from here. Each state is attached to one country."
+#: model:ir.model,name:base.model_base_language_import
+msgid "Language Import"
msgstr ""
#. module: base
-#: view:workflow.workitem:0
-msgid "Workflow Workitems"
+#: field:base.language.import,name:0
+msgid "Language Name"
msgstr ""
#. module: base
-#: model:res.country,name:base.vc
-msgid "Saint Vincent & Grenadines"
+#: code:addons/base/module/wizard/base_language_install.py:53
+#, python-format
+msgid "Language Pack"
msgstr ""
#. module: base
-#: field:ir.mail_server,smtp_pass:0
-#: field:res.users,password:0
-msgid "Password"
+#: sql_constraint:ir.translation:0
+msgid "Language code of translation item must be among known languages"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_claim
-msgid "Portal Claim"
+#: model:ir.actions.act_window,name:base.res_lang_act_window
+#: model:ir.model,name:base.model_res_lang
+#: model:ir.ui.menu,name:base.menu_res_lang_act_window
+#: view:res.lang:base.res_lang_form
+#: view:res.lang:base.res_lang_search
+#: view:res.lang:base.res_lang_tree
+msgid "Languages"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_pe
-msgid "Peru Localization Chart Account"
+#: selection:base.language.install,lang:0
+msgid "Lao / ພາສາລາວ"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_auth_oauth
-msgid "\n"
-"Allow users to login through OAuth2 Provider.\n"
-"=============================================\n"
-""
+#: model:res.country,name:base.la
+msgid "Laos"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_model_fields
-#: view:ir.model:0
-#: field:ir.model,field_id:0
-#: model:ir.model,name:base.model_ir_model_fields
-#: view:ir.model.fields:0
-#: model:ir.ui.menu,name:base.ir_model_model_fields
-msgid "Fields"
+#: field:ir.ui.view,write_date:0
+msgid "Last Modification Date"
+msgstr ""
+
+#. module: base
+#: field:ir.attachment,write_uid:0
+msgid "Last Modification User"
+msgstr ""
+
+#. module: base
+#: field:base.language.export,write_uid:0
+#: field:base.language.import,write_uid:0
+#: field:base.language.install,write_uid:0
+#: field:base.module.configuration,write_uid:0
+#: field:base.module.update,write_uid:0
+#: field:base.module.upgrade,write_uid:0
+#: field:base.update.translations,write_uid:0
+#: field:change.password.user,write_uid:0
+#: field:change.password.wizard,write_uid:0
+#: field:ir.actions.act_url,write_uid:0
+#: field:ir.actions.act_window,write_uid:0
+#: field:ir.actions.act_window.view,write_uid:0
+#: field:ir.actions.act_window_close,write_uid:0
+#: field:ir.actions.actions,write_uid:0
+#: field:ir.actions.client,write_uid:0
+#: field:ir.actions.report.xml,write_uid:0
+#: field:ir.actions.server,write_uid:0
+#: field:ir.actions.todo,write_uid:0
+#: field:ir.config_parameter,write_uid:0
+#: field:ir.cron,write_uid:0
+#: field:ir.default,write_uid:0
+#: field:ir.exports,write_uid:0
+#: field:ir.exports.line,write_uid:0
+#: field:ir.fields.converter,write_uid:0
+#: field:ir.filters,write_uid:0
+#: field:ir.logging,write_uid:0
+#: field:ir.mail_server,write_uid:0
+#: field:ir.model,write_uid:0
+#: field:ir.model.access,write_uid:0
+#: field:ir.model.constraint,write_uid:0
+#: field:ir.model.data,write_uid:0
+#: field:ir.model.fields,write_uid:0
+#: field:ir.model.relation,write_uid:0
+#: field:ir.module.category,write_uid:0
+#: field:ir.module.module,write_uid:0
+#: field:ir.module.module.dependency,write_uid:0
+#: field:ir.property,write_uid:0
+#: field:ir.rule,write_uid:0
+#: field:ir.sequence,write_uid:0
+#: field:ir.sequence.type,write_uid:0
+#: field:ir.server.object.lines,write_uid:0
+#: field:ir.ui.menu,write_uid:0
+#: field:ir.ui.view,write_uid:0
+#: field:ir.ui.view.custom,write_uid:0
+#: field:ir.values,write_uid:0
+#: field:multi_company.default,write_uid:0
+#: field:osv_memory.autovacuum,write_uid:0
+#: field:res.bank,write_uid:0
+#: field:res.company,write_uid:0
+#: field:res.config,write_uid:0
+#: field:res.config.installer,write_uid:0
+#: field:res.config.settings,write_uid:0
+#: field:res.country,write_uid:0
+#: field:res.country.group,write_uid:0
+#: field:res.country.state,write_uid:0
+#: field:res.currency,write_uid:0
+#: field:res.currency.rate,write_uid:0
+#: field:res.font,write_uid:0
+#: field:res.groups,write_uid:0
+#: field:res.lang,write_uid:0
+#: field:res.partner,write_uid:0
+#: field:res.partner.bank,write_uid:0
+#: field:res.partner.bank.type,write_uid:0
+#: field:res.partner.bank.type.field,write_uid:0
+#: field:res.partner.category,write_uid:0
+#: field:res.partner.title,write_uid:0
+#: field:res.request.link,write_uid:0
+#: field:res.users,write_uid:0
+#: field:wizard.ir.model.menu.create,write_uid:0
+#: field:workflow,write_uid:0
+#: field:workflow.activity,write_uid:0
+#: field:workflow.transition,write_uid:0
+msgid "Last Updated by"
+msgstr ""
+
+#. module: base
+#: field:base.language.export,write_date:0
+#: field:base.language.import,write_date:0
+#: field:base.language.install,write_date:0
+#: field:base.module.configuration,write_date:0
+#: field:base.module.update,write_date:0
+#: field:base.module.upgrade,write_date:0
+#: field:base.update.translations,write_date:0
+#: field:change.password.user,write_date:0
+#: field:change.password.wizard,write_date:0
+#: field:ir.actions.act_url,write_date:0
+#: field:ir.actions.act_window,write_date:0
+#: field:ir.actions.act_window.view,write_date:0
+#: field:ir.actions.act_window_close,write_date:0
+#: field:ir.actions.actions,write_date:0
+#: field:ir.actions.client,write_date:0
+#: field:ir.actions.report.xml,write_date:0
+#: field:ir.actions.server,write_date:0
+#: field:ir.actions.todo,write_date:0
+#: field:ir.config_parameter,write_date:0
+#: field:ir.cron,write_date:0
+#: field:ir.default,write_date:0
+#: field:ir.exports,write_date:0
+#: field:ir.exports.line,write_date:0
+#: field:ir.fields.converter,write_date:0
+#: field:ir.filters,write_date:0
+#: field:ir.logging,write_date:0
+#: field:ir.mail_server,write_date:0
+#: field:ir.model,write_date:0
+#: field:ir.model.access,write_date:0
+#: field:ir.model.constraint,write_date:0
+#: field:ir.model.data,write_date:0
+#: field:ir.model.fields,write_date:0
+#: field:ir.model.relation,write_date:0
+#: field:ir.module.category,write_date:0
+#: field:ir.module.module,write_date:0
+#: field:ir.module.module.dependency,write_date:0
+#: field:ir.property,write_date:0
+#: field:ir.rule,write_date:0
+#: field:ir.sequence,write_date:0
+#: field:ir.sequence.type,write_date:0
+#: field:ir.server.object.lines,write_date:0
+#: field:ir.ui.menu,write_date:0
+#: field:ir.ui.view.custom,write_date:0
+#: field:ir.values,write_date:0
+#: field:multi_company.default,write_date:0
+#: field:osv_memory.autovacuum,write_date:0
+#: field:res.bank,write_date:0
+#: field:res.company,write_date:0
+#: field:res.config,write_date:0
+#: field:res.config.installer,write_date:0
+#: field:res.config.settings,write_date:0
+#: field:res.country,write_date:0
+#: field:res.country.group,write_date:0
+#: field:res.country.state,write_date:0
+#: field:res.currency,write_date:0
+#: field:res.currency.rate,write_date:0
+#: field:res.font,write_date:0
+#: field:res.groups,write_date:0
+#: field:res.lang,write_date:0
+#: field:res.partner,write_date:0
+#: field:res.partner.bank,write_date:0
+#: field:res.partner.bank.type,write_date:0
+#: field:res.partner.bank.type.field,write_date:0
+#: field:res.partner.category,write_date:0
+#: field:res.partner.title,write_date:0
+#: field:res.request.link,write_date:0
+#: field:res.users,write_date:0
+#: field:wizard.ir.model.menu.create,write_date:0
+#: field:workflow,write_date:0
+#: field:workflow.activity,write_date:0
+#: field:workflow.transition,write_date:0
+msgid "Last Updated on"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_partner_employee_form
-msgid "Employees"
+#: field:ir.module.module,installed_version:0
+msgid "Latest Version"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_shortcuts
-msgid "\n"
-"Enable shortcuts feature in the web client.\n"
-"===========================================\n"
-"\n"
-"Add a Shortcut icon in the systray in order to access the user's shortcuts (if any).\n"
-"\n"
-"Add a Shortcut icon besides the views title in order to add/remove a shortcut.\n"
-" "
+#: field:res.users,login_date:0
+msgid "Latest connection"
msgstr ""
#. module: base
-#: field:res.company,rml_header2:0
-msgid "RML Internal Header"
+#: model:res.country,name:base.lv
+msgid "Latvia"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,search_view_id:0
-msgid "Search View Ref."
+#: selection:base.language.install,lang:0
+msgid "Latvian / latviešu valoda"
msgstr ""
#. module: base
-#: help:res.users,partner_id:0
-msgid "Partner-related data of the user"
+#: view:ir.actions.todo:base.config_wizard_step_view_form
+#: view:ir.actions.todo:base.ir_actions_todo_tree
+msgid "Launch"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_crm_todo
-msgid "\n"
-"Todo list for CRM leads and opportunities.\n"
-"==========================================\n"
-" "
+#: selection:ir.actions.todo,type:0
+msgid "Launch Automatically"
msgstr ""
#. module: base
-#: view:ir.mail_server:0
-msgid "Test Connection"
+#: view:ir.actions.todo:base.config_wizard_step_view_form
+#: view:ir.actions.todo:base.ir_actions_todo_tree
+msgid "Launch Configuration Wizard"
msgstr ""
#. module: base
-#: model:res.country,name:base.mm
-msgid "Myanmar"
+#: selection:ir.actions.todo,type:0
+msgid "Launch Manually"
msgstr ""
#. module: base
-#: help:ir.model.fields,modules:0
-msgid "List of modules in which the field is defined"
+#: selection:ir.actions.todo,type:0
+msgid "Launch Manually Once"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Chinese (CN) / 简体中文"
+#: view:base.language.export:base.wizard_lang_export
+msgid "Launchpad"
msgstr ""
#. module: base
-#: field:ir.model.fields,selection:0
-msgid "Selection Options"
+#: model:ir.module.module,shortdesc:base.module_crm_project_issue
+msgid "Lead to Issue"
msgstr ""
#. module: base
-#: field:res.bank,street:0
-#: field:res.company,street:0
-#: field:res.partner,street:0
-#: field:res.partner.bank,street:0
-msgid "Street"
+#: model:ir.ui.menu,name:base.menu_crm_config_lead
+msgid "Leads & Opportunities"
msgstr ""
#. module: base
-#: model:res.country,name:base.yu
-msgid "Yugoslavia"
+#: model:ir.module.module,summary:base.module_crm
+msgid "Leads, Opportunities, Phone Calls"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_gengo
-msgid "\n"
-"Automated Translations through Gengo API\n"
-"========================================\n"
-"\n"
-"This module will install passive scheduler job for automated translations \n"
-"using the Gengo API. To activate it, you must\n"
-"1) Configure your Gengo authentication parameters under `Settings > Companies > Gengo Parameters`\n"
-"2) Launch the wizard under `Settings > Application Terms > Gengo: Manual Request of Translation` and follow the wizard.\n"
-"\n"
-"This wizard will activate the CRON job and the Scheduler and will start the automatic translation via Gengo Services for all the terms where you requested it.\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_hr_holidays
+msgid "Leave Management"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_fetchmail
-msgid "\n"
-"Retrieve incoming email on POP/IMAP servers.\n"
-"============================================\n"
-"\n"
-"Enter the parameters of your POP/IMAP account(s), and any incoming emails on\n"
-"these accounts will be automatically downloaded into your OpenERP system. All\n"
-"POP3/IMAP-compatible servers are supported, included those that require an\n"
-"encrypted SSL/TLS connection.\n"
-"\n"
-"This can be used to easily create email-based workflows for many email-enabled OpenERP documents, such as:\n"
-"----------------------------------------------------------------------------------------------------------\n"
-" * CRM Leads/Opportunities\n"
-" * CRM Claims\n"
-" * Project Issues\n"
-" * Project Tasks\n"
-" * Human Resource Recruitments (Applicants)\n"
-"\n"
-"Just install the relevant application, and you can assign any of these document\n"
-"types (Leads, Project Issues) to your incoming email accounts. New emails will\n"
-"automatically spawn new documents of the chosen type, so it's a snap to create a\n"
-"mailbox-to-OpenERP integration. Even better: these documents directly act as mini\n"
-"conversations synchronized by email. You can reply from within OpenERP, and the\n"
-"answers will automatically be collected when they come back, and attached to the\n"
-"same *conversation* document.\n"
-"\n"
-"For more specific needs, you may also assign custom-defined actions\n"
-"(technically: Server Actions) to be triggered for each incoming mail.\n"
-" "
+#: model:res.country,name:base.lb
+msgid "Lebanon"
msgstr ""
#. module: base
-#: field:res.currency,rounding:0
-msgid "Rounding Factor"
+#: field:res.partner.category,parent_left:0
+msgid "Left parent"
msgstr ""
#. module: base
-#: model:res.country,name:base.ca
-msgid "Canada"
+#: selection:res.lang,direction:0
+msgid "Left-to-Right"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "Launchpad"
+#: view:ir.sequence:base.sequence_view
+msgid "Legend (for prefix, suffix)"
msgstr ""
#. module: base
-#: help:res.currency.rate,currency_rate_type_id:0
-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"
+#: view:res.lang:base.res_lang_form
+msgid "Legends for Date and Time Formats"
msgstr ""
#. module: base
-#: selection:ir.module.module.dependency,state:0
-msgid "Unknown"
+#: model:res.country,name:base.ls
+msgid "Lesotho"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_res_users_my
-msgid "Change My Preferences"
+#: model:ir.module.category,description:base.module_category_knowledge_management
+msgid "Lets you install addons geared towards sharing knowledge with and between your employees."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_actions.py:171
-#, python-format
-msgid "Invalid model name in the action definition."
+#: model:ir.module.category,description:base.module_category_tools
+msgid "Lets you install various interesting but non-essential tools like Survey, Lunch and Ideas box."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_ro
-msgid "\n"
-"This is the module to manage the accounting chart, VAT structure and Registration Number for Romania in OpenERP.\n"
-"================================================================================================================\n"
-"\n"
-"Romanian accounting chart and localization.\n"
-" "
+#: model:ir.module.category,description:base.module_category_report_designer
+msgid "Lets you install various tools to simplify and enhance Odoo's report creation."
msgstr ""
#. module: base
-#: model:res.country,name:base.cm
-msgid "Cameroon"
+#: view:ir.logging:base.ir_logging_search_view
+#: field:ir.logging,level:0
+msgid "Level"
msgstr ""
#. module: base
-#: model:res.country,name:base.bf
-msgid "Burkina Faso"
+#: model:res.country,name:base.lr
+msgid "Liberia"
msgstr ""
#. module: base
-#: selection:ir.model.fields,state:0
-msgid "Custom Field"
+#: model:res.country,name:base.ly
+msgid "Libya"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_account_accountant
-msgid "Financial and Analytic Accounting"
+#: field:ir.module.module,license:0
+msgid "License"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_project
-msgid "Portal Project"
+#: model:res.country,name:base.li
+msgid "Liechtenstein"
msgstr ""
#. module: base
-#: model:res.country,name:base.cc
-msgid "Cocos (Keeling) Islands"
+#: field:ir.actions.act_window,limit:0
+msgid "Limit"
msgstr ""
#. module: base
-#: selection:base.language.install,state:0
-#: selection:base.module.import,state:0
-#: selection:base.module.update,state:0
-msgid "init"
+#: field:ir.logging,line:0
+msgid "Line"
msgstr ""
#. module: base
-#: view:res.partner:0
-#: field:res.partner,user_id:0
-msgid "Salesperson"
+#: field:ir.actions.server,link_field_id:0
+msgid "Link using field"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "11. %U or %W ==> 48 (49th week)"
+#: model:ir.module.module,shortdesc:base.module_web_linkedin
+msgid "LinkedIn Integration"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_partner_bank_type_field
-msgid "Bank type fields"
+#: help:ir.model.fields,modules:0
+msgid "List of modules in which the field is defined"
msgstr ""
#. module: base
-#: constraint:ir.rule:0
-msgid "Rules can not be applied on Transient models."
+#: help:ir.model,modules:0
+msgid "List of modules in which the object is defined or inherited"
+msgstr ""
+
+#. module: base
+#: help:ir.model.fields,selection:0
+msgid "List of options for a selection field, specified as a Python expression defining a list of (key, label) pairs. For example: [('blue','Blue'),('yellow','Yellow')]"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.lt
+msgid "Lithuania"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Dutch / Nederlands"
+msgid "Lithuanian / Lietuvių kalba"
msgstr ""
#. module: base
-#: selection:res.company,paper_format:0
-msgid "US Letter"
+#: model:ir.module.module,summary:base.module_im_livechat
+msgid "Live Chat with Visitors/Customers"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_partner_customer_form
-msgid "<p class=\"oe_view_nocontent_create\">\n"
-" Click to add a contact in your address book.\n"
-" </p><p>\n"
-" OpenERP helps you easily track all activities related to\n"
-" a customer: discussions, history of business opportunities,\n"
-" documents, etc.\n"
-" </p>\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_im_livechat
+msgid "Live Support"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.bank_account_update
-msgid "Company Bank Accounts"
+#: view:base.language.install:base.view_base_language_install
+msgid "Load"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:467
-#, python-format
-msgid "Setting empty passwords is not allowed for security reasons!"
+#: view:base.language.install:base.view_base_language_install
+#: model:ir.actions.act_window,name:base.action_view_base_language_install
+#: model:ir.ui.menu,name:base.menu_view_base_language_install
+msgid "Load a Translation"
msgstr ""
#. module: base
-#: help:ir.mail_server,smtp_pass:0
-msgid "Optional password for SMTP authentication"
+#: field:res.lang,code:0
+msgid "Locale Code"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:720
-#, python-format
-msgid "Sorry, you are not allowed to modify this document."
+#: model:ir.module.category,name:base.module_category_localization
+#: model:ir.ui.menu,name:base.menu_localisation
+#: view:res.users:base.view_users_form
+msgid "Localization"
msgstr ""
#. module: base
-#: code:addons/base/res/res_config.py:349
-#, python-format
-msgid "\n"
-"\n"
-"This addon is already installed on your system"
+#: view:ir.logging:base.ir_logging_form_view
+msgid "Log"
msgstr ""
#. module: base
-#: help:ir.cron,interval_number:0
-msgid "Repeat every x."
+#: model:ir.actions.act_window,name:base.ir_logging_all_act
+#: model:ir.ui.menu,name:base.ir_logging_all_menu
+msgid "Logging"
msgstr ""
#. module: base
-#: model:res.partner.bank.type,name:base.bank_normal
-msgid "Normal Bank Account"
+#: field:res.users,login:0
+msgid "Login"
msgstr ""
#. module: base
-#: field:change.password.user,wizard_id:0
-#: view:ir.actions.wizard:0
-msgid "Wizard"
+#: field:res.company,logo:0
+msgid "Logo"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:303
-#, python-format
-msgid "database id"
+#: field:res.company,logo_web:0
+msgid "Logo Web"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_base_import
-msgid "Base import"
+#: view:ir.logging:base.ir_logging_search_view
+#: view:ir.logging:base.ir_logging_tree_view
+msgid "Logs"
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "1cm 28cm 20cm 28cm"
+#: model:res.partner.title,name:base.res_partner_title_ltd
+msgid "Ltd"
msgstr ""
#. module: base
-#: field:ir.module.module,maintainer:0
-msgid "Maintainer"
+#: model:ir.module.module,summary:base.module_lunch
+msgid "Lunch Order, Meal, Food"
msgstr ""
#. module: base
-#: field:ir.sequence,suffix:0
-msgid "Suffix"
+#: model:ir.module.module,shortdesc:base.module_lunch
+msgid "Lunch Orders"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.lu
+msgid "Luxembourg"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_l10n_lu
+msgid "Luxembourg - Accounting"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_mrp
+msgid "MRP"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_mrp_byproduct
+msgid "MRP Byproducts"
msgstr ""
#. module: base
@@ -7341,2262 +9644,2039 @@ msgid "Macau"
msgstr ""
#. module: base
-#: model:ir.actions.report.xml,name:base.res_partner_address_report
-msgid "Labels"
+#: model:res.country,name:base.mk
+msgid "Macedonia, the former Yugoslav Republic of"
msgstr ""
#. module: base
-#: help:res.partner,use_parent_address:0
-msgid "Select this if you want to set company's address information for this contact"
+#: selection:base.language.install,lang:0
+msgid "Macedonian / македонски јазик"
msgstr ""
#. module: base
-#: field:ir.default,field_name:0
-msgid "Object Field"
+#: model:res.country,name:base.mg
+msgid "Madagascar"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (PE) / Español (PE)"
+#: model:res.partner.title,name:base.res_partner_title_madam
+msgid "Madam"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "French (CH) / Français (CH)"
+#: code:addons/base/ir/ir_mail_server.py:483
+#, python-format
+msgid "Mail Delivery Failed"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_13
-msgid "Distributor"
+#: code:addons/base/ir/ir_mail_server.py:479
+#, python-format
+msgid "Mail delivery failed via SMTP server '%s'.\n"
+"%s: %s"
msgstr ""
#. module: base
-#: help:ir.actions.server,subject:0
-msgid "Email subject, may contain expressions enclosed in double brackets based on the same values as those available in the condition field, e.g. `Hello [[ object.partner_id.name ]]`"
+#: model:ir.module.module,shortdesc:base.module_website_mail_group
+msgid "Mailing List Archive"
msgstr ""
#. module: base
-#: help:res.partner,image:0
-msgid "This field holds the image used as avatar for this contact, limited to 1024x1024px"
+#: field:multi_company.default,company_id:0
+msgid "Main Company"
msgstr ""
#. module: base
-#: model:res.country,name:base.to
-msgid "Tonga"
+#: field:ir.actions.report.xml,report_rml:0
+msgid "Main Report File Path/controller"
msgstr ""
#. module: base
-#: help:ir.model.fields,serialization_field_id:0
-msgid "If set, this field will be stored in the sparse structure of the serialization field, instead of having its own database column. This cannot be changed after creation."
+#: field:ir.module.module,maintainer:0
+msgid "Maintainer"
msgstr ""
#. module: base
-#: view:res.partner.bank:0
-msgid "Bank accounts belonging to one of your companies"
+#: model:res.country,name:base.mw
+msgid "Malawi"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_analytic_plans
-msgid "\n"
-"This module allows to use several analytic plans according to the general journal.\n"
-"==================================================================================\n"
-"\n"
-"Here multiple analytic lines are created when the invoice or the entries\n"
-"are confirmed.\n"
-"\n"
-"For example, you can define the following analytic structure:\n"
-"-------------------------------------------------------------\n"
-" * **Projects**\n"
-" * Project 1\n"
-" + SubProj 1.1\n"
-" \n"
-" + SubProj 1.2\n"
-"\n"
-" * Project 2\n"
-" \n"
-" * **Salesman**\n"
-" * Eric\n"
-" \n"
-" * Fabien\n"
-"\n"
-"Here, we have two plans: Projects and Salesman. An invoice line must be able to write analytic entries in the 2 plans: SubProj 1.1 and Fabien. The amount can also be split.\n"
-" \n"
-"The following example is for an invoice that touches the two subprojects and assigned to one salesman:\n"
-"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
-"**Plan1:**\n"
-"\n"
-" * SubProject 1.1 : 50%\n"
-" \n"
-" * SubProject 1.2 : 50%\n"
-" \n"
-"**Plan2:**\n"
-" Eric: 100%\n"
-"\n"
-"So when this line of invoice will be confirmed, it will generate 3 analytic lines,for one account entry.\n"
-"\n"
-"The analytic plan validates the minimum and maximum percentage at the time of creation of distribution models.\n"
-" "
+#: selection:base.language.install,lang:0
+msgid "Malayalam / മലയാളം"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_sequence
-msgid "Entries Sequence Numbering"
+#: model:res.country,name:base.my
+msgid "Malaysia"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "POEdit"
+#: model:res.country,name:base.mv
+msgid "Maldives"
msgstr ""
#. module: base
-#: view:ir.values:0
-msgid "Client Actions"
+#: model:res.country,name:base.ml
+msgid "Mali"
msgstr ""
#. module: base
-#: field:res.partner.bank.type,field_ids:0
-msgid "Type Fields"
+#: model:res.country,name:base.mt
+msgid "Malta"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_hr_recruitment
-msgid "Jobs, Recruitment, Applications, Job Interviews"
+#: model:res.groups,name:base.group_multi_salesteams
+msgid "Manage Sales Teams"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:540
-#, python-format
-msgid "You try to upgrade a module that depends on the module: %s.\n"
-"But this module is not available in your system."
+#: model:res.groups,name:base.group_website_designer
+msgid "Manage Website and qWeb view"
msgstr ""
#. module: base
-#: field:workflow.transition,act_to:0
-msgid "Destination Activity"
+#: model:ir.actions.act_window,help:base.grant_menu_access
+msgid "Manage and customize the items available and displayed in your Odoo system menu. You can delete an item by clicking on the box at the beginning of each line and then delete it through the button that appeared. Items can be assigned to specific groups in order to make them accessible to some users within the system."
msgstr ""
#. module: base
-#: help:res.currency,position:0
-msgid "Determines where the currency symbol should be placed after or before the amount."
+#: model:ir.module.category,description:base.module_category_customer_relationship_management
+msgid "Manage relations with prospects and customers using leads, opportunities, requests or issues."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_pad_project
-msgid "Pad on tasks"
+#: model:ir.actions.act_window,help:base.action_partner_title_contact
+msgid "Manage the contact titles you want to have available in your system and the way you want to print them in letters and other documents. Some example: Mr., Mrs. "
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_base_update_translations
-msgid "base.update.translations"
+#: model:ir.actions.act_window,help:base.action_partner_title_partner
+msgid "Manage the partner titles you want to have available in your system. The partner titles is the legal status of the company: Private Limited, SA, etc."
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Full Access Right"
+#: model:res.groups,name:base.group_hr_manager
+#: model:res.groups,name:base.group_sale_manager
+#: model:res.groups,name:base.group_tool_manager
+msgid "Manager"
msgstr ""
#. module: base
-#: field:res.partner.category,parent_id:0
-msgid "Parent Category"
+#: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts
+msgid "Managing vehicles and contracts"
msgstr ""
#. module: base
-#: model:res.country,name:base.fi
-msgid "Finland"
+#: help:ir.actions.todo,type:0
+msgid "Manual: Launched manually.\n"
+"Automatic: Runs whenever the system is reconfigured.\n"
+"Launch Manually Once: after having been launched manually, it sets automatically to Done."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_shortcuts
-msgid "Web Shortcuts"
+#: model:res.partner.category,name:base.res_partner_category_14
+msgid "Manufacturer"
msgstr ""
#. module: base
-#: view:res.partner:0
-#: selection:res.partner,type:0
-#: selection:res.partner.title,domain:0
-#: view:res.users:0
-msgid "Contact"
+#: model:ir.module.category,name:base.module_category_manufacturing
+#: model:ir.ui.menu,name:base.menu_mrp_config
+#: model:ir.ui.menu,name:base.menu_mrp_root
+msgid "Manufacturing"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_at
-msgid "Austria - Accounting"
+#: model:ir.module.module,shortdesc:base.module_mrp_operations
+msgid "Manufacturing Operations"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_ui_menu
-msgid "ir.ui.menu"
+#: model:ir.module.module,summary:base.module_mrp
+msgid "Manufacturing Orders, Bill of Materials, Routing"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_project
-msgid "Project Management"
+#: selection:ir.property,type:0
+msgid "Many2One"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Cancel Uninstall"
+#: model:ir.actions.act_window,name:base.action_model_relation
+#: view:ir.model.relation:base.view_model_relation_form
+#: view:ir.model.relation:base.view_model_relation_list
+#: model:ir.ui.menu,name:base.ir_model_relation_menu
+msgid "ManyToMany Relations"
msgstr ""
#. module: base
-#: view:res.bank:0
-msgid "Communication"
+#: model:ir.module.module,shortdesc:base.module_product_margin
+msgid "Margins by Products"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_analytic
-msgid "Analytic Accounting"
+#: model:ir.module.module,shortdesc:base.module_sale_margin
+msgid "Margins in Sales Orders"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_model_constraint
-msgid "ir.model.constraint"
+#: model:ir.module.category,name:base.module_category_marketing
+#: model:ir.module.module,shortdesc:base.module_marketing
+#: model:ir.ui.menu,name:base.marketing_menu
+#: model:ir.ui.menu,name:base.marketing_reporting_menu
+msgid "Marketing"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_graph
-msgid "Graph Views"
+#: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo
+msgid "Marketing Campaign - Demo"
msgstr ""
#. module: base
-#: help:ir.model.relation,name:0
-msgid "PostgreSQL table name implementing a many2many relation."
+#: model:ir.module.module,shortdesc:base.module_marketing_campaign
+msgid "Marketing Campaigns"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base
-msgid "\n"
-"The kernel of OpenERP, needed for all installation.\n"
-"===================================================\n"
-""
+#: model:ir.module.module,shortdesc:base.module_marketing_crm
+msgid "Marketing in CRM"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_server_object_lines
-msgid "ir.server.object.lines"
+#: model:ir.module.module,shortdesc:base.module_l10n_ma
+msgid "Maroc - Accounting"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_be
-msgid "Belgium - Accounting"
+#: model:res.country,name:base.mh
+msgid "Marshall Islands"
msgstr ""
#. module: base
-#: view:ir.model.access:0
-msgid "Access Control"
+#: model:res.country,name:base.mq
+msgid "Martinique (French)"
msgstr ""
#. module: base
-#: model:res.country,name:base.kw
-msgid "Kuwait"
+#: model:ir.module.module,shortdesc:base.module_mass_mailing
+msgid "Mass Mailing Campaigns"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_followup
-msgid "Payment Follow-up Management"
+#: model:res.country,name:base.mr
+msgid "Mauritania"
msgstr ""
#. module: base
-#: field:workflow.workitem,inst_id:0
-msgid "Instance"
+#: model:res.country,name:base.mu
+msgid "Mauritius"
msgstr ""
#. module: base
-#: help:ir.actions.report.xml,attachment:0
-msgid "This is the filename of the attachment used to store the printing result. Keep empty to not save the printed reports. You can use a python expression with the object and time variables."
+#: field:res.partner.bank.type.field,size:0
+msgid "Max. Size"
msgstr ""
#. module: base
-#: sql_constraint:ir.model.data:0
-msgid "You cannot have multiple records with the same external ID in the same module!"
+#: model:res.country,name:base.yt
+msgid "Mayotte"
msgstr ""
#. module: base
-#: selection:ir.property,type:0
-msgid "Many2One"
+#: field:res.partner,image_medium:0
+msgid "Medium-sized image"
msgstr ""
#. module: base
-#: model:res.country,name:base.ng
-msgid "Nigeria"
+#: help:res.partner,image_medium:0
+msgid "Medium-sized image of this contact. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:334
-#, python-format
-msgid "For selection fields, the Selection Options must be given!"
+#: model:ir.module.module,shortdesc:base.module_membership
+msgid "Membership Management"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_base_iban
-msgid "IBAN Bank Accounts"
+#: model:ir.module.module,shortdesc:base.module_note_pad
+msgid "Memos pad"
msgstr ""
#. module: base
-#: field:res.company,user_ids:0
-msgid "Accepted Users"
+#: view:ir.ui.menu:base.edit_menu
+#: view:ir.ui.menu:base.edit_menu_access
+#: view:ir.ui.menu:base.edit_menu_access_search
+#: view:ir.ui.menu:base.view_menu
+#: field:ir.ui.menu,name:0
+msgid "Menu"
msgstr ""
#. module: base
-#: field:ir.ui.menu,web_icon_data:0
-msgid "Web Icon Image"
+#: report:ir.module.reference:0
+msgid "Menu :"
msgstr ""
#. module: base
-#: field:ir.actions.server,wkf_model_id:0
-msgid "Target Object"
+#: model:ir.actions.act_window,name:base.grant_menu_access
+#: model:ir.ui.menu,name:base.menu_grant_menu_access
+msgid "Menu Items"
msgstr ""
#. module: base
-#: selection:ir.model.fields,select_level:0
-msgid "Always Searchable"
+#: field:wizard.ir.model.menu.create,name:0
+msgid "Menu Name"
msgstr ""
#. module: base
-#: help:res.country.state,code:0
-msgid "The state code in max. three chars."
+#: field:ir.module.module,menus_by_module:0
+#: view:res.groups:base.view_groups_form
+msgid "Menus"
msgstr ""
#. module: base
-#: model:res.country,name:base.hk
-msgid "Hong Kong"
+#: view:res.users:base.view_users_form
+msgid "Menus Customization"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_sale
-msgid "Portal Sale"
+#: field:ir.logging,message:0
+msgid "Message"
msgstr ""
#. module: base
-#: field:ir.default,ref_id:0
-msgid "ID Ref."
+#: view:res.users:base.view_users_form
+msgid "Messaging and Social"
msgstr ""
#. module: base
-#: model:res.country,name:base.ph
-msgid "Philippines"
+#: field:ir.cron,function:0
+msgid "Method"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_hr_timesheet_sheet
-msgid "Timesheets, Attendances, Activities"
+#: model:res.country,name:base.mx
+msgid "Mexico"
msgstr ""
#. module: base
-#: model:res.country,name:base.ma
-msgid "Morocco"
+#: model:ir.module.module,shortdesc:base.module_l10n_mx
+msgid "Mexico - Accounting"
msgstr ""
#. module: base
-#: help:ir.values,model_id:0
-msgid "Model to which this entry applies - helper field for setting a model, will automatically set the correct model name"
+#: model:res.country,name:base.fm
+msgid "Micronesia"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "2. %a ,%A ==> Fri, Friday"
+#: view:ir.sequence:base.sequence_view
+msgid "Minute: %(min)s"
+msgstr ""
+
+#. module: base
+#: selection:ir.cron,interval_type:0
+msgid "Minutes"
+msgstr ""
+
+#. module: base
+#: view:res.currency:base.view_currency_form
+msgid "Miscellaneous"
+msgstr ""
+
+#. module: base
+#: model:res.partner.title,name:base.res_partner_title_miss
+#: model:res.partner.title,shortcut:base.res_partner_title_miss
+msgid "Miss"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_translation.py:341
+#: code:addons/base/ir/ir_mail_server.py:457
#, python-format
-msgid "Translation features are unavailable until you install an extra OpenERP translation."
+msgid "Missing SMTP Server"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_nl
-msgid "\n"
-"This is the module to manage the accounting chart for Netherlands in OpenERP.\n"
-"=============================================================================\n"
-"\n"
-"Read changelog in file __openerp__.py for version information.\n"
-"Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor\n"
-"Nederlandse bedrijven te installeren in OpenERP versie 7.0.\n"
-"\n"
-"De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te genereren,\n"
-"denk b.v. aan intracommunautaire verwervingen waarbij u 21% BTW moet opvoeren,\n"
-"maar tegelijkertijd ook 21% als voorheffing weer mag aftrekken.\n"
-"\n"
-"Na installatie van deze module word de configuratie wizard voor 'Accounting' aangeroepen.\n"
-" * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het\n"
-" Nederlandse grootboekschema bevind.\n"
-"\n"
-" * Als de configuratie wizard start, wordt u gevraagd om de naam van uw bedrijf\n"
-" in te voeren, welke grootboekschema te installeren, uit hoeveel cijfers een\n"
-" grootboekrekening mag bestaan, het rekeningnummer van uw bank en de currency\n"
-" om Journalen te creeren.\n"
-"\n"
-"Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit 4\n"
-"cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal verhogen.\n"
-"De extra cijfers worden dan achter het rekeningnummer aangevult met 'nullen'.\n"
-"\n"
-" "
+#: model:res.partner.title,name:base.res_partner_title_mister
+msgid "Mister"
msgstr ""
#. module: base
-#: help:ir.rule,global:0
-msgid "If no group is specified the rule is global and applied to everyone"
+#: field:res.partner,mobile:0
+msgid "Mobile"
msgstr ""
#. module: base
-#: model:res.country,name:base.td
-msgid "Chad"
+#: view:res.partner:base.view_partner_form
+msgid "Mobile:"
msgstr ""
#. module: base
-#: help:ir.cron,priority:0
-msgid "The priority of the job, as an integer: 0 means higher priority, 10 means lower priority."
+#: field:res.font,mode:0
+msgid "Mode"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_workflow_transition
-msgid "workflow.transition"
+#: field:ir.actions.report.xml,model:0
+#: view:ir.actions.server:base.view_server_action_search
+#: view:ir.filters:base.ir_filters_view_search
+#: field:ir.filters,model_id:0
+#: view:ir.model:base.view_model_search
+#: field:ir.model,model:0
+#: field:ir.model.constraint,model:0
+#: field:ir.model.fields,model_id:0
+#: field:ir.model.relation,model:0
+#: view:ir.values:base.values_view_search_action
+msgid "Model"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%a - Abbreviated weekday name."
+#: code:addons/base/ir/ir_model.py:364
+#, python-format
+msgid "Model %s does not exist!"
msgstr ""
#. module: base
-#: view:ir.ui.menu:0
-msgid "Submenus"
+#: code:addons/base/ir/ir_model.py:164
+#, python-format
+msgid "Model '%s' contains module data and cannot be removed!"
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "Introspection report on objects"
+#: field:ir.values,model_id:0
+msgid "Model (change only)"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_analytics
-msgid "Google Analytics"
+#: model:ir.actions.act_window,name:base.action_model_constraint
+#: view:ir.model.constraint:base.view_model_constraint_form
+#: view:ir.model.constraint:base.view_model_constraint_list
+#: model:ir.ui.menu,name:base.ir_model_constraint_menu
+msgid "Model Constraints"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_note
-msgid "\n"
-"This module allows users to create their own notes inside OpenERP\n"
-"=================================================================\n"
-"\n"
-"Use notes to write meeting minutes, organize ideas, organize personnal todo\n"
-"lists, etc. Each user manages his own personnal Notes. Notes are available to\n"
-"their authors only, but they can share notes to others users so that several\n"
-"people can work on the same note in real time. It's very efficient to share\n"
-"meeting minutes.\n"
-"\n"
-"Notes can be found in the 'Home' menu.\n"
-""
+#: field:ir.ui.view,model_data_id:0
+msgid "Model Data"
msgstr ""
#. module: base
-#: model:res.country,name:base.dm
-msgid "Dominica"
+#: view:ir.model:base.view_model_form
+#: view:ir.model:base.view_model_search
+#: view:ir.model:base.view_model_tree
+#: field:ir.model,name:0
+msgid "Model Description"
msgstr ""
#. module: base
-#: field:ir.translation,name:0
-msgid "Translated field"
+#: field:ir.actions.server,model_name:0
+#: field:ir.model.data,model:0
+#: field:ir.values,model:0
+msgid "Model Name"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_stock_location
-msgid "Advanced Routes"
+#: model:ir.actions.report.xml,name:base.report_ir_model_overview
+msgid "Model Overview"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_pad
-msgid "Collaborative Pads"
+#: help:ir.actions.server,crud_model_id:0
+msgid "Model for record creation / update. Set this field only to specify a different model than the base model."
msgstr ""
#. module: base
-#: model:res.country,name:base.np
-msgid "Nepal"
+#: help:ir.actions.act_window,res_model:0
+msgid "Model name of the object to open in the view window"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_document_page
-msgid "Document Page"
+#: help:ir.cron,model:0
+msgid "Model name on which the method to be called is located, e.g. 'res.partner'."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_ar
-msgid "Argentina Localization Chart Account"
+#: code:addons/base/ir/ir_ui_view.py:598
+#: code:addons/base/ir/ir_ui_view.py:802
+#, python-format
+msgid "Model not found: %(model)s"
msgstr ""
#. module: base
-#: field:ir.module.module,description_html:0
-msgid "Description HTML"
+#: help:ir.values,model:0
+msgid "Model to which this entry applies"
msgstr ""
#. module: base
-#: help:res.groups,implied_ids:0
-msgid "Users of this group automatically inherit those groups"
+#: help:ir.values,model_id:0
+msgid "Model to which this entry applies - helper field for setting a model, will automatically set the correct model name"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_note
-msgid "Sticky notes, Collaborative, Memos"
+#: 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 ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_attendance
-#: model:res.groups,name:base.group_hr_attendance
-msgid "Attendances"
+#: model:ir.model,name:base.model_ir_module_module
+#: field:ir.model.constraint,module:0
+#: view:ir.model.data:base.view_model_data_search
+#: field:ir.model.data,module:0
+#: field:ir.model.relation,module:0
+#: view:ir.module.module:base.module_form
+#: view:ir.module.module:base.view_module_filter
+#: field:ir.module.module.dependency,module_id:0
+#: report:ir.module.reference:0
+#: field:ir.translation,module:0
+msgid "Module"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_warning
-msgid "Warning Messages and Alerts"
+#: view:ir.module.category:base.view_module_category_form
+#: view:ir.module.category:base.view_module_category_tree
+msgid "Module Category"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_ui_view_custom
-#: model:ir.ui.menu,name:base.menu_action_ui_view_custom
-#: view:ir.ui.view.custom:0
-msgid "Customized Views"
+#: model:ir.actions.server,name:base.action_server_module_immediate_install
+msgid "Module Immediate Install"
msgstr ""
#. module: base
-#: view:base.module.import:0
-#: model:ir.actions.act_window,name:base.action_view_base_module_import
-msgid "Module Import"
+#: field:ir.module.module,shortdesc:0
+msgid "Module Name"
msgstr ""
#. 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"
+#: model:ir.actions.act_window,name:base.action_view_base_module_update
+msgid "Module Update"
msgstr ""
#. module: base
-#: help:res.partner,lang:0
-msgid "If the selected language is loaded in the system, all documents related to this contact will be printed in this language. If not, it will be English."
+#: view:base.module.update:base.view_base_module_update
+msgid "Module Update Result"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_evaluation
-msgid "\n"
-"Periodical Employees evaluation and appraisals\n"
-"==============================================\n"
-"\n"
-"By using this application you can maintain the motivational process by doing periodical evaluations of your employees' performance. The regular assessment of human resources can benefit your people as well your organization. \n"
-"\n"
-"An evaluation plan can be assigned to each employee. These plans define the frequency and the way you manage your periodic personal evaluations. You will be able to define steps and attach interview forms to each step. \n"
-"\n"
-"Manages several types of evaluations: bottom-up, top-down, self-evaluations and the final evaluation by the manager.\n"
-"\n"
-"Key Features\n"
-"------------\n"
-"* Ability to create employees evaluations.\n"
-"* An evaluation can be created by an employee for subordinates, juniors as well as his manager.\n"
-"* The evaluation is done according to a plan in which various surveys can be created. Each survey can be answered by a particular level in the employees hierarchy. The final review and evaluation is done by the manager.\n"
-"* Every evaluation filled by employees can be viewed in a PDF form.\n"
-"* Interview Requests are generated automatically by OpenERP according to employees evaluation plans. Each user receives automatic emails and requests to perform a periodical evaluation of their colleagues.\n"
-""
+#: model:ir.model,name:base.model_base_module_upgrade
+msgid "Module Upgrade"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_view_base_module_update
-msgid "Update Modules List"
+#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_install
+msgid "Module Upgrade Install"
+msgstr ""
+
+#. module: base
+#: model:ir.model,name:base.model_ir_module_module_dependency
+msgid "Module dependency"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:359
+#: code:addons/base/module/module.py:684
#, python-format
-msgid "Unable to upgrade module \"%s\" because an external dependency is not met: %s"
+msgid "Module not found"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account
-msgid "eInvoicing"
+#: help:ir.translation,module:0
+msgid "Module this term belongs to"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:171
-#, python-format
-msgid "Please keep in mind that documents currently displayed may not be relevant after switching to another company. If you have unsaved changes, please make sure to save and close all forms before switching to a different company. (You can click on Cancel in the User Preferences now)"
+#: model:ir.actions.act_window,name:base.action_module_open_categ
+#: field:ir.module.category,module_ids:0
+#: view:ir.module.module:base.module_tree
+#: model:ir.ui.menu,name:base.menu_management
+msgid "Modules"
msgstr ""
#. module: base
-#: code:addons/orm.py:2817
-#, python-format
-msgid "The value \"%s\" for the field \"%s.%s\" is not in the selection"
+#: field:base.language.export,modules:0
+msgid "Modules To Export"
msgstr ""
#. module: base
-#: view:ir.actions.configuration.wizard:0
-msgid "Continue"
+#: field:base.module.upgrade,module_info:0
+msgid "Modules to Update"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Thai / ภาษาไทย"
+#: model:res.country,name:base.md
+msgid "Moldavia"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_bo
-msgid "\n"
-"Bolivian accounting chart and tax localization.\n"
-"\n"
-"Plan contable boliviano e impuestos de acuerdo a disposiciones vigentes\n"
-"\n"
-" "
+#: model:res.country,name:base.mc
+msgid "Monaco"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%j - Day of the year [001,366]."
+#: model:res.country,name:base.mn
+msgid "Mongolia"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Slovenian / slovenščina"
+msgid "Mongolian / монгол"
msgstr ""
#. module: base
-#: field:res.currency,position:0
-msgid "Symbol Position"
+#: model:res.country,name:base.me
+msgid "Montenegro"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_de
-msgid "\n"
-"Dieses Modul beinhaltet einen deutschen Kontenrahmen basierend auf dem SKR03.\n"
-"==============================================================================\n"
-"\n"
-"German accounting chart and localization.\n"
-" "
+#: view:ir.logging:base.ir_logging_search_view
+msgid "Month"
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,attachment_use:0
-msgid "Reload from Attachment"
+#: view:ir.sequence:base.sequence_view
+msgid "Month: %(month)s"
msgstr ""
#. module: base
-#: model:res.country,name:base.mx
-msgid "Mexico"
+#: selection:ir.cron,interval_type:0
+msgid "Months"
msgstr ""
#. module: base
-#: code:addons/orm.py:3902
-#, python-format
-msgid "For this kind of document, you may only access records you created yourself.\n"
-"\n"
-"(Document type: %s)"
+#: model:res.country,name:base.ms
+msgid "Montserrat"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "documentation"
+#: field:ir.actions.server,menu_ir_values_id:0
+msgid "More Menu entry"
msgstr ""
#. module: base
-#: help:ir.model,osv_memory:0
-msgid "This field specifies whether the model is transient or not (i.e. if records are automatically deleted from the database or not)"
+#: help:ir.actions.server,menu_ir_values_id:0
+msgid "More menu entry."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:440
-#, python-format
-msgid "Missing SMTP Server"
+#: model:res.country,name:base.ma
+msgid "Morocco"
msgstr ""
#. module: base
-#: sql_constraint:ir.translation:0
-msgid "Language code of translation item must be among known languages"
+#: model:res.country,name:base.mz
+msgid "Mozambique"
msgstr ""
#. module: base
-#: field:base.language.export,data:0
-#: field:base.language.import,data:0
-msgid "File"
+#: model:res.partner.title,shortcut:base.res_partner_title_mister
+msgid "Mr."
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_install
-msgid "Module Upgrade Install"
+#: model:res.partner.title,shortcut:base.res_partner_title_madam
+msgid "Mrs."
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_configuration_wizard
-msgid "ir.actions.configuration.wizard"
+#: model:res.groups,name:base.group_multi_company
+msgid "Multi Companies"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%b - Abbreviated month name."
+#: view:multi_company.default:base.view_inventory_form
+#: view:multi_company.default:base.view_inventory_search
+#: view:multi_company.default:base.view_inventory_tree
+msgid "Multi Company"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:722
-#, python-format
-msgid "Sorry, you are not allowed to delete this document."
+#: model:res.groups,name:base.group_multi_currency
+msgid "Multi Currencies"
msgstr ""
#. module: base
-#: constraint:ir.rule:0
-msgid "Rules can not be applied on the Record Rules model."
+#: model:ir.module.module,shortdesc:base.module_l10n_multilang
+msgid "Multi Language Chart of Accounts"
msgstr ""
#. module: base
-#: field:res.partner,supplier:0
-#: model:res.partner.category,name:base.res_partner_category_1
-msgid "Supplier"
+#: model:ir.module.module,shortdesc:base.module_multi_company
+msgid "Multi-Company"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-#: selection:ir.actions.server,state:0
-msgid "Multi Actions"
+#: model:ir.module.module,shortdesc:base.module_account_analytic_plans
+msgid "Multiple Analytic Plans"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_mail
-msgid "Discussions, Mailing Lists, News"
+#: view:res.partner.bank:base.view_partner_bank_search
+msgid "My Banks"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_fleet
-msgid "\n"
-"Vehicle, leasing, insurances, cost\n"
-"==================================\n"
-"With this module, OpenERP helps you managing all your vehicles, the\n"
-"contracts associated to those vehicle as well as services, fuel log\n"
-"entries, costs and many other features necessary to the management \n"
-"of your fleet of vehicle(s)\n"
-"\n"
-"Main Features\n"
-"-------------\n"
-"* Add vehicles to your fleet\n"
-"* Manage contracts for vehicles\n"
-"* Reminder when a contract reach its expiration date\n"
-"* Add services, fuel log entry, odometer values for all vehicles\n"
-"* Show all costs associated to a vehicle or to a type of service\n"
-"* Analysis graph for costs\n"
-""
+#: view:ir.attachment:base.view_attachment_search
+msgid "My Document(s)"
msgstr ""
#. module: base
-#: field:multi_company.default,company_dest_id:0
-msgid "Default Company"
+#: view:res.partner:base.view_res_partner_filter
+msgid "My Partners"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (EC) / Español (EC)"
+#: view:ir.filters:base.ir_filters_view_search
+msgid "My filters"
msgstr ""
#. module: base
-#: help:ir.ui.view,xml_id:0
-msgid "ID of the view defined in xml file"
+#: model:res.country,name:base.mm
+msgid "Myanmar"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_base_module_import
-msgid "Import Module"
+#: field:ir.actions.act_window_close,name:0
+#: field:ir.actions.actions,name:0
+#: field:ir.actions.report.xml,name:0
+#: field:ir.actions.todo,name:0
+#: field:ir.cron,name:0
+#: field:ir.logging,name:0
+#: field:ir.model.access,name:0
+#: field:ir.model.fields,name:0
+#: field:ir.module.category,name:0
+#: field:ir.module.module.dependency,name:0
+#: report:ir.module.reference:0
+#: view:ir.property:base.ir_property_view_search
+#: field:ir.property,name:0
+#: field:ir.rule,name:0
+#: field:ir.sequence,name:0
+#: field:ir.sequence.type,name:0
+#: field:ir.values,name:0
+#: view:multi_company.default:base.view_inventory_search
+#: field:multi_company.default,name:0
+#: field:res.bank,name:0
+#: field:res.country.group,name:0
+#: field:res.groups,name:0
+#: field:res.lang,name:0
+#: view:res.partner:base.view_partner_form
+#: view:res.partner:base.view_partner_simple_form
+#: field:res.partner,display_name:0
+#: field:res.partner,name:0
+#: view:res.partner.bank:base.view_partner_bank_form
+#: field:res.partner.bank.type,name:0
+#: field:res.request.link,name:0
+#: field:workflow,name:0
+#: field:workflow.activity,name:0
+msgid "Name"
msgstr ""
#. module: base
-#: model:res.country,name:base.as
-msgid "American Samoa"
+#: help:multi_company.default,name:0
+msgid "Name it to easily find a record"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "My Document(s)"
+#: help:ir.cron,function:0
+msgid "Name of the method to be called when this job is processed."
msgstr ""
#. module: base
-#: help:ir.actions.act_window,res_model:0
-msgid "Model name of the object to open in the view window"
+#: model:res.country,name:base.na
+msgid "Namibia"
msgstr ""
#. module: base
-#: field:ir.model.fields,selectable:0
-msgid "Selectable"
+#: model:res.country,name:base.nr
+msgid "Nauru"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:219
-#, python-format
-msgid "Everything seems properly set up!"
+#: model:res.country,name:base.np
+msgid "Nepal"
msgstr ""
#. module: base
-#: view:res.request.link:0
-msgid "Request Link"
+#: model:res.country,name:base.nl
+msgid "Netherlands"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-#: selection:ir.attachment,type:0
-#: field:ir.module.module,url:0
-msgid "URL"
+#: model:ir.module.module,shortdesc:base.module_l10n_nl
+msgid "Netherlands - Accounting"
msgstr ""
#. module: base
-#: help:res.country,name:0
-msgid "The full name of the country."
+#: model:res.country,name:base.an
+msgid "Netherlands Antilles"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.nt
+msgid "Neutral Zone"
msgstr ""
#. module: base
-#: selection:ir.actions.server,state:0
-msgid "Iteration"
+#: model:res.country,name:base.nc
+msgid "New Caledonia (French)"
msgstr ""
#. module: base
-#: code:addons/orm.py:4245
-#: code:addons/orm.py:4346
+#: code:addons/base/module/wizard/base_export_language.py:39
#, python-format
-msgid "UserError"
+msgid "New Language (Empty translation template)"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_project_issue
-msgid "Support, Bug Tracker, Helpdesk"
+#: field:change.password.user,new_passwd:0
+msgid "New Password"
msgstr ""
#. module: base
-#: model:res.country,name:base.ae
-msgid "United Arab Emirates"
+#: selection:ir.actions.act_url,target:0
+#: selection:ir.actions.act_window,target:0
+msgid "New Window"
msgstr ""
#. module: base
-#: help:ir.ui.menu,needaction_enabled:0
-msgid "If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false."
+#: model:res.country,name:base.nz
+msgid "New Zealand"
msgstr ""
#. module: base
-#: code:addons/orm.py:3960
+#: code:addons/base/ir/ir_model.py:443
#, python-format
-msgid "Unable to delete this document because it is used as a default property"
+msgid "New column name must still start with x_ , because it is a custom field!"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_5
-msgid "Silver"
+#: model:ir.module.module,summary:base.module_website_blog
+msgid "News, Blogs, Announces, Discussions"
msgstr ""
#. module: base
-#: field:res.partner.title,shortcut:0
-msgid "Abbreviation"
+#: field:ir.cron,nextcall:0
+msgid "Next Execution Date"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main
-msgid "Recruitment"
+#: field:ir.sequence,number_next:0
+#: field:ir.sequence,number_next_actual:0
+msgid "Next Number"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_gr
-msgid "\n"
-"This is the base module to manage the accounting chart for Greece.\n"
-"==================================================================\n"
-"\n"
-"Greek accounting chart and localization.\n"
-" "
+#: help:ir.sequence,number_next:0
+msgid "Next number of this sequence"
msgstr ""
#. module: base
-#: view:ir.values:0
-msgid "Action Reference"
+#: help:ir.sequence,number_next_actual:0
+msgid "Next number that will be used. This number can be incremented frequently so the displayed value might already be obsolete"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_auth_ldap
-msgid "\n"
-"Adds support for authentication by LDAP server.\n"
-"===============================================\n"
-"This module allows users to login with their LDAP username and password, and\n"
-"will automatically create OpenERP users for them on the fly.\n"
-"\n"
-"**Note:** This module only work on servers who have Python's ``ldap`` module installed.\n"
-"\n"
-"Configuration:\n"
-"--------------\n"
-"After installing this module, you need to configure the LDAP parameters in the\n"
-"Configuration tab of the Company details. Different companies may have different\n"
-"LDAP servers, as long as they have unique usernames (usernames need to be unique\n"
-"in OpenERP, even across multiple companies).\n"
-"\n"
-"Anonymous LDAP binding is also supported (for LDAP servers that allow it), by\n"
-"simply keeping the LDAP user and password empty in the LDAP configuration.\n"
-"This does not allow anonymous authentication for users, it is only for the master\n"
-"LDAP account that is used to verify if a user exists before attempting to\n"
-"authenticate it.\n"
-"\n"
-"Securing the connection with STARTTLS is available for LDAP servers supporting\n"
-"it, by enabling the TLS option in the LDAP configuration.\n"
-"\n"
-"For further options configuring the LDAP settings, refer to the ldap.conf\n"
-"manpage: manpage:`ldap.conf(5)`.\n"
-"\n"
-"Security Considerations:\n"
-"------------------------\n"
-"Users' LDAP passwords are never stored in the OpenERP database, the LDAP server\n"
-"is queried whenever a user needs to be authenticated. No duplication of the\n"
-"password occurs, and passwords are managed in one place only.\n"
-"\n"
-"OpenERP does not manage password changes in the LDAP, so any change of password\n"
-"should be conducted by other means in the LDAP directory directly (for LDAP users).\n"
-"\n"
-"It is also possible to have local OpenERP users in the database along with\n"
-"LDAP-authenticated users (the Administrator account is one obvious example).\n"
-"\n"
-"Here is how it works:\n"
-"---------------------\n"
-" * The system first attempts to authenticate users against the local OpenERP\n"
-" database;\n"
-" * if this authentication fails (for example because the user has no local\n"
-" password), the system then attempts to authenticate against LDAP;\n"
-"\n"
-"As LDAP users have blank passwords by default in the local OpenERP database\n"
-"(which means no access), the first step always fails and the LDAP server is\n"
-"queried to do the authentication.\n"
-"\n"
-"Enabling STARTTLS ensures that the authentication query to the LDAP server is\n"
-"encrypted.\n"
-"\n"
-"User Template:\n"
-"--------------\n"
-"In the LDAP configuration on the Company form, it is possible to select a *User\n"
-"Template*. If set, this user will be used as template to create the local users\n"
-"whenever someone authenticates for the first time via LDAP authentication. This\n"
-"allows pre-setting the default groups and menus of the first-time users.\n"
-"\n"
-"**Warning:** if you set a password for the user template, this password will be\n"
-" assigned as local password for each new LDAP user, effectively setting\n"
-" a *master password* for these users (until manually changed). You\n"
-" usually do not want this. One easy way to setup a template user is to\n"
-" login once with a valid LDAP user, let OpenERP create a blank local\n"
-" user with the same login (and a blank password), then rename this new\n"
-" user to a username that does not exist in LDAP, and setup its groups\n"
-" the way you want.\n"
-"\n"
-"Interaction with base_crypt:\n"
-"----------------------------\n"
-"The base_crypt module is not compatible with this module, and will disable LDAP\n"
-"authentication if installed at the same time.\n"
-" "
+#: help:ir.cron,nextcall:0
+msgid "Next planned execution date for this job."
msgstr ""
#. module: base
-#: model:res.country,name:base.re
-msgid "Reunion (French)"
+#: model:res.country,name:base.ni
+msgid "Nicaragua"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:416
-#, python-format
-msgid "New column name must still start with x_ , because it is a custom field!"
+#: model:res.country,name:base.ne
+msgid "Niger"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_mrp_repair
-msgid "Repairs Management"
+#: model:res.country,name:base.ng
+msgid "Nigeria"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_asset
-msgid "Assets Management"
+#: model:res.country,name:base.nu
+msgid "Niue"
msgstr ""
#. module: base
-#: view:ir.model.access:0
-#: view:ir.rule:0
-#: field:ir.rule,global:0
-msgid "Global"
+#: code:addons/base/res/res_currency.py:58
+#, python-format
+msgid "No currency rate associated for currency '%s' for the given period"
msgstr ""
#. module: base
-#: model:res.country,name:base.cz
-msgid "Czech Republic"
+#: selection:ir.sequence,implementation:0
+msgid "No gap"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_claim_from_delivery
-msgid "Claim on Deliveries"
+#: code:addons/base/module/wizard/base_update_translations.py:39
+#, python-format
+msgid "No language with code \"%s\" exists"
msgstr ""
#. module: base
-#: model:res.country,name:base.sb
-msgid "Solomon Islands"
+#: code:addons/base/ir/ir_fields.py:351
+#, python-format
+msgid "No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'"
msgstr ""
#. module: base
-#: code:addons/orm.py:4151
-#: code:addons/orm.py:4684
+#: code:addons/base/res/res_currency.py:229
#, python-format
-msgid "AccessError"
+msgid "No rate found \n"
+"for the currency: %s \n"
+"at the date: %s"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_gantt
-msgid "\n"
-"OpenERP Web Gantt chart view.\n"
-"=============================\n"
-"\n"
-""
+#: field:ir.model.data,noupdate:0
+msgid "Non Updatable"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_base_status
-msgid "State/Stage Management"
+#: selection:ir.mail_server,smtp_encryption:0
+msgid "None"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_warehouse_management
-msgid "Warehouse"
+#: model:res.country,name:base.nf
+msgid "Norfolk Island"
msgstr ""
#. module: base
-#: field:ir.exports,resource:0
-#: model:ir.module.module,shortdesc:base.module_resource
-#: field:ir.property,res_id:0
-msgid "Resource"
+#: model:res.partner.bank.type,name:base.bank_normal
+msgid "Normal Bank Account"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_process
-msgid "\n"
-"This module shows the basic processes involved in the selected modules and in the sequence they occur.\n"
-"======================================================================================================\n"
-"\n"
-"**Note:** This applies to the modules containing modulename_process.xml.\n"
-"\n"
-"**e.g.** product/process/product_process.xml.\n"
-"\n"
-" "
+#: model:res.country,name:base.kp
+msgid "North Korea"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "8. %I:%M:%S %p ==> 06:25:20 PM"
+#: model:res.country,name:base.mp
+msgid "Northern Mariana Islands"
msgstr ""
#. module: base
-#: view:ir.filters:0
-msgid "Filters shared with all users"
+#: model:res.country,name:base.no
+msgid "Norway"
msgstr ""
#. module: base
-#: view:ir.translation:0
-#: model:ir.ui.menu,name:base.menu_translation
-msgid "Translations"
+#: selection:base.language.install,lang:0
+msgid "Norwegian Bokmål / Norsk bokmål"
msgstr ""
#. module: base
-#: view:ir.actions.report.xml:0
-msgid "Report"
+#: selection:ir.module.module,state:0
+msgid "Not Installable"
msgstr ""
#. module: base
-#: model:res.partner.title,shortcut:base.res_partner_title_prof
-msgid "Prof."
+#: view:ir.module.module:base.view_module_filter
+#: selection:ir.module.module,state:0
+msgid "Not Installed"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:238
-#, python-format
-msgid "Your OpenERP Server does not support SMTP-over-SSL. You could use STARTTLS instead.If SSL is needed, an upgrade to Python 2.6 on the server-side should do the trick."
+#: selection:ir.model.fields,select_level:0
+msgid "Not Searchable"
msgstr ""
#. module: base
-#: model:res.country,name:base.ua
-msgid "Ukraine"
+#: view:ir.model:base.view_model_form
+#: model:ir.module.module,shortdesc:base.module_note
+#: view:res.groups:base.view_groups_form
+#: field:res.partner,comment:0
+msgid "Notes"
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:164
-#: field:ir.module.module,website:0
-#: field:res.company,website:0
-#: field:res.partner,website:0
-#, python-format
-msgid "Website"
+#: field:ir.sequence,padding:0
+msgid "Number Padding"
msgstr ""
#. module: base
-#: selection:ir.mail_server,smtp_encryption:0
-msgid "None"
+#: field:ir.cron,numbercall:0
+msgid "Number of Calls"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_holidays
-msgid "Leave Management"
+#: field:ir.module.category,module_nr:0
+msgid "Number of Modules"
msgstr ""
#. module: base
-#: model:res.company,overdue_msg:base.main_company
-msgid "Dear Sir/Madam,\n"
-"\n"
-"Our records indicate that some payments on your account are still due. Please find details below.\n"
-"If the amount has already been paid, please disregard this notice. Otherwise, please forward us the total amount stated below.\n"
-"If you have any queries regarding your account, Please contact us.\n"
-"\n"
-"Thank you in advance for your cooperation.\n"
-"Best Regards,"
+#: field:base.module.update,added:0
+msgid "Number of modules added"
msgstr ""
#. module: base
-#: view:ir.module.category:0
-msgid "Module Category"
+#: field:base.module.update,updated:0
+msgid "Number of modules updated"
msgstr ""
#. module: base
-#: model:res.country,name:base.us
-msgid "United States"
+#: model:ir.module.module,shortdesc:base.module_auth_oauth
+msgid "OAuth2 Authentication"
msgstr ""
#. module: base
-#: view:ir.ui.view:0
-msgid "Architecture"
+#: model:ir.module.module,shortdesc:base.module_l10n_syscohada
+msgid "OHADA - Accounting"
msgstr ""
#. module: base
-#: model:res.country,name:base.ml
-msgid "Mali"
+#: view:ir.actions.act_window:base.view_window_action_form
+#: field:ir.cron,model:0
+#: field:ir.default,field_tbl:0
+#: view:ir.model.access:base.ir_access_view_search
+#: field:ir.model.access,model_id:0
+#: view:ir.model.data:base.view_model_data_search
+#: view:ir.model.fields:base.view_model_fields_search
+#: field:ir.rule,model_id:0
+#: selection:ir.translation,type:0
+#: view:ir.ui.view:base.view_view_search
+#: field:ir.ui.view,model:0
+#: field:multi_company.default,object_id:0
+#: field:res.request.link,object:0
+#: field:workflow.triggers,model:0
+msgid "Object"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_project_config_project
-msgid "Stages"
+#: field:ir.default,field_name:0
+msgid "Object Field"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Flemish (BE) / Vlaams (BE)"
+#: field:ir.model.fields,model:0
+msgid "Object Name"
+msgstr ""
+
+#. module: base
+#: field:ir.model.fields,relation:0
+msgid "Object Relation"
+msgstr ""
+
+#. module: base
+#: help:multi_company.default,object_id:0
+msgid "Object affected by this rule"
+msgstr ""
+
+#. module: base
+#: report:ir.module.reference:0
+msgid "Object:"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Vietnamese / Tiếng Việt"
+msgid "Occitan (FR, post 1500) / Occitan"
msgstr ""
#. module: base
-#: field:ir.cron,interval_number:0
-msgid "Interval Number"
+#: help:ir.sequence,padding:0
+msgid "Odoo will automatically adds some '0' on the left of the 'Next Number' to get the required padding size."
msgstr ""
#. module: base
-#: model:res.country,name:base.dz
-msgid "Algeria"
+#: model:res.partner.category,name:base.res_partner_category_12
+msgid "Office Supplies"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_hr_employees
-msgid "\n"
-"This module adds a list of employees to your portal's contact page if hr and portal_crm (which creates the contact page) are installed.\n"
-"=======================================================================================================================================\n"
-" "
+#: model:res.groups,name:base.group_hr_user
+msgid "Officer"
msgstr ""
#. module: base
-#: model:res.country,name:base.bn
-msgid "Brunei Darussalam"
+#: model:ir.module.module,description:base.module_payment_ogone
+#: model:ir.module.module,shortdesc:base.module_payment_ogone
+msgid "Ogone Payment Acquirer"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-#: field:ir.actions.act_window,view_type:0
-#: field:ir.actions.act_window.view,view_mode:0
-#: field:ir.ui.view,type:0
-msgid "View Type"
+#: field:ir.translation,src:0
+msgid "Old source"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.next_id_2
-msgid "User Interface"
+#: model:res.country,name:base.om
+msgid "Oman"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_mrp_byproduct
-msgid "MRP Byproducts"
+#: field:workflow,on_create:0
+msgid "On Create"
msgstr ""
#. module: base
-#: field:res.request,ref_partner_id:0
-msgid "Partner Ref."
+#: field:ir.model.fields,on_delete:0
+msgid "On Delete"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_expense
-msgid "Expense Management"
+#: field:ir.actions.act_window.view,multi:0
+#: field:ir.actions.report.xml,multi:0
+msgid "On Multiple Doc."
msgstr ""
#. module: base
-#: field:ir.attachment,create_date:0
-msgid "Date Created"
+#: help:ir.model.fields,on_delete:0
+msgid "On delete property for many2one fields"
msgstr ""
#. module: base
-#: help:ir.actions.server,trigger_name:0
-msgid "The workflow signal to trigger"
+#: model:ir.module.module,shortdesc:base.module_website_event_sale
+msgid "Online Event's Tickets"
msgstr ""
#. module: base
-#: selection:base.language.install,state:0
-#: selection:base.module.import,state:0
-#: selection:base.module.update,state:0
-msgid "done"
+#: model:ir.module.module,shortdesc:base.module_website_event
+msgid "Online Events"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-msgid "General Settings"
+#: model:ir.module.module,shortdesc:base.module_website_quote
+msgid "Online Proposals"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_in
-msgid "\n"
-"Indian Accounting: Chart of Account.\n"
-"====================================\n"
+#: code:addons/base/res/res_config.py:539
+#, python-format
+msgid "Only administrators can change the settings"
+msgstr ""
+
+#. module: base
+#: code:addons/base/ir/ir_attachment.py:79
+#, python-format
+msgid "Only administrators can execute this action."
+msgstr ""
+
+#. module: base
+#: help:ir.ui.view,mode:0
+msgid "Only applies if this view inherits from an other one (inherit_id is not False/Null).\n"
"\n"
-"Indian accounting chart and localization.\n"
-" "
+"* if extension (default), if this view is requested the closest primary view\n"
+" is looked up (via inherit_id), then all views inheriting from it with this\n"
+" view's model are applied\n"
+"* if primary, the closest primary view is fully resolved (even if it uses a\n"
+" different model than this one), then this view's inheritance specs\n"
+" (<xpath/>) are applied, and the result is used as if it were this view's\n"
+" actual arch.\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_uy
-msgid "Uruguay - Chart of Accounts"
+#: help:res.partner.bank,company_id:0
+msgid "Only if this bank account belong to your company"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_administration_shortcut
-msgid "Custom Shortcuts"
+#: code:addons/base/ir/ir_model.py:754
+#, python-format
+msgid "Only users with the following access level are currently allowed to do that"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_si
-msgid "Slovenian - Accounting"
+#: view:base.module.update:base.view_base_module_update
+msgid "Open Modules"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_cancel
-msgid "\n"
-"Allows canceling accounting entries.\n"
-"====================================\n"
-"\n"
-"This module adds 'Allow Canceling Entries' field on form view of account journal.\n"
-"If set to true it allows user to cancel entries & invoices.\n"
-" "
+#: model:ir.actions.client,name:base.action_client_base_menu
+msgid "Open Settings Menu"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_plugin
-msgid "CRM Plugins"
+#: view:ir.actions.act_window:base.view_window_action_tree
+msgid "Open Window"
msgstr ""
#. 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"
+#: view:ir.actions.act_window:base.view_window_action_form
+#: view:ir.actions.act_window:base.view_window_action_search
+msgid "Open a Window"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:500
-#, python-format
-msgid "The `base` module cannot be uninstalled"
+#: model:ir.module.module,summary:base.module_im_chat
+msgid "OpenERP Chat"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_cron.py:247
-#, python-format
-msgid "Record cannot be modified right now"
+#: model:ir.module.module,shortdesc:base.module_web_api
+msgid "OpenERP Web API"
msgstr ""
#. module: base
-#: selection:ir.actions.todo,type:0
-msgid "Launch Manually"
+#: model:ir.module.module,shortdesc:base.module_web_diagram
+msgid "OpenERP Web Diagram"
msgstr ""
#. module: base
-#: model:res.country,name:base.be
-msgid "Belgium"
+#: model:ir.module.module,shortdesc:base.module_auth_openid
+msgid "OpenID Authentification"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_osv_memory_autovacuum
-msgid "osv_memory.autovacuum"
+#: model:ir.module.module,shortdesc:base.module_base_report_designer
+msgid "OpenOffice Report Designer"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:721
+#: code:addons/base/res/res_users.py:158
#, python-format
-msgid "Sorry, you are not allowed to create this kind of document."
+msgid "Operation Canceled"
msgstr ""
#. module: base
-#: field:base.language.export,lang:0
-#: field:base.language.install,lang:0
-#: field:base.update.translations,lang:0
-#: field:ir.translation,lang:0
-#: view:res.lang:0
-#: field:res.partner,lang:0
-msgid "Language"
+#: code:addons/base/workflow/workflow.py:101
+#, python-format
+msgid "Operation Forbidden"
msgstr ""
#. module: base
-#: model:res.country,name:base.gm
-msgid "Gambia"
+#: model:ir.ui.menu,name:base.menu_crm_config_opportunity
+msgid "Opportunities"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_res_company_form
-#: model:ir.actions.act_window,name:base.company_normal_action_tree
-#: model:ir.model,name:base.model_res_company
-#: model:ir.ui.menu,name:base.menu_action_res_company_form
-#: model:ir.ui.menu,name:base.menu_res_company_global
-#: view:res.company:0
-#: view:res.partner:0
-#: field:res.users,company_ids:0
-msgid "Companies"
+#: model:ir.module.module,shortdesc:base.module_sale_crm
+msgid "Opportunity to Quotation"
msgstr ""
#. module: base
-#: help:res.currency,symbol:0
-msgid "Currency sign, to be used when printing amounts."
+#: help:ir.actions.act_window,domain:0
+msgid "Optional domain filtering of the destination data, as a Python expression"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%H - Hour (24-hour clock) [00,23]."
+#: help:ir.actions.act_url,help:0
+#: help:ir.actions.act_window,help:0
+#: help:ir.actions.act_window_close,help:0
+#: help:ir.actions.actions,help:0
+#: help:ir.actions.client,help:0
+#: help:ir.actions.report.xml,help:0
+#: help:ir.actions.server,help:0
+msgid "Optional help text for the users with a description of the target view, such as its usage and purpose."
msgstr ""
#. module: base
-#: field:ir.model.fields,on_delete:0
-msgid "On Delete"
+#: help:ir.actions.act_window,src_model:0
+msgid "Optional model name of the objects on which this action should be visible"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:342
-#, python-format
-msgid "Model %s does not exist!"
+#: help:ir.actions.client,res_model:0
+msgid "Optional model, mostly used for needactions."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_mrp_jit
-msgid "Just In Time Scheduling"
+#: help:ir.mail_server,smtp_pass:0
+msgid "Optional password for SMTP authentication"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-#: field:ir.actions.server,code:0
-#: selection:ir.actions.server,state:0
-msgid "Python Code"
+#: help:ir.mail_server,smtp_user:0
+msgid "Optional username for SMTP authentication"
msgstr ""
#. module: base
-#: help:ir.actions.server,state:0
-msgid "Type of the Action that is to be executed"
+#: selection:ir.ui.view,application:0
+msgid "Optional, disabled"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_crm
-msgid "\n"
-"This module adds a contact page (with a contact form creating a lead when submitted) to your portal if crm and portal are installed.\n"
-"====================================================================================================================================\n"
-" "
+#: selection:ir.ui.view,application:0
+msgid "Optional, enabled"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_us
-msgid "United States - Chart of accounts"
+#: selection:workflow.activity,split_mode:0
+msgid "Or"
msgstr ""
#. module: base
-#: view:base.language.export:0
-#: view:base.language.import:0
-#: view:base.language.install:0
-#: view:base.module.import:0
-#: view:base.module.update:0
-#: view:base.module.upgrade:0
-#: view:base.update.translations:0
-#: view:change.password.wizard:0
-#: view:ir.actions.configuration.wizard:0
-#: view:res.config:0
-#: view:res.users:0
-#: view:wizard.ir.model.menu.create:0
-msgid "Cancel"
+#: field:ir.ui.view.custom,ref_id:0
+msgid "Original View"
msgstr ""
#. module: base
-#: code:addons/orm.py:1506
+#: code:addons/base/res/res_users.py:739
+#: code:addons/base/res/res_users.py:891
+#: selection:res.partner,type:0
+#: view:res.users:base.user_groups_view
#, python-format
-msgid "Unknown database identifier '%s'"
+msgid "Other"
msgstr ""
#. module: base
-#: selection:base.language.export,format:0
-msgid "PO File"
+#: selection:ir.module.module,license:0
+msgid "Other OSI Approved Licence"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_diagram
-msgid "\n"
-"Openerp Web Diagram view.\n"
-"=========================\n"
-"\n"
-""
+#: model:ir.actions.act_window,name:base.action_partner_other_form
+msgid "Other Partners"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_ch
-msgid "\n"
-"Swiss localization :\n"
-"====================\n"
-"**Multilang swiss STERCHI account chart and taxes**\n"
-" **Author:** Camptocamp SA\n"
-"\n"
-" **Donors:** Hasa Sàrl, Open Net Sàrl and Prisme Solutions Informatique SA\n"
-"\n"
-" **Translators:** brain-tec AG, Agile Business Group\n"
-"\n"
-"**This release will introduce major changes to l10n_ch.**\n"
-"\n"
-"Due to important refactoring needs and the Switzerland adoption of new international payment standard during 2013-2014. We have reorganised the swiss localization addons this way:\n"
-"\n"
-"- **l10n_ch**: Multilang swiss STERCHI account chart and taxes (official addon)\n"
-"- **l10n_ch_base_bank**: Technical module that introduces a new and simplified version of bank type management\n"
-"- **l10n_ch_bank**: List of swiss banks\n"
-"- **l10n_ch_zip**: List of swiss postal zip\n"
-"- **l10n_ch_dta**: Support of dta payment protocol (will be deprecated end 2014)\n"
-"- **l10n_ch_payment_slip**: Support of ESR/BVR payment slip report and reconciliation. Report refactored with easy element positioning.\n"
-"- **l10n_ch_sepa**: Alpha implementation of PostFinance SEPA/PAIN support will be completed during 2013/2014\n"
-"\n"
-"The modules will be soon available on OpenERP swiss localization on launchpad:\n"
-"https://launchpad.net/openerp-swiss-localization\n"
-""
+#: selection:ir.module.module,license:0
+msgid "Other Proprietary"
msgstr ""
#. module: base
-#: model:res.country,name:base.nt
-msgid "Neutral Zone"
+#: view:ir.mail_server:base.view_ir_mail_server_search
+msgid "Outgoing Mail Server"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_sale
-msgid "\n"
-"This module adds a Sales menu to your portal as soon as sale and portal are installed.\n"
-"======================================================================================\n"
-"\n"
-"After installing this module, portal users will be able to access their own documents\n"
-"via the following menus:\n"
-"\n"
-" - Quotations\n"
-" - Sale Orders\n"
-" - Delivery Orders\n"
-" - Products (public ones)\n"
-" - Invoices\n"
-" - Payments/Refunds\n"
-"\n"
-"If online payment acquirers are configured, portal users will also be given the opportunity to\n"
-"pay online on their Sale Orders and Invoices that are not paid yet. Paypal is included\n"
-"by default, you simply need to configure a Paypal account in the Accounting/Invoicing settings.\n"
-" "
+#: model:ir.actions.act_window,name:base.action_ir_mail_server_list
+#: view:ir.mail_server:base.ir_mail_server_form
+#: view:ir.mail_server:base.ir_mail_server_list
+#: view:ir.mail_server:base.view_ir_mail_server_search
+#: model:ir.ui.menu,name:base.menu_mail_servers
+msgid "Outgoing Mail Servers"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:316
-#, python-format
-msgid "external id"
+#: view:workflow.activity:base.view_workflow_activity_form
+#: field:workflow.activity,out_transitions:0
+msgid "Outgoing Transitions"
msgstr ""
#. module: base
-#: view:ir.model:0
-msgid "Custom"
+#: field:base.language.import,overwrite:0
+#: field:base.language.install,overwrite:0
+msgid "Overwrite Existing Terms"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_sale_margin
-msgid "Margins in Sales Orders"
+#: view:ir.attachment:base.view_attachment_search
+#: field:ir.attachment,create_uid:0
+msgid "Owner"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_purchase
-msgid "Purchase Management"
+#: selection:ir.actions.report.xml,report_type:0
+msgid "PDF"
msgstr ""
#. module: base
-#: field:ir.module.module,published_version:0
-msgid "Published Version"
+#: selection:base.language.export,format:0
+msgid "PO File"
msgstr ""
#. module: base
-#: model:res.country,name:base.is
-msgid "Iceland"
+#: view:base.language.export:base.wizard_lang_export
+msgid "PO(T) format: you should edit it with a PO editor such as"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_action_window
-#: model:ir.ui.menu,name:base.menu_ir_action_window
-msgid "Window Actions"
+#: view:base.language.export:base.wizard_lang_export
+msgid "POEdit"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_project_issue
-msgid "\n"
-"This module adds issue menu and features to your portal if project_issue and portal are installed.\n"
-"==================================================================================================\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_pad_project
+msgid "Pad on tasks"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%I - Hour (12-hour clock) [01,12]."
+#: model:res.country,name:base.pk
+msgid "Pakistan"
msgstr ""
#. module: base
-#: view:res.config:0
-msgid "res_config_contents"
+#: model:res.country,name:base.pw
+msgid "Palau"
msgstr ""
#. module: base
-#: model:res.country,name:base.de
-msgid "Germany"
+#: model:res.country,name:base.ps
+msgid "Palestinian Territory, Occupied"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_auth_oauth
-msgid "OAuth2 Authentication"
+#: model:res.country,name:base.pa
+msgid "Panama"
msgstr ""
#. module: base
-#: view:workflow:0
-msgid "When customizing a workflow, be sure you do not modify an existing node or arrow, but rather add new nodes or arrows. If you absolutly need to modify a node or arrow, you can only change fields that are empty or set to the default value. If you don't do that, your customization will be overwrited at the next update or upgrade to a future version of OpenERP."
+#: model:ir.module.module,shortdesc:base.module_l10n_pa
+msgid "Panama Localization Chart Account"
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "Reports :"
+#: field:res.company,rml_paper_format:0
+msgid "Paper Format"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_multi_company
-msgid "\n"
-"This module is for managing a multicompany environment.\n"
-"=======================================================\n"
-"\n"
-"This module is the base module for other multi-company modules.\n"
-" "
+#: model:res.country,name:base.pg
+msgid "Papua New Guinea"
msgstr ""
#. module: base
-#: sql_constraint:res.currency:0
-msgid "The currency code must be unique per company!"
+#: model:res.country,name:base.py
+msgid "Paraguay"
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_export_language.py:39
-#, python-format
-msgid "New Language (Empty translation template)"
+#: view:ir.property:base.ir_property_view
+#: view:ir.property:base.ir_property_view_search
+#: view:ir.property:base.ir_property_view_tree
+#: model:ir.ui.menu,name:base.menu_ir_property
+msgid "Parameters"
msgstr ""
#. module: base
-#: help:ir.actions.server,email:0
-msgid "Expression that returns the email address to send to. Can be based on the same values as for the condition field.\n"
-"Example: object.invoice_address_id.email, or 'me@example.com'"
+#: view:ir.property:base.ir_property_view_search
+msgid "Parameters that are used by all resources."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_project_issue_sheet
-msgid "\n"
-"This module adds the Timesheet support for the Issues/Bugs Management in Project.\n"
-"=================================================================================\n"
-"\n"
-"Worklogs can be maintained to signify number of hours spent by users to handle an issue.\n"
-" "
+#: field:ir.actions.client,params_store:0
+msgid "Params storage"
msgstr ""
#. module: base
-#: model:res.country,name:base.gy
-msgid "Guyana"
+#: field:ir.module.category,parent_id:0
+msgid "Parent Application"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_product_expiry
-msgid "Products Expiry Date"
+#: field:res.partner.category,parent_id:0
+msgid "Parent Category"
msgstr ""
#. module: base
-#: code:addons/base/res/res_config.py:386
-#, python-format
-msgid "Click 'Continue' to configure the next addon..."
+#: field:res.company,parent_id:0
+msgid "Parent Company"
msgstr ""
#. module: base
-#: field:ir.actions.server,record_id:0
-msgid "Create Id"
+#: field:ir.ui.menu,parent_left:0
+msgid "Parent Left"
msgstr ""
#. module: base
-#: model:res.country,name:base.hn
-msgid "Honduras"
+#: field:ir.ui.menu,parent_id:0
+#: field:wizard.ir.model.menu.create,menu_id:0
+msgid "Parent Menu"
msgstr ""
#. module: base
-#: model:res.country,name:base.eg
-msgid "Egypt"
+#: field:ir.ui.menu,parent_right:0
+msgid "Parent Right"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "Creation"
+#: field:ir.actions.report.xml,parser:0
+msgid "Parser Class"
msgstr ""
#. module: base
-#: help:ir.actions.server,model_id:0
-msgid "Select the object on which the action will work (read, write, create)."
+#: model:ir.model,name:base.model_res_partner
+#: field:res.company,partner_id:0
+#: model:res.partner.category,name:base.res_partner_category_0
+#: selection:res.partner.title,domain:0
+#: model:res.request.link,name:base.req_link_partner
+msgid "Partner"
msgstr ""
#. module: base
-#: field:base.language.import,name:0
-msgid "Language Name"
+#: model:ir.module.module,shortdesc:base.module_crm_partner_assign
+msgid "Partner Assignation & Geolocation"
msgstr ""
#. module: base
-#: selection:ir.property,type:0
-msgid "Boolean"
+#: model:ir.actions.act_window,name:base.action_partner_mass_mail
+msgid "Partner Mass Mailing"
msgstr ""
#. module: base
-#: help:ir.mail_server,smtp_encryption:0
-msgid "Choose the connection encryption scheme:\n"
-"- None: SMTP sessions are done in cleartext.\n"
-"- TLS (STARTTLS): TLS encryption is requested at start of SMTP session (Recommended)\n"
-"- SSL/TLS: SMTP sessions are encrypted with SSL/TLS through a dedicated port (default: 465)"
+#: model:ir.module.module,summary:base.module_website_partner
+msgid "Partner Module for Website"
msgstr ""
#. module: base
-#: view:ir.model:0
-msgid "Fields Description"
+#: view:res.partner.category:base.view_partner_category_form
+msgid "Partner Tag"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_analytic_contract_hr_expense
-msgid "Contracts Management: hr_expense link"
+#: model:ir.actions.act_window,name:base.action_partner_by_category
+#: model:ir.actions.act_window,name:base.action_partner_category_form
+#: model:ir.model,name:base.model_res_partner_category
+#: model:ir.ui.menu,name:base.menu_partner_category_form
+#: view:res.partner.category:base.view_partner_category_list
+#: view:res.partner.category:base.view_partner_category_tree
+msgid "Partner Tags"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-#: view:ir.cron:0
-#: view:ir.model.access:0
-#: view:ir.model.data:0
-#: view:ir.model.fields:0
-#: view:ir.module.module:0
-#: view:ir.ui.view:0
-#: view:ir.values:0
-#: view:res.partner:0
-#: view:workflow.activity:0
-msgid "Group By..."
+#: view:res.partner.title:base.view_partner_title_form
+#: view:res.partner.title:base.view_partner_title_tree
+msgid "Partner Titles"
msgstr ""
#. module: base
-#: view:base.module.update:0
-msgid "Module Update Result"
+#: help:res.users,partner_id:0
+msgid "Partner-related data of the user"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_analytic_contract_hr_expense
-msgid "\n"
-"This module is for modifying account analytic view to show some data related to the hr_expense module.\n"
-"======================================================================================================\n"
-""
+#: view:res.partner:base.view_partner_form
+#: field:res.partner.category,partner_ids:0
+msgid "Partners"
msgstr ""
#. module: base
-#: field:ir.attachment,store_fname:0
-msgid "Stored Filename"
+#: model:ir.module.module,shortdesc:base.module_base_geolocalize
+msgid "Partners Geo-Localization"
msgstr ""
#. module: base
-#: field:res.partner,use_parent_address:0
-msgid "Use Company Address"
+#: code:addons/base/res/res_partner.py:766
+#, python-format
+msgid "Partners: "
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_hr_holidays
-msgid "Holidays, Allocation and Leave Requests"
+#: field:ir.mail_server,smtp_pass:0
+#: field:res.users,password:0
+msgid "Password"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_hello
-msgid "\n"
-"OpenERP Web example module.\n"
-"===========================\n"
-"\n"
-""
+#: model:ir.module.module,shortdesc:base.module_auth_crypt
+msgid "Password Encryption"
msgstr ""
#. module: base
-#: selection:ir.module.module,state:0
-#: selection:ir.module.module.dependency,state:0
-msgid "To be installed"
+#: field:ir.logging,path:0
+#: field:res.font,path:0
+msgid "Path"
msgstr ""
#. module: base
-#: view:ir.model:0
-#: model:ir.module.module,shortdesc:base.module_base
-#: field:res.currency,base:0
-msgid "Base"
+#: model:ir.module.module,shortdesc:base.module_payment
+msgid "Payment Acquirer"
msgstr ""
#. module: base
-#: field:ir.model.data,model:0
-#: field:ir.values,model:0
-msgid "Model Name"
+#: model:ir.module.module,description:base.module_payment
+#: model:ir.module.module,summary:base.module_payment
+msgid "Payment Acquirer Base Module"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Telugu / తెలుగు"
+#: model:ir.module.module,summary:base.module_payment_adyen
+msgid "Payment Acquirer: Adyen Implementation"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_partner_supplier_form
-msgid "<p class=\"oe_view_nocontent_create\">\n"
-" Click to add a contact in your address book.\n"
-" </p><p>\n"
-" OpenERP helps you easily track all activities related to\n"
-" a supplier: discussions, history of purchases,\n"
-" documents, etc.\n"
-" </p>\n"
-" "
+#: model:ir.module.module,summary:base.module_payment_buckaroo
+msgid "Payment Acquirer: Buckaroo Implementation"
msgstr ""
#. module: base
-#: model:res.country,name:base.lr
-msgid "Liberia"
+#: model:ir.module.module,summary:base.module_payment_ogone
+msgid "Payment Acquirer: Ogone Implementation"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_tests
-msgid "\n"
-"OpenERP Web test suite.\n"
-"=======================\n"
-"\n"
-""
+#: model:ir.module.module,summary:base.module_payment_paypal
+msgid "Payment Acquirer: Paypal Implementation"
msgstr ""
#. module: base
-#: view:ir.model:0
-#: model:ir.module.module,shortdesc:base.module_note
-#: view:res.groups:0
-#: field:res.partner,comment:0
-msgid "Notes"
+#: model:ir.module.module,summary:base.module_payment_transfer
+msgid "Payment Acquirer: Transfer Implementation"
msgstr ""
#. module: base
-#: field:ir.config_parameter,value:0
-#: field:ir.property,value_binary:0
-#: field:ir.property,value_datetime:0
-#: field:ir.property,value_float:0
-#: field:ir.property,value_integer:0
-#: field:ir.property,value_reference:0
-#: field:ir.property,value_text:0
-#: selection:ir.server.object.lines,type:0
-#: field:ir.server.object.lines,value:0
-#: field:ir.values,value:0
-msgid "Value"
+#: model:ir.ui.menu,name:base.menu_sales_followup
+msgid "Payment Follow-up"
msgstr ""
#. module: base
-#: view:base.language.import:0
-#: field:ir.sequence,code:0
-#: field:ir.sequence.type,code:0
-#: selection:ir.translation,type:0
-#: field:res.partner.bank.type,code:0
-msgid "Code"
+#: model:ir.module.module,shortdesc:base.module_account_followup
+msgid "Payment Follow-up Management"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_config_installer
-msgid "res.config.installer"
+#: model:ir.module.module,shortdesc:base.module_website_payment
+#: model:ir.module.module,summary:base.module_website_payment
+msgid "Payment: Website Integration"
msgstr ""
#. module: base
-#: model:res.country,name:base.mc
-msgid "Monaco"
+#: model:ir.module.module,description:base.module_payment_paypal
+#: model:ir.module.module,shortdesc:base.module_payment_paypal
+msgid "Paypal Payment Acquirer"
msgstr ""
#. module: base
-#: selection:ir.cron,interval_type:0
-msgid "Minutes"
+#: model:ir.module.category,name:base.module_category_localization_payroll
+#: model:ir.module.module,shortdesc:base.module_hr_payroll
+msgid "Payroll"
msgstr ""
#. module: base
-#: view:res.currency:0
-msgid "Display"
+#: model:ir.module.module,shortdesc:base.module_hr_payroll_account
+msgid "Payroll Accounting"
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_multi_company
-msgid "Multi Companies"
+#: model:ir.module.module,summary:base.module_hr_evaluation
+msgid "Periodical Evaluations, Appraisals, Surveys"
msgstr ""
#. module: base
-#: help:res.users,menu_id:0
-msgid "If specified, the action will replace the standard menu for this user."
+#: code:addons/base/ir/ir_model.py:531
+#: code:addons/base/ir/ir_model.py:592
+#: code:addons/base/ir/ir_model.py:1096
+#, python-format
+msgid "Permission Denied"
msgstr ""
#. module: base
-#: model:ir.actions.report.xml,name:base.preview_report
-msgid "Preview Report"
+#: selection:base.language.install,lang:0
+msgid "Persian / فارس"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_purchase_analytic_plans
-msgid "Purchase Analytic Plans"
+#: model:ir.module.module,summary:base.module_calendar
+msgid "Personal & Shared Calendar"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_sequence_type
-#: model:ir.ui.menu,name:base.menu_ir_sequence_type
-msgid "Sequence Codes"
+#: view:res.partner:base.view_res_partner_filter
+msgid "Persons"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (CO) / Español (CO)"
+#: model:res.country,name:base.pe
+msgid "Peru"
msgstr ""
#. module: base
-#: view:base.module.configuration:0
-msgid "All pending configuration wizards have been executed. You may restart individual wizards via the list of configuration wizards."
+#: model:ir.module.module,shortdesc:base.module_l10n_pe
+msgid "Peru Localization Chart Account"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Current Year with Century: %(year)s"
+#: model:res.country,name:base.ph
+msgid "Philippines"
msgstr ""
#. module: base
-#: field:ir.exports,export_fields:0
-msgid "Export ID"
+#: code:addons/base/res/res_company.py:163
+#: field:res.bank,phone:0
+#: field:res.company,phone:0
+#: field:res.partner,phone:0
+#, python-format
+msgid "Phone"
msgstr ""
#. module: base
-#: model:res.country,name:base.fr
-msgid "France"
+#: view:res.partner:base.view_partner_form
+msgid "Phone:"
msgstr ""
#. module: base
-#: view:workflow.activity:0
-#: field:workflow.activity,flow_stop:0
-msgid "Flow Stop"
+#: model:res.country,name:base.pn
+msgid "Pitcairn Island"
msgstr ""
#. module: base
-#: selection:ir.cron,interval_type:0
-msgid "Weeks"
+#: field:ir.actions.server,copyvalue:0
+msgid "Placeholder Expression"
msgstr ""
#. module: base
-#: model:res.country,name:base.af
-msgid "Afghanistan, Islamic State of"
+#: model:ir.module.module,description:base.module_l10n_pt
+msgid "Plano de contas SNC para Portugal"
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_module_import.py:58
-#: code:addons/base/module/wizard/base_module_import.py:66
+#: code:addons/base/ir/ir_model.py:757
#, python-format
-msgid "Error !"
+msgid "Please contact your system administrator if you think this is an error."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo
-msgid "Marketing Campaign - Demo"
+#: code:addons/base/ir/ir_mail_server.py:458
+#, python-format
+msgid "Please define at least one SMTP server, or provide the SMTP parameters explicitly."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:360
+#: code:addons/base/workflow/workflow.py:102
#, python-format
-msgid "Can not create Many-To-One records indirectly, import the field separately"
+msgid "Please make sure no workitems refer to an activity before deleting it!"
msgstr ""
#. module: base
-#: field:ir.cron,interval_type:0
-msgid "Interval Unit"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Please set the Base Model before setting the action details."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_stock
-msgid "Portal Stock"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Please set the Base Model of the action to enable the dynamic expression buidler."
msgstr ""
#. module: base
-#: field:workflow.activity,kind:0
-msgid "Kind"
+#: code:addons/base/ir/ir_actions.py:840
+#, python-format
+msgid "Please specify an action to launch!"
msgstr ""
#. module: base
-#: code:addons/orm.py:4646
+#: code:addons/base/res/res_users.py:158
#, python-format
-msgid "This method does not exist anymore"
+msgid "Please use the change password wizard (in User Preferences or User menu) to change your own password."
msgstr ""
#. module: base
-#: view:base.update.translations:0
-#: model:ir.actions.act_window,name:base.action_wizard_update_translations
-#: model:ir.ui.menu,name:base.menu_wizard_update_translations
-msgid "Synchronize Terms"
+#: model:ir.module.category,name:base.module_category_point_of_sale
+#: model:ir.module.module,shortdesc:base.module_point_of_sale
+msgid "Point of Sale"
msgstr ""
#. module: base
-#: field:res.lang,thousands_sep:0
-msgid "Thousands Separator"
+#: model:ir.module.module,shortdesc:base.module_pos_discount
+msgid "Point of Sale Discounts"
msgstr ""
#. module: base
-#: field:res.request,create_date:0
-msgid "Created Date"
+#: model:res.country,name:base.pl
+msgid "Poland"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_cn
-msgid "中国会计科目表 - Accounting"
+#: model:ir.module.module,shortdesc:base.module_l10n_pl
+msgid "Poland - Accounting"
msgstr ""
#. module: base
-#: sql_constraint:ir.model.constraint:0
-msgid "Constraints with the same name are unique per module."
+#: selection:base.language.install,lang:0
+msgid "Polish / Język polski"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_report_intrastat
-msgid "\n"
-"A module that adds intrastat reports.\n"
-"=====================================\n"
-"\n"
-"This module gives the details of the goods traded between the countries of\n"
-"European Union."
+#: model:res.country,name:base.pf
+msgid "Polynesia (French)"
msgstr ""
#. module: base
-#: help:ir.actions.server,loop_action:0
-msgid "Select the action that will be executed. Loop action will not be avaliable inside loop."
+#: model:ir.module.category,name:base.module_category_portal
+#: model:ir.module.module,shortdesc:base.module_portal
+#: model:res.groups,name:base.group_portal
+msgid "Portal"
msgstr ""
#. module: base
-#: help:ir.model.data,res_id:0
-msgid "ID of the target record in the database"
+#: model:ir.module.module,shortdesc:base.module_portal_claim
+msgid "Portal Claim"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_analytic_analysis
-msgid "Contracts Management"
+#: model:ir.module.module,shortdesc:base.module_portal_gamification
+msgid "Portal Gamification"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Chinese (TW) / 正體字"
+#: model:ir.module.module,shortdesc:base.module_portal_project_issue
+msgid "Portal Issue"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_request
-msgid "res.request"
+#: model:ir.module.module,shortdesc:base.module_portal_project
+msgid "Portal Project"
msgstr ""
#. module: base
-#: field:res.partner,image_medium:0
-msgid "Medium-sized image"
+#: model:ir.module.module,shortdesc:base.module_portal_sale
+msgid "Portal Sale"
msgstr ""
#. module: base
-#: view:ir.model:0
-msgid "In Memory"
+#: model:ir.module.module,shortdesc:base.module_portal_stock
+msgid "Portal Stock"
msgstr ""
#. module: base
-#: view:ir.actions.todo:0
-msgid "Todo"
+#: model:res.groups,comment:base.group_portal
+msgid "Portal members have specific access rights (such as record rules and restricted menus).\n"
+" They usually do not belong to the usual OpenERP groups."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_product_visible_discount
-msgid "Prices Visible Discounts"
+#: model:res.country,name:base.pt
+msgid "Portugal"
msgstr ""
#. module: base
-#: field:ir.attachment,datas:0
-msgid "File Content"
+#: model:ir.module.module,shortdesc:base.module_l10n_pt
+msgid "Portugal - Chart of Accounts"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_model_relation
-#: view:ir.model.relation:0
-#: model:ir.ui.menu,name:base.ir_model_relation_menu
-msgid "ManyToMany Relations"
+#: selection:base.language.install,lang:0
+msgid "Portuguese (BR) / Português (BR)"
msgstr ""
#. module: base
-#: model:res.country,name:base.pa
-msgid "Panama"
+#: selection:base.language.install,lang:0
+msgid "Portuguese / Português"
msgstr ""
#. module: base
-#: help:workflow.transition,group_id:0
-msgid "The group that a user must have to be authorized to validate this transition."
+#: model:ir.module.module,shortdesc:base.module_hw_posbox_homepage
+msgid "PosBox Homepage"
msgstr ""
#. module: base
-#: constraint:res.users:0
-msgid "The chosen company is not in the allowed companies for this user"
+#: model:ir.module.module,shortdesc:base.module_hw_posbox_upgrade
+msgid "PosBox Software Upgrader"
msgstr ""
#. module: base
-#: model:res.country,name:base.gi
-msgid "Gibraltar"
+#: help:ir.model.constraint,name:0
+msgid "PostgreSQL constraint or foreign key name."
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,report_name:0
-msgid "Service Name"
+#: help:ir.model.relation,name:0
+msgid "PostgreSQL table name implementing a many2many relation."
msgstr ""
#. module: base
-#: model:res.country,name:base.pn
-msgid "Pitcairn Island"
+#: view:res.users:base.view_users_form
+msgid "Preferences"
msgstr ""
#. module: base
-#: field:res.partner,category_id:0
-msgid "Tags"
+#: field:ir.sequence,prefix:0
+msgid "Prefix"
msgstr ""
#. module: base
-#: view:base.module.upgrade:0
-msgid "We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)."
+#: help:ir.sequence,prefix:0
+msgid "Prefix value of the record for the sequence"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_rule
-#: view:ir.rule:0
-#: model:ir.ui.menu,name:base.menu_action_rule
-msgid "Record Rules"
+#: model:ir.module.module,summary:base.module_website_instantclick
+msgid "Preloads and speeds up website on public browsing of the website using Instantclick."
msgstr ""
#. module: base
-#: view:multi_company.default:0
-msgid "Multi Company"
+#: model:ir.module.module,summary:base.module_website_hr
+msgid "Present Your Team"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_portal
-#: model:ir.module.module,shortdesc:base.module_portal
-msgid "Portal"
+#: view:res.company:base.view_company_form
+msgid "Preview Header/Footer"
msgstr ""
#. module: base
-#: selection:ir.translation,state:0
-msgid "To Translate"
+#: model:ir.actions.report.xml,name:base.preview_report
+msgid "Preview Report"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:294
-#, python-format
-msgid "See all possible values"
+#: view:res.currency:base.view_currency_form
+msgid "Price Accuracy"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_claim_from_delivery
-msgid "\n"
-"Create a claim from a delivery order.\n"
-"=====================================\n"
-"\n"
-"Adds a Claim link to the delivery order.\n"
-""
+#: model:ir.module.module,shortdesc:base.module_product_visible_discount
+msgid "Prices Visible Discounts"
msgstr ""
#. module: base
-#: view:ir.model:0
-#: view:workflow.activity:0
-msgid "Properties"
+#: field:ir.cron,priority:0
+#: field:ir.mail_server,sequence:0
+#: field:res.request.link,priority:0
+msgid "Priority"
msgstr ""
#. module: base
-#: help:ir.sequence,padding:0
-msgid "OpenERP will automatically adds some '0' on the left of the 'Next Number' to get the required padding size."
+#: model:ir.module.module,shortdesc:base.module_procurement
+msgid "Procurements"
msgstr ""
#. module: base
-#: help:ir.model.constraint,name:0
-msgid "PostgreSQL constraint or foreign key name."
+#: model:ir.module.module,shortdesc:base.module_product_email_template
+msgid "Product Email Template"
msgstr ""
#. module: base
-#: view:res.company:0
-msgid "Click to set your company logo."
+#: model:ir.module.module,shortdesc:base.module_product_extended
+msgid "Product extension to track sales and purchases"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%A - Full weekday name."
+#: model:ir.ui.menu,name:base.menu_product
+msgid "Products"
msgstr ""
#. module: base
-#: help:ir.values,user_id:0
-msgid "If set, action binding only applies for this user."
+#: model:ir.module.module,shortdesc:base.module_product
+msgid "Products & Pricelists"
msgstr ""
#. module: base
-#: model:res.country,name:base.gw
-msgid "Guinea Bissau"
+#: model:ir.module.module,shortdesc:base.module_product_expiry
+msgid "Products Expiry Date"
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,header:0
-msgid "Add RML Header"
+#: model:res.partner.title,shortcut:base.res_partner_title_prof
+msgid "Prof."
msgstr ""
#. module: base
-#: help:res.company,rml_footer:0
-msgid "Footer text displayed at the bottom of all reports."
+#: model:res.partner.title,name:base.res_partner_title_prof
+msgid "Professor"
msgstr ""
#. module: base
-#: field:ir.module.module,icon:0
-msgid "Icon URL"
+#: model:ir.module.category,name:base.module_category_project_management
+#: model:ir.ui.menu,name:base.menu_main_pm
+#: model:ir.ui.menu,name:base.menu_project_config
+#: model:ir.ui.menu,name:base.menu_project_report
+msgid "Project"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_note_pad
-msgid "Memos pad"
+#: model:ir.module.module,shortdesc:base.module_project
+msgid "Project Management"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_pad
-msgid "\n"
-"Adds enhanced support for (Ether)Pad attachments in the web client.\n"
-"===================================================================\n"
-"\n"
-"Lets the company customize which Pad installation should be used to link to new\n"
-"pads (by default, http://ietherpad.com/).\n"
-" "
+#: model:ir.module.module,summary:base.module_project
+msgid "Projects, Tasks"
msgstr ""
#. module: base
-#: sql_constraint:res.lang:0
-msgid "The code of the language must be unique !"
+#: view:ir.model:base.view_model_form
+#: view:workflow.activity:base.view_workflow_activity_form
+msgid "Properties"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_attachment
-#: view:ir.actions.report.xml:0
-#: view:ir.attachment:0
-#: model:ir.ui.menu,name:base.menu_action_attachment
-msgid "Attachments"
+#: code:addons/base/ir/ir_model.py:426
+#, python-format
+msgid "Properties of base fields cannot be altered in this manner! Please modify them through Python code, preferably through a custom addon!"
msgstr ""
#. module: base
-#: help:res.company,bank_ids:0
-msgid "Bank accounts related to this company"
+#: model:res.partner.category,name:base.res_partner_category_2
+msgid "Prospect"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_sales_management
-#: model:ir.ui.menu,name:base.menu_base_partner
-#: model:ir.ui.menu,name:base.menu_sale_config
-#: model:ir.ui.menu,name:base.menu_sale_config_sales
-#: model:ir.ui.menu,name:base.menu_sales
-#: model:ir.ui.menu,name:base.next_id_64
-#: view:res.users:0
-msgid "Sales"
+#: help:ir.actions.server,write_expression:0
+msgid "Provide an expression that, applied on the current record, gives the field to update."
msgstr ""
#. module: base
-#: field:ir.actions.server,child_ids:0
-msgid "Other Actions"
+#: help:ir.actions.server,link_field_id:0
+msgid "Provide the field where the record id is stored after the operations."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_be_coda
-msgid "Belgium - Import Bank CODA Statements"
+#: model:res.groups,name:base.group_public
+msgid "Public"
msgstr ""
#. module: base
-#: selection:ir.actions.todo,state:0
-msgid "Done"
+#: model:ir.module.module,shortdesc:base.module_website_project
+msgid "Public Projects"
msgstr ""
#. module: base
-#: help:ir.cron,doall:0
-msgid "Specify if missed occurrences should be executed when the server restarts."
+#: model:res.groups,comment:base.group_public
+msgid "Public users have specific access rights (such as record rules and restricted menus).\n"
+" They usually do not belong to the usual OpenERP groups."
msgstr ""
#. module: base
-#: model:res.partner.title,name:base.res_partner_title_miss
-#: model:res.partner.title,shortcut:base.res_partner_title_miss
-msgid "Miss"
+#: model:ir.module.module,summary:base.module_website_membership
+msgid "Publish Associations, Groups and Memberships"
msgstr ""
#. module: base
-#: view:ir.model.access:0
-#: field:ir.model.access,perm_write:0
-msgid "Write Access"
+#: model:ir.module.module,summary:base.module_website_crm_partner_assign
+msgid "Publish Your Channel of Resellers"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%m - Month number [01,12]."
+#: model:ir.module.module,summary:base.module_website_customer
+msgid "Publish Your Customer References"
msgstr ""
#. module: base
-#: field:res.bank,city:0
-#: field:res.company,city:0
-#: field:res.partner,city:0
-#: field:res.partner.bank,city:0
-msgid "City"
+#: model:ir.module.module,summary:base.module_website_project
+msgid "Publish Your Public Projects"
msgstr ""
#. module: base
-#: model:res.country,name:base.qa
-msgid "Qatar"
+#: field:ir.module.module,published_version:0
+msgid "Published Version"
msgstr ""
#. module: base
-#: model:res.country,name:base.it
-msgid "Italy"
+#: model:res.country,name:base.pr
+msgid "Puerto Rico"
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_sale_salesman
-msgid "See Own Leads"
+#: model:ir.ui.menu,name:base.next_id_73
+msgid "Purchase"
msgstr ""
#. module: base
-#: view:ir.actions.todo:0
-#: selection:ir.actions.todo,state:0
-msgid "To Do"
+#: model:ir.module.module,shortdesc:base.module_purchase_analytic_plans
+msgid "Purchase Analytic Plans"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_hr_employees
-msgid "Portal HR employees"
+#: model:ir.module.module,shortdesc:base.module_purchase
+msgid "Purchase Management"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Estonian / Eesti keel"
+#: model:ir.module.module,summary:base.module_purchase
+msgid "Purchase Orders, Receipts, Supplier Invoices"
msgstr ""
#. module: base
-#: help:ir.actions.server,write_id:0
-msgid "Provide the field name that the record id refers to for the write operation. If it is empty it will refer to the active id of the object."
+#: model:ir.module.module,shortdesc:base.module_purchase_requisition
+msgid "Purchase Requisitions"
msgstr ""
#. module: base
-#: selection:ir.module.module,license:0
-msgid "GPL-3 or later version"
+#: model:ir.module.category,name:base.module_category_purchase_management
+#: model:ir.ui.menu,name:base.menu_purchase_root
+msgid "Purchases"
msgstr ""
#. module: base
-#: code:addons/orm.py:2032
-#, python-format
-msgid "Insufficient fields to generate a Calendar View for %s, missing a date_stop or a date_delay"
+#: view:res.partner:base.view_partner_form
+msgid "Put an internal note..."
msgstr ""
#. module: base
@@ -9605,407 +11685,364 @@ msgid "Python Action"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "English (US)"
+#: view:ir.actions.server:base.view_server_action_form
+#: field:ir.actions.server,code:0
+msgid "Python Code"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_partner_title_partner
-msgid "Manage the partner titles you want to have available in your system. The partner titles is the legal status of the company: Private Limited, SA, etc."
+#: selection:ir.server.object.lines,type:0
+msgid "Python expression"
msgstr ""
#. module: base
-#: view:res.bank:0
-#: view:res.company:0
-#: view:res.partner:0
-#: view:res.partner.bank:0
-#: view:res.users:0
-msgid "Address"
+#: view:ir.ui.view:base.view_view_search
+#: selection:ir.ui.view,type:0
+msgid "QWeb"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Mongolian / монгол"
+#: model:res.country,name:base.qa
+msgid "Qatar"
msgstr ""
#. module: base
-#: model:res.country,name:base.mr
-msgid "Mauritania"
+#: field:ir.values,key2:0
+msgid "Qualifier"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_resource
-msgid "\n"
-"Module for resource management.\n"
-"===============================\n"
-"\n"
-"A resource represent something that can be scheduled (a developer on a task or a\n"
-"work center on manufacturing orders). This module manages a resource calendar\n"
-"associated to every resource. It also manages the leaves of every resource.\n"
-" "
+#: model:ir.module.module,summary:base.module_sale_stock
+msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_followup
-msgid "\n"
-"Module to automate letters for unpaid invoices, with multi-level recalls.\n"
-"=========================================================================\n"
-"\n"
-"You can define your multiple levels of recall through the menu:\n"
-"---------------------------------------------------------------\n"
-" Configuration / Follow-Up Levels\n"
-" \n"
-"Once it is defined, you can automatically print recalls every day through simply clicking on the menu:\n"
-"------------------------------------------------------------------------------------------------------\n"
-" Payment Follow-Up / Send Email and letters\n"
-"\n"
-"It will generate a PDF / send emails / set manual actions according to the the different levels \n"
-"of recall defined. You can define different policies for different companies. \n"
-"\n"
-"Note that if you want to check the follow-up level for a given partner/account entry, you can do from in the menu:\n"
-"------------------------------------------------------------------------------------------------------------------\n"
-" Reporting / Accounting / **Follow-ups Analysis\n"
-"\n"
-""
+#: model:ir.module.module,summary:base.module_sale
+msgid "Quotations, Sales Orders, Invoicing"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:728
-#, python-format
-msgid "Please contact your system administrator if you think this is an error."
+#: selection:ir.translation,type:0
+msgid "RML (deprecated - use Report)"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:546
-#: view:base.module.upgrade:0
-#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade
-#, python-format
-msgid "Apply Schedule Upgrade"
+#: view:ir.actions.report.xml:base.act_report_xml_view
+msgid "RML Configuration"
msgstr ""
#. module: base
-#: view:workflow.activity:0
-#: field:workflow.workitem,act_id:0
-msgid "Activity"
+#: field:ir.actions.report.xml,report_rml_content:0
+#: field:ir.actions.report.xml,report_rml_content_data:0
+msgid "RML Content"
msgstr ""
#. module: base
-#: view:change.password.user:0
-#: field:change.password.wizard,user_ids:0
-#: model:ir.actions.act_window,name:base.action_res_users
-#: field:ir.default,uid:0
-#: model:ir.model,name:base.model_res_users
-#: model:ir.ui.menu,name:base.menu_action_res_users
-#: model:ir.ui.menu,name:base.menu_users
-#: view:res.groups:0
-#: field:res.groups,users:0
-#: field:res.partner,user_ids:0
-#: view:res.users:0
-msgid "Users"
+#: field:res.company,rml_header:0
+msgid "RML Header"
msgstr ""
#. module: base
-#: field:res.company,parent_id:0
-msgid "Parent Company"
+#: field:res.company,rml_header2:0
+msgid "RML Internal Header"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_auth_openid
-msgid "OpenID Authentification"
+#: field:res.company,rml_header3:0
+msgid "RML Internal Header for Landscape Reports"
msgstr ""
#. module: base
-#: code:addons/orm.py:3871
-#, python-format
-msgid "One of the documents you are trying to access has been deleted, please try again after refreshing."
+#: view:ir.actions.report.xml:base.act_report_xml_view
+msgid "RML Report"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_mail_server
-msgid "ir.mail_server"
+#: selection:ir.actions.report.xml,report_type:0
+msgid "RML pdf (deprecated)"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (CR) / Español (CR)"
+#: selection:ir.actions.report.xml,report_type:0
+msgid "RML sxw (deprecated)"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Global rules (non group-specific) are restrictions, and cannot be bypassed. Group-local rules grant additional permissions, but are constrained within the bounds of global ones. The first group rules restrict further than global rules, but any additional group rule will add more permissions"
+#: field:res.currency.rate,rate:0
+msgid "Rate"
msgstr ""
#. module: base
-#: field:res.currency.rate,rate:0
-msgid "Rate"
+#: view:res.currency:base.view_currency_form
+#: field:res.currency,rate_ids:0
+msgid "Rates"
msgstr ""
#. module: base
-#: model:res.country,name:base.cg
-msgid "Congo"
+#: view:ir.model.access:base.ir_access_view_search
+#: field:ir.model.access,perm_read:0
+msgid "Read Access"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "Examples"
+#: view:ir.rule:base.view_rule_search
+msgid "Read Access Right"
msgstr ""
#. module: base
-#: field:ir.default,value:0
-msgid "Default Value"
+#: view:ir.model.fields:base.view_model_fields_search
+#: field:ir.model.fields,readonly:0
+#: field:res.partner.bank.type.field,readonly:0
+msgid "Readonly"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_country_state
-msgid "Country state"
+#: field:ir.actions.server,id_object:0
+msgid "Record"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.next_id_5
-msgid "Sequences & Identifiers"
+#: field:ir.actions.act_window,res_id:0
+#: field:ir.actions.server,id_value:0
+#: field:ir.model.data,res_id:0
+#: field:ir.translation,res_id:0
+#: field:ir.values,res_id:0
+msgid "Record ID"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_th
-msgid "\n"
-"Chart of Accounts for Thailand.\n"
-"===============================\n"
-"\n"
-"Thai accounting chart and localization.\n"
-" "
+#: view:ir.rule:base.view_rule_search
+msgid "Record Rule"
msgstr ""
#. module: base
-#: model:res.country,name:base.kn
-msgid "Saint Kitts & Nevis Anguilla"
+#: model:ir.actions.act_window,name:base.action_rule
+#: view:ir.rule:base.view_rule_search
+#: model:ir.ui.menu,name:base.menu_action_rule
+msgid "Record Rules"
msgstr ""
#. module: base
-#: code:addons/base/res/res_currency.py:193
+#: code:addons/base/ir/ir_cron.py:281
#, python-format
-msgid "No rate found \n"
-"for the currency: %s \n"
-"at the date: %s"
+msgid "Record cannot be modified right now"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_ui_view_custom
-msgid "Customized views are used when users reorganize the content of their dashboard views (via web client)"
+#: view:ir.rule:base.view_rule_form
+#: view:ir.rule:base.view_rule_tree
+msgid "Record rules"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_sale_stock
-msgid "Sales and Warehouse Management"
+#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main
+msgid "Recruitment"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_recruitment
-msgid "\n"
-"Manage job positions and the recruitment process\n"
-"================================================\n"
-"\n"
-"This application allows you to easily keep track of jobs, vacancies, applications, interviews...\n"
-"\n"
-"It is integrated with the mail gateway to automatically fetch email sent to <jobs@yourcompany.com> in the list of applications. It's also integrated with the document management system to store and search in the CV base and find the candidate that you are looking for. Similarly, it is integrated with the survey module to allow you to define interviews for different jobs.\n"
-"You can define the different phases of interviews and easily rate the applicant from the kanban view.\n"
-""
+#: model:ir.module.module,shortdesc:base.module_hr_recruitment
+msgid "Recruitment Process"
msgstr ""
#. module: base
-#: field:ir.model.fields,model:0
-msgid "Object Name"
+#: model:ir.module.module,shortdesc:base.module_subscription
+msgid "Recurring Documents"
msgstr ""
#. module: base
-#: help:ir.actions.server,srcmodel_id:0
-msgid "Object in which you want to create / write the object. If it is empty then refer to the Object field."
+#: code:addons/base/module/module.py:386
+#, python-format
+msgid "Recursion error in modules dependencies !"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-#: selection:ir.module.module,state:0
-#: selection:ir.module.module.dependency,state:0
-msgid "Not Installed"
+#: constraint:ir.actions.server:0
+msgid "Recursion found in child server actions"
msgstr ""
#. module: base
-#: view:workflow.activity:0
-#: field:workflow.activity,out_transitions:0
-msgid "Outgoing Transitions"
+#: model:ir.actions.act_window,name:base.res_request_link-act
+#: model:ir.ui.menu,name:base.menu_res_request_link_act
+msgid "Referencable Models"
msgstr ""
#. module: base
-#: field:ir.module.module,icon_image:0
-#: field:ir.ui.menu,icon:0
-msgid "Icon"
+#: report:ir.module.reference:0
+msgid "Reference Guide"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_human_resources
-msgid "Helps you manage your human resources by encoding your employees structure, generating work sheets, tracking attendance and more."
+#: field:ir.actions.server,ref_object:0
+msgid "Reference record"
msgstr ""
#. module: base
-#: help:res.partner,ean13:0
-msgid "BarCode"
+#: code:addons/base/res/res_company.py:168
+#, python-format
+msgid "Reg"
msgstr ""
#. module: base
-#: help:ir.model.fields,model_id:0
-msgid "The model this field belongs to"
+#: field:res.partner,parent_id:0
+msgid "Related Company"
msgstr ""
#. module: base
-#: field:ir.actions.server,sms:0
-#: selection:ir.actions.server,state:0
-msgid "SMS"
+#: field:res.users,partner_id:0
+msgid "Related Partner"
msgstr ""
#. module: base
-#: model:res.country,name:base.mq
-msgid "Martinique (French)"
+#: field:ir.server.object.lines,server_id:0
+msgid "Related Server Action"
msgstr ""
#. module: base
-#: help:res.partner,is_company:0
-msgid "Check if the contact is a company, otherwise it is a person"
+#: field:ir.actions.server,wkf_field_id:0
+#: field:ir.model.fields,relation_field:0
+msgid "Relation Field"
msgstr ""
#. module: base
-#: view:ir.sequence.type:0
-msgid "Sequences Type"
+#: field:ir.model.relation,name:0
+msgid "Relation Name"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Mobile:"
+#: field:ir.actions.report.xml,attachment_use:0
+msgid "Reload from Attachment"
+msgstr ""
+
+#. module: base
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Remove from the 'More' menu"
+msgstr ""
+
+#. module: base
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Remove the contextual action related to this server action"
msgstr ""
#. module: base
-#: code:addons/base/res/res_bank.py:195
+#: code:addons/base/ir/ir_model.py:398
#, python-format
-msgid "Formating Error"
+msgid "Renaming sparse field \"%s\" is not allowed"
msgstr ""
#. module: base
-#: model:res.country,name:base.ye
-msgid "Yemen"
+#: model:ir.module.module,shortdesc:base.module_mrp_repair
+msgid "Repairs Management"
msgstr ""
#. module: base
-#: selection:workflow.activity,split_mode:0
-msgid "Or"
+#: field:ir.cron,doall:0
+msgid "Repeat Missed"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_br
-msgid "Brazilian - Accounting"
+#: help:ir.cron,interval_number:0
+msgid "Repeat every x."
msgstr ""
#. module: base
-#: model:res.country,name:base.pk
-msgid "Pakistan"
+#: view:ir.actions.report.xml:base.act_report_xml_search_view
+#: view:ir.actions.report.xml:base.act_report_xml_view
+#: model:ir.module.module,shortdesc:base.module_report
+#: model:ir.module.module,summary:base.module_report
+msgid "Report"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_product_margin
-msgid "\n"
-"Adds a reporting menu in products that computes sales, purchases, margins and other interesting indicators based on invoices.\n"
-"=============================================================================================================================\n"
-"\n"
-"The wizard to launch the report has several options to help you get the data you need.\n"
-""
+#: view:res.company:base.view_company_form
+msgid "Report Configuration"
msgstr ""
#. module: base
-#: model:res.country,name:base.al
-msgid "Albania"
+#: field:ir.actions.report.xml,report_file:0
+msgid "Report File"
msgstr ""
#. module: base
-#: model:res.country,name:base.ws
-msgid "Samoa"
+#: field:res.company,rml_footer:0
+#: field:res.company,rml_footer_readonly:0
+msgid "Report Footer"
msgstr ""
#. module: base
-#: code:addons/base/res/res_lang.py:189
-#, python-format
-msgid "You cannot delete the language which is Active !\n"
-"Please de-activate the language first."
+#: view:ir.actions.report.xml:base.act_report_xml_search_view
+msgid "Report Model"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:502
-#: code:addons/base/ir/ir_model.py:563
-#: code:addons/base/ir/ir_model.py:1024
-#, python-format
-msgid "Permission Denied"
+#: view:ir.actions.report.xml:base.act_report_xml_search_view
+#: field:ir.actions.report.xml,report_type:0
+msgid "Report Type"
msgstr ""
#. module: base
-#: field:ir.ui.menu,child_id:0
-msgid "Child IDs"
+#: view:ir.actions.report.xml:base.act_report_xml_search_view
+msgid "Report Xml"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_actions.py:702
-#: code:addons/base/ir/ir_actions.py:705
-#, python-format
-msgid "Problem in configuration `Record Id` in Server Action!"
+#: view:ir.actions.report.xml:base.act_report_xml_view_tree
+msgid "Report xml"
msgstr ""
#. module: base
-#: code:addons/orm.py:2806
-#: code:addons/orm.py:2816
-#, python-format
-msgid "ValidateError"
+#: selection:ir.translation,type:0
+msgid "Report/Template"
msgstr ""
#. module: base
-#: view:base.module.import:0
-#: view:base.module.update:0
-msgid "Open Modules"
+#: model:ir.module.category,name:base.module_category_reporting
+#: model:ir.ui.menu,name:base.menu_reporting
+msgid "Reporting"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_res_bank_form
-msgid "Manage bank records you want to be used in the system."
+#: model:ir.actions.act_window,name:base.ir_action_report_xml
+#: field:ir.module.module,reports_by_module:0
+#: model:ir.ui.menu,name:base.menu_ir_action_report_xml
+msgid "Reports"
msgstr ""
#. module: base
-#: view:base.module.import:0
-msgid "Import module"
+#: report:ir.module.reference:0
+msgid "Reports :"
msgstr ""
#. module: base
-#: field:ir.actions.server,loop_action:0
-msgid "Loop Action"
+#: view:res.request.link:base.res_request_link-view
+#: view:res.request.link:base.res_request_link_search_view
+#: view:res.request.link:base.res_request_link_tree-view
+msgid "Request Link"
msgstr ""
#. module: base
-#: help:ir.actions.report.xml,report_file:0
-msgid "The path to the main report file (depending on Report Type) or NULL if the content is in another field"
+#: view:ir.model.fields:base.view_model_fields_search
+#: field:ir.model.fields,required:0
+#: field:res.partner.bank.type.field,required:0
+msgid "Required"
msgstr ""
#. module: base
-#: model:res.country,name:base.la
-msgid "Laos"
+#: model:ir.module.module,shortdesc:base.module_website_crm_partner_assign
+msgid "Resellers"
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:163
-#: selection:ir.actions.server,state:0
-#: model:ir.ui.menu,name:base.menu_email
-#: field:res.bank,email:0
-#: field:res.company,email:0
-#: field:res.partner,email:0
-#, python-format
-msgid "Email"
+#: field:ir.exports,resource:0
+#: model:ir.module.module,shortdesc:base.module_resource
+#: field:ir.property,res_id:0
+msgid "Resource"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_12
-msgid "Office Supplies"
+#: field:ir.attachment,res_id:0
+#: field:workflow.instance,res_id:0
+#: field:workflow.triggers,res_id:0
+msgid "Resource ID"
msgstr ""
#. module: base
@@ -10014,1288 +12051,1144 @@ msgid "Resource Model"
msgstr ""
#. module: base
-#: code:addons/custom.py:555
-#, python-format
-msgid "The sum of the data (2nd field) is null.\n"
-"We can't draw a pie chart !"
+#: field:ir.attachment,res_name:0
+msgid "Resource Name"
msgstr ""
#. module: base
-#: view:res.partner.bank:0
-msgid "Information About the Bank"
+#: field:workflow,osv:0
+#: view:workflow.instance:base.view_workflow_instance_search
+#: field:workflow.instance,res_type:0
+msgid "Resource Object"
msgstr ""
#. module: base
-#: help:ir.actions.server,condition:0
-msgid "Condition that is tested before the action is executed, and prevent execution if it is not verified.\n"
-"Example: object.list_price > 5000\n"
-"It is a Python expression that can use the following values:\n"
-" - self: ORM model of the record on which the action is triggered\n"
-" - object or obj: browse_record of the record on which the action is triggered\n"
-" - pool: ORM model pool (i.e. self.pool)\n"
-" - time: Python time module\n"
-" - cr: database cursor\n"
-" - uid: current user id\n"
-" - context: current context"
+#: model:ir.module.module,shortdesc:base.module_pos_restaurant
+msgid "Restaurant"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "2. Group-specific rules are combined together with a logical OR operator"
+#: model:ir.module.module,summary:base.module_pos_restaurant
+msgid "Restaurant extensions for the Point of Sale "
msgstr ""
#. module: base
-#: model:res.country,name:base.bl
-msgid "Saint Barthélémy"
+#: field:ir.actions.act_window,multi:0
+msgid "Restrict to lists"
msgstr ""
#. module: base
-#: selection:ir.module.module,license:0
-msgid "Other Proprietary"
+#: model:res.partner.category,name:base.res_partner_category_16
+msgid "Retailer"
msgstr ""
#. module: base
-#: model:res.country,name:base.ec
-msgid "Ecuador"
+#: model:res.country,name:base.re
+msgid "Reunion (French)"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_workflow
-msgid "workflow"
+#: field:res.partner.category,parent_right:0
+msgid "Right parent"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Read Access Right"
+#: selection:res.lang,direction:0
+msgid "Right-to-Left"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_analytic_user_function
-msgid "Jobs on Contracts"
+#: model:res.country,name:base.ro
+msgid "Romania"
msgstr ""
#. module: base
-#: code:addons/base/res/res_lang.py:187
-#, python-format
-msgid "You cannot delete the language which is User's Preferred Language !"
+#: model:ir.module.module,shortdesc:base.module_l10n_ro
+msgid "Romania - Accounting"
msgstr ""
#. module: base
-#: view:ir.model.data:0
-msgid "Updatable"
+#: selection:base.language.install,lang:0
+msgid "Romanian / română"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "3. %x ,%X ==> 12/05/08, 18:25:20"
+#: field:res.currency,rounding:0
+msgid "Rounding Factor"
msgstr ""
#. module: base
-#: selection:ir.model.fields,on_delete:0
-msgid "Cascade"
+#: view:ir.rule:base.view_rule_form
+msgid "Rule Definition (Domain Filter)"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_crm
-msgid "Leads, Opportunities, Phone Calls"
+#: sql_constraint:ir.rule:0
+msgid "Rule must have at least one checked access right !"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_knowledge_management
-msgid "Lets you install addons geared towards sharing knowledge with and between your employees."
+#: view:res.groups:base.view_groups_form
+#: field:res.groups,rule_groups:0
+msgid "Rules"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Arabic / الْعَرَبيّة"
+#: constraint:ir.rule:0
+msgid "Rules can not be applied on Transient models."
msgstr ""
#. module: base
-#: selection:ir.translation,state:0
-msgid "Translated"
+#: constraint:ir.rule:0
+msgid "Rules can not be applied on the Record Rules model."
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_inventory_form
-#: model:ir.ui.menu,name:base.menu_action_inventory_form
-msgid "Default Company per Object"
+#: code:addons/base/ir/ir_actions.py:817
+#, python-format
+msgid "Run %s"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_hello
-msgid "Hello"
+#: model:ir.actions.server,name:base.action_run_ir_action_todo
+msgid "Run Remaining Action Todo"
msgstr ""
#. module: base
-#: view:ir.actions.configuration.wizard:0
-msgid "Next Configuration Step"
+#: selection:base.language.install,lang:0
+msgid "Russian / русский язык"
msgstr ""
#. module: base
-#: field:res.groups,comment:0
-msgid "Comment"
+#: model:res.country,name:base.ru
+msgid "Russian Federation"
msgstr ""
#. module: base
-#: field:ir.filters,domain:0
-#: field:ir.model.fields,domain:0
-#: field:ir.rule,domain:0
-#: field:ir.rule,domain_force:0
-#: field:res.partner.title,domain:0
-msgid "Domain"
+#: model:res.country,name:base.rw
+msgid "Rwanda"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:166
-#, python-format
-msgid "Use '1' for yes and '0' for no"
+#: model:ir.module.module,shortdesc:base.module_saas_worker
+msgid "SAAS Worker"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_marketing_campaign
-msgid "Marketing Campaigns"
+#: field:ir.mail_server,smtp_port:0
+msgid "SMTP Port"
msgstr ""
#. module: base
-#: field:res.country.state,name:0
-msgid "State Name"
+#: help:ir.mail_server,smtp_port:0
+msgid "SMTP Port. Usually 465 for SSL, and 25 or 587 for other cases."
msgstr ""
#. module: base
-#: help:ir.attachment,type:0
-msgid "Binary File or URL"
+#: field:ir.mail_server,smtp_host:0
+msgid "SMTP Server"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:313
+#: code:addons/base/ir/ir_mail_server.py:242
#, python-format
-msgid "Invalid database id '%s' for the field '%%(field)s'"
+msgid "SMTP-over-SSL mode unavailable"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "Update Languague Terms"
+#: selection:ir.translation,type:0
+msgid "SQL Constraint"
msgstr ""
#. module: base
-#: field:workflow.activity,join_mode:0
-msgid "Join Mode"
+#: selection:ir.mail_server,smtp_encryption:0
+msgid "SSL/TLS"
msgstr ""
#. module: base
-#: field:res.partner,tz:0
-msgid "Timezone"
+#: field:ir.actions.report.xml,report_sxw_content:0
+#: field:ir.actions.report.xml,report_sxw_content_data:0
+msgid "SXW Content"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_report_xml
-#: selection:ir.ui.menu,action:0
-msgid "ir.actions.report.xml"
+#: field:ir.actions.report.xml,report_sxw:0
+msgid "SXW Path"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_sequence_form
-#: view:ir.sequence:0
-#: model:ir.ui.menu,name:base.menu_ir_sequence_form
-msgid "Sequences"
+#: model:res.country,name:base.bl
+msgid "Saint Barthélémy"
msgstr ""
#. module: base
-#: help:res.lang,code:0
-msgid "This field is used to set/get locales for user"
+#: model:res.country,name:base.sh
+msgid "Saint Helena"
msgstr ""
#. module: base
-#: view:ir.filters:0
-msgid "Shared"
+#: model:res.country,name:base.kn
+msgid "Saint Kitts & Nevis Anguilla"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:357
-#, python-format
-msgid "Unable to install module \"%s\" because an external dependency is not met: %s"
+#: model:res.country,name:base.lc
+msgid "Saint Lucia"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Search modules"
+#: model:res.country,name:base.mf
+msgid "Saint Martin (French part)"
msgstr ""
#. module: base
-#: model:res.country,name:base.by
-msgid "Belarus"
+#: model:res.country,name:base.pm
+msgid "Saint Pierre and Miquelon"
msgstr ""
#. module: base
-#: field:ir.actions.act_url,name:0
-#: field:ir.actions.act_window,name:0
-#: field:ir.actions.client,name:0
-#: field:ir.actions.server,name:0
-msgid "Action Name"
+#: model:res.country,name:base.st
+msgid "Saint Tome (Sao Tome) and Principe"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_res_users
-msgid "Create and manage users that will connect to the system. Users can be deactivated should there be a period of time during which they will/should not connect to the system. You can assign them groups in order to give them specific access to the applications they need to use in the system."
+#: model:res.country,name:base.vc
+msgid "Saint Vincent & Grenadines"
msgstr ""
#. module: base
-#: selection:res.request,priority:0
-msgid "Normal"
+#: model:ir.module.category,name:base.module_category_sale
+msgid "Sale"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_purchase_double_validation
-msgid "Double Validation on Purchases"
+#: model:ir.module.module,shortdesc:base.module_sale_layout
+msgid "Sale Layout"
msgstr ""
#. module: base
-#: field:res.bank,street2:0
-#: field:res.company,street2:0
-#: field:res.partner,street2:0
-msgid "Street2"
+#: model:ir.module.module,summary:base.module_sale_layout
+msgid "Sale Layout, page-break, subtotals, separators, report"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_view_base_module_update
-msgid "Module Update"
+#: model:ir.module.module,shortdesc:base.module_sales_team
+msgid "Sale Team"
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_module_upgrade.py:85
-#, python-format
-msgid "Following modules are not installed or unknown: %s"
+#: model:ir.module.category,name:base.module_category_sales_management
+#: model:ir.ui.menu,name:base.menu_base_partner
+#: model:ir.ui.menu,name:base.menu_sale_config
+#: model:ir.ui.menu,name:base.menu_sale_config_sales
+#: model:ir.ui.menu,name:base.menu_sales
+#: model:ir.ui.menu,name:base.next_id_64
+msgid "Sales"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_auth_oauth_signup
-msgid "\n"
-"Allow users to sign up through OAuth2 Provider.\n"
-"===============================================\n"
-""
+#: view:res.partner:base.view_partner_form
+msgid "Sales & Purchases"
msgstr ""
#. module: base
-#: field:change.password.user,user_id:0
-#: view:ir.cron:0
-#: field:ir.cron,user_id:0
-#: field:ir.filters,user_id:0
-#: field:ir.ui.view.custom,user_id:0
-#: field:ir.values,user_id:0
-#: model:res.groups,name:base.group_document_user
-#: model:res.groups,name:base.group_tool_user
-#: view:res.users:0
-msgid "User"
+#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
+msgid "Sales Analytic Distribution"
msgstr ""
#. module: base
-#: model:res.country,name:base.pr
-msgid "Puerto Rico"
+#: model:ir.module.module,shortdesc:base.module_sale
+msgid "Sales Management"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_tests_demo
-msgid "Demonstration of web/javascript tests"
+#: model:ir.module.module,summary:base.module_sales_team
+msgid "Sales Team"
msgstr ""
#. module: base
-#: field:workflow.transition,signal:0
-msgid "Signal (Button Name)"
+#: model:ir.module.module,shortdesc:base.module_sale_mrp
+msgid "Sales and MRP Management"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-msgid "Open Window"
+#: model:ir.module.module,shortdesc:base.module_sale_stock
+msgid "Sales and Warehouse Management"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,auto_search:0
-msgid "Auto Search"
+#: view:res.partner:base.view_res_partner_filter
+#: field:res.partner,user_id:0
+msgid "Salesperson"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,filter:0
-msgid "Filter"
+#: model:res.country,name:base.ws
+msgid "Samoa"
msgstr ""
#. module: base
-#: model:res.country,name:base.ch
-msgid "Switzerland"
+#: model:res.country,name:base.sm
+msgid "San Marino"
msgstr ""
#. module: base
-#: model:res.country,name:base.gd
-msgid "Grenada"
+#: model:res.country,name:base.sa
+msgid "Saudi Arabia"
msgstr ""
#. module: base
-#: help:res.partner,customer:0
-msgid "Check this box if this contact is a customer."
+#: view:res.users:base.view_users_form_simple_modif
+msgid "Save"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Trigger Configuration"
+#: field:ir.actions.report.xml,attachment:0
+msgid "Save as Attachment Prefix"
msgstr ""
#. module: base
-#: view:base.language.install:0
-msgid "Load"
+#: model:ir.module.module,summary:base.module_website_event
+msgid "Schedule, Promote and Sell Events"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_warning
-msgid "\n"
-"Module to trigger warnings in OpenERP objects.\n"
-"==============================================\n"
-"\n"
-"Warning messages can be displayed for objects like sale order, purchase order,\n"
-"picking and invoice. The message is triggered by the form's onchange event.\n"
-" "
+#: view:ir.cron:base.ir_cron_view_search
+msgid "Scheduled Action"
msgstr ""
#. module: base
-#: field:res.users,partner_id:0
-msgid "Related Partner"
+#: model:ir.actions.act_window,name:base.ir_cron_act
+#: view:ir.cron:base.ir_cron_view
+#: view:ir.cron:base.ir_cron_view_calendar
+#: view:ir.cron:base.ir_cron_view_search
+#: view:ir.cron:base.ir_cron_view_tree
+#: model:ir.ui.menu,name:base.menu_ir_cron_act
+msgid "Scheduled Actions"
msgstr ""
#. module: base
-#: code:addons/osv.py:153
-#: code:addons/osv.py:155
-#, python-format
-msgid "Integrity Error"
+#: view:ir.ui.view:base.view_view_search
+#: selection:ir.ui.view,type:0
+msgid "Search"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_pa
-msgid "\n"
-"Panamenian accounting chart and tax localization.\n"
-"\n"
-"Plan contable panameño e impuestos de acuerdo a disposiciones vigentes\n"
-"\n"
-"Con la Colaboración de \n"
-"- AHMNET CORP http://www.ahmnet.com\n"
-"\n"
-" "
+#: view:ir.actions.todo:base.config_wizard_step_view_search
+msgid "Search Actions"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:293
-#, python-format
-msgid "Size of the field can never be less than 1 !"
+#: view:res.partner:base.view_res_partner_filter
+msgid "Search Partner"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_mrp_operations
-msgid "Manufacturing Operations"
+#: field:ir.actions.act_window,search_view:0
+msgid "Search View"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "Here is the exported translation file:"
+#: field:ir.actions.act_window,search_view_id:0
+msgid "Search View Ref."
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,report_rml_content:0
-#: field:ir.actions.report.xml,report_rml_content_data:0
-msgid "RML Content"
+#: model:ir.module.module,summary:base.module_hr_applicant_document
+msgid "Search job applications by Index content."
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "Update Terms"
+#: view:ir.module.module:base.view_module_filter
+msgid "Search modules"
msgstr ""
#. module: base
-#: field:res.request,act_to:0
-#: field:res.request.history,act_to:0
-msgid "To"
+#: field:ir.model.fields,select_level:0
+msgid "Searchable"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr
-msgid "Employee Directory"
+#: view:ir.sequence:base.sequence_view
+msgid "Second: %(sec)s"
msgstr ""
#. module: base
-#: field:ir.cron,args:0
-msgid "Arguments"
+#: view:ir.actions.act_window:base.view_window_action_form
+#: view:ir.actions.report.xml:base.act_report_xml_view
+#: model:ir.ui.menu,name:base.menu_security
+msgid "Security"
msgstr ""
#. module: base
-#: selection:ir.module.module,license:0
-msgid "GPL Version 2"
+#: view:ir.mail_server:base.ir_mail_server_form
+msgid "Security and Authentication"
msgstr ""
#. module: base
-#: selection:ir.module.module,license:0
-msgid "GPL Version 3"
+#: model:res.groups,name:base.group_sale_salesman
+msgid "See Own Leads"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_stock_location
-msgid "\n"
-"This module supplements the Warehouse application by effectively implementing Push and Pull inventory flows.\n"
-"============================================================================================================\n"
-"\n"
-"Typically this could be used to:\n"
-"--------------------------------\n"
-" * Manage product manufacturing chains\n"
-" * Manage default locations per product\n"
-" * Define routes within your warehouse according to business needs, such as:\n"
-" - Quality Control\n"
-" - After Sales Services\n"
-" - Supplier Returns\n"
-"\n"
-" * Help rental management, by generating automated return moves for rented products\n"
-"\n"
-"Once this module is installed, an additional tab appear on the product form,\n"
-"where you can add Push and Pull flow specifications. The demo data of CPU1\n"
-"product for that push/pull :\n"
-"\n"
-"Push flows:\n"
-"-----------\n"
-"Push flows are useful when the arrival of certain products in a given location\n"
-"should always be followed by a corresponding move to another location, optionally\n"
-"after a certain delay. The original Warehouse application already supports such\n"
-"Push flow specifications on the Locations themselves, but these cannot be\n"
-"refined per-product.\n"
-"\n"
-"A push flow specification indicates which location is chained with which location,\n"
-"and with what parameters. As soon as a given quantity of products is moved in the\n"
-"source location, a chained move is automatically foreseen according to the\n"
-"parameters set on the flow specification (destination location, delay, type of\n"
-"move, journal). The new move can be automatically processed, or require a manual\n"
-"confirmation, depending on the parameters.\n"
-"\n"
-"Pull flows:\n"
-"-----------\n"
-"Pull flows are a bit different from Push flows, in the sense that they are not\n"
-"related to the processing of product moves, but rather to the processing of\n"
-"procurement orders. What is being pulled is a need, not directly products. A\n"
-"classical example of Pull flow is when you have an Outlet company, with a parent\n"
-"Company that is responsible for the supplies of the Outlet.\n"
-"\n"
-" [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-"\n"
-"When a new procurement order (A, coming from the confirmation of a Sale Order\n"
-"for example) arrives in the Outlet, it is converted into another procurement\n"
-"(B, via a Pull flow of type 'move') requested from the Holding. When procurement\n"
-"order B is processed by the Holding company, and if the product is out of stock,\n"
-"it can be converted into a Purchase Order (C) from the Supplier (Pull flow of\n"
-"type Purchase). The result is that the procurement order, the need, is pushed\n"
-"all the way between the Customer and Supplier.\n"
-"\n"
-"Technically, Pull flows allow to process procurement orders differently, not\n"
-"only depending on the product being considered, but also depending on which\n"
-"location holds the 'need' for that product (i.e. the destination location of\n"
-"that procurement order).\n"
-"\n"
-"Use-Case:\n"
-"---------\n"
-"\n"
-"You can use the demo data as follow:\n"
-"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
-" **CPU1:** Sell some CPU1 from Chicago Shop and run the scheduler\n"
-" - Warehouse: delivery order, Chicago Shop: reception\n"
-" **CPU3:**\n"
-" - When receiving the product, it goes to Quality Control location then\n"
-" stored to shelf 2.\n"
-" - When delivering the customer: Pick List -> Packing -> Delivery Order from Gate A\n"
-" "
+#: model:res.groups,name:base.group_sale_salesman_all_leads
+msgid "See all Leads"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_decimal_precision
-msgid "\n"
-"Configure the price accuracy you need for different kinds of usage: accounting, sales, purchases.\n"
-"=================================================================================================\n"
-"\n"
-"The decimal precision is configured per company.\n"
-""
+#: code:addons/base/ir/ir_fields.py:304
+#, python-format
+msgid "See all possible values"
msgstr ""
#. module: base
-#: selection:res.company,paper_format:0
-msgid "A4"
+#: help:multi_company.default,field_id:0
+msgid "Select field property"
msgstr ""
#. module: base
-#: view:res.config.installer:0
-msgid "Configuration Installer"
+#: help:ir.actions.server,model_object_field:0
+msgid "Select target field from the related document model.\n"
+"If it is a relationship field you will be able to select a target field at the destination of the relationship."
msgstr ""
#. module: base
-#: field:res.partner,customer:0
-msgid "Customer"
+#: help:ir.actions.server,action_id:0
+msgid "Select the client action that has to be executed."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (NI) / Español (NI)"
+#: help:ir.actions.server,wkf_transition_id:0
+msgid "Select the workflow signal to trigger."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_pad_project
-msgid "\n"
-"This module adds a PAD in all project kanban views.\n"
-"===================================================\n"
-" "
+#: help:res.partner,use_parent_address:0
+msgid "Select this if you want to set company's address information for this contact"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,context:0
-#: field:ir.actions.client,context:0
-msgid "Context Value"
+#: field:ir.model.fields,selectable:0
+msgid "Selectable"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Hour 00->24: %(h24)s"
+#: selection:ir.property,type:0
+#: selection:ir.translation,type:0
+msgid "Selection"
msgstr ""
#. module: base
-#: field:ir.cron,nextcall:0
-msgid "Next Execution Date"
+#: field:ir.model.fields,selection:0
+msgid "Selection Options"
msgstr ""
#. module: base
-#: field:ir.sequence,padding:0
-msgid "Number Padding"
+#: model:ir.module.module,summary:base.module_website_event_sale
+msgid "Sell Your Event's Tickets"
msgstr ""
#. module: base
-#: help:multi_company.default,field_id:0
-msgid "Select field property"
+#: model:ir.module.module,summary:base.module_website_sale
+msgid "Sell Your Products Online"
msgstr ""
#. module: base
-#: field:res.request.history,date_sent:0
-msgid "Date sent"
+#: model:ir.module.module,summary:base.module_account_voucher
+msgid "Send Invoices and Track Payments"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Month: %(month)s"
+#: model:ir.module.module,summary:base.module_website_quote
+msgid "Send Professional Quotations"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.sn
+msgid "Senegal"
+msgstr ""
+
+#. module: base
+#: field:res.lang,grouping:0
+msgid "Separator Format"
msgstr ""
#. module: base
#: field:ir.actions.act_window.view,sequence:0
#: field:ir.actions.server,sequence:0
#: field:ir.actions.todo,sequence:0
-#: view:ir.cron:0
+#: view:ir.cron:base.ir_cron_view_tree
#: field:ir.module.category,sequence:0
#: field:ir.module.module,sequence:0
-#: view:ir.sequence:0
+#: view:ir.sequence:base.sequence_view
+#: view:ir.sequence:base.view_sequence_search
#: field:ir.ui.menu,sequence:0
-#: view:ir.ui.view:0
+#: view:ir.ui.view:base.view_view_tree
#: field:ir.ui.view,priority:0
-#: field:ir.ui.view_sc,sequence:0
#: field:multi_company.default,sequence:0
#: field:res.partner.bank,sequence:0
+#: field:workflow.transition,sequence:0
msgid "Sequence"
msgstr ""
#. module: base
-#: model:res.country,name:base.tn
-msgid "Tunisia"
+#: model:ir.actions.act_window,name:base.ir_sequence_type
+#: model:ir.ui.menu,name:base.menu_ir_sequence_type
+msgid "Sequence Codes"
msgstr ""
#. module: base
-#: help:ir.model.access,active:0
-msgid "If you uncheck the active field, it will disable the ACL without deleting it (if you delete a native ACL, it will be re-created when you reload the module."
+#: field:ir.sequence,code:0
+#: view:ir.sequence.type:base.sequence_type_form_view
+#: view:ir.sequence.type:base.sequence_type_tree_view
+#: view:ir.sequence.type:base.view_sequence_type_search
+msgid "Sequence Type"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_fields_converter
-msgid "ir.fields.converter"
+#: model:ir.actions.act_window,name:base.ir_sequence_form
+#: view:ir.sequence:base.sequence_view
+#: view:ir.sequence:base.sequence_view_tree
+#: view:ir.sequence:base.view_sequence_search
+#: model:ir.ui.menu,name:base.menu_ir_sequence_form
+msgid "Sequences"
msgstr ""
#. module: base
-#: code:addons/base/res/res_partner.py:439
-#, python-format
-msgid "Couldn't create contact without email address !"
+#: model:ir.ui.menu,name:base.next_id_5
+msgid "Sequences & Identifiers"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_manufacturing
-#: model:ir.ui.menu,name:base.menu_mrp_config
-#: model:ir.ui.menu,name:base.menu_mrp_root
-msgid "Manufacturing"
+#: view:ir.sequence.type:base.view_sequence_type_search
+msgid "Sequences Type"
msgstr ""
#. module: base
-#: model:res.country,name:base.km
-msgid "Comoros"
+#: model:res.country,name:base.rs
+msgid "Serbia"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Cancel Install"
+#: selection:base.language.install,lang:0
+msgid "Serbian (Cyrillic) / српски"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_model_relation
-msgid "ir.model.relation"
+#: selection:base.language.install,lang:0
+msgid "Serbian (Latin) / srpski"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_check_writing
-msgid "Check Writing"
+#: field:ir.model.fields,serialization_field_id:0
+msgid "Serialization Field"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_plugin_outlook
-msgid "\n"
-"This module provides the Outlook Plug-in.\n"
-"=========================================\n"
-"\n"
-"Outlook plug-in allows you to select an object that you would like to add to\n"
-"your email and its attachments from MS Outlook. You can select a partner, a task,\n"
-"a project, an analytical account, or any other object and archive selected mail\n"
-"into mail.message with attachments.\n"
-" "
+#: selection:ir.logging,type:0
+msgid "Server"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_bo
-msgid "Bolivia Localization Chart Account"
+#: view:ir.actions.server:base.view_server_action_form
+#: view:ir.actions.server:base.view_server_action_search
+#: field:workflow.activity,action_id:0
+msgid "Server Action"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_plugin_thunderbird
-msgid "\n"
-"This module is required for the Thuderbird Plug-in to work properly.\n"
-"====================================================================\n"
-"\n"
-"The plugin allows you archive email and its attachments to the selected\n"
-"OpenERP objects. You can select a partner, a task, a project, an analytical\n"
-"account, or any other object and attach the selected mail as a .eml file in\n"
-"the attachment of a selected record. You can create documents for CRM Lead,\n"
-"HR Applicant and Project Issue from selected mails.\n"
-" "
+#: model:ir.actions.act_window,name:base.action_server_action
+#: view:ir.actions.server:base.view_server_action_search
+#: view:ir.actions.server:base.view_server_action_tree
+#: model:ir.ui.menu,name:base.menu_server_action
+msgid "Server Actions"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "Legends for Date and Time Formats"
+#: model:res.partner.category,name:base.res_partner_category_11
+msgid "Services"
msgstr ""
#. module: base
-#: selection:ir.actions.server,state:0
-msgid "Copy Object"
+#: selection:ir.model.fields,on_delete:0
+msgid "Set NULL"
msgstr ""
#. module: base
-#: field:ir.actions.server,trigger_name:0
-msgid "Trigger Signal"
+#: field:res.users,new_password:0
+msgid "Set Password"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_country_state
-#: model:ir.ui.menu,name:base.menu_country_state_partner
-msgid "Fed. States"
+#: view:ir.actions.todo:base.config_wizard_step_view_form
+#: view:ir.actions.todo:base.ir_actions_todo_tree
+msgid "Set as Todo"
msgstr ""
#. module: base
-#: view:ir.model:0
-#: view:res.groups:0
-msgid "Access Rules"
+#: help:res.company,font:0
+msgid "Set the font into the report header, it will be used as default font in the RML reports of the user company"
msgstr ""
#. module: base
-#: field:res.groups,trans_implied_ids:0
-msgid "Transitively inherits"
+#: code:addons/base/res/res_users.py:505
+#, python-format
+msgid "Setting empty passwords is not allowed for security reasons!"
msgstr ""
#. module: base
-#: field:ir.default,ref_table:0
-msgid "Table Ref."
+#: model:ir.ui.menu,name:base.menu_administration
+#: model:res.groups,name:base.group_system
+msgid "Settings"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_sale_journal
-msgid "\n"
-"The sales journal modules allows you to categorise your sales and deliveries (picking lists) between different journals.\n"
-"========================================================================================================================\n"
-"\n"
-"This module is very helpful for bigger companies that works by departments.\n"
-"\n"
-"You can use journal for different purposes, some examples:\n"
-"----------------------------------------------------------\n"
-" * isolate sales of different departments\n"
-" * journals for deliveries by truck or by UPS\n"
-"\n"
-"Journals have a responsible and evolves between different status:\n"
-"-----------------------------------------------------------------\n"
-" * draft, open, cancel, done.\n"
-"\n"
-"Batch operations can be processed on the different journals to confirm all sales\n"
-"at once, to validate or invoice packing.\n"
-"\n"
-"It also supports batch invoicing methods that can be configured by partners and sales orders, examples:\n"
-"-------------------------------------------------------------------------------------------------------\n"
-" * daily invoicing\n"
-" * monthly invoicing\n"
-"\n"
-"Some statistics by journals are provided.\n"
-" "
+#: model:res.country,name:base.sc
+msgid "Seychelles"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:469
-#, python-format
-msgid "Mail delivery failed"
+#: model:ir.module.module,shortdesc:base.module_share
+msgid "Share any Document"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-#: field:ir.actions.report.xml,model:0
-#: field:ir.actions.server,model_id:0
-#: field:ir.actions.wizard,model:0
-#: field:ir.cron,model:0
-#: field:ir.default,field_tbl:0
-#: view:ir.model.access:0
-#: field:ir.model.access,model_id:0
-#: view:ir.model.data:0
-#: view:ir.model.fields:0
-#: field:ir.rule,model_id:0
-#: selection:ir.translation,type:0
-#: view:ir.ui.view:0
-#: field:ir.ui.view,model:0
-#: field:multi_company.default,object_id:0
-#: field:res.request.link,object:0
-#: field:workflow.triggers,model:0
-msgid "Object"
+#: view:ir.filters:base.ir_filters_view_search
+msgid "Shared"
msgstr ""
#. module: base
-#: code:addons/osv.py:150
-#, python-format
-msgid "\n"
-"\n"
-"[object with reference: %s - %s]"
+#: selection:res.partner,type:0
+msgid "Shipping"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_analytic_plans
-msgid "Multiple Analytic Plans"
+#: model:res.country,name:base.sl
+msgid "Sierra Leone"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_default
-msgid "ir.default"
+#: field:workflow.transition,signal:0
+msgid "Signal (Button Name)"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Minute: %(min)s"
+#: field:workflow.activity,signal_send:0
+msgid "Signal (subflow.*)"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_ir_cron
-msgid "Scheduler"
+#: field:ir.actions.server,wkf_transition_id:0
+msgid "Signal to Trigger"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_event_moodle
-msgid "\n"
-"Configure your moodle server.\n"
-"============================= \n"
-"\n"
-"With this module you are able to connect your OpenERP with a moodle platform.\n"
-"This module will create courses and students automatically in your moodle platform \n"
-"to avoid wasting time.\n"
-"Now you have a simple way to create training or courses with OpenERP and moodle.\n"
-"\n"
-"STEPS TO CONFIGURE:\n"
-"-------------------\n"
-"\n"
-"1. Activate web service in moodle.\n"
-"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
-">site administration >plugins >web services >manage protocols activate the xmlrpc web service \n"
-"\n"
-"\n"
-">site administration >plugins >web services >manage tokens create a token \n"
-"\n"
-"\n"
-">site administration >plugins >web services >overview activate webservice\n"
-"\n"
-"\n"
-"2. Create confirmation email with login and password.\n"
-"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
-"We strongly suggest you to add those following lines at the bottom of your event\n"
-"confirmation email to communicate the login/password of moodle to your subscribers.\n"
-"\n"
-"\n"
-"........your configuration text.......\n"
-"\n"
-"**URL:** your moodle link for exemple: http://openerp.moodle.com\n"
-"\n"
-"**LOGIN:** ${object.moodle_username}\n"
-"\n"
-"**PASSWORD:** ${object.moodle_user_password}\n"
-""
+#: field:res.users,signature:0
+msgid "Signature"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_uk
-msgid "UK - Accounting"
+#: model:ir.module.module,shortdesc:base.module_auth_signup
+msgid "Signup"
msgstr ""
#. module: base
-#: model:res.partner.title,shortcut:base.res_partner_title_madam
-msgid "Mrs."
+#: model:res.partner.category,name:base.res_partner_category_5
+msgid "Silver"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:426
-#, python-format
-msgid "Changing the type of a column is not yet supported. Please drop it and create it again!"
+#: model:ir.module.module,summary:base.module_pos_discount
+msgid "Simple Discounts in the Point of Sale "
msgstr ""
#. module: base
-#: field:ir.ui.view_sc,user_id:0
-msgid "User Ref."
+#: model:res.country,name:base.sg
+msgid "Singapore"
+msgstr ""
+
+#. module: base
+#: model:ir.module.module,shortdesc:base.module_l10n_sg
+msgid "Singapore - Accounting"
+msgstr ""
+
+#. module: base
+#: selection:base.language.install,lang:0
+msgid "Sinhalese / සිංහල"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.sx
+msgid "Sint Maarten (Dutch part)"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:226
+#: model:res.partner.title,name:base.res_partner_title_sir
+#: model:res.partner.title,shortcut:base.res_partner_title_sir
+msgid "Sir"
+msgstr ""
+
+#. module: base
+#: field:ir.model.fields,size:0
+msgid "Size"
+msgstr ""
+
+#. module: base
+#: code:addons/base/ir/ir_model.py:302
#, python-format
-msgid "'%s' does not seem to be a valid datetime for field '%%(field)s'"
+msgid "Size of the field can never be less than 0 !"
msgstr ""
#. module: base
-#: model:res.partner.bank.type.field,name:base.bank_normal_field_bic
-msgid "bank_bic"
+#: view:res.config.installer:base.res_config_installer
+msgid "Skip"
msgstr ""
#. module: base
-#: field:ir.actions.server,expression:0
-msgid "Loop Expression"
+#: selection:base.language.install,lang:0
+msgid "Slovak / Slovenský jazyk"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_16
-msgid "Retailer"
+#: model:res.country,name:base.sk
+msgid "Slovakia"
msgstr ""
#. module: base
-#: view:ir.model.fields:0
-#: field:ir.model.fields,readonly:0
-#: field:res.partner.bank.type.field,readonly:0
-msgid "Readonly"
+#: model:res.country,name:base.si
+msgid "Slovenia"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_gt
-msgid "Guatemala - Accounting"
+#: model:ir.module.module,shortdesc:base.module_l10n_si
+msgid "Slovenian - Accounting"
msgstr ""
#. module: base
-#: help:ir.cron,args:0
-msgid "Arguments to be passed to the method, e.g. (uid,)."
+#: selection:base.language.install,lang:0
+msgid "Slovenian / slovenščina"
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "Reference Guide"
+#: field:res.partner,image_small:0
+msgid "Small-sized image"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_partner
-#: field:res.company,partner_id:0
-#: model:res.partner.category,name:base.res_partner_category_0
-#: selection:res.partner.title,domain:0
-#: model:res.request.link,name:base.req_link_partner
-msgid "Partner"
+#: help:res.partner,image_small:0
+msgid "Small-sized image of this contact. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required."
+msgstr ""
+
+#. module: base
+#: model:ir.module.category,name:base.module_category_social_network
+#: model:ir.module.module,shortdesc:base.module_mail
+msgid "Social Network"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.sb
+msgid "Solomon Islands"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.so
+msgid "Somalia"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:477
+#: help:res.bank,bic:0
+msgid "Sometimes called BIC or Swift."
+msgstr ""
+
+#. module: base
+#: code:addons/base/ir/ir_model.py:748
#, python-format
-msgid "Your server does not seem to support SSL, you may want to try STARTTLS instead"
+msgid "Sorry, you are not allowed to access this document."
msgstr ""
#. module: base
-#: code:addons/base/ir/workflow/workflow.py:100
+#: code:addons/base/ir/ir_model.py:750
#, python-format
-msgid "Please make sure no workitems refer to an activity before deleting it!"
+msgid "Sorry, you are not allowed to create this kind of document."
msgstr ""
#. module: base
-#: model:res.country,name:base.tr
-msgid "Turkey"
+#: code:addons/base/ir/ir_model.py:751
+#, python-format
+msgid "Sorry, you are not allowed to delete this document."
msgstr ""
#. module: base
-#: model:res.country,name:base.fk
-msgid "Falkland Islands"
+#: code:addons/base/ir/ir_model.py:749
+#, python-format
+msgid "Sorry, you are not allowed to modify this document."
msgstr ""
#. module: base
-#: model:res.country,name:base.lb
-msgid "Lebanon"
+#: field:ir.translation,source:0
+msgid "Source"
msgstr ""
#. module: base
-#: view:ir.actions.report.xml:0
-#: field:ir.actions.report.xml,report_type:0
-msgid "Report Type"
+#: field:workflow.transition,act_from:0
+msgid "Source Activity"
msgstr ""
#. module: base
-#: view:res.country.state:0
-#: field:res.partner,state_id:0
-msgid "State"
+#: field:ir.actions.act_window,src_model:0
+msgid "Source Model"
+msgstr ""
+
+#. module: base
+#: view:ir.actions.act_window:base.view_window_action_form
+msgid "Source Object"
+msgstr ""
+
+#. module: base
+#: view:ir.translation:base.view_translation_form
+msgid "Source Term"
+msgstr ""
+
+#. module: base
+#: help:workflow.transition,act_from:0
+msgid "Source activity. When this activity is over, the condition is tested to determine if we can start the ACT_TO activity."
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.za
+msgid "South Africa"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.gs
+msgid "South Georgia and the South Sandwich Islands"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.kr
+msgid "South Korea"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.ss
+msgid "South Sudan"
+msgstr ""
+
+#. module: base
+#: model:res.country,name:base.es
+msgid "Spain"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Galician / Galego"
+msgid "Spanish (AR) / Español (AR)"
msgstr ""
#. module: base
-#: model:res.country,name:base.no
-msgid "Norway"
+#: selection:base.language.install,lang:0
+msgid "Spanish (BO) / Español (BO)"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "4. %b, %B ==> Dec, December"
+#: selection:base.language.install,lang:0
+msgid "Spanish (CL) / Español (CL)"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_cl
-msgid "Chile Localization Chart Account"
+#: selection:base.language.install,lang:0
+msgid "Spanish (CO) / Español (CO)"
msgstr ""
#. module: base
#: selection:base.language.install,lang:0
-msgid "Sinhalese / සිංහල"
+msgid "Spanish (CR) / Español (CR)"
msgstr ""
#. module: base
-#: selection:res.request,state:0
-msgid "waiting"
+#: selection:base.language.install,lang:0
+msgid "Spanish (DO) / Español (DO)"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_workflow_triggers
-msgid "workflow.triggers"
+#: selection:base.language.install,lang:0
+msgid "Spanish (EC) / Español (EC)"
msgstr ""
#. module: base
-#: selection:ir.translation,type:0
-msgid "XSL"
+#: selection:base.language.install,lang:0
+msgid "Spanish (GT) / Español (GT)"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:84
-#, python-format
-msgid "Invalid search criterions"
+#: selection:base.language.install,lang:0
+msgid "Spanish (HN) / Español (HN)"
msgstr ""
#. module: base
-#: view:ir.mail_server:0
-msgid "Connection Information"
+#: selection:base.language.install,lang:0
+msgid "Spanish (MX) / Español (MX)"
msgstr ""
#. module: base
-#: model:res.partner.title,name:base.res_partner_title_prof
-msgid "Professor"
+#: selection:base.language.install,lang:0
+msgid "Spanish (NI) / Español (NI)"
msgstr ""
#. module: base
-#: model:res.country,name:base.hm
-msgid "Heard and McDonald Islands"
+#: selection:base.language.install,lang:0
+msgid "Spanish (PA) / Español (PA)"
msgstr ""
#. module: base
-#: help:ir.model.data,name:0
-msgid "External Key/Identifier that can be used for data integration with third-party systems"
+#: selection:base.language.install,lang:0
+msgid "Spanish (PE) / Español (PE)"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,view_id:0
-msgid "View Ref."
+#: selection:base.language.install,lang:0
+msgid "Spanish (PR) / Español (PR)"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_sales_management
-msgid "Helps you handle your quotations, sale orders and invoicing."
+#: selection:base.language.install,lang:0
+msgid "Spanish (PY) / Español (PY)"
msgstr ""
#. module: base
-#: field:res.users,login_date:0
-msgid "Latest connection"
+#: selection:base.language.install,lang:0
+msgid "Spanish (SV) / Español (SV)"
msgstr ""
#. module: base
-#: field:res.groups,implied_ids:0
-msgid "Inherits"
+#: selection:base.language.install,lang:0
+msgid "Spanish (UY) / Español (UY)"
msgstr ""
#. module: base
-#: selection:ir.translation,type:0
-msgid "Selection"
+#: selection:base.language.install,lang:0
+msgid "Spanish (VE) / Español (VE)"
msgstr ""
#. module: base
-#: view:change.password.wizard:0
-#: model:ir.actions.act_window,name:base.change_password_wizard_action
-#: view:res.users:0
-msgid "Change Password"
+#: selection:base.language.install,lang:0
+msgid "Spanish / Español"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_es
-msgid "\n"
-"Spanish Charts of Accounts (PGCE 2008).\n"
-"=======================================\n"
-"\n"
-" * Defines the following chart of account templates:\n"
-" * Spanish General Chart of Accounts 2008\n"
-" * Spanish General Chart of Accounts 2008 for small and medium companies\n"
-" * Defines templates for sale and purchase VAT\n"
-" * Defines tax code templates\n"
-"\n"
-"**Note:** You should install the l10n_ES_account_balance_report module for yearly\n"
-" account reporting (balance, profit & losses).\n"
-""
+#: model:ir.module.module,shortdesc:base.module_l10n_es
+msgid "Spanish Charts of Accounts (PGCE 2008)"
msgstr ""
#. module: base
-#: field:ir.actions.act_url,type:0
-#: field:ir.actions.act_window,type:0
-#: field:ir.actions.act_window_close,type:0
-#: field:ir.actions.actions,type:0
-#: field:ir.actions.client,type:0
-#: field:ir.actions.report.xml,type:0
-#: view:ir.actions.server:0
-#: field:ir.actions.server,state:0
-#: field:ir.actions.server,type:0
-#: field:ir.actions.wizard,type:0
-msgid "Action Type"
+#: model:ir.module.module,shortdesc:base.module_web_kanban_sparkline
+msgid "Sparkline Widget for Kanban"
msgstr ""
#. module: base
-#: code:addons/base/module/module.py:372
-#, python-format
-msgid "You try to install module '%s' that depends on module '%s'.\n"
-"But the latter module is not available in your system."
+#: model:ir.module.category,name:base.module_category_specific_industry_applications
+msgid "Specific Industry Applications"
msgstr ""
#. module: base
-#: view:base.language.import:0
-#: model:ir.actions.act_window,name:base.action_view_base_import_language
-#: model:ir.ui.menu,name:base.menu_view_base_import_language
-msgid "Import Translation"
+#: help:res.users,new_password:0
+msgid "Specify a value only when creating a user or if you're changing the user's password, otherwise leave empty. After a change of password, the user has to login again."
msgstr ""
#. module: base
-#: view:ir.module.module:0
-#: field:ir.module.module,category_id:0
-msgid "Category"
+#: help:ir.cron,doall:0
+msgid "Specify if missed occurrences should be executed when the server restarts."
msgstr ""
#. module: base
-#: view:ir.attachment:0
-#: selection:ir.attachment,type:0
-#: selection:ir.property,type:0
-msgid "Binary"
+#: field:workflow.activity,split_mode:0
+msgid "Split Mode"
msgstr ""
#. module: base
-#: model:res.partner.title,name:base.res_partner_title_doctor
-msgid "Doctor"
+#: model:ir.module.module,summary:base.module_website_event_track
+msgid "Sponsors, Tracks, Agenda, Event News"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_mrp_repair
-msgid "\n"
-"The aim is to have a complete module to manage all products repairs.\n"
-"====================================================================\n"
-"\n"
-"The following topics should be covered by this module:\n"
-"------------------------------------------------------\n"
-" * Add/remove products in the reparation\n"
-" * Impact for stocks\n"
-" * Invoicing (products and/or services)\n"
-" * Warranty concept\n"
-" * Repair quotation report\n"
-" * Notes for the technician and for the final customer\n"
-""
+#: model:res.country,name:base.lk
+msgid "Sri Lanka"
msgstr ""
#. module: base
-#: model:res.country,name:base.cd
-msgid "Congo, Democratic Republic of the"
+#: model:ir.ui.menu,name:base.menu_project_config_project
+msgid "Stages"
msgstr ""
#. module: base
-#: model:res.country,name:base.cr
-msgid "Costa Rica"
+#: selection:ir.sequence,implementation:0
+msgid "Standard"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_auth_ldap
-msgid "Authentication via LDAP"
+#: view:base.module.upgrade:base.view_base_module_upgrade_install
+msgid "Start configuration"
msgstr ""
#. module: base
-#: view:workflow.activity:0
-msgid "Conditions"
+#: view:res.bank:base.view_res_bank_form
+#: view:res.company:base.view_company_form
+#: view:res.country.state:base.view_country_state_form
+#: view:res.country.state:base.view_country_state_tree
+#: view:res.partner:base.view_partner_form
+#: field:res.partner,state_id:0
+#: view:res.partner.bank:base.view_partner_bank_form
+msgid "State"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_partner_other_form
-msgid "Other Partners"
+#: field:res.country.state,code:0
+msgid "State Code"
+msgstr ""
+
+#. module: base
+#: field:res.country.state,name:0
+msgid "State Name"
msgstr ""
#. module: base
#: field:base.language.install,state:0
-#: field:base.module.import,state:0
#: field:base.module.update,state:0
#: field:ir.actions.todo,state:0
#: field:ir.module.module,state:0
-#: field:ir.module.module.dependency,state:0
#: field:ir.translation,state:0
-#: field:res.request,state:0
#: field:workflow.instance,state:0
-#: view:workflow.workitem:0
+#: view:workflow.workitem:base.view_workflow_workitem_search
#: field:workflow.workitem,state:0
msgid "Status"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_currency_form
-#: model:ir.ui.menu,name:base.menu_action_currency_form
-#: view:res.currency:0
-msgid "Currencies"
+#: model:ir.module.module,summary:base.module_note_pad
+msgid "Sticky memos, Collaborative"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_8
-msgid "Consultancy Services"
+#: model:ir.module.module,summary:base.module_note
+msgid "Sticky notes, Collaborative, Memos"
msgstr ""
#. module: base
-#: help:ir.values,value:0
-msgid "Default value (pickled) or reference to an action"
+#: model:ir.module.category,name:base.module_category_stock_management
+msgid "Stock Management"
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,auto:0
-msgid "Custom Python Parser"
+#: selection:workflow.activity,kind:0
+msgid "Stop All"
msgstr ""
#. module: base
-#: sql_constraint:res.groups:0
-msgid "The name of the group must be unique !"
+#: field:ir.attachment,store_fname:0
+msgid "Stored Filename"
msgstr ""
#. module: base
-#: help:ir.translation,module:0
-msgid "Module this term belongs to"
+#: field:res.bank,street:0
+#: field:res.company,street:0
+#: field:res.partner,street:0
+#: view:res.partner.bank:base.view_partner_bank_form
+#: field:res.partner.bank,street:0
+msgid "Street"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_view_editor
-msgid "\n"
-"OpenERP Web to edit views.\n"
-"==========================\n"
-"\n"
-" "
+#: view:res.bank:base.view_res_bank_form
+#: view:res.company:base.view_company_form
+#: view:res.partner:base.view_partner_form
+msgid "Street..."
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Hour 00->12: %(h12)s"
+#: field:res.bank,street2:0
+#: field:res.company,street2:0
+#: field:res.partner,street2:0
+msgid "Street2"
msgstr ""
#. module: base
-#: model:res.country,name:base.dk
-msgid "Denmark"
+#: field:ir.actions.server,sub_model_object_field:0
+msgid "Sub-field"
msgstr ""
#. module: base
-#: field:res.country,code:0
-msgid "Country Code"
+#: field:ir.actions.server,sub_object:0
+msgid "Sub-model"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_workflow_instance
-msgid "workflow.instance"
+#: view:workflow.activity:base.view_workflow_activity_form
+#: selection:workflow.activity,kind:0
+#: field:workflow.activity,subflow_id:0
+#: field:workflow.workitem,subflow_id:0
+msgid "Subflow"
msgstr ""
#. module: base
-#: code:addons/orm.py:479
-#, python-format
-msgid "Unknown attribute %s in %s "
+#: view:res.request.link:base.res_request_link_search_view
+msgid "Subject"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "10. %S ==> 20"
+#: view:ir.ui.menu:base.edit_menu_access
+msgid "Submenus"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_ar
-msgid "\n"
-"Argentinian accounting chart and tax localization.\n"
-"==================================================\n"
-"\n"
-"Plan contable argentino e impuestos de acuerdo a disposiciones vigentes\n"
-"\n"
-" "
+#: model:res.country,name:base.sd
+msgid "Sudan"
msgstr ""
#. module: base
-#: code:addons/fields.py:130
-#, python-format
-msgid "undefined get method !"
+#: field:ir.sequence,suffix:0
+msgid "Suffix"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Norwegian Bokmål / Norsk bokmål"
+#: help:ir.sequence,suffix:0
+msgid "Suffix value of the record for the sequence"
msgstr ""
#. module: base
-#: model:res.partner.title,name:base.res_partner_title_madam
-msgid "Madam"
+#: field:ir.module.module,summary:0
+msgid "Summary"
msgstr ""
#. module: base
-#: model:res.country,name:base.ee
-msgid "Estonia"
+#: field:ir.actions.client,params:0
+msgid "Supplementary arguments"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_board
-#: model:ir.ui.menu,name:base.menu_reporting_dashboard
-msgid "Dashboards"
+#: field:res.partner,supplier:0
+#: model:res.partner.category,name:base.res_partner_category_1
+msgid "Supplier"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_procurement
-msgid "Procurements"
+#: view:res.partner:base.view_res_partner_filter
+msgid "Supplier Partners"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_6
-msgid "Bronze"
+#: model:ir.actions.act_window,name:base.action_partner_supplier_form
+#: model:ir.ui.menu,name:base.menu_procurement_management_supplier_name
+#: view:res.partner:base.view_res_partner_filter
+msgid "Suppliers"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_hr_payroll_account
-msgid "Payroll Accounting"
+#: model:ir.module.module,shortdesc:base.module_account_payment
+msgid "Suppliers Payment Management"
msgstr ""
#. module: base
-#: view:res.users:0
-msgid "Change password"
+#: model:ir.module.module,summary:base.module_project_issue
+msgid "Support, Bug Tracker, Helpdesk"
msgstr ""
#. module: base
@@ -11304,2846 +13197,2390 @@ msgid "Suriname"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_sale_order_dates
-msgid "Dates on Sales Order"
+#: model:ir.module.module,shortdesc:base.module_survey
+msgid "Survey"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "Creation Month"
+#: model:res.groups,name:base.group_survey_manager
+msgid "Survey / Manager"
msgstr ""
#. module: base
-#: field:ir.module.module,demo:0
-msgid "Demo Data"
+#: model:res.groups,name:base.group_survey_user
+msgid "Survey / User"
msgstr ""
#. module: base
-#: model:res.partner.title,shortcut:base.res_partner_title_mister
-msgid "Mr."
+#: model:ir.module.module,shortdesc:base.module_survey_crm
+msgid "Survey CRM"
msgstr ""
#. module: base
-#: model:res.country,name:base.mv
-msgid "Maldives"
+#: model:res.country,name:base.sj
+msgid "Svalbard and Jan Mayen Islands"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_portal_crm
-msgid "Portal CRM"
+#: model:res.country,name:base.sz
+msgid "Swaziland"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.next_id_4
-msgid "Low Level Objects"
+#: model:res.country,name:base.se
+msgid "Sweden"
msgstr ""
#. module: base
-#: help:ir.values,model:0
-msgid "Model to which this entry applies"
+#: selection:base.language.install,lang:0
+msgid "Swedish / svenska"
msgstr ""
#. module: base
-#: field:res.country,address_format:0
-msgid "Address Format"
+#: model:res.country,name:base.ch
+msgid "Switzerland"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_change_password_user
-msgid "Change Password Wizard User"
+#: model:ir.module.module,shortdesc:base.module_l10n_ch
+msgid "Switzerland - Accounting"
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_no_one
-msgid "Technical Features"
+#: field:res.currency,symbol:0
+msgid "Symbol"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_ve
-msgid "\n"
-"Chart of Account for Venezuela.\n"
-"===============================\n"
-"\n"
-"Venezuela doesn't have any chart of account by law, but the default\n"
-"proposed in OpenERP should comply with some Accepted best practices in Venezuela, \n"
-"this plan comply with this practices.\n"
-"\n"
-"This module has been tested as base for more of 1000 companies, because \n"
-"it is based in a mixtures of most common softwares in the Venezuelan \n"
-"market what will allow for sure to accountants feel them first steps with \n"
-"OpenERP more confortable.\n"
-"\n"
-"This module doesn't pretend be the total localization for Venezuela, \n"
-"but it will help you to start really quickly with OpenERP in this country.\n"
-"\n"
-"This module give you.\n"
-"---------------------\n"
-"\n"
-"- Basic taxes for Venezuela.\n"
-"- Have basic data to run tests with community localization.\n"
-"- Start a company from 0 if your needs are basic from an accounting PoV.\n"
-"\n"
-"We recomend install account_anglo_saxon if you want valued your \n"
-"stocks as Venezuela does with out invoices.\n"
-"\n"
-"If you install this module, and select Custom chart a basic chart will be proposed, \n"
-"but you will need set manually account defaults for taxes.\n"
-""
+#: field:res.currency,position:0
+msgid "Symbol Position"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Occitan (FR, post 1500) / Occitan"
+#: view:base.update.translations:base.wizard_update_translations
+#: 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 ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:212
-#, python-format
-msgid "Here is what we got instead:\n"
-" %s"
+#: view:base.update.translations:base.wizard_update_translations
+msgid "Synchronize Translation"
msgstr ""
#. 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"
+#: model:res.country,name:base.sy
+msgid "Syria"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Malayalam / മലയാളം"
+#: view:base.module.configuration:base.view_base_module_configuration_form
+msgid "System Configuration Done"
msgstr ""
#. module: base
-#: field:res.request,body:0
-#: field:res.request.history,req_id:0
-msgid "Request"
+#: code:addons/base/module/wizard/base_module_configuration.py:38
+#, python-format
+msgid "System Configuration done"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.act_ir_actions_todo_form
-msgid "The configuration wizards are used to help you configure a new instance of OpenERP. They are launched during the installation of new modules, but you can choose to restart some wizards manually from this menu."
+#: model:ir.actions.act_window,name:base.ir_config_list_action
+#: view:ir.config_parameter:base.view_ir_config_form
+#: view:ir.config_parameter:base.view_ir_config_list
+#: model:ir.ui.menu,name:base.ir_config_menu
+msgid "System Parameters"
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,report_sxw:0
-msgid "SXW Path"
+#: view:ir.config_parameter:base.view_ir_config_search
+msgid "System Properties"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_asset
-msgid "\n"
-"Financial and accounting asset management.\n"
-"==========================================\n"
-"\n"
-"This Module manages the assets owned by a company or an individual. It will keep \n"
-"track of depreciation's occurred on those assets. And it allows to create Move's \n"
-"of the depreciation lines.\n"
-"\n"
-" "
+#: view:base.module.upgrade:base.view_base_module_upgrade
+msgid "System Update"
msgstr ""
#. module: base
-#: field:ir.cron,numbercall:0
-msgid "Number of Calls"
+#: selection:base.language.export,format:0
+msgid "TGZ Archive"
msgstr ""
#. module: base
-#: code:addons/base/res/res_bank.py:192
-#, python-format
-msgid "BANK"
+#: view:base.language.export:base.wizard_lang_export
+msgid "TGZ format: this is a compressed archive containing a PO file, directly suitable\n"
+" for uploading to OpenERP's translation platform,"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_point_of_sale
-#: model:ir.module.module,shortdesc:base.module_point_of_sale
-msgid "Point of Sale"
+#: code:addons/base/res/res_company.py:167
+#: field:res.partner,vat:0
+#, python-format
+msgid "TIN"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_mail
-msgid "\n"
-"Business oriented Social Networking\n"
-"===================================\n"
-"The Social Networking module provides a unified social network abstraction layer allowing applications to display a complete\n"
-"communication history on documents with a fully-integrated email and message management system.\n"
-"\n"
-"It enables the users to read and send messages as well as emails. It also provides a feeds page combined to a subscription mechanism that allows to follow documents and to be constantly updated about recent news.\n"
-"\n"
-"Main Features\n"
-"-------------\n"
-"* Clean and renewed communication history for any OpenERP document that can act as a discussion topic\n"
-"* Subscription mechanism to be updated about new messages on interesting documents\n"
-"* Unified feeds page to see recent messages and activity on followed documents\n"
-"* User communication through the feeds page\n"
-"* Threaded discussion design on documents\n"
-"* Relies on the global outgoing mail server - an integrated email management system - allowing to send emails with a configurable scheduler-based processing engine\n"
-"* Includes an extensible generic email composition assistant, that can turn into a mass-mailing assistant and is capable of interpreting simple *placeholder expressions* that will be replaced with dynamic data when each email is actually sent.\n"
-" "
+#: selection:ir.mail_server,smtp_encryption:0
+msgid "TLS (STARTTLS)"
msgstr ""
#. module: base
-#: help:ir.actions.server,sequence:0
-msgid "Important when you deal with multiple actions, the execution order will be decided based on this, low number is higher priority."
+#: field:ir.default,ref_table:0
+msgid "Table Ref."
msgstr ""
#. module: base
-#: model:res.country,name:base.gr
-msgid "Greece"
+#: view:res.partner:base.view_res_partner_filter
+msgid "Tag"
msgstr ""
#. module: base
-#: view:res.config:0
-msgid "Apply"
+#: field:res.partner,category_id:0
+msgid "Tags"
msgstr ""
#. module: base
-#: field:res.request,trigger_date:0
-msgid "Trigger Date"
+#: view:res.partner:base.view_partner_form
+#: view:res.partner:base.view_partner_simple_form
+msgid "Tags..."
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Croatian / hrvatski jezik"
+#: model:res.country,name:base.tw
+msgid "Taiwan"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_uy
-msgid "\n"
-"General Chart of Accounts.\n"
-"==========================\n"
-"\n"
-"Provide Templates for Chart of Accounts, Taxes for Uruguay.\n"
-"\n"
-""
+#: model:res.country,name:base.tj
+msgid "Tajikistan"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_gr
-msgid "Greece - Accounting"
+#: model:res.country,name:base.tz
+msgid "Tanzania"
msgstr ""
#. module: base
-#: sql_constraint:res.country:0
-msgid "The code of the country must be unique !"
+#: field:ir.actions.server,crud_model_id:0
+#: field:ir.actions.server,use_relational_model:0
+#: field:ir.actions.server,wkf_model_id:0
+msgid "Target Model"
msgstr ""
#. module: base
-#: selection:ir.module.module.dependency,state:0
-msgid "Uninstallable"
+#: field:ir.actions.server,wkf_model_name:0
+msgid "Target Model Name"
msgstr ""
#. module: base
-#: view:res.partner.category:0
-msgid "Partner Category"
+#: field:ir.actions.act_window,target:0
+msgid "Target Window"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-#: selection:ir.actions.server,state:0
-msgid "Trigger"
+#: field:ir.ui.menu,needaction_enabled:0
+msgid "Target model uses the need action mechanism"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_warehouse_management
-msgid "Helps you manage your inventory and main stock operations: delivery orders, receptions, etc."
+#: field:res.company,vat:0
+msgid "Tax ID"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_values
-msgid "ir.values"
+#: help:res.partner,vat:0
+msgid "Tax Identification Number. Check the box if this contact is subjected to taxes. Used by the some of the legal statements."
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_base_module_update
-msgid "Update Module"
+#: model:ir.module.module,shortdesc:base.module_website_hr
+msgid "Team Page"
msgstr ""
#. module: base
-#: view:ir.model.fields:0
-msgid "Translate"
+#: model:ir.ui.menu,name:base.menu_custom
+msgid "Technical"
msgstr ""
#. module: base
-#: field:res.request.history,body:0
-msgid "Body"
+#: view:ir.cron:base.ir_cron_view
+#: view:ir.module.module:base.module_form
+msgid "Technical Data"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:219
-#, python-format
-msgid "Connection test succeeded!"
+#: model:res.groups,name:base.group_no_one
+msgid "Technical Features"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_project_gtd
-msgid "\n"
-"Implement concepts of the \"Getting Things Done\" methodology \n"
-"===========================================================\n"
-"\n"
-"This module implements a simple personal to-do list based on tasks. It adds an editable list of tasks simplified to the minimum required fields in the project application.\n"
-"\n"
-"The to-do list is based on the GTD methodology. This world-wide used methodology is used for personal time management improvement.\n"
-"\n"
-"Getting Things Done (commonly abbreviated as GTD) is an action management method created by David Allen, and described in a book of the same name.\n"
-"\n"
-"GTD rests on the principle that a person needs to move tasks out of the mind by recording them externally. That way, the mind is freed from the job of remembering everything that needs to be done, and can concentrate on actually performing those tasks.\n"
-" "
+#: field:ir.module.module,name:0
+msgid "Technical Name"
msgstr ""
#. module: base
-#: field:res.users,menu_id:0
-msgid "Menu Action"
+#: model:ir.module.category,name:base.module_category_hidden
+#: view:res.users:base.user_groups_view
+msgid "Technical Settings"
msgstr ""
#. module: base
-#: help:ir.model.fields,selection:0
-msgid "List of options for a selection field, specified as a Python expression defining a list of (key, label) pairs. For example: [('blue','Blue'),('yellow','Yellow')]"
+#: model:ir.actions.report.xml,name:base.ir_module_reference_print
+msgid "Technical guide"
msgstr ""
#. module: base
-#: selection:base.language.export,state:0
-msgid "choose"
+#: model:res.partner.category,name:base.res_partner_category_17
+msgid "Telecom sector"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:441
-#, python-format
-msgid "Please define at least one SMTP server, or provide the SMTP parameters explicitly."
+#: selection:base.language.install,lang:0
+msgid "Telugu / తెలుగు"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-msgid "Filter on my documents"
+#: field:ir.actions.report.xml,report_name:0
+msgid "Template Name"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_project_gtd
-msgid "Personal Tasks, Contexts, Timeboxes"
+#: model:ir.module.module,shortdesc:base.module_account_chart
+msgid "Template of Charts of Accounts"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_cr
-msgid "\n"
-"Chart of accounts for Costa Rica.\n"
-"=================================\n"
-"\n"
-"Includes:\n"
-"---------\n"
-" * account.type\n"
-" * account.account.template\n"
-" * account.tax.template\n"
-" * account.tax.code.template\n"
-" * account.chart.template\n"
-"\n"
-"Everything is in English with Spanish translation. Further translations are welcome,\n"
-"please go to http://translations.launchpad.net/openerp-costa-rica.\n"
-" "
+#: view:ir.mail_server:base.ir_mail_server_form
+msgid "Test Connection"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_partner_supplier_form
-#: model:ir.ui.menu,name:base.menu_procurement_management_supplier_name
-#: view:res.partner:0
-msgid "Suppliers"
+#: model:ir.module.module,shortdesc:base.module_test_new_api
+msgid "Test New API"
msgstr ""
#. module: base
-#: field:res.request,ref_doc2:0
-msgid "Document Ref 2"
+#: model:ir.module.module,description:base.module_test_access_rights
+msgid "Testing of access restrictions"
msgstr ""
#. module: base
-#: field:res.request,ref_doc1:0
-msgid "Document Ref 1"
+#: model:ir.module.category,name:base.module_category_tests
+#: model:ir.module.module,shortdesc:base.module_web_tests
+msgid "Tests"
msgstr ""
#. module: base
-#: model:res.country,name:base.ga
-msgid "Gabon"
+#: model:ir.module.module,description:base.module_test_converter
+msgid "Tests of field conversions"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_stock
-msgid "Inventory, Logistic, Storage"
+#: field:ir.actions.todo,note:0
+#: selection:ir.property,type:0
+msgid "Text"
msgstr ""
#. module: base
-#: view:ir.actions.act_window:0
-#: selection:ir.translation,type:0
-msgid "Help"
+#: selection:base.language.install,lang:0
+msgid "Thai / ภาษาไทย"
msgstr ""
#. module: base
-#: view:ir.model:0
-#: view:ir.rule:0
-#: view:res.groups:0
-#: model:res.groups,name:base.group_erp_manager
-#: view:res.users:0
-msgid "Access Rights"
+#: model:res.country,name:base.th
+msgid "Thailand"
msgstr ""
#. module: base
-#: model:res.country,name:base.gl
-msgid "Greenland"
+#: model:ir.module.module,shortdesc:base.module_l10n_th
+msgid "Thailand - Accounting"
msgstr ""
#. module: base
-#: field:res.partner.bank,acc_number:0
-msgid "Account Number"
+#: help:res.country,code:0
+msgid "The ISO country code in two chars.\n"
+"You can use this field for quick search."
msgstr ""
#. module: base
-#: view:ir.rule:0
-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) )"
+#: code:addons/base/ir/ir_model.py:126
+#, python-format
+msgid "The Object name must start with x_ and not contain any special character !"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_th
-msgid "Thailand - Accounting"
+#: code:addons/base/ir/ir_model.py:298
+#, python-format
+msgid "The Selection Options expression is must be in the [('key','Label'), ...] format!"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "1. %c ==> Fri Dec 5 18:25:20 2008"
+#: code:addons/base/ir/ir_model.py:284
+#, python-format
+msgid "The Selection Options expression is not a valid Pythonic expression.Please provide an expression in the [('key','Label'), ...] format."
msgstr ""
#. module: base
-#: model:res.country,name:base.nc
-msgid "New Caledonia (French)"
+#: help:res.lang,grouping:0
+msgid "The Separator Format should be like [,n] where 0 < n :starting from Unit digit.-1 will end the separation. e.g. [3,2,-1] will represent 106500 to be 1,06,500;[1,2,-1] will represent it to be 106,50,0;[3] will represent it as 106,500. Provided ',' as the thousand separator in each case."
msgstr ""
#. module: base
-#: field:ir.model,osv_memory:0
-msgid "Transient Model"
+#: code:addons/base/module/module.py:685
+#, python-format
+msgid "The `%s` module appears to be unavailable at the moment, please try again later."
msgstr ""
#. module: base
-#: model:res.country,name:base.cy
-msgid "Cyprus"
+#: code:addons/base/module/module.py:522
+#, python-format
+msgid "The `base` module cannot be uninstalled"
msgstr ""
#. module: base
-#: field:res.users,new_password:0
-msgid "Set Password"
+#: help:res.partner.category,active:0
+msgid "The active field allows you to hide the category without removing it."
msgstr ""
#. module: base
-#: field:ir.actions.server,subject:0
-#: field:res.request,name:0
-#: view:res.request.link:0
-msgid "Subject"
+#: constraint:res.users:0
+msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_membership
-msgid "\n"
-"This module allows you to manage all operations for managing memberships.\n"
-"=========================================================================\n"
-"\n"
-"It supports different kind of members:\n"
-"--------------------------------------\n"
-" * Free member\n"
-" * Associated member (e.g.: a group subscribes to a membership for all subsidiaries)\n"
-" * Paid members\n"
-" * Special member prices\n"
-"\n"
-"It is integrated with sales and accounting to allow you to automatically\n"
-"invoice and send propositions for membership renewal.\n"
-" "
+#: sql_constraint:res.country:0
+msgid "The code of the country must be unique !"
msgstr ""
#. module: base
-#: selection:res.currency,position:0
-msgid "Before Amount"
+#: sql_constraint:res.lang:0
+msgid "The code of the language must be unique !"
msgstr ""
#. module: base
-#: field:res.request,act_from:0
-#: field:res.request.history,act_from:0
-msgid "From"
+#: sql_constraint:res.company:0
+msgid "The company name must be unique !"
msgstr ""
#. module: base
-#: view:res.users:0
-msgid "Preferences"
+#: help:res.users,company_id:0
+msgid "The company this user is currently working for."
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_9
-msgid "Components Buyer"
+#: model:ir.actions.act_window,help:base.act_ir_actions_todo_form
+msgid "The configuration wizards are used to help you configure a new instance of Odoo. They are launched during the installation of new modules, but you can choose to restart some wizards manually from this menu."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_web_tests_demo
-msgid "\n"
-"OpenERP Web demo of a test suite\n"
-"================================\n"
-"\n"
-"Test suite example, same code as that used in the testing documentation.\n"
-" "
+#: sql_constraint:res.currency:0
+msgid "The currency code must be unique per company!"
msgstr ""
#. module: base
-#: help:ir.cron,function:0
-msgid "Name of the method to be called when this job is processed."
+#: help:ir.attachment,res_model:0
+msgid "The database object this attachment will be attached to"
msgstr ""
#. module: base
-#: field:ir.actions.client,tag:0
-msgid "Client action tag"
+#: help:workflow.transition,act_to:0
+msgid "The destination activity."
msgstr ""
#. module: base
-#: field:ir.values,model_id:0
-msgid "Model (change only)"
+#: help:ir.actions.server,wkf_field_id:0
+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 ""
#. module: base
-#: model:ir.module.module,description:base.module_marketing_campaign_crm_demo
-msgid "\n"
-"Demo data for the module marketing_campaign.\n"
-"============================================\n"
-"\n"
-"Creates demo data like leads, campaigns and segments for the module marketing_campaign.\n"
-" "
+#: help:res.country,name:0
+msgid "The full name of the country."
msgstr ""
#. module: base
-#: selection:ir.actions.act_window.view,view_mode:0
-#: view:ir.ui.view:0
-#: selection:ir.ui.view,type:0
-msgid "Kanban"
+#: help:workflow.transition,group_id:0
+msgid "The group that a user must have to be authorized to validate this transition."
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:289
-#, python-format
-msgid "The Selection Options expression is must be in the [('key','Label'), ...] format!"
+#: help:res.partner,user_id:0
+msgid "The internal user that is in charge of communicating with this contact if any."
msgstr ""
#. module: base
-#: field:res.company,company_registry:0
-msgid "Company Registry"
+#: help:ir.filters,action_id:0
+msgid "The menu action this filter applies to. When left empty the filter applies to all menus for this model."
msgstr ""
#. module: base
-#: view:ir.actions.report.xml:0
-#: view:res.currency:0
-msgid "Miscellaneous"
+#: help:ir.actions.server,wkf_model_id:0
+msgid "The model that will receive the workflow signal. Note that it should have a workflow associated with it."
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_ir_mail_server_list
-#: view:ir.mail_server:0
-#: model:ir.ui.menu,name:base.menu_mail_servers
-msgid "Outgoing Mail Servers"
+#: help:ir.model.fields,model_id:0
+msgid "The model this field belongs to"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_custom
-msgid "Technical"
+#: sql_constraint:res.country:0
+msgid "The name of the country must be unique !"
msgstr ""
#. module: base
-#: model:res.country,name:base.cn
-msgid "China"
+#: code:addons/base/res/res_users.py:127
+#, python-format
+msgid "The name of the group can not start with \"-\""
msgstr ""
#. module: base
-#: help:ir.actions.server,wkf_model_id:0
-msgid "The object that should receive the workflow signal (must have an associated workflow)"
+#: sql_constraint:res.groups:0
+msgid "The name of the group must be unique within an application!"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_account_voucher
-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."
+#: sql_constraint:res.lang:0
+msgid "The name of the language must be unique !"
msgstr ""
#. module: base
-#: model:res.country,name:base.eh
-msgid "Western Sahara"
+#: code:addons/base/module/module.py:325
+#, python-format
+msgid "The name of the module must be unique !"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_account_voucher
-msgid "Invoicing & Payments"
+#: help:ir.sequence,number_increment:0
+msgid "The next number of the sequence will be incremented by this number"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_res_company_form
-msgid "Create and manage the companies that will be managed by OpenERP from here. Shops or subsidiaries can be created and maintained from here."
+#: view:base.language.export:base.wizard_lang_export
+msgid "The next step depends on the file format:"
msgstr ""
#. module: base
-#: model:res.country,name:base.id
-msgid "Indonesia"
+#: help:ir.model.fields,domain:0
+msgid "The optional domain to restrict possible values for relationship fields, specified as a Python expression defining a list of triplets. For example: [('color','=','red')]"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_stock_no_autopicking
-msgid "\n"
-"This module allows an intermediate picking process to provide raw materials to production orders.\n"
-"=================================================================================================\n"
-"\n"
-"One example of usage of this module is to manage production made by your\n"
-"suppliers (sub-contracting). To achieve this, set the assembled product which is\n"
-"sub-contracted to 'No Auto-Picking' and put the location of the supplier in the\n"
-"routing of the assembly operation.\n"
-" "
+#: code:addons/base/ir/ir_model.py:84
+#, python-format
+msgid "The osv_memory field can only be compared with = and != operator."
msgstr ""
#. module: base
-#: help:multi_company.default,expression:0
-msgid "Expression, must be True to match\n"
-"use context.get or user (browse)"
+#: help:res.partner,tz:0
+msgid "The partner's timezone, used to output proper date and time values inside printed reports. It is important to set a value for this field. You should use the same timezone that is otherwise used to pick and render date and time values: your computer's timezone."
msgstr ""
#. module: base
-#: model:res.country,name:base.bg
-msgid "Bulgaria"
+#: help:ir.actions.report.xml,report_file:0
+msgid "The path to the main report file (depending on Report Type) or NULL if the content is in another field"
msgstr ""
#. module: base
-#: model:res.country,name:base.ao
-msgid "Angola"
+#: help:ir.actions.report.xml,report_rml:0
+msgid "The path to the main report file/controller (depending on Report Type) or NULL if the content is in another data field"
msgstr ""
#. module: base
-#: model:res.country,name:base.tf
-msgid "French Southern Territories"
+#: help:ir.cron,priority:0
+msgid "The priority of the job, as an integer: 0 means higher priority, 10 means lower priority."
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_currency
-#: field:res.company,currency_id:0
-#: field:res.company,currency_ids:0
-#: field:res.country,currency_id:0
-#: view:res.currency:0
-#: field:res.currency,name:0
-#: field:res.currency.rate,currency_id:0
-msgid "Currency"
+#: help:res.currency.rate,rate:0
+msgid "The rate of the currency to the currency of rate 1"
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "5. %y, %Y ==> 08, 2008"
+#: help:res.currency,rate_silent:0
+msgid "The rate of the currency to the currency of rate 1 (0 if no rate defined)."
msgstr ""
#. module: base
-#: model:res.partner.title,shortcut:base.res_partner_title_ltd
-msgid "ltd"
+#: help:res.currency,rate:0
+msgid "The rate of the currency to the currency of rate 1."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_crm_claim
-msgid "\n"
-"\n"
-"Manage Customer Claims.\n"
-"=======================\n"
-"This application allows you to track your customers/suppliers claims and grievances.\n"
-"\n"
-"It is fully integrated with the email gateway so that you can create\n"
-"automatically new claims based on incoming emails.\n"
-" "
+#: help:ir.attachment,res_id:0
+msgid "The record id this is attached to"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_test
-msgid "Accounting Consistency Tests"
+#: code:addons/fields.py:794
+#, python-format
+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 ""
#. module: base
-#: model:ir.module.module,description:base.module_purchase_double_validation
-msgid "\n"
-"Double-validation for purchases exceeding minimum amount.\n"
-"=========================================================\n"
-"\n"
-"This module modifies the purchase workflow in order to validate purchases that\n"
-"exceeds minimum amount set by configuration wizard.\n"
-" "
+#: view:base.language.install:base.view_base_language_install
+msgid "The selected language has been successfully installed. You must change the preferences of the user and open a new menu to view the changes."
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_administration
-msgid "Administration"
+#: view:base.module.upgrade:base.view_base_module_upgrade_install
+msgid "The selected modules have been updated / installed !"
msgstr ""
#. module: base
-#: view:base.module.update:0
-msgid "Click on Update below to start the process..."
+#: help:res.country.state,code:0
+msgid "The state code in max. three chars."
msgstr ""
#. module: base
-#: model:res.country,name:base.ir
-msgid "Iran"
+#: code:addons/custom.py:554
+#, python-format
+msgid "The sum of the data (2nd field) is null.\n"
+"We can't draw a pie chart !"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Slovak / Slovenský jazyk"
+#: help:ir.model.fields,model:0
+msgid "The technical name of the model this field belongs to"
msgstr ""
#. module: base
-#: field:base.language.export,state:0
-#: field:ir.ui.menu,icon_pict:0
-#: field:res.partner,has_image:0
-#: field:res.users,user_email:0
-msgid "unknown"
+#: help:ir.filters,user_id:0
+msgid "The user this filter is private to. When left empty the filter is public and available to all users."
msgstr ""
#. module: base
-#: field:res.currency,symbol:0
-msgid "Symbol"
+#: code:addons/base/ir/ir_filters.py:96
+#, python-format
+msgid "There is already a shared filter set as default for %(model)s, delete or change it before setting a new default"
msgstr ""
#. module: base
-#: help:res.partner,image_medium:0
-msgid "Medium-sized image of this contact. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views."
+#: help:res.lang,iso_code:0
+msgid "This ISO code is the name of po files to use for translations"
msgstr ""
#. module: base
-#: view:base.update.translations:0
-msgid "Synchronize Translation"
+#: selection:ir.actions.act_url,target:0
+msgid "This Window"
msgstr ""
#. module: base
-#: view:res.partner.bank:0
-#: field:res.partner.bank,bank_name:0
-msgid "Bank Name"
+#: code:addons/base/ir/ir_model.py:337
+#, python-format
+msgid "This column contains module data and cannot be removed!"
msgstr ""
#. module: base
-#: model:res.country,name:base.ki
-msgid "Kiribati"
+#: code:addons/base/ir/ir_cron.py:282
+#, python-format
+msgid "This cron task is currently being executed and may not be modified, please try again in a few minutes"
msgstr ""
#. module: base
-#: model:res.country,name:base.iq
-msgid "Iraq"
+#: help:res.partner,image:0
+msgid "This field holds the image used as avatar for this contact, limited to 1024x1024px"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_association
-#: model:ir.ui.menu,name:base.menu_association
-#: model:ir.ui.menu,name:base.menu_report_association
-msgid "Association"
+#: help:res.lang,code:0
+msgid "This field is used to set/get locales for user"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Action to Launch"
+#: help:ir.model,osv_memory:0
+msgid "This field specifies whether the model is transient or not (i.e. if records are automatically deleted from the database or not)"
msgstr ""
#. module: base
-#: field:ir.model,modules:0
-#: field:ir.model.fields,modules:0
-msgid "In Modules"
+#: view:base.language.export:base.wizard_lang_export
+msgid "This file was generated using the universal"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_contacts
-#: model:ir.ui.menu,name:base.menu_config_address_book
-msgid "Address Book"
+#: help:ir.actions.act_window,views:0
+msgid "This function field computes the ordered list of views that should be enabled when displaying the result of an action, federating view mode, views and reference view. The result is returned as an ordered list of pairs (view_id,view_mode)."
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_sequence_type
-msgid "ir.sequence.type"
+#: help:ir.actions.report.xml,attachment:0
+msgid "This is the filename of the attachment used to store the printing result. Keep empty to not save the printed reports. You can use a python expression with the object and time variables."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll_account
-msgid "Belgium - Payroll with Accounting"
+#: model:ir.module.module,summary:base.module_crm_mass_mailing
+msgid "This module allow to specify a campaign, a source and a channel for a mass mailing campaign."
msgstr ""
#. module: base
-#: selection:base.language.export,format:0
-msgid "CSV File"
+#: view:base.module.upgrade:base.view_base_module_upgrade
+msgid "This module will trigger the uninstallation of below modules."
msgstr ""
#. module: base
-#: field:res.company,account_no:0
-msgid "Account No."
+#: view:base.module.upgrade:base.view_base_module_upgrade
+msgid "This operation will permanently erase all data currently stored by the modules!"
msgstr ""
#. module: base
-#: code:addons/base/res/res_lang.py:185
-#, python-format
-msgid "Base Language 'en_US' can not be deleted !"
+#: model:ir.module.module,description:base.module_hr_applicant_document
+msgid "This module allows you to search job applications by content\n"
+" of resumes and letters."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_uk
-msgid "\n"
-"This is the latest UK OpenERP localisation necessary to run OpenERP accounting for UK SME's with:\n"
-"=================================================================================================\n"
-" - a CT600-ready chart of accounts\n"
-" - VAT100-ready tax structure\n"
-" - InfoLogic UK counties listing\n"
-" - a few other adaptations"
+#: field:res.lang,thousands_sep:0
+msgid "Thousands Separator"
msgstr ""
#. module: base
-#: selection:ir.model,state:0
-msgid "Base Object"
+#: field:res.lang,time_format:0
+msgid "Time Format"
msgstr ""
#. module: base
-#: field:ir.cron,priority:0
-#: field:ir.mail_server,sequence:0
-#: field:res.request,priority:0
-#: field:res.request.link,priority:0
-msgid "Priority"
+#: model:ir.module.module,shortdesc:base.module_hr_timesheet
+msgid "Time Tracking"
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "Dependencies :"
+#: model:ir.module.module,shortdesc:base.module_project_issue_sheet
+msgid "Timesheet on Issues"
msgstr ""
#. module: base
-#: field:res.company,vat:0
-msgid "Tax ID"
+#: model:ir.module.module,shortdesc:base.module_hr_timesheet_sheet
+msgid "Timesheets"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions
-msgid "Bank Statement Extensions to Support e-banking"
+#: model:ir.module.module,summary:base.module_hr_timesheet_sheet
+msgid "Timesheets, Attendances, Activities"
msgstr ""
#. module: base
-#: field:ir.model.fields,field_description:0
-msgid "Field Label"
+#: field:res.partner,tz:0
+msgid "Timezone"
msgstr ""
#. module: base
-#: model:res.country,name:base.dj
-msgid "Djibouti"
+#: field:res.partner,tz_offset:0
+msgid "Timezone offset"
msgstr ""
#. module: base
-#: field:ir.translation,value:0
-msgid "Translation Value"
+#: field:res.partner,title:0
+#: field:res.partner.title,name:0
+msgid "Title"
msgstr ""
#. module: base
-#: model:res.country,name:base.ag
-msgid "Antigua and Barbuda"
+#: model:ir.actions.act_window,name:base.action_partner_title_partner
+#: model:ir.ui.menu,name:base.menu_partner_title_partner
+msgid "Titles"
msgstr ""
#. module: base
-#: model:res.country,name:base.zr
-msgid "Zaire"
+#: view:ir.actions.todo:base.config_wizard_step_view_search
+#: selection:ir.actions.todo,state:0
+msgid "To Do"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_project
-msgid "Projects, Tasks"
+#: selection:ir.translation,state:0
+msgid "To Translate"
msgstr ""
#. module: base
-#: field:ir.attachment,res_id:0
-#: field:workflow.instance,res_id:0
-#: field:workflow.triggers,res_id:0
-msgid "Resource ID"
+#: selection:ir.module.module,state:0
+msgid "To be installed"
msgstr ""
#. module: base
-#: view:ir.cron:0
-#: field:ir.model,info:0
-msgid "Information"
+#: selection:ir.module.module,state:0
+msgid "To be removed"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:146
-#, python-format
-msgid "false"
+#: selection:ir.module.module,state:0
+msgid "To be upgraded"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_analytic_analysis
-msgid "\n"
-"This module is for modifying account analytic view to show important data to project manager of services companies.\n"
-"===================================================================================================================\n"
-"\n"
-"Adds menu to show relevant information to each manager.You can also view the report of account analytic summary user-wise as well as month-wise.\n"
-""
+#: view:ir.actions.todo:base.ir_actions_todo_tree
+msgid "Todo"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_payroll_account
-msgid "\n"
-"Generic Payroll system Integrated with Accounting.\n"
-"==================================================\n"
-"\n"
-" * Expense Encoding\n"
-" * Payment Encoding\n"
-" * Company Contribution Management\n"
-" "
+#: model:res.country,name:base.tg
+msgid "Togo"
msgstr ""
#. module: base
-#: field:res.partner.category,parent_right:0
-msgid "Right parent"
+#: model:res.country,name:base.tk
+msgid "Tokelau"
msgstr ""
#. module: base
-#: view:base.module.update:0
-msgid "Update Module List"
+#: model:res.country,name:base.to
+msgid "Tonga"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:679
-#: code:addons/base/res/res_users.py:819
-#: selection:res.partner,type:0
-#: view:res.users:0
-#, python-format
-msgid "Other"
+#: model:ir.module.module,summary:base.module_point_of_sale
+msgid "Touchscreen Interface for Shops"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Turkish / Türkçe"
+#: model:ir.module.module,summary:base.module_event
+msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_workflow_activity_form
-#: model:ir.ui.menu,name:base.menu_workflow_activity
-#: field:workflow,activities:0
-msgid "Activities"
+#: model:ir.module.module,description:base.module_payment_transfer
+#: model:ir.module.module,shortdesc:base.module_payment_transfer
+msgid "Transfer Payment Acquirer"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_product
-msgid "Products & Pricelists"
+#: field:ir.model,osv_memory:0
+msgid "Transient Model"
msgstr ""
#. module: base
-#: help:ir.filters,user_id:0
-msgid "The user this filter is private to. When left empty the filter is public and available to all users."
+#: view:workflow.transition:base.view_workflow_transition_form
+#: view:workflow.transition:base.view_workflow_transition_search
+#: view:workflow.transition:base.view_workflow_transition_tree
+msgid "Transition"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,auto_refresh:0
-msgid "Auto-Refresh"
+#: model:ir.actions.act_window,name:base.action_workflow_transition_form
+#: model:ir.ui.menu,name:base.menu_workflow_transition
+#: view:workflow.activity:base.view_workflow_activity_form
+msgid "Transitions"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_product_expiry
-msgid "\n"
-"Track different dates on products and production lots.\n"
-"======================================================\n"
-"\n"
-"Following dates can be tracked:\n"
-"-------------------------------\n"
-" - end of life\n"
-" - best before date\n"
-" - removal date\n"
-" - alert date\n"
-"\n"
-"Used, for example, in food industries."
+#: field:res.groups,trans_implied_ids:0
+msgid "Transitively inherits"
msgstr ""
#. module: base
-#: help:ir.translation,state:0
-msgid "Automatically set to let administators find new terms that might need to be translated"
+#: field:ir.model.fields,translate:0
+#: view:res.lang:base.res_lang_search
+#: field:res.lang,translatable:0
+msgid "Translatable"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:84
-#, python-format
-msgid "The osv_memory field can only be compared with = and != operator."
+#: view:ir.model.fields:base.view_model_fields_search
+msgid "Translate"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Fax:"
+#: selection:ir.translation,state:0
+msgid "Translated"
msgstr ""
#. module: base
-#: selection:ir.ui.view,type:0
-msgid "Diagram"
+#: model:ir.actions.act_window,name:base.action_translation
+#: model:ir.ui.menu,name:base.menu_action_translation
+msgid "Translated Terms"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_es
-msgid "Spanish - Accounting (PGCE 2008)"
+#: field:ir.translation,name:0
+msgid "Translated field"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_stock_no_autopicking
-msgid "Picking Before Manufacturing"
+#: view:ir.translation:base.view_translation_form
+msgid "Translation"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_note_pad
-msgid "Sticky memos, Collaborative"
+#: field:ir.translation,value:0
+msgid "Translation Value"
msgstr ""
#. module: base
-#: model:res.country,name:base.wf
-msgid "Wallis and Futuna Islands"
+#: field:ir.translation,comments:0
+msgid "Translation comments"
msgstr ""
#. module: base
-#: help:multi_company.default,name:0
-msgid "Name it to easily find a record"
+#: code:addons/base/ir/ir_translation.py:392
+#, python-format
+msgid "Translation features are unavailable until you install an extra OpenERP translation."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr
-msgid "\n"
-"Human Resources Management\n"
-"==========================\n"
-"\n"
-"This application enables you to manage important aspects of your company's staff and other details such as their skills, contacts, working time...\n"
-"\n"
-"\n"
-"You can manage:\n"
-"---------------\n"
-"* Employees and hierarchies : You can define your employee with User and display hierarchies\n"
-"* HR Departments\n"
-"* HR Jobs\n"
-" "
+#: selection:ir.translation,state:0
+msgid "Translation in Progress"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_contract
-msgid "\n"
-"Add all information on the employee form to manage contracts.\n"
-"=============================================================\n"
-"\n"
-" * Contract\n"
-" * Place of Birth,\n"
-" * Medical Examination Date\n"
-" * Company Vehicle\n"
-"\n"
-"You can assign several contracts per employee.\n"
-" "
+#: view:ir.translation:base.view_translation_form
+#: view:ir.translation:base.view_translation_search
+#: view:ir.translation:base.view_translation_tree
+#: model:ir.ui.menu,name:base.menu_translation
+msgid "Translations"
msgstr ""
#. module: base
-#: view:ir.model.data:0
-#: field:ir.model.data,name:0
-msgid "External Identifier"
+#: selection:ir.actions.act_window,view_type:0
+#: selection:ir.actions.act_window.view,view_mode:0
+#: view:ir.ui.view:base.view_view_search
+#: selection:ir.ui.view,type:0
+msgid "Tree"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_audittrail
-msgid "\n"
-"This module lets administrator track every user operation on all the objects of the system.\n"
-"===========================================================================================\n"
-"\n"
-"The administrator can subscribe to rules for read, write and delete on objects \n"
-"and can check logs.\n"
-" "
+#: field:workflow.transition,trigger_expr_id:0
+msgid "Trigger Expression"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.grant_menu_access
-#: model:ir.ui.menu,name:base.menu_grant_menu_access
-msgid "Menu Items"
+#: field:workflow.transition,trigger_model:0
+msgid "Trigger Object"
msgstr ""
#. module: base
-#: model:res.groups,comment:base.group_sale_salesman_all_leads
-msgid "the user will have access to all records of everyone in the sales application."
+#: model:res.country,name:base.tt
+msgid "Trinidad and Tobago"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_event
-msgid "Events Organisation"
+#: model:res.country,name:base.tn
+msgid "Tunisia"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.ir_sequence_actions
-#: model:ir.ui.menu,name:base.menu_ir_sequence_actions
-#: model:ir.ui.menu,name:base.next_id_6
-#: view:workflow.activity:0
-msgid "Actions"
+#: model:res.country,name:base.tr
+msgid "Turkey"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_delivery
-msgid "Delivery Costs"
+#: model:ir.module.module,shortdesc:base.module_l10n_tr
+msgid "Turkey - Accounting"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_cron.py:248
-#, python-format
-msgid "This cron task is currently being executed and may not be modified, please try again in a few minutes"
+#: selection:base.language.install,lang:0
+msgid "Turkish / Türkçe"
msgstr ""
#. module: base
-#: view:base.language.export:0
-#: field:ir.exports.line,export_id:0
-msgid "Export"
+#: model:res.country,name:base.tm
+msgid "Turkmenistan"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_ma
-msgid "Maroc - Accounting"
+#: model:res.country,name:base.tc
+msgid "Turks and Caicos Islands"
msgstr ""
#. module: base
-#: field:res.bank,bic:0
-#: field:res.partner.bank,bank_bic:0
-msgid "Bank Identifier Code"
+#: model:res.country,name:base.tv
+msgid "Tuvalu"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "CSV format: you may edit it directly with your favorite spreadsheet software,\n"
-" the rightmost column (value) contains the translations"
+#: model:ir.module.module,shortdesc:base.module_website_twitter
+msgid "Twitter Roller"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_chart
-msgid "\n"
-"Remove minimal account chart.\n"
-"=============================\n"
-"\n"
-"Deactivates minimal chart of accounts.\n"
-""
+#: help:ir.sequence,implementation:0
+msgid "Two sequence object implementations are offered: Standard and 'No gap'. The later is slower than the former but forbids any gap in the sequence (while they are possible in the former)."
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Record rules"
+#: field:ir.actions.todo,type:0
+#: view:ir.attachment:base.view_attachment_search
+#: field:ir.attachment,type:0
+#: view:ir.logging:base.ir_logging_search_view
+#: field:ir.logging,type:0
+#: field:ir.model,state:0
+#: field:ir.model.fields,state:0
+#: field:ir.property,type:0
+#: field:ir.translation,type:0
+#: view:ir.ui.view:base.view_view_search
+#: view:ir.values:base.values_view_search_action
+#: field:ir.values,key:0
+msgid "Type"
msgstr ""
#. module: base
-#: help:workflow.transition,act_to:0
-msgid "The destination activity."
+#: field:res.partner.bank.type,field_ids:0
+msgid "Type Fields"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_project_issue
-msgid "Issue Tracker"
+#: help:ir.actions.server,state:0
+msgid "Type of server action. The following values are available:\n"
+"- 'Execute Python Code': a block of python code that will be executed\n"
+"- 'Trigger a Workflow Signal': send a signal to a workflow\n"
+"- 'Run a Client Action': choose a client action to launch\n"
+"- 'Create or Copy a new Record': create a new record with new values, or copy an existing record in your database\n"
+"- 'Write on a Record': update the values of a record\n"
+"- 'Execute several actions': define an action that triggers several other server actions\n"
+"- 'Send Email': automatically send an email (available in email_template)"
msgstr ""
#. module: base
-#: view:base.module.update:0
-#: view:base.module.upgrade:0
-#: view:base.update.translations:0
-msgid "Update"
+#: help:ir.model.constraint,type:0
+msgid "Type of the constraint: `f` for a foreign key, `u` for other constraints."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_plugin
-msgid "\n"
-"The common interface for plug-in.\n"
-"=================================\n"
-""
+#: model:ir.module.module,shortdesc:base.module_l10n_ae
+msgid "U.A.E. - Accounting"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_sale_crm
-msgid "\n"
-"This module adds a shortcut on one or several opportunity cases in the CRM.\n"
-"===========================================================================\n"
-"\n"
-"This shortcut allows you to generate a sales order based on the selected case.\n"
-"If different cases are open (a list), it generates one sale order by case.\n"
-"The case is then closed and linked to the generated sales order.\n"
-"\n"
-"We suggest you to install this module, if you installed both the sale and the crm\n"
-"modules.\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_l10n_uk
+msgid "UK - Accounting"
msgstr ""
#. module: base
-#: model:res.country,name:base.bq
-msgid "Bonaire, Sint Eustatius and Saba"
+#: view:ir.attachment:base.view_attachment_search
+#: selection:ir.attachment,type:0
+#: field:ir.module.module,url:0
+msgid "URL"
msgstr ""
#. module: base
-#: model:ir.actions.report.xml,name:base.ir_module_reference_print
-msgid "Technical guide"
+#: selection:res.company,rml_paper_format:0
+msgid "US Letter"
msgstr ""
#. module: base
-#: model:res.country,name:base.tz
-msgid "Tanzania"
+#: model:res.country,name:base.um
+msgid "USA Minor Outlying Islands"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Danish / Dansk"
+#: model:res.country,name:base.ug
+msgid "Uganda"
msgstr ""
#. module: base
-#: selection:ir.model.fields,select_level:0
-msgid "Advanced Search (deprecated)"
+#: field:ir.logging,create_uid:0
+msgid "Uid"
msgstr ""
#. module: base
-#: model:res.country,name:base.cx
-msgid "Christmas Island"
+#: model:res.country,name:base.ua
+msgid "Ukraine"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_contacts
-msgid "\n"
-"This module gives you a quick view of your address book, accessible from your home page.\n"
-"You can track your suppliers, customers and other contacts.\n"
-""
+#: selection:base.language.install,lang:0
+msgid "Ukrainian / українська"
msgstr ""
#. module: base
-#: help:res.company,custom_footer:0
-msgid "Check this to define the report footer manually. Otherwise it will be filled in automatically."
+#: code:addons/base/module/module.py:376
+#, python-format
+msgid "Unable to install module \"%s\" because an external dependency is not met: %s"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Supplier Partners"
+#: code:addons/base/module/module.py:380
+#, python-format
+msgid "Unable to process module \"%s\" because an external dependency is not met: %s"
msgstr ""
#. module: base
-#: view:res.config.installer:0
-msgid "Install Modules"
+#: code:addons/base/module/module.py:378
+#, python-format
+msgid "Unable to upgrade module \"%s\" because an external dependency is not met: %s"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_import_crm
-msgid "Import & Synchronize"
+#: model:ir.module.category,name:base.module_category_uncategorized
+msgid "Uncategorized"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Customer Partners"
+#: view:base.language.export:base.wizard_lang_export
+msgid "Unicode/UTF-8"
msgstr ""
#. module: base
-#: sql_constraint:res.users:0
-msgid "You can not have two users with the same login !"
+#: code:addons/base/module/module.py:525
+#: view:ir.module.module:base.module_form
+#, python-format
+msgid "Uninstall"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_request_history
-msgid "res.request.history"
+#: model:res.country,name:base.ae
+msgid "United Arab Emirates"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_multi_company_default
-msgid "Default multi company"
+#: model:res.country,name:base.uk
+msgid "United Kingdom"
msgstr ""
#. module: base
-#: field:ir.translation,src:0
-msgid "Source"
+#: model:res.country,name:base.us
+msgid "United States"
msgstr ""
#. module: base
-#: field:ir.model.constraint,date_init:0
-#: field:ir.model.relation,date_init:0
-msgid "Initialization Date"
+#: model:ir.module.module,shortdesc:base.module_l10n_us
+msgid "United States - Chart of accounts"
msgstr ""
#. module: base
-#: model:res.country,name:base.vu
-msgid "Vanuatu"
+#: code:addons/report_sxw.py:390
+#, python-format
+msgid "Unknown report type: %s"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_product_visible_discount
-msgid "\n"
-"This module lets you calculate discounts on Sale Order lines and Invoice lines base on the partner's pricelist.\n"
-"===============================================================================================================\n"
-"\n"
-"To this end, a new check box named 'Visible Discount' is added to the pricelist form.\n"
-"\n"
-"**Example:**\n"
-" For the product PC1 and the partner \"Asustek\": if listprice=450, and the price\n"
-" calculated using Asustek's pricelist is 225. If the check box is checked, we\n"
-" will have on the sale order line: Unit price=450, Discount=50,00, Net price=225.\n"
-" If the check box is unchecked, we will have on Sale Order and Invoice lines:\n"
-" Unit price=225, Discount=0,00, Net price=225.\n"
-" "
+#: code:addons/base/ir/ir_fields.py:347
+#, python-format
+msgid "Unknown sub-field '%s'"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_crm
-msgid "CRM"
+#: code:addons/base/ir/ir_fields.py:173
+#, python-format
+msgid "Unknown value '%s' for boolean field '%%(field)s', assuming '%s'"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_base_report_designer
-msgid "\n"
-"This module is used along with OpenERP OpenOffice Plugin.\n"
-"=========================================================\n"
-"\n"
-"This module adds wizards to Import/Export .sxw report that you can modify in OpenOffice. \n"
-"Once you have modified it you can upload the report using the same wizard.\n"
-""
+#: code:addons/base/module/wizard/base_module_upgrade.py:98
+#, python-format
+msgid "Unmet Dependency!"
msgstr ""
#. module: base
-#: view:base.module.upgrade:0
-msgid "Start configuration"
+#: view:ir.translation:base.view_translation_search
+msgid "Untranslated"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Catalan / Català"
+#: view:ir.model.data:base.view_model_data_search
+msgid "Updatable"
msgstr ""
#. module: base
-#: model:res.country,name:base.do
-msgid "Dominican Republic"
+#: view:base.module.update:base.view_base_module_update
+#: view:base.update.translations:base.wizard_update_translations
+msgid "Update"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Serbian (Cyrillic) / српски"
+#: field:ir.model.constraint,date_update:0
+#: field:ir.model.data,date_update:0
+#: field:ir.model.relation,date_update:0
+msgid "Update Date"
msgstr ""
#. module: base
-#: code:addons/orm.py:2649
-#, python-format
-msgid "Invalid group_by specification: \"%s\".\n"
-"A group_by specification must be a list of valid fields."
+#: view:res.lang:base.res_lang_tree
+msgid "Update Languague Terms"
msgstr ""
#. module: base
-#: selection:ir.mail_server,smtp_encryption:0
-msgid "TLS (STARTTLS)"
+#: model:ir.model,name:base.model_base_module_update
+msgid "Update Module"
msgstr ""
#. module: base
-#: help:ir.actions.act_window,usage:0
-msgid "Used to filter menu and home actions from the user form."
+#: view:base.module.update:base.view_base_module_update
+msgid "Update Module List"
msgstr ""
#. module: base
-#: model:res.country,name:base.sa
-msgid "Saudi Arabia"
+#: model:ir.ui.menu,name:base.menu_view_base_module_update
+msgid "Update Modules List"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_sale_mrp
-msgid "\n"
-"This module provides facility to the user to install mrp and sales modulesat a time.\n"
-"====================================================================================\n"
-"\n"
-"It is basically used when we want to keep track of production orders generated\n"
-"from sales order. It adds sales name and sales Reference on production order.\n"
-" "
+#: field:ir.actions.server,use_write:0
+msgid "Update Policy"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_stock
-msgid "\n"
-"This module adds access rules to your portal if stock and portal are installed.\n"
-"==========================================================================================\n"
-" "
+#: view:res.lang:base.res_lang_tree
+msgid "Update Terms"
msgstr ""
#. module: base
-#: field:ir.actions.server,trigger_obj_id:0
-#: field:ir.model.fields,relation_field:0
-msgid "Relation Field"
+#: selection:ir.actions.server,use_write:0
+msgid "Update a record linked to the current record using python"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_portal_project
-msgid "\n"
-"This module adds project menu and features (tasks) to your portal if project and portal are installed.\n"
-"======================================================================================================\n"
-" "
+#: selection:ir.actions.server,use_write:0
+msgid "Update the current record"
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_module_configuration.py:38
-#, python-format
-msgid "System Configuration done"
+#: model:ir.actions.client,name:base.modules_updates_act_cl
+#: model:ir.ui.menu,name:base.menu_module_updates
+msgid "Updates"
msgstr ""
#. module: base
-#: field:ir.attachment,db_datas:0
-msgid "Database Data"
+#: view:ir.module.module:base.module_form
+msgid "Upgrade"
msgstr ""
#. module: base
-#: model:res.country,name:base.tc
-msgid "Turks and Caicos Islands"
+#: selection:base.language.install,lang:0
+msgid "Urdu / اردو"
msgstr ""
#. module: base
-#: field:workflow.triggers,instance_id:0
-msgid "Destination Instance"
+#: field:ir.attachment,url:0
+msgid "Url"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,multi:0
-#: field:ir.actions.wizard,multi:0
-msgid "Action on Multiple Doc."
+#: model:res.country,name:base.uy
+msgid "Uruguay"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_partner_title_partner
-#: model:ir.ui.menu,name:base.menu_partner_title_partner
-msgid "Titles"
+#: model:ir.module.module,shortdesc:base.module_l10n_uy
+msgid "Uruguay - Chart of Accounts"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_anonymization
-msgid "\n"
-"This module allows you to anonymize a database.\n"
-"===============================================\n"
-"\n"
-"This module allows you to keep your data confidential for a given database.\n"
-"This process is useful, if you want to use the migration process and protect\n"
-"your own or your customer’s confidential data. The principle is that you run\n"
-"an anonymization tool which will hide your confidential data(they are replaced\n"
-"by ‘XXX’ characters). Then you can send the anonymized database to the migration\n"
-"team. Once you get back your migrated database, you restore it and reverse the\n"
-"anonymization process to recover your previous data.\n"
-" "
+#: model:ir.module.category,name:base.module_category_usability
+#: view:res.users:base.user_groups_view
+msgid "Usability"
msgstr ""
#. module: base
-#: help:ir.sequence,implementation:0
-msgid "Two sequence object implementations are offered: Standard and 'No gap'. The later is slower than the former but forbids any gap in the sequence (while they are possible in the former)."
+#: code:addons/base/ir/ir_fields.py:175
+#, python-format
+msgid "Use '1' for yes and '0' for no"
msgstr ""
#. module: base
-#: model:res.country,name:base.gn
-msgid "Guinea"
+#: field:res.partner,use_parent_address:0
+msgid "Use Company Address"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_diagram
-msgid "OpenERP Web Diagram"
+#: selection:ir.actions.server,use_relational_model:0
+msgid "Use a relation field on the base model"
msgstr ""
#. module: base
-#: model:res.country,name:base.lu
-msgid "Luxembourg"
+#: model:ir.module.module,description:base.module_hr_gamification
+msgid "Use the HR ressources for the gamification process.\n"
+"\n"
+"The HR officer can now manage challenges and badges.\n"
+"This allow the user to send badges to employees instead of simple users.\n"
+"Badge received are displayed on the user profile.\n"
+""
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_base_calendar
-msgid "Personal & Shared Calendar"
+#: selection:ir.actions.server,use_relational_model:0
+msgid "Use the base model of the action"
msgstr ""
#. module: base
-#: selection:res.request,priority:0
-msgid "Low"
+#: code:addons/base/ir/ir_fields.py:205
+#: code:addons/base/ir/ir_fields.py:236
+#, python-format
+msgid "Use the format '%s'"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_ui_menu.py:354
-#, python-format
-msgid "Error ! You can not create recursive Menu."
+#: help:ir.actions.act_window,usage:0
+msgid "Used to filter menu and home actions from the user form."
msgstr ""
#. module: base
-#: view:ir.translation:0
-msgid "Web-only translations"
+#: help:res.users,login:0
+msgid "Used to log into the system"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "3. If user belongs to several groups, the results from step 2 are combined with logical OR operator"
+#: help:res.partner,type:0
+msgid "Used to select automatically the right address according to the context in sales and purchases documents."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_be
-msgid "\n"
-"This is the base module to manage the accounting chart for Belgium in OpenERP.\n"
-"==============================================================================\n"
-"\n"
-"After installing this module, the Configuration wizard for accounting is launched.\n"
-" * We have the account templates which can be helpful to generate Charts of Accounts.\n"
-" * On that particular wizard, you will be asked to pass the name of the company,\n"
-" the chart template to follow, the no. of digits to generate, the code for your\n"
-" account and bank account, currency to create journals.\n"
-"\n"
-"Thus, the pure copy of Chart Template is generated.\n"
-"\n"
-"Wizards provided by this module:\n"
-"--------------------------------\n"
-" * Partner VAT Intra: Enlist the partners with their related VAT and invoiced\n"
-" amounts. Prepares an XML file format.\n"
-" \n"
-" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium Statements/Partner VAT Intra\n"
-" * Periodical VAT Declaration: Prepares an XML file for Vat Declaration of\n"
-" the Main company of the User currently Logged in.\n"
-" \n"
-" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium Statements/Periodical VAT Declaration\n"
-" * Annual Listing Of VAT-Subjected Customers: Prepares an XML file for Vat\n"
-" Declaration of the Main company of the User currently Logged in Based on\n"
-" Fiscal year.\n"
-" \n"
-" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium Statements/Annual Listing Of VAT-Subjected Customers\n"
-"\n"
-" "
+#: field:change.password.user,user_id:0
+#: view:ir.cron:base.ir_cron_view_search
+#: field:ir.cron,user_id:0
+#: view:ir.filters:base.ir_filters_view_search
+#: field:ir.filters,user_id:0
+#: field:ir.ui.view.custom,user_id:0
+#: field:ir.values,user_id:0
+#: model:res.groups,name:base.group_document_user
+#: model:res.groups,name:base.group_tool_user
+#: view:res.users:base.view_users_search
+#: field:workflow.instance,uid:0
+msgid "User"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_base_gengo
-msgid "Automated Translations through Gengo API"
+#: code:addons/base/res/res_lang.py:189
+#: code:addons/base/res/res_lang.py:191
+#: code:addons/base/res/res_lang.py:193
+#, python-format
+msgid "User Error"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_payment
-msgid "Suppliers Payment Management"
+#: model:ir.ui.menu,name:base.next_id_2
+msgid "User Interface"
msgstr ""
#. module: base
-#: model:res.country,name:base.sv
-msgid "El Salvador"
+#: field:change.password.user,user_login:0
+msgid "User Login"
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:161
-#: field:res.bank,phone:0
-#: field:res.company,phone:0
-#: field:res.partner,phone:0
+#: code:addons/base/ir/ir_qweb.py:263
#, python-format
-msgid "Phone"
+msgid "User does not belong to groups %s"
msgstr ""
#. module: base
-#: field:res.groups,menu_access:0
-msgid "Access Menu"
+#: model:ir.actions.act_window,name:base.act_values_form_defaults
+#: model:ir.ui.menu,name:base.menu_values_form_defaults
+#: view:ir.values:base.values_view_form_defaults
+msgid "User-defined Defaults"
msgstr ""
#. module: base
-#: model:res.country,name:base.th
-msgid "Thailand"
+#: model:ir.ui.menu,name:base.menu_ir_filters
+msgid "User-defined Filters"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_change_password_wizard
-msgid "Change Password Wizard"
+#: field:ir.mail_server,smtp_user:0
+msgid "Username"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_account_voucher
-msgid "Send Invoices and Track Payments"
+#: view:change.password.user:base.change_password_wizard_user_tree_view
+#: field:change.password.wizard,user_ids:0
+#: model:ir.actions.act_window,name:base.action_res_users
+#: field:ir.default,uid:0
+#: model:ir.model,name:base.model_res_users
+#: model:ir.ui.menu,name:base.menu_action_res_users
+#: model:ir.ui.menu,name:base.menu_users
+#: view:res.groups:base.view_groups_form
+#: field:res.groups,users:0
+#: field:res.partner,user_ids:0
+#: view:res.users:base.view_users_form
+#: view:res.users:base.view_users_form_simple_modif
+#: view:res.users:base.view_users_search
+#: view:res.users:base.view_users_simple_form
+#: view:res.users:base.view_users_tree
+msgid "Users"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_crm_config_lead
-msgid "Leads & Opportunities"
+#: view:res.groups:base.view_groups_form
+msgid "Users added to this group are automatically added in the following groups."
msgstr ""
#. module: base
-#: model:res.country,name:base.gg
-msgid "Guernsey"
+#: help:res.groups,implied_ids:0
+msgid "Users of this group automatically inherit those groups"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Romanian / română"
+#: model:res.country,name:base.uz
+msgid "Uzbekistan"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_mx
-msgid "\n"
-"Minimal accounting configuration for Mexico.\n"
-"============================================\n"
-"\n"
-"This Chart of account is a minimal proposal to be able to use OoB the \n"
-"accounting feature of Openerp.\n"
-"\n"
-"This doesn't pretend be all the localization for MX it is just the minimal \n"
-"data required to start from 0 in mexican localization.\n"
-"\n"
-"This modules and its content is updated frequently by openerp-mexico team.\n"
-"\n"
-"With this module you will have:\n"
-"\n"
-" - Minimal chart of account tested in production eviroments.\n"
-" - Minimal chart of taxes, to comply with SAT_ requirements.\n"
-"\n"
-".. SAT: http://www.sat.gob.mx/\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_base_vat
+msgid "VAT Number Validation"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_tr
-msgid "\n"
-"Türkiye için Tek düzen hesap planı şablonu OpenERP Modülü.\n"
-"==========================================================\n"
-"\n"
-"Bu modül kurulduktan sonra, Muhasebe yapılandırma sihirbazı çalışır\n"
-" * Sihirbaz sizden hesap planı şablonu, planın kurulacağı şirket, banka hesap\n"
-" bilgileriniz, ilgili para birimi gibi bilgiler isteyecek.\n"
-" "
+#: field:ir.config_parameter,value:0
+#: field:ir.property,value_binary:0
+#: field:ir.property,value_datetime:0
+#: field:ir.property,value_float:0
+#: field:ir.property,value_integer:0
+#: field:ir.property,value_reference:0
+#: field:ir.property,value_text:0
+#: selection:ir.server.object.lines,type:0
+#: field:ir.server.object.lines,value:0
+#: field:ir.values,value:0
+msgid "Value"
msgstr ""
#. module: base
-#: selection:workflow.activity,join_mode:0
-#: selection:workflow.activity,split_mode:0
-msgid "And"
+#: code:addons/base/ir/ir_fields.py:274
+#, python-format
+msgid "Value '%s' not found in selection field '%%(field)s'"
msgstr ""
#. module: base
-#: help:ir.values,res_id:0
-msgid "Database identifier of the record to which this applies. 0 = for all records"
+#: field:ir.actions.server,fields_lines:0
+msgid "Value Mapping"
msgstr ""
#. module: base
-#: field:ir.model.fields,relation:0
-msgid "Object Relation"
+#: model:res.country,name:base.vu
+msgid "Vanuatu"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_voucher
-msgid "eInvoicing & Payments"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "General"
+#: model:ir.module.module,summary:base.module_fleet
+msgid "Vehicle, leasing, insurances, costs"
msgstr ""
#. module: base
-#: model:res.country,name:base.uz
-msgid "Uzbekistan"
+#: model:res.country,name:base.ve
+msgid "Venezuela"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_act_window
-#: selection:ir.ui.menu,action:0
-msgid "ir.actions.act_window"
+#: model:ir.module.module,shortdesc:base.module_l10n_ve
+msgid "Venezuela - Accounting"
msgstr ""
#. module: base
-#: model:res.country,name:base.vi
-msgid "Virgin Islands (USA)"
+#: report:ir.module.reference:0
+msgid "Version"
msgstr ""
#. module: base
-#: model:res.country,name:base.tw
-msgid "Taiwan"
+#: model:res.country,name:base.vn
+msgid "Vietnam"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_currency_rate
-msgid "Currency Rate"
+#: model:ir.module.module,shortdesc:base.module_l10n_vn
+msgid "Vietnam Chart of Accounts"
msgstr ""
#. module: base
-#: view:base.module.upgrade:0
-#: field:base.module.upgrade,module_info:0
-msgid "Modules to Update"
+#: selection:base.language.install,lang:0
+msgid "Vietnamese / Tiếng Việt"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_custom_multicompany
-msgid "Multi-Companies"
+#: field:ir.actions.act_window.view,view_id:0
+#: field:ir.default,page:0
+#: selection:ir.translation,type:0
+#: view:ir.ui.view:base.view_view_search
+msgid "View"
msgstr ""
#. module: base
-#: field:workflow,osv:0
-#: view:workflow.instance:0
-#: field:workflow.instance,res_type:0
-msgid "Resource Object"
+#: report:ir.module.reference:0
+msgid "View :"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_crm_helpdesk
-msgid "Helpdesk"
+#: field:ir.ui.view,arch:0
+#: view:ir.ui.view.custom:base.view_view_custom_form
+#: field:ir.ui.view.custom,arch:0
+msgid "View Architecture"
msgstr ""
#. module: base
-#: field:ir.rule,perm_write:0
-msgid "Apply for Write"
+#: model:ir.module.module,shortdesc:base.module_web_view_editor
+msgid "View Editor"
msgstr ""
#. module: base
-#: field:ir.ui.menu,parent_left:0
-msgid "Parent Left"
+#: field:ir.actions.act_window,view_mode:0
+msgid "View Mode"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_document_page
-msgid "\n"
-"Pages\n"
-"=====\n"
-"Web pages\n"
-" "
+#: field:ir.ui.view,name:0
+msgid "View Name"
msgstr ""
#. module: base
-#: help:ir.actions.server,code:0
-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"
+#: field:ir.actions.act_window,view_id:0
+msgid "View Ref."
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.grant_menu_access
-msgid "Manage and customize the items available and displayed in your OpenERP system menu. You can delete an item by clicking on the box at the beginning of each line and then delete it through the button that appeared. Items can be assigned to specific groups in order to make them accessible to some users within the system."
+#: view:ir.actions.act_window:base.view_window_action_search
+#: field:ir.actions.act_window,view_type:0
+#: field:ir.actions.act_window.view,view_mode:0
+#: field:ir.ui.view,type:0
+msgid "View Type"
msgstr ""
#. module: base
-#: field:ir.ui.view,field_parent:0
-msgid "Child Field"
+#: field:ir.ui.view,mode:0
+msgid "View inheritance mode"
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "Detailed algorithm:"
+#: help:ir.actions.act_window,view_type:0
+msgid "View type: Tree type to use for the tree view, set to 'tree' for a hierarchical tree view, or 'form' for a regular list view"
msgstr ""
#. module: base
-#: field:ir.actions.act_url,usage:0
-#: field:ir.actions.act_window,usage:0
-#: field:ir.actions.act_window_close,usage:0
-#: field:ir.actions.actions,usage:0
-#: field:ir.actions.client,usage:0
-#: field:ir.actions.report.xml,usage:0
-#: field:ir.actions.server,usage:0
-#: field:ir.actions.wizard,usage:0
-msgid "Action Usage"
+#: view:ir.actions.act_window:base.view_window_action_form
+#: model:ir.actions.act_window,name:base.action_ui_view
+#: field:ir.actions.act_window,view_ids:0
+#: field:ir.actions.act_window,views:0
+#: view:ir.model:base.view_model_form
+#: field:ir.model,view_ids:0
+#: field:ir.module.module,views_by_module:0
+#: model:ir.ui.menu,name:base.menu_action_ui_view
+#: view:ir.ui.view:base.view_view_form
+#: view:ir.ui.view:base.view_view_search
+#: view:ir.ui.view:base.view_view_tree
+#: view:res.groups:base.view_groups_form
+#: field:res.groups,view_access:0
+msgid "Views"
msgstr ""
#. module: base
-#: field:ir.module.module,name:0
-msgid "Technical Name"
+#: model:ir.actions.act_window,help:base.action_ui_view
+msgid "Views allows you to personalize each view of Odoo. You can add new fields, move fields, rename them or delete the ones that you do not need."
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_workflow_workitem
-msgid "workflow.workitem"
+#: model:res.country,name:base.vg
+msgid "Virgin Islands (British)"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_tools
-msgid "Lets you install various interesting but non-essential tools like Survey, Lunch and Ideas box."
+#: model:res.country,name:base.vi
+msgid "Virgin Islands (USA)"
msgstr ""
#. module: base
-#: selection:ir.module.module,state:0
-msgid "Not Installable"
+#: field:ir.module.category,visible:0
+msgid "Visible"
msgstr ""
#. module: base
-#: help:res.lang,iso_code:0
-msgid "This ISO code is the name of po files to use for translations"
+#: model:ir.module.module,shortdesc:base.module_stock_account
+msgid "WMS Accounting"
msgstr ""
#. module: base
-#: report:ir.module.reference:0
-msgid "View :"
+#: model:ir.module.module,shortdesc:base.module_stock_landed_costs
+msgid "WMS Landed Costs"
msgstr ""
#. module: base
-#: field:ir.model.fields,view_load:0
-msgid "View Auto-Load"
+#: model:res.country,name:base.wf
+msgid "Wallis and Futuna Islands"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_et
-msgid "\n"
-"Base Module for Ethiopian Localization\n"
-"======================================\n"
-"\n"
-"This is the latest Ethiopian OpenERP localization and consists of:\n"
-" - Chart of Accounts\n"
-" - VAT tax structure\n"
-" - Withholding tax structure\n"
-" - Regional State listings\n"
-" "
+#: model:ir.module.category,name:base.module_category_warehouse_management
+msgid "Warehouse"
msgstr ""
#. module: base
-#: view:res.users:0
-msgid "Allowed Companies"
+#: model:ir.module.module,shortdesc:base.module_stock
+msgid "Warehouse Management"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_de
-msgid "Deutschland - Accounting"
+#: model:ir.module.module,shortdesc:base.module_stock_picking_wave
+msgid "Warehouse Management: Waves"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Day of the Year: %(doy)s"
+#: code:addons/base/ir/ir_actions.py:835
+#: code:addons/base/ir/ir_mail_server.py:490
+#: code:addons/base/ir/ir_sequence.py:260
+#: code:addons/base/res/res_partner.py:378
+#: code:addons/base/res/res_partner.py:550
+#: code:addons/base/res/res_partner.py:630
+#, python-format
+msgid "Warning"
msgstr ""
#. module: base
-#: field:ir.ui.menu,web_icon:0
-msgid "Web Icon File"
+#: model:ir.module.module,shortdesc:base.module_warning
+msgid "Warning Messages and Alerts"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_view_base_module_upgrade
-msgid "Apply Scheduled Upgrades"
+#: code:addons/base/ir/ir_sequence.py:134
+#: code:addons/base/ir/ir_sequence.py:160
+#: code:addons/base/res/res_config.py:469
+#: code:addons/base/res/res_users.py:505
+#, python-format
+msgid "Warning!"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_sale_journal
-msgid "Invoicing Journals"
+#: view:base.module.upgrade:base.view_base_module_upgrade_install
+msgid "We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)."
msgstr ""
#. module: base
-#: help:ir.ui.view,groups_id:0
-msgid "If this field is empty, the view applies to all users. Otherwise, the view applies to the users of those groups only."
+#: model:ir.module.module,shortdesc:base.module_web
+#: report:ir.module.reference:0
+msgid "Web"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Persian / فارس"
+#: model:ir.module.module,shortdesc:base.module_web_calendar
+msgid "Web Calendar"
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "Export Settings"
+#: model:ir.module.module,shortdesc:base.module_web_gantt
+msgid "Web Gantt"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,src_model:0
-msgid "Source Model"
+#: field:ir.ui.menu,web_icon:0
+msgid "Web Icon File"
msgstr ""
#. module: base
-#: view:ir.sequence:0
-msgid "Day of the Week (0:Monday): %(weekday)s"
+#: field:ir.ui.menu,web_icon_hover:0
+msgid "Web Icon File (hover)"
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_module_upgrade.py:84
-#, python-format
-msgid "Unmet dependency !"
+#: field:ir.ui.menu,web_icon_data:0
+msgid "Web Icon Image"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:502
-#: code:addons/base/ir/ir_model.py:563
-#: code:addons/base/ir/ir_model.py:1024
-#, python-format
-msgid "Administrator access is required to uninstall a module"
+#: field:ir.ui.menu,web_icon_hover_data:0
+msgid "Web Icon Image (hover)"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_base_module_configuration
-msgid "base.module.configuration"
+#: view:ir.translation:base.view_translation_search
+msgid "Web-only translations"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_point_of_sale
-msgid "\n"
-"Quick and Easy sale process\n"
-"===========================\n"
-"\n"
-"This module allows you to manage your shop sales very easily with a fully web based touchscreen interface.\n"
-"It is compatible with all PC tablets and the iPad, offering multiple payment methods. \n"
-"\n"
-"Product selection can be done in several ways: \n"
-"\n"
-"* Using a barcode reader\n"
-"* Browsing through categories of products or via a text search.\n"
-"\n"
-"Main Features\n"
-"-------------\n"
-"* Fast encoding of the sale\n"
-"* Choose one payment method (the quick way) or split the payment between several payment methods\n"
-"* Computation of the amount of money to return\n"
-"* Create and confirm the picking list automatically\n"
-"* Allows the user to create an invoice automatically\n"
-"* Refund previous sales\n"
-" "
+#: selection:ir.actions.report.xml,report_type:0
+msgid "Webkit (deprecated)"
msgstr ""
#. module: base
-#: code:addons/orm.py:3567
-#: code:addons/orm.py:3860
-#, python-format
-msgid "The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n"
-"\n"
-"(Document type: %s, Operation: %s)"
+#: model:ir.module.module,shortdesc:base.module_report_webkit
+msgid "Webkit Report Engine"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_idea
-msgid "\n"
-"This module allows user to easily and efficiently participate in enterprise innovation.\n"
-"=======================================================================================\n"
-"\n"
-"It allows everybody to express ideas about different subjects.\n"
-"Then, other users can comment on these ideas and vote for particular ideas.\n"
-"Each idea has a score based on the different votes.\n"
-"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."
+#: code:addons/base/res/res_company.py:166
+#: model:ir.module.category,name:base.module_category_website
+#: field:ir.module.module,website:0
+#: field:res.company,website:0
+#: field:res.partner,website:0
+#, python-format
+msgid "Website"
msgstr ""
#. module: base
-#: code:addons/orm.py:5321
-#, python-format
-msgid "%s This might be '%s' in the current model, or a field of the same name in an o2m."
+#: model:ir.module.module,shortdesc:base.module_website
+msgid "Website Builder"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_payment
-msgid "\n"
-"Module to manage the payment of your supplier invoices.\n"
-"=======================================================\n"
-"\n"
-"This module allows you to create and manage your payment orders, with purposes to\n"
-"--------------------------------------------------------------------------------- \n"
-" * serve as base for an easy plug-in of various automated payment mechanisms.\n"
-" * provide a more efficient way to manage invoice payment.\n"
-"\n"
-"Warning:\n"
-"~~~~~~~~\n"
-"The confirmation of a payment order does _not_ create accounting entries, it just \n"
-"records the fact that you gave your payment order to your bank. The booking of \n"
-"your order must be encoded as usual through a bank statement. Indeed, it's only \n"
-"when you get the confirmation from your bank that your order has been accepted \n"
-"that you can book it in your accounting. To help you with that operation, you \n"
-"have a new option to import payment orders as bank statement lines.\n"
-" "
+#: model:ir.module.module,summary:base.module_website_report
+msgid "Website Editor on reports"
msgstr ""
#. module: base
-#: field:ir.model,access_ids:0
-#: view:ir.model.access:0
-msgid "Access"
+#: model:ir.module.module,shortdesc:base.module_website_gengo
+msgid "Website Gengo Translator"
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:165
-#: field:res.partner,vat:0
-#, python-format
-msgid "TIN"
+#: model:ir.module.module,shortdesc:base.module_website_google_map
+msgid "Website Google Map"
msgstr ""
#. module: base
-#: model:res.country,name:base.aw
-msgid "Aruba"
+#: model:ir.module.module,shortdesc:base.module_website_instantclick
+msgid "Website Instantclick"
msgstr ""
#. module: base
-#: code:addons/base/module/wizard/base_module_import.py:58
-#, python-format
-msgid "File is not a zip file!"
+#: model:ir.module.module,shortdesc:base.module_website_livechat
+msgid "Website Live Support"
msgstr ""
#. module: base
-#: model:res.country,name:base.ar
-msgid "Argentina"
+#: model:ir.module.module,shortdesc:base.module_website_mail
+msgid "Website Mail"
msgstr ""
#. module: base
-#: field:res.groups,full_name:0
-msgid "Group Name"
+#: model:ir.module.module,summary:base.module_website_mail
+msgid "Website Module for Mail"
msgstr ""
#. module: base
-#: model:res.country,name:base.bh
-msgid "Bahrain"
+#: model:ir.module.module,shortdesc:base.module_website_partner
+msgid "Website Partner"
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:162
-#: field:res.bank,fax:0
-#: field:res.company,fax:0
-#: field:res.partner,fax:0
-#, python-format
-msgid "Fax"
+#: model:ir.module.module,shortdesc:base.module_website_report
+msgid "Website Report"
msgstr ""
#. module: base
-#: view:ir.attachment:0
-#: field:ir.attachment,company_id:0
-#: field:ir.default,company_id:0
-#: field:ir.property,company_id:0
-#: field:ir.sequence,company_id:0
-#: field:ir.values,company_id:0
-#: view:res.company:0
-#: field:res.currency,company_id:0
-#: view:res.partner:0
-#: field:res.partner,company_id:0
-#: field:res.partner.bank,company_id:0
-#: view:res.users:0
-#: field:res.users,company_id:0
-msgid "Company"
+#: help:res.partner,website:0
+msgid "Website of Partner or Company"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_report_designer
-msgid "Advanced Reporting"
+#: view:ir.sequence:base.sequence_view
+msgid "Week of the Year: %(woy)s"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_purchase
-msgid "Purchase Orders, Receptions, Supplier Invoices"
+#: selection:ir.cron,interval_type:0
+msgid "Weeks"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_hr_payroll
-msgid "\n"
-"Generic Payroll system.\n"
-"=======================\n"
-"\n"
-" * Employee Details\n"
-" * Employee Contracts\n"
-" * Passport based Contract\n"
-" * Allowances/Deductions\n"
-" * Allow to configure Basic/Gross/Net Salary\n"
-" * Employee Payslip\n"
-" * Monthly Payroll Register\n"
-" * Integrated with Holiday Management\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_hw_scale
+msgid "Weighting Scale Hardware Driver"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_model_data
-msgid "ir.model.data"
+#: model:res.country,name:base.eh
+msgid "Western Sahara"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Bulgarian / български език"
+#: help:ir.actions.server,sub_model_object_field:0
+msgid "When a relationship field is selected as first field, this field lets you select the target field within the destination document model (sub-model)."
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_aftersale
-msgid "After-Sale Services"
+#: help:ir.actions.server,sub_object:0
+msgid "When a relationship field is selected as first field, this field shows the document model the relationship goes to."
msgstr ""
#. module: base
-#: field:base.language.import,code:0
-msgid "ISO Code"
+#: view:workflow:base.view_workflow_diagram
+msgid "When customizing a workflow, be sure you do not modify an existing node or arrow, but rather add new nodes or arrows. If you absolutly need to modify a node or arrow, you can only change fields that are empty or set to the default value. If you don't do that, your customization will be overwrited at the next update or upgrade to a future version of Odoo."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_fr
-msgid "France - Accounting"
+#: help:ir.actions.server,sequence:0
+msgid "When dealing with multiple actions, the execution order is based on the sequence. Low number means high priority."
msgstr ""
#. module: base
-#: view:ir.actions.todo:0
-msgid "Launch"
+#: help:ir.mail_server,sequence:0
+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 ""
#. module: base
-#: selection:res.partner,type:0
-msgid "Shipping"
+#: help:workflow.transition,signal:0
+msgid "When the operation of transition comes from a button pressed in the client form, signal tests the name of the pressed button. If signal is NULL, no button is necessary to validate this transition."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_project_mrp
-msgid "\n"
-"Automatically creates project tasks from procurement lines.\n"
-"===========================================================\n"
-"\n"
-"This module will automatically create a new task for each procurement order line\n"
-"(e.g. for sale order lines), if the corresponding product meets the following\n"
-"characteristics:\n"
-"\n"
-" * Product Type = Service\n"
-" * Procurement Method (Order fulfillment) = MTO (Make to Order)\n"
-" * Supply/Procurement Method = Manufacture\n"
-"\n"
-"If on top of that a projet is specified on the product form (in the Procurement\n"
-"tab), then the new task will be created in that specific project. Otherwise, the\n"
-"new task will not belong to any project, and may be added to a project manually\n"
-"later.\n"
-"\n"
-"When the project task is completed or cancelled, the workflow of the corresponding\n"
-"procurement line is updated accordingly. For example, if this procurement corresponds\n"
-"to a sale order line, the sale order line will be considered delivered when the\n"
-"task is completed.\n"
-""
+#: help:ir.model.fields,translate:0
+msgid "Whether values for this field can be translated (enables the translation mechanism for that field)"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,limit:0
-msgid "Limit"
+#: model:res.partner.category,name:base.res_partner_category_15
+msgid "Wholesaler"
msgstr ""
#. module: base
-#: model:res.groups,name:base.group_hr_user
-msgid "Officer"
+#: model:ir.actions.act_window,name:base.ir_action_window
+#: model:ir.ui.menu,name:base.menu_ir_action_window
+msgid "Window Actions"
msgstr ""
#. module: base
-#: code:addons/orm.py:785
-#, python-format
-msgid "Serialization field `%s` not found for sparse field `%s`!"
+#: field:change.password.user,wizard_id:0
+msgid "Wizard"
msgstr ""
#. module: base
-#: model:res.country,name:base.jm
-msgid "Jamaica"
+#: selection:ir.translation,type:0
+msgid "Wizard Button"
msgstr ""
#. module: base
-#: field:res.partner,color:0
-msgid "Color Index"
+#: selection:ir.translation,type:0
+msgid "Wizard Field"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_partner_category_form
-msgid "Manage the partner categories in order to better classify them for tracking and analysis purposes. A partner may belong to several categories and categories have a hierarchy structure: a partner belonging to a category also belong to his parent category."
+#: selection:ir.translation,type:0
+msgid "Wizard View"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_survey
-msgid "\n"
-"This module is used for surveying.\n"
-"==================================\n"
-"\n"
-"It depends on the answers or reviews of some questions by different users. A\n"
-"survey may have multiple pages. Each page may contain multiple questions and each\n"
-"question may have multiple answers. Different users may give different answers of\n"
-"question and according to that survey is done. Partners are also sent mails with\n"
-"user name and password for the invitation of the survey.\n"
-" "
+#: view:ir.actions.todo:base.config_wizard_step_view_search
+msgid "Wizards to be Launched"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:164
-#, python-format
-msgid "Model '%s' contains module data and cannot be removed!"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Worflow Signal"
msgstr ""
#. module: base
-#: model:res.country,name:base.az
-msgid "Azerbaijan"
+#: selection:ir.cron,interval_type:0
+msgid "Work Days"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_mail_server.py:476
-#: code:addons/base/res/res_partner.py:439
-#, python-format
-msgid "Warning"
+#: view:workflow:base.view_workflow_form
+#: view:workflow:base.view_workflow_search
+#: view:workflow:base.view_workflow_tree
+#: view:workflow.activity:base.view_workflow_activity_search
+#: field:workflow.activity,wkf_id:0
+#: field:workflow.instance,wkf_id:0
+#: field:workflow.transition,wkf_id:0
+#: field:workflow.workitem,wkf_id:0
+msgid "Workflow"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_edi
-msgid "Electronic Data Interchange (EDI)"
+#: view:workflow.activity:base.view_workflow_activity_search
+msgid "Workflow Activity"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_account_anglo_saxon
-msgid "Anglo-Saxon Accounting"
+#: view:workflow:base.view_workflow_diagram
+msgid "Workflow Editor"
msgstr ""
#. module: base
-#: model:res.country,name:base.vg
-msgid "Virgin Islands (British)"
+#: view:workflow.instance:base.view_workflow_instance_form
+#: view:workflow.instance:base.view_workflow_instance_search
+#: view:workflow.instance:base.view_workflow_instance_tree
+msgid "Workflow Instances"
msgstr ""
#. module: base
-#: view:ir.property:0
-#: model:ir.ui.menu,name:base.menu_ir_property
-msgid "Parameters"
+#: view:workflow.transition:base.view_workflow_transition_search
+msgid "Workflow Transition"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Czech / Čeština"
+#: view:workflow.workitem:base.view_workflow_workitem_form
+#: view:workflow.workitem:base.view_workflow_workitem_search
+#: view:workflow.workitem:base.view_workflow_workitem_tree
+msgid "Workflow Workitems"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_generic_modules
-msgid "Generic Modules"
+#: model:ir.actions.act_window,name:base.action_workflow_form
+#: model:ir.ui.menu,name:base.menu_workflow
+#: model:ir.ui.menu,name:base.menu_workflow_root
+msgid "Workflows"
msgstr ""
#. module: base
-#: model:res.country,name:base.mk
-msgid "Macedonia, the former Yugoslav Republic of"
+#: field:workflow.triggers,workitem_id:0
+msgid "Workitem"
msgstr ""
#. module: base
-#: model:res.country,name:base.rw
-msgid "Rwanda"
+#: model:ir.actions.act_window,name:base.action_workflow_workitem_form
+#: model:ir.ui.menu,name:base.menu_workflow_workitem
+msgid "Workitems"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_auth_openid
-msgid "\n"
-"Allow users to login through OpenID.\n"
-"====================================\n"
-""
+#: view:ir.model.access:base.ir_access_view_search
+#: field:ir.model.access,perm_write:0
+msgid "Write Access"
msgstr ""
#. module: base
-#: help:ir.mail_server,smtp_port:0
-msgid "SMTP Port. Usually 465 for SSL, and 25 or 587 for other cases."
+#: view:ir.rule:base.view_rule_search
+msgid "Write Access Right"
msgstr ""
#. module: base
-#: model:res.country,name:base.ck
-msgid "Cook Islands"
+#: help:ir.actions.server,code:0
+msgid "Write Python code that the action will execute. Some variables are available for use; help about pyhon expression is given in the help tab."
msgstr ""
#. module: base
-#: field:ir.model.data,noupdate:0
-msgid "Non Updatable"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "Write a python expression, beginning with object, that gives the record to update. An expression builder is available in the help tab. Examples:"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Klingon"
+#: field:ir.actions.report.xml,report_xml:0
+msgid "XML Path"
msgstr ""
#. module: base
-#: model:res.country,name:base.sg
-msgid "Singapore"
+#: view:ir.actions.report.xml:base.act_report_xml_view
+msgid "XML Report"
msgstr ""
#. module: base
-#: selection:ir.actions.act_window,target:0
-msgid "Current Window"
+#: selection:ir.translation,type:0
+msgid "XSL"
msgstr ""
#. module: base
-#: model:ir.module.category,name:base.module_category_hidden
-#: view:res.users:0
-msgid "Technical Settings"
+#: field:ir.actions.report.xml,report_xsl:0
+msgid "XSL Path"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_accounting_and_finance
-msgid "Helps you handle your accounting needs, if you are not an accountant, we suggest you to install only the Invoicing."
+#: selection:workflow.activity,join_mode:0
+#: selection:workflow.activity,split_mode:0
+msgid "Xor"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_plugin_thunderbird
-msgid "Thunderbird Plug-In"
+#: model:res.country,name:base.ye
+msgid "Yemen"
msgstr ""
#. module: base
-#: model:ir.module.module,summary:base.module_event
-msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations"
+#: view:res.users:base.view_users_simple_form
+msgid "You are creating a new user. After saving, the user will receive an invite email containing a link to set its password."
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_country
-#: field:res.bank,country:0
-#: field:res.company,country_id:0
-#: view:res.country:0
-#: field:res.country.state,country_id:0
-#: field:res.partner,country:0
-#: field:res.partner,country_id:0
-#: field:res.partner.bank,country_id:0
-msgid "Country"
+#: code:addons/base/res/res_partner.py:550
+#, python-format
+msgid "You can not change the company as the partner/user has multiple user linked with different companies."
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_15
-msgid "Wholesaler"
+#: sql_constraint:res.users:0
+msgid "You can not have two users with the same login !"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_base_vat
-msgid "VAT Number Validation"
+#: sql_constraint:res.font:0
+msgid "You can not register two fonts with the same name"
msgstr ""
#. module: base
-#: field:ir.model.fields,complete_name:0
-msgid "Complete Name"
+#: code:addons/base/res/res_users.py:342
+#, python-format
+msgid "You can not remove the admin user as it is used internally for resources created by Odoo (updates, module installation, ...)"
msgstr ""
#. module: base
-#: help:ir.actions.wizard,multi:0
-msgid "If set to true, the wizard will not be displayed on the right toolbar of a form view."
+#: help:res.country,address_format:0
+msgid "You can state here the usual format to use for the addresses belonging to this country.\n"
+"\n"
+"You can use the python-style string patern with all the field of the address (for example, use '%(street)s' to display the field 'street') plus\n"
+" \n"
+"%(state_name)s: the name of the state\n"
+" \n"
+"%(state_code)s: the code of the state\n"
+" \n"
+"%(country_name)s: the name of the country\n"
+" \n"
+"%(country_code)s: the code of the country"
msgstr ""
#. module: base
-#: view:ir.values:0
-msgid "Action Bindings/Defaults"
+#: constraint:res.partner:0
+msgid "You cannot create recursive Partner hierarchies."
msgstr ""
#. module: base
-#: view:base.language.export:0
-msgid "file encoding, please be sure to view and edit\n"
-" using the same encoding."
+#: code:addons/base/res/res_lang.py:193
+#, python-format
+msgid "You cannot delete the language which is Active!\n"
+"Please de-activate the language first."
msgstr ""
#. module: base
-#: view:ir.rule:0
-msgid "1. Global rules are combined together with a logical AND operator, and with the result of the following steps"
+#: code:addons/base/res/res_lang.py:191
+#, python-format
+msgid "You cannot delete the language which is User's Preferred Language!"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_nl
-msgid "Netherlands - Accounting"
+#: sql_constraint:ir.model.data:0
+msgid "You cannot have multiple records with the same external ID in the same module!"
msgstr ""
#. module: base
-#: model:res.country,name:base.gs
-msgid "South Georgia and the South Sandwich Islands"
+#: code:addons/base/module/module.py:396
+#, python-format
+msgid "You try to install module '%s' that depends on module '%s'.\n"
+"But the latter module is not available in your system."
msgstr ""
#. module: base
-#: view:res.lang:0
-msgid "%X - Appropriate time representation."
+#: code:addons/base/module/module.py:339
+#, python-format
+msgid "You try to remove a module that is installed or will be installed"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Spanish (SV) / Español (SV)"
+#: code:addons/base/module/module.py:562
+#, python-format
+msgid "You try to upgrade a module that depends on the module: %s.\n"
+"But this module is not available in your system."
msgstr ""
#. module: base
-#: help:res.lang,grouping:0
-msgid "The Separator Format should be like [,n] where 0 < n :starting from Unit digit.-1 will end the separation. e.g. [3,2,-1] will represent 106500 to be 1,06,500;[1,2,-1] will represent it to be 106,50,0;[3] will represent it as 106,500. Provided ',' as the thousand separator in each case."
+#: view:res.users:base.view_users_simple_form
+msgid "You will be able to define additional access rights by editing the newly created user under the Settings / Users menu."
msgstr ""
#. module: base
-#: field:ir.module.module,auto_install:0
-msgid "Automatic Installation"
+#: code:addons/base/ir/ir_mail_server.py:243
+#, python-format
+msgid "Your OpenERP Server does not support SMTP-over-SSL. You could use STARTTLS instead.If SSL is needed, an upgrade to Python 2.6 on the server-side should do the trick."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_l10n_hn
-msgid "\n"
-"This is the base module to manage the accounting chart for Honduras.\n"
-"====================================================================\n"
-" \n"
-"Agrega una nomenclatura contable para Honduras. También incluye impuestos y la\n"
-"moneda Lempira. -- Adds accounting chart for Honduras. It also includes taxes\n"
-"and the Lempira currency."
+#: code:addons/base/ir/ir_mail_server.py:491
+#, python-format
+msgid "Your server does not seem to support SSL, you may want to try STARTTLS instead"
msgstr ""
#. module: base
-#: model:res.country,name:base.jp
-msgid "Japan"
+#: model:res.country,name:base.yu
+msgid "Yugoslavia"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_model.py:412
-#, python-format
-msgid "Can only rename one column at a time!"
+#: view:res.bank:base.view_res_bank_form
+#: view:res.company:base.view_company_form
+#: view:res.partner:base.view_partner_form
+#: view:res.partner.bank:base.view_partner_bank_form
+msgid "ZIP"
msgstr ""
#. module: base
-#: selection:ir.translation,type:0
-msgid "Report/Template"
+#: model:res.country,name:base.zr
+msgid "Zaire"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_budget
-msgid "\n"
-"This module allows accountants to manage analytic and crossovered budgets.\n"
-"==========================================================================\n"
-"\n"
-"Once the Budgets are defined (in Invoicing/Budgets/Budgets), the Project Managers \n"
-"can set the planned amount on each Analytic Account.\n"
-"\n"
-"The accountant has the possibility to see the total of amount planned for each\n"
-"Budget in order to ensure the total planned is not greater/lower than what he \n"
-"planned for this Budget. Each list of record can also be switched to a graphical \n"
-"view of it.\n"
-"\n"
-"Three reports are available:\n"
-"----------------------------\n"
-" 1. The first is available from a list of Budgets. It gives the spreading, for \n"
-" these Budgets, of the Analytic Accounts.\n"
-"\n"
-" 2. The second is a summary of the previous one, it only gives the spreading, \n"
-" for the selected Budgets, of the Analytic Accounts.\n"
-"\n"
-" 3. The last one is available from the Analytic Chart of Accounts. It gives \n"
-" the spreading, for the selected Analytic Accounts of Budgets.\n"
-""
+#: model:res.country,name:base.zm
+msgid "Zambia"
msgstr ""
#. module: base
-#: selection:ir.actions.act_window.view,view_mode:0
-#: selection:ir.ui.view,type:0
-msgid "Graph"
+#: model:res.country,name:base.zw
+msgid "Zimbabwe"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_ir_actions_server
-#: selection:ir.ui.menu,action:0
-msgid "ir.actions.server"
+#: field:res.bank,zip:0
+#: field:res.company,zip:0
+#: field:res.partner,zip:0
+#: field:res.partner.bank,zip:0
+msgid "Zip"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_ca
-msgid "Canada - Accounting"
+#: view:base.language.import:base.view_base_import_language
+msgid "_Import"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_co
-msgid "Colombian - Accounting"
+#: sql_constraint:ir.sequence.type:0
+msgid "`code` must be unique."
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_account_voucher
-msgid "\n"
-"Invoicing & Payments by Accounting Voucher & Receipts\n"
-"=====================================================\n"
-"The specific and easy-to-use Invoicing system in OpenERP allows you to keep track of your accounting, even when you are not an accountant. It provides an easy way to follow up on your suppliers and customers. \n"
-"\n"
-"You could use this simplified accounting in case you work with an (external) account to keep your books, and you still want to keep track of payments. \n"
-"\n"
-"The Invoicing system includes receipts and vouchers (an easy way to keep track of sales and purchases). It also offers you an easy method of registering payments, without having to encode complete abstracts of account.\n"
-"\n"
-"This module manages:\n"
-"\n"
-"* Voucher Entry\n"
-"* Voucher Receipt [Sales & Purchase]\n"
-"* Voucher Payment [Customer & Supplier]\n"
-" "
+#: model:res.partner.bank.type.field,name:base.bank_normal_field_bic
+msgid "bank_bic"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.act_ir_actions_todo_form
-#: model:ir.model,name:base.model_ir_actions_todo
-#: model:ir.ui.menu,name:base.menu_ir_actions_todo
-#: model:ir.ui.menu,name:base.menu_ir_actions_todo_form
-msgid "Configuration Wizards"
+#: selection:base.language.export,state:0
+msgid "choose"
msgstr ""
#. module: base
-#: field:res.lang,code:0
-msgid "Locale Code"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "condition: True"
msgstr ""
#. module: base
-#: field:workflow.activity,split_mode:0
-msgid "Split Mode"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "condition: object.list_price > 5000"
msgstr ""
#. module: base
-#: view:base.module.upgrade:0
-msgid "Note that this operation might take a few minutes."
+#: view:ir.actions.server:base.view_server_action_form
+msgid "context: current context"
msgstr ""
#. module: base
-#: code:addons/base/ir/ir_fields.py:363
-#, python-format
-msgid "Ambiguous specification for field '%(field)s', only provide one of name, external id or database id"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "cr: database cursor"
msgstr ""
#. module: base
-#: field:ir.sequence,implementation:0
-msgid "Implementation"
+#: code:addons/base/ir/ir_fields.py:313
+#, python-format
+msgid "database id"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_ve
-msgid "Venezuela - Accounting"
+#: view:base.language.export:base.wizard_lang_export
+msgid "documentation"
msgstr ""
#. module: base
-#: model:res.country,name:base.cl
-msgid "Chile"
+#: selection:base.language.install,state:0
+#: selection:base.module.update,state:0
+msgid "done"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_web_view_editor
-msgid "View Editor"
+#: view:res.users:base.view_users_simple_form
+msgid "e.g. +32.479.19.28.37"
msgstr ""
#. module: base
-#: view:ir.cron:0
-msgid "Execution"
+#: view:res.partner:base.view_partner_form
+#: view:res.users:base.view_users_simple_form
+msgid "e.g. +32.81.81.37.00"
msgstr ""
#. module: base
-#: field:ir.actions.server,condition:0
-#: view:ir.values:0
-#: field:workflow.transition,condition:0
-msgid "Condition"
+#: view:res.users:base.view_users_simple_form
+msgid "e.g. +32.81.81.37.10"
msgstr ""
#. module: base
-#: model:ir.actions.client,name:base.modules_updates_act_cl
-#: model:ir.ui.menu,name:base.menu_module_updates
-msgid "Updates"
+#: view:base.language.import:base.view_base_import_language
+msgid "e.g. English"
msgstr ""
#. module: base
-#: help:res.currency,rate:0
-msgid "The rate of the currency to the currency of rate 1."
+#: view:res.partner.bank:base.view_partner_bank_form
+msgid "e.g. GEBABEBB"
msgstr ""
#. module: base
-#: field:ir.ui.view,name:0
-msgid "View Name"
+#: view:res.company:base.view_company_form
+msgid "e.g. Global Business Solutions"
msgstr ""
#. module: base
-#: model:ir.model,name:base.model_res_groups
-msgid "Access Groups"
+#: view:res.partner:base.view_partner_form
+#: view:res.partner:base.view_partner_simple_form
+msgid "e.g. Sales Director"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Italian / Italiano"
+#: view:base.language.import:base.view_base_import_language
+msgid "e.g. en_US"
msgstr ""
#. module: base
-#: view:ir.actions.server:0
-msgid "Only one client action will be executed, last client action will be considered in case of multiple client actions."
+#: view:res.company:base.view_company_form
+#: view:res.partner:base.view_partner_form
+msgid "e.g. www.odoo.com"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_mrp_jit
-msgid "\n"
-"This module allows Just In Time computation of procurement orders.\n"
-"==================================================================\n"
-"\n"
-"If you install this module, you will not have to run the regular procurement\n"
-"scheduler anymore (but you still need to run the minimum order point rule\n"
-"scheduler, or for example let it run daily).\n"
-"All procurement orders will be processed immediately, which could in some\n"
-"cases entail a small performance impact.\n"
-"\n"
-"It may also increase your stock size because products are reserved as soon\n"
-"as possible and the scheduler time range is not taken into account anymore.\n"
-"In that case, you can not use priorities any more on the different picking.\n"
-" "
+#: model:ir.module.module,shortdesc:base.module_website_sale
+msgid "eCommerce"
msgstr ""
#. module: base
-#: model:res.country,name:base.hr
-msgid "Croatia"
+#: model:ir.module.module,shortdesc:base.module_website_sale_delivery
+msgid "eCommerce Delivery"
msgstr ""
#. module: base
-#: view:ir.module.module:0
-msgid "Do you confirm the uninstallation of this module? This will permanently erase all data currently stored by the module!"
+#: model:ir.module.module,shortdesc:base.module_website_sale_options
+msgid "eCommerce Optional Products"
msgstr ""
#. module: base
-#: field:ir.actions.server,mobile:0
-msgid "Mobile No"
+#: model:ir.module.module,shortdesc:base.module_account
+msgid "eInvoicing"
msgstr ""
#. module: base
-#: model:ir.actions.act_window,name:base.action_partner_by_category
-#: model:ir.actions.act_window,name:base.action_partner_category_form
-#: model:ir.model,name:base.model_res_partner_category
-#: view:res.partner.category:0
-msgid "Partner Categories"
+#: model:ir.module.module,shortdesc:base.module_account_voucher
+msgid "eInvoicing & Payments"
msgstr ""
#. module: base
-#: view:base.module.upgrade:0
-msgid "System Update"
+#: view:res.users:base.view_users_simple_form
+msgid "email@yourcompany.com"
msgstr ""
#. module: base
-#: field:ir.actions.report.xml,report_sxw_content:0
-#: field:ir.actions.report.xml,report_sxw_content_data:0
-msgid "SXW Content"
+#: code:addons/base/ir/ir_fields.py:326
+#, python-format
+msgid "external id"
msgstr ""
#. module: base
-#: field:ir.attachment,file_size:0
-msgid "File Size"
+#: code:addons/base/ir/ir_fields.py:155
+#, python-format
+msgid "false"
msgstr ""
#. module: base
-#: help:ir.sequence,prefix:0
-msgid "Prefix value of the record for the sequence"
+#: view:base.language.export:base.wizard_lang_export
+msgid "file encoding, please be sure to view and edit\n"
+" using the same encoding."
msgstr ""
#. module: base
-#: model:res.country,name:base.sc
-msgid "Seychelles"
+#: selection:base.language.export,state:0
+msgid "get"
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_4
-msgid "Gold"
+#: selection:base.language.install,state:0
+#: selection:base.module.update,state:0
+msgid "init"
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:173
-#: model:ir.actions.act_window,name:base.action_res_partner_bank_account_form
-#: model:ir.model,name:base.model_res_partner_bank
-#: model:ir.ui.menu,name:base.menu_action_res_partner_bank_form
-#: view:res.company:0
-#: field:res.company,bank_ids:0
-#: view:res.partner.bank:0
-#, python-format
-msgid "Bank Accounts"
+#: selection:ir.ui.menu,action:0
+msgid "ir.actions.act_url"
msgstr ""
#. module: base
-#: model:res.country,name:base.sl
-msgid "Sierra Leone"
+#: selection:ir.ui.menu,action:0
+msgid "ir.actions.act_window"
msgstr ""
#. module: base
-#: view:res.company:0
-msgid "General Information"
+#: selection:ir.ui.menu,action:0
+msgid "ir.actions.client"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_l10n_pt
-msgid "Portugal - Chart of Accounts"
+#: selection:ir.ui.menu,action:0
+msgid "ir.actions.report.xml"
msgstr ""
#. module: base
-#: field:ir.model.data,complete_name:0
-msgid "Complete ID"
+#: selection:ir.ui.menu,action:0
+msgid "ir.actions.server"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_stock
-msgid "\n"
-"Manage multi-warehouses, multi- and structured stock locations\n"
-"==============================================================\n"
-"\n"
-"The warehouse and inventory management is based on a hierarchical location structure, from warehouses to storage bins. \n"
-"The double entry inventory system allows you to manage customers, suppliers as well as manufacturing inventories. \n"
-"\n"
-"OpenERP has the capacity to manage lots and serial numbers ensuring compliance with the traceability requirements imposed by the majority of industries.\n"
-"\n"
-"Key Features\n"
-"------------\n"
-"* Moves history and planning,\n"
-"* Stock valuation (standard or average price, ...)\n"
-"* Robustness faced with Inventory differences\n"
-"* Automatic reordering rules\n"
-"* Support for barcodes\n"
-"* Rapid detection of mistakes through double entry system\n"
-"* Traceability (Upstream / Downstream, Serial numbers, ...)\n"
-"\n"
-"Dashboard / Reports for Warehouse Management will include:\n"
-"----------------------------------------------------------\n"
-"* Incoming Products (Graph)\n"
-"* Outgoing Products (Graph)\n"
-"* Procurement in Exception\n"
-"* Inventory Analysis\n"
-"* Last Product Inventories\n"
-"* Moves Analysis\n"
-" "
+#: selection:ir.ui.menu,action:0
+msgid "ir.actions.wizard"
msgstr ""
#. module: base
-#: help:res.partner,vat:0
-msgid "Tax Identification Number. Check the box if this contact is subjected to taxes. Used by the some of the legal statements."
+#: model:res.partner.title,shortcut:base.res_partner_title_ltd
+msgid "ltd"
msgstr ""
#. module: base
-#: field:res.partner.bank,partner_id:0
-msgid "Account Owner"
+#: code:addons/base/ir/ir_ui_view.py:367
+#, python-format
+msgid "n/a"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_procurement
-msgid "\n"
-"This is the module for computing Procurements.\n"
-"==============================================\n"
-"\n"
-"In the MRP process, procurements orders are created to launch manufacturing\n"
-"orders, purchase orders, stock allocations. Procurement orders are\n"
-"generated automatically by the system and unless there is a problem, the\n"
-"user will not be notified. In case of problems, the system will raise some\n"
-"procurement exceptions to inform the user about blocking problems that need\n"
-"to be resolved manually (like, missing BoM structure or missing supplier).\n"
-"\n"
-"The procurement order will schedule a proposal for automatic procurement\n"
-"for the product which needs replenishment. This procurement will start a\n"
-"task, either a purchase order form for the supplier, or a production order\n"
-"depending on the product's configuration.\n"
-" "
+#: code:addons/base/ir/ir_fields.py:337
+#, python-format
+msgid "name"
msgstr ""
#. module: base
-#: model:ir.ui.menu,name:base.menu_module_tree
-msgid "Installed Modules"
+#: code:addons/base/ir/ir_fields.py:155
+#, python-format
+msgid "no"
msgstr ""
#. module: base
-#: code:addons/base/res/res_users.py:170
-#, python-format
-msgid "Company Switch Warning"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "object or obj: browse_record of the record on which the action is triggered"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_manufacturing
-msgid "Helps you manage your manufacturing processes and generate reports on those processes."
+#: view:ir.actions.server:base.view_server_action_form
+msgid "object.partner_id"
msgstr ""
#. module: base
-#: help:ir.sequence,number_increment:0
-msgid "The next number of the sequence will be incremented by this number"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "object.partner_id.currency_id"
msgstr ""
#. module: base
-#: selection:workflow.activity,kind:0
-msgid "Function"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "partner_name = obj.name + '_code'\n"
+" self.pool[\"res.partner\"].create(cr, uid, {\"name\": partner_name}, context=context)"
msgstr ""
#. module: base
-#: field:ir.ui.menu,parent_right:0
-msgid "Parent Right"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "pool: ORM model pool (i.e. self.pool)"
msgstr ""
#. module: base
-#: model:ir.module.category,description:base.module_category_customer_relationship_management
-msgid "Manage relations with prospects and customers using leads, opportunities, requests or issues."
+#: view:res.config:base.res_config_view_base
+msgid "res_config_contents"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_project
-msgid "\n"
-"Track multi-level projects, tasks, work done on tasks\n"
-"=====================================================\n"
-"\n"
-"This application allows an operational project management system to organize your activities into tasks and plan the work you need to get the tasks completed.\n"
-"\n"
-"Gantt diagrams will give you a graphical representation of your project plans, as well as resources availability and workload.\n"
-"\n"
-"Dashboard / Reports for Project Management will include:\n"
-"--------------------------------------------------------\n"
-"* My Tasks\n"
-"* Open Tasks\n"
-"* Tasks Analysis\n"
-"* Cumulative Flow\n"
-" "
+#: view:ir.actions.server:base.view_server_action_form
+msgid "self: ORM model of the record on which the action is triggered"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Internal Notes"
+#: model:ir.module.module,shortdesc:base.module_test_access_rights
+msgid "test of access rights and rules"
msgstr ""
#. module: base
-#: model:res.partner.title,name:base.res_partner_title_pvt_ltd
-#: model:res.partner.title,shortcut:base.res_partner_title_pvt_ltd
-msgid "Corp."
+#: model:ir.module.module,shortdesc:base.module_test_exceptions
+msgid "test-exceptions"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_purchase_requisition
-msgid "Purchase Requisitions"
+#: model:ir.module.module,shortdesc:base.module_test_converter
+msgid "test-field-converter"
msgstr ""
#. module: base
-#: selection:ir.actions.act_window,target:0
-msgid "Inline Edit"
+#: model:ir.module.module,shortdesc:base.module_test_impex
+msgid "test-import-export"
msgstr ""
#. module: base
-#: selection:ir.cron,interval_type:0
-msgid "Months"
+#: model:ir.module.module,shortdesc:base.module_test_inherit
+msgid "test-inherit"
msgstr ""
#. module: base
-#: view:workflow.instance:0
-msgid "Workflow Instances"
+#: model:ir.module.module,shortdesc:base.module_test_limits
+msgid "test-limits"
msgstr ""
#. module: base
-#: code:addons/base/res/res_partner.py:532
-#, python-format
-msgid "Partners: "
+#: model:ir.module.module,shortdesc:base.module_test_uninstall
+msgid "test-uninstall"
msgstr ""
#. module: base
-#: view:res.partner:0
-msgid "Is a Company?"
+#: model:ir.module.module,shortdesc:base.module_test_workflow
+msgid "test-workflow"
msgstr ""
#. module: base
-#: code:addons/base/res/res_company.py:173
-#: field:res.partner.bank,name:0
-#, python-format
-msgid "Bank Account"
+#: model:ir.module.module,shortdesc:base.module_test_convert
+msgid "test_convert"
msgstr ""
#. module: base
-#: model:res.country,name:base.kp
-msgid "North Korea"
+#: model:res.groups,comment:base.group_hr_user
+msgid "the user will be able to approve document created by employees."
msgstr ""
#. module: base
-#: selection:ir.actions.server,state:0
-msgid "Create Object"
+#: model:res.groups,comment:base.group_user
+msgid "the user will be able to manage his own human resources stuff (leave request, timesheets, ...), if he is linked to an employee in the system."
msgstr ""
#. module: base
-#: model:res.country,name:base.ss
-msgid "South Sudan"
+#: model:res.groups,comment:base.group_sale_salesman_all_leads
+msgid "the user will have access to all records of everyone in the sales application."
msgstr ""
#. module: base
-#: field:ir.filters,context:0
-msgid "Context"
+#: model:res.groups,comment:base.group_sale_salesman
+msgid "the user will have access to his own data in the sales application."
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_sale_mrp
-msgid "Sales and MRP Management"
+#: model:res.groups,comment:base.group_hr_manager
+msgid "the user will have an access to the human resources configuration as well as statistic reports."
msgstr ""
#. module: base
-#: model:ir.actions.act_window,help:base.action_partner_form
-msgid "<p class=\"oe_view_nocontent_create\">\n"
-" Click to add a contact in your address book.\n"
-" </p><p>\n"
-" OpenERP helps you easily track all activities related to\n"
-" a customer; discussions, history of business opportunities,\n"
-" documents, etc.\n"
-" </p>\n"
-" "
+#: model:res.groups,comment:base.group_sale_manager
+msgid "the user will have an access to the sales configuration as well as statistic reports."
msgstr ""
#. module: base
-#: model:res.partner.category,name:base.res_partner_category_2
-msgid "Prospect"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "time: Python time module"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_stock_invoice_directly
-msgid "Invoice Picking Directly"
+#: view:res.config.installer:base.res_config_installer
+msgid "title"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Polish / Język polski"
+#: code:addons/base/ir/ir_fields.py:155
+#, python-format
+msgid "true"
msgstr ""
#. module: base
-#: field:ir.exports,name:0
-msgid "Export Name"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "uid: current user id"
msgstr ""
#. module: base
-#: help:res.partner,type:0
-msgid "Used to select automatically the right address according to the context in sales and purchases documents."
+#: code:addons/fields.py:161
+#, python-format
+msgid "undefined get method !"
msgstr ""
#. module: base
-#: model:ir.module.module,description:base.module_purchase_analytic_plans
-msgid "\n"
-"The base module to manage analytic distribution and purchase orders.\n"
-"====================================================================\n"
-"\n"
-"Allows the user to maintain several analysis plans. These let you split a line\n"
-"on a supplier purchase order into several accounts and analytic plans.\n"
-" "
+#: field:base.language.export,state:0
+#: field:ir.ui.menu,icon_pict:0
+#: field:ir.ui.view,model_ids:0
+#: field:res.partner,has_image:0
+#: field:workflow.instance,transition_ids:0
+msgid "unknown"
msgstr ""
#. module: base
-#: model:res.country,name:base.lk
-msgid "Sri Lanka"
+#: view:ir.actions.server:base.view_server_action_form
+msgid "workflow: Workflow engine"
msgstr ""
#. module: base
-#: field:ir.actions.act_window,search_view:0
-msgid "Search View"
+#: code:addons/base/ir/ir_fields.py:155
+#, python-format
+msgid "yes"
msgstr ""
#. module: base
-#: selection:base.language.install,lang:0
-msgid "Russian / русский язык"
+#: model:res.country,name:base.ax
+msgid "Åland Islands"
msgstr ""
#. module: base
-#: model:ir.module.module,shortdesc:base.module_auth_signup
-msgid "Signup"
+#: model:ir.module.module,shortdesc:base.module_l10n_cn
+msgid "中国会计科目表"
msgstr ""
diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py
index 69c044d160e..4eb9027556b 100644
--- a/openerp/addons/base/ir/ir_actions.py
+++ b/openerp/addons/base/ir/ir_actions.py
@@ -740,26 +740,30 @@ class ir_actions_server(osv.osv):
def on_change_write_expression(self, cr, uid, ids, write_expression, model_id, context=None):
""" Check the write_expression and update crud_model_id accordingly """
values = {}
- valid, model_name, message = self._check_expression(cr, uid, write_expression, model_id, context=context)
- if valid:
+ if write_expression:
+ valid, model_name, message = self._check_expression(cr, uid, write_expression, model_id, context=context)
+ else:
+ valid, model_name, message = True, None, False
+ if model_id:
+ model_name = self.pool['ir.model'].browse(cr, uid, model_id, context).model
+ if not valid:
+ return {
+ 'warning': {
+ 'title': 'Incorrect expression',
+ 'message': message or 'Invalid expression',
+ }
+ }
+ if model_name:
ref_model_id = self.pool['ir.model'].search(cr, uid, [('model', '=', model_name)], context=context)[0]
values['crud_model_id'] = ref_model_id
return {'value': values}
- if not message:
- message = 'Invalid expression'
- return {
- 'warning': {
- 'title': 'Incorrect expression',
- 'message': message,
- }
- }
+ return {'value': {}}
def on_change_crud_model_id(self, cr, uid, ids, crud_model_id, context=None):
""" When changing the CRUD model, update its stored name also """
crud_model_name = False
if crud_model_id:
crud_model_name = self.pool.get('ir.model').browse(cr, uid, crud_model_id, context).model
-
values = {'link_field_id': False, 'crud_model_name': crud_model_name}
return {'value': values}
@@ -888,11 +892,7 @@ class ir_actions_server(osv.osv):
"""
res = {}
for exp in action.fields_lines:
- if exp.type == 'equation':
- expr = eval(exp.value, eval_context)
- else:
- expr = exp.value
- res[exp.col1.name] = expr
+ res[exp.col1.name] = exp.eval_value(eval_context=eval_context)[exp.id]
if action.use_write == 'current':
model = action.model_id.model
@@ -925,11 +925,7 @@ class ir_actions_server(osv.osv):
"""
res = {}
for exp in action.fields_lines:
- if exp.type == 'equation':
- expr = eval(exp.value, eval_context)
- else:
- expr = exp.value
- res[exp.col1.name] = expr
+ res[exp.col1.name] = exp.eval_value(eval_context=eval_context)[exp.id]
if action.use_create in ['new', 'copy_current']:
model = action.model_id.model
@@ -1032,7 +1028,9 @@ class ir_actions_server(osv.osv):
class ir_server_object_lines(osv.osv):
_name = 'ir.server.object.lines'
+ _description = 'Server Action value mapping'
_sequence = 'ir_actions_id_seq'
+
_columns = {
'server_id': fields.many2one('ir.actions.server', 'Related Server Action'),
'col1': fields.many2one('ir.model.fields', 'Field', required=True),
@@ -1045,10 +1043,25 @@ class ir_server_object_lines(osv.osv):
('equation', 'Python expression')
], 'Evaluation Type', required=True, change_default=True),
}
+
_defaults = {
'type': 'value',
}
+ def eval_value(self, cr, uid, ids, eval_context=None, context=None):
+ res = dict.fromkeys(ids, False)
+ for line in self.browse(cr, uid, ids, context=context):
+ expr = line.value
+ if line.type == 'equation':
+ expr = eval(line.value, eval_context)
+ elif line.col1.ttype in ['many2one', 'integer']:
+ try:
+ expr = int(line.value)
+ except Exception:
+ pass
+ res[line.id] = expr
+ return res
+
TODO_STATES = [('open', 'To Do'),
('done', 'Done')]
diff --git a/openerp/addons/base/ir/ir_cron.py b/openerp/addons/base/ir/ir_cron.py
index 60790c8fdc6..b16ac822f51 100644
--- a/openerp/addons/base/ir/ir_cron.py
+++ b/openerp/addons/base/ir/ir_cron.py
@@ -24,6 +24,7 @@ import time
import psycopg2
from datetime import datetime
from dateutil.relativedelta import relativedelta
+import pytz
import openerp
from openerp import SUPERUSER_ID, netsvc, api
@@ -149,18 +150,18 @@ class ir_cron(osv.osv):
except Exception, e:
self._handle_callback_exception(cr, uid, model_name, method_name, args, job_id, e)
- def _process_job(self, cr, job, cron_cr):
+ def _process_job(self, job_cr, job, cron_cr):
""" Run a given job taking care of the repetition.
- :param cr: cursor to use to execute the job, safe to commit/rollback
+ :param job_cr: cursor to use to execute the job, safe to commit/rollback
:param job: job to be run (as a dictionary).
:param cron_cr: cursor holding lock on the cron job row, to use to update the next exec date,
must not be committed/rolled back!
"""
try:
with api.Environment.manage():
- now = datetime.now()
- nextcall = datetime.strptime(job['nextcall'], DEFAULT_SERVER_DATETIME_FORMAT)
+ now = fields.datetime.context_timestamp(job_cr, job['user_id'], datetime.now())
+ nextcall = fields.datetime.context_timestamp(job_cr, job['user_id'], datetime.strptime(job['nextcall'], DEFAULT_SERVER_DATETIME_FORMAT))
numbercall = job['numbercall']
ok = False
@@ -168,7 +169,7 @@ class ir_cron(osv.osv):
if numbercall > 0:
numbercall -= 1
if not ok or job['doall']:
- self._callback(cr, job['user_id'], job['model'], job['function'], job['args'], job['id'])
+ self._callback(job_cr, job['user_id'], job['model'], job['function'], job['args'], job['id'])
if numbercall:
nextcall += _intervalTypes[job['interval_type']](job['interval_number'])
ok = True
@@ -176,11 +177,11 @@ class ir_cron(osv.osv):
if not numbercall:
addsql = ', active=False'
cron_cr.execute("UPDATE ir_cron SET nextcall=%s, numbercall=%s"+addsql+" WHERE id=%s",
- (nextcall.strftime(DEFAULT_SERVER_DATETIME_FORMAT), numbercall, job['id']))
- self.invalidate_cache(cr, SUPERUSER_ID)
+ (nextcall.astimezone(pytz.UTC).strftime(DEFAULT_SERVER_DATETIME_FORMAT), numbercall, job['id']))
+ self.invalidate_cache(job_cr, SUPERUSER_ID)
finally:
- cr.commit()
+ job_cr.commit()
cron_cr.commit()
@classmethod
@@ -295,4 +296,20 @@ class ir_cron(osv.osv):
res = super(ir_cron, self).unlink(cr, uid, ids, context=context)
return res
+ def try_write(self, cr, uid, ids, values, context=None):
+ try:
+ with cr.savepoint():
+ cr.execute("""SELECT id FROM "%s" WHERE id IN %%s FOR UPDATE NOWAIT""" % self._table,
+ (tuple(ids),), log_exceptions=False)
+ except psycopg2.OperationalError:
+ pass
+ else:
+ return super(ir_cron, self).write(cr, uid, ids, values, context=context)
+ return False
+
+ def toggle(self, cr, uid, ids, model, domain, context=None):
+ active = bool(self.pool[model].search_count(cr, uid, domain, context=context))
+
+ return self.try_write(cr, uid, ids, {'active': active}, context=context)
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/base/ir/ir_http.py b/openerp/addons/base/ir/ir_http.py
index f2967a02e70..dae351540e5 100644
--- a/openerp/addons/base/ir/ir_http.py
+++ b/openerp/addons/base/ir/ir_http.py
@@ -12,6 +12,7 @@ import werkzeug.utils
import openerp
import openerp.exceptions
+import openerp.models
from openerp import http
from openerp.http import request
from openerp.osv import osv, orm
@@ -138,12 +139,12 @@ class ir_http(osv.AbstractModel):
def _postprocess_args(self, arguments, rule):
""" post process arg to set uid on browse records """
- for arg in arguments.itervalues():
+ for name, arg in arguments.items():
if isinstance(arg, orm.browse_record) and arg._uid is UID_PLACEHOLDER:
- arg._uid = request.uid
+ arguments[name] = arg.sudo(request.uid)
try:
- arg[arg._rec_name]
- except KeyError:
+ arg.exists()
+ except openerp.models.MissingError:
return self._handle_exception(werkzeug.exceptions.NotFound())
def routing_map(self):
diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py
index b0c32cdd77a..cab914e6a3b 100644
--- a/openerp/addons/base/ir/ir_model.py
+++ b/openerp/addons/base/ir/ir_model.py
@@ -367,6 +367,10 @@ class ir_model_fields(osv.osv):
model = self.pool[vals['model']]
if vals['model'].startswith('x_') and vals['name'] == 'x_name':
model._rec_name = 'x_name'
+
+ if self.pool.fields_by_model is not None:
+ cr.execute('SELECT * FROM ir_model_fields WHERE id=%s', (res,))
+ self.pool.fields_by_model.setdefault(vals['model'], []).append(cr.dictfetchone())
model.__init__(self.pool, cr)
model._prepare_setup_fields(cr, SUPERUSER_ID)
model._setup_fields(cr, SUPERUSER_ID)
@@ -446,7 +450,7 @@ class ir_model_fields(osv.osv):
column_rename = (obj, (obj._table, item.name, vals['name']))
final_name = vals['name']
- if 'model_id' in vals and vals['model_id'] != item.model_id:
+ if 'model_id' in vals and vals['model_id'] != item.model_id.id:
raise except_orm(_("Error!"), _("Changing the model of a field is forbidden!"))
if 'ttype' in vals and vals['ttype'] != item.ttype:
@@ -913,7 +917,7 @@ class ir_model_data(osv.osv):
if record.exists():
return record
if raise_if_not_found:
- raise ValueError('No record found for unique ID %s. It may have been deleted.' % (xml_id))
+ raise ValueError('No record found for unique ID %s. It may have been deleted.' % (xmlid))
return None
# OLD API
diff --git a/openerp/addons/base/ir/ir_qweb.py b/openerp/addons/base/ir/ir_qweb.py
index 86f68c4dca0..e1f0aac72db 100644
--- a/openerp/addons/base/ir/ir_qweb.py
+++ b/openerp/addons/base/ir/ir_qweb.py
@@ -358,7 +358,7 @@ class QWeb(orm.AbstractModel):
def render_tag_esc(self, element, template_attributes, generated_attributes, qwebcontext):
options = json.loads(template_attributes.get('esc-options') or '{}')
- widget = self.get_widget_for(options.get('widget', ''))
+ widget = self.get_widget_for(options.get('widget'))
inner = widget.format(template_attributes['esc'], options, qwebcontext)
return self.render_element(element, template_attributes, generated_attributes, qwebcontext, inner)
@@ -467,7 +467,8 @@ class QWeb(orm.AbstractModel):
return self.pool.get('ir.qweb.field.' + field_type, self.pool['ir.qweb.field'])
def get_widget_for(self, widget):
- return self.pool.get('ir.qweb.widget.' + widget, self.pool['ir.qweb.widget'])
+ widget_model = ('ir.qweb.widget.' + widget) if widget else 'ir.qweb.widget'
+ return self.pool.get(widget_model) or self.pool['ir.qweb.widget']
def get_attr_bool(self, attr, default=False):
if attr:
@@ -696,7 +697,7 @@ class SelectionConverter(osv.AbstractModel):
value = record[field_name]
if not value: return ''
selection = dict(fields.selection.reify(
- cr, uid, record._model, column))
+ cr, uid, record._model, column, context=context))
return self.value_to_html(
cr, uid, selection[value], column, options=options)
diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py
index 07732850180..c970475916f 100644
--- a/openerp/addons/base/ir/ir_translation.py
+++ b/openerp/addons/base/ir/ir_translation.py
@@ -78,6 +78,11 @@ class ir_translation_import_cursor(object):
"""Feed a translation, as a dictionary, into the cursor
"""
params = dict(trans_dict, state="translated" if trans_dict['value'] else "to_translate")
+
+ # ugly hack for QWeb views - pending refactoring of translations in master
+ if params['imd_model'] == 'website' and params['type'] == 'view':
+ params['imd_model'] = "ir.ui.view"
+
self._cr.execute("""INSERT INTO %s (name, lang, res_id, src, type, imd_model, module, imd_name, value, state, comments)
VALUES (%%(name)s, %%(lang)s, %%(res_id)s, %%(src)s, %%(type)s, %%(imd_model)s, %%(module)s,
%%(imd_name)s, %%(value)s, %%(state)s, %%(comments)s)""" % self._table_name,
@@ -98,15 +103,14 @@ class ir_translation_import_cursor(object):
FROM ir_model_data AS imd
WHERE ti.res_id IS NULL
AND ti.module IS NOT NULL AND ti.imd_name IS NOT NULL
-
AND ti.module = imd.module AND ti.imd_name = imd.name
AND ti.imd_model = imd.model; """ % self._table_name)
if self._debug:
- cr.execute("SELECT module, imd_model, imd_name FROM %s " \
+ cr.execute("SELECT module, imd_name, imd_model FROM %s " \
"WHERE res_id IS NULL AND module IS NOT NULL" % self._table_name)
for row in cr.fetchall():
- _logger.debug("ir.translation.cursor: missing res_id for %s. %s/%s ", *row)
+ _logger.info("ir.translation.cursor: missing res_id for %s.%s <%s> ", *row)
# Records w/o res_id must _not_ be inserted into our db, because they are
# referencing non-existent data.
@@ -297,7 +301,7 @@ class ir_translation(osv.osv):
AND src=%s"""
params = (lang or '', types, tools.ustr(source))
if res_id:
- query += "AND res_id=%s"
+ query += " AND res_id=%s"
params += (res_id,)
if name:
query += " AND name=%s"
diff --git a/openerp/addons/base/ir/ir_translation_view.xml b/openerp/addons/base/ir/ir_translation_view.xml
index 61ff92994ac..3fd80f90da9 100644
--- a/openerp/addons/base/ir/ir_translation_view.xml
+++ b/openerp/addons/base/ir/ir_translation_view.xml
@@ -34,7 +34,7 @@
<field name="lang"/>
</group>
<group>
- <field name="module" group="base.group_no_one"/>
+ <field name="module" groups="base.group_no_one"/>
<field name="type"/>
<field name="res_id"/>
</group>
diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py
index 035645d293e..d50ab1f0e16 100644
--- a/openerp/addons/base/ir/ir_ui_view.py
+++ b/openerp/addons/base/ir/ir_ui_view.py
@@ -39,7 +39,7 @@ from openerp import tools, api
from openerp.http import request
from openerp.modules.module import get_resource_path, get_resource_from_path
from openerp.osv import fields, osv, orm
-from openerp.tools import config, graph, SKIPPED_ELEMENT_TYPES
+from openerp.tools import config, graph, SKIPPED_ELEMENT_TYPES, SKIPPED_ELEMENTS
from openerp.tools.convert import _fix_multiple_roots
from openerp.tools.parse_version import parse_version
from openerp.tools.safe_eval import safe_eval as eval
@@ -49,7 +49,7 @@ from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
-MOVABLE_BRANDING = ['data-oe-model', 'data-oe-id', 'data-oe-field', 'data-oe-xpath']
+MOVABLE_BRANDING = ['data-oe-model', 'data-oe-id', 'data-oe-field', 'data-oe-xpath', 'data-oe-source-id']
def keep_query(*keep_params, **additional_params):
"""
@@ -222,21 +222,15 @@ class view(osv.osv):
(<xpath/>) are applied, and the result is used as if it were this view's
actual arch.
"""),
- 'application': fields.selection([
- ('always', "Always applied"),
- ('enabled', "Optional, enabled"),
- ('disabled', "Optional, disabled"),
- ],
- required=True, string="Application status",
+ 'active': fields.boolean("Active", required=True,
help="""If this view is inherited,
-* if always, the view always extends its parent
-* if enabled, the view currently extends its parent but can be disabled
-* if disabled, the view currently does not extend its parent but can be enabled
+* if True, the view always extends its parent
+* if False, the view currently does not extend its parent but can be enabled
"""),
}
_defaults = {
'mode': 'primary',
- 'application': 'always',
+ 'active': True,
'priority': 16,
}
_order = "priority,name"
@@ -349,18 +343,10 @@ class view(osv.osv):
return ret
def toggle(self, cr, uid, ids, context=None):
- """ Switches between enabled and disabled application statuses
+ """ Switches between enabled and disabled statuses
"""
- for view in self.browse(cr, uid, ids, context=context):
- if view.application == 'enabled':
- view.write({'application': 'disabled'})
- elif view.application == 'disabled':
- view.write({'application': 'enabled'})
- else:
- raise ValueError(_("Can't toggle view %d with application %r") % (
- view.id,
- view.application,
- ))
+ for view in self.browse(cr, uid, ids, context=dict(context or {}, active_test=False)):
+ view.write({'active': not view.active})
# default view selection
def default_view(self, cr, uid, model, view_type, context=None):
@@ -406,7 +392,7 @@ class view(osv.osv):
['inherit_id', '=', view_id],
['model', '=', model],
['mode', '=', 'extension'],
- ['application', 'in', ['always', 'enabled']],
+ ['active', '=', True],
]
if self.pool._init:
# Module init currently in progress, only consider views from
@@ -1020,7 +1006,7 @@ class view(osv.osv):
return None
return Translations._get_source(cr, uid, 'website', 'view', lang, text, id_)
- if arch.tag not in ['script']:
+ if type(arch) not in SKIPPED_ELEMENT_TYPES and arch.tag not in SKIPPED_ELEMENTS:
text = get_trans(arch.text)
if text:
arch.text = arch.text.replace(arch.text.strip(), text)
@@ -1028,7 +1014,7 @@ class view(osv.osv):
if tail:
arch.tail = arch.tail.replace(arch.tail.strip(), tail)
- for attr_name in ('title', 'alt', 'placeholder'):
+ for attr_name in ('title', 'alt', 'label', 'placeholder'):
attr = get_trans(arch.get(attr_name))
if attr:
arch.set(attr_name, attr)
diff --git a/openerp/addons/base/ir/ir_ui_view_view.xml b/openerp/addons/base/ir/ir_ui_view_view.xml
index f67b9558387..3e7ae5ae42b 100644
--- a/openerp/addons/base/ir/ir_ui_view_view.xml
+++ b/openerp/addons/base/ir/ir_ui_view_view.xml
@@ -19,6 +19,7 @@
<field name="inherit_id"/>
<field name="model_data_id"/>
<field name="xml_id"/>
+ <field name="active"/>
</group>
</group>
<notebook>
@@ -60,6 +61,8 @@
<field name="arch" type="xml">
<search string="Views">
<field name="name" filter_domain="['|', '|', ('name','ilike',self), ('model','ilike',self), ('model_data_id','ilike',self)]" string="View"/>
+ <filter string="Active" name="active" domain="[('active', '=',True)]"/>
+ <filter string="Unactive" domain="[('active', '=',False)]"/>
<filter string="Form" domain="[('type', '=','form')]"/>
<filter string="Tree" domain="[('type', '=', 'tree')]"/>
<filter string="Kanban" domain="[('type', '=', 'kanban')]"/>
@@ -82,6 +85,7 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">ir.ui.view</field>
<field name="view_id" ref="view_view_tree"/>
+ <field name="context">{'search_default_active': 1}</field>
<field name="help">Views allows you to personalize each view of Odoo. You can add new fields, move fields, rename them or delete the ones that you do not need.</field>
</record>
<menuitem action="action_ui_view" id="menu_action_ui_view" parent="base.next_id_2" sequence="2"/>
diff --git a/openerp/addons/base/res/res_currency.py b/openerp/addons/base/res/res_currency.py
index 697d5ef2d2f..8a155d9a35e 100644
--- a/openerp/addons/base/res/res_currency.py
+++ b/openerp/addons/base/res/res_currency.py
@@ -21,6 +21,7 @@
import re
import time
+import math
from openerp import api, fields as fields2
from openerp import tools
@@ -270,6 +271,22 @@ class res_currency(osv.osv):
# apply rounding
return to_currency.round(to_amount) if round else to_amount
+ def get_format_currencies_js_function(self, cr, uid, context=None):
+ """ Returns a string that can be used to instanciate a javascript function that formats numbers as currencies.
+ That function expects the number as first parameter and the currency id as second parameter. In case of failure it returns undefined."""
+ function = ""
+ for row in self.search_read(cr, uid, domain=[], fields=['id', 'name', 'symbol', 'rounding', 'position'], context=context):
+ digits = int(math.log10(1 / row['rounding']))
+ symbol = row['symbol'] or row['name']
+
+ format_number_str = "openerp.web.format_value(arguments[0], {type: 'float', digits: [69," + str(digits) + "]}, 0.00)"
+ if row['position'] == 'after':
+ return_str = "return " + format_number_str + " + '\\xA0" + symbol + "';"
+ else:
+ return_str = "return '" + symbol + "\\xA0' + " + format_number_str + ";"
+ function += "if (arguments[1] === " + str(row['id']) + ") { " + return_str + " }"
+ return function
+
class res_currency_rate(osv.osv):
_name = "res.currency.rate"
_description = "Currency Rate"
@@ -285,4 +302,3 @@ class res_currency_rate(osv.osv):
_order = "name desc"
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/openerp/addons/base/res/res_font.py b/openerp/addons/base/res/res_font.py
index 767fc3754c1..af21ea708c4 100644
--- a/openerp/addons/base/res/res_font.py
+++ b/openerp/addons/base/res/res_font.py
@@ -98,17 +98,8 @@ class res_font(osv.Model):
font = ttfonts.TTFontFile(font_path)
_logger.debug("Found font %s at %s", font.name, font_path)
found_fonts.append((font.familyName, font.name, font_path, font.styleName))
- except KeyError, ex:
- if ex.args and ex.args[0] == 'head':
- # Sometimes, the system can have a lot of Bitmap fonts, and
- # in this case, Reportlab can't load the 'head' table from
- # the structure of the TTF file (ex: NISC18030.ttf)
- # In this case, we have to bypass the loading of this font!
- _logger.warning("Could not register Fond %s (Old Bitmap font)", font_path)
- else:
- raise
- except ttfonts.TTFError:
- _logger.warning("Could not register Font %s", font_path)
+ except Exception, ex:
+ _logger.warning("Could not register Font %s: %s", font_path, ex)
for family, name, path, mode in found_fonts:
if not self.search(cr, uid, [('family', '=', family), ('name', '=', name)], context=context):
diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py
index 4eb74cc8cdd..4ebf9da16dd 100644
--- a/openerp/addons/base/res/res_partner.py
+++ b/openerp/addons/base/res/res_partner.py
@@ -357,8 +357,7 @@ class res_partner(osv.Model, format_address):
@api.multi
def onchange_type(self, is_company):
- value = {}
- value['title'] = False
+ value = {'title': False}
if is_company:
value['use_parent_address'] = False
domain = {'title': [('domain', '=', 'partner')]}
@@ -450,17 +449,31 @@ class res_partner(osv.Model, format_address):
def _commercial_sync_from_company(self, cr, uid, partner, context=None):
""" Handle sync of commercial fields when a new parent commercial entity is set,
as if they were related fields """
- if partner.commercial_partner_id != partner:
+ commercial_partner = partner.commercial_partner_id
+ if not commercial_partner:
+ # On child partner creation of a parent partner,
+ # the commercial_partner_id is not yet computed
+ commercial_partner_id = self._commercial_partner_compute(
+ cr, uid, [partner.id], 'commercial_partner_id', [], context=context)[partner.id]
+ commercial_partner = self.browse(cr, uid, commercial_partner_id, context=context)
+ if commercial_partner != partner:
commercial_fields = self._commercial_fields(cr, uid, context=context)
- sync_vals = self._update_fields_values(cr, uid, partner.commercial_partner_id,
- commercial_fields, context=context)
+ sync_vals = self._update_fields_values(cr, uid, commercial_partner,
+ commercial_fields, context=context)
partner.write(sync_vals)
def _commercial_sync_to_children(self, cr, uid, partner, context=None):
""" Handle sync of commercial fields to descendants """
commercial_fields = self._commercial_fields(cr, uid, context=context)
- sync_vals = self._update_fields_values(cr, uid, partner.commercial_partner_id,
- commercial_fields, context=context)
+ commercial_partner = partner.commercial_partner_id
+ if not commercial_partner:
+ # On child partner creation of a parent partner,
+ # the commercial_partner_id is not yet computed
+ commercial_partner_id = self._commercial_partner_compute(
+ cr, uid, [partner.id], 'commercial_partner_id', [], context=context)[partner.id]
+ commercial_partner = self.browse(cr, uid, commercial_partner_id, context=context)
+ sync_vals = self._update_fields_values(cr, uid, commercial_partner,
+ commercial_fields, context=context)
sync_children = [c for c in partner.child_ids if not c.is_company]
for child in sync_children:
self._commercial_sync_to_children(cr, uid, child, context=context)
diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml
index 22b62fcc929..7d77bd8d170 100644
--- a/openerp/addons/base/res/res_partner_view.xml
+++ b/openerp/addons/base/res/res_partner_view.xml
@@ -31,7 +31,6 @@
<group col="4">
<field name="name"/>
<field name="shortcut"/>
- <field name="domain"/>
</group>
</form>
</field>
@@ -108,15 +107,15 @@
placeholder="Company"
domain="[('is_company', '=', True)]" context="{'default_is_company': True}"
attrs="{'invisible': [('is_company','=', True)]}"/>
- <group>
- <field name="category_id" widget="many2many_tags" placeholder="Tags..."/>
- <field name="function" placeholder="e.g. Sales Director"/>
- <field name="user_ids" invisible="1"/>
- <field name="email" widget="email" required="context.get('force_email', False)" attrs="{'required': [('user_ids','!=', [])]}"/>
- <field name="phone"/>
- <field name="mobile"/>
- </group>
</div>
+ <group>
+ <field name="category_id" widget="many2many_tags" placeholder="Tags..."/>
+ <field name="function" placeholder="e.g. Sales Director"/>
+ <field name="user_ids" invisible="1"/>
+ <field name="email" widget="email" required="context.get('force_email', False)" attrs="{'required': [('user_ids','!=', [])]}"/>
+ <field name="phone"/>
+ <field name="mobile"/>
+ </group>
</form>
</field>
</record>
@@ -183,8 +182,7 @@
<field name="fax"/>
<field name="user_ids" invisible="1"/>
<field name="email" widget="email" attrs="{'required': [('user_ids','!=', [])]}"/>
- <field name="title" domain="[('domain','=','contact')]" options='{"no_open": True}' attrs="{'invisible': [('is_company','=',True)]}" context="{'default_domain': 'contact'}"/>
- <field name="title" domain="[('domain','=','partner')]" options='{"no_open": True}' attrs="{'invisible': [('is_company','=',False)]}" context="{'default_domain': 'partner'}"/>
+ <field name="title" options='{"no_open": True}'/>
</group>
</group>
diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py
index f1ddf4f1b42..a0e0bd1fe82 100644
--- a/openerp/addons/base/res/res_users.py
+++ b/openerp/addons/base/res/res_users.py
@@ -22,6 +22,7 @@
import itertools
import logging
from functools import partial
+from itertools import repeat
from lxml import etree
from lxml.builder import E
@@ -165,7 +166,7 @@ class res_users(osv.osv):
'login_date': fields.date('Latest connection', select=1),
'partner_id': fields.many2one('res.partner', required=True,
string='Related Partner', ondelete='restrict',
- help='Partner-related data of the user'),
+ help='Partner-related data of the user', auto_join=True),
'login': fields.char('Login', size=64, required=True,
help="Used to log into the system"),
'password': fields.char('Password', size=64, invisible=True, copy=False,
@@ -187,6 +188,11 @@ class res_users(osv.osv):
'company_ids':fields.many2many('res.company','res_company_users_rel','user_id','cid','Companies'),
}
+ # overridden inherited fields to bypass access rights, in case you have
+ # access to the user but not its corresponding partner
+ name = openerp.fields.Char(related='partner_id.name')
+ email = openerp.fields.Char(related='partner_id.email')
+
def on_change_login(self, cr, uid, ids, login, context=None):
if login and tools.single_email_re.match(login):
return {'value': {'email': login}}
@@ -650,25 +656,30 @@ class users_implied(osv.osv):
# Naming conventions for reified groups fields:
# - boolean field 'in_group_ID' is True iff
# ID is in 'groups_id'
-# - boolean field 'in_groups_ID1_..._IDk' is True iff
-# any of ID1, ..., IDk is in 'groups_id'
# - selection field 'sel_groups_ID1_..._IDk' is ID iff
# ID is in 'groups_id' and ID is maximal in the set {ID1, ..., IDk}
#----------------------------------------------------------
-def name_boolean_group(id): return 'in_group_' + str(id)
-def name_boolean_groups(ids): return 'in_groups_' + '_'.join(map(str, ids))
-def name_selection_groups(ids): return 'sel_groups_' + '_'.join(map(str, ids))
+def name_boolean_group(id):
+ return 'in_group_' + str(id)
+
+def name_selection_groups(ids):
+ return 'sel_groups_' + '_'.join(map(str, ids))
+
+def is_boolean_group(name):
+ return name.startswith('in_group_')
+
+def is_selection_groups(name):
+ return name.startswith('sel_groups_')
-def is_boolean_group(name): return name.startswith('in_group_')
-def is_boolean_groups(name): return name.startswith('in_groups_')
-def is_selection_groups(name): return name.startswith('sel_groups_')
def is_reified_group(name):
- return is_boolean_group(name) or is_boolean_groups(name) or is_selection_groups(name)
+ return is_boolean_group(name) or is_selection_groups(name)
+
+def get_boolean_group(name):
+ return int(name[9:])
-def get_boolean_group(name): return int(name[9:])
-def get_boolean_groups(name): return map(int, name[10:].split('_'))
-def get_selection_groups(name): return map(int, name[11:].split('_'))
+def get_selection_groups(name):
+ return map(int, name[11:].split('_'))
def partition(f, xs):
"return a pair equivalent to (filter(f, xs), filter(lambda x: not f(x), xs))"
@@ -789,45 +800,39 @@ class users_view(osv.osv):
_inherit = 'res.users'
def create(self, cr, uid, values, context=None):
- self._set_reified_groups(values)
+ values = self._remove_reified_groups(values)
return super(users_view, self).create(cr, uid, values, context)
def write(self, cr, uid, ids, values, context=None):
- self._set_reified_groups(values)
+ values = self._remove_reified_groups(values)
return super(users_view, self).write(cr, uid, ids, values, context)
- def _set_reified_groups(self, values):
- """ reflect reified group fields in values['groups_id'] """
- if 'groups_id' in values:
- # groups are already given, ignore group fields
- for f in filter(is_reified_group, values.iterkeys()):
- del values[f]
- return
+ def _remove_reified_groups(self, values):
+ """ return `values` without reified group fields """
+ add, rem = [], []
+ values1 = {}
+
+ for key, val in values.iteritems():
+ if is_boolean_group(key):
+ (add if val else rem).append(get_boolean_group(key))
+ elif is_selection_groups(key):
+ rem += get_selection_groups(key)
+ if val:
+ add.append(val)
+ else:
+ values1[key] = val
- add, remove = [], []
- for f in values.keys():
- if is_boolean_group(f):
- target = add if values.pop(f) else remove
- target.append(get_boolean_group(f))
- elif is_boolean_groups(f):
- if not values.pop(f):
- remove.extend(get_boolean_groups(f))
- elif is_selection_groups(f):
- remove.extend(get_selection_groups(f))
- selected = values.pop(f)
- if selected:
- add.append(selected)
- # update values *only* if groups are being modified, otherwise
- # we introduce spurious changes that might break the super.write() call.
- if add or remove:
- # remove groups in 'remove' and add groups in 'add'
- values['groups_id'] = [(3, id) for id in remove] + [(4, id) for id in add]
+ if 'groups_id' not in values and (add or rem):
+ # remove group ids in `rem` and add group ids in `add`
+ values1['groups_id'] = zip(repeat(3), rem) + zip(repeat(4), add)
+
+ return values1
def default_get(self, cr, uid, fields, context=None):
group_fields, fields = partition(is_reified_group, fields)
fields1 = (fields + ['groups_id']) if group_fields else fields
values = super(users_view, self).default_get(cr, uid, fields1, context)
- self._get_reified_groups(group_fields, values)
+ self._add_reified_groups(group_fields, values)
# add "default_groups_ref" inside the context to set default value for group_id with xml values
if 'groups_id' in fields and isinstance(context.get("default_groups_ref"), list):
@@ -846,29 +851,35 @@ class users_view(osv.osv):
return values
def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
- fields_get = fields if fields is not None else self.fields_get(cr, uid, context=context).keys()
- group_fields, _ = partition(is_reified_group, fields_get)
+ # determine whether reified groups fields are required, and which ones
+ fields1 = fields or self.fields_get(cr, uid, context=context).keys()
+ group_fields, other_fields = partition(is_reified_group, fields1)
+
+ # read regular fields (other_fields); add 'groups_id' if necessary
+ drop_groups_id = False
+ if group_fields and fields:
+ if 'groups_id' not in other_fields:
+ other_fields.append('groups_id')
+ drop_groups_id = True
+ else:
+ other_fields = fields
- inject_groups_id = group_fields and fields and 'groups_id' not in fields
- if inject_groups_id:
- fields.append('groups_id')
- res = super(users_view, self).read(cr, uid, ids, fields, context=context, load=load)
+ res = super(users_view, self).read(cr, uid, ids, other_fields, context=context, load=load)
- if res and group_fields:
+ # post-process result to add reified group fields
+ if group_fields:
for values in (res if isinstance(res, list) else [res]):
- self._get_reified_groups(group_fields, values)
- if inject_groups_id:
+ self._add_reified_groups(group_fields, values)
+ if drop_groups_id:
values.pop('groups_id', None)
return res
- def _get_reified_groups(self, fields, values):
- """ compute the given reified group fields from values['groups_id'] """
+ def _add_reified_groups(self, fields, values):
+ """ add the given reified group fields into `values` """
gids = set(parse_m2m(values.get('groups_id') or []))
for f in fields:
if is_boolean_group(f):
values[f] = get_boolean_group(f) in gids
- elif is_boolean_groups(f):
- values[f] = not gids.isdisjoint(get_boolean_groups(f))
elif is_selection_groups(f):
selected = [gid for gid in get_selection_groups(f) if gid in gids]
values[f] = selected and selected[-1] or False
@@ -915,29 +926,26 @@ class change_password_wizard(osv.TransientModel):
'user_ids': fields.one2many('change.password.user', 'wizard_id', string='Users'),
}
- def default_get(self, cr, uid, fields, context=None):
- if context == None:
+ def _default_user_ids(self, cr, uid, context=None):
+ if context is None:
context = {}
- user_ids = context.get('active_ids', [])
- wiz_id = context.get('active_id', None)
- res = []
- users = self.pool.get('res.users').browse(cr, uid, user_ids, context=context)
- for user in users:
- res.append((0, 0, {
- 'wizard_id': wiz_id,
- 'user_id': user.id,
- 'user_login': user.login,
- }))
- return {'user_ids': res}
-
- def change_password_button(self, cr, uid, id, context=None):
- wizard = self.browse(cr, uid, id, context=context)[0]
+ user_model = self.pool['res.users']
+ user_ids = context.get('active_model') == 'res.users' and context.get('active_ids') or []
+ return [
+ (0, 0, {'user_id': user.id, 'user_login': user.login})
+ for user in user_model.browse(cr, uid, user_ids, context=context)
+ ]
+
+ _defaults = {
+ 'user_ids': _default_user_ids,
+ }
+
+ def change_password_button(self, cr, uid, ids, context=None):
+ wizard = self.browse(cr, uid, ids, context=context)[0]
need_reload = any(uid == user.user_id.id for user in wizard.user_ids)
- line_ids = [user.id for user in wizard.user_ids]
+ line_ids = [user.id for user in wizard.user_ids]
self.pool.get('change.password.user').change_password_button(cr, uid, line_ids, context=context)
- # don't keep temporary password copies in the database longer than necessary
- self.pool.get('change.password.user').write(cr, uid, line_ids, {'new_passwd': False}, context=context)
if need_reload:
return {
@@ -965,8 +973,10 @@ class change_password_user(osv.TransientModel):
}
def change_password_button(self, cr, uid, ids, context=None):
- for user in self.browse(cr, uid, ids, context=context):
- self.pool.get('res.users').write(cr, uid, user.user_id.id, {'password': user.new_passwd})
+ for line in self.browse(cr, uid, ids, context=context):
+ line.user_id.write({'password': line.new_passwd})
+ # don't keep temporary passwords in the database longer than necessary
+ self.write(cr, uid, ids, {'new_passwd': False}, context=context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/base/rng/view.rng b/openerp/addons/base/rng/view.rng
index 4b13378d10a..d2742927c79 100644
--- a/openerp/addons/base/rng/view.rng
+++ b/openerp/addons/base/rng/view.rng
@@ -258,6 +258,7 @@
<rng:value>bottom</rng:value>
</rng:choice>
</rng:attribute>
+ <rng:optional><rng:attribute name="on_write"/></rng:optional>
</rng:optional>
<rng:optional>
<rng:attribute name="toolbar">
@@ -267,7 +268,6 @@
</rng:choice>
</rng:attribute>
</rng:optional>
- <rng:optional><rng:attribute name="on_write"/></rng:optional>
<rng:zeroOrMore>
<rng:choice>
<rng:ref name="field"/>
@@ -357,52 +357,23 @@
</rng:element>
</rng:define>
- <rng:define name="level">
- <rng:element name="level">
- <rng:optional><rng:attribute name="object"/></rng:optional>
- <rng:optional><rng:attribute name="link"/></rng:optional>
- <rng:optional><rng:attribute name="domain"/></rng:optional>
- <rng:zeroOrMore>
- <rng:ref name="field"/>
- </rng:zeroOrMore>
- <rng:zeroOrMore>
- <rng:ref name="html"/>
- </rng:zeroOrMore>
- </rng:element>
- </rng:define>
-
<rng:define name="gantt">
<rng:element name="gantt">
- <rng:optional><rng:attribute name="mode">
- <rng:choice>
- <rng:value>day</rng:value>
- <rng:value>3days</rng:value>
- <rng:value>week</rng:value>
- <rng:value>3weeks</rng:value>
- <rng:value>month</rng:value>
- <rng:value>3months</rng:value>
- <rng:value>year</rng:value>
- <rng:value>3years</rng:value>
- <rng:value>5years</rng:value>
- </rng:choice></rng:attribute>
+ <rng:attribute name="date_start"/>
+ <rng:choice>
+ <rng:attribute name="date_stop"/>
+ <rng:attribute name="date_delay"/>
+ </rng:choice>
+ <rng:optional>
+ <rng:attribute name="progress">
+ <rng:data type="int"/>
+ </rng:attribute>
</rng:optional>
+ <rng:optional><rng:attribute name="default_group_by"/></rng:optional>
<rng:optional><rng:attribute name="create"/></rng:optional>
<rng:optional><rng:attribute name="delete"/></rng:optional>
<rng:optional><rng:attribute name="edit"/></rng:optional>
- <rng:optional><rng:attribute name="color"/></rng:optional>
- <rng:optional><rng:attribute name="date_delay"/></rng:optional>
- <rng:optional><rng:attribute name="day_length"/></rng:optional>
- <rng:optional><rng:attribute name="date_start"/></rng:optional>
- <rng:optional><rng:attribute name="date_stop"/></rng:optional>
- <rng:optional><rng:attribute name="progress"/></rng:optional>
- <rng:optional><rng:attribute name="date_string"/></rng:optional>
- <rng:optional><rng:attribute name="string"/></rng:optional>
- <rng:optional><rng:attribute name="default_group_by"/></rng:optional>
- <rng:zeroOrMore>
- <rng:optional><rng:ref name="level"/></rng:optional>
- <rng:optional><rng:ref name="field"/></rng:optional>
- <rng:optional><rng:ref name="html"/></rng:optional>
- </rng:zeroOrMore>
+ <rng:empty/>
</rng:element>
</rng:define>
@@ -660,7 +631,15 @@
<rng:optional><rng:attribute name="quick_add" /></rng:optional>
<rng:optional><rng:attribute name="display" /></rng:optional>
<rng:optional><rng:attribute name="type" /></rng:optional>
- <rng:optional><rng:attribute name="mode" /></rng:optional>
+ <rng:optional>
+ <rng:attribute name="mode">
+ <rng:choice>
+ <rng:value>month</rng:value>
+ <rng:value>week</rng:value>
+ <rng:value>day</rng:value>
+ </rng:choice>
+ </rng:attribute>
+ </rng:optional>
<rng:oneOrMore>
<rng:ref name="field"/>
</rng:oneOrMore>
@@ -673,15 +652,21 @@
<rng:define name="graph">
<rng:element name="graph">
<rng:optional><rng:attribute name="string" /></rng:optional>
- <rng:optional><rng:attribute name="orientation" /></rng:optional>
- <rng:optional><rng:attribute name="type" /></rng:optional>
- <rng:optional><rng:attribute name="stacked" /></rng:optional>
- <rng:optional><rng:attribute name="color"/></rng:optional>
- <rng:oneOrMore>
- <rng:ref name="field"/>
- </rng:oneOrMore>
+ <rng:optional>
+ <rng:attribute name="type">
+ <rng:choice>
+ <rng:value>bar</rng:value>
+ <rng:value>pie</rng:value>
+ <rng:value>line</rng:value>
+ <rng:value>pivot</rng:value>
+ </rng:choice>
+ </rng:attribute>
+ </rng:optional>
+ <rng:optional>
+ <rng:attribute name="stacked"><rng:value>True</rng:value></rng:attribute>
+ </rng:optional>
<rng:zeroOrMore>
- <rng:ref name="html"/>
+ <rng:ref name="field"/>
</rng:zeroOrMore>
</rng:element>
</rng:define>
diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv
index 8aec7db7da9..19f3e4bb618 100644
--- a/openerp/addons/base/security/ir.model.access.csv
+++ b/openerp/addons/base/security/ir.model.access.csv
@@ -29,7 +29,7 @@
"access_ir_property_group_user_manager","ir_property group_manager","model_ir_property","base.group_partner_manager",1,1,1,0
"access_ir_rule_group_user","ir_rule group_user","model_ir_rule",,1,0,0,0
"access_ir_rule_group_erp_manager","ir_rule group_erp_manager","model_ir_rule","group_erp_manager",1,1,1,1
-"access_ir_sequence_group_user","ir_sequence group_user","model_ir_sequence",,1,0,0,0
+"access_ir_sequence_group_user","ir_sequence group_user","model_ir_sequence","group_user",1,0,0,0
"access_ir_sequence_group_system","ir_sequence group_system","model_ir_sequence","group_system",1,1,1,1
"access_ir_sequence_type_group_user","ir_sequence_type group_user","model_ir_sequence_type",,1,0,0,0
"access_ir_sequence_type_group_system","ir_sequence_type group_system","model_ir_sequence_type","group_system",1,1,1,1
@@ -54,7 +54,7 @@
"access_res_currency_group_system","res_currency group_system","model_res_currency","group_system",1,1,1,1
"access_res_currency_rate_group_system","res_currency_rate group_system","model_res_currency_rate","group_system",1,1,1,1
"access_res_groups_group_erp_manager","res_groups group_erp_manager","model_res_groups","group_erp_manager",1,1,1,1
-"access_res_groups_group_user","res_groups group_user","model_res_groups",,1,0,0,0
+"access_res_groups_group_user","res_groups group_user","model_res_groups",group_user,1,0,0,0
"access_res_lang_group_all","res_lang group_all","model_res_lang",,1,0,0,0
"access_res_lang_group_user","res_lang group_user","model_res_lang","group_system",1,1,1,1
"access_res_partner_public","res_partner group_public","model_res_partner","group_public",1,0,0,0
diff --git a/openerp/addons/base/tests/test_base.py b/openerp/addons/base/tests/test_base.py
index bbc5b21d1fb..b34451d0396 100644
--- a/openerp/addons/base/tests/test_base.py
+++ b/openerp/addons/base/tests/test_base.py
@@ -250,20 +250,24 @@ class test_base(common.TransactionCase):
'parent_id': p1.id}))
p2 = self.res_partner.browse(cr, uid, self.res_partner.search(cr, uid,
[('email', '=', 'agr@sunhelm.com')])[0])
+ self.res_partner.write(cr, uid, sunhelm.id, {'child_ids': [(0, 0, {'name': 'Ulrik Greenthorn',
+ 'email': 'ugr@sunhelm.com'})]})
+ p3 = self.res_partner.browse(cr, uid, self.res_partner.search(cr, uid,
+ [('email', '=', 'ugr@sunhelm.com')])[0])
- for p in (p0, p1, p11, p2):
+ for p in (p0, p1, p11, p2, p3):
p.refresh()
self.assertEquals(p.commercial_partner_id, sunhelm, 'Incorrect commercial entity resolution')
self.assertEquals(p.vat, sunhelm.vat, 'Commercial fields must be automatically synced')
sunhelmvat = 'BE0123456789'
sunhelm.write({'vat': sunhelmvat})
- for p in (p0, p1, p11, p2):
+ for p in (p0, p1, p11, p2, p3):
p.refresh()
self.assertEquals(p.vat, sunhelmvat, 'Commercial fields must be automatically and recursively synced')
p1vat = 'BE0987654321'
p1.write({'vat': p1vat})
- for p in (sunhelm, p0, p11, p2):
+ for p in (sunhelm, p0, p11, p2, p3):
p.refresh()
self.assertEquals(p.vat, sunhelmvat, 'Sync to children should only work downstream and on commercial entities')
diff --git a/openerp/addons/base/tests/test_mail.py b/openerp/addons/base/tests/test_mail.py
index 4ebec837c6d..c3559743d89 100644
--- a/openerp/addons/base/tests/test_mail.py
+++ b/openerp/addons/base/tests/test_mail.py
@@ -24,10 +24,7 @@
import unittest2
-from lxml import etree
-
from openerp.tools import html_sanitize, html_email_clean, append_content_to_html, plaintext2html, email_split
-
import test_mail_examples
@@ -45,6 +42,24 @@ class TestSanitizer(unittest2.TestCase):
html = html_sanitize(content)
self.assertEqual(html, expected, 'html_sanitize is broken')
+ def test_mako(self):
+ cases = [
+ ('''<p>Some text</p>
+<% set signup_url = object.get_signup_url() %>
+% if signup_url:
+<p>
+ You can access this document and pay online via our Customer Portal:
+</p>''', '''<p>Some text</p>
+<% set signup_url = object.get_signup_url() %>
+% if signup_url:
+<p>
+ You can access this document and pay online via our Customer Portal:
+</p>''')
+ ]
+ for content, expected in cases:
+ html = html_sanitize(content, silent=False)
+ self.assertEqual(html, expected, 'html_sanitize: broken mako management')
+
def test_evil_malicious_code(self):
# taken from https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Tests
cases = [
@@ -327,6 +342,12 @@ class TestCleaner(unittest2.TestCase):
for ext in test_mail_examples.BUG_2_OUT:
self.assertNotIn(ext, new_html, 'html_email_cleaner did not removed invalid content')
+ new_html = html_email_clean(test_mail_examples.BUG3, remove=True, shorten=True, max_length=250)
+ for ext in test_mail_examples.BUG_3_IN:
+ self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed valid content')
+ for ext in test_mail_examples.BUG_3_OUT:
+ self.assertNotIn(ext, new_html, 'html_email_cleaner did not removed invalid content')
+
def test_90_misc(self):
# False boolean for text must return empty string
new_html = html_email_clean(False)
@@ -363,16 +384,17 @@ class TestHtmlTools(unittest2.TestCase):
for html, content, plaintext_flag, preserve_flag, container_tag, expected in test_samples:
self.assertEqual(append_content_to_html(html, content, plaintext_flag, preserve_flag, container_tag), expected, 'append_content_to_html is broken')
+
class TestEmailTools(unittest2.TestCase):
""" Test some of our generic utility functions for emails """
def test_email_split(self):
cases = [
- ("John <12345@gmail.com>", ['12345@gmail.com']), # regular form
- ("d@x; 1@2", ['d@x', '1@2']), # semi-colon + extra space
- ("'(ss)' <123@gmail.com>, 'foo' <foo@bar>", ['123@gmail.com','foo@bar']), # comma + single-quoting
- ('"john@gmail.com"<johnny@gmail.com>', ['johnny@gmail.com']), # double-quoting
- ('"<jg>" <johnny@gmail.com>', ['johnny@gmail.com']), # double-quoting with brackets
+ ("John <12345@gmail.com>", ['12345@gmail.com']), # regular form
+ ("d@x; 1@2", ['d@x', '1@2']), # semi-colon + extra space
+ ("'(ss)' <123@gmail.com>, 'foo' <foo@bar>", ['123@gmail.com', 'foo@bar']), # comma + single-quoting
+ ('"john@gmail.com"<johnny@gmail.com>', ['johnny@gmail.com']), # double-quoting
+ ('"<jg>" <johnny@gmail.com>', ['johnny@gmail.com']), # double-quoting with brackets
]
for text, expected in cases:
self.assertEqual(email_split(text), expected, 'email_split is broken')
diff --git a/openerp/addons/base/tests/test_mail_examples.py b/openerp/addons/base/tests/test_mail_examples.py
index d1e11ced323..be043d5fc2a 100644
--- a/openerp/addons/base/tests/test_mail_examples.py
+++ b/openerp/addons/base/tests/test_mail_examples.py
@@ -1104,3 +1104,72 @@ BUG_2_OUT = [
'Fwd: TR: OpenERP S.A'
'fait un mois'
]
+
+
+# BUG 20/08/2014: READ MORE NOT APPEARING
+BUG3 = """<div class="oe_msg_body_long" style="/* display: none; */"><p>OpenERP has been upgraded to version 8.0.</p>
+<h2>What's new in this upgrade?</h2>
+<div class="document">
+<ul>
+<li><p class="first">New Warehouse Management System:</p>
+<blockquote>
+<p>Schedule your picking, packing, receptions and internal moves automatically with Odoo using
+your own routing rules. Define push and pull rules to organize a warehouse or to manage
+product moves between several warehouses. Track in detail all stock moves, not only in your
+warehouse but wherever else it's taken as well (customers, suppliers or manufacturing
+locations).</p>
+</blockquote>
+</li>
+<li><p class="first">New Product Configurator</p>
+</li>
+<li><p class="first">Documentation generation from website forum:</p>
+<blockquote>
+<p>New module to generate a documentation from questions and responses from your forum.
+The documentation manager can define a table of content and any user, depending their karma,
+can link a question to an entry of this TOC.</p>
+</blockquote>
+</li>
+<li><p class="first">New kanban view of documents (resumes and letters in recruitement, project documents...)</p>
+</li>
+<li><p class="first">E-Commerce:</p>
+<blockquote>
+<ul class="simple">
+<li>Manage TIN in contact form for B2B.</li>
+<li>Dedicated salesteam to easily manage leads and orders.</li>
+</ul>
+</blockquote>
+</li>
+<li><p class="first">Better Instant Messaging.</p>
+</li>
+<li><p class="first">Faster and Improved Search view: Search drawer now appears on top of the results, and is open
+by default in reporting views</p>
+</li>
+<li><p class="first">Improved User Interface:</p>
+<blockquote>
+<ul class="simple">
+<li>Popups has changed to be more responsive on tablets and smartphones.</li>
+<li>New Stat Buttons: Forms views have now dynamic buttons showing some statistics abouts linked models.</li>
+<li>Color code to check in one look availability of components in an MRP order.</li>
+<li>Unified menu bar allows you to switch easily between the frontend (website) and backend</li>
+<li>Results panel is now scrollable independently of the menu bars, keeping the navigation,
+search bar and view switcher always within reach.</li>
+</ul>
+</blockquote>
+</li>
+<li><p class="first">User signature is now in HTML.</p>
+</li>
+<li><p class="first">New development API.</p>
+</li>
+<li><p class="first">Remove support for Outlook and Thunderbird plugins</p>
+</li>
+</ul>
+</div>
+<p>Enjoy the new OpenERP Online!</p><span class="oe_mail_reduce"><a href="#">read less</a></span></div>"""
+
+BUG_3_IN = [
+ 'read more',
+ '...',
+]
+BUG_3_OUT = [
+ 'New kanban view of documents'
+]
diff --git a/openerp/addons/base/tests/test_orm.py b/openerp/addons/base/tests/test_orm.py
index eb239fd6c76..39fbeb4fb0a 100644
--- a/openerp/addons/base/tests/test_orm.py
+++ b/openerp/addons/base/tests/test_orm.py
@@ -166,6 +166,12 @@ class TestInherits(common.TransactionCase):
self.partner = self.registry('res.partner')
self.user = self.registry('res.users')
+ def test_default(self):
+ """ `default_get` cannot return a dictionary or a new id """
+ defaults = self.user.default_get(self.cr, UID, ['partner_id'])
+ if 'partner_id' in defaults:
+ self.assertIsInstance(defaults['partner_id'], (bool, int, long))
+
def test_create(self):
""" creating a user should automatically create a new partner """
partners_before = self.partner.search(self.cr, UID, [])
diff --git a/openerp/addons/base/tests/test_views.py b/openerp/addons/base/tests/test_views.py
index 563b7c4db65..6c4a1ad67f4 100644
--- a/openerp/addons/base/tests/test_views.py
+++ b/openerp/addons/base/tests/test_views.py
@@ -544,9 +544,9 @@ class TestTemplating(ViewCase):
'data-oe-id': str(id2),
'data-oe-field': 'arch',
'data-oe-xpath': '/xpath/item/content[1]',
+ 'data-oe-source-id': str(id)
}), {
'order': '2',
- 'data-oe-source-id': str(id)
}),
E.item({
'order': '1',
@@ -612,7 +612,7 @@ class TestTemplating(ViewCase):
{'t-ignore': 'true', 'order': '1'},
E.t({'t-esc': 'foo'}),
E.item(
- {'order': '2', 'data-oe-source-id': str(id)},
+ {'order': '2'},
E.content(
{'t-att-href': 'foo'},
"bar")
@@ -642,7 +642,7 @@ class test_views(ViewCase):
"""Insert view into database via a query to passtrough validation"""
kw.pop('id', None)
kw.setdefault('mode', 'extension' if kw.get('inherit_id') else 'primary')
- kw.setdefault('application', 'always')
+ kw.setdefault('active', True)
keys = sorted(kw.keys())
fields = ','.join('"%s"' % (k.replace('"', r'\"'),) for k in keys)
@@ -1095,21 +1095,21 @@ class TestOptionalViews(ViewCase):
self.v1 = self.create({
'model': 'a',
'inherit_id': self.v0,
- 'application': 'always',
+ 'active': True,
'priority': 10,
'arch': '<xpath expr="//base" position="after"><v1/></xpath>',
})
self.v2 = self.create({
'model': 'a',
'inherit_id': self.v0,
- 'application': 'enabled',
+ 'active': True,
'priority': 9,
'arch': '<xpath expr="//base" position="after"><v2/></xpath>',
})
self.v3 = self.create({
'model': 'a',
'inherit_id': self.v0,
- 'application': 'disabled',
+ 'active': False,
'priority': 8,
'arch': '<xpath expr="//base" position="after"><v3/></xpath>'
})
@@ -1128,10 +1128,10 @@ class TestOptionalViews(ViewCase):
)
def test_applied_state_toggle(self):
- """ Change application states of v2 and v3, check that the results
+ """ Change active states of v2 and v3, check that the results
are as expected
"""
- self.browse(self.v2).write({'application': 'disabled'})
+ self.browse(self.v2).toggle()
arch = self.read_combined(self.v0)['arch']
self.assertEqual(
ET.fromstring(arch),
@@ -1141,7 +1141,7 @@ class TestOptionalViews(ViewCase):
)
)
- self.browse(self.v3).write({'application': 'enabled'})
+ self.browse(self.v3).toggle()
arch = self.read_combined(self.v0)['arch']
self.assertEqual(
ET.fromstring(arch),
@@ -1152,7 +1152,7 @@ class TestOptionalViews(ViewCase):
)
)
- self.browse(self.v2).write({'application': 'enabled'})
+ self.browse(self.v2).toggle()
arch = self.read_combined(self.v0)['arch']
self.assertEqual(
ET.fromstring(arch),
diff --git a/openerp/addons/base/workflow/workflow.py b/openerp/addons/base/workflow/workflow.py
index ee2525b017a..75301a6e4ec 100644
--- a/openerp/addons/base/workflow/workflow.py
+++ b/openerp/addons/base/workflow/workflow.py
@@ -111,6 +111,7 @@ class wkf_transition(osv.osv):
_columns = {
'trigger_model': fields.char('Trigger Object'),
'trigger_expr_id': fields.char('Trigger Expression'),
+ 'sequence': fields.integer('Sequence'),
'signal': fields.char('Signal (Button Name)',
help="When the operation of transition comes from a button pressed in the client form, "\
"signal tests the name of the pressed button. If signal is NULL, no button is necessary to validate this transition."),
@@ -126,8 +127,11 @@ class wkf_transition(osv.osv):
}
_defaults = {
'condition': lambda *a: 'True',
+ 'sequence': 10,
}
+ _order = 'sequence,id'
+
def name_get(self, cr, uid, ids, context=None):
return [(line.id, (line.act_from.name) + '+' + (line.act_to.name)) if line.signal == False else (line.id, line.signal) for line in self.browse(cr, uid, ids, context=context)]
diff --git a/openerp/addons/base/workflow/workflow_report.py b/openerp/addons/base/workflow/workflow_report.py
index 5e948d98db6..64339afeaf1 100644
--- a/openerp/addons/base/workflow/workflow_report.py
+++ b/openerp/addons/base/workflow/workflow_report.py
@@ -70,7 +70,7 @@ def graph_get(cr, graph, wkf_ids, nested, workitem, witm_trans, processed_subflo
actfrom[n['id']] = (n['id'],{})
actto[n['id']] = (n['id'],{})
node_ids = tuple(map(itemgetter('id'), nodes))
- cr.execute('select * from wkf_transition where act_from IN %s', (node_ids,))
+ cr.execute('select * from wkf_transition where act_from IN %s ORDER BY sequence,id', (node_ids,))
transitions = cr.dictfetchall()
for t in transitions:
if not t['act_to'] in activities:
diff --git a/openerp/addons/base/workflow/workflow_view.xml b/openerp/addons/base/workflow/workflow_view.xml
index 23ca704cff0..f67e3996feb 100644
--- a/openerp/addons/base/workflow/workflow_view.xml
+++ b/openerp/addons/base/workflow/workflow_view.xml
@@ -120,6 +120,7 @@
<page string="Transitions">
<field name="in_transitions">
<tree string="Incoming Transitions">
+ <field name="sequence" widget="handle" />
<field name="act_from"/>
<field name="signal"/>
<field name="condition"/>
@@ -127,6 +128,7 @@
</field>
<field name="out_transitions">
<tree string="Outgoing Transitions">
+ <field name="sequence" widget="handle" />
<field name="act_to"/>
<field name="signal"/>
<field name="condition"/>
@@ -196,6 +198,7 @@
<sheet>
<group>
<group>
+ <field name="sequence" />
<field name="act_from"/>
<field name="act_to"/>
<field name="signal"/>
@@ -216,6 +219,7 @@
<field name="model">workflow.transition</field>
<field name="arch" type="xml">
<tree string="Transition">
+ <field name="sequence" widget="handle" />
<field name="act_from"/>
<field name="act_to"/>
<field name="signal"/>
diff --git a/openerp/addons/test_inherit/ir.model.access.csv b/openerp/addons/test_inherit/ir.model.access.csv
index 79644d6a26b..9118525cff3 100644
--- a/openerp/addons/test_inherit/ir.model.access.csv
+++ b/openerp/addons/test_inherit/ir.model.access.csv
@@ -1,3 +1,3 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
access_test_inherit_mother,access_test_inherit_mother,model_test_inherit_mother,,1,1,1,1
-access_test_inherit_daugther,access_test_inherit_daugther,model_test_inherit_daugther,,1,1,1,1
+access_test_inherit_daughter,access_test_inherit_daughter,model_test_inherit_daughter,,1,1,1,1
diff --git a/openerp/addons/test_inherit/models.py b/openerp/addons/test_inherit/models.py
index ebbe71e0521..e1957ab95c9 100644
--- a/openerp/addons/test_inherit/models.py
+++ b/openerp/addons/test_inherit/models.py
@@ -7,6 +7,7 @@ class mother(models.Model):
name = fields.Char('Name', required=True)
surname = fields.Char(compute='_compute_surname')
+ state = fields.Selection([('a', 'A'), ('b', 'B')])
@api.one
@api.depends('name')
@@ -16,7 +17,7 @@ class mother(models.Model):
# We want to inherits from the parent model and we add some fields
# in the child object
class daughter(models.Model):
- _name = 'test.inherit.daugther'
+ _name = 'test.inherit.daughter'
_inherits = {'test.inherit.mother': 'template_id'}
template_id = fields.Many2one('test.inherit.mother', 'Template',
@@ -35,6 +36,9 @@ class mother(models.Model):
# extend the name field by adding a default value
name = fields.Char(default='Unknown')
+ # extend the selection of the state field
+ state = fields.Selection(selection_add=[('c', 'C')])
+
# override the computed field, and extend its dependencies
@api.one
@api.depends('field_in_mother')
@@ -44,4 +48,18 @@ class mother(models.Model):
else:
super(mother, self)._compute_surname()
+
+class mother(models.Model):
+ _inherit = 'test.inherit.mother'
+
+ # extend again the selection of the state field
+ state = fields.Selection(selection_add=[('d', 'D')])
+
+
+class daughter(models.Model):
+ _inherit = 'test.inherit.daughter'
+
+ # simply redeclare the field without adding any option
+ template_id = fields.Many2one()
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/test_inherit/tests/test_inherit.py b/openerp/addons/test_inherit/tests/test_inherit.py
index b663d911f60..bbd6ef07821 100644
--- a/openerp/addons/test_inherit/tests/test_inherit.py
+++ b/openerp/addons/test_inherit/tests/test_inherit.py
@@ -9,28 +9,44 @@ class test_inherits(common.TransactionCase):
# is accessible from the child model. This test has been written
# to verify the purpose of the inheritance computing of the class
# in the openerp.osv.orm._build_model.
- mother = self.registry('test.inherit.mother')
- daugther = self.registry('test.inherit.daugther')
+ mother = self.env['test.inherit.mother']
+ daugther = self.env['test.inherit.daughter']
self.assertIn('field_in_mother', mother._fields)
self.assertIn('field_in_mother', daugther._fields)
def test_field_extension(self):
""" check the extension of a field in an inherited model """
- mother = self.registry('test.inherit.mother')
+ # the field mother.name should inherit required=True, and have a default
+ # value
+ mother = self.env['test.inherit.mother']
field = mother._fields['name']
-
- # the field should inherit required=True, and have a default value
self.assertTrue(field.required)
self.assertEqual(field.default, 'Unknown')
+ # the field daugther.template_id should inherit
+ # model_name='test.inherit.mother', string='Template', required=True
+ daugther = self.env['test.inherit.daughter']
+ field = daugther._fields['template_id']
+ self.assertEqual(field.comodel_name, 'test.inherit.mother')
+ self.assertEqual(field.string, "Template")
+ self.assertTrue(field.required)
+
def test_depends_extension(self):
""" check that @depends on overridden compute methods extends dependencies """
- mother = self.registry('test.inherit.mother')
+ mother = self.env['test.inherit.mother']
field = mother._fields['surname']
# the field dependencies are added
self.assertItemsEqual(field.depends, ['name', 'field_in_mother'])
+ def test_selection_extension(self):
+ """ check that attribute selection_add=... extends selection on fields. """
+ mother = self.env['test.inherit.mother']
+ field = mother._fields['state']
+
+ # the extra values are added
+ self.assertEqual(field.selection, [('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')])
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/test_new_api/views.xml b/openerp/addons/test_new_api/views.xml
index 005dd2cf670..2e1290f5a09 100644
--- a/openerp/addons/test_new_api/views.xml
+++ b/openerp/addons/test_new_api/views.xml
@@ -1,6 +1,8 @@
<openerp>
<data>
- <menuitem id="menu_main" name="Discussions" sequence="20"/>
+ <menuitem icon="STOCK_PREFERENCES" id="base.menu_tests" name="Tests" sequence="1000000"/>
+
+ <menuitem id="menu_main" name="Discussions" sequence="20" parent="base.menu_tests"/>
<menuitem id="menu_sub" name="Discussions" parent="menu_main" sequence="10"/>
diff --git a/openerp/api.py b/openerp/api.py
index 6c70910633f..83190f82e87 100644
--- a/openerp/api.py
+++ b/openerp/api.py
@@ -59,6 +59,7 @@ __all__ = [
]
import logging
+import operator
from inspect import currentframe, getargspec
from collections import defaultdict, MutableMapping
@@ -137,15 +138,35 @@ def propagate(from_method, to_method):
def constrains(*args):
- """ Return a decorator that specifies the field dependencies of a method
- implementing a constraint checker. Each argument must be a field name.
+ """ Decorates a constraint checker. Each argument must be a field name
+ used in the check::
+
+ @api.one
+ @api.constrains('name', 'description')
+ def _check_description(self):
+ if self.name == self.description:
+ raise ValidationError("Fields name and description must be different")
+
+ Invoked on the records on which one of the named fields has been modified.
+
+ Should raise :class:`~openerp.exceptions.ValidationError` if the
+ validation failed.
"""
return lambda method: decorate(method, '_constrains', args)
def onchange(*args):
""" Return a decorator to decorate an onchange method for given fields.
- Each argument must be a field name.
+ Each argument must be a field name::
+
+ @api.onchange('partner_id')
+ def _onchange_partner(self):
+ self.message = "Dear %s" % (self.partner_id.name or "")
+
+ In the form views where the field appears, the method will be called
+ when one of the given fields is modified. The method is invoked on a
+ pseudo-record that contains the values present in the form. Field
+ assignments on that record are automatically sent back to the client.
"""
return lambda method: decorate(method, '_onchange', args)
@@ -153,7 +174,17 @@ def onchange(*args):
def depends(*args):
""" Return a decorator that specifies the field dependencies of a "compute"
method (for new-style function fields). Each argument must be a string
- that consists in a dot-separated sequence of field names.
+ that consists in a dot-separated sequence of field names::
+
+ pname = fields.Char(compute='_compute_pname')
+
+ @api.one
+ @api.depends('partner_id.name', 'partner_id.is_company')
+ def _compute_pname(self):
+ if self.partner_id.is_company:
+ self.pname = (self.partner_id.name or "").upper()
+ else:
+ self.pname = self.partner_id.name
One may also pass a single function as argument. In that case, the
dependencies are given by calling the function with the field's model.
@@ -273,8 +304,8 @@ def get_context_split(method):
def model(method):
- """ Decorate a record-style method where `self` is a recordset. Such a
- method::
+ """ Decorate a record-style method where `self` is a recordset, but its
+ contents is not relevant, only the model is. Such a method::
@api.model
def method(self, args):
@@ -286,6 +317,8 @@ def model(method):
recs.method(args)
model.method(cr, uid, args, context=context)
+
+ Notice that no `ids` are passed to the method in the traditional style.
"""
method._api = model
split = get_context_split(method)
@@ -301,8 +334,8 @@ def model(method):
def multi(method):
- """ Decorate a record-style method where `self` is a recordset. Such a
- method::
+ """ Decorate a record-style method where `self` is a recordset. The method
+ typically defines an operation on records. Such a method::
@api.multi
def method(self, args):
@@ -653,7 +686,7 @@ class Environment(object):
yield
else:
try:
- cls._local.environments = WeakSet()
+ cls._local.environments = Environments()
yield
finally:
release_local(cls._local)
@@ -676,8 +709,6 @@ class Environment(object):
self.prefetch = defaultdict(set) # {model_name: set(id), ...}
self.computed = defaultdict(set) # {field: set(id), ...}
self.dirty = set() # set(record)
- self.todo = {} # {field: records, ...}
- self.mode = env.mode if env else Mode()
self.all = envs
envs.add(self)
return self
@@ -714,14 +745,14 @@ class Environment(object):
@contextmanager
def _do_in_mode(self, mode):
- if self.mode.value:
+ if self.all.mode:
yield
else:
try:
- self.mode.value = mode
+ self.all.mode = mode
yield
finally:
- self.mode.value = False
+ self.all.mode = False
self.dirty.clear()
def do_in_draft(self):
@@ -733,7 +764,7 @@ class Environment(object):
@property
def in_draft(self):
""" Return whether we are in draft mode. """
- return bool(self.mode.value)
+ return bool(self.all.mode)
def do_in_onchange(self):
""" Context-switch to 'onchange' draft mode, which is a specialized
@@ -744,7 +775,7 @@ class Environment(object):
@property
def in_onchange(self):
""" Return whether we are in 'onchange' draft mode. """
- return self.mode.value == 'onchange'
+ return self.all.mode == 'onchange'
def invalidate(self, spec):
""" Invalidate some fields for some records in the cache of all
@@ -756,7 +787,7 @@ class Environment(object):
"""
if not spec:
return
- for env in list(iter(self.all)):
+ for env in list(self.all):
c = env.cache
for field, ids in spec:
if ids is None:
@@ -769,12 +800,49 @@ class Environment(object):
def invalidate_all(self):
""" Clear the cache of all environments. """
- for env in list(iter(self.all)):
+ for env in list(self.all):
env.cache.clear()
env.prefetch.clear()
env.computed.clear()
env.dirty.clear()
+ def field_todo(self, field):
+ """ Check whether `field` must be recomputed, and returns a recordset
+ with all records to recompute for `field`.
+ """
+ if field in self.all.todo:
+ return reduce(operator.or_, self.all.todo[field])
+
+ def check_todo(self, field, record):
+ """ Check whether `field` must be recomputed on `record`, and if so,
+ returns the corresponding recordset to recompute.
+ """
+ for recs in self.all.todo.get(field, []):
+ if recs & record:
+ return recs
+
+ def add_todo(self, field, records):
+ """ Mark `field` to be recomputed on `records`. """
+ recs_list = self.all.todo.setdefault(field, [])
+ recs_list.append(records)
+
+ def remove_todo(self, field, records):
+ """ Mark `field` as recomputed on `records`. """
+ recs_list = self.all.todo.get(field, [])
+ if records in recs_list:
+ recs_list.remove(records)
+ if not recs_list:
+ del self.all.todo[field]
+
+ def has_todo(self):
+ """ Return whether some fields must be recomputed. """
+ return bool(self.all.todo)
+
+ def get_todo(self):
+ """ Return a pair `(field, records)` to recompute. """
+ for field, recs_list in self.all.todo.iteritems():
+ return field, recs_list[0]
+
def check_cache(self):
""" Check the cache consistency. """
# make a full copy of the cache, and invalidate it
@@ -803,9 +871,20 @@ class Environment(object):
raise Warning('Invalid cache for fields\n' + pformat(invalids))
-class Mode(object):
- """ A mode flag shared among environments. """
- value = False # False, True (draft) or 'onchange' (onchange draft)
+class Environments(object):
+ """ A common object for all environments in a request. """
+ def __init__(self):
+ self.envs = WeakSet() # weak set of environments
+ self.todo = {} # recomputations {field: [records]}
+ self.mode = False # flag for draft/onchange
+
+ def add(self, env):
+ """ Add the environment `env`. """
+ self.envs.add(env)
+
+ def __iter__(self):
+ """ Iterate over environments. """
+ return iter(self.envs)
# keep those imports here in order to handle cyclic dependencies correctly
diff --git a/openerp/cli/scaffold.py b/openerp/cli/scaffold.py
index 5999aad02a1..c4f2c44db43 100644
--- a/openerp/cli/scaffold.py
+++ b/openerp/cli/scaffold.py
@@ -1,13 +1,8 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
-import ast
-import functools
-import keyword
-import logging
import os
import re
-import simplejson
import sys
import jinja2
@@ -18,199 +13,43 @@ from openerp.modules.module import (get_module_root, MANIFEST, load_information_
class Scaffold(Command):
- "Generate an Odoo module skeleton."
+ """ Generates an Odoo module skeleton. """
def run(self, cmdargs):
# TODO: bash completion file
parser = argparse.ArgumentParser(
prog="%s scaffold" % sys.argv[0].split(os.path.sep)[-1],
- description=self.__doc__
+ description=self.__doc__,
+ epilog=self.epilog(),
)
- parser.add_argument('--init', type=identifier, help='Initialize a new Odoo module')
-
- parser.add_argument('--dest', default=".",
- help='Directory where the module should be created/updated (default to current directory)')
-
- parser.add_argument('--model', type=identifier, help="Name of the model to add")
-
- parser.add_argument('--controller', type=identifier, help="Name of the controller to add")
-
- parser.add_argument('--web', action='store_true', default=False,
- help="Generate structure for a webclient module")
-
- parser.add_argument('--theme', action='store_true', default=False,
- help="Generate structure for a Website theme")
+ parser.add_argument(
+ '-t', '--template', type=template, default=template('default'),
+ help="Use a custom module template, can be a template name or the"
+ " path to a module template (default: %(default)s)")
+ parser.add_argument('name', help="Name of the module to create")
+ parser.add_argument(
+ 'dest', default='.', nargs='?',
+ help="Directory to create the module in (default: %(default)s)")
if not cmdargs:
sys.exit(parser.print_help())
args = parser.parse_args(args=cmdargs)
- dest = directory(args.dest)
- if args.init:
- dest = os.path.join(dest, args.init)
- if os.path.exists(dest):
- die("Can't initialize module in `%s`: Directory already exists." % dest)
- if get_module_root(dest):
- die("Can't init a new module in another Odoo module, you probably want to run this "
- "command from your project's root")
- else:
- mroot = get_module_root(dest)
- if not mroot:
- die("The path `%s` provided does not point to an existing Odoo module. "
- "Forgot to `--init` ?" % dest)
- dest = mroot
-
- logging.disable(logging.CRITICAL)
- scaffold = ScaffoldModule(dest)
- if args.model:
- scaffold.add_model(snake(args.model))
- if args.controller:
- scaffold.add_controller(args.controller)
- if args.web:
- scaffold.add_webclient_structure()
- if args.theme:
- scaffold.add_theme_structure()
-
-class ScaffoldModule(object):
- """
- Object for scaffolding existing or new Odoo modules
+ args.template.render_to(
+ snake(args.name),
+ directory(args.dest, create=True),
+ {'name': args.name})
- @param path: Path of an existing module or path of module to create
- """
- def __init__(self, path):
- env = jinja2.Environment(loader=jinja2.PackageLoader(
- 'openerp.cli', 'scaffold'), keep_trailing_newline=True)
- env.filters['snake'] = snake
- self.env = env
- self.path = functools.partial(os.path.join, directory(path))
- self.created = not os.path.exists(self.path())
- directory(path, create=True)
- self.module = self.path().split(os.path.sep)[-1]
- if self.created:
- manifest_base = os.path.splitext(MANIFEST)[0]
- self.render_file('%s.jinja2' % manifest_base, self.path('%s.py' % manifest_base))
- # Create an empty __init__.py so the module can be imported
- open(self.path('__init__.py'), 'a').close()
-
- def add_model(self, model):
- model_module = snake(model)
- model_file = self.path('models', '%s.py' % model_module)
- if os.path.exists(model_file):
- die("Model `%s` already exists !" % model_file)
- self.add_init_import(self.path('__init__.py'), 'models')
- self.add_init_import(self.path('models', '__init__.py'), model_module)
-
- self.render_file('models.jinja2', model_file, model=model)
- self.render_file('ir.model.access.jinja2', self.path('security', 'ir.model.access.csv'),
- if_exists='append', model=model)
- self.append_manifest_list('data', 'security/ir.model.access.csv')
-
- demo_file = 'data/%s_demo.xml' % self.module
- self.append_xml_data('record.jinja2', self.path(demo_file),
- model=model)
- self.append_manifest_list('demo', demo_file)
-
- def add_controller(self, controller):
- controller_module = snake(controller)
- controller_file = self.path('controllers', '%s.py' % controller_module)
- if os.path.exists(controller_file):
- die("Controller `%s` already exists !" % controller_file)
- self.add_init_import(self.path('__init__.py'), 'controllers')
- # Check if the controller name correspond to a model and expose result to templates
- has_model = self.has_import(self.path('models', '__init__.py'), controller_module)
- self.add_init_import(self.path('controllers', '__init__.py'), controller_module)
- self.render_file('controllers.jinja2', controller_file, controller=controller,
- has_model=has_model)
-
- def add_webclient_structure(self):
- self.append_manifest_list('depends', 'web')
- prefix = '%s.%%s' % self.module
- for ext in ('js', 'css', 'xml'):
- self.render_file('webclient_%s.jinja2' % ext,
- self.path('static', 'src', ext, prefix % ext))
-
- def add_theme_structure(self):
- self.append_manifest_list('depends', 'website')
- css_file = '%s_theme.css' % self.module
- self.render_file('theme_css.jinja2', self.path('static', 'src', 'css', css_file))
- self.append_xml_data('theme_xml.jinja2', self.path('views', 'templates.xml'), skip_if_exist=True)
- self.append_manifest_list('data', 'views/templates.xml')
-
- def has_import(self, initfile, module):
- if not os.path.isfile(initfile):
- return False
- with open(initfile, 'r') as f:
- for imp in ast.parse(f.read()).body:
- if isinstance(imp, ast.Import):
- if module in [mod.name for mod in imp.names]:
- return True
- return False
-
- def get_manifest(self, key=None, default=None):
- manifest = load_manifest(self.module, self.path())
- if key:
- return manifest.get(key, default)
- else:
- return manifest
-
- def append_manifest_list(self, key, value, unique=True):
- # TODO: append value without altering serialized formatting
- vals = self.get_manifest(key, [])
- if unique and value in vals:
- return
- vals.append(value)
- self.change_manifest_key(key, vals)
-
- def change_manifest_key(self, key, value):
- value = simplejson.dumps(value)
- with open(self.path(MANIFEST), 'r') as f:
- data = f.read()
- sdata = re.split('["\']%s["\']\s?:\s?\[[^\]]*\]' % key, data)
- add = "'%s': %s" % (key, value)
- if len(sdata) != 2:
- warn("Could not update `%s` key in manifest. You should add this by yourself:"
- "\n\n%s\n" % (key, add))
- else:
- with open(self.path(MANIFEST), 'w') as f:
- f.write(add.join(sdata))
-
- def add_init_import(self, initfile, module):
- if not(os.path.exists(initfile) and self.has_import(initfile, module)):
- self.render_file('__init__.jinja2', initfile, if_exists='append', modules=[module])
-
- def render_file(self, template, dest, if_exists='skip', **kwargs):
- mode = 'a'
- if os.path.exists(dest):
- if if_exists == 'replace':
- mode = 'w'
- elif if_exists != 'append':
- warn("File `%s` already exists. Skipping it..." % dest)
- return
- else:
- kwargs['file_created'] = True
- outdir = os.path.dirname(dest)
- if not os.path.exists(outdir):
- os.makedirs(outdir)
- content = self.env.get_template(template).render(module=self.module, **kwargs)
- with open(dest, mode) as f:
- f.write(content)
-
- def append_xml_data(self, template, dest, skip_if_exist=False, **kwargs):
- if not os.path.exists(dest):
- self.render_file('xmldata.jinja2', dest, **kwargs)
- elif skip_if_exist:
- warn("File `%s` already exists. Skipping it..." % dest)
- with open(dest, 'r') as f:
- data = f.read()
- m = re.search('(^\s*)?</data>', data, re.MULTILINE)
- content = self.env.get_template(template).render(module=self.module, **kwargs)
- if not m:
- warn("Could not add data in `%s`. You should add this by yourself:"
- "\n\n%s\n" % (dest, content))
- else:
- data = data[:m.start()] + content + m.group() + data[m.end():]
- with open(self.path(dest), 'w') as f:
- f.write(data)
+ def epilog(self):
+ return "Built-in templates available are: %s" % ', '.join(
+ d for d in os.listdir(builtins())
+ if d != 'base'
+ )
+
+builtins = lambda *args: os.path.join(
+ os.path.abspath(os.path.dirname(__file__)),
+ 'templates',
+ *args)
def snake(s):
""" snake cases ``s``
@@ -223,13 +62,11 @@ def snake(s):
s = re.sub(r'(?<=[^A-Z])\B([A-Z])', r' \1', s)
# lowercase everything, split on whitespace and join
return '_'.join(s.lower().split())
-
-def identifier(s):
- if keyword.iskeyword(s):
- die("%s is a Python keyword and can not be used as a name" % s)
- if not re.match('[A-Za-z_][A-Za-z0-9_]*', s):
- die("%s is not a valid Python identifier" % s)
- return s
+def pascal(s):
+ return ''.join(
+ ss.capitalize()
+ for ss in re.sub('[_\s]+', ' ', s).split()
+ )
def directory(p, create=False):
expanded = os.path.abspath(
@@ -237,10 +74,57 @@ def directory(p, create=False):
os.path.expandvars(p)))
if create and not os.path.exists(expanded):
os.makedirs(expanded)
- if create and not os.path.isdir(expanded):
- die("%s exists but is not a directory" % p)
+ if not os.path.isdir(expanded):
+ die("%s is not a directory" % p)
return expanded
+env = jinja2.Environment()
+env.filters['snake'] = snake
+env.filters['pascal'] = pascal
+class template(object):
+ def __init__(self, identifier):
+ # TODO: directories, archives (zipfile, tarfile)
+ self.id = identifier
+ if not os.path.isdir(self.path):
+ die("{} is not a valid module template".format(identifier))
+
+ def __str__(self):
+ return self.id
+
+ @property
+ def path(self):
+ return builtins(self.id)
+
+ def files(self):
+ """ Lists the (local) path and content of all files in the template
+ """
+ for root, _, files in os.walk(self.path):
+ for f in files:
+ path = os.path.join(root, f)
+ yield path, open(path, 'rb').read()
+
+ def render_to(self, modname, directory, params=None):
+ """ Render this module template to ``dest`` with the provided
+ rendering parameters
+ """
+ # overwrite with local
+ for path, content in self.files():
+ _, ext = os.path.splitext(path)
+
+ local = os.path.relpath(path, self.path)
+ dest = os.path.join(directory, modname, local)
+ destdir = os.path.dirname(dest)
+ if not os.path.exists(destdir):
+ os.makedirs(destdir)
+
+ with open(dest, 'wb') as f:
+ if ext not in ('.py', '.xml', '.csv', '.js'):
+ f.write(content)
+ else:
+ env.from_string(content)\
+ .stream(params or {})\
+ .dump(f, encoding='utf-8')
+
def die(message, code=1):
print >>sys.stderr, message
sys.exit(code)
diff --git a/openerp/cli/scaffold/__init__.jinja2 b/openerp/cli/scaffold/__init__.jinja2
deleted file mode 100644
index e8b1efb3fc7..00000000000
--- a/openerp/cli/scaffold/__init__.jinja2
+++ /dev/null
@@ -1,3 +0,0 @@
-{% if file_created -%}# -*- coding: utf-8 -*-{%- endif %}
-{% for module in modules if module -%}import {{ module }}
-{%- endfor %}
diff --git a/openerp/cli/scaffold/controllers.jinja2 b/openerp/cli/scaffold/controllers.jinja2
deleted file mode 100644
index cbe0fdaed7a..00000000000
--- a/openerp/cli/scaffold/controllers.jinja2
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- coding: utf-8 -*-
-from openerp import http
-
-class {{ controller }}(http.Controller):
- @http.route('/{{ module }}/{{ controller }}', auth='public', website=True)
- def index(self, **kw):
- return "Hello, world!"
-{% if has_model %}
- @http.route('/{{ module }}/{{ controller }}/<model("{{ module }}.{{ controller }}"):{{ controller }}>'], type='http', auth='public', website=True)
- def {{ controller }}(self, {{ controller }}, **kw):
- return "Hello, %r!" % {{ controller }}
-{% endif %}
diff --git a/openerp/cli/scaffold/ir.model.access.jinja2 b/openerp/cli/scaffold/ir.model.access.jinja2
deleted file mode 100644
index af558a3b625..00000000000
--- a/openerp/cli/scaffold/ir.model.access.jinja2
+++ /dev/null
@@ -1,6 +0,0 @@
-{% if file_created -%}id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink{%- endif %}
-{% if model -%}
-access_{{ module }}_{{ model }},{{- '' -}}
-access_{{ module }}_{{ model }},{{- '' -}}
-model_{{ module }}_{{ model }},,1,0,0,0
-{%- endif %}
diff --git a/openerp/cli/scaffold/models.jinja2 b/openerp/cli/scaffold/models.jinja2
deleted file mode 100644
index d18e72a23a1..00000000000
--- a/openerp/cli/scaffold/models.jinja2
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-from openerp.models import Model
-from openerp.fields import Char
-
-
-class {{ model }}(Model):
- _name = "{{ module }}.{{ model }}"
-
- name = Char()
diff --git a/openerp/cli/scaffold/record.jinja2 b/openerp/cli/scaffold/record.jinja2
deleted file mode 100644
index 53e4ff22383..00000000000
--- a/openerp/cli/scaffold/record.jinja2
+++ /dev/null
@@ -1,4 +0,0 @@
- <record id="{{ module }}.{{ model }}_demo" model="{{ model }}">
- <field name="name">My first record for model '{{ module }}.{{ model }}'</field>
- </record>
-
diff --git a/openerp/cli/scaffold/theme_css.jinja2 b/openerp/cli/scaffold/theme_css.jinja2
deleted file mode 100644
index cd42d262c53..00000000000
--- a/openerp/cli/scaffold/theme_css.jinja2
+++ /dev/null
@@ -1,4 +0,0 @@
-@charset "utf-8";
-.{{ module }} {
- background: white;
-}
diff --git a/openerp/cli/scaffold/theme_xml.jinja2 b/openerp/cli/scaffold/theme_xml.jinja2
deleted file mode 100644
index 2e71368a347..00000000000
--- a/openerp/cli/scaffold/theme_xml.jinja2
+++ /dev/null
@@ -1,26 +0,0 @@
- <template id="assets_frontend" inherit_id="website.assets_frontend" name="Theme Zen">
- <xpath expr="." position="inside">
- <link rel="stylesheet" type="text/css" href="/{{ module }}/static/src/css/{{ module }}_theme.css" />
- </xpath>
- </template>
-
- <template id="website.page_{{ module }}" name="Page {{module}}">
- Page {{ module }}
- </template>
-
- <template id="{{module}}_snippets" name="{{ module }} Snippet" inherit_id="website.snippets">
- <xpath expr="//div[@id='snippet_content']" position="inside">
- <div>
- <div class="oe_snippet_thumbnail">
- <div style="background: white;box-shadow:none;-webkit-box-shadow:none;" class="oe_snippet_thumbnail_img">
- <i class="fa fa-file-code-o fa-5x text-muted"></i>
- </div>
- <span class="oe_snippet_thumbnail_title">{{ module }} Snipper</span>
- </div>
- <section class="oe_snippet_body mb16 mt16">
- <h1>{{ module }} snippet</h1>
- </section>
- </div>
- </xpath>
- </template>
-
diff --git a/openerp/cli/scaffold/webclient_css.jinja2 b/openerp/cli/scaffold/webclient_css.jinja2
deleted file mode 100644
index dadce53503b..00000000000
--- a/openerp/cli/scaffold/webclient_css.jinja2
+++ /dev/null
@@ -1,4 +0,0 @@
-@charset "utf-8";
-.openerp .oe_{{ module }} {
- background: white;
-}
diff --git a/openerp/cli/scaffold/webclient_js.jinja2 b/openerp/cli/scaffold/webclient_js.jinja2
deleted file mode 100644
index 9845e6f0662..00000000000
--- a/openerp/cli/scaffold/webclient_js.jinja2
+++ /dev/null
@@ -1,14 +0,0 @@
-openerp.{{ module }} = function (instance) {
-
-var _t = instance.web._t,
- _lt = instance.web._lt;
-var QWeb = instance.web.qweb;
-
-instance.web.WebClient.include({
- show_application: function () {
- console.log("Show application");
- return this._super.apply(this, arguments);
- };
-});
-
-};
diff --git a/openerp/cli/scaffold/webclient_xml.jinja2 b/openerp/cli/scaffold/webclient_xml.jinja2
deleted file mode 100644
index 98da7f73133..00000000000
--- a/openerp/cli/scaffold/webclient_xml.jinja2
+++ /dev/null
@@ -1,7 +0,0 @@
-<template>
-<t t-name="{{ module }}.MyWidget">
- <div class="oe_{{ module }}">
- Hello World!
- </div>
-</t>
-</template>
diff --git a/openerp/cli/scaffold/xmldata.jinja2 b/openerp/cli/scaffold/xmldata.jinja2
deleted file mode 100644
index 9a29774d6bf..00000000000
--- a/openerp/cli/scaffold/xmldata.jinja2
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
- <data{% if noupdate %} noupdate="1"{% endif %}>
- </data>
-</openerp>
diff --git a/openerp/cli/templates/default/__init__.py b/openerp/cli/templates/default/__init__.py
new file mode 100644
index 00000000000..43dbbaa6318
--- /dev/null
+++ b/openerp/cli/templates/default/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+import controllers
+import models
diff --git a/openerp/cli/scaffold/__openerp__.jinja2 b/openerp/cli/templates/default/__openerp__.py
index b62a15d024a..dab78e6555e 100644
--- a/openerp/cli/scaffold/__openerp__.jinja2
+++ b/openerp/cli/templates/default/__openerp__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
{
- 'name': "{{ module }}",
+ 'name': "{{ name }}",
'summary': """
Short (1 phrase/line) summary of the module's purpose, used as
@@ -14,18 +14,21 @@
'website': "http://www.yourcompany.com",
# Categories can be used to filter modules in modules listing
- # Check <odoo>/addons/base/module/module_data.xml of the full list
+ # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml
+ # for the full list
'category': 'Uncategorized',
'version': '0.1',
# any module necessary for this one to work correctly
- 'depends': ['base', 'website'],
+ 'depends': ['base'],
+
+ # always loaded
'data': [
+ # 'security/ir.model.access.csv',
+ 'templates.xml',
],
-
+ # only loaded in demonstration mode
'demo': [
- ],
-
- 'tests': [
+ 'demo.xml',
],
}
diff --git a/openerp/cli/templates/default/controllers.py b/openerp/cli/templates/default/controllers.py
new file mode 100644
index 00000000000..505208171fc
--- /dev/null
+++ b/openerp/cli/templates/default/controllers.py
@@ -0,0 +1,23 @@
+{%- set mod = name|snake -%}
+{%- set model = "%s.%s"|format(mod, mod) -%}
+{%- set root = "/%s/%s"|format(mod, mod) -%}
+# -*- coding: utf-8 -*-
+from openerp import http
+
+# class {{ mod|pascal }}(http.Controller):
+# @http.route('{{ root }}/', auth='public')
+# def index(self, **kw):
+# return "Hello, world"
+
+# @http.route('{{ root }}/objects/', auth='public')
+# def list(self, **kw):
+# return http.request.render('{{ mod }}.listing', {
+# 'root': '{{ root }}',
+# 'objects': http.request.env['{{ model }}'].search([]),
+# })
+
+# @http.route('{{ root }}/objects/<model("{{ model }}"):obj>/', auth='public')
+# def object(self, obj, **kw):
+# return http.request.render('{{ mod }}.object', {
+# 'object': obj
+# })
diff --git a/openerp/cli/templates/default/demo.xml b/openerp/cli/templates/default/demo.xml
new file mode 100644
index 00000000000..6c84d877784
--- /dev/null
+++ b/openerp/cli/templates/default/demo.xml
@@ -0,0 +1,11 @@
+{%- set mod= name|snake -%}
+{%- set model = "%s.%s"|format(mod, mod) -%}
+<openerp>
+ <data>
+ <!-- {% for item in range(5) %} -->
+ <!-- <record id="object{{ item }}" model="{{ model }}"> -->
+ <!-- <field name="name">Object {{ item }}</field> -->
+ <!-- </record> -->
+ <!-- {% endfor %} -->
+ </data>
+</openerp>
diff --git a/openerp/cli/templates/default/models.py b/openerp/cli/templates/default/models.py
new file mode 100644
index 00000000000..4d76ef9e2d6
--- /dev/null
+++ b/openerp/cli/templates/default/models.py
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+from openerp import models, fields, api
+
+# class {{ name|snake }}(models.Model):
+# _name = '{{ name|snake }}.{{ name|snake }}'
+
+# name = fields.Char()
diff --git a/openerp/cli/templates/default/security/ir.model.access.csv b/openerp/cli/templates/default/security/ir.model.access.csv
new file mode 100644
index 00000000000..71a2352fedc
--- /dev/null
+++ b/openerp/cli/templates/default/security/ir.model.access.csv
@@ -0,0 +1,6 @@
+{%- set snake_name = name|snake -%}
+{%- set id = "access_%s_%s"|format(snake_name, snake_name) -%}
+{%- set name = "%s.%s"|format(snake_name, snake_name) -%}
+{%- set model_id = "model_%s_%s"|format(snake_name, snake_name) -%}
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+{{ id }},{{ name }},{{ model_id }},,1,0,0,0
diff --git a/openerp/cli/templates/default/templates.xml b/openerp/cli/templates/default/templates.xml
new file mode 100644
index 00000000000..b9166501678
--- /dev/null
+++ b/openerp/cli/templates/default/templates.xml
@@ -0,0 +1,22 @@
+<openerp>
+ <data>
+ <!-- <template id="listing"> -->
+ <!-- <ul> -->
+ <!-- <li t-foreach="objects" t-as="object"> -->
+ <!-- <a t-attf-href="#{ root }/objects/#{ object.id }"> -->
+ <!-- <t t-esc="object.display_name"/> -->
+ <!-- </a> -->
+ <!-- </li> -->
+ <!-- </ul> -->
+ <!-- </template> -->
+ <!-- <template id="object"> -->
+ <!-- <h1><t t-esc="object.display_name"/></h1> -->
+ <!-- <dl> -->
+ <!-- <t t-foreach="object._fields" t-as="field"> -->
+ <!-- <dt><t t-esc="field"/></dt> -->
+ <!-- <dd><t t-esc="object[field]"/></dd> -->
+ <!-- </t> -->
+ <!-- </dl> -->
+ <!-- </template> -->
+ </data>
+</openerp>
diff --git a/openerp/cli/templates/theme/__init__.py b/openerp/cli/templates/theme/__init__.py
new file mode 100644
index 00000000000..40a96afc6ff
--- /dev/null
+++ b/openerp/cli/templates/theme/__init__.py
@@ -0,0 +1 @@
+# -*- coding: utf-8 -*-
diff --git a/openerp/cli/templates/theme/__openerp__.py b/openerp/cli/templates/theme/__openerp__.py
new file mode 100644
index 00000000000..329483fa078
--- /dev/null
+++ b/openerp/cli/templates/theme/__openerp__.py
@@ -0,0 +1,20 @@
+{
+ # Theme information
+ 'name': "{{name}}",
+ 'description': """
+ """,
+ 'category': 'Theme',
+ 'version': '1.0',
+ 'depends': ['website'],
+
+ # templates, pages, and snippets
+ 'data': [
+ 'views/pages.xml',
+ 'views/options.xml',
+ 'views/snippets.xml',
+ ],
+
+ # Your information
+ 'author': "Your Company",
+ 'website': "",
+}
diff --git a/openerp/cli/templates/theme/static/style/custom.less b/openerp/cli/templates/theme/static/style/custom.less
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/openerp/cli/templates/theme/static/style/custom.less
diff --git a/openerp/cli/templates/theme/views/options.xml b/openerp/cli/templates/theme/views/options.xml
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/openerp/cli/templates/theme/views/options.xml
diff --git a/openerp/cli/templates/theme/views/pages.xml b/openerp/cli/templates/theme/views/pages.xml
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/openerp/cli/templates/theme/views/pages.xml
diff --git a/openerp/cli/templates/theme/views/snippets.xml b/openerp/cli/templates/theme/views/snippets.xml
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/openerp/cli/templates/theme/views/snippets.xml
diff --git a/openerp/exceptions.py b/openerp/exceptions.py
index 1d59fa67a7c..6e5d4448451 100644
--- a/openerp/exceptions.py
+++ b/openerp/exceptions.py
@@ -64,6 +64,10 @@ class MissingError(except_orm):
def __init__(self, msg):
super(MissingError, self).__init__('MissingError', msg)
+class ValidationError(except_orm):
+ def __init__(self, msg):
+ super(ValidationError, self).__init__('ValidateError', msg)
+
class DeferredException(Exception):
""" Exception object holding a traceback for asynchronous reporting.
diff --git a/openerp/fields.py b/openerp/fields.py
index 08270ae52f0..3c4744a89e0 100644
--- a/openerp/fields.py
+++ b/openerp/fields.py
@@ -40,7 +40,6 @@ DATETIME_LENGTH = len(datetime.now().strftime(DATETIME_FORMAT))
_logger = logging.getLogger(__name__)
-
class SpecialValue(object):
""" Encapsulates a value in the cache in place of a normal value. """
def __init__(self, value):
@@ -125,12 +124,21 @@ class Field(object):
:param default: the default value for the field; this is either a static
value, or a function taking a recordset and returning a value
- :param states: a dictionary mapping state values to lists of attribute-value
- pairs; possible attributes are: 'readonly', 'required', 'invisible'
+ :param states: a dictionary mapping state values to lists of UI attribute-value
+ pairs; possible attributes are: 'readonly', 'required', 'invisible'.
+ Note: Any state-based condition requires the ``state`` field value to be
+ available on the client-side UI. This is typically done by including it in
+ the relevant views, possibly made invisible if not relevant for the
+ end-user.
:param groups: comma-separated list of group xml ids (string); this
restricts the field access to the users of the given groups only
+ :param bool copy: whether the field value should be copied when the record
+ is duplicated (default: ``True`` for normal fields, ``False`` for
+ ``one2many`` and computed fields, including property fields and
+ related fields)
+
.. _field-computed:
.. rubric:: Computed fields
@@ -228,11 +236,12 @@ class Field(object):
.. rubric:: Incremental definition
- A field is defined as class attribute on a model class. If the model is
- extended (see :class:`BaseModel`), one can also extend the field
- definition by redefining a field with the same name and same type on the
- subclass. In that case, the attributes of the field are taken from the
- parent class and overridden by the ones given in subclasses.
+ A field is defined as class attribute on a model class. If the model
+ is extended (see :class:`~openerp.models.Model`), one can also extend
+ the field definition by redefining a field with the same name and same
+ type on the subclass. In that case, the attributes of the field are
+ taken from the parent class and overridden by the ones given in
+ subclasses.
For instance, the second class below only adds a tooltip on the field
``state``::
@@ -259,10 +268,11 @@ class Field(object):
relational = False # whether the field is a relational one
model_name = None # name of the model of this field
comodel_name = None # name of the model of values (if relational)
- inverse_field = None # inverse field (object), if it exists
+ inverse_fields = None # list of inverse fields (objects)
store = True # whether the field is stored in database
index = False # whether the field is indexed in database
+ manual = False # whether the field is a custom field
copyable = True # whether the field is copied over by BaseModel.copy()
depends = () # collection of field dependencies
recursive = False # whether self depends on itself
@@ -270,6 +280,7 @@ class Field(object):
inverse = None # inverse(recs) inverses field on recs
search = None # search(recs, operator, value) searches on self
related = None # sequence of field names, for related fields
+ related_sudo = True # whether related fields should be read as admin
company_dependent = False # whether `self` is company-dependent (property field)
default = None # default value
@@ -279,6 +290,8 @@ class Field(object):
required = False
states = None
groups = False # csv list of group xml ids
+ change_default = None # whether the field may trigger a "user-onchange"
+ deprecated = None # whether the field is ... deprecated
def __init__(self, string=None, **kwargs):
kwargs['string'] = string
@@ -286,7 +299,9 @@ class Field(object):
self._free_attrs = []
def copy(self, **kwargs):
- """ make a copy of `self`, possibly modified with parameters `kwargs` """
+ """ copy(item) -> test
+
+ make a copy of `self`, possibly modified with parameters `kwargs` """
field = copy(self)
field._attrs = {key: val for key, val in kwargs.iteritems() if val is not None}
field._free_attrs = list(self._free_attrs)
@@ -348,7 +363,7 @@ class Field(object):
# invalidates the cache of each `field`, and registers the records to
# recompute based on `path`. See method `modified` below for details.
self._triggers = set()
- self.inverse_field = None
+ self.inverse_fields = []
def setup(self, env):
""" Complete the setup of `self` (dependencies, recomputation triggers,
@@ -403,7 +418,8 @@ class Field(object):
self.depends = ('.'.join(self.related),)
self.compute = self._compute_related
self.inverse = self._inverse_related
- self.search = self._search_related
+ if field._description_searchable(env):
+ self.search = self._search_related
# copy attributes from field to self (string, help, etc.)
for attr, prop in self.related_attrs:
@@ -412,13 +428,16 @@ class Field(object):
def _compute_related(self, records):
""" Compute the related field `self` on `records`. """
- for record in records:
- # bypass access rights check when traversing the related path
- value = record.sudo() if record.id else record
- # traverse the intermediate fields, and keep at most one record
+ # when related_sudo, bypass access rights checks when reading values
+ others = records.sudo() if self.related_sudo else records
+ for record, other in zip(records, others):
+ if not record.id:
+ # draft record, do not switch to another environment
+ other = record
+ # traverse the intermediate fields; follow the first record at each step
for name in self.related[:-1]:
- value = value[name][:1]
- record[self.name] = value[self.related[-1]]
+ other = other[name][:1]
+ record[self.name] = other[self.related[-1]]
def _inverse_related(self, records):
""" Inverse the related field `self` on `records`. """
@@ -496,10 +515,10 @@ class Field(object):
#_logger.debug("Add trigger on %s to recompute %s", field, self)
field._triggers.add((self, '.'.join(path0 or ['id'])))
- # add trigger on inverse field, too
- if field.inverse_field:
- #_logger.debug("Add trigger on %s to recompute %s", field.inverse_field, self)
- field.inverse_field._triggers.add((self, '.'.join(path0 + [head])))
+ # add trigger on inverse fields, too
+ for invf in field.inverse_fields:
+ #_logger.debug("Add trigger on %s to recompute %s", invf, self)
+ invf._triggers.add((self, '.'.join(path0 + [head])))
# recursively traverse the dependency
if tail:
@@ -519,23 +538,28 @@ class Field(object):
def get_description(self, env):
""" Return a dictionary that describes the field `self`. """
desc = {'type': self.type}
- # determine 'store'
- if self.store:
- # if the corresponding column is a function field, check the column
- column = env[self.model_name]._columns.get(self.name)
- desc['store'] = bool(getattr(column, 'store', True))
- else:
- desc['store'] = False
- # determine other attributes
for attr, prop in self.description_attrs:
value = getattr(self, prop)
if callable(value):
value = value(env)
- if value:
+ if value is not None:
desc[attr] = value
+
return desc
# properties used by get_description()
+
+ def _description_store(self, env):
+ if self.store:
+ # if the corresponding column is a function field, check the column
+ column = env[self.model_name]._columns.get(self.name)
+ return bool(getattr(column, 'store', True))
+ return False
+
+ def _description_searchable(self, env):
+ return self._description_store(env) or bool(self.search)
+
+ _description_manual = property(attrgetter('manual'))
_description_depends = property(attrgetter('depends'))
_description_related = property(attrgetter('related'))
_description_company_dependent = property(attrgetter('company_dependent'))
@@ -543,6 +567,8 @@ class Field(object):
_description_required = property(attrgetter('required'))
_description_states = property(attrgetter('states'))
_description_groups = property(attrgetter('groups'))
+ _description_change_default = property(attrgetter('change_default'))
+ _description_deprecated = property(attrgetter('deprecated'))
def _description_string(self, env):
if self.string and env.lang:
@@ -588,12 +614,15 @@ class Field(object):
# properties used by to_column() to create a column instance
_column_copy = property(attrgetter('copyable'))
_column_select = property(attrgetter('index'))
+ _column_manual = property(attrgetter('manual'))
_column_string = property(attrgetter('string'))
_column_help = property(attrgetter('help'))
_column_readonly = property(attrgetter('readonly'))
_column_required = property(attrgetter('required'))
_column_states = property(attrgetter('states'))
_column_groups = property(attrgetter('groups'))
+ _column_change_default = property(attrgetter('change_default'))
+ _column_deprecated = property(attrgetter('deprecated'))
############################################################################
#
@@ -604,11 +633,13 @@ class Field(object):
""" return the null value for this field in the given environment """
return False
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
""" convert `value` to the cache level in `env`; `value` may come from
an assignment, or have the format of methods :meth:`BaseModel.read`
or :meth:`BaseModel.write`
+ :param record: the target record for the assignment, or an empty recordset
+
:param bool validate: when True, field-specific validation of
`value` will be performed
"""
@@ -693,7 +724,7 @@ class Field(object):
record.ensure_one()
# adapt value to the cache level
- value = self.convert_to_cache(value, env)
+ value = self.convert_to_cache(value, record)
if env.in_draft or not record.id:
# determine dependent fields
@@ -702,8 +733,8 @@ class Field(object):
# set value in cache, inverse field, and mark record as dirty
record._cache[self] = value
if env.in_onchange:
- if self.inverse_field:
- self.inverse_field._update(value, record)
+ for invf in self.inverse_fields:
+ invf._update(value, record)
record._dirty = True
# determine more dependent fields, and invalidate them
@@ -853,10 +884,9 @@ class Field(object):
class Boolean(Field):
- """ Boolean field. """
type = 'boolean'
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
return bool(value)
def convert_to_export(self, value, env):
@@ -866,10 +896,9 @@ class Boolean(Field):
class Integer(Field):
- """ Integer field. """
type = 'integer'
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
return int(value or 0)
def convert_to_read(self, value, use_name_get=True):
@@ -885,11 +914,10 @@ class Integer(Field):
class Float(Field):
- """ Float field. The precision digits are given by the attribute
-
- :param digits: a pair (total, decimal), or a function taking a database
- cursor and returning a pair (total, decimal)
+ """ The precision digits are given by the attribute
+ :param digits: a pair (total, decimal), or a function taking a database
+ cursor and returning a pair (total, decimal)
"""
type = 'float'
_digits = None # digits argument passed to class initializer
@@ -909,7 +937,7 @@ class Float(Field):
_column_digits = property(lambda self: not callable(self._digits) and self._digits)
_column_digits_compute = property(lambda self: callable(self._digits) and self._digits)
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
# apply rounding here, otherwise value in cache may be wrong!
if self.digits:
return float_round(float(value or 0.0), precision_digits=self.digits[1])
@@ -927,14 +955,11 @@ class _String(Field):
class Char(_String):
- """ Char field.
-
- :param size: the maximum size of values stored for that field (integer,
- optional)
-
- :param translate: whether the value of the field has translations
- (boolean, by default ``False``)
+ """ Basic string field, can be length-limited, usually displayed as a
+ single-line string in clients
+ :param int size: the maximum size of values stored for that field
+ :param bool translate: whether the values of this field can be translated
"""
type = 'char'
size = None
@@ -943,34 +968,41 @@ class Char(_String):
_related_size = property(attrgetter('size'))
_description_size = property(attrgetter('size'))
- def convert_to_cache(self, value, env, validate=True):
- return bool(value) and ustr(value)[:self.size]
-
+ def convert_to_cache(self, value, record, validate=True):
+ if value is None or value is False:
+ return False
+ return ustr(value)[:self.size]
class Text(_String):
- """ Text field. Very similar to :class:`Char`, but typically for longer
- contents.
-
- :param translate: whether the value of the field has translations
- (boolean, by default ``False``)
+ """ Text field. Very similar to :class:`~.Char` but used for longer
+ contents and displayed as a multiline text box
+ :param translate: whether the value of this field can be translated
"""
type = 'text'
- def convert_to_cache(self, value, env, validate=True):
- return bool(value) and ustr(value)
-
+ def convert_to_cache(self, value, record, validate=True):
+ if value is None or value is False:
+ return False
+ return ustr(value)
class Html(_String):
- """ Html field. """
type = 'html'
+ sanitize = True # whether value must be sanitized
- def convert_to_cache(self, value, env, validate=True):
- return bool(value) and html_sanitize(value)
+ _column_sanitize = property(attrgetter('sanitize'))
+ _related_sanitize = property(attrgetter('sanitize'))
+ _description_sanitize = property(attrgetter('sanitize'))
+
+ def convert_to_cache(self, value, record, validate=True):
+ if value is None or value is False:
+ return False
+ if validate and self.sanitize:
+ return html_sanitize(value)
+ return value
class Date(Field):
- """ Date field. """
type = 'date'
@staticmethod
@@ -1014,12 +1046,15 @@ class Date(Field):
""" Convert a :class:`date` value into the format expected by the ORM. """
return value.strftime(DATE_FORMAT)
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
if not value:
return False
if isinstance(value, basestring):
- value = self.from_string(value)
- return value.strftime(DATE_FORMAT)
+ if validate:
+ # force parsing for validation
+ self.from_string(value)
+ return value[:DATE_LENGTH]
+ return self.to_string(value)
def convert_to_export(self, value, env):
if value and env.context.get('export_raw_data'):
@@ -1028,7 +1063,6 @@ class Date(Field):
class Datetime(Field):
- """ Datetime field. """
type = 'datetime'
@staticmethod
@@ -1079,12 +1113,18 @@ class Datetime(Field):
""" Convert a :class:`datetime` value into the format expected by the ORM. """
return value.strftime(DATETIME_FORMAT)
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
if not value:
return False
if isinstance(value, basestring):
- value = self.from_string(value)
- return value.strftime(DATETIME_FORMAT)
+ if validate:
+ # force parsing for validation
+ self.from_string(value)
+ value = value[:DATETIME_LENGTH]
+ if len(value) == DATE_LENGTH:
+ value += " 00:00:00"
+ return value
+ return self.to_string(value)
def convert_to_export(self, value, env):
if value and env.context.get('export_raw_data'):
@@ -1093,23 +1133,24 @@ class Datetime(Field):
class Binary(Field):
- """ Binary field. """
type = 'binary'
class Selection(Field):
- """ Selection field.
-
- :param selection: specifies the possible values for this field.
- It is given as either a list of pairs (`value`, `string`), or a
- model method, or a method name.
-
- The attribute `selection` is mandatory except in the case of related
- fields (see :ref:`field-related`) or field extensions
- (see :ref:`field-incremental-definition`).
+ """
+ :param selection: specifies the possible values for this field.
+ It is given as either a list of pairs (`value`, `string`), or a
+ model method, or a method name.
+ :param selection_add: provides an extension of the selection in the case
+ of an overridden field. It is a list of pairs (`value`, `string`).
+
+ The attribute `selection` is mandatory except in the case of
+ :ref:`related fields <field-related>` or :ref:`field extensions
+ <field-incremental-definition>`.
"""
type = 'selection'
- selection = None # [(value, string), ...], model method or method name
+ selection = None # [(value, string), ...], function or method name
+ selection_add = None # [(value, string), ...]
def __init__(self, selection=None, string=None, **kwargs):
if callable(selection):
@@ -1123,6 +1164,23 @@ class Selection(Field):
field = self.related_field
self.selection = lambda model: field._description_selection(model.env)
+ def _setup_regular(self, env):
+ super(Selection, self)._setup_regular(env)
+ # determine selection (applying extensions)
+ cls = type(env[self.model_name])
+ selection = None
+ for field in resolve_all_mro(cls, self.name, reverse=True):
+ if isinstance(field, type(self)):
+ # We cannot use field.selection or field.selection_add here
+ # because those attributes are overridden by `set_class_name`.
+ if 'selection' in field._attrs:
+ selection = field._attrs['selection']
+ if 'selection_add' in field._attrs:
+ selection = selection + field._attrs['selection_add']
+ else:
+ selection = None
+ self.selection = selection
+
def _description_selection(self, env):
""" return the selection list (pairs (value, label)); labels are
translated according to context language
@@ -1159,10 +1217,10 @@ class Selection(Field):
selection = selection(env[self.model_name])
return [value for value, _ in selection]
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
if not validate:
return value or False
- if value in self.get_values(env):
+ if value in self.get_values(record.env):
return value
elif not value:
return False
@@ -1179,16 +1237,6 @@ class Selection(Field):
class Reference(Selection):
- """ Reference field.
-
- :param selection: specifies the possible model names for this field.
- It is given as either a list of pairs (`value`, `string`), or a
- model method, or a method name.
-
- The attribute `selection` is mandatory except in the case of related
- fields (see :ref:`field-related`) or field extensions
- (see :ref:`field-incremental-definition`).
- """
type = 'reference'
size = 128
@@ -1199,14 +1247,14 @@ class Reference(Selection):
_column_size = property(attrgetter('size'))
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
if isinstance(value, BaseModel):
- if ((not validate or value._name in self.get_values(env))
+ if ((not validate or value._name in self.get_values(record.env))
and len(value) <= 1):
- return value.with_env(env) or False
+ return value.with_env(record.env) or False
elif isinstance(value, basestring):
res_model, res_id = value.split(',')
- return env[res_model].browse(int(res_id))
+ return record.env[res_model].browse(int(res_id))
elif not value:
return False
raise ValueError("Wrong value for %s: %r" % (self, value))
@@ -1241,38 +1289,38 @@ class _Relational(Field):
return env[self.comodel_name]
def modified(self, records):
- # Invalidate cache for self.inverse_field, too. Note that recomputation
- # of fields that depend on self.inverse_field is already covered by the
+ # Invalidate cache for self.inverse_fields, too. Note that recomputation
+ # of fields that depend on self.inverse_fields is already covered by the
# triggers (see above).
spec = super(_Relational, self).modified(records)
- if self.inverse_field:
- spec.append((self.inverse_field, None))
+ for invf in self.inverse_fields:
+ spec.append((invf, None))
return spec
class Many2one(_Relational):
- """ Many2one field; the value of such a field is a recordset of size 0 (no
- record) or 1 (a single record).
+ """ The value of such a field is a recordset of size 0 (no
+ record) or 1 (a single record).
- :param comodel_name: name of the target model (string)
+ :param comodel_name: name of the target model (string)
- :param domain: an optional domain to set on candidate values on the
- client side (domain or string)
+ :param domain: an optional domain to set on candidate values on the
+ client side (domain or string)
- :param context: an optional context to use on the client side when
- handling that field (dictionary)
+ :param context: an optional context to use on the client side when
+ handling that field (dictionary)
- :param ondelete: what to do when the referred record is deleted;
- possible values are: ``'set null'``, ``'restrict'``, ``'cascade'``
+ :param ondelete: what to do when the referred record is deleted;
+ possible values are: ``'set null'``, ``'restrict'``, ``'cascade'``
- :param auto_join: whether JOINs are generated upon search through that
- field (boolean, by default ``False``)
+ :param auto_join: whether JOINs are generated upon search through that
+ field (boolean, by default ``False``)
- :param delegate: set it to ``True`` to make fields of the target model
- accessible from the current model (corresponds to ``_inherits``)
+ :param delegate: set it to ``True`` to make fields of the target model
+ accessible from the current model (corresponds to ``_inherits``)
- The attribute `comodel_name` is mandatory except in the case of related
- fields or field extensions.
+ The attribute `comodel_name` is mandatory except in the case of related
+ fields or field extensions.
"""
type = 'many2one'
ondelete = 'set null' # what to do when value is deleted
@@ -1285,7 +1333,7 @@ class Many2one(_Relational):
def _setup_regular(self, env):
super(Many2one, self)._setup_regular(env)
- # self.inverse_field is determined by the corresponding One2many field
+ # self.inverse_fields is populated by the corresponding One2many field
# determine self.delegate
self.delegate = self.name in env[self.model_name]._inherits.values()
@@ -1297,19 +1345,19 @@ class Many2one(_Relational):
""" Update the cached value of `self` for `records` with `value`. """
records._cache[self] = value
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
if isinstance(value, (NoneType, int)):
- return env[self.comodel_name].browse(value)
+ return record.env[self.comodel_name].browse(value)
if isinstance(value, BaseModel):
if value._name == self.comodel_name and len(value) <= 1:
- return value.with_env(env)
+ return value.with_env(record.env)
raise ValueError("Wrong value for %s: %r" % (self, value))
elif isinstance(value, tuple):
- return env[self.comodel_name].browse(value[0])
+ return record.env[self.comodel_name].browse(value[0])
elif isinstance(value, dict):
- return env[self.comodel_name].new(value)
+ return record.env[self.comodel_name].new(value)
else:
- return env[self.comodel_name].browse(value)
+ return record.env[self.comodel_name].browse(value)
def convert_to_read(self, value, use_name_get=True):
if use_name_get and value:
@@ -1321,7 +1369,7 @@ class Many2one(_Relational):
return value.id
def convert_to_write(self, value, target=None, fnames=None):
- return bool(value) and (value.id or value._convert_to_write(value._cache))
+ return value.id
def convert_to_onchange(self, value):
return value.id
@@ -1342,35 +1390,57 @@ class Many2one(_Relational):
record[self.name] = record.env[self.comodel_name].new()
+class UnionUpdate(SpecialValue):
+ """ Placeholder for a value update; when this value is taken from the cache,
+ it returns ``record[field.name] | value`` and stores it in the cache.
+ """
+ def __init__(self, field, record, value):
+ self.args = (field, record, value)
+
+ def get(self):
+ field, record, value = self.args
+ # in order to read the current field's value, remove self from cache
+ del record._cache[field]
+ # read the current field's value, and update it in cache only
+ record._cache[field] = new_value = record[field.name] | value
+ return new_value
+
+
class _RelationalMulti(_Relational):
""" Abstract class for relational fields *2many. """
def _update(self, records, value):
""" Update the cached value of `self` for `records` with `value`. """
for record in records:
- record._cache[self] = record[self.name] | value
+ if self in record._cache:
+ record._cache[self] = record[self.name] | value
+ else:
+ record._cache[self] = UnionUpdate(self, record, value)
- def convert_to_cache(self, value, env, validate=True):
+ def convert_to_cache(self, value, record, validate=True):
if isinstance(value, BaseModel):
if value._name == self.comodel_name:
- return value.with_env(env)
+ return value.with_env(record.env)
elif isinstance(value, list):
# value is a list of record ids or commands
- result = env[self.comodel_name]
+ if not record.id:
+ record = record.browse() # new record has no value
+ result = record[self.name]
+ # modify result with the commands;
+ # beware to not introduce duplicates in result
for command in value:
if isinstance(command, (tuple, list)):
if command[0] == 0:
result += result.new(command[2])
elif command[0] == 1:
- record = result.browse(command[1])
- record.update(command[2])
- result += record
+ result.browse(command[1]).update(command[2])
elif command[0] == 2:
- pass
+ # note: the record will be deleted by write()
+ result -= result.browse(command[1])
elif command[0] == 3:
- pass
+ result -= result.browse(command[1])
elif command[0] == 4:
- result += result.browse(command[1])
+ result += result.browse(command[1]) - result
elif command[0] == 5:
result = result.browse()
elif command[0] == 6:
@@ -1378,10 +1448,10 @@ class _RelationalMulti(_Relational):
elif isinstance(command, dict):
result += result.new(command)
else:
- result += result.browse(command)
+ result += result.browse(command) - result
return result
elif not value:
- return self.null(env)
+ return self.null(record.env)
raise ValueError("Wrong value for %s: %s" % (self, value))
def convert_to_read(self, value, use_name_get=True):
@@ -1399,10 +1469,10 @@ class _RelationalMulti(_Relational):
add_existing = lambda id: result.append((4, id))
if fnames is None:
- # take all fields in cache, except the inverse of self
+ # take all fields in cache, except the inverses of self
fnames = set(value._fields) - set(MAGIC_COLUMNS)
- if self.inverse_field:
- fnames.discard(self.inverse_field.name)
+ for invf in self.inverse_fields:
+ fnames.discard(invf.name)
# add new and existing records
for record in value:
@@ -1424,6 +1494,15 @@ class _RelationalMulti(_Relational):
def convert_to_display_name(self, value):
raise NotImplementedError()
+ def _compute_related(self, records):
+ """ Compute the related field `self` on `records`. """
+ for record in records:
+ value = record
+ # traverse the intermediate fields, and keep at most one record
+ for name in self.related[:-1]:
+ value = value[name][:1]
+ record[self.name] = value[self.related[-1]]
+
class One2many(_RelationalMulti):
""" One2many field; the value of such a field is the recordset of all the
@@ -1469,8 +1548,8 @@ class One2many(_RelationalMulti):
if self.inverse_name:
# link self to its inverse field and vice-versa
invf = env[self.comodel_name]._fields[self.inverse_name]
- self.inverse_field = invf
- invf.inverse_field = self
+ self.inverse_fields.append(invf)
+ invf.inverse_fields.append(self)
_description_relation_field = property(attrgetter('inverse_name'))
@@ -1540,8 +1619,8 @@ class Many2many(_RelationalMulti):
# if inverse field has already been setup, it is present in m2m
invf = m2m.get((self.relation, self.column2, self.column1))
if invf:
- self.inverse_field = invf
- invf.inverse_field = self
+ self.inverse_fields.append(invf)
+ invf.inverse_fields.append(self)
else:
# add self in m2m, so that its inverse field can find it
m2m[(self.relation, self.column1, self.column2)] = self
@@ -1555,12 +1634,17 @@ class Many2many(_RelationalMulti):
class Id(Field):
""" Special case for field 'id'. """
store = True
+ #: Can't write this!
readonly = True
def __init__(self, string=None, **kwargs):
super(Id, self).__init__(type='integer', string=string, **kwargs)
def to_column(self):
+ """ to_column() -> fields._column
+
+ Whatever
+ """
return fields.integer('ID')
def __get__(self, record, owner):
diff --git a/openerp/http.py b/openerp/http.py
index c154330b059..281b239c265 100644
--- a/openerp/http.py
+++ b/openerp/http.py
@@ -41,6 +41,9 @@ from openerp.tools.func import lazy_property
_logger = logging.getLogger(__name__)
+# 1 week cache for statics as advised by Google Page Speed
+STATIC_CACHE = 60 * 60 * 24 * 7
+
#----------------------------------------------------------
# RequestHandler
#----------------------------------------------------------
@@ -139,7 +142,7 @@ def redirect_with_hash(url, code=303):
return "<html><head><script>window.location = '%s' + location.hash;</script></head></html>" % url
class WebRequest(object):
- """ Parent class for all OpenERP Web request types, mostly deals with
+ """ Parent class for all Odoo Web request types, mostly deals with
initialization and setup of the request object (the dispatching itself has
to be handled by the subclasses)
@@ -151,60 +154,20 @@ class WebRequest(object):
the original :class:`werkzeug.wrappers.Request` object provided to the
request
- .. attribute:: httpsession
-
- .. deprecated:: 8.0
-
- Use :attr:`session` instead.
-
.. attribute:: params
:class:`~collections.Mapping` of request parameters, not generally
useful as they're provided directly to the handler method as keyword
arguments
-
- .. attribute:: session_id
-
- opaque identifier for the :class:`OpenERPSession` instance of
- the current request
-
- .. attribute:: session
-
- a :class:`OpenERPSession` holding the HTTP session data for the
- current http session
-
- .. attribute:: context
-
- :class:`~collections.Mapping` of context values for the current
- request
-
- .. attribute:: db
-
- ``str``, the name of the database linked to the current request. Can
- be ``None`` if the current request uses the ``none`` authentication
- in ``web`` module's controllers.
-
- .. attribute:: uid
-
- ``int``, the id of the user related to the current request. Can be
- ``None`` if the current request uses the ``none`` authentication.
-
- .. attribute:: env
-
- an :class:`openerp.api.Environment` bound to the current
- request's ``cr``, ``uid`` and ``context``
"""
def __init__(self, httprequest):
self.httprequest = httprequest
self.httpresponse = None
self.httpsession = httprequest.session
- self.session = httprequest.session
- self.session_id = httprequest.session.sid
self.disable_db = False
self.uid = None
self.endpoint = None
self.auth_method = None
- self._cr_cm = None
self._cr = None
# prevents transaction commit, use when you catch an exception during handling
@@ -216,44 +179,49 @@ class WebRequest(object):
threading.current_thread().dbname = self.db
if self.session.uid:
threading.current_thread().uid = self.session.uid
- self.context = dict(self.session.context)
- self.lang = self.context["lang"]
- @property
- def registry(self):
+ @lazy_property
+ def env(self):
"""
- The registry to the database linked to this request. Can be ``None``
- if the current request uses the ``none`` authentication.
+ The :class:`~openerp.api.Environment` bound to current request.
"""
- return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None
+ return openerp.api.Environment(self.cr, self.uid, self.context)
- @property
- def db(self):
+ @lazy_property
+ def context(self):
"""
- The database linked to this request. Can be ``None``
- if the current request uses the ``none`` authentication.
+ :class:`~collections.Mapping` of context values for the current
+ request
"""
- return self.session.db if not self.disable_db else None
+ return dict(self.session.context)
+
+ @lazy_property
+ def lang(self):
+ return self.context["lang"]
+
+ @lazy_property
+ def session(self):
+ """
+ a :class:`OpenERPSession` holding the HTTP session data for the
+ current http session
+ """
+ return self.httprequest.session
@property
def cr(self):
"""
- The cursor initialized for the current method call. If the current
- request uses the ``none`` authentication trying to access this
- property will raise an exception.
+ :class:`~openerp.sql_db.Cursor` initialized for the current method
+ call.
+
+ Accessing the cursor when the current request uses the ``none``
+ authentication will raise an exception.
"""
- # some magic to lazy create the cr
+ # can not be a lazy_property because manual rollback in _call_function
+ # if already set (?)
if not self._cr:
self._cr = self.registry.cursor()
return self._cr
- @lazy_property
- def env(self):
- """
- The Environment bound to current request.
- """
- return openerp.api.Environment(self.cr, self.uid, self.context)
-
def __enter__(self):
_request_stack.push(self)
return self
@@ -313,6 +281,8 @@ class WebRequest(object):
@property
def debug(self):
+ """ Indicates whether the current request is in "debug" mode
+ """
return 'debug' in self.httprequest.args
@contextlib.contextmanager
@@ -320,6 +290,48 @@ class WebRequest(object):
warnings.warn('please use request.registry and request.cr directly', DeprecationWarning)
yield (self.registry, self.cr)
+ @lazy_property
+ def session_id(self):
+ """
+ opaque identifier for the :class:`OpenERPSession` instance of
+ the current request
+
+ .. deprecated:: 8.0
+
+ Use the ``sid`` attribute on :attr:`.session`
+ """
+ return self.session.sid
+
+ @property
+ def registry(self):
+ """
+ The registry to the database linked to this request. Can be ``None``
+ if the current request uses the ``none`` authentication.
+
+ .. deprecated:: 8.0
+
+ use :attr:`.env`
+ """
+ return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None
+
+ @property
+ def db(self):
+ """
+ The database linked to this request. Can be ``None``
+ if the current request uses the ``none`` authentication.
+ """
+ return self.session.db if not self.disable_db else None
+
+ @lazy_property
+ def httpsession(self):
+ """ HTTP session data
+
+ .. deprecated:: 8.0
+
+ Use :attr:`.session` instead.
+ """
+ return self.session
+
def route(route=None, **kw):
"""
Decorator marking the decorated method as being a handler for
@@ -375,7 +387,15 @@ def route(route=None, **kw):
return decorator
class JsonRequest(WebRequest):
- """ JSON-RPC2 over HTTP.
+ """ Request handler for `JSON-RPC 2
+ <http://www.jsonrpc.org/specification>`_ over HTTP
+
+ * ``method`` is ignored
+ * ``params`` must be a JSON object (not an array) and is passed as keyword
+ arguments to the handler method
+ * the handler method's result is returned as JSON-RPC ``result`` and
+ wrapped in the `JSON-RPC Response
+ <http://www.jsonrpc.org/specification#response_object>`_
Sucessful request::
@@ -487,8 +507,6 @@ class JsonRequest(WebRequest):
return self._json_response(error=error)
def dispatch(self):
- """ Calls the method asked for by the JSON-RPC2 or JSONP request
- """
if self.jsonp_handler:
return self.jsonp_handler()
try:
@@ -538,7 +556,23 @@ def jsonrequest(f):
return route([base, base + "/<path:_ignored_path>"], type="json", auth="user", combine=True)(f)
class HttpRequest(WebRequest):
- """ Regular GET/POST request
+ """ Handler for the ``http`` request type.
+
+ matched routing parameters, query string parameters, form_ parameters
+ and files are passed to the handler method as keyword arguments.
+
+ In case of name conflict, routing parameters have priority.
+
+ The handler method's result can be:
+
+ * a falsy value, in which case the HTTP response will be an
+ `HTTP 204`_ (No Content)
+ * a werkzeug Response object, which is returned as-is
+ * a ``str`` or ``unicode``, will be wrapped in a Response object and
+ interpreted as HTML
+
+ .. _form: http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
+ .. _HTTP 204: http://tools.ietf.org/html/rfc7231#section-6.3.5
"""
_request_type = "http"
@@ -593,7 +627,7 @@ class HttpRequest(WebRequest):
return response
def render(self, template, qcontext=None, lazy=True, **kw):
- """ Lazy render of QWeb template.
+ """ Lazy render of a QWeb template.
The actual rendering of the given template will occur at then end of
the dispatching. Meanwhile, the template and/or qcontext can be
@@ -601,7 +635,9 @@ class HttpRequest(WebRequest):
:param basestring template: template to render
:param dict qcontext: Rendering context to use
- :param dict lazy: Lazy rendering is processed later in wsgi response layer (default True)
+ :param bool lazy: whether the template rendering should be deferred
+ until the last possible moment
+ :param kw: forwarded to werkzeug's Response object
"""
response = Response(template=template, qcontext=qcontext, **kw)
if not lazy:
@@ -609,7 +645,9 @@ class HttpRequest(WebRequest):
return response
def not_found(self, description=None):
- """ Helper for 404 response, return its result from the method
+ """ Shortcut for a `HTTP 404
+ <http://tools.ietf.org/html/rfc7231#section-6.5.4>`_ (Not Found)
+ response
"""
return werkzeug.exceptions.NotFound(description)
@@ -1070,13 +1108,20 @@ class Retry(RuntimeError):
class Response(werkzeug.wrappers.Response):
""" Response object passed through controller route chain.
- In addition to the werkzeug.wrappers.Response parameters, this
- classe's constructor can take the following additional parameters
+ In addition to the :class:`werkzeug.wrappers.Response` parameters, this
+ class's constructor can take the following additional parameters
for QWeb Lazy Rendering.
:param basestring template: template to render
:param dict qcontext: Rendering context to use
- :param int uid: User id to use for the ir.ui.view render call
+ :param int uid: User id to use for the ir.ui.view render call,
+ ``None`` to use the request's user (the default)
+
+ these attributes are available as parameters on the Response object and
+ can be altered at any time before rendering
+
+ Also exposes all the attributes and methods of
+ :class:`werkzeug.wrappers.Response`.
"""
default_mimetype = 'text/html'
def __init__(self, *args, **kw):
@@ -1105,6 +1150,8 @@ class Response(werkzeug.wrappers.Response):
return self.template is not None
def render(self):
+ """ Renders the Response's template, returns the result
+ """
view_obj = request.registry["ir.ui.view"]
uid = self.uid or request.uid or openerp.SUPERUSER_ID
while True:
@@ -1116,6 +1163,9 @@ class Response(werkzeug.wrappers.Response):
self.qcontext.update(e.updates)
def flatten(self):
+ """ Forces the rendering of the response's template, sets the result
+ as response body and unsets :attr:`.template`
+ """
self.response.append(self.render())
self.template = None
@@ -1192,7 +1242,7 @@ class Root(object):
if statics:
_logger.info("HTTP Configuring static files")
- app = werkzeug.wsgi.SharedDataMiddleware(self.dispatch, statics)
+ app = werkzeug.wsgi.SharedDataMiddleware(self.dispatch, statics, cache_timeout=STATIC_CACHE)
self.dispatch = DisableCacheMiddleware(app)
def setup_session(self, httprequest):
diff --git a/openerp/import_xml.rng b/openerp/import_xml.rng
index 7f2067f3c36..cb2cc6d8de2 100644
--- a/openerp/import_xml.rng
+++ b/openerp/import_xml.rng
@@ -19,80 +19,54 @@
<rng:define name="value">
<rng:element name="value">
<rng:optional><rng:attribute name="model" /></rng:optional>
- <rng:optional><rng:attribute name="search" /></rng:optional>
- <rng:optional><rng:attribute name="eval" /></rng:optional>
- <rng:optional><rng:text/></rng:optional>
- </rng:element>
- </rng:define>
-
- <rng:define name="function">
- <rng:element name="function">
- <rng:attribute name="model" />
- <rng:attribute name="name" />
- <rng:optional><rng:attribute name="id" /></rng:optional>
- <rng:optional><rng:attribute name="eval" /></rng:optional>
- <rng:optional><rng:attribute name="context" /></rng:optional>
<rng:choice>
- <rng:empty />
- <rng:oneOrMore>
+ <rng:attribute name="search" />
+ <rng:attribute name="eval" />
+ <rng:group>
+ <rng:optional><rng:attribute name="type" /></rng:optional>
<rng:choice>
- <rng:ref name="value" />
- <rng:ref name="function" />
+ <rng:attribute name="file" />
+ <rng:text/>
</rng:choice>
- </rng:oneOrMore>
+ </rng:group>
</rng:choice>
</rng:element>
</rng:define>
- <rng:define name="assert">
- <rng:element name="assert">
+ <rng:define name="function">
+ <rng:element name="function">
<rng:attribute name="model" />
- <rng:optional><rng:attribute name="search" /></rng:optional>
- <rng:optional><rng:attribute name="count" /></rng:optional>
- <rng:optional><rng:attribute name="string" /></rng:optional>
+ <rng:attribute name="name" />
+ <!-- doesn't look like it has any use? -->
<rng:optional><rng:attribute name="id" /></rng:optional>
<rng:optional><rng:attribute name="context" /></rng:optional>
- <rng:optional><rng:attribute name="severity" /></rng:optional>
- <rng:zeroOrMore>
- <rng:element name="test">
- <rng:attribute name="expr"/>
- <rng:choice>
- <rng:text />
- <rng:empty />
- </rng:choice>
- </rng:element>
- </rng:zeroOrMore>
+ <rng:optional>
+ <rng:choice>
+ <rng:attribute name="eval" />
+ <rng:oneOrMore>
+ <rng:choice>
+ <rng:ref name="value" />
+ <rng:ref name="function" />
+ </rng:choice>
+ </rng:oneOrMore>
+ </rng:choice>
+ </rng:optional>
</rng:element>
</rng:define>
<rng:define name="workflow">
<rng:element name="workflow">
<rng:attribute name="model" />
- <rng:optional><rng:attribute name="ref" /></rng:optional>
<rng:attribute name="action"/>
<rng:optional><rng:attribute name="uid"/></rng:optional>
<rng:optional><rng:attribute name="context" /></rng:optional>
<rng:choice>
- <rng:empty/>
+ <rng:attribute name="ref" />
<rng:ref name="value"/>
</rng:choice>
</rng:element>
</rng:define>
- <rng:define name="wizard">
- <rng:element name="wizard">
- <rng:attribute name="name"/>
- <rng:attribute name="id" />
- <rng:optional><rng:attribute name="menu" /></rng:optional>
- <rng:optional><rng:attribute name="model" /></rng:optional>
- <rng:attribute name="string" />
- <rng:optional><rng:attribute name="keyword" /></rng:optional>
- <rng:optional><rng:attribute name="multi" /></rng:optional>
- <rng:optional><rng:attribute name="client_action_multi" /></rng:optional>
- <rng:optional> <rng:attribute name="groups"/> </rng:optional>
- </rng:element>
- </rng:define>
-
<rng:define name="report">
<rng:element name="report">
<rng:optional><rng:attribute name="id"/></rng:optional>
@@ -197,13 +171,17 @@
<rng:define name="record">
<rng:element name="record">
- <rng:optional><rng:attribute name="id" /> </rng:optional>
+ <rng:optional>
+ <rng:attribute name="id" />
+ <rng:optional>
+ <rng:attribute name="forcecreate" />
+ </rng:optional>
+ </rng:optional>
<rng:attribute name="model" />
- <rng:optional><rng:attribute name="forcecreate" /></rng:optional>
+ <rng:optional><rng:attribute name="context"/></rng:optional>
<rng:zeroOrMore>
<rng:ref name="field" />
</rng:zeroOrMore>
- <rng:optional><rng:attribute name="context"/></rng:optional>
</rng:element>
</rng:define>
@@ -226,14 +204,8 @@
</rng:optional>
</rng:optional>
<rng:optional><rng:attribute name="groups"/></rng:optional>
- <rng:optional>
- <rng:attribute name="optional">
- <rng:choice>
- <rng:value>enabled</rng:value>
- <rng:value>disabled</rng:value>
- </rng:choice>
- </rng:attribute>
- </rng:optional>
+ <rng:optional><rng:attribute name="active"></rng:attribute></rng:optional>
+ <rng:optional><rng:attribute name="customize_show"></rng:attribute></rng:optional>
</rng:group>
<rng:optional>
<rng:attribute name="page"><rng:value>True</rng:value></rng:attribute>
@@ -251,40 +223,63 @@
<rng:define name="delete">
<rng:element name="delete">
<rng:attribute name="model" />
- <rng:choice>
- <rng:attribute name="id" />
- <rng:attribute name="search" />
- </rng:choice>
- </rng:element>
- </rng:define>
-
- <rng:define name="ir_set">
- <rng:element name="ir_set">
- <rng:oneOrMore>
- <rng:ref name="field" />
- </rng:oneOrMore>
+ <rng:choice>
+ <rng:attribute name="id" />
+ <rng:attribute name="search" />
+ </rng:choice>
</rng:element>
</rng:define>
<rng:define name="menuitem">
<rng:element name="menuitem">
- <!-- L'identifiant devrait être obligatoire -->
+ <!-- TODO: id should probably be mandatory -->
<rng:optional> <rng:attribute name="id" /></rng:optional>
- <!-- Attention le nom peut disparaitre uniquement si le parent est présent -->
<rng:optional> <rng:attribute name="name"/></rng:optional>
<rng:optional> <rng:attribute name="parent"/> </rng:optional>
+ <rng:optional> <rng:attribute name="action"/> </rng:optional>
+ <rng:optional> <rng:attribute name="sequence"/> </rng:optional>
+ <rng:optional> <rng:attribute name="groups"/> </rng:optional>
+ <!-- TODO: remove icon stuff -->
<rng:optional> <rng:attribute name="icon"/> </rng:optional>
<rng:optional> <rng:attribute name="web_icon"/> </rng:optional>
<rng:optional> <rng:attribute name="web_icon_hover"/> </rng:optional>
- <rng:optional> <rng:attribute name="action"/> </rng:optional>
+ <!-- string doesn't seem used anywhere -->
<rng:optional> <rng:attribute name="string"/> </rng:optional>
- <rng:optional> <rng:attribute name="sequence"/> </rng:optional>
- <rng:optional> <rng:attribute name="groups"/> </rng:optional>
- <rng:optional> <rng:attribute name="menu"/> </rng:optional>
<rng:empty />
</rng:element>
</rng:define>
+ <!-- TODO: remove these, useless -->
+
+ <rng:define name="assert">
+ <rng:element name="assert">
+ <rng:attribute name="model" />
+ <rng:optional><rng:attribute name="search" /></rng:optional>
+ <rng:optional><rng:attribute name="count" /></rng:optional>
+ <rng:optional><rng:attribute name="string" /></rng:optional>
+ <rng:optional><rng:attribute name="id" /></rng:optional>
+ <rng:optional><rng:attribute name="context" /></rng:optional>
+ <rng:optional><rng:attribute name="severity" /></rng:optional>
+ <rng:zeroOrMore>
+ <rng:element name="test">
+ <rng:attribute name="expr"/>
+ <rng:choice>
+ <rng:text />
+ <rng:empty />
+ </rng:choice>
+ </rng:element>
+ </rng:zeroOrMore>
+ </rng:element>
+ </rng:define>
+
+ <rng:define name="ir_set">
+ <rng:element name="ir_set">
+ <rng:oneOrMore>
+ <rng:ref name="field" />
+ </rng:oneOrMore>
+ </rng:element>
+ </rng:define>
+
<rng:define name="url">
<rng:element name="url">
<rng:attribute name="id" />
@@ -328,7 +323,6 @@
<rng:ref name="record" />
<rng:ref name="template" />
<rng:ref name="delete" />
- <rng:ref name="wizard" />
<rng:ref name="act_window" />
<rng:ref name="url" />
<rng:ref name="assert" />
diff --git a/openerp/models.py b/openerp/models.py
index 6f1dd123f93..142a1e8aa49 100644
--- a/openerp/models.py
+++ b/openerp/models.py
@@ -62,10 +62,10 @@ from . import SUPERUSER_ID
from . import api
from . import tools
from .api import Environment
-from .exceptions import except_orm, AccessError, MissingError
+from .exceptions import except_orm, AccessError, MissingError, ValidationError
from .osv import fields
from .osv.query import Query
-from .tools import lazy_property
+from .tools import lazy_property, ormcache
from .tools.config import config
from .tools.misc import CountingStream, DEFAULT_SERVER_DATETIME_FORMAT, DEFAULT_SERVER_DATE_FORMAT
from .tools.safe_eval import safe_eval as eval
@@ -246,6 +246,9 @@ class NewId(object):
IdType = (int, long, basestring, NewId)
+# maximum number of prefetched records
+PREFETCH_MAX = 200
+
# special columns automatically created by the ORM
LOG_ACCESS_COLUMNS = ['create_uid', 'create_date', 'write_uid', 'write_date']
MAGIC_COLUMNS = ['id'] + LOG_ACCESS_COLUMNS
@@ -836,15 +839,30 @@ class BaseModel(object):
# prepare ormcache, which must be shared by all instances of the model
cls._ormcache = {}
+ @api.model
+ @ormcache()
+ def _is_an_ordinary_table(self):
+ self.env.cr.execute("""\
+ SELECT 1
+ FROM pg_class
+ WHERE relname = %s
+ AND relkind = %s""", [self._table, 'r'])
+ return bool(self.env.cr.fetchone())
+
def __export_xml_id(self):
""" Return a valid xml_id for the record `self`. """
+ if not self._is_an_ordinary_table():
+ raise Exception(
+ "You can not export the column ID of model %s, because the "
+ "table %s is not an ordinary table."
+ % (self._name, self._table))
ir_model_data = self.sudo().env['ir.model.data']
data = ir_model_data.search([('model', '=', self._name), ('res_id', '=', self.id)])
if data:
- if data.module:
- return '%s.%s' % (data.module, data.name)
+ if data[0].module:
+ return '%s.%s' % (data[0].module, data[0].name)
else:
- return data.name
+ return data[0].name
else:
postfix = 0
name = '%s_%s' % (self._table, self.id)
@@ -1268,38 +1286,50 @@ class BaseModel(object):
(', '.join(names), res_msg)
)
if errors:
- raise except_orm('ValidateError', '\n'.join(errors))
+ raise ValidationError('\n'.join(errors))
# new-style constraint methods
for check in self._constraint_methods:
if set(check._constrains) & field_names:
- check(self)
+ try:
+ check(self)
+ except ValidationError, e:
+ raise
+ except Exception, e:
+ raise ValidationError("Error while validating constraint\n\n%s" % tools.ustr(e))
def default_get(self, cr, uid, fields_list, context=None):
- """ Return default values for the fields in `fields_list`. Default
- values are determined by the context, user defaults, and the model
- itself.
-
- :param fields_list: a list of field names
- :return: a dictionary mapping each field name to its corresponding
- default value; the keys of the dictionary are the fields in
- `fields_list` that have a default value different from ``False``.
-
- This method should not be overridden. In order to change the
- mechanism for determining default values, you should override method
- :meth:`add_default_value` instead.
+ """ default_get(fields) -> default_values
+
+ Return default values for the fields in `fields_list`. Default
+ values are determined by the context, user defaults, and the model
+ itself.
+
+ :param fields_list: a list of field names
+ :return: a dictionary mapping each field name to its corresponding
+ default value; the keys of the dictionary are the fields in
+ `fields_list` that have a default value different from ``False``.
+
+ This method should not be overridden. In order to change the
+ mechanism for determining default values, you should override method
+ :meth:`add_default_value` instead.
"""
# trigger view init hook
self.view_init(cr, uid, fields_list, context)
- # use a new record to determine default values
+ # use a new record to determine default values; evaluate fields on the
+ # new record and put default values in result
record = self.new(cr, uid, {}, context=context)
+ result = {}
for name in fields_list:
if name in self._fields:
- record[name] # force evaluation of defaults
+ value = record[name]
+ if name in record._cache:
+ result[name] = value # it really is a default value
- # retrieve defaults from record's cache
- return self._convert_to_write(record._cache)
+ # convert default values to the expected format
+ result = self._convert_to_write(result)
+ return result
def add_default_value(self, field):
""" Set the default value of `field` to the new record `self`.
@@ -1472,7 +1502,8 @@ class BaseModel(object):
return view
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
- """
+ """ fields_view_get([view_id | view_type='form'])
+
Get the detailed composition of the requested view like fields, model, view architecture
:param view_id: id of the view or None
@@ -1588,20 +1619,34 @@ class BaseModel(object):
"""
view_id = self.get_formview_id(cr, uid, id, context=context)
return {
- 'type': 'ir.actions.act_window',
- 'res_model': self._name,
- 'view_type': 'form',
- 'view_mode': 'form',
- 'views': [(view_id, 'form')],
- 'target': 'current',
- 'res_id': id,
- }
+ 'type': 'ir.actions.act_window',
+ 'res_model': self._name,
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'views': [(view_id, 'form')],
+ 'target': 'current',
+ 'res_id': id,
+ }
+
+ def get_access_action(self, cr, uid, id, context=None):
+ """ Return an action to open the document. This method is meant to be
+ overridden in addons that want to give specific access to the document.
+ By default it opens the formview of the document.
+
+ :paramt int id: id of the document to open
+ """
+ return self.get_formview_action(cr, uid, id, context=context)
def _view_look_dom_arch(self, cr, uid, node, view_id, context=None):
return self.pool['ir.ui.view'].postprocess_and_fields(
cr, uid, self._name, node, view_id, context=context)
def search_count(self, cr, user, args, context=None):
+ """ search_count(args) -> int
+
+ Returns the number of records in the current model matching :ref:`the
+ provided domain <reference/orm/domains>`.
+ """
res = self.search(cr, user, args, context=context, count=True)
if isinstance(res, list):
return len(res)
@@ -1609,46 +1654,22 @@ class BaseModel(object):
@api.returns('self')
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
- """
- Search for records based on a search domain.
+ """ search(args[, offset=0][, limit=None][, order=None][, count=False])
- :param cr: database cursor
- :param user: current user id
- :param args: list of tuples specifying the search domain [('field_name', 'operator', value), ...]. Pass an empty list to match all records.
- :param offset: optional number of results to skip in the returned values (default: 0)
- :param limit: optional max number of records to return (default: **None**)
- :param order: optional columns to sort by (default: self._order=id )
- :param context: optional context arguments, like lang, time zone
- :type context: dictionary
- :param count: optional (default: **False**), if **True**, returns only the number of records matching the criteria, not their ids
- :return: id or list of ids of records matching the criteria
- :rtype: integer or list of integers
- :raise AccessError: * if user tries to bypass access rules for read on the requested object.
-
- **Expressing a search domain (args)**
-
- Each tuple in the search domain needs to have 3 elements, in the form: **('field_name', 'operator', value)**, where:
-
- * **field_name** must be a valid name of field of the object model, possibly following many-to-one relationships using dot-notation, e.g 'street' or 'partner_id.country' are valid values.
- * **operator** must be a string with a valid comparison operator from this list: ``=, !=, >, >=, <, <=, like, ilike, in, not in, child_of, parent_left, parent_right``
- The semantics of most of these operators are obvious.
- The ``child_of`` operator will look for records who are children or grand-children of a given record,
- according to the semantics of this model (i.e following the relationship field named by
- ``self._parent_name``, by default ``parent_id``.
- * **value** must be a valid value to compare with the values of **field_name**, depending on its type.
-
- Domain criteria can be combined using 3 logical operators than can be added between tuples: '**&**' (logical AND, default), '**|**' (logical OR), '**!**' (logical NOT).
- These are **prefix** operators and the arity of the '**&**' and '**|**' operator is 2, while the arity of the '**!**' is just 1.
- Be very careful about this when you combine them the first time.
-
- Here is an example of searching for Partners named *ABC* from Belgium and Germany whose language is not english ::
-
- [('name','=','ABC'),'!',('language.code','=','en_US'),'|',('country_id.code','=','be'),('country_id.code','=','de'))
+ Searches for records based on the ``args``
+ :ref:`search domain <reference/orm/domains>`.
- The '&' is omitted as it is the default, and of course we could have used '!=' for the language, but what this domain really represents is::
-
- (name is 'ABC' AND (language is NOT english) AND (country is Belgium OR Germany))
+ :param args: :ref:`A search domain <reference/orm/domains>`. Use an empty
+ list to match all records.
+ :param int offset: number of results to ignore (default: none)
+ :param int limit: maximum number of records to return (default: all)
+ :param str order: sort string
+ :param bool count: if ``True``, the call should return the number of
+ records matching ``args`` rather than the records
+ themselves.
+ :returns: at most ``limit`` records matching the search criteria
+ :raise AccessError: * if user tries to bypass access rules for read on the requested object.
"""
return self._search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count)
@@ -1663,11 +1684,13 @@ class BaseModel(object):
@api.multi
def name_get(self):
- """ Return a textual representation for the records in `self`.
- By default this is the value of field ``display_name``.
+ """ name_get() -> [(id, name), ...]
+
+ Returns a textual representation for the records in ``self``.
+ By default this is the value of the ``display_name`` field.
- :rtype: list(tuple)
- :return: list of pairs ``(id, text_repr)`` for all records
+ :return: list of pairs ``(id, text_repr)`` for each records
+ :rtype: list(tuple)
"""
result = []
name = self._rec_name
@@ -1683,16 +1706,18 @@ class BaseModel(object):
@api.model
def name_create(self, name):
- """ Create a new record by calling :meth:`~.create` with only one value
- provided: the display name of the new record.
+ """ name_create(name) -> record
- The new record will be initialized with any default values
- applicable to this model, or provided through the context. The usual
- behavior of :meth:`~.create` applies.
+ Create a new record by calling :meth:`~.create` with only one value
+ provided: the display name of the new record.
- :param name: display name of the record to create
- :rtype: tuple
- :return: the :meth:`~.name_get` pair value of the created record
+ The new record will be initialized with any default values
+ applicable to this model, or provided through the context. The usual
+ behavior of :meth:`~.create` applies.
+
+ :param name: display name of the record to create
+ :rtype: tuple
+ :return: the :meth:`~.name_get` pair value of the created record
"""
if self._rec_name:
record = self.create({self._rec_name: name})
@@ -1703,33 +1728,30 @@ class BaseModel(object):
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
- """ Search for records that have a display name matching the given
- `name` pattern when compared with the given `operator`, while also
- matching the optional search domain (`args`).
-
- This is used for example to provide suggestions based on a partial
- value for a relational field. Sometimes be seen as the inverse
- function of :meth:`~.name_get`, but it is not guaranteed to be.
-
- This method is equivalent to calling :meth:`~.search` with a search
- domain based on `display_name` and then :meth:`~.name_get` on the
- result of the search.
-
- :param name: the name pattern to match
- :param list args: optional search domain (see :meth:`~.search` for
- syntax), specifying further restrictions
- :param str operator: domain operator for matching `name`, such as
- ``'like'`` or ``'='``.
- :param int limit: optional max number of records to return
- :rtype: list
- :return: list of pairs ``(id, text_repr)`` for all matching records.
+ """ name_search(name='', args=None, operator='ilike', limit=100) -> records
+
+ Search for records that have a display name matching the given
+ `name` pattern when compared with the given `operator`, while also
+ matching the optional search domain (`args`).
+
+ This is used for example to provide suggestions based on a partial
+ value for a relational field. Sometimes be seen as the inverse
+ function of :meth:`~.name_get`, but it is not guaranteed to be.
+
+ This method is equivalent to calling :meth:`~.search` with a search
+ domain based on ``display_name`` and then :meth:`~.name_get` on the
+ result of the search.
+
+ :param str name: the name pattern to match
+ :param list args: optional search domain (see :meth:`~.search` for
+ syntax), specifying further restrictions
+ :param str operator: domain operator for matching `name`, such as
+ ``'like'`` or ``'='``.
+ :param int limit: optional max number of records to return
+ :rtype: list
+ :return: list of pairs ``(id, text_repr)`` for all matching records.
"""
- args = list(args or [])
- if not self._rec_name:
- _logger.warning("Cannot execute name_search, no _rec_name defined on %s", self._name)
- elif not (name == '' and operator == 'ilike'):
- args += [(self._rec_name, operator, name)]
- return self.search(args, limit=limit).name_get()
+ return self._name_search(name, args, operator, limit=limit)
def _name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100, name_get_uid=None):
# private implementation of name_search, allows passing a dedicated user
@@ -2096,6 +2118,7 @@ class BaseModel(object):
f for f in fields
if f not in ('id', 'sequence')
if f not in groupby_fields
+ if f in self._all_columns
if self._all_columns[f].column._type in ('integer', 'float')
if getattr(self._all_columns[f].column, '_classic_write')]
@@ -2410,14 +2433,19 @@ class BaseModel(object):
if column_name in defaults:
default = field.convert_to_write(defaults[column_name])
- ss = self._columns[column_name]._symbol_set
- store_default = ss[1](default)
- if store_default is not None:
+ column = self._columns[column_name]
+ ss = column._symbol_set
+ db_default = ss[1](default)
+ # Write default if non-NULL, except for booleans for which False means
+ # the same as NULL - this saves us an expensive query on large tables.
+ write_default = (db_default is not None if column._type != 'boolean'
+ else db_default)
+ if write_default:
_logger.debug("Table '%s': setting default value of new column %s to %r",
self._table, column_name, default)
query = 'UPDATE "%s" SET "%s"=%s WHERE "%s" is NULL' % (
self._table, column_name, ss[0], column_name)
- cr.execute(query, (store_default,))
+ cr.execute(query, (db_default,))
# this is a disgrace
cr.commit()
@@ -2455,8 +2483,8 @@ class BaseModel(object):
self._create_table(cr)
has_rows = False
else:
- cr.execute('SELECT COUNT(1) FROM "%s"' % (self._table,))
- has_rows = cr.fetchone()[0]
+ cr.execute('SELECT min(id) FROM "%s"' % (self._table,))
+ has_rows = cr.fetchone()[0] is not None
cr.commit()
if self._parent_store:
@@ -2616,7 +2644,7 @@ class BaseModel(object):
if isinstance(f, fields.many2one) or (isinstance(f, fields.function) and f._type == 'many2one' and f.store):
dest_model = self.pool[f._obj]
- if dest_model._table != 'ir_actions':
+ if dest_model._auto and dest_model._table != 'ir_actions':
self._m2o_fix_foreign_key(cr, self._table, k, dest_model, f.ondelete)
# The field doesn't exist in database. Create it if necessary.
@@ -2650,7 +2678,7 @@ class BaseModel(object):
dest_model = self.pool[f._obj]
ref = dest_model._table
# ir_actions is inherited so foreign key doesn't work on it
- if ref != 'ir_actions':
+ if dest_model._auto and ref != 'ir_actions':
self._m2o_add_foreign_key_checked(k, dest_model, f.ondelete)
if f.select:
cr.execute('CREATE INDEX "%s_%s_index" ON "%s" ("%s")' % (self._table, k, self._table, k))
@@ -2909,8 +2937,11 @@ class BaseModel(object):
for parent_model, parent_field in reversed(cls._inherits.items()):
for attr, field in cls.pool[parent_model]._fields.iteritems():
if attr not in cls._fields:
- new_field = field.copy(related=(parent_field, attr), _origin=field)
- cls._add_field(attr, new_field)
+ cls._add_field(attr, field.copy(
+ related=(parent_field, attr),
+ related_sudo=False,
+ _origin=field,
+ ))
cls._inherits_reload_src()
@@ -2956,9 +2987,13 @@ class BaseModel(object):
field.reset()
@api.model
- def _setup_fields(self):
+ def _setup_fields(self, partial=False):
""" Setup the fields (dependency triggers, etc). """
for field in self._fields.itervalues():
+ if partial and field.manual and \
+ field.relational and field.comodel_name not in self.pool:
+ # do not set up manual fields that refer to unknown models
+ continue
field.setup(self.env)
# group fields by compute to determine field.computed_fields
@@ -2971,7 +3006,9 @@ class BaseModel(object):
field.computed_fields = []
def fields_get(self, cr, user, allfields=None, context=None, write_access=True):
- """ Return the definition of each field.
+ """ fields_get([fields])
+
+ Return the definition of each field.
The returned value is a dictionary (indiced by field name) of
dictionaries. The _inherits'd fields are included. The string, help,
@@ -3044,18 +3081,26 @@ class BaseModel(object):
return fields
- # new-style implementation of read(); old-style is defined below
+ # add explicit old-style implementation to read()
+ @api.v7
+ def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):
+ records = self.browse(cr, user, ids, context)
+ result = BaseModel.read(records, fields, load=load)
+ return result if isinstance(ids, list) else (bool(result) and result[0])
+
+ # new-style implementation of read()
@api.v8
def read(self, fields=None, load='_classic_read'):
- """ Read the given fields for the records in `self`.
-
- :param fields: optional list of field names to return (default is
- all fields)
- :param load: deprecated, this argument is ignored
- :return: a list of dictionaries mapping field names to their values,
- with one dictionary per record
- :raise AccessError: if user has no read rights on some of the given
- records
+ """ read([fields])
+
+ Reads the requested fields for the records in `self`, low-level/RPC
+ method. In Python code, prefer :meth:`~.browse`.
+
+ :param fields: list of field names to return (default is all fields)
+ :return: a list of dictionaries mapping field names to their values,
+ with one dictionary per record
+ :raise AccessError: if user has no read rights on some of the given
+ records
"""
# check access rights
self.check_access_rights('read')
@@ -3090,20 +3135,16 @@ class BaseModel(object):
return result
- # add explicit old-style implementation to read()
- @api.v7
- def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):
- records = self.browse(cr, user, ids, context)
- result = BaseModel.read(records, fields, load=load)
- return result if isinstance(ids, list) else (bool(result) and result[0])
-
@api.multi
def _prefetch_field(self, field):
""" Read from the database in order to fetch `field` (:class:`Field`
instance) for `self` in cache.
"""
# fetch the records of this model without field_name in their cache
- records = self
+ records = self._in_cache_without(field)
+
+ if len(records) > PREFETCH_MAX:
+ records = records[:PREFETCH_MAX] | self
# by default, simply fetch field
fnames = {field.name}
@@ -3111,14 +3152,16 @@ class BaseModel(object):
if self.env.in_draft:
# we may be doing an onchange, do not prefetch other fields
pass
- elif field in self.env.todo:
+ elif self.env.field_todo(field):
# field must be recomputed, do not prefetch records to recompute
- records -= self.env.todo[field]
+ records -= self.env.field_todo(field)
elif self._columns[field.name]._prefetch:
# here we can optimize: prefetch all classic and many2one fields
fnames = set(fname
for fname, fcolumn in self._columns.iteritems()
- if fcolumn._prefetch)
+ if fcolumn._prefetch
+ if not fcolumn.groups or self.user_has_groups(fcolumn.groups)
+ )
# fetch records with read()
assert self in records and field.name in fnames
@@ -3129,11 +3172,11 @@ class BaseModel(object):
pass
# check the cache, and update it if necessary
- if field not in self._cache:
+ if not self._cache.contains(field):
for values in result:
record = self.browse(values.pop('id'))
record._cache.update(record._convert_to_cache(values, validate=False))
- if field not in self._cache:
+ if not self._cache.contains(field):
e = AccessError("No value found for %s.%s" % (self, field.name))
self._cache[field] = FailedValue(e)
@@ -3145,6 +3188,11 @@ class BaseModel(object):
env = self.env
cr, user, context = env.args
+ # FIXME: The query construction needs to be rewritten using the internal Query
+ # object, as in search(), to avoid ambiguous column references when
+ # reading/sorting on a table that is auto_joined to another table with
+ # common columns (e.g. the magical columns)
+
# Construct a clause for the security rules.
# 'tables' holds the list of tables necessary for the SELECT, including
# the ir.rule clauses, and contains at least self._table.
@@ -3174,16 +3222,8 @@ class BaseModel(object):
'order': self._parent_order or self._order,
}
- empty = self.browse()
- prefetch = set()
- todo = set()
- for field in (self._fields[name] for name in field_names):
- prefetch.update(self._in_cache_without(field).ids)
- todo.update(self.env.todo.get(field, empty).ids)
- records = self.browse(prefetch - todo | set(self.ids))
-
result = []
- for sub_ids in cr.split_for_in_conditions(records.ids):
+ for sub_ids in cr.split_for_in_conditions(self.ids):
cr.execute(query, [tuple(sub_ids)] + rule_params)
result.extend(cr.dictfetchall())
@@ -3256,9 +3296,9 @@ class BaseModel(object):
# store failed values in cache for the records that could not be read
fetched = self.browse(ids)
- missing = records - fetched
+ missing = self - fetched
if missing:
- extras = fetched - records
+ extras = fetched - self
if extras:
raise AccessError(
_("Database fetch misses ids ({}) and has extra ids ({}), may be caused by a type incoherence in a previous request").format(
@@ -3455,14 +3495,10 @@ class BaseModel(object):
return True
def unlink(self, cr, uid, ids, context=None):
- """
- Delete records with given ids
+ """ unlink()
+
+ Deletes the records of the current set
- :param cr: database cursor
- :param uid: current user id
- :param ids: id or list of ids
- :param context: (optional) context arguments, like lang, time zone
- :return: True
:raise AccessError: * if user has no unlink rights on the requested object
* if user tries to bypass access rules for unlink on the requested object
:raise UserError: if the record is default property for other records
@@ -3548,46 +3584,54 @@ class BaseModel(object):
#
@api.multi
def write(self, vals):
- """
- Update records in `self` with the given field values.
-
- :param vals: field values to update, e.g {'field_name': new_field_value, ...}
- :type vals: dictionary
- :return: True
- :raise AccessError: * if user has no write rights on the requested object
- * if user tries to bypass access rules for write on the requested object
- :raise ValidateError: if user tries to enter invalid value for a field that is not in selection
- :raise UserError: if a loop would be created in a hierarchy of objects a result of the operation (such as setting an object as its own parent)
+ """ write(vals)
- **Note**: The type of field values to pass in ``vals`` for relationship fields is specific:
+ Updates all records in the current set with the provided values.
- + For a many2many field, a list of tuples is expected.
- Here is the list of tuple that are accepted, with the corresponding semantics ::
+ :param dict vals: fields to update and the value to set on them e.g::
- (0, 0, { values }) link to a new record that needs to be created with the given values dictionary
- (1, ID, { values }) update the linked record with id = ID (write *values* on it)
- (2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)
- (3, ID) cut the link to the linked record with id = ID (delete the relationship between the two objects but does not delete the target object itself)
- (4, ID) link to existing record with id = ID (adds a relationship)
- (5) unlink all (like using (3,ID) for all linked records)
- (6, 0, [IDs]) replace the list of linked IDs (like using (5) then (4,ID) for each ID in the list of IDs)
+ {'foo': 1, 'bar': "Qux"}
- Example:
- [(6, 0, [8, 5, 6, 4])] sets the many2many to ids [8, 5, 6, 4]
+ will set the field ``foo`` to ``1`` and the field ``bar`` to
+ ``"Qux"`` if those are valid (otherwise it will trigger an error).
- + For a one2many field, a lits of tuples is expected.
- Here is the list of tuple that are accepted, with the corresponding semantics ::
-
- (0, 0, { values }) link to a new record that needs to be created with the given values dictionary
- (1, ID, { values }) update the linked record with id = ID (write *values* on it)
- (2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)
-
- Example:
- [(0, 0, {'field_name':field_value_record1, ...}), (0, 0, {'field_name':field_value_record2, ...})]
-
- + For a many2one field, simply use the ID of target record, which must already exist, or ``False`` to remove the link.
- + For a reference field, use a string with the model name, a comma, and the target object id (example: ``'product.product, 5'``)
+ :raise AccessError: * if user has no write rights on the requested object
+ * if user tries to bypass access rules for write on the requested object
+ :raise ValidateError: if user tries to enter invalid value for a field that is not in selection
+ :raise UserError: if a loop would be created in a hierarchy of objects a result of the operation (such as setting an object as its own parent)
+ .. _openerp/models/relationals/format:
+
+ .. note:: Relational fields use a special "commands" format to manipulate their values
+
+ This format is a list of command triplets executed sequentially,
+ possible command triplets are:
+
+ ``(0, _, values: dict)``
+ links to a new record created from the provided values
+ ``(1, id, values: dict)``
+ updates the already-linked record of id ``id`` with the
+ provided ``values``
+ ``(2, id, _)``
+ unlinks and deletes the linked record of id ``id``
+ ``(3, id, _)``
+ unlinks the linked record of id ``id`` without deleting it
+ ``(4, id, _)``
+ links to an existing record of id ``id``
+ ``(5, _, _)``
+ unlinks all records in the relation, equivalent to using
+ the command ``3`` on every linked record
+ ``(6, _, ids)``
+ replaces the existing list of linked records by the provoded
+ ones, equivalent to using ``5`` then ``4`` for each id in
+ ``ids``)
+
+ (in command triplets, ``_`` values are ignored and can be
+ anything, generally ``0`` or ``False``)
+
+ Any command can be used on :class:`~openerp.fields.Many2many`,
+ only ``0``, ``1`` and ``2`` can be used on
+ :class:`~openerp.fields.One2many`.
"""
if not self:
return True
@@ -3618,7 +3662,8 @@ class BaseModel(object):
# put the values of pure new-style fields into cache, and inverse them
if new_vals:
- self._cache.update(self._convert_to_cache(new_vals))
+ for record in self:
+ record._cache.update(record._convert_to_cache(new_vals, update=True))
for key in new_vals:
self._fields[key].determine_inverse(self)
@@ -3858,18 +3903,24 @@ class BaseModel(object):
@api.model
@api.returns('self', lambda value: value.id)
def create(self, vals):
- """ Create a new record for the model.
-
- The values for the new record are initialized using the dictionary
- `vals`, and if necessary the result of :meth:`default_get`.
-
- :param vals: field values like ``{'field_name': field_value, ...}``,
- see :meth:`write` for details about the values format
- :return: new record created
- :raise AccessError: * if user has no create rights on the requested object
- * if user tries to bypass access rules for create on the requested object
- :raise ValidateError: if user tries to enter invalid value for a field that is not in selection
- :raise UserError: if a loop would be created in a hierarchy of objects a result of the operation (such as setting an object as its own parent)
+ """ create(vals) -> record
+
+ Creates a new record for the model.
+
+ The new record is initialized using the values from ``vals`` and
+ if necessary those from :meth:`~.default_get`.
+
+ :param dict vals:
+ values for the model's fields, as a dictionary::
+
+ {'field_name': field_value, ...}
+
+ see :meth:`~.write` for details
+ :return: new record created
+ :raise AccessError: * if user has no create rights on the requested object
+ * if user tries to bypass access rules for create on the requested object
+ :raise ValidateError: if user tries to enter invalid value for a field that is not in selection
+ :raise UserError: if a loop would be created in a hierarchy of objects a result of the operation (such as setting an object as its own parent)
"""
self.check_access_rights('create')
@@ -3947,20 +3998,10 @@ class BaseModel(object):
record_id = tocreate[table].pop('id', None)
- if isinstance(record_id, dict):
- # Shit happens: this possibly comes from a new record
- tocreate[table] = dict(record_id, **tocreate[table])
- record_id = None
-
- # When linking/creating parent records, force context without 'no_store_function' key that
- # defers stored functions computing, as these won't be computed in batch at the end of create().
- parent_context = dict(context)
- parent_context.pop('no_store_function', None)
-
if record_id is None or not record_id:
- record_id = self.pool[table].create(cr, user, tocreate[table], context=parent_context)
+ record_id = self.pool[table].create(cr, user, tocreate[table], context=context)
else:
- self.pool[table].write(cr, user, [record_id], tocreate[table], context=parent_context)
+ self.pool[table].write(cr, user, [record_id], tocreate[table], context=context)
updates.append((self._inherits[table], '%s', record_id))
@@ -4085,7 +4126,13 @@ class BaseModel(object):
# check Python constraints
recs._validate_fields(vals)
- if not context.get('no_store_function', False):
+ # invalidate and mark new-style fields to recompute
+ modified_fields = list(vals)
+ if self._log_access:
+ modified_fields += ['create_uid', 'create_date', 'write_uid', 'write_date']
+ recs.modified(modified_fields)
+
+ if context.get('recompute', True):
result += self._store_get_values(cr, user, [id_new],
list(set(vals.keys() + self._inherits.values())),
context)
@@ -4095,15 +4142,10 @@ class BaseModel(object):
if not (model_name, ids, fields2) in done:
self.pool[model_name]._store_set_values(cr, user, ids, fields2, context)
done.append((model_name, ids, fields2))
-
# recompute new-style fields
- modified_fields = list(vals)
- if self._log_access:
- modified_fields += ['create_uid', 'create_date', 'write_uid', 'write_date']
- recs.modified(modified_fields)
recs.recompute()
- if self._log_create and not (context and context.get('no_store_function', False)):
+ if self._log_create and context.get('recompute', True):
message = self._description + \
" '" + \
self.name_get(cr, user, [id_new], context=context)[0][1] + \
@@ -4248,7 +4290,7 @@ class BaseModel(object):
cr.execute('update "' + self._table + '" set ' + \
'"'+f+'"='+self._columns[f]._symbol_set[0] + ' where id = %s', (self._columns[f]._symbol_set[1](value), id))
- # invalidate the cache for the modified fields
+ # invalidate and mark new-style fields to recompute
self.browse(cr, uid, ids, context).modified(fields)
return True
@@ -4401,6 +4443,7 @@ class BaseModel(object):
order_split = order_part.strip().split(' ')
order_field = order_split[0].strip()
order_direction = order_split[1].strip() if len(order_split) == 2 else ''
+ order_column = None
inner_clause = None
if order_field == 'id':
order_by_elements.append('"%s"."%s" %s' % (self._table, order_field, order_direction))
@@ -4423,6 +4466,8 @@ class BaseModel(object):
continue # ignore non-readable or "non-joinable" fields
else:
raise ValueError( _("Sorting field %s not found on model %s") %( order_field, self._name))
+ if order_column and order_column._type == 'boolean':
+ inner_clause = "COALESCE(%s, false)" % inner_clause
if inner_clause:
if isinstance(inner_clause, list):
for clause in inner_clause:
@@ -4637,17 +4682,13 @@ class BaseModel(object):
@api.returns('self', lambda value: value.id)
def copy(self, cr, uid, id, default=None, context=None):
- """
+ """ copy(default=None)
+
Duplicate record with given id updating it with default values
- :param cr: database cursor
- :param uid: current user id
- :param id: id of the record to copy
- :param default: dictionary of field values to override in the original values of the copied record, e.g: ``{'field_name': overriden_value, ...}``
- :type default: dictionary
- :param context: context arguments, like lang, time zone
- :type context: dictionary
- :return: id of the newly created record
+ :param dict default: dictionary of field values to override in the
+ original values of the copied record, e.g: ``{'field_name': overriden_value, ...}``
+ :returns: new record
"""
if context is None:
@@ -4661,13 +4702,15 @@ class BaseModel(object):
@api.multi
@api.returns('self')
def exists(self):
- """ Return the subset of records in `self` that exist, and mark deleted
- records as such in cache. It can be used as a test on records::
+ """ exists() -> records
+
+ Returns the subset of records in `self` that exist, and marks deleted
+ records as such in cache. It can be used as a test on records::
- if record.exists():
- ...
+ if record.exists():
+ ...
- By convention, new records are returned as existing.
+ By convention, new records are returned as existing.
"""
ids = filter(None, self._ids) # ids to check in database
if not ids:
@@ -4969,9 +5012,10 @@ class BaseModel(object):
""" stuff to do right after the registry is built """
pass
- def _patch_method(self, name, method):
+ @classmethod
+ def _patch_method(cls, name, method):
""" Monkey-patch a method for all instances of this model. This replaces
- the method called `name` by `method` in `self`'s class.
+ the method called `name` by `method` in the given class.
The original method is then accessible via ``method.origin``, and it
can be restored with :meth:`~._revert_method`.
@@ -4992,7 +5036,6 @@ class BaseModel(object):
# restore the original method
model._revert_method('write')
"""
- cls = type(self)
origin = getattr(cls, name)
method.origin = origin
# propagate decorators from origin to method, and apply api decorator
@@ -5000,11 +5043,11 @@ class BaseModel(object):
wrapped.origin = origin
setattr(cls, name, wrapped)
- def _revert_method(self, name):
- """ Revert the original method of `self` called `name`.
+ @classmethod
+ def _revert_method(cls, name):
+ """ Revert the original method called `name` in the given class.
See :meth:`~._patch_method`.
"""
- cls = type(self)
method = getattr(cls, name)
setattr(cls, name, method.origin)
@@ -5033,28 +5076,34 @@ class BaseModel(object):
env.prefetch[cls._name].update(ids)
return records
+ @api.v7
+ def browse(self, cr, uid, arg=None, context=None):
+ ids = _normalize_ids(arg)
+ #assert all(isinstance(id, IdType) for id in ids), "Browsing invalid ids: %s" % ids
+ return self._browse(Environment(cr, uid, context or {}), ids)
+
@api.v8
def browse(self, arg=None):
- """ Return an instance corresponding to `arg` and attached to
- `self.env`; `arg` is either a record id, or a collection of record ids.
+ """ browse([ids]) -> records
+
+ Returns a recordset for the ids provided as parameter in the current
+ environment.
+
+ Can take no ids, a single id or a sequence of ids.
"""
ids = _normalize_ids(arg)
#assert all(isinstance(id, IdType) for id in ids), "Browsing invalid ids: %s" % ids
return self._browse(self.env, ids)
- @api.v7
- def browse(self, cr, uid, arg=None, context=None):
- ids = _normalize_ids(arg)
- #assert all(isinstance(id, IdType) for id in ids), "Browsing invalid ids: %s" % ids
- return self._browse(Environment(cr, uid, context or {}), ids)
-
#
# Internal properties, for manipulating the instance's implementation
#
@property
def ids(self):
- """ Return the list of non-false record ids of this instance. """
+ """ List of actual record ids in this recordset (ignores placeholder
+ ids for records to create)
+ """
return filter(None, list(self._ids))
# backward-compatibility with former browse records
@@ -5067,38 +5116,59 @@ class BaseModel(object):
#
def ensure_one(self):
- """ Return `self` if it is a singleton instance, otherwise raise an
- exception.
+ """ Verifies that the current recorset holds a single record. Raises
+ an exception otherwise.
"""
if len(self) == 1:
return self
raise except_orm("ValueError", "Expected singleton: %s" % self)
def with_env(self, env):
- """ Return an instance equivalent to `self` attached to `env`.
+ """ Returns a new version of this recordset attached to the provided
+ environment
+
+ :type env: :class:`~openerp.api.Environment`
"""
return self._browse(env, self._ids)
def sudo(self, user=SUPERUSER_ID):
- """ Return an instance equivalent to `self` attached to an environment
- based on `self.env` with the given `user`.
+ """ sudo([user=SUPERUSER])
+
+ Returns a new version of this recordset attached to the provided
+ user.
"""
return self.with_env(self.env(user=user))
def with_context(self, *args, **kwargs):
- """ Return an instance equivalent to `self` attached to an environment
- based on `self.env` with another context. The context is given by
- `self._context` or the positional argument if given, and modified by
- `kwargs`.
+ """ with_context([context][, **overrides]) -> records
+
+ Returns a new version of this recordset attached to an extended
+ context.
+
+ The extended context is either the provided ``context`` in which
+ ``overrides`` are merged or the *current* context in which
+ ``overrides`` are merged e.g.::
+
+ # current context is {'key1': True}
+ r2 = records.with_context({}, key2=True)
+ # -> r2._context is {'key2': True}
+ r2 = records.with_context(key2=True)
+ # -> r2._context is {'key1': True, 'key2': True}
"""
context = dict(args[0] if args else self._context, **kwargs)
return self.with_env(self.env(context=context))
- def _convert_to_cache(self, values, validate=True):
- """ Convert the `values` dictionary into cached values. """
+ def _convert_to_cache(self, values, update=False, validate=True):
+ """ Convert the `values` dictionary into cached values.
+
+ :param update: whether the conversion is made for updating `self`;
+ this is necessary for interpreting the commands of *2many fields
+ :param validate: whether values must be checked
+ """
fields = self._fields
+ target = self if update else self.browse()
return {
- name: fields[name].convert_to_cache(value, self.env, validate=validate)
+ name: fields[name].convert_to_cache(value, target, validate=validate)
for name, value in values.iteritems()
if name in fields
}
@@ -5106,11 +5176,13 @@ class BaseModel(object):
def _convert_to_write(self, values):
""" Convert the `values` dictionary into the format of :meth:`write`. """
fields = self._fields
- return dict(
- (name, fields[name].convert_to_write(value))
- for name, value in values.iteritems()
- if name in self._fields
- )
+ result = {}
+ for name, value in values.iteritems():
+ if name in fields:
+ value = fields[name].convert_to_write(value)
+ if not isinstance(value, NewId):
+ result[name] = value
+ return result
#
# Record traversal and update
@@ -5182,12 +5254,14 @@ class BaseModel(object):
@api.model
def new(self, values={}):
- """ Return a new record instance attached to `self.env`, and
- initialized with the `values` dictionary. Such a record does not
- exist in the database.
+ """ new([values]) -> record
+
+ Return a new record instance attached to the current environment and
+ initialized with the provided ``value``. The record is *not* created
+ in database, it only exists in memory.
"""
record = self.browse([NewId()])
- record._cache.update(self._convert_to_cache(values))
+ record._cache.update(record._convert_to_cache(values, update=True))
if record.env.in_onchange:
# The cache update does not set inverse fields, so do it manually.
@@ -5195,8 +5269,9 @@ class BaseModel(object):
# records, if that field depends on the main record.
for name in values:
field = self._fields.get(name)
- if field and field.inverse_field:
- field.inverse_field._update(record[name], record)
+ if field:
+ for invf in field.inverse_fields:
+ invf._update(record[name], record)
return record
@@ -5236,14 +5311,17 @@ class BaseModel(object):
yield self._browse(self.env, (id,))
def __contains__(self, item):
- """ Test whether `item` is a subset of `self` or a field name. """
- if isinstance(item, BaseModel):
- if self._name == item._name:
- return set(item._ids) <= set(self._ids)
- raise except_orm("ValueError", "Mixing apples and oranges: %s in %s" % (item, self))
- if isinstance(item, basestring):
+ """ Test whether `item` (record or field name) is an element of `self`.
+ In the first case, the test is fully equivalent to::
+
+ any(item == record for record in self)
+ """
+ if isinstance(item, BaseModel) and self._name == item._name:
+ return len(item) == 1 and item.id in self._ids
+ elif isinstance(item, basestring):
return item in self._fields
- return item in self.ids
+ else:
+ raise except_orm("ValueError", "Mixing apples and oranges: %s in %s" % (item, self))
def __add__(self, other):
""" Return the concatenation of two recordsets. """
@@ -5394,7 +5472,7 @@ class BaseModel(object):
# invalidate fields and inverse fields, too
spec = [(f, ids) for f in fields] + \
- [(f.inverse_field, None) for f in fields if f.inverse_field]
+ [(invf, None) for f in fields for invf in f.inverse_fields]
self.env.invalidate(spec)
@api.multi
@@ -5426,42 +5504,34 @@ class BaseModel(object):
""" If `field` must be recomputed on some record in `self`, return the
corresponding records that must be recomputed.
"""
- for env in [self.env] + list(iter(self.env.all)):
- if env.todo.get(field) and env.todo[field] & self:
- return env.todo[field]
+ return self.env.check_todo(field, self)
def _recompute_todo(self, field):
""" Mark `field` to be recomputed. """
- todo = self.env.todo
- todo[field] = (todo.get(field) or self.browse()) | self
+ self.env.add_todo(field, self)
def _recompute_done(self, field):
- """ Mark `field` as being recomputed. """
- todo = self.env.todo
- if field in todo:
- recs = todo.pop(field) - self
- if recs:
- todo[field] = recs
+ """ Mark `field` as recomputed. """
+ self.env.remove_todo(field, self)
@api.model
def recompute(self):
""" Recompute stored function fields. The fields and records to
recompute have been determined by method :meth:`modified`.
"""
- for env in list(iter(self.env.all)):
- while env.todo:
- field, recs = next(env.todo.iteritems())
- # evaluate the fields to recompute, and save them to database
- for rec, rec1 in zip(recs, recs.with_context(recompute=False)):
- try:
- values = rec._convert_to_write({
- f.name: rec[f.name] for f in field.computed_fields
- })
- rec1._write(values)
- except MissingError:
- pass
- # mark the computed fields as done
- map(recs._recompute_done, field.computed_fields)
+ while self.env.has_todo():
+ field, recs = self.env.get_todo()
+ # evaluate the fields to recompute, and save them to database
+ for rec, rec1 in zip(recs, recs.with_context(recompute=False)):
+ try:
+ values = rec._convert_to_write({
+ f.name: rec[f.name] for f in field.computed_fields
+ })
+ rec1._write(values)
+ except MissingError:
+ pass
+ # mark the computed fields as done
+ map(recs._recompute_done, field.computed_fields)
#
# Generic onchange method
@@ -5594,7 +5664,12 @@ class BaseModel(object):
# dummy assignment: trigger invalidations on the record
for name in todo:
- record[name] = record[name]
+ value = record[name]
+ field = self._fields[name]
+ if not field_name and field.type == 'many2one' and field.delegate and not value:
+ # do not nullify all fields of parent record for new records
+ continue
+ record[name] = value
result = {'value': {}}
@@ -5619,7 +5694,7 @@ class BaseModel(object):
if newval != oldval or getattr(newval, '_dirty', False):
field = self._fields[name]
result['value'][name] = field.convert_to_write(
- newval, record._origin, subfields[name],
+ newval, record._origin, subfields.get(name),
)
todo.add(name)
@@ -5639,12 +5714,20 @@ class RecordCache(MutableMapping):
def __init__(self, records):
self._recs = records
- def __contains__(self, field):
+ def contains(self, field):
""" Return whether `records[0]` has a value for `field` in cache. """
if isinstance(field, basestring):
field = self._recs._fields[field]
return self._recs.id in self._recs.env.cache[field]
+ def __contains__(self, field):
+ """ Return whether `records[0]` has a regular value for `field` in cache. """
+ if isinstance(field, basestring):
+ field = self._recs._fields[field]
+ dummy = SpecialValue(None)
+ value = self._recs.env.cache[field].get(self._recs.id, dummy)
+ return not isinstance(value, SpecialValue)
+
def __getitem__(self, field):
""" Return the cached value of `field` for `records[0]`. """
if isinstance(field, basestring):
diff --git a/openerp/modules/loading.py b/openerp/modules/loading.py
index 656511e4a04..0568b0d1a38 100644
--- a/openerp/modules/loading.py
+++ b/openerp/modules/loading.py
@@ -159,7 +159,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
loaded_modules.append(package.name)
if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'):
- registry.setup_models(cr)
+ registry.setup_models(cr, partial=True)
init_module_models(cr, package.name, models)
# Can't put this line out of the loop: ir.module.module will be
@@ -225,7 +225,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
registry._init_modules.add(package.name)
cr.commit()
- registry.setup_models(cr)
+ registry.setup_models(cr, partial=True)
_logger.log(25, "%s modules loaded in %.2fs, %s queries", len(graph), time.time() - t0, openerp.sql_db.sql_counter - t0_sql)
@@ -360,6 +360,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
cr.execute('select model from ir_model where state=%s', ('manual',))
for model in cr.dictfetchall():
registry['ir.model'].instanciate(cr, SUPERUSER_ID, model['model'], {})
+ registry.setup_models(cr)
# STEP 4: Finish and cleanup installations
if processed_modules:
diff --git a/openerp/modules/module.py b/openerp/modules/module.py
index ea9e2b07424..fc5270cbdfa 100644
--- a/openerp/modules/module.py
+++ b/openerp/modules/module.py
@@ -257,7 +257,6 @@ def load_information_from_description_file(module, mod_path=None):
'icon': get_module_icon(module),
'installable': True,
'license': 'AGPL-3',
- 'name': False,
'post_load': None,
'version': '1.0',
'web': False,
diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py
index 1d68e228b8f..c87d944bd7c 100644
--- a/openerp/modules/registry.py
+++ b/openerp/modules/registry.py
@@ -151,9 +151,11 @@ class Registry(Mapping):
return [self.models[m] for m in models_to_load]
- def setup_models(self, cr):
+ def setup_models(self, cr, partial=False):
""" Complete the setup of models.
This must be called after loading modules and before using the ORM.
+
+ :param partial: ``True`` if all models have not been loaded yet.
"""
# prepare the setup on all models
for model in self.models.itervalues():
@@ -162,7 +164,7 @@ class Registry(Mapping):
# do the actual setup from a clean state
self._m2m = {}
for model in self.models.itervalues():
- model._setup_fields(cr, SUPERUSER_ID)
+ model._setup_fields(cr, SUPERUSER_ID, partial=partial)
def clear_caches(self):
""" Clear the caches
diff --git a/openerp/netsvc.py b/openerp/netsvc.py
index 856faa8f61d..68375d1953c 100644
--- a/openerp/netsvc.py
+++ b/openerp/netsvc.py
@@ -80,7 +80,7 @@ class PostgreSQLHandler(logging.Handler):
dbname = tools.config['log_db'] or ct_db
if not dbname:
return
- with tools.ignore(Exception), tools.mute_logger('openerp.sql_db'), sql_db.db_connect(dbname).cursor() as cr:
+ with tools.ignore(Exception), tools.mute_logger('openerp.sql_db'), sql_db.db_connect(dbname, allow_uri=True).cursor() as cr:
msg = tools.ustr(record.msg)
if record.args:
msg = msg % record.args
diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py
index 07e8b02313c..f11ef97e0ac 100644
--- a/openerp/osv/fields.py
+++ b/openerp/osv/fields.py
@@ -120,7 +120,7 @@ class _column(object):
# prefetch only if self._classic_write, not self.groups, and not
# self.deprecated
- if not self._classic_write or self.groups or self.deprecated:
+ if not self._classic_write or self.deprecated:
self._prefetch = False
def to_field(self):
@@ -134,6 +134,7 @@ class _column(object):
('_origin', self), # field interfaces self
('copy', self.copy),
('index', self.select),
+ ('manual', self.manual),
('string', self.string),
('help', self.help),
('readonly', self.readonly),
@@ -145,8 +146,10 @@ class _column(object):
('translate', self.translate),
('domain', self._domain),
('context', self._context),
+ ('change_default', self.change_default),
+ ('deprecated', self.deprecated),
]
- return dict(item for item in items if items[1])
+ return dict(item for item in items if item[1])
def restart(self):
pass
@@ -186,7 +189,7 @@ class _column(object):
class boolean(_column):
_type = 'boolean'
_symbol_c = '%s'
- _symbol_f = lambda x: x and 'True' or 'False'
+ _symbol_f = bool
_symbol_set = (_symbol_c, _symbol_f)
def __init__(self, string='unknown', required=False, **args):
@@ -291,6 +294,11 @@ class html(text):
self._symbol_f = self._symbol_set_html
self._symbol_set = (self._symbol_c, self._symbol_f)
+ def to_field_args(self):
+ args = super(html, self).to_field_args()
+ args['sanitize'] = self._sanitize
+ return args
+
import __builtin__
class float(_column):
@@ -463,17 +471,16 @@ class datetime(_column):
registry = openerp.modules.registry.RegistryManager.get(cr.dbname)
user = registry['res.users'].browse(cr, SUPERUSER_ID, uid)
tz_name = user.tz
+ utc_timestamp = pytz.utc.localize(timestamp, is_dst=False) # UTC = no DST
if tz_name:
try:
- utc = pytz.utc
context_tz = pytz.timezone(tz_name)
- utc_timestamp = utc.localize(timestamp, is_dst=False) # UTC = no DST
return utc_timestamp.astimezone(context_tz)
except Exception:
_logger.debug("failed to compute context/client-specific timestamp, "
"using the UTC value",
exc_info=True)
- return timestamp
+ return utc_timestamp
class binary(_column):
_type = 'binary'
@@ -664,17 +671,27 @@ class one2many(_column):
context = dict(context or {})
context.update(self._context)
- res = dict((id, []) for id in ids)
-
comodel = obj.pool[self._obj].browse(cr, user, [], context)
inverse = self._fields_id
domain = self._domain(obj) if callable(self._domain) else self._domain
domain = domain + [(inverse, 'in', ids)]
- for record in comodel.search(domain, limit=self._limit):
- # Note: record[inverse] can be a record or an integer!
- assert int(record[inverse]) in res
- res[int(record[inverse])].append(record.id)
+ records = comodel.search(domain, limit=self._limit)
+ record_ids = map(int, records)
+
+ res = dict((id, []) for id in ids)
+ if record_ids:
+ cr.execute('SELECT id, %(inverse)s \
+ FROM %(rel)s \
+ WHERE id in %%s ' % {
+ 'inverse': inverse,
+ 'rel': comodel._table,
+ }, (tuple(record_ids),))
+ record_value_id = dict(cr.fetchall())
+ # match the result per id, preserving the order
+ for record in records:
+ key = record_value_id[record.id]
+ res[key].append(record.id)
return res
@@ -682,7 +699,7 @@ class one2many(_column):
result = []
context = dict(context or {})
context.update(self._context)
- context['no_store_function'] = True
+ context['recompute'] = False # recomputation is done by outer create/write
if not values:
return
obj = obj.pool[self._obj]
@@ -1293,9 +1310,9 @@ class function(_column):
# if we already have a value, don't recompute it.
# This happen if case of stored many2one fields
if values and not multi and name in values[0]:
- result = {v['id']: v[name] for v in values}
+ result = dict((v['id'], v[name]) for v in values)
elif values and multi and all(n in values[0] for n in name):
- result = {v['id']: dict((n, v[n]) for n in name) for v in values}
+ result = dict((v['id'], dict((n, v[n]) for n in name)) for v in values)
else:
result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
if multi:
@@ -1559,8 +1576,15 @@ class property(function):
column = obj._all_columns[prop_name].column
values = ir_property.get_multi(cr, uid, prop_name, obj._name, ids, context=context)
if column._type == 'many2one':
+ # name_get the non-null values as SUPERUSER_ID
+ vals = sum(set(filter(None, values.itervalues())),
+ obj.pool[column._obj].browse(cr, uid, [], context=context))
+ vals_name = dict(vals.sudo().name_get()) if vals else {}
for id, value in values.iteritems():
- res[id][prop_name] = value.name_get()[0] if value else False
+ ng = False
+ if value and value.id in vals_name:
+ ng = value.id, vals_name[value.id]
+ res[id][prop_name] = ng
else:
for id, value in values.iteritems():
res[id][prop_name] = value
@@ -1570,12 +1594,12 @@ class property(function):
def __init__(self, **args):
if 'view_load' in args:
_logger.warning("view_load attribute is deprecated on ir.fields. Args: %r", args)
- obj = 'relation' in args and args['relation'] or ''
+ args = dict(args)
+ args['obj'] = args.pop('relation', '') or args.get('obj', '')
super(property, self).__init__(
fnct=self._fnct_read,
fnct_inv=self._fnct_write,
fnct_search=self._fnct_search,
- obj=obj,
multi='properties',
**args
)
diff --git a/openerp/release.py b/openerp/release.py
index 69ceccd4194..21ee24f90a4 100644
--- a/openerp/release.py
+++ b/openerp/release.py
@@ -34,6 +34,7 @@ version_info = (9, 0, 0, ALPHA, 1)
version = '.'.join(map(str, version_info[:2])) + RELEASE_LEVELS_DISPLAY[version_info[3]] + str(version_info[4] or '')
series = serie = major_version = '.'.join(map(str, version_info[:2]))
+product_name = 'Odoo'
description = 'Odoo Server'
long_desc = '''Odoo is a complete ERP and CRM. The main features are accounting (analytic
and financial), stock management, sales and purchases management, tasks
@@ -45,9 +46,9 @@ classifiers = """Development Status :: 5 - Production/Stable
License :: OSI Approved :: GNU Affero General Public License v3
Programming Language :: Python
"""
-url = 'http://www.openerp.com'
+url = 'https://www.odoo.com'
author = 'OpenERP S.A.'
-author_email = 'info@openerp.com'
+author_email = 'info@odoo.com'
license = 'AGPL-3'
nt_service_name = "openerp-server-" + series
diff --git a/openerp/report/report_sxw.py b/openerp/report/report_sxw.py
index e3917d8fa96..3abd1cb85f9 100644
--- a/openerp/report/report_sxw.py
+++ b/openerp/report/report_sxw.py
@@ -192,7 +192,9 @@ class rml_parse(object):
elif (hasattr(obj, '_field') and\
isinstance(obj._field, (float_field, function_field)) and\
obj._field.digits):
- d = obj._field.digits[1] or DEFAULT_DIGITS
+ d = obj._field.digits[1]
+ if not d and d is not 0:
+ d = DEFAULT_DIGITS
return d
def formatLang(self, value, digits=None, date=False, date_time=False, grouping=True, monetary=False, dp=False, currency_obj=False):
@@ -249,7 +251,8 @@ class rml_parse(object):
res='%s %s'%(currency_obj.symbol, res)
return res
- def display_address(self, address_record):
+ def display_address(self, address_record, without_company=False):
+ # FIXME handle `without_company`
return address_record.contact_address
def repeatIn(self, lst, name,nodes_parent=False):
diff --git a/openerp/sql_db.py b/openerp/sql_db.py
index be6c02f9fe3..739c32a4f12 100644
--- a/openerp/sql_db.py
+++ b/openerp/sql_db.py
@@ -30,6 +30,7 @@ the ORM does, in fact.
from contextlib import contextmanager
from functools import wraps
import logging
+import urlparse
import uuid
import psycopg2.extras
import psycopg2.extensions
@@ -47,11 +48,13 @@ types_mapping = {
}
def unbuffer(symb, cr):
- if symb is None: return None
+ if symb is None:
+ return None
return str(symb)
def undecimalize(symb, cr):
- if symb is None: return None
+ if symb is None:
+ return None
return float(symb)
for name, typeoid in types_mapping.items():
@@ -142,7 +145,7 @@ class Cursor(object):
*any* data which may be modified during the life of the cursor.
"""
- IN_MAX = 1000 # decent limit on size of IN queries - guideline = Oracle limit
+ IN_MAX = 1000 # decent limit on size of IN queries - guideline = Oracle limit
def check(f):
@wraps(f)
@@ -155,7 +158,7 @@ class Cursor(object):
return f(self, *args, **kwargs)
return wrapper
- def __init__(self, pool, dbname, serialized=True):
+ def __init__(self, pool, dbname, dsn, serialized=True):
self.sql_from_log = {}
self.sql_into_log = {}
@@ -164,19 +167,21 @@ class Cursor(object):
self.sql_log = _logger.isEnabledFor(logging.DEBUG)
self.sql_log_count = 0
- self._closed = True # avoid the call of close() (by __del__) if an exception
- # is raised by any of the following initialisations
+
+ # avoid the call of close() (by __del__) if an exception
+ # is raised by any of the following initialisations
+ self._closed = True
+
self.__pool = pool
self.dbname = dbname
-
# Whether to enable snapshot isolation level for this cursor.
- # see also the docstring of Cursor.
+ # see also the docstring of Cursor.
self._serialized = serialized
- self._cnx = pool.borrow(dsn(dbname))
+ self._cnx = pool.borrow(dsn)
self._obj = self._cnx.cursor()
if self.sql_log:
- self.__caller = frame_codeinfo(currentframe(),2)
+ self.__caller = frame_codeinfo(currentframe(), 2)
else:
self.__caller = False
self._closed = False # real initialisation value
@@ -188,7 +193,7 @@ class Cursor(object):
self.cache = {}
def __build_dict(self, row):
- return { d.name: row[i] for i, d in enumerate(self._obj.description) }
+ return {d.name: row[i] for i, d in enumerate(self._obj.description)}
def dictfetchone(self):
row = self._obj.fetchone()
return row and self.__build_dict(row)
@@ -216,8 +221,7 @@ class Cursor(object):
def execute(self, query, params=None, log_exceptions=None):
if '%d' in query or '%f' in query:
_logger.warning(query)
- _logger.warning("SQL queries cannot contain %d or %f anymore. "
- "Use only %s")
+ _logger.warning("SQL queries cannot contain %d or %f anymore. Use only %s")
if params and not isinstance(params, (tuple, list, dict)):
_logger.error("SQL query parameters should be a tuple, list or dict; got %r", params)
raise ValueError("SQL query parameters should be a tuple, list or dict; got %r" % (params,))
@@ -258,7 +262,6 @@ class Cursor(object):
self.sql_into_log[res_into.group(1)][1] += delay
return res
-
def split_for_in_conditions(self, ids):
"""Split a list of identifiers into one or more smaller tuples
safe for IN conditions, after uniquifying them."""
@@ -270,22 +273,20 @@ class Cursor(object):
if not self.sql_log:
return
def process(type):
- sqllogs = {'from':self.sql_from_log, 'into':self.sql_into_log}
+ sqllogs = {'from': self.sql_from_log, 'into': self.sql_into_log}
sum = 0
if sqllogs[type]:
sqllogitems = sqllogs[type].items()
sqllogitems.sort(key=lambda k: k[1][1])
_logger.debug("SQL LOG %s:", type)
- sqllogitems.sort(lambda x,y: cmp(x[1][0], y[1][0]))
+ sqllogitems.sort(lambda x, y: cmp(x[1][0], y[1][0]))
for r in sqllogitems:
delay = timedelta(microseconds=r[1][1])
- _logger.debug("table: %s: %s/%s",
- r[0], delay, r[1][0])
- sum+= r[1][1]
+ _logger.debug("table: %s: %s/%s", r[0], delay, r[1][0])
+ sum += r[1][1]
sqllogs[type].clear()
sum = timedelta(microseconds=sum)
- _logger.debug("SUM %s:%s/%d [%d]",
- type, sum, self.sql_log_count, sql_counter)
+ _logger.debug("SUM %s:%s/%d [%d]", type, sum, self.sql_log_count, sql_counter)
sqllogs[type].clear()
process('from')
process('into')
@@ -305,7 +306,7 @@ class Cursor(object):
del self.cache
if self.sql_log:
- self.__closer = frame_codeinfo(currentframe(),3)
+ self.__closer = frame_codeinfo(currentframe(), 3)
# simple query count is always computed
sql_counter += self.sql_log_count
@@ -349,9 +350,10 @@ class Cursor(object):
# is remapped to serializable before being
# sent to the database, so it is in fact
# unavailable for use with pg 9.1.
- isolation_level = ISOLATION_LEVEL_REPEATABLE_READ \
- if self._serialized \
- else ISOLATION_LEVEL_READ_COMMITTED
+ isolation_level = \
+ ISOLATION_LEVEL_REPEATABLE_READ \
+ if self._serialized \
+ else ISOLATION_LEVEL_READ_COMMITTED
self._cnx.set_isolation_level(isolation_level)
@check
@@ -442,10 +444,10 @@ class PsycoConnection(psycopg2.extensions.connection):
class ConnectionPool(object):
""" The pool of connections to database(s)
-
+
Keep a set of connections to pg databases open, and reuse them
to open cursors for all transactions.
-
+
The connections are *not* automatically closed. Only a close_db()
can trigger that.
"""
@@ -460,7 +462,6 @@ class ConnectionPool(object):
self._lock.release()
return _locked
-
def __init__(self, maxconn=64):
self._connections = []
self._maxconn = max(maxconn, 1)
@@ -491,7 +492,7 @@ class ConnectionPool(object):
_logger.warning('%r: Free leaked connection to %r', self, cnx.dsn)
for i, (cnx, used) in enumerate(self._connections):
- if not used and dsn_are_equals(cnx.dsn, dsn):
+ if not used and cnx._original_dsn == dsn:
try:
cnx.reset()
except psycopg2.OperationalError:
@@ -522,6 +523,7 @@ class ConnectionPool(object):
except psycopg2.Error:
_logger.exception('Connection to the database failed')
raise
+ result._original_dsn = dsn
self._connections.append((result, True))
self._debug('Create new connection')
return result
@@ -546,7 +548,7 @@ class ConnectionPool(object):
def close_all(self, dsn=None):
_logger.info('%r: Close all connections to %r', self, dsn)
for i, (cnx, used) in tools.reverse_enumerate(self._connections):
- if dsn is None or dsn_are_equals(cnx.dsn, dsn):
+ if dsn is None or cnx._original_dsn == dsn:
cnx.close()
self._connections.pop(i)
@@ -554,20 +556,20 @@ class ConnectionPool(object):
class Connection(object):
""" A lightweight instance of a connection to postgres
"""
-
- def __init__(self, pool, dbname):
+ def __init__(self, pool, dbname, dsn):
self.dbname = dbname
+ self.dsn = dsn
self.__pool = pool
def cursor(self, serialized=True):
cursor_type = serialized and 'serialized ' or ''
- _logger.debug('create %scursor to %r', cursor_type, self.dbname)
- return Cursor(self.__pool, self.dbname, serialized=serialized)
+ _logger.debug('create %scursor to %r', cursor_type, self.dsn)
+ return Cursor(self.__pool, self.dbname, self.dsn, serialized=serialized)
def test_cursor(self, serialized=True):
cursor_type = serialized and 'serialized ' or ''
- _logger.debug('create test %scursor to %r', cursor_type, self.dbname)
- return TestCursor(self.__pool, self.dbname, serialized=serialized)
+ _logger.debug('create test %scursor to %r', cursor_type, self.dsn)
+ return TestCursor(self.__pool, self.dbname, self.dsn, serialized=serialized)
# serialized_cursor is deprecated - cursors are serialized by default
serialized_cursor = cursor
@@ -582,42 +584,48 @@ class Connection(object):
except Exception:
return False
-def dsn(db_name):
+def dsn(db_or_uri):
+ """parse the given `db_or_uri` and return a 2-tuple (dbname, uri)"""
+ if db_or_uri.startswith(('postgresql://', 'postgres://')):
+ # extract db from uri
+ us = urlparse.urlsplit(db_or_uri)
+ if len(us.path) > 1:
+ db_name = us.path[1:]
+ elif us.username:
+ db_name = us.username
+ else:
+ db_name = us.hostname
+ return db_name, db_or_uri
+
_dsn = ''
for p in ('host', 'port', 'user', 'password'):
cfg = tools.config['db_' + p]
if cfg:
_dsn += '%s=%s ' % (p, cfg)
- return '%sdbname=%s' % (_dsn, db_name)
-
-def dsn_are_equals(first, second):
- def key(dsn):
- k = dict(x.split('=', 1) for x in dsn.strip().split())
- k.pop('password', None) # password is not relevant
- return k
- return key(first) == key(second)
-
+ return db_or_uri, '%sdbname=%s' % (_dsn, db_or_uri)
_Pool = None
-def db_connect(db_name):
+def db_connect(to, allow_uri=False):
global _Pool
if _Pool is None:
_Pool = ConnectionPool(int(tools.config['db_maxconn']))
- return Connection(_Pool, db_name)
+
+ db, uri = dsn(to)
+ if not allow_uri and db != to:
+ raise ValueError('URI connections not allowed')
+ return Connection(_Pool, db, uri)
def close_db(db_name):
""" You might want to call openerp.modules.registry.RegistryManager.delete(db_name) along this function."""
global _Pool
if _Pool:
- _Pool.close_all(dsn(db_name))
+ _Pool.close_all(dsn(db_name)[1])
def close_all():
global _Pool
if _Pool:
_Pool.close_all()
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/openerp/tests/addons/test_translation_import/__init__.py b/openerp/tests/addons/test_translation_import/__init__.py
new file mode 100644
index 00000000000..89d26e2f597
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+import models
diff --git a/openerp/tests/addons/test_translation_import/__openerp__.py b/openerp/tests/addons/test_translation_import/__openerp__.py
new file mode 100644
index 00000000000..29c3c596396
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/__openerp__.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+{
+ 'name': 'test-translation-import',
+ 'version': '0.1',
+ 'category': 'Tests',
+ 'description': """A module to test translation import.""",
+ 'author': 'OpenERP SA',
+ 'maintainer': 'OpenERP SA',
+ 'website': 'http://www.openerp.com',
+ 'depends': ['base'],
+ 'data': ['view.xml'],
+ 'test': ['tests.yml'],
+ 'installable': True,
+ 'auto_install': False,
+}
diff --git a/openerp/tests/addons/test_translation_import/i18n/fr.po b/openerp/tests/addons/test_translation_import/i18n/fr.po
new file mode 100644
index 00000000000..f179cc1eefd
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/i18n/fr.po
@@ -0,0 +1,52 @@
+# This is a test PO file, not a true french translation.
+# See the POT file for further information.
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-10-17 12:36+0000\n"
+"PO-Revision-Date: 2012-10-17 12:36+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+# Note: there is normally an additional line:
+# #: code:addons/test_translation_import/models.py:17
+# This line is present in the POT and removed here to test the translation
+# import behavior.
+#. module: test_translation_import
+#: field:test.translation.import,name:0
+#, python-format
+msgid "1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB"
+msgstr "1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB in french"
+
+#. module: test_translation_import
+#: code:addons/test_translation_import/models.py:14
+#, python-format
+msgid "Ijkl"
+msgstr "Ijkl in french"
+
+#. module: test_translation_import
+#: model:ir.model,name:test_translation_import.model_test_translation_import
+msgid "test.translation.import"
+msgstr "test.translation.import in french"
+
+#. module: test_translation_import
+#: help:test.translation.import,name:0
+msgid "Efgh"
+msgstr "Efgh in french"
+
+#. module: test_translation_import
+#: model:ir.actions.act_window,name:test_translation_import.action_test_translation_import
+#: model:ir.ui.menu,name:test_translation_import.menu_test_translation_import
+msgid "Test translation import"
+msgstr "Test translation import in french"
+
+#. module: test_translation_import
+#: model:ir.ui.menu,name:test_translation_import.menu_test_translation
+msgid "Test translation"
+msgstr "Test translation in french"
+
diff --git a/openerp/tests/addons/test_translation_import/i18n/test_translation_import.pot b/openerp/tests/addons/test_translation_import/i18n/test_translation_import.pot
new file mode 100644
index 00000000000..034fa5254dc
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/i18n/test_translation_import.pot
@@ -0,0 +1,58 @@
+# This is a test POT file, not a true template. It is manually maintained
+# to test the import translation behavior of OpenERP.
+#
+# In particular, the
+# `1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB` source is
+# given with two targets (the #: comments): `code` and `field`. The code one is
+# removed in the fr.po file. Still, the import should generate a database entry
+# for the `code` one. I.e. the targets defined in the POT must be added to the
+# targets defined in the PO file. This was done to fix a bug, as reported by
+# lp:933496.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-10-17 12:36+0000\n"
+"PO-Revision-Date: 2012-10-17 12:36+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: test_translation_import
+#: code:addons/test_translation_import/models.py:17
+#: field:test.translation.import,name:0
+#, python-format
+msgid "1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB"
+msgstr ""
+
+#. module: test_translation_import
+#: code:addons/test_translation_import/models.py:14
+#, python-format
+msgid "Ijkl"
+msgstr ""
+
+#. module: test_translation_import
+#: model:ir.model,name:test_translation_import.model_test_translation_import
+msgid "test.translation.import"
+msgstr ""
+
+#. module: test_translation_import
+#: help:test.translation.import,name:0
+msgid "Efgh"
+msgstr ""
+
+#. module: test_translation_import
+#: model:ir.actions.act_window,name:test_translation_import.action_test_translation_import
+#: model:ir.ui.menu,name:test_translation_import.menu_test_translation_import
+msgid "Test translation import"
+msgstr ""
+
+#. module: test_translation_import
+#: model:ir.ui.menu,name:test_translation_import.menu_test_translation
+msgid "Test translation"
+msgstr ""
+
diff --git a/openerp/tests/addons/test_translation_import/models.py b/openerp/tests/addons/test_translation_import/models.py
new file mode 100644
index 00000000000..3dc3f1c71cc
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/models.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+import openerp
+from openerp.tools.translate import _
+
+class m(openerp.osv.orm.TransientModel):
+ """ A model to provide source strings.
+ """
+ _name = 'test.translation.import'
+
+ _columns = {
+ 'name': openerp.osv.fields.char(
+ '1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB',
+ size=32, help='Efgh'),
+ }
+
+ _('Ijkl')
+
+ # With the name label above, this source string should be generated twice.
+ _('1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB')
+
diff --git a/openerp/tests/addons/test_translation_import/tests.yml b/openerp/tests/addons/test_translation_import/tests.yml
new file mode 100644
index 00000000000..8ccae43f6ee
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/tests.yml
@@ -0,0 +1,13 @@
+-
+ Load the french translation.
+-
+ !python {model: ir.translation }: |
+ import openerp
+ openerp.tools.trans_load(cr, 'test_translation_import/i18n/fr.po', 'fr_FR', verbose=False)
+-
+ Assert we have loaded the correct number of entries for the given source string.
+-
+ !python {model: ir.translation }: |
+ ids = self.search(cr, uid,
+ [('src', '=', '1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB')])
+ assert len(ids) == 2, "2 entries are expected, got %s instead." % len(ids)
diff --git a/openerp/tests/addons/test_translation_import/tests/__init__.py b/openerp/tests/addons/test_translation_import/tests/__init__.py
new file mode 100644
index 00000000000..09e712b0f80
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/tests/__init__.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+import unittest2
+
+import test_term_count
+
+suite = [
+ test_term_count
+ ]
+
diff --git a/openerp/tests/addons/test_translation_import/tests/test_term_count.py b/openerp/tests/addons/test_translation_import/tests/test_term_count.py
new file mode 100644
index 00000000000..2d065b05f18
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/tests/test_term_count.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+
+import openerp
+from openerp.tests import common
+
+class TestTermCount(common.TransactionCase):
+
+ def test_count_term(self):
+ """
+ Just make sure we have as many translation entries as we wanted.
+ """
+ openerp.tools.trans_load(self.cr, 'test_translation_import/i18n/fr.po', 'fr_FR', verbose=False)
+ ids = self.registry('ir.translation').search(self.cr, self.uid,
+ [('src', '=', '1XBUO5PUYH2RYZSA1FTLRYS8SPCNU1UYXMEYMM25ASV7JC2KTJZQESZYRV9L8CGB')])
+ self.assertEqual(len(ids), 2)
+
diff --git a/openerp/tests/addons/test_translation_import/view.xml b/openerp/tests/addons/test_translation_import/view.xml
new file mode 100644
index 00000000000..2fb26fbbdc5
--- /dev/null
+++ b/openerp/tests/addons/test_translation_import/view.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="action_test_translation_import" model="ir.actions.act_window">
+ <field name="name">Test translation import</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">test.translation.import</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ <field name="target">current</field>
+ </record>
+
+ <menuitem icon="STOCK_PREFERENCES" id="base.menu_tests" name="Tests"/>
+
+ <menuitem id="menu_test_translation" parent="base.menu_tests" name="Test translation"/>
+
+ <menuitem id="menu_test_translation_import"
+ name="Test translation import"
+ action="action_test_translation_import"
+ parent="menu_test_translation"/>
+ </data>
+</openerp>
diff --git a/openerp/tools/config.py b/openerp/tools/config.py
index a4f21595078..d230516a6c6 100644
--- a/openerp/tools/config.py
+++ b/openerp/tools/config.py
@@ -62,9 +62,15 @@ DEFAULT_LOG_HANDLER = [':INFO']
def _get_default_datadir():
home = os.path.expanduser('~')
- func = appdirs.user_data_dir if os.path.isdir(home) else appdirs.site_data_dir
+ if os.path.isdir(home):
+ func = appdirs.user_data_dir
+ else:
+ if sys.platform in ['win32', 'darwin']:
+ func = appdirs.site_data_dir
+ else:
+ func = lambda **kwarg: "/var/lib/%s" % kwarg['appname'].lower()
# No "version" kwarg as session and filestore paths are shared against series
- return func(appname='Odoo', appauthor=release.author)
+ return func(appname=release.product_name, appauthor=release.author)
class configmanager(object):
def __init__(self, fname=None):
diff --git a/openerp/tools/convert.py b/openerp/tools/convert.py
index 9be6547ba63..c441cfdd6e1 100644
--- a/openerp/tools/convert.py
+++ b/openerp/tools/convert.py
@@ -60,6 +60,8 @@ from misc import SKIPPED_ELEMENT_TYPES
from misc import unquote
+from openerp import SUPERUSER_ID
+
# Import of XML records requires the unsafe eval as well,
# almost everywhere, which is ok because it supposedly comes
# from trusted data, but at least we make it obvious now.
@@ -212,18 +214,10 @@ def _eval_xml(self, node, pool, cr, uid, idref, context=None):
if t=='tuple':
return tuple(res)
return res
- elif node.tag == "getitem":
- for n in node:
- res=_eval_xml(self,n,pool,cr,uid,idref)
- if not res:
- raise LookupError
- elif node.get('type') in ("int", "list"):
- return res[int(node.get('index'))]
- else:
- return res[node.get('index','').encode("utf8")]
elif node.tag == "function":
args = []
a_eval = node.get('eval','')
+ # FIXME: should probably be exclusive
if a_eval:
idref['ref'] = lambda x: self.id_get(cr, x)
args = unsafe_eval(a_eval, idref)
@@ -231,8 +225,8 @@ def _eval_xml(self, node, pool, cr, uid, idref, context=None):
return_val = _eval_xml(self,n, pool, cr, uid, idref, context)
if return_val is not None:
args.append(return_val)
- model = pool[node.get('model','')]
- method = node.get('name','')
+ model = pool[node.get('model', '')]
+ method = node.get('name')
res = getattr(model, method)(cr, uid, *args)
return res
elif node.tag == "test":
@@ -297,10 +291,10 @@ form: module.record_id""" % (xml_id,)
if len(id) > 64:
_logger.error('id: %s is to long (max: 64)', id)
- def _tag_delete(self, cr, rec, data_node=None):
- d_model = rec.get("model",'')
+ def _tag_delete(self, cr, rec, data_node=None, mode=None):
+ d_model = rec.get("model")
d_search = rec.get("search",'').encode('utf-8')
- d_id = rec.get("id",'')
+ d_id = rec.get("id")
ids = []
if d_search:
@@ -328,7 +322,7 @@ form: module.record_id""" % (xml_id,)
return True
- def _tag_report(self, cr, rec, data_node=None):
+ def _tag_report(self, cr, rec, data_node=None, mode=None):
res = {}
for dest,f in (('name','string'),('model','model'),('report_name','name')):
res[dest] = rec.get(f,'').encode('utf8')
@@ -377,7 +371,7 @@ form: module.record_id""" % (xml_id,)
self._remove_ir_values(cr, res['name'], value, res['model'])
return id
- def _tag_function(self, cr, rec, data_node=None):
+ def _tag_function(self, cr, rec, data_node=None, mode=None):
if self.isnoupdate(data_node) and self.mode != 'init':
return
context = self.get_context(data_node, rec, {'ref': _ref(self, cr)})
@@ -385,41 +379,7 @@ form: module.record_id""" % (xml_id,)
_eval_xml(self,rec, self.pool, cr, uid, self.idref, context=context)
return
- def _tag_wizard(self, cr, rec, data_node=None):
- string = rec.get("string",'').encode('utf8')
- model = rec.get("model",'').encode('utf8')
- name = rec.get("name",'').encode('utf8')
- xml_id = rec.get('id','').encode('utf8')
- self._test_xml_id(xml_id)
- multi = rec.get('multi','') and eval(rec.get('multi','False'))
- res = {'name': string, 'wiz_name': name, 'multi': multi, 'model': model}
-
- if rec.get('groups'):
- g_names = rec.get('groups','').split(',')
- groups_value = []
- for group in g_names:
- if group.startswith('-'):
- group_id = self.id_get(cr, group[1:])
- groups_value.append((3, group_id))
- else:
- group_id = self.id_get(cr, group)
- groups_value.append((4, group_id))
- res['groups_id'] = groups_value
-
- id = self.pool['ir.model.data']._update(cr, self.uid, "ir.actions.wizard", self.module, res, xml_id, noupdate=self.isnoupdate(data_node), mode=self.mode)
- self.idref[xml_id] = int(id)
- # ir_set
- if (not rec.get('menu') or eval(rec.get('menu','False'))) and id:
- keyword = str(rec.get('keyword','') or 'client_action_multi')
- value = 'ir.actions.wizard,'+str(id)
- replace = rec.get("replace",'') or True
- self.pool['ir.model.data'].ir_set(cr, self.uid, 'action', keyword, string, [model], value, replace=replace, isobject=True, xml_id=xml_id)
- elif self.mode=='update' and (rec.get('menu') and eval(rec.get('menu','False'))==False):
- # Special check for wizard having attribute menu=False on update
- value = 'ir.actions.wizard,'+str(id)
- self._remove_ir_values(cr, string, value, model)
-
- def _tag_url(self, cr, rec, data_node=None):
+ def _tag_url(self, cr, rec, data_node=None, mode=None):
url = rec.get("url",'').encode('utf8')
target = rec.get("target",'').encode('utf8')
name = rec.get("name",'').encode('utf8')
@@ -431,7 +391,7 @@ form: module.record_id""" % (xml_id,)
id = self.pool['ir.model.data']._update(cr, self.uid, "ir.actions.act_url", self.module, res, xml_id, noupdate=self.isnoupdate(data_node), mode=self.mode)
self.idref[xml_id] = int(id)
- def _tag_act_window(self, cr, rec, data_node=None):
+ def _tag_act_window(self, cr, rec, data_node=None, mode=None):
name = rec.get('name','').encode('utf-8')
xml_id = rec.get('id','').encode('utf8')
self._test_xml_id(xml_id)
@@ -539,7 +499,7 @@ form: module.record_id""" % (xml_id,)
self.pool['ir.model.data'].ir_set(cr, self.uid, 'action', keyword, xml_id, [src_model], value, replace=replace, isobject=True, xml_id=xml_id)
# TODO add remove ir.model.data
- def _tag_ir_set(self, cr, rec, data_node=None):
+ def _tag_ir_set(self, cr, rec, data_node=None, mode=None):
if self.mode != 'init':
return
res = {}
@@ -549,11 +509,11 @@ form: module.record_id""" % (xml_id,)
res[f_name] = f_val
self.pool['ir.model.data'].ir_set(cr, self.uid, res['key'], res['key2'], res['name'], res['models'], res['value'], replace=res.get('replace',True), isobject=res.get('isobject', False), meta=res.get('meta',None))
- def _tag_workflow(self, cr, rec, data_node=None):
+ def _tag_workflow(self, cr, rec, data_node=None, mode=None):
if self.isnoupdate(data_node) and self.mode != 'init':
return
- model = str(rec.get('model',''))
- w_ref = rec.get('ref','')
+ model = rec.get('model').encode('ascii')
+ w_ref = rec.get('ref')
if w_ref:
id = self.id_get(cr, w_ref)
else:
@@ -565,9 +525,8 @@ form: module.record_id""" % (xml_id,)
id = _eval_xml(self, rec[0], self.pool, cr, self.uid, self.idref)
uid = self.get_uid(cr, self.uid, data_node, rec)
- openerp.workflow.trg_validate(uid, model,
- id,
- str(rec.get('action','')), cr)
+ openerp.workflow.trg_validate(
+ uid, model, id, rec.get('action').encode('ascii'), cr)
#
# Support two types of notation:
@@ -576,7 +535,7 @@ form: module.record_id""" % (xml_id,)
# action="action_id"
# parent="parent_id"
#
- def _tag_menuitem(self, cr, rec, data_node=None):
+ def _tag_menuitem(self, cr, rec, data_node=None, mode=None):
rec_id = rec.get("id",'').encode('ascii')
self._test_xml_id(rec_id)
m_l = map(escape, escape_re.split(rec.get("name",'').encode('utf8')))
@@ -623,47 +582,12 @@ form: module.record_id""" % (xml_id,)
a_action = rec.get('action','').encode('utf8')
# determine the type of action
- a_type, a_id = self.model_id_get(cr, a_action)
- a_type = a_type.split('.')[-1] # keep only type part
-
- icons = {
- "act_window": 'STOCK_NEW',
- "report.xml": 'STOCK_PASTE',
- "wizard": 'STOCK_EXECUTE',
- "url": 'STOCK_JUMP_TO',
- "client": 'STOCK_EXECUTE',
- "server": 'STOCK_EXECUTE',
- }
- values['icon'] = icons.get(a_type,'STOCK_NEW')
-
- if a_type=='act_window':
- cr.execute('select view_type,view_mode,name,view_id,target from ir_act_window where id=%s', (int(a_id),))
- rrres = cr.fetchone()
- assert rrres, "No window action defined for this id %s !\n" \
- "Verify that this is a window action or add a type argument." % (a_action,)
- action_type,action_mode,action_name,view_id,target = rrres
- if view_id:
- view_arch = self.pool['ir.ui.view'].read(cr, 1, [view_id], ['arch'])
- action_mode = etree.fromstring(view_arch[0]['arch'].encode('utf8')).tag
- cr.execute('SELECT view_mode FROM ir_act_window_view WHERE act_window_id=%s ORDER BY sequence LIMIT 1', (int(a_id),))
- if cr.rowcount:
- action_mode, = cr.fetchone()
- if action_type=='tree':
- values['icon'] = 'STOCK_INDENT'
- elif action_mode and action_mode.startswith(('tree','kanban','gantt')):
- values['icon'] = 'STOCK_JUSTIFY_FILL'
- elif action_mode and action_mode.startswith('graph'):
- values['icon'] = 'terp-graph'
- elif action_mode and action_mode.startswith('calendar'):
- values['icon'] = 'terp-calendar'
- if target=='new':
- values['icon'] = 'STOCK_EXECUTE'
- if not values.get('name', False):
- values['name'] = action_name
-
- elif a_type in ['wizard', 'url', 'client', 'server'] and not values.get('name'):
- a_table = 'ir_act_%s' % a_type
- cr.execute('select name from %s where id=%%s' % a_table, (int(a_id),))
+ action_type, action_id = self.model_id_get(cr, a_action)
+ action_type = action_type.split('.')[-1] # keep only type part
+
+ if not values.get('name') and action_type in ('act_window', 'wizard', 'url', 'client', 'server'):
+ a_table = 'ir_act_%s' % action_type.replace('act_', '')
+ cr.execute('select name from "%s" where id=%%s' % a_table, (int(action_id),))
resw = cr.fetchone()
if resw:
values['name'] = resw[0]
@@ -674,12 +598,6 @@ form: module.record_id""" % (xml_id,)
if rec.get('sequence'):
values['sequence'] = int(rec.get('sequence'))
- if rec.get('icon'):
- values['icon'] = str(rec.get('icon'))
- if rec.get('web_icon'):
- values['web_icon'] = "%s,%s" %(self.module, str(rec.get('web_icon')))
- if rec.get('web_icon_hover'):
- values['web_icon_hover'] = "%s,%s" %(self.module, str(rec.get('web_icon_hover')))
if rec.get('groups'):
g_names = rec.get('groups','').split(',')
@@ -699,14 +617,14 @@ form: module.record_id""" % (xml_id,)
self.idref[rec_id] = int(pid)
if rec.get('action') and pid:
- action = "ir.actions.%s,%d" % (a_type, a_id)
+ action = "ir.actions.%s,%d" % (action_type, action_id)
self.pool['ir.model.data'].ir_set(cr, self.uid, 'action', 'tree_but_open', 'Menuitem', [('ir.ui.menu', int(pid))], action, True, True, xml_id=rec_id)
return 'ir.ui.menu', pid
def _assert_equals(self, f1, f2, prec=4):
return not round(f1 - f2, prec)
- def _tag_assert(self, cr, rec, data_node=None):
+ def _tag_assert(self, cr, rec, data_node=None, mode=None):
if self.isnoupdate(data_node) and self.mode != 'init':
return
@@ -770,7 +688,7 @@ form: module.record_id""" % (xml_id,)
else: # all tests were successful for this assertion tag (no break)
self.assertion_report.record_success()
- def _tag_record(self, cr, rec, data_node=None):
+ def _tag_record(self, cr, rec, data_node=None, mode=None):
rec_model = rec.get("model").encode('ascii')
model = self.pool[rec_model]
rec_id = rec.get("id",'').encode('ascii')
@@ -790,45 +708,40 @@ form: module.record_id""" % (xml_id,)
# opt-out using @noupdate="1". A second check will be performed in
# ir.model.data#_update() using the record's ir.model.data `noupdate` field.
if self.isnoupdate(data_node) and self.mode != 'init':
- # check if the xml record has an id string
- if rec_id:
- if '.' in rec_id:
- module,rec_id2 = rec_id.split('.')
- else:
- module = self.module
- rec_id2 = rec_id
- id = self.pool['ir.model.data']._update_dummy(cr, self.uid, rec_model, module, rec_id2)
- # check if the resource already existed at the last update
- if id:
- # if it existed, we don't update the data, but we need to
- # know the id of the existing record anyway
- self.idref[rec_id] = int(id)
- return None
- else:
- # if the resource didn't exist
- if not self.nodeattr2bool(rec, 'forcecreate', True):
- # we don't want to create it, so we skip it
- return None
- # else, we let the record to be created
+ # check if the xml record has no id, skip
+ if not rec_id:
+ return None
+ if '.' in rec_id:
+ module,rec_id2 = rec_id.split('.')
else:
- # otherwise it is skipped
+ module = self.module
+ rec_id2 = rec_id
+ id = self.pool['ir.model.data']._update_dummy(cr, self.uid, rec_model, module, rec_id2)
+ if id:
+ # if the resource already exists, don't update it but store
+ # its database id (can be useful)
+ self.idref[rec_id] = int(id)
return None
+ elif not self.nodeattr2bool(rec, 'forcecreate', True):
+ # if it doesn't exist and we shouldn't create it, skip it
+ return None
+ # else create it normally
+
res = {}
for field in rec.findall('./field'):
-#TODO: most of this code is duplicated above (in _eval_xml)...
- f_name = field.get("name",'').encode('utf-8')
+ #TODO: most of this code is duplicated above (in _eval_xml)...
+ f_name = field.get("name").encode('utf-8')
f_ref = field.get("ref",'').encode('utf-8')
f_search = field.get("search",'').encode('utf-8')
f_model = field.get("model",'').encode('utf-8')
- if not f_model and model._all_columns.get(f_name,False):
+ if not f_model and model._all_columns.get(f_name):
f_model = model._all_columns[f_name].column._obj
f_use = field.get("use",'').encode('utf-8') or 'id'
f_val = False
if f_search:
q = unsafe_eval(f_search, self.idref)
- field = []
assert f_model, 'Define an attribute model="..." in your .XML file !'
f_obj = self.pool[f_model]
# browse the objects searched
@@ -843,15 +756,12 @@ form: module.record_id""" % (xml_id,)
# take the first element of the search
f_val = s[0][f_use]
elif f_ref:
- if f_ref=="null":
- f_val = False
+ if f_name in model._all_columns \
+ and model._all_columns[f_name].column._type == 'reference':
+ val = self.model_id_get(cr, f_ref)
+ f_val = val[0] + ',' + str(val[1])
else:
- if f_name in model._all_columns \
- and model._all_columns[f_name].column._type == 'reference':
- val = self.model_id_get(cr, f_ref)
- f_val = val[0] + ',' + str(val[1])
- else:
- f_val = self.id_get(cr, f_ref)
+ f_val = self.id_get(cr, f_ref)
else:
f_val = _eval_xml(self,field, self.pool, cr, self.uid, self.idref)
if f_name in model._all_columns:
@@ -863,11 +773,11 @@ form: module.record_id""" % (xml_id,)
id = self.pool['ir.model.data']._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
if rec_id:
self.idref[rec_id] = int(id)
- if config.get('import_partial', False):
+ if config.get('import_partial'):
cr.commit()
return rec_model, id
- def _tag_template(self, cr, el, data_node=None):
+ def _tag_template(self, cr, el, data_node=None, mode=None):
# This helper transforms a <template> element into a <record> and forwards it
tpl_id = el.get('id', el.get('t-name', '')).encode('ascii')
full_tpl_id = tpl_id
@@ -896,9 +806,12 @@ form: module.record_id""" % (xml_id,)
record.append(Field(name, name='name'))
record.append(Field("qweb", name='type'))
record.append(Field(el.get('priority', "16"), name='priority'))
- record.append(Field(el, name="arch", type="xml"))
if 'inherit_id' in el.attrib:
record.append(Field(name='inherit_id', ref=el.get('inherit_id')))
+ if el.get('active') in ("True", "False") and mode != "update":
+ record.append(Field(name='active', eval=el.get('active')))
+ if el.get('customize_show') in ("True", "False"):
+ record.append(Field(name='customize_show', eval=el.get('customize_show')))
groups = el.attrib.pop('groups', None)
if groups:
grp_lst = map(lambda x: "ref('%s')" % x, groups.split(','))
@@ -915,8 +828,9 @@ form: module.record_id""" % (xml_id,)
)
)
record.append(Field('primary', name='mode'))
- if el.get('optional'):
- record.append(Field(el.get('optional'), name='application'))
+ # inject complete <template> element (after changing node name) into
+ # the ``arch`` field
+ record.append(Field(el, name="arch", type="xml"))
return self._tag_record(cr, record, data_node)
@@ -934,7 +848,7 @@ form: module.record_id""" % (xml_id,)
mod,id_str = id_str.split('.')
return model_data_obj.get_object_reference(cr, self.uid, mod, id_str)
- def parse(self, de):
+ def parse(self, de, mode=None):
if de.tag != 'openerp':
raise Exception("Mismatch xml format: root tag must be `openerp`.")
@@ -942,7 +856,7 @@ form: module.record_id""" % (xml_id,)
for rec in n:
if rec.tag in self._tags:
try:
- self._tags[rec.tag](self.cr, rec, n)
+ self._tags[rec.tag](self.cr, rec, n, mode=mode)
except Exception, e:
self.cr.rollback()
exc_info = sys.exc_info()
@@ -963,18 +877,18 @@ form: module.record_id""" % (xml_id,)
self.noupdate = noupdate
self.xml_filename = xml_filename
self._tags = {
- 'menuitem': self._tag_menuitem,
'record': self._tag_record,
- 'template': self._tag_template,
- 'assert': self._tag_assert,
- 'report': self._tag_report,
- 'wizard': self._tag_wizard,
'delete': self._tag_delete,
- 'ir_set': self._tag_ir_set,
'function': self._tag_function,
+ 'menuitem': self._tag_menuitem,
+ 'template': self._tag_template,
'workflow': self._tag_workflow,
+ 'report': self._tag_report,
+
+ 'ir_set': self._tag_ir_set,
'act_window': self._tag_act_window,
- 'url': self._tag_url
+ 'url': self._tag_url,
+ 'assert': self._tag_assert,
}
def convert_file(cr, module, filename, idref, mode='update', noupdate=False, kind=None, report=None, pathname=None):
@@ -982,6 +896,7 @@ def convert_file(cr, module, filename, idref, mode='update', noupdate=False, kin
pathname = os.path.join(module, filename)
fp = misc.file_open(pathname)
ext = os.path.splitext(filename)[1].lower()
+
try:
if ext == '.csv':
convert_csv_import(cr, module, pathname, fp.read(), idref, mode, noupdate)
@@ -1080,7 +995,7 @@ def convert_xml_import(cr, module, xmlfile, idref=None, mode='init', noupdate=Fa
else:
xml_filename = xmlfile
obj = xml_import(cr, module, idref, mode, report=report, noupdate=noupdate, xml_filename=xml_filename)
- obj.parse(doc.getroot())
+ obj.parse(doc.getroot(), mode=mode)
return True
diff --git a/openerp/tools/func.py b/openerp/tools/func.py
index 9df320c22d0..03b4f76669a 100644
--- a/openerp/tools/func.py
+++ b/openerp/tools/func.py
@@ -42,6 +42,10 @@ class lazy_property(object):
setattr(obj, self.fget.__name__, value)
return value
+ @property
+ def __doc__(self):
+ return self.fget.__doc__
+
@staticmethod
def reset_all(obj):
""" Reset all lazy properties on the instance `obj`. """
diff --git a/openerp/tools/mail.py b/openerp/tools/mail.py
index 50750f60352..caefae4befc 100644
--- a/openerp/tools/mail.py
+++ b/openerp/tools/mail.py
@@ -63,6 +63,9 @@ def html_sanitize(src, silent=True, strict=False):
# html encode email tags
part = re.compile(r"(<(([^a<>]|a[^<>\s])[^<>]*)@[^<>]+>)", re.IGNORECASE | re.DOTALL)
src = part.sub(lambda m: cgi.escape(m.group(1)), src)
+ # html encode mako tags <% ... %> to decode them later and keep them alive, otherwise they are stripped by the cleaner
+ src = src.replace('<%', cgi.escape('<%'))
+ src = src.replace('%>', cgi.escape('%>'))
kwargs = {
'page_structure': True,
@@ -71,7 +74,7 @@ def html_sanitize(src, silent=True, strict=False):
'remove_unknown_tags': False,
'allow_tags': allowed_tags,
'comments': False,
- 'processing_instructions' : False
+ 'processing_instructions': False
}
if etree.LXML_VERSION >= (2, 3, 1):
# kill_tags attribute has been added in version 2.3.1
@@ -104,6 +107,8 @@ def html_sanitize(src, silent=True, strict=False):
cleaned = cleaned.replace('%20', ' ')
cleaned = cleaned.replace('%5B', '[')
cleaned = cleaned.replace('%5D', ']')
+ cleaned = cleaned.replace('&lt;%', '<%')
+ cleaned = cleaned.replace('%&gt;', '%>')
except etree.ParserError, e:
if 'empty' in str(e):
return ""
@@ -381,6 +386,11 @@ def html_email_clean(html, remove=False, shorten=False, max_length=300, expand_o
node.set('in_quote', '1')
node.set('tail_remove', '1')
if node.tag == 'blockquote' or node.get('text_quote') or node.get('text_signature'):
+ # here no quote_begin because we want to be able to remove some quoted
+ # text without removing all the remaining context
+ node.set('in_quote', '1')
+ if node.getparent() is not None and node.getparent().get('in_quote'):
+ # inside a block of removed text but not in quote_begin (see above)
node.set('in_quote', '1')
# shorten:
@@ -500,6 +510,7 @@ def html2plaintext(html, body_id=None, encoding='utf-8'):
html = html.replace(' ' * 2, ' ')
html = html.replace('&gt;', '>')
html = html.replace('&lt;', '<')
+ html = html.replace('&amp;', '&')
# strip all lines
html = '\n'.join([x.strip() for x in html.splitlines()])
@@ -598,10 +609,6 @@ command_re = re.compile("^Set-([a-z]+) *: *(.+)$", re.I + re.UNICODE)
# group(1) = the record ID ; group(2) = the model (if any) ; group(3) = the domain
reference_re = re.compile("<.*-open(?:object|erp)-(\\d+)(?:-([\w.]+))?.*@(.*)>", re.UNICODE)
-# Bounce regex
-# Typical form of bounce is bounce-128-crm.lead-34@domain
-# group(1) = the mail ID; group(2) = the model (if any); group(3) = the record ID
-bounce_re = re.compile("[\w]+-(\d+)-?([\w.]+)?-?(\d+)?", re.UNICODE)
def generate_tracking_message_id(res_id):
"""Returns a string that can be used in the Message-ID RFC822 header field
@@ -665,4 +672,4 @@ def email_split(text):
# sometimes returns emails without at least '@'. The '@'
# is strictly required in RFC2822's `addr-spec`.
if addr[1]
- if '@' in addr[1]] \ No newline at end of file
+ if '@' in addr[1]]
diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py
index f1651d009e8..363a7e37ebc 100644
--- a/openerp/tools/misc.py
+++ b/openerp/tools/misc.py
@@ -278,6 +278,36 @@ def reverse_enumerate(l):
"""
return izip(xrange(len(l)-1, -1, -1), reversed(l))
+def topological_sort(elems):
+ """ Return a list of elements sorted so that their dependencies are listed
+ before them in the result.
+
+ :param elems: specifies the elements to sort with their dependencies; it is
+ a dictionary like `{element: dependencies}` where `dependencies` is a
+ collection of elements that must appear before `element`. The elements
+ of `dependencies` are not required to appear in `elems`; they will
+ simply not appear in the result.
+
+ :returns: a list with the keys of `elems` sorted according to their
+ specification.
+ """
+ # the algorithm is inspired by [Tarjan 1976],
+ # http://en.wikipedia.org/wiki/Topological_sorting#Algorithms
+ result = []
+ visited = set()
+
+ def visit(n):
+ if n not in visited:
+ visited.add(n)
+ if n in elems:
+ # first visit all dependencies of n, then append n to result
+ map(visit, elems[n])
+ result.append(n)
+
+ map(visit, elems)
+
+ return result
+
class UpdateableStr(local):
""" Class that stores an updateable string (used in wizards)
diff --git a/openerp/tools/translate.py b/openerp/tools/translate.py
index a487b3dd9e3..f2bb10a9a03 100644
--- a/openerp/tools/translate.py
+++ b/openerp/tools/translate.py
@@ -49,6 +49,8 @@ _logger = logging.getLogger(__name__)
# used to notify web client that these translations should be loaded in the UI
WEB_TRANSLATION_COMMENT = "openerp-web"
+SKIPPED_ELEMENTS = ('script', 'style')
+
_LOCALE2WIN32 = {
'af_ZA': 'Afrikaans_South Africa',
'sq_AL': 'Albanian_Albania',
@@ -316,6 +318,10 @@ class TinyPoFile(object):
if not line.startswith('module:'):
comments.append(line)
elif line.startswith('#:'):
+ # Process the `reference` comments. Each line can specify
+ # multiple targets (e.g. model, view, code, selection,
+ # ...). For each target, we will return an additional
+ # entry.
for lpart in line[2:].strip().split(' '):
trans_info = lpart.strip().split(':',2)
if trans_info and len(trans_info) == 2:
@@ -365,6 +371,9 @@ class TinyPoFile(object):
line = self.lines.pop(0).strip()
if targets and not fuzzy:
+ # Use the first target for the current entry (returned at the
+ # end of this next() call), and keep the others to generate
+ # additional entries (returned the next next() calls).
trans_type, name, res_id = targets.pop(0)
for t, n, r in targets:
if t == trans_type == 'code': continue
@@ -536,28 +545,34 @@ def trans_parse_rml(de):
res.extend(trans_parse_rml(n))
return res
-def trans_parse_view(de):
- res = []
- if not isinstance(de, SKIPPED_ELEMENT_TYPES) and de.text and de.text.strip():
- res.append(de.text.strip().encode("utf8"))
- if de.tail and de.tail.strip():
- res.append(de.tail.strip().encode("utf8"))
- if de.tag == 'attribute' and de.get("name") == 'string':
- if de.text:
- res.append(de.text.encode("utf8"))
- if de.get("string"):
- res.append(de.get('string').encode("utf8"))
- if de.get("help"):
- res.append(de.get('help').encode("utf8"))
- if de.get("sum"):
- res.append(de.get('sum').encode("utf8"))
- if de.get("confirm"):
- res.append(de.get('confirm').encode("utf8"))
- if de.get("placeholder"):
- res.append(de.get('placeholder').encode("utf8"))
- for n in de:
- res.extend(trans_parse_view(n))
- return res
+def _push(callback, term, source_line):
+ """ Sanity check before pushing translation terms """
+ term = (term or "").strip().encode('utf8')
+ # Avoid non-char tokens like ':' '...' '.00' etc.
+ if len(term) > 8 or any(x.isalpha() for x in term):
+ callback(term, source_line)
+
+def trans_parse_view(element, callback):
+ """ Helper method to recursively walk an etree document representing a
+ regular view and call ``callback(term)`` for each translatable term
+ that is found in the document.
+
+ :param ElementTree element: root of etree document to extract terms from
+ :param callable callback: a callable in the form ``f(term, source_line)``,
+ that will be called for each extracted term.
+ """
+ if (not isinstance(element, SKIPPED_ELEMENT_TYPES)
+ and element.tag.lower() not in SKIPPED_ELEMENTS
+ and element.text):
+ _push(callback, element.text, element.sourceline)
+ if element.tail:
+ _push(callback, element.tail, element.sourceline)
+ for attr in ('string', 'help', 'sum', 'confirm', 'placeholder'):
+ value = element.get(attr)
+ if value:
+ _push(callback, value, element.sourceline)
+ for n in element:
+ trans_parse_view(n, callback)
# tests whether an object is in a list of modules
def in_modules(object_name, modules):
@@ -573,6 +588,30 @@ def in_modules(object_name, modules):
module = module_dict.get(module, module)
return module in modules
+def _extract_translatable_qweb_terms(element, callback):
+ """ Helper method to walk an etree document representing
+ a QWeb template, and call ``callback(term)`` for each
+ translatable term that is found in the document.
+
+ :param ElementTree element: root of etree document to extract terms from
+ :param callable callback: a callable in the form ``f(term, source_line)``,
+ that will be called for each extracted term.
+ """
+ # not using elementTree.iterparse because we need to skip sub-trees in case
+ # the ancestor element had a reason to be skipped
+ for el in element:
+ if isinstance(el, SKIPPED_ELEMENT_TYPES): continue
+ if (el.tag.lower() not in SKIPPED_ELEMENTS
+ and "t-js" not in el.attrib
+ and not ("t-jquery" in el.attrib and "t-operation" not in el.attrib)
+ and not ("t-translation" in el.attrib and
+ el.attrib["t-translation"].strip() == "off")):
+ _push(callback, el.text, el.sourceline)
+ for att in ('title', 'alt', 'label', 'placeholder'):
+ if att in el.attrib:
+ _push(callback, el.attrib[att], el.sourceline)
+ _extract_translatable_qweb_terms(el, callback)
+ _push(callback, el.tail, el.sourceline)
def babel_extract_qweb(fileobj, keywords, comment_tags, options):
"""Babel message extractor for qweb template files.
@@ -588,31 +627,11 @@ def babel_extract_qweb(fileobj, keywords, comment_tags, options):
"""
result = []
def handle_text(text, lineno):
- text = (text or "").strip()
- if len(text) > 1: # Avoid mono-char tokens like ':' ',' etc.
- result.append((lineno, None, text, []))
-
- # not using elementTree.iterparse because we need to skip sub-trees in case
- # the ancestor element had a reason to be skipped
- def iter_elements(current_element):
- for el in current_element:
- if isinstance(el, SKIPPED_ELEMENT_TYPES): continue
- if "t-js" not in el.attrib and \
- not ("t-jquery" in el.attrib and "t-operation" not in el.attrib) and \
- not ("t-translation" in el.attrib and el.attrib["t-translation"].strip() == "off"):
- handle_text(el.text, el.sourceline)
- for att in ('title', 'alt', 'label', 'placeholder'):
- if att in el.attrib:
- handle_text(el.attrib[att], el.sourceline)
- iter_elements(el)
- handle_text(el.tail, el.sourceline)
-
+ result.append((lineno, None, text, []))
tree = etree.parse(fileobj)
- iter_elements(tree.getroot())
-
+ _extract_translatable_qweb_terms(tree.getroot(), handle_text)
return result
-
def trans_generate(lang, modules, cr):
dbname = cr.dbname
@@ -649,7 +668,6 @@ def trans_generate(lang, modules, cr):
# empty and one-letter terms are ignored, they probably are not meant to be
# translated, and would be very hard to translate anyway.
if not source or len(source.strip()) <= 1:
- _logger.debug("Ignoring empty or 1-letter source term: %r", tuple)
return
if tuple not in _to_translate:
_to_translate.append(tuple)
@@ -659,6 +677,19 @@ def trans_generate(lang, modules, cr):
return s.encode('utf8')
return s
+ def push(mod, type, name, res_id, term):
+ term = (term or '').strip()
+ if len(term) > 2:
+ push_translation(mod, type, name, res_id, term)
+
+ def get_root_view(xml_id):
+ view = model_data_obj.xmlid_to_object(cr, uid, xml_id)
+ if view:
+ while view.mode != 'primary':
+ view = view.inherit_id
+ xml_id = view.get_external_id(cr, uid).get(view.id, xml_id)
+ return xml_id
+
for (xml_name,model,res_id,module) in cr.fetchall():
module = encode(module)
model = encode(model)
@@ -680,8 +711,13 @@ def trans_generate(lang, modules, cr):
if model=='ir.ui.view':
d = etree.XML(encode(obj.arch))
- for t in trans_parse_view(d):
- push_translation(module, 'view', encode(obj.model), 0, t)
+ if obj.type == 'qweb':
+ view_id = get_root_view(xml_name)
+ push_qweb = lambda t,l: push(module, 'view', 'website', view_id, t)
+ _extract_translatable_qweb_terms(d, push_qweb)
+ else:
+ push_view = lambda t,l: push(module, 'view', obj.model, xml_name, t)
+ trans_parse_view(d, push_view)
elif model=='ir.actions.wizard':
pass # TODO Can model really be 'ir.actions.wizard' ?
@@ -745,13 +781,16 @@ def trans_generate(lang, modules, cr):
_logger.exception("couldn't export translation for report %s %s %s", name, report_type, fname)
for field_name, field_def in obj._columns.items():
+ if model == 'ir.model' and field_name == 'name' and obj.name == obj.model:
+ # ignore model name if it is the technical one, nothing to translate
+ continue
if field_def.translate:
name = model + "," + field_name
try:
- trad = getattr(obj, field_name) or ''
+ term = obj[field_name] or ''
except:
- trad = ''
- push_translation(module, 'model', name, xml_name, encode(trad))
+ term = ''
+ push_translation(module, 'model', name, xml_name, encode(term))
# End of data for ir.model.data query results
@@ -786,7 +825,6 @@ def trans_generate(lang, modules, cr):
if model_obj._sql_constraints:
push_local_constraints(module, model_obj, 'sql_constraints')
-
modobj = registry['ir.module.module']
installed_modids = modobj.search(cr, uid, [('state', '=', 'installed')])
installed_modules = map(lambda m: m['name'], modobj.read(cr, uid, installed_modids, ['name']))
@@ -894,6 +932,10 @@ def trans_load_data(cr, fileobj, fileformat, lang, lang_name=None, verbose=True,
# lets create the language with locale information
lang_obj.load_lang(cr, SUPERUSER_ID, lang=lang, lang_name=lang_name)
+ # Parse also the POT: it will possibly provide additional targets.
+ # (Because the POT comments are correct on Launchpad but not the
+ # PO comments due to a Launchpad limitation. See LP bug 933496.)
+ pot_reader = []
# now, the serious things: we read the language file
fileobj.seek(0)
@@ -906,19 +948,42 @@ def trans_load_data(cr, fileobj, fileformat, lang, lang_name=None, verbose=True,
elif fileformat == 'po':
reader = TinyPoFile(fileobj)
f = ['type', 'name', 'res_id', 'src', 'value', 'comments']
+
+ # Make a reader for the POT file and be somewhat defensive for the
+ # stable branch.
+ if fileobj.name.endswith('.po'):
+ try:
+ # Normally the path looks like /path/to/xxx/i18n/lang.po
+ # and we try to find the corresponding
+ # /path/to/xxx/i18n/xxx.pot file.
+ head, _ = os.path.split(fileobj.name)
+ head2, _ = os.path.split(head)
+ head3, tail3 = os.path.split(head2)
+ pot_handle = misc.file_open(os.path.join(head3, tail3, 'i18n', tail3 + '.pot'))
+ pot_reader = TinyPoFile(pot_handle)
+ except:
+ pass
+
else:
_logger.error('Bad file format: %s', fileformat)
raise Exception(_('Bad file format'))
+ # Read the POT `reference` comments, and keep them indexed by source
+ # string.
+ pot_targets = {}
+ for type, name, res_id, src, _, comments in pot_reader:
+ if type is not None:
+ pot_targets.setdefault(src, {'value': None, 'targets': []})
+ pot_targets[src]['targets'].append((type, name, res_id))
+
# read the rest of the file
- line = 1
irt_cursor = trans_obj._get_import_cursor(cr, SUPERUSER_ID, context=context)
- for row in reader:
- line += 1
+ def process_row(row):
+ """Process a single PO (or POT) entry."""
# skip empty rows and rows where the translation field (=last fiefd) is empty
#if (not row) or (not row[-1]):
- # continue
+ # return
# dictionary which holds values for this line of the csv file
# {'lang': ..., 'type': ..., 'name': ..., 'res_id': ...,
@@ -928,9 +993,17 @@ def trans_load_data(cr, fileobj, fileformat, lang, lang_name=None, verbose=True,
for i, field in enumerate(f):
dic[field] = row[i]
+ # Get the `reference` comments from the POT.
+ src = row[3]
+ if pot_reader and src in pot_targets:
+ pot_targets[src]['targets'] = filter(lambda x: x != row[:3], pot_targets[src]['targets'])
+ pot_targets[src]['value'] = row[4]
+ if not pot_targets[src]['targets']:
+ del pot_targets[src]
+
# This would skip terms that fail to specify a res_id
if not dic.get('res_id'):
- continue
+ return
res_id = dic.pop('res_id')
if res_id and isinstance(res_id, (int, long)) \
@@ -951,6 +1024,21 @@ def trans_load_data(cr, fileobj, fileformat, lang, lang_name=None, verbose=True,
irt_cursor.push(dic)
+ # First process the entries from the PO file (doing so also fills/removes
+ # the entries from the POT file).
+ for row in reader:
+ process_row(row)
+
+ # Then process the entries implied by the POT file (which is more
+ # correct w.r.t. the targets) if some of them remain.
+ pot_rows = []
+ for src in pot_targets:
+ value = pot_targets[src]['value']
+ for type, name, res_id in pot_targets[src]['targets']:
+ pot_rows.append((type, name, res_id, src, value, comments))
+ for row in pot_rows:
+ process_row(row)
+
irt_cursor.finish()
trans_obj.clear_caches()
if verbose:
diff --git a/openerp/tools/view_validation.py b/openerp/tools/view_validation.py
index 9101d10064e..dc0a8d51830 100644
--- a/openerp/tools/view_validation.py
+++ b/openerp/tools/view_validation.py
@@ -11,9 +11,7 @@ def valid_page_in_book(arch):
def valid_field_in_graph(arch):
- """A `graph` must have `string` attribute and an immediate node of `graph` view must be `field`."""
- if arch.xpath('//graph[not (@string)]'):
- return False
+ """ Children of ``graph`` can only be ``field`` """
for child in arch.xpath('/graph/child::*'):
if child.tag != 'field':
return False
@@ -21,9 +19,7 @@ def valid_field_in_graph(arch):
def valid_field_in_tree(arch):
- """A `tree` must have `string` attribute and an immediate node of `tree` view must be `field` or `button`."""
- if arch.xpath('//tree[not (@string)]'):
- return False
+ """ Children of ``tree`` view must be ``field`` or ``button``."""
for child in arch.xpath('/tree/child::*'):
if child.tag not in ('field', 'button'):
return False
@@ -31,13 +27,13 @@ def valid_field_in_tree(arch):
def valid_att_in_field(arch):
- """A `name` attribute must be in a `field` node."""
- return not arch.xpath('//field[not (@name)]')
+ """ ``field`` nodes must all have a ``@name`` """
+ return not arch.xpath('//field[not(@name)]')
def valid_att_in_label(arch):
- """A `for` and `string` attribute must be on a `label` node."""
- return not arch.xpath('//label[not ((@for) or (@string))]')
+ """ ``label`` nodes must have a ``@for`` or a ``@string`` """
+ return not arch.xpath('//label[not(@for or @string)]')
def valid_att_in_form(arch):
diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py
index a041cf511be..eaca88952a3 100644
--- a/openerp/tools/yaml_import.py
+++ b/openerp/tools/yaml_import.py
@@ -461,16 +461,15 @@ class YamlInterpreter(object):
result = getattr(model, match.group(1))(self.cr, SUPERUSER_ID, [], *args)
for key, val in (result or {}).get('value', {}).items():
- assert key in fg, (
- "The field %r returned from the onchange call %r "
- "does not exist in the source view %r (of object "
- "%r). This field will be ignored (and thus not "
- "populated) when clients saves the new record" % (
- key, match.group(1), view_info.get('name', '?'), model._name
- ))
- if key not in fields:
- # do not shadow values explicitly set in yaml.
- record_dict[key] = process_val(key, val)
+ if key in fg:
+ if key not in fields:
+ # do not shadow values explicitly set in yaml.
+ record_dict[key] = process_val(key, val)
+ else:
+ _logger.debug("The returning field '%s' from your on_change call '%s'"
+ " does not exist either on the object '%s', either in"
+ " the view '%s'",
+ key, match.group(1), model._name, view_info['name'])
else:
nodes = list(el) + nodes
else:
@@ -615,7 +614,7 @@ class YamlInterpreter(object):
uid = workflow.uid
else:
uid = self.uid
- self.cr.execute('select distinct signal from wkf_transition')
+ self.cr.execute('select distinct signal, sequence, id from wkf_transition ORDER BY sequence,id')
signals=[x['signal'] for x in self.cr.dictfetchall()]
if workflow.action not in signals:
raise YamlImportException('Incorrect action %s. No such action defined' % workflow.action)
diff --git a/openerp/workflow/workitem.py b/openerp/workflow/workitem.py
index 1c08788257e..29d3294dc0f 100644
--- a/openerp/workflow/workitem.py
+++ b/openerp/workflow/workitem.py
@@ -121,7 +121,7 @@ class WorkflowItem(object):
triggers = triggers and not ok
if triggers:
- cr.execute('select * from wkf_transition where act_from=%s', (self.workitem['act_id'],))
+ cr.execute('select * from wkf_transition where act_from=%s ORDER BY sequence,id', (self.workitem['act_id'],))
for trans in cr.dictfetchall():
if trans['trigger_model']:
ids = self.wkf_expr_eval_expr(trans['trigger_expr_id'])
@@ -219,7 +219,7 @@ class WorkflowItem(object):
def _split_test(self, split_mode, signal, stack):
cr = self.session.cr
- cr.execute('select * from wkf_transition where act_from=%s', (self.workitem['act_id'],))
+ cr.execute('select * from wkf_transition where act_from=%s ORDER BY sequence,id', (self.workitem['act_id'],))
test = False
transitions = []
alltrans = cr.dictfetchall()
@@ -257,7 +257,7 @@ class WorkflowItem(object):
WorkflowItem.create(self.session, self.record, activity, inst_id, stack=stack)
cr.execute('delete from wkf_witm_trans where inst_id=%s and trans_id=%s', (inst_id,trans_id))
else:
- cr.execute('select id from wkf_transition where act_to=%s', (activity['id'],))
+ cr.execute('select id from wkf_transition where act_to=%s ORDER BY sequence,id', (activity['id'],))
trans_ids = cr.fetchall()
ok = True
for (id,) in trans_ids: