[MERGE] from trunk
bzr revid: chm@openerp.com-20130828161130-641xsmbr8xm53xjx
This commit is contained in:
commit
c36bfe173e
|
@ -6,6 +6,8 @@ Changelog
|
|||
`trunk`
|
||||
-------
|
||||
|
||||
- Improved ``html_email_clean`` in tools: better quote and signature finding,
|
||||
added shortening.
|
||||
- Cleaned and slightly refactored ``ir.actions.server``. The ``loop``, ``sms``
|
||||
and ``dummy`` server actions have been removed; ``object_create`` and
|
||||
``object_copy`` have been merged into ``object_create``; ``other`` is now ``multi``
|
||||
|
@ -29,5 +31,15 @@ Changelog
|
|||
``openerp.exceptions.RedirectWarning``.
|
||||
- Give a pair of new methods to ``res.config.settings`` and a helper to make
|
||||
them easier to use: ``get_config_warning()``.
|
||||
- Path to webkit report files (field ``report_file``) must be writen with the
|
||||
Unix way (with ``/`` and not ``\``)
|
||||
- Path to webkit report files (field ``report_file``) must be written the
|
||||
Unix way (with ``/`` and not ``\``)
|
||||
|
||||
|
||||
`7.0`
|
||||
-----
|
||||
|
||||
- Modules may now include an ``i18n_extra`` directory that will be treated like the
|
||||
default ``i18n`` directory. This is typically useful for manual translation files
|
||||
that are not managed by Launchpad's translation system. An example is l10n modules
|
||||
that depend on ``l10n_multilang``.
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
"X-Poedit-Language: Czech\n"
|
||||
|
||||
#. module: base
|
||||
|
@ -4897,7 +4897,7 @@ msgstr "Objednávka obědů, stravování, potraviny"
|
|||
#: field:ir.model.fields,required:0
|
||||
#: field:res.partner.bank.type.field,required:0
|
||||
msgid "Required"
|
||||
msgstr "Požadováno"
|
||||
msgstr "Povinné"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ro
|
||||
|
@ -7934,7 +7934,7 @@ msgstr "Zleva doprava"
|
|||
#: view:res.lang:0
|
||||
#: field:res.lang,translatable:0
|
||||
msgid "Translatable"
|
||||
msgstr "Přeložitelný"
|
||||
msgstr "Přeložitelné"
|
||||
|
||||
#. module: base
|
||||
#: help:base.language.import,code:0
|
||||
|
@ -14735,7 +14735,7 @@ msgstr ""
|
|||
#: field:ir.actions.server,trigger_obj_id:0
|
||||
#: field:ir.model.fields,relation_field:0
|
||||
msgid "Relation Field"
|
||||
msgstr "?!?Související pole"
|
||||
msgstr "Pole relace"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_portal_project
|
||||
|
@ -15029,7 +15029,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.model.fields,relation:0
|
||||
msgid "Object Relation"
|
||||
msgstr "Vztah objektu"
|
||||
msgstr "Relace objektu"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_voucher
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -8452,15 +8452,15 @@ msgstr ""
|
|||
"\n"
|
||||
"Jeder Mitarbeiter kann seine aufgewendete Zeit für verschiedene Projekte "
|
||||
"kodieren und verfolgen.\n"
|
||||
"Ein Projekt ist eine analytische Rechnung und die Zeit, die jemand an diesem "
|
||||
"Projekt verbracht hat,\n"
|
||||
"verursacht Kosten auf dem entsprechenden Konto. \n"
|
||||
"Ein Projekt wird automatisch zur Kostenstelle. Die Zeit, die jemand an "
|
||||
"diesem Projekt verbracht hat,\n"
|
||||
"verursacht dementsprechend Kosten auf dieser Projektkostenstelle. \n"
|
||||
"\n"
|
||||
"Viele Berichterstattungen über die Verfolgung von Zeit und Mitarbeiter "
|
||||
"werden bereitgestellt.\n"
|
||||
"Es ist vollständig in die Kostenrechnung integriert. Es ermöglicht Ihnen die "
|
||||
"Einrichtung einer \n"
|
||||
"Betriebsführung nach Angelegenheit.\n"
|
||||
"Das Modul bietet außerdem Auswertungen zur Rückverfolgung der Mitarbeiter "
|
||||
"Arbeitszeit in Projekten.\n"
|
||||
"Es ist dadurch vollständig in die OpenERP Kostenrechnung integriert und "
|
||||
"ermöglicht dem Management \n"
|
||||
"ein effizientes Projektcontrolling.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -12,8 +12,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
"X-Poedit-Country: GREECE\n"
|
||||
"X-Poedit-Language: Greek\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -25,6 +25,10 @@ msgid ""
|
|||
"================================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Module for the Check Writing and Check Printing.\n"
|
||||
"================================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -60,7 +64,7 @@ msgstr "View Architecture"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale_stock
|
||||
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
|
||||
msgstr ""
|
||||
msgstr "Quotation, Sale Orders, Delivery & Invoicing Control"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
|
@ -89,12 +93,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_point_of_sale
|
||||
msgid "Touchscreen Interface for Shops"
|
||||
msgstr ""
|
||||
msgstr "Touchscreen Interface for Shops"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
|
||||
msgid "Indian Payroll"
|
||||
msgstr ""
|
||||
msgstr "Indian Payroll"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,model:0
|
||||
|
@ -138,7 +142,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.actions.client,params:0
|
||||
msgid "Supplementary arguments"
|
||||
msgstr ""
|
||||
msgstr "Supplementary arguments"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_google_base_account
|
||||
|
@ -147,11 +151,14 @@ msgid ""
|
|||
"The module adds google user in res user.\n"
|
||||
"========================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"The module adds google user in res user.\n"
|
||||
"========================================\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,employee:0
|
||||
msgid "Check this box if this contact is an Employee."
|
||||
msgstr ""
|
||||
msgstr "Check this box if this contact is an Employee."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,domain:0
|
||||
|
@ -182,7 +189,7 @@ msgstr "Target Window"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_rml:0
|
||||
msgid "Main Report File Path"
|
||||
msgstr ""
|
||||
msgstr "Main Report File Path"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
|
||||
|
@ -203,6 +210,16 @@ msgid ""
|
|||
"revenue\n"
|
||||
"reports."
|
||||
msgstr ""
|
||||
"\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."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_sequence.py:134
|
||||
|
@ -253,7 +270,7 @@ msgstr "created."
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_xsl:0
|
||||
msgid "XSL Path"
|
||||
msgstr ""
|
||||
msgstr "XSL Path"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_tr
|
||||
|
@ -279,7 +296,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
|||
#. module: base
|
||||
#: model:res.groups,name:base.group_multi_currency
|
||||
msgid "Multi Currencies"
|
||||
msgstr ""
|
||||
msgstr "Multi Currencies"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_cl
|
||||
|
@ -291,6 +308,12 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Chilean accounting chart and tax localisation.\n"
|
||||
"==============================================\n"
|
||||
"Plan contable chileno e impuestos de acuerdo a disposiciones vigentes\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
|
@ -402,6 +425,8 @@ msgid ""
|
|||
"There is already a shared filter set as default for %(model)s, delete or "
|
||||
"change it before setting a new default"
|
||||
msgstr ""
|
||||
"There is already a shared filter set as default for %(model)s, delete or "
|
||||
"change it before setting a new default"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2649
|
||||
|
@ -499,12 +524,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.model.relation,name:0
|
||||
msgid "Relation Name"
|
||||
msgstr ""
|
||||
msgstr "Relation Name"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
msgid "Create Access Right"
|
||||
msgstr ""
|
||||
msgstr "Create Access Right"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.tv
|
||||
|
@ -544,7 +569,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:workflow.transition:0
|
||||
msgid "Workflow Transition"
|
||||
msgstr ""
|
||||
msgstr "Workflow Transition"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gf
|
||||
|
@ -554,7 +579,7 @@ msgstr "French Guyana"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_hr
|
||||
msgid "Jobs, Departments, Employees Details"
|
||||
msgstr ""
|
||||
msgstr "Jobs, Departments, Employees Details"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_analytic
|
||||
|
@ -594,7 +619,7 @@ msgid ""
|
|||
"event registration\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Organization and management of Events.\n"
|
||||
"Organisation and management of Events.\n"
|
||||
"======================================\n"
|
||||
"\n"
|
||||
"The event module allows you to efficiently organise events and all related "
|
||||
|
@ -617,7 +642,7 @@ msgstr "Bosnian / bosanski jezik"
|
|||
msgid ""
|
||||
"If you check this, then the second time the user prints with same attachment "
|
||||
"name, it returns the previous report."
|
||||
msgstr "On checking this successive reports are generated from cache."
|
||||
msgstr "With this checked, successive reports are retrieved from cache."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_mrp_byproduct
|
||||
|
@ -775,6 +800,32 @@ msgid ""
|
|||
"module named account_voucher.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Accounting and Financial Management.\n"
|
||||
"====================================\n"
|
||||
"\n"
|
||||
"Financial and accounting module which 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 the general ledger are done through the defined "
|
||||
"financial Journals (entry move line or grouping is maintained through "
|
||||
"journal) for a particular financial year.\n"
|
||||
"For the preparation of vouchers there is a module named account_voucher.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
|
@ -802,13 +853,18 @@ msgid ""
|
|||
"This module provides the Integration of the LinkedIn with OpenERP.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"OpenERP Web LinkedIn module.\n"
|
||||
"============================\n"
|
||||
"This module integrates LinkedIn with OpenERP.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,src_model:0
|
||||
msgid ""
|
||||
"Optional model name of the objects on which this action should be visible"
|
||||
msgstr ""
|
||||
"Optional model name of the objects on which this action should be visible"
|
||||
"Optional model name of the objects for which this action should be visible"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.transition,trigger_expr_id:0
|
||||
|
@ -823,7 +879,7 @@ msgstr "Jordan"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_hr
|
||||
msgid "Croatia - RRIF 2012 COA"
|
||||
msgstr ""
|
||||
msgstr "Croatia - RRIF 2012 COA"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,nextcall:0
|
||||
|
@ -952,6 +1008,30 @@ msgid ""
|
|||
"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 ""
|
||||
"\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, holiday, paid days, "
|
||||
"...) and quickly allocate leaves to an employee or department via allocation "
|
||||
"requests. An employee can also make a request for more days off by making a "
|
||||
"new Allocation. This will increase the total available days for that leave "
|
||||
"type (if the request is accepted).\n"
|
||||
"\n"
|
||||
"You can keep track of leaves in different ways by the following reports: \n"
|
||||
"\n"
|
||||
"* Leaves Summary\n"
|
||||
"* Leaves by Department\n"
|
||||
"* Leaves Analysis\n"
|
||||
"\n"
|
||||
"Synchronisation 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, set up the type of meeting in Leave Type.\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -1182,6 +1262,35 @@ msgid ""
|
|||
"* Planned Revenue by Stage and User (graph)\n"
|
||||
"* Opportunities by Stage (graph)\n"
|
||||
msgstr ""
|
||||
"\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, prioritisation, "
|
||||
"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 synchronisation "
|
||||
"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"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.export,format:0
|
||||
|
@ -1278,6 +1387,48 @@ msgid ""
|
|||
"come with any additional paid permission for online use of 'private "
|
||||
"modules'.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Base module for the Brazilian localisation\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 localisation 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 Localisation \n"
|
||||
"leaders need commit rights agility to complete the localisation 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"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:406
|
||||
|
@ -1286,8 +1437,8 @@ msgid ""
|
|||
"Language with code \"%s\" is not defined in your system !\n"
|
||||
"Define it through the Administration menu."
|
||||
msgstr ""
|
||||
"Language with code \"%s\" is not defined in your system !\n"
|
||||
"Define it through the Administration menu."
|
||||
"Language with code \"%s\" is not defined in your system!\n"
|
||||
"Define it through the Settings menu."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gu
|
||||
|
@ -1729,6 +1880,26 @@ msgid ""
|
|||
"in their pockets, this module is essential.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"The base module to manage lunch.\n"
|
||||
"================================\n"
|
||||
"\n"
|
||||
"Many companies order sandwiches, pizzas and more from regular suppliers for "
|
||||
"their employees providing them with extra facilities. \n"
|
||||
"\n"
|
||||
"However lunch management within a company requires proper administration "
|
||||
"especially when the number of employees or suppliers is large. \n"
|
||||
"\n"
|
||||
"The “Lunch Order” module has been developed to make this management easier "
|
||||
"and also to offer employees more tools and better usability. \n"
|
||||
"\n"
|
||||
"In addition to full meal and supplier management, this module offers the "
|
||||
"possibility to display warnings and provide quick order selection based on "
|
||||
"employees' preferences.\n"
|
||||
"\n"
|
||||
"If you want to save your employees' time and the need to always have coins "
|
||||
"in their pockets, this module is essential.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: view:wizard.ir.model.menu.create:0
|
||||
|
@ -2014,6 +2185,22 @@ msgid ""
|
|||
"synchronization with other companies.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\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"
|
||||
"synchronisation with other companies.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_process
|
||||
|
@ -2546,7 +2733,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"\n"
|
||||
" \n"
|
||||
"Belgian localization for in/outgoing invoices (prereq to account_coda):\n"
|
||||
"Belgian localisation for in/outgoing invoices (prereq to account_coda):\n"
|
||||
"=========================================================================\n"
|
||||
" - Rename 'reference' field labels to 'Communication'\n"
|
||||
" - Add support for Belgian Structured Communication\n"
|
||||
|
@ -2641,10 +2828,10 @@ msgstr ""
|
|||
"Helpdesk Management.\n"
|
||||
"====================\n"
|
||||
"\n"
|
||||
"Like records and processing of claims, Helpdesk and Support are good tools\n"
|
||||
"Like records and claims processing, 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"
|
||||
"communication\n"
|
||||
"that is not necessarily related to a claim. Select a customer, add notes\n"
|
||||
"and categorise your interventions with a channel and a priority level.\n"
|
||||
" "
|
||||
|
||||
|
@ -2993,6 +3180,15 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Peruvian accounting chart and tax localisation. In accordance with PCGE "
|
||||
"2010.\n"
|
||||
"========================================================================\n"
|
||||
"\n"
|
||||
"Plan contable peruano e impuestos de acuerdo a disposiciones vigentes de la\n"
|
||||
"SUNAT 2011 (PCGE 2010).\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -3153,6 +3349,19 @@ msgid ""
|
|||
" * Unlimited \"Group By\" levels (not stacked), two cross level analysis "
|
||||
"(stacked)\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Graph Views for Web Client.\n"
|
||||
"===========================\n"
|
||||
"\n"
|
||||
" * Parse a <graph> view allowing the presentation to be changed "
|
||||
"dynamically\n"
|
||||
" * Graph Types: pie, line, area, bar, 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"
|
||||
|
||||
#. module: base
|
||||
#: view:res.groups:0
|
||||
|
@ -3231,6 +3440,25 @@ msgid ""
|
|||
"purchase price and fixed product standard price are booked on a separate \n"
|
||||
"account."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"This module supports the Anglo-Saxon accounting methodology by changing the "
|
||||
"accounting logic for 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 timing of taking \n"
|
||||
"the Cost of Goods Sold versus the Cost of Sales. Anglo-Saxon accounting \n"
|
||||
"takes the cost when a sales invoice is created whereas Continental "
|
||||
"accounting will \n"
|
||||
"take the cost at the moment the goods are shipped.\n"
|
||||
"\n"
|
||||
"This module adds the functionality by using an interim account to \n"
|
||||
"store the value of shipped goods. It also contra-books the interim \n"
|
||||
"account at creation to transfer the amount to the \n"
|
||||
"debtor or creditor account. Additionally, price differences between actual \n"
|
||||
"purchase prices and fixed product standard prices are booked on a separate \n"
|
||||
"account."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.si
|
||||
|
@ -3297,7 +3525,7 @@ msgstr "French RIB Bank Details"
|
|||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "%p - Equivalent of either AM or PM."
|
||||
msgstr "%p - Equivalent of either AM or PM."
|
||||
msgstr "%p - Writes either AM or PM."
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -3315,6 +3543,7 @@ msgid ""
|
|||
"the user will have an access to the sales configuration as well as statistic "
|
||||
"reports."
|
||||
msgstr ""
|
||||
"the user will have access to the sales configuration and statistic reports."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.nz
|
||||
|
@ -3379,6 +3608,18 @@ msgid ""
|
|||
" above. Specify the interval information and partner to be invoice.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Create recurring documents.\n"
|
||||
"===========================\n"
|
||||
"\n"
|
||||
"This module allows the creation of new documents and their subscriptions.\n"
|
||||
"\n"
|
||||
"e.g. To have an invoice generated automatically periodically:\n"
|
||||
"-------------------------------------------------------------\n"
|
||||
" * Define a document type based on an Invoice object.\n"
|
||||
" * Define a subscription whose source document is the document defined\n"
|
||||
" above. Specify the repeat interval and the partner to be invoiced.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,rml_header1:0
|
||||
|
@ -3401,6 +3642,8 @@ msgid ""
|
|||
"the user will have an access to the human resources configuration as well as "
|
||||
"statistic reports."
|
||||
msgstr ""
|
||||
"the user will have access to the human resources configuration as well as "
|
||||
"statistics reports."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_pl
|
||||
|
@ -3524,6 +3767,22 @@ msgid ""
|
|||
" - Yearly Salary by Head and Yearly Salary by Employee Report\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Indian Payroll Salary Rules.\n"
|
||||
"============================\n"
|
||||
"\n"
|
||||
" -Configuration of hr_payroll for India localisation\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"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:3871
|
||||
|
@ -3632,8 +3891,8 @@ msgid ""
|
|||
"way you want to print them in letters and other documents. Some example: "
|
||||
"Mr., Mrs. "
|
||||
msgstr ""
|
||||
"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: "
|
||||
"Manage the contact titles you wish to have available in your system and how "
|
||||
"you want them to be printed in letters and other documents. Some examples: "
|
||||
"Mr., Mrs. "
|
||||
|
||||
#. module: base
|
||||
|
@ -3690,7 +3949,7 @@ msgid ""
|
|||
"If you use a formula type, use a python expression using the variable "
|
||||
"'object'."
|
||||
msgstr ""
|
||||
"If you use a formula type, use a python expression using the variable "
|
||||
"If you use a formula type, use a python expression with the variable "
|
||||
"'object'."
|
||||
|
||||
#. module: base
|
||||
|
@ -3712,7 +3971,7 @@ msgstr "Contact Titles"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_product_manufacturer
|
||||
msgid "Products Manufacturers"
|
||||
msgstr "Products Manufacturers"
|
||||
msgstr "Product Manufacturer Info"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_mail_server.py:240
|
||||
|
@ -3885,6 +4144,38 @@ msgid ""
|
|||
"* Work Order Analysis\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Manage the Manufacturing process in OpenERP\n"
|
||||
"===========================================\n"
|
||||
"\n"
|
||||
"The manufacturing module allows you to cover planning, ordering, stock 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, the necessary operations by machinery and tools, and the aid of "
|
||||
"human resources, all via the use of routings.\n"
|
||||
"\n"
|
||||
"It supports the complete integration and planning of stockable goods, "
|
||||
"consumables and 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 which, on order, automatically purchases your product "
|
||||
"assembly.\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 centre integrated with analytic accounting\n"
|
||||
"* Periodic scheduler computation \n"
|
||||
"* Allows browsing bills of materials in a complete structure including child "
|
||||
"and phantom bills of materials\n"
|
||||
"\n"
|
||||
"Dashboard / Reports for MRP includes:\n"
|
||||
"-------------------------------------\n"
|
||||
"* Procurements in Exception (Graph)\n"
|
||||
"* Stock Value Variation (Graph)\n"
|
||||
"* Work Order Analysis\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: view:ir.attachment:0
|
||||
|
@ -3984,8 +4275,8 @@ msgid ""
|
|||
"For one2many fields, the field on the target model that implement the "
|
||||
"opposite many2one relationship"
|
||||
msgstr ""
|
||||
"For one2many fields, the field on the target model that implements the "
|
||||
"opposite many2one relationship"
|
||||
"For one2many fields, the field in the target model that implements the "
|
||||
"reverse many2one relationship"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
|
@ -4080,6 +4371,24 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"This module allows you to define the default timesheet function of a user on "
|
||||
"a given account.\n"
|
||||
"============================================================================="
|
||||
"================\n"
|
||||
"\n"
|
||||
"This is useful when a user encodes their timesheet: the values are "
|
||||
"retrieved\n"
|
||||
"and the fields are auto-filled. However 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 from the employee data so that this module is "
|
||||
"perfectly\n"
|
||||
"compatible with older configurations.\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
|
@ -4311,7 +4620,7 @@ msgid ""
|
|||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Italian accounting chart and localization.\n"
|
||||
"Italian accounting chart and localisation.\n"
|
||||
"================================================\n"
|
||||
" "
|
||||
|
||||
|
@ -4542,7 +4851,7 @@ msgstr "Account Charts"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_event_main
|
||||
msgid "Events Organization"
|
||||
msgstr ""
|
||||
msgstr "Events Organisation"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_partner_customer_form
|
||||
|
@ -7991,6 +8300,16 @@ msgid ""
|
|||
"shortcut.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Enable shortcut feature in the web client.\n"
|
||||
"==========================================\n"
|
||||
"\n"
|
||||
"Add a Shortcut icon to the systray in order to access the user's shortcuts "
|
||||
"(if any).\n"
|
||||
"\n"
|
||||
"Add a Shortcut icon beside the views title in order to add/remove a "
|
||||
"shortcut.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,rml_header2:0
|
||||
|
@ -8249,6 +8568,14 @@ msgid ""
|
|||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to add a contact to 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"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.bank_account_update
|
||||
|
@ -16655,9 +16982,6 @@ msgstr ""
|
|||
#~ msgid "maintenance.contract"
|
||||
#~ msgstr "maintenance.contract"
|
||||
|
||||
#~ msgid "Last Connection"
|
||||
#~ msgstr "Copy text \t Last Connection"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "If you need another language than the official ones available, you can "
|
||||
#~ "import a language pack from here. Other OpenERP languages than the official "
|
||||
|
@ -16753,10 +17077,6 @@ msgstr ""
|
|||
#~ msgid "SMS Send"
|
||||
#~ msgstr "SMS Send"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Object %s does not exists"
|
||||
#~ msgstr "Copy text \t Object %s does not exist"
|
||||
|
||||
#~ msgid "Waiting"
|
||||
#~ msgstr "Waiting"
|
||||
|
||||
|
@ -16764,9 +17084,6 @@ msgstr ""
|
|||
#~ msgid "Could not load base module"
|
||||
#~ msgstr "Could not load base module"
|
||||
|
||||
#~ msgid "Secondary Log"
|
||||
#~ msgstr "Copy text \t Secondary Log"
|
||||
|
||||
#~ msgid "Ignore"
|
||||
#~ msgstr "Ignore"
|
||||
|
||||
|
@ -16869,9 +17186,6 @@ msgstr ""
|
|||
#~ "you can add translations manually or perform a complete export (as a "
|
||||
#~ "template for a new language example)."
|
||||
|
||||
#~ msgid "Publisher warranty contract successfully registered!"
|
||||
#~ msgstr "Copy text \t Publisher warranty contract successfully registered!"
|
||||
|
||||
#~ msgid "state"
|
||||
#~ msgstr "state"
|
||||
|
||||
|
@ -17293,6 +17607,19 @@ msgstr ""
|
|||
#~ msgid "key '%s' not found in selection field '%s'"
|
||||
#~ msgstr "key '%s' not found in selection field '%s'"
|
||||
|
||||
#~ msgid "Last Connection"
|
||||
#~ msgstr "Last Connection"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Object %s does not exists"
|
||||
#~ msgstr "Object %s does not exist"
|
||||
|
||||
#~ msgid "Secondary Log"
|
||||
#~ msgstr "Secondary Log"
|
||||
|
||||
#~ msgid "Publisher warranty contract successfully registered!"
|
||||
#~ msgstr "Publisher warranty contract successfully registered!"
|
||||
|
||||
#, python-format
|
||||
#~ msgid ""
|
||||
#~ "Group(s) cannot be deleted, because some user(s) still belong to them: %s !"
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -8712,6 +8712,30 @@ msgid ""
|
|||
" are scheduled with taking the phase's start date.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Módulo de gestión de proyectos a largo plazo que registra la planificación, "
|
||||
"la programación, la asignación de recursos.\n"
|
||||
"============================================================================="
|
||||
"==============\n"
|
||||
"Características:\n"
|
||||
"---------\n"
|
||||
" * Gestión de grandes proyectos\n"
|
||||
" * Definición de varias fases de proyecto\n"
|
||||
" * Calculo de programación de fase: Calcula la fecha de inicio y fin de "
|
||||
"las fases \n"
|
||||
" del proyecto que están en estado borrador, abierto y pendiente. Si no "
|
||||
"se especifica el proyecto\n"
|
||||
" entonces se tomarán todas las fases en estado borrador, abierto y "
|
||||
"pendiente.\n"
|
||||
" * Calculo de programación de tareas: Funciona igual que el botón de "
|
||||
"planificador en\n"
|
||||
" project.phase. Toma el proyecto como argumento y calcula todas las "
|
||||
"tareas en borrador,\n"
|
||||
" abiertas y pendientes.\n"
|
||||
" * Programación de tareas: todas las tareas que están en estado "
|
||||
"borrador, abierto y pendiente\n"
|
||||
" se programan tomando la fecha de inicio de la fase.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2021
|
||||
|
@ -23520,3 +23544,115 @@ msgstr "Registro"
|
|||
#~ "que hacer, y se puede concentrar en la realización efectiva de dichas "
|
||||
#~ "tareas.\n"
|
||||
#~ " "
|
||||
|
||||
#~ 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"
|
||||
#~ " Projects\n"
|
||||
#~ " Project 1\n"
|
||||
#~ " SubProj 1.1\n"
|
||||
#~ " SubProj 1.2\n"
|
||||
#~ "\n"
|
||||
#~ " Project 2\n"
|
||||
#~ " Salesman\n"
|
||||
#~ " Eric\n"
|
||||
#~ " Fabien\n"
|
||||
#~ "\n"
|
||||
#~ "Here, we have two plans: Projects and Salesman. An invoice line must\n"
|
||||
#~ "be able to write analytic entries in the 2 plans: SubProj 1.1 and\n"
|
||||
#~ "Fabien. The amount can also be split. The following example is for\n"
|
||||
#~ "an invoice that touches the two subproject and assigned to one salesman:\n"
|
||||
#~ "\n"
|
||||
#~ "Plan1:\n"
|
||||
#~ " SubProject 1.1 : 50%\n"
|
||||
#~ " SubProject 1.2 : 50%\n"
|
||||
#~ "Plan2:\n"
|
||||
#~ " Eric: 100%\n"
|
||||
#~ "\n"
|
||||
#~ "So when this line of invoice will be confirmed, it will generate 3 analytic "
|
||||
#~ "lines,\n"
|
||||
#~ "for one account entry.\n"
|
||||
#~ "The analytic plan validates the minimum and maximum percentage at the time "
|
||||
#~ "of creation\n"
|
||||
#~ "of distribution models.\n"
|
||||
#~ " "
|
||||
#~ msgstr ""
|
||||
#~ "\n"
|
||||
#~ "Este módulo permite usar varios planes analíticos, según el diario general.\n"
|
||||
#~ "============================================================================="
|
||||
#~ "======\n"
|
||||
#~ "\n"
|
||||
#~ "Se crean varias líneas analíticas cuando la factura o las entradas se "
|
||||
#~ "confirman.\n"
|
||||
#~ "\n"
|
||||
#~ "Por ejemplo, se puede definir la siguiente estructura analítica:\n"
|
||||
#~ " Proyectos\n"
|
||||
#~ " Proyecto 1\n"
|
||||
#~ " SubProyecto 1.1\n"
|
||||
#~ " SubProyecto 1.2\n"
|
||||
#~ " Proyecto 2\n"
|
||||
#~ "\n"
|
||||
#~ " Comercial\n"
|
||||
#~ " Eric\n"
|
||||
#~ " Fabien\n"
|
||||
#~ "\n"
|
||||
#~ "Como vemos, hay dos planes: Proyectos y Comercial.\n"
|
||||
#~ "Una lñinea de factura debe ser capaz de escribir entradas analíticas\n"
|
||||
#~ "en dos planes: SubProyecto 1.1 y Fabien. También se puede repartir la "
|
||||
#~ "cantidad.\n"
|
||||
#~ "\n"
|
||||
#~ "El siguiente ejemplo es para una factura que afecta a los dos subproyectos\n"
|
||||
#~ "y se asigna a uno de los comerciales:\n"
|
||||
#~ "\n"
|
||||
#~ "Plan1:\n"
|
||||
#~ " SubProyecto 1.1 : 50%\n"
|
||||
#~ " SubProyecto 1.2 : 50%\n"
|
||||
#~ "Plan2:\n"
|
||||
#~ " Eric: 100%\n"
|
||||
#~ "\n"
|
||||
#~ "Así, cuando se confirme la línea de factura, se generarán 3 líneas "
|
||||
#~ "analíticas,\n"
|
||||
#~ "para un asiento contable.\n"
|
||||
#~ "El plan analítico valida los porcentajes mínimo y máximo en el momento de "
|
||||
#~ "creación\n"
|
||||
#~ "de los modelos distribuidos.\n"
|
||||
#~ " "
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
#~ "This module allows you to produce several products from one production "
|
||||
#~ "order.\n"
|
||||
#~ "============================================================================="
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "You can configure sub-products in the bill of material.\n"
|
||||
#~ "\n"
|
||||
#~ "Without this module:\n"
|
||||
#~ " A + B + C -> D\n"
|
||||
#~ "\n"
|
||||
#~ "With this module:\n"
|
||||
#~ " A + B + C -> D + E\n"
|
||||
#~ " "
|
||||
#~ msgstr ""
|
||||
#~ "\n"
|
||||
#~ "Este módulo permite producir varios productos desde una única orden de "
|
||||
#~ "producción.\n"
|
||||
#~ "============================================================================="
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "Se pueden configurar subproductos en la lista de materiales.\n"
|
||||
#~ "\n"
|
||||
#~ "Sin este módulo:\n"
|
||||
#~ " A + B + C -> D\n"
|
||||
#~ "\n"
|
||||
#~ "Con este módulo:\n"
|
||||
#~ " A + B + C -> D + E\n"
|
||||
#~ " "
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
"Language: \n"
|
||||
|
||||
#. module: base
|
||||
|
@ -191,7 +191,7 @@ msgstr "Ventana destino"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_rml:0
|
||||
msgid "Main Report File Path"
|
||||
msgstr ""
|
||||
msgstr "Ruta de archivo principal del informe"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
|
||||
|
@ -212,6 +212,15 @@ msgid ""
|
|||
"revenue\n"
|
||||
"reports."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Genere facturas desde los gastos y partes de horas.\n"
|
||||
"========================================================\n"
|
||||
"\n"
|
||||
"Módulo para generar facturas basadas en los costes (recursos humanos, "
|
||||
"gastos, ...).\n"
|
||||
"\n"
|
||||
"Puede definir tarifas en la contabilidad analítica, realizando algún informe "
|
||||
"teórico de beneficios."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_sequence.py:134
|
||||
|
@ -263,7 +272,7 @@ msgstr "creado."
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_xsl:0
|
||||
msgid "XSL Path"
|
||||
msgstr ""
|
||||
msgstr "Ruta XSL"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_tr
|
||||
|
@ -289,7 +298,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
|||
#. module: base
|
||||
#: model:res.groups,name:base.group_multi_currency
|
||||
msgid "Multi Currencies"
|
||||
msgstr ""
|
||||
msgstr "Multidivisa"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_cl
|
||||
|
@ -301,6 +310,12 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Plan de cuentas y localización de impuestos chilenos.\n"
|
||||
"==============================================\n"
|
||||
"Plan contable chileno e impuestos de acuerdo a disposiciones vigentes\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
|
@ -313,6 +328,7 @@ msgid ""
|
|||
"The internal user that is in charge of communicating with this contact if "
|
||||
"any."
|
||||
msgstr ""
|
||||
"El usuario interno encargado de comunicarse con este contacto si lo hubiese."
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -15,8 +15,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-26 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16700)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -14301,7 +14301,7 @@ msgstr ""
|
|||
#: field:res.partner,vat:0
|
||||
#, python-format
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
msgstr "RFC"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.aw
|
||||
|
@ -14317,7 +14317,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:res.country,name:base.ar
|
||||
msgid "Argentina"
|
||||
msgstr ""
|
||||
msgstr "Argentina"
|
||||
|
||||
#. module: base
|
||||
#: field:res.groups,full_name:0
|
||||
|
@ -14358,7 +14358,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_report_designer
|
||||
msgid "Advanced Reporting"
|
||||
msgstr ""
|
||||
msgstr "Informes avanzados"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_purchase
|
||||
|
@ -14406,7 +14406,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_fr
|
||||
msgid "France - Accounting"
|
||||
msgstr ""
|
||||
msgstr "Francia - Contabilidad"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.todo:0
|
||||
|
@ -14550,7 +14550,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Czech / Čeština"
|
||||
msgstr ""
|
||||
msgstr "Checo / Čeština"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_generic_modules
|
||||
|
@ -14609,7 +14609,7 @@ msgstr ""
|
|||
#: model:ir.module.category,name:base.module_category_hidden
|
||||
#: view:res.users:0
|
||||
msgid "Technical Settings"
|
||||
msgstr ""
|
||||
msgstr "Configuración técnica"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_accounting_and_finance
|
||||
|
@ -14617,6 +14617,8 @@ msgid ""
|
|||
"Helps you handle your accounting needs, if you are not an accountant, we "
|
||||
"suggest you to install only the Invoicing."
|
||||
msgstr ""
|
||||
"Le ayuda a manejar sus necesidades contables. Si no es un contable, le "
|
||||
"recomendamos que sólo instale el módulo 'invoicing'."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_plugin_thunderbird
|
||||
|
@ -14626,7 +14628,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_event
|
||||
msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations"
|
||||
msgstr ""
|
||||
msgstr "Formaciones, conferencias, reuniones, exhibiciones, inscripciones"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_country
|
||||
|
@ -14689,7 +14691,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_nl
|
||||
msgid "Netherlands - Accounting"
|
||||
msgstr ""
|
||||
msgstr "Holanda - Contabilidad"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gs
|
||||
|
@ -14714,6 +14716,11 @@ msgid ""
|
|||
"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 ""
|
||||
"El formato de separación debería ser como [,n] dónde 0 < n, empezando por "
|
||||
"el dígito unidad. -1 terminará la separación. Por ej. [3,2,-1] representará "
|
||||
"106500 como 1,06,500; [1,2,-1] lo representará como 106,50,0; [3] lo "
|
||||
"representará como 106,500. Siempre que ',' sea el separador de mil en cada "
|
||||
"caso."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,auto_install:0
|
||||
|
@ -14733,6 +14740,12 @@ msgid ""
|
|||
"taxes\n"
|
||||
"and the Lempira currency."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Éste es el módulo base para gestionar el plan de cuentas para Honduras.\n"
|
||||
"====================================================================\n"
|
||||
" \n"
|
||||
"Agrega una nomenclatura contable para Honduras. También incluye impuestos y "
|
||||
"la moneda Lempira."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.jp
|
||||
|
@ -14799,12 +14812,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_ca
|
||||
msgid "Canada - Accounting"
|
||||
msgstr ""
|
||||
msgstr "Canada - Contabilidad"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_co
|
||||
msgid "Colombian - Accounting"
|
||||
msgstr ""
|
||||
msgstr "Contabilidad colombiana"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_voucher
|
||||
|
@ -14871,7 +14884,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_ve
|
||||
msgid "Venezuela - Accounting"
|
||||
msgstr ""
|
||||
msgstr "Venezuela - Contabilidad"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.cl
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -9,8 +9,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
|
||||
"X-Poedit-Language: Persian\n"
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -8819,7 +8819,7 @@ msgstr "Traduisible"
|
|||
#. module: base
|
||||
#: help:base.language.import,code:0
|
||||
msgid "ISO Language and Country code, e.g. en_US"
|
||||
msgstr ""
|
||||
msgstr "Code ISO de la langue et du pays, ex: en_US"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.vn
|
||||
|
@ -8891,7 +8891,7 @@ msgstr "Sur plusieurs documents"
|
|||
#: view:res.users:0
|
||||
#: view:wizard.ir.model.menu.create:0
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
msgstr "ou"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_accountant
|
||||
|
@ -9204,7 +9204,7 @@ msgstr "Cette fenêtre"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_anonymous
|
||||
msgid "Anonymous portal"
|
||||
msgstr ""
|
||||
msgstr "Portail anonyme"
|
||||
|
||||
#. module: base
|
||||
#: field:base.language.export,format:0
|
||||
|
@ -9261,7 +9261,7 @@ msgstr "Mot de passe"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_claim
|
||||
msgid "Portal Claim"
|
||||
msgstr ""
|
||||
msgstr "Portail Réclamation"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_pe
|
||||
|
@ -9275,6 +9275,9 @@ msgid ""
|
|||
"Allow users to login through OAuth2 Provider.\n"
|
||||
"=============================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Permettre aux utilisateurs de se connecter via un fournisseur OAuth2.\n"
|
||||
"=============================================\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_model_fields
|
||||
|
@ -9528,7 +9531,7 @@ msgstr "Comptabilité financière et analytique"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_project
|
||||
msgid "Portal Project"
|
||||
msgstr ""
|
||||
msgstr "Portail Projet"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.cc
|
||||
|
@ -9591,7 +9594,7 @@ msgstr ""
|
|||
" </p><p>\n"
|
||||
" OpenERP vous aide à suivre toutes les activités avec un "
|
||||
"client : \n"
|
||||
" les discussions, l'historiques des opportunités, \n"
|
||||
" les discussions, l'historique des opportunités, \n"
|
||||
" les documents, etc.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
@ -9690,6 +9693,8 @@ msgid ""
|
|||
"Select this if you want to set company's address information for this "
|
||||
"contact"
|
||||
msgstr ""
|
||||
"Sélecionnez ceci si vous voulez indiquer l'adresse de la société de ce "
|
||||
"contact."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.default,field_name:0
|
||||
|
@ -9728,6 +9733,8 @@ msgid ""
|
|||
"This field holds the image used as avatar for this contact, limited to "
|
||||
"1024x1024px"
|
||||
msgstr ""
|
||||
"Ce champ contient l'image utilisée comme photo d'identité pour ce contact, "
|
||||
"de taille limitée à 1024x1024px."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.to
|
||||
|
@ -9942,6 +9949,9 @@ msgid ""
|
|||
"The kernel of OpenERP, needed for all installation.\n"
|
||||
"===================================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Le noyau d'OpenERP, nécessaire pour toute installation.\n"
|
||||
"===================================================\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_server_object_lines
|
||||
|
@ -10040,7 +10050,7 @@ msgstr "Recherche toujours possible"
|
|||
#. module: base
|
||||
#: help:res.country.state,code:0
|
||||
msgid "The state code in max. three chars."
|
||||
msgstr ""
|
||||
msgstr "Code de l'état, avec au plus trois caractères."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.hk
|
||||
|
@ -10050,7 +10060,7 @@ msgstr "Hong-Kong"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_sale
|
||||
msgid "Portal Sale"
|
||||
msgstr ""
|
||||
msgstr "Portail Vente"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.default,ref_id:0
|
||||
|
@ -10288,6 +10298,9 @@ 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 ""
|
||||
"Si la langue sélectionnée est chargée dans le système, tous les documents "
|
||||
"pour ce contact seront imprimés dans cette langue. Dans le cas contraire, "
|
||||
"ils le seront en anglais."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_hr_evaluation
|
||||
|
@ -10502,7 +10515,7 @@ msgstr "Actions multiples"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_mail
|
||||
msgid "Discussions, Mailing Lists, News"
|
||||
msgstr ""
|
||||
msgstr "Discussions, listes de diffusion, nouvelles"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_fleet
|
||||
|
@ -10976,7 +10989,7 @@ msgstr "Mali"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_project_config_project
|
||||
msgid "Stages"
|
||||
msgstr ""
|
||||
msgstr "Étapes"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -11088,7 +11101,7 @@ msgstr "Raccourcis personnalisés"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_si
|
||||
msgid "Slovenian - Accounting"
|
||||
msgstr ""
|
||||
msgstr "Comptabilité - Slovénie"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_cancel
|
||||
|
@ -11102,6 +11115,15 @@ msgid ""
|
|||
"If set to true it allows user to cancel entries & invoices.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Autoriser l'annulation d'écritures comptables.\n"
|
||||
"====================================\n"
|
||||
"\n"
|
||||
"Ce module ajoute un champ \"Autoriser l'annulation d'écriture\" sur la vue "
|
||||
"formulaire d'un journal de compte.\n"
|
||||
"Lorsque ce champ est coché, un utilisateur peut annuler des écritures et des "
|
||||
"factures.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_plugin
|
||||
|
@ -11249,7 +11271,7 @@ msgstr "Annuler"
|
|||
#: code:addons/orm.py:1507
|
||||
#, python-format
|
||||
msgid "Unknown database identifier '%s'"
|
||||
msgstr ""
|
||||
msgstr "Identifiant de base de données inconnu '%s'"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.export,format:0
|
||||
|
@ -11402,7 +11424,7 @@ msgstr "Allemagne"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_auth_oauth
|
||||
msgid "OAuth2 Authentication"
|
||||
msgstr ""
|
||||
msgstr "Identification OAuth2"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow:0
|
||||
|
@ -11581,7 +11603,7 @@ msgstr "Regrouper par..."
|
|||
#. module: base
|
||||
#: view:base.module.update:0
|
||||
msgid "Module Update Result"
|
||||
msgstr ""
|
||||
msgstr "Résultat de la mise à jour des modules"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_analytic_contract_hr_expense
|
||||
|
@ -11596,7 +11618,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.attachment,store_fname:0
|
||||
msgid "Stored Filename"
|
||||
msgstr ""
|
||||
msgstr "Nom du fichier enregistré"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,use_parent_address:0
|
||||
|
@ -11653,6 +11675,14 @@ msgid ""
|
|||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
"Cliquez pour ajouter un contact dans votre carnet d'adresses.\n"
|
||||
"</p><p>\n"
|
||||
"OpenERP vous aide à suivre toutes les activités d'un fournisseur :\n"
|
||||
"les discussions, l'historique des achats,\n"
|
||||
"les documents, etc.\n"
|
||||
"</p>\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.lr
|
||||
|
@ -11820,7 +11850,7 @@ msgstr "Unité de l'intervalle"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_stock
|
||||
msgid "Portal Stock"
|
||||
msgstr ""
|
||||
msgstr "Portail Stock"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.activity,kind:0
|
||||
|
@ -11903,7 +11933,7 @@ msgstr "res.request"
|
|||
#. module: base
|
||||
#: field:res.partner,image_medium:0
|
||||
msgid "Medium-sized image"
|
||||
msgstr ""
|
||||
msgstr "Image de taille moyenne"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
|
@ -11988,7 +12018,7 @@ msgstr "Règles sur les enregistrements"
|
|||
#. module: base
|
||||
#: view:multi_company.default:0
|
||||
msgid "Multi Company"
|
||||
msgstr ""
|
||||
msgstr "Multi société"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_portal
|
||||
|
@ -12005,7 +12035,7 @@ msgstr ""
|
|||
#: code:addons/base/ir/ir_fields.py:294
|
||||
#, python-format
|
||||
msgid "See all possible values"
|
||||
msgstr ""
|
||||
msgstr "Voir toutes les valeurs possibles"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_claim_from_delivery
|
||||
|
@ -12066,7 +12096,7 @@ msgstr "Guinée Bissau"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,header:0
|
||||
msgid "Add RML Header"
|
||||
msgstr ""
|
||||
msgstr "Ajouter l'en-tête RML"
|
||||
|
||||
#. module: base
|
||||
#: help:res.company,rml_footer:0
|
||||
|
@ -12201,7 +12231,7 @@ msgstr "A Faire"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_hr_employees
|
||||
msgid "Portal HR employees"
|
||||
msgstr ""
|
||||
msgstr "Portail RH Employés"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -12321,6 +12351,8 @@ msgstr ""
|
|||
msgid ""
|
||||
"Please contact your system administrator if you think this is an error."
|
||||
msgstr ""
|
||||
"Vous pouvez contacter votre administrateur système si vous pensez qu'il "
|
||||
"s'agit d'une erreur."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:545
|
||||
|
@ -12368,6 +12400,8 @@ msgid ""
|
|||
"One of the documents you are trying to access has been deleted, please try "
|
||||
"again after refreshing."
|
||||
msgstr ""
|
||||
"L'un des documents que vous voulez consulter a été supprimé : actualisez la "
|
||||
"page puis réessayez."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_mail_server
|
||||
|
@ -12539,7 +12573,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: help:res.partner,ean13:0
|
||||
msgid "BarCode"
|
||||
msgstr ""
|
||||
msgstr "Code-barres"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,model_id:0
|
||||
|
@ -12561,6 +12595,7 @@ msgstr "Martinique (Française)"
|
|||
#: help:res.partner,is_company:0
|
||||
msgid "Check if the contact is a company, otherwise it is a person"
|
||||
msgstr ""
|
||||
"Cochez si ce contact est une société, sinon il s'agit d'un particulier"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.sequence.type:0
|
||||
|
@ -12570,7 +12605,7 @@ msgstr "Type de séquences"
|
|||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Mobile:"
|
||||
msgstr ""
|
||||
msgstr "Portable :"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_bank.py:195
|
||||
|
@ -12637,7 +12672,7 @@ msgstr ""
|
|||
#: code:addons/base/ir/ir_model.py:1031
|
||||
#, python-format
|
||||
msgid "Permission Denied"
|
||||
msgstr ""
|
||||
msgstr "Permission refusée"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.menu,child_id:0
|
||||
|
@ -12758,7 +12793,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:res.country,name:base.bl
|
||||
msgid "Saint Barthélémy"
|
||||
msgstr ""
|
||||
msgstr "Saint Barthélémy"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.module.module,license:0
|
||||
|
@ -12830,13 +12865,13 @@ msgstr "Arabe / الْعَرَبيّة"
|
|||
#. module: base
|
||||
#: selection:ir.translation,state:0
|
||||
msgid "Translated"
|
||||
msgstr ""
|
||||
msgstr "Traduit"
|
||||
|
||||
#. 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"
|
||||
msgstr ""
|
||||
msgstr "Société par défaut par objet"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_hello
|
||||
|
@ -12866,7 +12901,7 @@ msgstr "Domaine"
|
|||
#: code:addons/base/ir/ir_fields.py:166
|
||||
#, python-format
|
||||
msgid "Use '1' for yes and '0' for no"
|
||||
msgstr ""
|
||||
msgstr "Utilisez \"1\" pour oui et \"0\" pour non"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_marketing_campaign
|
||||
|
@ -13004,6 +13039,9 @@ msgid ""
|
|||
"Allow users to sign up through OAuth2 Provider.\n"
|
||||
"===============================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Permettre aux utilisateurs de se connecter via un fournisseur OAuth2.\n"
|
||||
"===============================================\n"
|
||||
|
||||
#. module: base
|
||||
#: field:change.password.user,user_id:0
|
||||
|
@ -13062,7 +13100,7 @@ msgstr "Grenade"
|
|||
#. module: base
|
||||
#: help:res.partner,customer:0
|
||||
msgid "Check this box if this contact is a customer."
|
||||
msgstr ""
|
||||
msgstr "Cochez cette case si le contact est un client."
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -13142,7 +13180,7 @@ msgstr ""
|
|||
#: field:ir.actions.report.xml,report_rml_content:0
|
||||
#: field:ir.actions.report.xml,report_rml_content_data:0
|
||||
msgid "RML Content"
|
||||
msgstr ""
|
||||
msgstr "Contenu RML"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -13383,7 +13421,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_fields_converter
|
||||
msgid "ir.fields.converter"
|
||||
msgstr ""
|
||||
msgstr "ir.fields.converter"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_partner.py:439
|
||||
|
@ -13411,12 +13449,12 @@ msgstr "Annuler l'installation"
|
|||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_model_relation
|
||||
msgid "ir.model.relation"
|
||||
msgstr ""
|
||||
msgstr "ir.model.relation"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_check_writing
|
||||
msgid "Check Writing"
|
||||
msgstr ""
|
||||
msgstr "Écriture de chèques"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_plugin_outlook
|
||||
|
@ -13641,7 +13679,7 @@ msgstr "Grande Bretagne - Comptabilité"
|
|||
#. module: base
|
||||
#: model:res.partner.title,shortcut:base.res_partner_title_madam
|
||||
msgid "Mrs."
|
||||
msgstr ""
|
||||
msgstr "Mme"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:432
|
||||
|
@ -13663,6 +13701,7 @@ msgstr "Réf. utilisateur"
|
|||
#, python-format
|
||||
msgid "'%s' does not seem to be a valid datetime for field '%%(field)s'"
|
||||
msgstr ""
|
||||
"'%s' ne semble pas être une date/heure valide pour le champ '%%(fields)s'"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.bank.type.field,name:base.bank_normal_field_bic
|
||||
|
@ -13813,7 +13852,7 @@ msgstr "Informations sur la connexion"
|
|||
#. module: base
|
||||
#: model:res.partner.title,name:base.res_partner_title_prof
|
||||
msgid "Professor"
|
||||
msgstr ""
|
||||
msgstr "Professeur"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.hm
|
||||
|
@ -13842,7 +13881,7 @@ msgstr "Vous aide à gérer vos devis, commandes et factures"
|
|||
#. module: base
|
||||
#: field:res.users,login_date:0
|
||||
msgid "Latest connection"
|
||||
msgstr ""
|
||||
msgstr "Dernière connexion"
|
||||
|
||||
#. module: base
|
||||
#: field:res.groups,implied_ids:0
|
||||
|
@ -13859,7 +13898,7 @@ msgstr "Sélection"
|
|||
#: model:ir.actions.act_window,name:base.change_password_wizard_action
|
||||
#: view:res.users:0
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
msgstr "Modifier le mot de passe"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_es
|
||||
|
@ -13927,7 +13966,7 @@ msgstr "Binaire"
|
|||
#. module: base
|
||||
#: model:res.partner.title,name:base.res_partner_title_doctor
|
||||
msgid "Doctor"
|
||||
msgstr ""
|
||||
msgstr "Docteur"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_mrp_repair
|
||||
|
@ -14136,12 +14175,12 @@ msgstr "Mois de création"
|
|||
#. module: base
|
||||
#: field:ir.module.module,demo:0
|
||||
msgid "Demo Data"
|
||||
msgstr ""
|
||||
msgstr "Données de démonstration"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.title,shortcut:base.res_partner_title_mister
|
||||
msgid "Mr."
|
||||
msgstr ""
|
||||
msgstr "M."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mv
|
||||
|
@ -14261,7 +14300,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_sxw:0
|
||||
msgid "SXW Path"
|
||||
msgstr ""
|
||||
msgstr "Emplacement SXW"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_asset
|
||||
|
@ -14294,7 +14333,7 @@ msgstr "Banque"
|
|||
#: 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 ""
|
||||
msgstr "Point de vente"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_mail
|
||||
|
@ -15202,7 +15241,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Fax:"
|
||||
msgstr ""
|
||||
msgstr "Fax :"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.ui.view,type:0
|
||||
|
@ -15480,7 +15519,7 @@ msgstr "Modules d'installation"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_import_crm
|
||||
msgid "Import & Synchronize"
|
||||
msgstr ""
|
||||
msgstr "Importer et synchroniser"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -15680,7 +15719,7 @@ msgstr "Action due plusieurs documents"
|
|||
#: model:ir.actions.act_window,name:base.action_partner_title_partner
|
||||
#: model:ir.ui.menu,name:base.menu_partner_title_partner
|
||||
msgid "Titles"
|
||||
msgstr ""
|
||||
msgstr "Civilités et Formes juridiques"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_anonymization
|
||||
|
@ -15968,7 +16007,7 @@ msgstr "Modules à mettre à jour"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_custom_multicompany
|
||||
msgid "Multi-Companies"
|
||||
msgstr ""
|
||||
msgstr "Multi-sociétés"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow,osv:0
|
||||
|
@ -16288,7 +16327,7 @@ msgstr "Accès"
|
|||
#: field:res.partner,vat:0
|
||||
#, python-format
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
msgstr "Numéro fiscal"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.aw
|
||||
|
@ -16388,7 +16427,7 @@ msgstr "Services après vente"
|
|||
#. module: base
|
||||
#: field:base.language.import,code:0
|
||||
msgid "ISO Code"
|
||||
msgstr ""
|
||||
msgstr "Code ISO"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_fr
|
||||
|
@ -16567,6 +16606,9 @@ msgid ""
|
|||
"Allow users to login through OpenID.\n"
|
||||
"====================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Permettre aux utilisateurs de se connecter via OpenID.\n"
|
||||
"====================================\n"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.mail_server,smtp_port:0
|
||||
|
@ -16809,7 +16851,7 @@ msgstr "Canada - Comptabilité"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_co
|
||||
msgid "Colombian - Accounting"
|
||||
msgstr ""
|
||||
msgstr "Colombie - Comptabilité"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_voucher
|
||||
|
@ -16991,12 +17033,12 @@ msgstr "Mise à jour du système"
|
|||
#: field:ir.actions.report.xml,report_sxw_content:0
|
||||
#: field:ir.actions.report.xml,report_sxw_content_data:0
|
||||
msgid "SXW Content"
|
||||
msgstr ""
|
||||
msgstr "Contenu SXW"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.attachment,file_size:0
|
||||
msgid "File Size"
|
||||
msgstr ""
|
||||
msgstr "Taille du fichier"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.sequence,prefix:0
|
||||
|
@ -17011,7 +17053,7 @@ msgstr "Seychelles"
|
|||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_4
|
||||
msgid "Gold"
|
||||
msgstr ""
|
||||
msgstr "Or"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:173
|
||||
|
@ -17038,7 +17080,7 @@ msgstr "Informations générales"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_pt
|
||||
msgid "Portugal - Chart of Accounts"
|
||||
msgstr ""
|
||||
msgstr "Portugal - Plan comptable"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.data,complete_name:0
|
||||
|
@ -17088,6 +17130,8 @@ msgid ""
|
|||
"Tax Identification Number. Check the box if this contact is subjected to "
|
||||
"taxes. Used by the some of the legal statements."
|
||||
msgstr ""
|
||||
"Numéro fiscal. Cochez cette case si ce contact est soumis au paiement de "
|
||||
"taxe. Utilisé dans certains documents légaux."
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.bank,partner_id:0
|
||||
|
@ -17269,6 +17313,14 @@ msgid ""
|
|||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
"Cliquez pour ajouter un contact dans votre carnet d'adresses.\n"
|
||||
"</p><p>\n"
|
||||
"OpenERP vous aide à suivre toutes les activités d'un client :\n"
|
||||
"les discussions, l'historique des opportunités,\n"
|
||||
"les documents, etc.\n"
|
||||
"</p>\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_2
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -29,12 +29,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
msgid "Saint Helena"
|
||||
msgstr ""
|
||||
msgstr "સંત હેલેના"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
msgid "Other Configuration"
|
||||
msgstr "બીજા કન્ફિગ્યુરેશન"
|
||||
msgstr "અન્ય રેખાંકન"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
|
@ -232,7 +232,7 @@ msgstr "સ્પાર્સ ફિલ્ડ \"%s\" નુ નામ બદલ
|
|||
#. module: base
|
||||
#: model:res.country,name:base.sz
|
||||
msgid "Swaziland"
|
||||
msgstr "સ્વાઝિલેન્ડ"
|
||||
msgstr "સ્વાઝીલેન્ડ"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:4485
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:56+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:56+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -9,8 +9,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:56+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -42,7 +42,7 @@ msgstr "Konfigurasi Lainnya"
|
|||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
msgid "DateTime"
|
||||
msgstr ""
|
||||
msgstr "DateTime"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/fields.py:652
|
||||
|
@ -51,6 +51,8 @@ msgid ""
|
|||
"The second argument of the many2many field %s must be a SQL table !You used "
|
||||
"%s, which is not a valid SQL table name."
|
||||
msgstr ""
|
||||
"Argumen kedua dari field many2many %s harus merupakan tabel SQL ! Anda "
|
||||
"menggunakan %s, yang mana bukan table SQL."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.view,arch:0
|
||||
|
@ -66,7 +68,7 @@ msgstr "Kontrol Penawaran, Pesanan Penjualan, Pengiriman & Faktur"
|
|||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
msgid "No gap"
|
||||
msgstr ""
|
||||
msgstr "Tidak ada gap"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -76,7 +78,7 @@ msgstr "Bahasa Hungaria"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PY) / Español (PY)"
|
||||
msgstr ""
|
||||
msgstr "Bahasa Spanyol"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_project_management
|
||||
|
@ -84,27 +86,30 @@ msgid ""
|
|||
"Helps you manage your projects and tasks by tracking them, generating "
|
||||
"plannings, etc..."
|
||||
msgstr ""
|
||||
"Memungkinkan Anda untuk mengelola proyek dan tugas dengan cara melacaknya, "
|
||||
"menghasilkan perencanaan dan lain sebagainya ..."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_point_of_sale
|
||||
msgid "Touchscreen Interface for Shops"
|
||||
msgstr ""
|
||||
msgstr "Antarmuka layar sentuh untuk digunakan di toko"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
|
||||
msgid "Indian Payroll"
|
||||
msgstr ""
|
||||
msgstr "Payroll untuk India"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,model:0
|
||||
msgid ""
|
||||
"Model name on which the method to be called is located, e.g. 'res.partner'."
|
||||
msgstr ""
|
||||
"Sebutkan nama model yang mana metode ini akan dipanggil, misal 'res.partner'."
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
msgid "Created Views"
|
||||
msgstr "View Tercipta"
|
||||
msgstr "View yang diciptakan"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_product_manufacturer
|
||||
|
@ -121,11 +126,24 @@ msgid ""
|
|||
" * Product Attributes\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Modul ini berfungsi untuk menambahkan nama produsen beserta atributnya pada "
|
||||
"formulir produk.\n"
|
||||
"============================================================================="
|
||||
"==\n"
|
||||
"\n"
|
||||
"Anda dapat mengisi data-data berikut pada produk:\n"
|
||||
"------------------------------------------------\n"
|
||||
"* Nama produsen\n"
|
||||
"* Nama produk produsen\n"
|
||||
"* Code produk produsen\n"
|
||||
"* Atribut produk\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.client,params:0
|
||||
msgid "Supplementary arguments"
|
||||
msgstr ""
|
||||
msgstr "Argumen tambahan"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_google_base_account
|
||||
|
@ -134,11 +152,14 @@ msgid ""
|
|||
"The module adds google user in res user.\n"
|
||||
"========================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Modul ini akan menambahkan google user dalam obyek res.user\n"
|
||||
"====================================================\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,employee:0
|
||||
msgid "Check this box if this contact is an Employee."
|
||||
msgstr ""
|
||||
msgstr "Centang kotak ini jika kontak adalah pegawai"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,domain:0
|
||||
|
@ -147,6 +168,9 @@ msgid ""
|
|||
"specified as a Python expression defining a list of triplets. For example: "
|
||||
"[('color','=','red')]"
|
||||
msgstr ""
|
||||
"Sebuah domain (opsional) untuk membatasi nilai untuk field yang terelasi, "
|
||||
"dimana merupakan ekspresi Python yang mendefinisikan daftar triplet. Sebagai "
|
||||
"contoh: [('color', '=', 'merah')]"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,ref:0
|
||||
|
@ -156,7 +180,7 @@ msgstr "Referensi"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
|
||||
msgid "Belgium - Structured Communication"
|
||||
msgstr ""
|
||||
msgstr "Belgia - Komunikasi terstruktur"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,target:0
|
||||
|
@ -166,12 +190,12 @@ msgstr "Jendela Sasaran"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_rml:0
|
||||
msgid "Main Report File Path"
|
||||
msgstr ""
|
||||
msgstr "Path (lokasi) file laporan"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
|
||||
msgid "Sales Analytic Distribution"
|
||||
msgstr ""
|
||||
msgstr "Untuk mendistribusikan data analisis pada proses Penjualan"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_hr_timesheet_invoice
|
||||
|
@ -203,12 +227,14 @@ msgid ""
|
|||
"Properties of base fields cannot be altered in this manner! Please modify "
|
||||
"them through Python code, preferably through a custom addon!"
|
||||
msgstr ""
|
||||
"Sifat field basis tidak dapat diubah dengan cara ini! Silahkan "
|
||||
"memodifikasinya melalui kode Python, sebaiknya dibuat modul terpisah."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/osv.py:151
|
||||
#, python-format
|
||||
msgid "Constraint Error"
|
||||
msgstr ""
|
||||
msgstr "Kesalahan"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_ui_view_custom
|
||||
|
@ -219,7 +245,7 @@ msgstr "ir.ui.view.custom"
|
|||
#: code:addons/base/ir/ir_model.py:374
|
||||
#, python-format
|
||||
msgid "Renaming sparse field \"%s\" is not allowed"
|
||||
msgstr ""
|
||||
msgstr "Mengganti nama field \"%s\" tidak diperbolehkan"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sz
|
||||
|
@ -235,12 +261,12 @@ msgstr "dibuat"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_xsl:0
|
||||
msgid "XSL Path"
|
||||
msgstr ""
|
||||
msgstr "Lokasi file XSL"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_tr
|
||||
msgid "Turkey - Accounting"
|
||||
msgstr ""
|
||||
msgstr "Turki - Akunting"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.sequence,number_increment:0
|
||||
|
@ -256,12 +282,12 @@ msgstr "Struktur Perusahaan"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
||||
msgstr ""
|
||||
msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
||||
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_multi_currency
|
||||
msgid "Multi Currencies"
|
||||
msgstr ""
|
||||
msgstr "Multi Mata Uang"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_cl
|
||||
|
@ -277,7 +303,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
msgid "Sales Management"
|
||||
msgstr ""
|
||||
msgstr "Manajemen Penjualan"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,user_id:0
|
||||
|
@ -285,6 +311,7 @@ msgid ""
|
|||
"The internal user that is in charge of communicating with this contact if "
|
||||
"any."
|
||||
msgstr ""
|
||||
"Pengguna/user yang ditugaskan berhubungan dengan kontak ini, jika ada."
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -299,7 +326,7 @@ msgstr "Jumlah Modul"
|
|||
#. module: base
|
||||
#: help:multi_company.default,company_dest_id:0
|
||||
msgid "Company to store the current record"
|
||||
msgstr ""
|
||||
msgstr "Perusahaan untuk menyimpan data ini"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.bank.type.field,size:0
|
||||
|
@ -312,6 +339,8 @@ msgid ""
|
|||
"Database ID of record to open in form view, when ``view_mode`` is set to "
|
||||
"'form' only"
|
||||
msgstr ""
|
||||
"Database ID dari data yang akan dibuka dalam tampilan formulir (form view), "
|
||||
"dimana \"view_mode\" diberi nilai \"form\"."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.values,key2:0
|
||||
|
@ -327,7 +356,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: sql_constraint:res.lang:0
|
||||
msgid "The name of the language must be unique !"
|
||||
msgstr ""
|
||||
msgstr "Nama bahasa harus unik"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.request,state:0
|
||||
|
@ -355,7 +384,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_customer_relationship_management
|
||||
msgid "Customer Relationship Management"
|
||||
msgstr ""
|
||||
msgstr "Manajemen Hubungan Pelanggan"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_delivery
|
||||
|
@ -377,40 +406,42 @@ msgid ""
|
|||
"There is already a shared filter set as default for %(model)s, delete or "
|
||||
"change it before setting a new default"
|
||||
msgstr ""
|
||||
"Sudah ada filter yang telah ditetapkan untuk %(model)s, silakan hapus atau "
|
||||
"rubah dulu sebelum menetapkan nilai baru."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2649
|
||||
#, python-format
|
||||
msgid "Invalid group_by"
|
||||
msgstr ""
|
||||
msgstr "group_by salah"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.category,child_ids:0
|
||||
msgid "Child Applications"
|
||||
msgstr ""
|
||||
msgstr "Aplikasi Anak"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,credit_limit:0
|
||||
msgid "Credit Limit"
|
||||
msgstr ""
|
||||
msgstr "Batas Kredit"
|
||||
|
||||
#. 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"
|
||||
msgstr "Tanggal Pembaharuan"
|
||||
msgstr "Pembaharuan Tanggal"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_action_rule
|
||||
msgid "Automated Action Rules"
|
||||
msgstr ""
|
||||
msgstr "Aturan Aksi Otomatis"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.attachment:0
|
||||
#: field:ir.attachment,create_uid:0
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
msgstr "Pemilik"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.act_window:0
|
||||
|
@ -420,7 +451,7 @@ msgstr "Sumber Obyek"
|
|||
#. module: base
|
||||
#: model:res.partner.bank.type,format_layout:base.bank_normal
|
||||
msgid "%(bank_name)s: %(acc_number)s"
|
||||
msgstr ""
|
||||
msgstr "%(bank_name)s: %(acc_number)s"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.todo:0
|
||||
|
@ -445,6 +476,8 @@ msgid ""
|
|||
"Invalid date/time format directive specified. Please refer to the list of "
|
||||
"allowed directives, displayed when you edit a language."
|
||||
msgstr ""
|
||||
"Penetapan format data/time salah. Silakan contoh yang ditampilkan ketika "
|
||||
"mengedit bahasa."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:4153
|
||||
|
@ -452,7 +485,7 @@ msgstr ""
|
|||
msgid ""
|
||||
"One of the records you are trying to modify has already been deleted "
|
||||
"(Document type: %s)."
|
||||
msgstr ""
|
||||
msgstr "Data yang akan Anda modifikasi sudah dihapus (Jenis Dokumen: %s)."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,views:0
|
||||
|
@ -466,12 +499,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.model.relation,name:0
|
||||
msgid "Relation Name"
|
||||
msgstr ""
|
||||
msgstr "Nama Relasi"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
msgid "Create Access Right"
|
||||
msgstr ""
|
||||
msgstr "Membuat Hak Akses"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.tv
|
||||
|
@ -481,7 +514,7 @@ msgstr "Tuvalu"
|
|||
#. module: base
|
||||
#: field:ir.actions.configuration.wizard,note:0
|
||||
msgid "Next Wizard"
|
||||
msgstr ""
|
||||
msgstr "Wizard berikutnya"
|
||||
|
||||
#. module: base
|
||||
#: field:res.lang,date_format:0
|
||||
|
@ -491,7 +524,7 @@ msgstr "Format Tanggal"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_report_designer
|
||||
msgid "OpenOffice Report Designer"
|
||||
msgstr ""
|
||||
msgstr "Untuk mendesign Laporan dengan OpenOffice"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.an
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:56+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:56+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:56+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -80,12 +80,12 @@ msgstr "スペイン語(パラグアイ)/ Español (PY)"
|
|||
msgid ""
|
||||
"Helps you manage your projects and tasks by tracking them, generating "
|
||||
"plannings, etc..."
|
||||
msgstr "プロジェクトやタスクを追跡,計画生成などすることにより、あなたのプロジェクトとタスクの管理を補助します。"
|
||||
msgstr "追跡や計画生成などで、プロジェクトとタスクの管理を補助します。"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_point_of_sale
|
||||
msgid "Touchscreen Interface for Shops"
|
||||
msgstr ""
|
||||
msgstr "店舗用タッチスクリーン画面"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
|
||||
|
@ -234,7 +234,7 @@ msgstr "作成済"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_xsl:0
|
||||
msgid "XSL Path"
|
||||
msgstr ""
|
||||
msgstr "XLSパス"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_tr
|
||||
|
@ -260,7 +260,7 @@ msgstr "イヌクウティトット語 / Inuktitut"
|
|||
#. module: base
|
||||
#: model:res.groups,name:base.group_multi_currency
|
||||
msgid "Multi Currencies"
|
||||
msgstr ""
|
||||
msgstr "多通貨"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_cl
|
||||
|
@ -276,7 +276,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
msgid "Sales Management"
|
||||
msgstr "受注管理"
|
||||
msgstr "販売管理"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,user_id:0
|
||||
|
@ -654,7 +654,7 @@ msgstr "パラオ"
|
|||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Sales & Purchases"
|
||||
msgstr "受注と発注"
|
||||
msgstr "販売・購買"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.translation:0
|
||||
|
@ -1535,7 +1535,7 @@ msgstr ""
|
|||
#: model:ir.module.category,name:base.module_category_purchase_management
|
||||
#: model:ir.ui.menu,name:base.menu_purchase_root
|
||||
msgid "Purchases"
|
||||
msgstr "発注"
|
||||
msgstr "購買"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.md
|
||||
|
@ -4589,7 +4589,7 @@ msgstr "ヒンディー語 / हिंदी"
|
|||
#: 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 ""
|
||||
msgstr "言語の追加"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,latest_version:0
|
||||
|
@ -9728,7 +9728,7 @@ msgstr "受注オーダーのマージン"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_purchase
|
||||
msgid "Purchase Management"
|
||||
msgstr "発注管理"
|
||||
msgstr "購買管理"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,published_version:0
|
||||
|
@ -14274,7 +14274,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_custom_multicompany
|
||||
msgid "Multi-Companies"
|
||||
msgstr ""
|
||||
msgstr "複数会社設定"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow,osv:0
|
||||
|
@ -15190,7 +15190,7 @@ msgstr "条件"
|
|||
#: model:ir.actions.client,name:base.modules_updates_act_cl
|
||||
#: model:ir.ui.menu,name:base.menu_module_updates
|
||||
msgid "Updates"
|
||||
msgstr ""
|
||||
msgstr "アップデート"
|
||||
|
||||
#. module: base
|
||||
#: help:res.currency,rate:0
|
||||
|
@ -15402,7 +15402,7 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:base.open_module_tree
|
||||
#: model:ir.ui.menu,name:base.menu_module_tree
|
||||
msgid "Installed Modules"
|
||||
msgstr ""
|
||||
msgstr "インストール済のモジュール"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_users.py:170
|
||||
|
@ -15465,7 +15465,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Internal Notes"
|
||||
msgstr ""
|
||||
msgstr "内部注記"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.title,name:base.res_partner_title_pvt_ltd
|
||||
|
@ -15476,7 +15476,7 @@ msgstr "会社"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_purchase_requisition
|
||||
msgid "Purchase Requisitions"
|
||||
msgstr "発注依頼"
|
||||
msgstr "購買依頼"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.actions.act_window,target:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -9702,7 +9702,7 @@ msgstr "Gebruikersinterface"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_mrp_byproduct
|
||||
msgid "MRP Byproducts"
|
||||
msgstr "productie bijproducten"
|
||||
msgstr "Productie bijproducten"
|
||||
|
||||
#. module: base
|
||||
#: field:res.request,ref_partner_id:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -2052,7 +2052,7 @@ msgstr "Turkmenistan"
|
|||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "7. %H:%M:%S ==> 18:25:20"
|
||||
msgstr ""
|
||||
msgstr "7. %H:%M:%S ==> 18:25:20"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -2579,7 +2579,7 @@ msgstr "Dodatkowe"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.st
|
||||
msgid "Saint Tome (Sao Tome) and Principe"
|
||||
msgstr ""
|
||||
msgstr "Wyspy Świętego Tomasza i Książęca"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.partner,type:0
|
||||
|
@ -4261,7 +4261,7 @@ msgstr "Wymagana grupa"
|
|||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "6. %d, %m ==> 05, 12"
|
||||
msgstr ""
|
||||
msgstr "6. %d, %m ==> 05, 12"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_it
|
||||
|
@ -5146,7 +5146,7 @@ msgstr "Ścieżka XML"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.bj
|
||||
msgid "Benin"
|
||||
msgstr ""
|
||||
msgstr "Benin"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_res_partner_bank_type_form
|
||||
|
@ -5340,7 +5340,7 @@ msgstr "Syria"
|
|||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "======================================================"
|
||||
msgstr ""
|
||||
msgstr "======================================================"
|
||||
|
||||
#. module: base
|
||||
#: sql_constraint:ir.model:0
|
||||
|
@ -5453,6 +5453,7 @@ msgstr "Nazwa posiadacza konta"
|
|||
#, python-format
|
||||
msgid "Cannot rename column to %s, because that column already exists!"
|
||||
msgstr ""
|
||||
"Nie można zmienić nazwy kolumny na %s, ponieważ ta kolumna już istnieje!"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.attachment:0
|
||||
|
@ -5578,7 +5579,7 @@ msgstr "Wenezuela"
|
|||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "9. %j ==> 340"
|
||||
msgstr ""
|
||||
msgstr "9. %j ==> 340"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.zm
|
||||
|
@ -5943,7 +5944,7 @@ msgstr "Pogrupuj wg"
|
|||
#. module: base
|
||||
#: view:res.config.installer:0
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
msgstr "tytuł"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:146
|
||||
|
@ -5969,7 +5970,7 @@ msgstr "Tłumaczenie"
|
|||
#. module: base
|
||||
#: selection:res.request,state:0
|
||||
msgid "closed"
|
||||
msgstr ""
|
||||
msgstr "zamknięte"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.export,state:0
|
||||
|
@ -12108,7 +12109,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:ir.translation,type:0
|
||||
msgid "XSL"
|
||||
msgstr ""
|
||||
msgstr "XSL"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:85
|
||||
|
@ -15906,10 +15907,6 @@ msgstr ""
|
|||
#~ msgid "On delete"
|
||||
#~ msgstr "Przy usuwaniu"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Not Implemented"
|
||||
#~ msgstr "Nie zaimplementowane"
|
||||
|
||||
#~ msgid "Textile Suppliers"
|
||||
#~ msgstr "Dostawca tekstyliów"
|
||||
|
||||
|
@ -17034,3 +17031,58 @@ msgstr ""
|
|||
#~ "======================================\n"
|
||||
#~ "\n"
|
||||
#~ "Moduł umożliwia planowanie wsteczne zarządzające twoimi wydarzeniami.\n"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Not Implemented"
|
||||
#~ msgstr "Niezaimplementowane"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "OpenERP translations (core, modules, clients) are managed through "
|
||||
#~ "Launchpad.net, our open source project management facility. We use their "
|
||||
#~ "online interface to synchronize all translations efforts."
|
||||
#~ msgstr ""
|
||||
#~ "Tłumaczenia OpenERP (jądro, moduły, klient) są zarządzane poprzez "
|
||||
#~ "Launchpad.net. Używamy ich interfejsu online by synchronizować wszelkie "
|
||||
#~ "tłumaczenia."
|
||||
|
||||
#~ msgid ","
|
||||
#~ msgstr ","
|
||||
|
||||
#~ msgid "S. Georgia & S. Sandwich Isls."
|
||||
#~ msgstr "Georgia Południowa i Sandwich Południowy"
|
||||
|
||||
#~ msgid "-"
|
||||
#~ msgstr "-"
|
||||
|
||||
#~ msgid "https://help.launchpad.net/Translations"
|
||||
#~ msgstr "https://help.launchpad.net/Translations"
|
||||
|
||||
#~ msgid "Portugese (BR) / Português (BR)"
|
||||
#~ msgstr "Portugalski (BR) / Português (BR)"
|
||||
|
||||
#~ msgid "Facebook"
|
||||
#~ msgstr "Facebook"
|
||||
|
||||
#~ msgid "Openstuff.net"
|
||||
#~ msgstr "Openstuff.net"
|
||||
|
||||
#~ msgid "Portugese / Português"
|
||||
#~ msgstr "Portugalski / Português"
|
||||
|
||||
#~ msgid "M."
|
||||
#~ msgstr "M."
|
||||
|
||||
#~ msgid "XML ID"
|
||||
#~ msgstr "XML ID"
|
||||
|
||||
#~ msgid "XML Id"
|
||||
#~ msgstr "XML Id"
|
||||
|
||||
#~ msgid "FYROM"
|
||||
#~ msgstr "FYROM"
|
||||
|
||||
#~ msgid "Serial Key"
|
||||
#~ msgstr "Klucz seryjny"
|
||||
|
||||
#~ msgid "Widget Wizard"
|
||||
#~ msgstr "Kreator widżetów"
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -24,6 +24,10 @@ msgid ""
|
|||
"================================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Módulo para Verificar a Escrita e Verificar a Impresaão.\n"
|
||||
"================================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -122,6 +126,18 @@ msgid ""
|
|||
" * Product Attributes\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Um modulo que acrescenta a identificação de fabricantes e atributos ao "
|
||||
"formulário de produtos.\n"
|
||||
"====================================================================\n"
|
||||
"\n"
|
||||
"Agora é possível definir o seguinte para cada produto:\n"
|
||||
"\n"
|
||||
" Fabricante\n"
|
||||
" Nome do produto atribuído pelo fabricante\n"
|
||||
" Código do produto atribuído pelo fabricante\n"
|
||||
" Atributos do produto\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.client,params:0
|
||||
|
@ -135,6 +151,8 @@ msgid ""
|
|||
"The module adds google user in res user.\n"
|
||||
"========================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"O modulo acrescenta utilizador google em \"res user\".\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,employee:0
|
||||
|
@ -170,7 +188,7 @@ msgstr "Janela alvo"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_rml:0
|
||||
msgid "Main Report File Path"
|
||||
msgstr ""
|
||||
msgstr "Caminho para o ficheiro do relatório principal"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
|
||||
|
@ -191,6 +209,15 @@ msgid ""
|
|||
"revenue\n"
|
||||
"reports."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gerar faturas através de Despesas, Folhas de Horas\n"
|
||||
"========================================================\n"
|
||||
"\n"
|
||||
"Modulo que gera faturas baseadas em custos (recursos humanos, despesas, "
|
||||
"...).\n"
|
||||
"\n"
|
||||
"Pode definir tabelas de preços na conta analítica, criar analises teoréticas "
|
||||
"de vendas."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_sequence.py:134
|
||||
|
@ -226,7 +253,7 @@ msgstr "ir.ui.view.custom"
|
|||
#: code:addons/base/ir/ir_model.py:374
|
||||
#, python-format
|
||||
msgid "Renaming sparse field \"%s\" is not allowed"
|
||||
msgstr ""
|
||||
msgstr "Não é permitido mudar o nome de sparse field \"%s\""
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sz
|
||||
|
@ -292,6 +319,8 @@ msgid ""
|
|||
"The internal user that is in charge of communicating with this contact if "
|
||||
"any."
|
||||
msgstr ""
|
||||
"O utilizador interno responsável pela comunicação com este contacto (se "
|
||||
"houver)"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -376,6 +405,15 @@ msgid ""
|
|||
"invoices from picking, OpenERP is able to add and compute the shipping "
|
||||
"line.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Permite adicionar métodos de entrega nas ordens de venda e ordens de "
|
||||
"preparação de encomendas.\n"
|
||||
"==============================================================\n"
|
||||
"\n"
|
||||
"Assim é possível definir transportadores adicionais e tabelas de preços para "
|
||||
"entregas. No acto de criar \n"
|
||||
"uma fatura através um ordem de preparação de encomenda, OpenERP consegue "
|
||||
"adicionar e calcular custos de entrega.\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_filters.py:80
|
||||
|
@ -384,6 +422,8 @@ msgid ""
|
|||
"There is already a shared filter set as default for %(model)s, delete or "
|
||||
"change it before setting a new default"
|
||||
msgstr ""
|
||||
"Um filtro partilhado já está definido para %(model)s, apague ou modifique o "
|
||||
"filtro existente antes de criar um novo."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2649
|
||||
|
@ -452,8 +492,8 @@ msgid ""
|
|||
"Invalid date/time format directive specified. Please refer to the list of "
|
||||
"allowed directives, displayed when you edit a language."
|
||||
msgstr ""
|
||||
"Data inválida/especifique diretiva do formato da hora. Por favor, consulte a "
|
||||
"lista de diretivas permitidas, exibida quando se edita uma linguagem."
|
||||
"A diretiva data/hora especificada é invalida. Por favor, consulte a lista de "
|
||||
"diretivas permitidas, exibida quando se edita uma linguagem."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:4153
|
||||
|
@ -462,7 +502,7 @@ msgid ""
|
|||
"One of the records you are trying to modify has already been deleted "
|
||||
"(Document type: %s)."
|
||||
msgstr ""
|
||||
"Um dos registos que está a tentar modificar já deve ter sido excluído "
|
||||
"Um dos registos que está a tentar modificar já deve ter sido apagado "
|
||||
"(Document type: %s)."
|
||||
|
||||
#. module: base
|
||||
|
@ -552,6 +592,15 @@ msgid ""
|
|||
"that have no counterpart in the general financial accounts.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Modulo para definir objetos de contabilidade analítica.\n"
|
||||
"===============================================\n"
|
||||
"\n"
|
||||
"Na OpenERP, contas analíticas estão ligados a contas gerais embora são "
|
||||
"tratados \n"
|
||||
"de uma forma independente. Assim é possível adicionar operações analíticas \n"
|
||||
"mesmo quando não tenham homólogos nas contas gerais.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_idea
|
||||
|
@ -575,6 +624,19 @@ msgid ""
|
|||
"* Use emails to automatically confirm and send acknowledgements for any "
|
||||
"event registration\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Organização e gestão de Eventos.\n"
|
||||
"======================================\n"
|
||||
"\n"
|
||||
"O modulo de gestão de eventos permite gerir todos as tarefas associadas a "
|
||||
"organização de eventos: planificação, controlo de inscrições, "
|
||||
"comparecimento, etc.\n"
|
||||
"\n"
|
||||
"Principais Funções\n"
|
||||
"------------\n"
|
||||
"* Gerir os seus Eventos e Inscrições\n"
|
||||
"* Utilizar e-mail para enviar confirmações de forma automática para "
|
||||
"inscrições nos seus eventos.\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -774,6 +836,11 @@ msgid ""
|
|||
"This module provides the Integration of the LinkedIn with OpenERP.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Módulo OpenERP Web LinkedIn.\n"
|
||||
"============================\n"
|
||||
"Este módulo disponibiliza a integração do LinkedIn com o OpenERP.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,src_model:0
|
||||
|
@ -839,6 +906,9 @@ msgid ""
|
|||
"image, with aspect ratio preserved. Use this field anywhere a small image is "
|
||||
"required."
|
||||
msgstr ""
|
||||
"Imagem em pequeno formato para este contacto. É automaticamente "
|
||||
"redimensionada para 64x64px com o racio do aspect preservado. Utilize este "
|
||||
"campo onde quer que uma imagem pequena seja necessária."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,mobile:0
|
||||
|
@ -1327,7 +1397,7 @@ msgstr "Contribuintes"
|
|||
#. module: base
|
||||
#: field:ir.rule,perm_unlink:0
|
||||
msgid "Apply for Delete"
|
||||
msgstr ""
|
||||
msgstr "Aplicar para Apagar"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
|
@ -1465,7 +1535,7 @@ msgstr "Haiti"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll
|
||||
msgid "French Payroll"
|
||||
msgstr ""
|
||||
msgstr "Folha de pagamentos Francesa"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.ui.view:0
|
||||
|
@ -1996,6 +2066,8 @@ 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 ""
|
||||
"Assinala nesta caixa se o contacto é fornecedor. Se não for assinalado, o "
|
||||
"contacto não será visível no acto de criar uma nota de encomenda."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_evaluation
|
||||
|
@ -2173,6 +2245,27 @@ msgid ""
|
|||
"* *Before Delivery*: A Draft invoice is created and must be paid before "
|
||||
"delivery\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gerir orçamentos e encomendas\n"
|
||||
"==================================\n"
|
||||
"\n"
|
||||
"Este modulo liga a aplicação de vendas com a de gestão de armazéns.\n"
|
||||
"\n"
|
||||
"Preferências\n"
|
||||
"-----------\n"
|
||||
"* Envios: Escolha entre a entrega total ou parcial de uma encomenda.\n"
|
||||
"* Faturação: Escolha o prazo de pagamento da fatura\n"
|
||||
"* Incoterms: Escolha os termos de entrega da mercadoria (EXW, DDU, FOB, "
|
||||
"etc.)\n"
|
||||
"\n"
|
||||
"Escolhe entre varias maneiras flexíveis de faturação:\n"
|
||||
"\n"
|
||||
"* *Manualmente*: As faturas são criados manualmente das notas de encomenda "
|
||||
"quando necessário\n"
|
||||
"* *Através de Ordem de Entrega*: As faturas são geradas das ordens de "
|
||||
"entrega (pickings)\n"
|
||||
"* *Antes de Entrega*: Uma fatura pro-forma é criado e tem de ser liquidada "
|
||||
"antes de efetuar a entrega\n"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.menu,complete_name:0
|
||||
|
@ -2198,7 +2291,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
msgid "PO(T) format: you should edit it with a PO editor such as"
|
||||
msgstr ""
|
||||
msgstr "Formato PO(T): deve editá-lo com um editor de PO tal como"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_administration
|
||||
|
@ -2287,7 +2380,7 @@ msgstr "Bahamas"
|
|||
#. module: base
|
||||
#: field:ir.rule,perm_create:0
|
||||
msgid "Apply for Create"
|
||||
msgstr ""
|
||||
msgstr "Aplicar para Criar"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_tools
|
||||
|
@ -2310,6 +2403,8 @@ msgid ""
|
|||
"Appears by default on the top right corner of your printed documents (report "
|
||||
"header)."
|
||||
msgstr ""
|
||||
"Aparece por defeito no campo superior direito dos documentos impressos "
|
||||
"(cabeçalho do relatório)."
|
||||
|
||||
#. module: base
|
||||
#: field:base.module.update,update:0
|
||||
|
@ -2357,6 +2452,31 @@ msgid ""
|
|||
"* Maximal difference between timesheet and attendances\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gravar e validar folhas de horas e comparecimento/assiduidade com "
|
||||
"facilidade\n"
|
||||
"=====================================================\n"
|
||||
"\n"
|
||||
"Esta aplicação cria uma nova ecrã que permite gerir comparecimento (entradas "
|
||||
"e saídas) e o preenchimento de folhas de horas por período. Entradas na "
|
||||
"folha de horas são efetuadas pelos funcionários diariamente. No fim do "
|
||||
"período estipulado, o funcionário valida a folha de horas. De seguida a "
|
||||
"folha é sujeito a aprovação da gerente de equipa. A definição do tempo de "
|
||||
"cada período é feito nas configurações da empresa e podem ser efetuados "
|
||||
"mensalmente ou semanalmente.\n"
|
||||
"\n"
|
||||
"O processo de validação da folha de horas é feito assim:\n"
|
||||
"---------------------------------------------\n"
|
||||
"* Preencher folha (funcionário)\n"
|
||||
"* Confirmar a folha no fim do período (funcionário)\n"
|
||||
"* Validação da folha pelo gestor da equipa\n"
|
||||
"\n"
|
||||
"As preferências de validação podem ser escolhidos nas configurações da "
|
||||
"empresa:\n"
|
||||
"------------------------------------------------\n"
|
||||
"Periodicidade (Dia, Semana, Mês)\n"
|
||||
"Diferenciação máxima permitida entre a folha de horas e comparecimento\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:341
|
||||
|
@ -2429,6 +2549,9 @@ msgid ""
|
|||
"=================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Permite que um utilizador anónimo aceda ao portal.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ge
|
||||
|
@ -2677,6 +2800,12 @@ msgid ""
|
|||
"orders.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"O modulo base para gerir distribuição analítica e notas de encomenda.\n"
|
||||
"=================================================================\n"
|
||||
"\n"
|
||||
"Este modulo permite ligar contas analíticas a notas de encomenda.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_us
|
||||
|
@ -2817,6 +2946,9 @@ msgid ""
|
|||
"Module to attach a google document to any model.\n"
|
||||
"================================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Módulo para anexar um documento google a qualquer modelo.\n"
|
||||
"=========================================================\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:333
|
||||
|
@ -5010,7 +5142,7 @@ msgstr "ir.needaction_mixin"
|
|||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
msgid "This file was generated using the universal"
|
||||
msgstr ""
|
||||
msgstr "Este ficheiro foi gerado usando o universal"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_7
|
||||
|
@ -5082,7 +5214,7 @@ msgstr "Saltar"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_event_sale
|
||||
msgid "Events Sales"
|
||||
msgstr ""
|
||||
msgstr "Vendas dos Eventos"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ls
|
||||
|
@ -5269,7 +5401,7 @@ msgstr "Apenas se a conta bancária pertencer à sua empresa"
|
|||
#: code:addons/base/ir/ir_fields.py:337
|
||||
#, python-format
|
||||
msgid "Unknown sub-field '%s'"
|
||||
msgstr ""
|
||||
msgstr "Sub-campo '%s' desconhecido"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.za
|
||||
|
@ -5385,6 +5517,10 @@ msgid ""
|
|||
"================\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Openerp Web API.\n"
|
||||
"================\n"
|
||||
"\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.request,state:0
|
||||
|
@ -6154,6 +6290,8 @@ msgid ""
|
|||
"How many times the method is called,\n"
|
||||
"a negative number indicates no limit."
|
||||
msgstr ""
|
||||
"Quantas vezes o método é chamado,\n"
|
||||
"um número negativo sem limite."
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.bank.type.field,bank_type_id:0
|
||||
|
@ -6280,7 +6418,7 @@ msgstr ""
|
|||
#: code:addons/base/ir/ir_fields.py:182
|
||||
#, python-format
|
||||
msgid "'%s' does not seem to be a number for field '%%(field)s'"
|
||||
msgstr ""
|
||||
msgstr "'%s' não parece ser um número para o campo '%%(field)s'"
|
||||
|
||||
#. module: base
|
||||
#: help:res.country.state,name:0
|
||||
|
@ -8013,7 +8151,7 @@ msgstr "Campo Personalizado"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_account_accountant
|
||||
msgid "Financial and Analytic Accounting"
|
||||
msgstr ""
|
||||
msgstr "Contabilidade Financeira e Analítica"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_project
|
||||
|
@ -8352,7 +8490,7 @@ msgstr "Finlândia"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_shortcuts
|
||||
msgid "Web Shortcuts"
|
||||
msgstr ""
|
||||
msgstr "Atalhos web"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -8558,6 +8696,8 @@ msgid ""
|
|||
"Translation features are unavailable until you install an extra OpenERP "
|
||||
"translation."
|
||||
msgstr ""
|
||||
"As opções de tradução estão indisponíveis até que instale uma tradução extra "
|
||||
"do OpenERP."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_nl
|
||||
|
@ -8752,6 +8892,9 @@ 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 ""
|
||||
"Se o idioma seleccionado está carregado no sistema, todos os documentos "
|
||||
"relacionados com este contacto serão impressos neste idioma. Caso contrário "
|
||||
"serão impressos em Inglês."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_hr_evaluation
|
||||
|
@ -8860,7 +9003,7 @@ msgstr "Esloveno / slovenščina"
|
|||
#. module: base
|
||||
#: field:res.currency,position:0
|
||||
msgid "Symbol Position"
|
||||
msgstr ""
|
||||
msgstr "Posição do Símbolo"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_de
|
||||
|
@ -10007,7 +10150,7 @@ msgstr "Agrupar por..."
|
|||
#. module: base
|
||||
#: view:base.module.update:0
|
||||
msgid "Module Update Result"
|
||||
msgstr ""
|
||||
msgstr "Resultado da actualização do módulo"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_analytic_contract_hr_expense
|
||||
|
@ -10469,7 +10612,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Click to set your company logo."
|
||||
msgstr ""
|
||||
msgstr "Clique para definir o logo da empresa."
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -10792,6 +10935,8 @@ msgid ""
|
|||
"One of the documents you are trying to access has been deleted, please try "
|
||||
"again after refreshing."
|
||||
msgstr ""
|
||||
"Um dos documentos a que tenta aceder foi removido, tente novamente depois de "
|
||||
"actualizar."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_mail_server
|
||||
|
@ -11300,7 +11445,7 @@ msgstr "Ficheiro binário ou URL"
|
|||
#: code:addons/base/ir/ir_fields.py:313
|
||||
#, python-format
|
||||
msgid "Invalid database id '%s' for the field '%%(field)s'"
|
||||
msgstr ""
|
||||
msgstr "Id de base de dados '%s' inválido para o campo '%%(field)s'"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -11444,7 +11589,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:workflow.transition,signal:0
|
||||
msgid "Signal (Button Name)"
|
||||
msgstr ""
|
||||
msgstr "Sinal (Nome do botão)"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.act_window:0
|
||||
|
@ -11819,7 +11964,7 @@ msgstr "ir.model.relation"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_check_writing
|
||||
msgid "Check Writing"
|
||||
msgstr ""
|
||||
msgstr "Verificar escrita"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_plugin_outlook
|
||||
|
@ -12387,7 +12532,7 @@ msgstr "Outros Parceiros"
|
|||
#: view:workflow.workitem:0
|
||||
#: field:workflow.workitem,state:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
msgstr "Estado"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_currency_form
|
||||
|
@ -13376,7 +13521,7 @@ msgstr "ir.sequence.type"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll_account
|
||||
msgid "Belgium - Payroll with Accounting"
|
||||
msgstr ""
|
||||
msgstr "Bélgica - Folha de pagamentos com Contabildade"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.export,format:0
|
||||
|
@ -15269,7 +15414,7 @@ msgstr "Chile"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_view_editor
|
||||
msgid "View Editor"
|
||||
msgstr ""
|
||||
msgstr "Ver o Editor"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.cron:0
|
||||
|
@ -15349,6 +15494,8 @@ msgid ""
|
|||
"Do you confirm the uninstallation of this module? This will permanently "
|
||||
"erase all data currently stored by the module!"
|
||||
msgstr ""
|
||||
"Confirma a desinstalação deste módulo? Esta acção apaga todos os dados "
|
||||
"guardados neste momento por este módulo!"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,mobile:0
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-01-24 13:14+0000\n"
|
||||
"PO-Revision-Date: 2013-08-16 11:16+0000\n"
|
||||
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -3428,7 +3428,7 @@ msgstr "Периодические оценки, оценки, опросы"
|
|||
#: model:ir.actions.act_window,name:base.ir_property_form
|
||||
#: model:ir.ui.menu,name:base.menu_ir_property_form_all
|
||||
msgid "Configuration Parameters"
|
||||
msgstr "Конфигурационные параметры:"
|
||||
msgstr "Параметры конфигурации"
|
||||
|
||||
#. module: base
|
||||
#: constraint:ir.cron:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:00+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:00+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:00+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:00+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -2465,6 +2465,8 @@ msgstr ""
|
|||
msgid ""
|
||||
"No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'"
|
||||
msgstr ""
|
||||
"'%%(field)s' Alanında %(field_type)s '%(value)s' için eşleşen kayıt "
|
||||
"bulunamadı"
|
||||
|
||||
#. module: base
|
||||
#: field:change.password.user,new_passwd:0
|
||||
|
@ -7493,7 +7495,7 @@ msgstr "Tam Adı"
|
|||
#. module: base
|
||||
#: view:ir.attachment:0
|
||||
msgid "on"
|
||||
msgstr ""
|
||||
msgstr "bunda"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.property:0
|
||||
|
@ -9538,6 +9540,17 @@ msgid ""
|
|||
"Thank you in advance for your cooperation.\n"
|
||||
"Best Regards,"
|
||||
msgstr ""
|
||||
"Sayın Yetkili,\n"
|
||||
"\n"
|
||||
"Kayıtlarımıza göre hesabınızda halen yapılmamış ödemeler bulunmaktadır. "
|
||||
"Lütfen aşağıdaki ayrıntıları inceleyin.\n"
|
||||
"Eğer ödeme yaptıysanız, lütfen bu yazımızı dikkate almayın. Aksi durumda, "
|
||||
"aşağıda belirtilen tutarı tarafımıza ödemenizi rica ederiz.\n"
|
||||
"Hesabınızla ilgili herhangi bir sorunuz olursa, lütfen bize danışın.\n"
|
||||
"\n"
|
||||
"İşbirliğiniz için şimdiden teşekkür ederiz.\n"
|
||||
"\n"
|
||||
"Saygılarımızla,"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.category:0
|
||||
|
@ -11262,7 +11275,7 @@ msgstr "E-Mail"
|
|||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_12
|
||||
msgid "Office Supplies"
|
||||
msgstr ""
|
||||
msgstr "Büro Malzemeleri"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.attachment,res_model:0
|
||||
|
@ -12547,7 +12560,7 @@ msgstr "Grup adı tekil olmalı !"
|
|||
#. module: base
|
||||
#: help:ir.translation,module:0
|
||||
msgid "Module this term belongs to"
|
||||
msgstr ""
|
||||
msgstr "Bu terimin ait olduğu modül"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_view_editor
|
||||
|
@ -12761,6 +12774,8 @@ msgid ""
|
|||
"Here is what we got instead:\n"
|
||||
" %s"
|
||||
msgstr ""
|
||||
"Yerine elimize geçen:\n"
|
||||
" %s"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_model_data
|
||||
|
@ -13124,7 +13139,7 @@ msgstr "Yeni Kaledonya"
|
|||
#. module: base
|
||||
#: field:ir.model,osv_memory:0
|
||||
msgid "Transient Model"
|
||||
msgstr ""
|
||||
msgstr "Geçici Model"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.cy
|
||||
|
@ -13386,7 +13401,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_test
|
||||
msgid "Accounting Consistency Tests"
|
||||
msgstr ""
|
||||
msgstr "Muhasebe Tutarlılık Testleri"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_purchase_double_validation
|
||||
|
@ -14091,6 +14106,8 @@ msgid ""
|
|||
"Invalid group_by specification: \"%s\".\n"
|
||||
"A group_by specification must be a list of valid fields."
|
||||
msgstr ""
|
||||
"Geçersiz group_by özellikleri: \"%s\".\n"
|
||||
"Bir group_by özellikler geçerli alanların bir listesi olmalı."
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.mail_server,smtp_encryption:0
|
||||
|
@ -14248,7 +14265,7 @@ msgstr "Hata ! iç içe çağırılan menü oluşturamazsınız."
|
|||
#. module: base
|
||||
#: view:ir.translation:0
|
||||
msgid "Web-only translations"
|
||||
msgstr ""
|
||||
msgstr "Yalnızca-web çevirileri"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
|
@ -14716,6 +14733,10 @@ msgid ""
|
|||
"\n"
|
||||
"(Document type: %s, Operation: %s)"
|
||||
msgstr ""
|
||||
"Güvenlik sınırlamalarından dolayı istenen işlem tamamlanamıyor. Lütfen "
|
||||
"sistem yöneticinize danışın.\n"
|
||||
"\n"
|
||||
"(Belge tipi: %s, İşlem: %s)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_idea
|
||||
|
@ -15574,6 +15595,8 @@ msgid ""
|
|||
"Tax Identification Number. Check the box if this contact is subjected to "
|
||||
"taxes. Used by the some of the legal statements."
|
||||
msgstr ""
|
||||
"Vergi Kimlik Numarası. Bu kişi vergiye tabiyse kutuyu işaretleyin. Bazı "
|
||||
"yasal belgelerde kullanılır."
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.bank,partner_id:0
|
||||
|
@ -15642,6 +15665,8 @@ msgid ""
|
|||
"Manage relations with prospects and customers using leads, opportunities, "
|
||||
"requests or issues."
|
||||
msgstr ""
|
||||
"Adayları, fırsatları, istekleri ya da sorunları kullanarak potansiyeller ve "
|
||||
"müşterilerle ilişkileri yönetin."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_project
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:00+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -384,6 +384,12 @@ msgid ""
|
|||
"document and Wiki based Hidden.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"知识管理的隐藏依赖模块\n"
|
||||
"=====================================\n"
|
||||
"\n"
|
||||
"在安装文档管理和wiki等知识管理应用的时候所依赖的隐藏模块\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_customer_relationship_management
|
||||
|
@ -991,6 +997,21 @@ msgid ""
|
|||
"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 ""
|
||||
"\n"
|
||||
"休假申请和假期分配\n"
|
||||
"=====================================\n"
|
||||
"\n"
|
||||
"此模块管理公司员工的休假。员工可以申请休假,然后等待经理批准,当然也可能拒绝。这样就可以使公司或部门的整体休假计划得到管控。\n"
|
||||
"\n"
|
||||
"可以配置多种休假类型(病假、法定假日、带薪休假等)并通过分配申请分配给单个员工或部门。员工也可以申请\n"
|
||||
"增加假期天数,这需要填写一个额外的假期申请。如果增加假期天数的申请被批准,这个类型假期的可用天数会自动增加。\n"
|
||||
"\n"
|
||||
"以下报表用于对假期进行跟踪:\n"
|
||||
"* 休假总览\n"
|
||||
"* 按部门休假\n"
|
||||
"* 休假分析\n"
|
||||
"\n"
|
||||
"如果为休假设置了一种日程类型,就可以与CRM中的日程同步,也就是说休假批准后会在日程上标识出此员工正在休假中。\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -2059,7 +2080,7 @@ msgstr "读权限"
|
|||
#. module: base
|
||||
#: help:ir.attachment,res_id:0
|
||||
msgid "The record id this is attached to"
|
||||
msgstr ""
|
||||
msgstr "附件相关的数据记录id"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_share
|
||||
|
@ -2160,6 +2181,11 @@ msgid ""
|
|||
"with the effect of creating, editing and deleting either ways.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"项目进度与工时记录的集成\n"
|
||||
"====================================================================\n"
|
||||
"安装了此模块,项目进度的添加删除和修改会自动同步到工时表上。\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_model_access
|
||||
|
@ -2179,6 +2205,11 @@ msgid ""
|
|||
" templates to target objects.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" * 科目表、税、税项、凭证类型、科目模版、成本要素和成本凭证类型的多语言支持。\n"
|
||||
" * 对设置向导的修改\n"
|
||||
" - 从模版复制科目表、税、税项和替换规则到目标数据表。\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.transition,act_from:0
|
||||
|
@ -12355,7 +12386,7 @@ msgstr "选中内容"
|
|||
#: model:ir.actions.act_window,name:base.change_password_wizard_action
|
||||
#: view:res.users:0
|
||||
msgid "Change Password"
|
||||
msgstr ""
|
||||
msgstr "更改密码"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_es
|
||||
|
@ -12665,7 +12696,7 @@ msgstr "地址格式"
|
|||
#. module: base
|
||||
#: model:ir.model,name:base.model_change_password_user
|
||||
msgid "Change Password Wizard User"
|
||||
msgstr ""
|
||||
msgstr "密码更改向导"
|
||||
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_no_one
|
||||
|
@ -14304,7 +14335,7 @@ msgstr "泰国"
|
|||
#. module: base
|
||||
#: model:ir.model,name:base.model_change_password_wizard
|
||||
msgid "Change Password Wizard"
|
||||
msgstr ""
|
||||
msgstr "密码更改向导"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_account_voucher
|
||||
|
@ -15618,7 +15649,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Internal Notes"
|
||||
msgstr "内部单据"
|
||||
msgstr "内部备注"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.title,name:base.res_partner_title_pvt_ltd
|
||||
|
@ -15639,7 +15670,7 @@ msgstr "行内编辑"
|
|||
#. module: base
|
||||
#: selection:ir.cron,interval_type:0
|
||||
msgid "Months"
|
||||
msgstr "月末"
|
||||
msgstr "月"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.instance:0
|
||||
|
@ -15662,7 +15693,7 @@ msgstr "是一个公司?"
|
|||
#: field:res.partner.bank,name:0
|
||||
#, python-format
|
||||
msgid "Bank Account"
|
||||
msgstr "银行账户"
|
||||
msgstr "银行账号"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.kp
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-06 05:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16696)\n"
|
||||
"X-Launchpad-Export-Date: 2013-08-28 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16738)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
|
|
@ -195,7 +195,8 @@ class ir_model(osv.osv):
|
|||
ctx = dict(context,
|
||||
field_name=vals['name'],
|
||||
field_state='manual',
|
||||
select=vals.get('select_level', '0'))
|
||||
select=vals.get('select_level', '0'),
|
||||
update_custom_fields=True)
|
||||
self.pool[vals['model']]._auto_init(cr, ctx)
|
||||
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
|
||||
return res
|
||||
|
|
|
@ -84,7 +84,7 @@ class ir_sequence(openerp.osv.osv.osv):
|
|||
|
||||
_columns = {
|
||||
'name': openerp.osv.fields.char('Name', size=64, required=True),
|
||||
'code': openerp.osv.fields.selection(_code_get, 'Code', size=64),
|
||||
'code': openerp.osv.fields.selection(_code_get, 'Sequence Type', size=64),
|
||||
'implementation': openerp.osv.fields.selection( # TODO update the view
|
||||
[('standard', 'Standard'), ('no_gap', 'No gap')],
|
||||
'Implementation', required=True,
|
||||
|
|
|
@ -445,6 +445,13 @@ class ir_translation(osv.osv):
|
|||
tools.trans_load(cr, base_trans_file, lang, verbose=False, module_name=module_name, context=context)
|
||||
context['overwrite'] = True # make sure the requested translation will override the base terms later
|
||||
|
||||
# i18n_extra folder is for additional translations handle manually (eg: for l10n_be)
|
||||
base_trans_extra_file = openerp.modules.get_module_resource(module_name, 'i18n_extra', base_lang_code + '.po')
|
||||
if base_trans_extra_file:
|
||||
_logger.info('module %s: loading extra base translation file %s for language %s', module_name, base_lang_code, lang)
|
||||
tools.trans_load(cr, base_trans_extra_file, lang, verbose=False, module_name=module_name, context=context)
|
||||
context['overwrite'] = True # make sure the requested translation will override the base terms later
|
||||
|
||||
# Step 2: then load the main translation file, possibly overriding the terms coming from the base language
|
||||
trans_file = openerp.modules.get_module_resource(module_name, 'i18n', lang_code + '.po')
|
||||
if trans_file:
|
||||
|
@ -452,6 +459,11 @@ class ir_translation(osv.osv):
|
|||
tools.trans_load(cr, trans_file, lang, verbose=False, module_name=module_name, context=context)
|
||||
elif lang_code != 'en_US':
|
||||
_logger.warning('module %s: no translation for language %s', module_name, lang_code)
|
||||
|
||||
trans_extra_file = openerp.modules.get_module_resource(module_name, 'i18n_extra', lang_code + '.po')
|
||||
if trans_extra_file:
|
||||
_logger.info('module %s: loading extra translation file (%s) for language %s', module_name, lang_code, lang)
|
||||
tools.trans_load(cr, trans_extra_file, lang, verbose=False, module_name=module_name, context=context)
|
||||
return True
|
||||
|
||||
|
||||
|
|
|
@ -229,7 +229,6 @@ class view(osv.osv):
|
|||
])
|
||||
view_ids = self.search(cr, uid, conditions, context=context)
|
||||
|
||||
# filter views based on user groups
|
||||
return [(view.arch, view.id)
|
||||
for view in self.browse(cr, 1, view_ids, context)
|
||||
if not (view.groups_id and user_groups.isdisjoint(view.groups_id))]
|
||||
|
|
|
@ -70,7 +70,8 @@
|
|||
<field name="name">ir.module.module.form</field>
|
||||
<field name="model">ir.module.module</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="0" edit="0" string="Module" version="7.0" class='oe_styling_v8'>
|
||||
<form create="0" edit="0" string="Module" version="7.0">
|
||||
<link rel="stylesheet" href="/base/static/src/css/description.css"></link>
|
||||
<sheet>
|
||||
<field name="icon_image" widget="image" class="oe_avatar oe_left"/>
|
||||
<div class="oe_title">
|
||||
|
@ -127,9 +128,8 @@
|
|||
<field name="reports_by_module"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<field name="description_html" class='oe_styling_v8'/>
|
||||
</sheet>
|
||||
<field name="description_html" class='oe_app_description oe_styling_v8'/>
|
||||
<button name="button_immediate_install" states="uninstalled" string="Install" type="object" class="oe_highlight oe_center"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -30,11 +30,13 @@ from openerp.tools.translate import _
|
|||
CURRENCY_DISPLAY_PATTERN = re.compile(r'(\w+)\s*(?:\((.*)\))?')
|
||||
|
||||
class res_currency(osv.osv):
|
||||
|
||||
def _current_rate(self, cr, uid, ids, name, arg, context=None):
|
||||
return self._get_current_rate(cr, uid, ids, name, arg, context=context)
|
||||
return self._get_current_rate(cr, uid, ids, context=context)
|
||||
|
||||
def _get_current_rate(self, cr, uid, ids, name, arg, context=None):
|
||||
def _current_rate_silent(self, cr, uid, ids, name, arg, context=None):
|
||||
return self._get_current_rate(cr, uid, ids, raise_on_no_rate=False, context=context)
|
||||
|
||||
def _get_current_rate(self, cr, uid, ids, raise_on_no_rate=True, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
res = {}
|
||||
|
@ -52,9 +54,12 @@ class res_currency(osv.osv):
|
|||
if cr.rowcount:
|
||||
id, rate = cr.fetchall()[0]
|
||||
res[id] = rate
|
||||
elif not raise_on_no_rate:
|
||||
res[id] = 0
|
||||
else:
|
||||
raise osv.except_osv(_('Error!'),_("No currency rate associated for currency %d for the given period" % (id)))
|
||||
return res
|
||||
|
||||
_name = "res.currency"
|
||||
_description = "Currency"
|
||||
_columns = {
|
||||
|
@ -63,6 +68,10 @@ class res_currency(osv.osv):
|
|||
'symbol': fields.char('Symbol', size=4, help="Currency sign, to be used when printing amounts."),
|
||||
'rate': fields.function(_current_rate, string='Current Rate', digits=(12,6),
|
||||
help='The rate of the currency to the currency of rate 1.'),
|
||||
|
||||
# Do not use for computation ! Same as rate field with silent failing
|
||||
'rate_silent': fields.function(_current_rate_silent, string='Current Rate', digits=(12,6),
|
||||
help='The rate of the currency to the currency of rate 1 (0 if no rate defined).'),
|
||||
'rate_ids': fields.one2many('res.currency.rate', 'currency_id', 'Rates'),
|
||||
'accuracy': fields.integer('Computational Accuracy'),
|
||||
'rounding': fields.float('Rounding Factor', digits=(12,6)),
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="rate_ids" invisible="1"/>
|
||||
<field name="date"/>
|
||||
<field name="rate"/>
|
||||
<field name="rate_silent"/>
|
||||
<field name="rounding"/>
|
||||
<field name="accuracy"/>
|
||||
<field name="position"/>
|
||||
|
@ -37,7 +37,7 @@
|
|||
<form string="Currency" version="7.0">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="rate"/>
|
||||
<field name="rate_silent"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
|
||||
|
|
|
@ -208,6 +208,8 @@ class res_partner(osv.osv, format_address):
|
|||
return result
|
||||
|
||||
def _display_name_compute(self, cr, uid, ids, name, args, context=None):
|
||||
context = dict(context or {})
|
||||
context.pop('show_address', None)
|
||||
return dict(self.name_get(cr, uid, ids, context=context))
|
||||
|
||||
# indirections to avoid passing a copy of the overridable method when declaring the function field
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
sass:
|
||||
sass -t expanded --compass --watch --unix-newlines *.sass
|
|
@ -0,0 +1,732 @@
|
|||
@charset "utf-8";
|
||||
/*
|
||||
* This CSS is for the html description of modules
|
||||
* TODO clean
|
||||
*/
|
||||
/* --------------------------------- *
|
||||
* STYLING CONTEXT *
|
||||
* --------------------------------- */
|
||||
/* --- Styling for the V8/Lato/White/Purple design --- */
|
||||
.openerp .oe_form_sheet_width {
|
||||
max-width: 960px;
|
||||
}
|
||||
|
||||
.openerp .oe_form .oe_styling_v8 {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-family: "Open Sans", "Helvetica", Sans;
|
||||
font-weight: 300;
|
||||
color: #646464;
|
||||
background: white;
|
||||
font-size: 16px;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 .oe_websiteonly {
|
||||
display: none;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 .oe_website_contents {
|
||||
background: whitesmoke;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 b {
|
||||
font-weight: 600;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 a {
|
||||
color: #6d57e0;
|
||||
text-decoration: none;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 a:visited {
|
||||
color: #5b284f;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 a:hover {
|
||||
color: #0096eb;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 .oe_title_font {
|
||||
font-family: "Lato", "Open Sans", "Helvetica", Sans;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 .oe_page {
|
||||
background: white;
|
||||
overflow: hidden;
|
||||
-webkit-border-radius: 1px;
|
||||
-moz-border-radius: 1px;
|
||||
-ms-border-radius: 1px;
|
||||
-o-border-radius: 1px;
|
||||
border-radius: 1px;
|
||||
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
|
||||
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 .oe_emph {
|
||||
font-weight: 400;
|
||||
}
|
||||
.openerp .oe_form .oe_styling_v8 .oe_dark {
|
||||
overflow: hidden;
|
||||
background: #fcfcfc;
|
||||
-webkit-box-shadow: 0px 5px 9px -7px rgba(0, 0, 255, 0.5) inset, 0px -3px 9px -7px rgba(0, 0, 255, 0.5) inset;
|
||||
-moz-box-shadow: 0px 5px 9px -7px rgba(0, 0, 255, 0.5) inset, 0px -3px 9px -7px rgba(0, 0, 255, 0.5) inset;
|
||||
box-shadow: 0px 5px 9px -7px rgba(0, 0, 255, 0.5) inset, 0px -3px 9px -7px rgba(0, 0, 255, 0.5) inset;
|
||||
}
|
||||
|
||||
/* --------------------------------- *
|
||||
* LAYOUT *
|
||||
* --------------------------------- */
|
||||
/* ------ BASE GRID CONSTRUCTS ----- */
|
||||
.oe_page {
|
||||
margin: 0px auto 64px auto;
|
||||
max-width: 992px;
|
||||
}
|
||||
|
||||
.oe_row {
|
||||
width: 928px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.oe_row.oe_fit {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.oe_clearfix:after, .oe_row:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
line-height: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
[class*='oe_span'] {
|
||||
float: left;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.oe_span12 {
|
||||
width: 928px;
|
||||
}
|
||||
|
||||
.oe_span10 {
|
||||
width: 773px;
|
||||
}
|
||||
|
||||
.oe_span9 {
|
||||
width: 696px;
|
||||
}
|
||||
|
||||
.oe_span8 {
|
||||
width: 618px;
|
||||
}
|
||||
|
||||
.oe_span6 {
|
||||
width: 464px;
|
||||
}
|
||||
|
||||
.oe_span4 {
|
||||
width: 309px;
|
||||
}
|
||||
|
||||
.oe_span3 {
|
||||
width: 232px;
|
||||
}
|
||||
|
||||
.oe_span2 {
|
||||
width: 154px;
|
||||
}
|
||||
|
||||
[class*='oe_span'].oe_fit {
|
||||
padding-left: 0px !important;
|
||||
padding-right: 0px !important;
|
||||
}
|
||||
|
||||
[class*='oe_span'].oe_right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.oe_row.oe_flex [class*='oe_span'] {
|
||||
display: inline-block;
|
||||
float: none;
|
||||
vertical-align: top;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
padding: 0 16px;
|
||||
width: auto;
|
||||
}
|
||||
.oe_row.oe_flex .oe_span12 {
|
||||
max-width: 928px;
|
||||
}
|
||||
.oe_row.oe_flex .oe_span10 {
|
||||
max-width: 769px;
|
||||
}
|
||||
.oe_row.oe_flex .oe_span9 {
|
||||
max-width: 692px;
|
||||
}
|
||||
.oe_row.oe_flex .oe_span8 {
|
||||
max-width: 614px;
|
||||
}
|
||||
.oe_row.oe_flex .oe_span6 {
|
||||
max-width: 460px;
|
||||
}
|
||||
.oe_row.oe_flex .oe_span4 {
|
||||
max-width: 305px;
|
||||
}
|
||||
.oe_row.oe_flex .oe_span3 {
|
||||
max-width: 228px;
|
||||
}
|
||||
.oe_row.oe_flex .oe_span2 {
|
||||
max-width: 150px;
|
||||
}
|
||||
|
||||
.oe_mb0 {
|
||||
margin-bottom: 0px !important;
|
||||
}
|
||||
|
||||
.oe_mb4 {
|
||||
margin-bottom: 4px !important;
|
||||
}
|
||||
|
||||
.oe_mb8 {
|
||||
margin-bottom: 8px !important;
|
||||
}
|
||||
|
||||
.oe_mb16 {
|
||||
margin-bottom: 16px !important;
|
||||
}
|
||||
|
||||
.oe_mb32 {
|
||||
margin-bottom: 32px !important;
|
||||
}
|
||||
|
||||
.oe_mb48 {
|
||||
margin-bottom: 48px !important;
|
||||
}
|
||||
|
||||
.oe_mb64 {
|
||||
margin-bottom: 64px !important;
|
||||
}
|
||||
|
||||
.oe_mt0 {
|
||||
margin-top: 0px !important;
|
||||
}
|
||||
|
||||
.oe_mt4 {
|
||||
margin-top: 4px !important;
|
||||
}
|
||||
|
||||
.oe_mt8 {
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.oe_mt16 {
|
||||
margin-top: 16px !important;
|
||||
}
|
||||
|
||||
.oe_mt32 {
|
||||
margin-top: 32px !important;
|
||||
}
|
||||
|
||||
.oe_mt48 {
|
||||
margin-top: 48px !important;
|
||||
}
|
||||
|
||||
.oe_mt64 {
|
||||
margin-top: 64px !important;
|
||||
}
|
||||
|
||||
/* ------ GENERIC LAYOUT MODIFIERS ----- */
|
||||
.oe_rightfit {
|
||||
padding-right: 0px !important;
|
||||
}
|
||||
|
||||
.oe_leftfit {
|
||||
padding-left: 0px !important;
|
||||
}
|
||||
|
||||
.oe_leftalign {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.oe_rightalign {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.oe_centeralign {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.oe_centered {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.oe_hidden {
|
||||
display: none !important;
|
||||
opacity: 0 !important;
|
||||
}
|
||||
|
||||
.oe_invisible {
|
||||
visibility: hidden !important;
|
||||
}
|
||||
|
||||
.oe_transparent {
|
||||
opacity: 0 !important;
|
||||
}
|
||||
|
||||
.oe_mb0 {
|
||||
margin-bottom: 0px !important;
|
||||
}
|
||||
|
||||
.oe_mb4 {
|
||||
margin-bottom: 4px !important;
|
||||
}
|
||||
|
||||
.oe_mb8 {
|
||||
margin-bottom: 8px !important;
|
||||
}
|
||||
|
||||
.oe_mb16 {
|
||||
margin-bottom: 16px !important;
|
||||
}
|
||||
|
||||
.oe_mb32 {
|
||||
margin-bottom: 32px !important;
|
||||
}
|
||||
|
||||
.oe_mb64 {
|
||||
margin-bottom: 64px !important;
|
||||
}
|
||||
|
||||
.oe_spaced {
|
||||
margin-top: 32px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.oe_more_spaced {
|
||||
margin-top: 64px;
|
||||
margin-bottom: 64px;
|
||||
}
|
||||
|
||||
.oe_padded {
|
||||
padding-top: 16px;
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
|
||||
.oe_more_padded {
|
||||
padding-top: 32px;
|
||||
padding-bottom: 32px;
|
||||
}
|
||||
|
||||
/* --------------------------------- *
|
||||
* WEBPAGE COMPONENTS *
|
||||
* --------------------------------- */
|
||||
/* ------ BUTTONS ----- */
|
||||
.oe_button {
|
||||
position: relative;
|
||||
bottom: 0;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.oe_styling_v8 .oe_button, .oe_styling_v8 a.oe_button {
|
||||
padding: 8px 14px;
|
||||
background: #8b72b6;
|
||||
color: white;
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-ms-border-radius: 2px;
|
||||
-o-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: 0px 2px 0px #afa8cc;
|
||||
-moz-box-shadow: 0px 2px 0px #afa8cc;
|
||||
box-shadow: 0px 2px 0px #afa8cc;
|
||||
text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.44);
|
||||
border: solid 1px rgba(0, 0, 0, 0.09);
|
||||
-webkit-transition-property: bottom, background;
|
||||
-moz-transition-property: bottom, background;
|
||||
-o-transition-property: bottom, background;
|
||||
transition-property: bottom, background;
|
||||
-webkit-transition-duration: 250ms;
|
||||
-moz-transition-duration: 250ms;
|
||||
-o-transition-duration: 250ms;
|
||||
transition-duration: 250ms;
|
||||
}
|
||||
.oe_styling_v8 .oe_button:hover, .oe_styling_v8 a.oe_button:hover {
|
||||
background: #8b5bdd;
|
||||
color: white;
|
||||
}
|
||||
.oe_styling_v8 .oe_button:active, .oe_styling_v8 a.oe_button:active {
|
||||
background: #333333;
|
||||
bottom: -3px;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_big, .oe_styling_v8 a.oe_button.oe_big {
|
||||
font-size: 24px;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_bigger, .oe_styling_v8 a.oe_button.oe_bigger {
|
||||
font-size: 32px;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_small, .oe_styling_v8 a.oe_button.oe_small {
|
||||
font-size: 13px;
|
||||
padding: 2px 4px;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_small:active, .oe_styling_v8 a.oe_button.oe_small:active {
|
||||
bottom: -1px;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_medium, .oe_styling_v8 a.oe_button.oe_medium {
|
||||
padding: 5px 12px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_tacky, .oe_styling_v8 a.oe_button.oe_tacky {
|
||||
background: #ff4444;
|
||||
-webkit-box-shadow: 0px 2px 0px #eba8a8;
|
||||
-moz-box-shadow: 0px 2px 0px #eba8a8;
|
||||
box-shadow: 0px 2px 0px #eba8a8;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_tacky:hover, .oe_styling_v8 a.oe_button.oe_tacky:hover {
|
||||
background: #ff1010;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_tacky:active, .oe_styling_v8 a.oe_button.oe_tacky:active {
|
||||
background: black;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_disabled, .oe_styling_v8 a.oe_button.oe_disabled {
|
||||
background: #c8c8c8;
|
||||
-webkit-box-shadow: 0px 2px 0px #b4b4b4;
|
||||
-moz-box-shadow: 0px 2px 0px #b4b4b4;
|
||||
box-shadow: 0px 2px 0px #b4b4b4;
|
||||
cursor: default;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_disabled:hover, .oe_styling_v8 a.oe_button.oe_disabled:hover {
|
||||
background: #c8c8c8;
|
||||
-webkit-box-shadow: 0px 2px 0px #b4b4b4;
|
||||
-moz-box-shadow: 0px 2px 0px #b4b4b4;
|
||||
box-shadow: 0px 2px 0px #b4b4b4;
|
||||
}
|
||||
.oe_styling_v8 .oe_button.oe_disabled:active, .oe_styling_v8 a.oe_button.oe_disabled:active {
|
||||
background: #c8c8c8;
|
||||
bottom: 0px;
|
||||
-webkit-box-shadow: 0px 2px 0px #b4b4b4;
|
||||
-moz-box-shadow: 0px 2px 0px #b4b4b4;
|
||||
box-shadow: 0px 2px 0px #b4b4b4;
|
||||
}
|
||||
|
||||
.oe_styling_v8.oe_styling_black .oe_button {
|
||||
-webkit-box-shadow: 0px 2px 0px #463555;
|
||||
-moz-box-shadow: 0px 2px 0px #463555;
|
||||
box-shadow: 0px 2px 0px #463555;
|
||||
}
|
||||
|
||||
/* ------ FORMS ----- */
|
||||
.oe_styling_v8 {
|
||||
/* FIXME: this is a quick hack for the release */
|
||||
}
|
||||
.oe_styling_v8 .oe_input {
|
||||
padding: 4px 7px;
|
||||
border-radius: 3px;
|
||||
border: solid 1px #d6d6d6;
|
||||
box-shadow: 0px 2px #e6e6e6;
|
||||
background: #fafafa;
|
||||
font-weight: 300;
|
||||
outline: none;
|
||||
-webkit-transition: all 150ms linear;
|
||||
-moz-transition: all 150ms linear;
|
||||
-o-transition: all 150ms linear;
|
||||
transition: all 150ms linear;
|
||||
}
|
||||
.oe_styling_v8 .oe_input:focus {
|
||||
border: solid 1px #969696;
|
||||
box-shadow: 0px 2px #d2d2d2;
|
||||
}
|
||||
.oe_styling_v8 .oe_input.oe_valid {
|
||||
background: #f2ffec;
|
||||
border-color: #b1ebb6;
|
||||
box-shadow: 0px 2px #e1f8e1;
|
||||
color: #0f610f;
|
||||
}
|
||||
.oe_styling_v8 .oe_input.oe_invalid {
|
||||
background: #fff2f2;
|
||||
border-color: #ebb1b1;
|
||||
box-shadow: 0px 2px #f8e1e1;
|
||||
color: #610f0f;
|
||||
}
|
||||
.oe_styling_v8 .oe_input.oe_big {
|
||||
padding: 8px 14px;
|
||||
}
|
||||
.oe_styling_v8 .oe_input_label {
|
||||
font-weight: 300;
|
||||
font-size: 16px;
|
||||
}
|
||||
.oe_styling_v8 .oe_input_label.oe_big {
|
||||
font-size: 20px;
|
||||
}
|
||||
.oe_styling_v8 .oe_textarea {
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
}
|
||||
.oe_styling_v8 .oe_form_layout_table {
|
||||
width: 100%;
|
||||
}
|
||||
.oe_styling_v8 .oe_form_layout_table td {
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
.oe_styling_v8 .oe_form_layout_table td:first-child {
|
||||
text-align: right;
|
||||
padding-right: 16px;
|
||||
}
|
||||
|
||||
/* ------ SLOGANS ----- */
|
||||
.oe_styling_v8 .oe_slogan {
|
||||
color: #333333;
|
||||
font-family: "Lato", "Open Sans", "Helvetica", Sans;
|
||||
text-align: center;
|
||||
margin-top: 32px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.oe_styling_v8 h1.oe_slogan {
|
||||
font-size: 64px;
|
||||
font-weight: 900;
|
||||
margin-top: 48px;
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
.oe_styling_v8 h2.oe_slogan {
|
||||
font-size: 40px;
|
||||
font-weight: 300;
|
||||
}
|
||||
.oe_styling_v8 h3.oe_slogan {
|
||||
font-size: 26px;
|
||||
font-weight: 300;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
|
||||
opacity: 0.5;
|
||||
}
|
||||
.oe_styling_v8 h4.oe_slogan {
|
||||
font-size: 24px;
|
||||
font-weight: 300;
|
||||
}
|
||||
.oe_styling_v8 h4.oe_slogan:before, .oe_styling_v8 h4.oe_slogan:after {
|
||||
margin: 0 20px;
|
||||
content: "";
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 0px;
|
||||
border-top: solid 1px;
|
||||
vertical-align: middle;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30);
|
||||
opacity: 0.3;
|
||||
}
|
||||
.oe_styling_v8 h5.oe_slogan {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
/* ------ QUOTES ----- */
|
||||
.oe_quote {
|
||||
margin: 8px;
|
||||
padding: 16px;
|
||||
background: rgba(0, 0, 0, 0.02);
|
||||
border: solid 1px rgba(0, 0, 0, 0.06);
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-ms-border-radius: 2px;
|
||||
-o-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
.oe_quote .oe_q, .oe_quote q {
|
||||
margin: 10px;
|
||||
display: block;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
font-size: 20px;
|
||||
color: #4e66e7;
|
||||
}
|
||||
.oe_quote .oe_q:before, .oe_quote .oe_q:after, .oe_quote q:before, .oe_quote q:after {
|
||||
content: '"';
|
||||
font-weight: 900;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20);
|
||||
opacity: 0.2;
|
||||
}
|
||||
.oe_quote cite {
|
||||
display: block;
|
||||
font-style: normal;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.oe_quote .oe_photo {
|
||||
float: left;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
.oe_quote .oe_author {
|
||||
font-size: 20px;
|
||||
padding-top: 6px;
|
||||
color: #8d7bac;
|
||||
}
|
||||
|
||||
.oe_dark .oe_quote {
|
||||
background: white;
|
||||
border: 1px solid #f0f0ff;
|
||||
}
|
||||
|
||||
/* ------ PICTURES ----- */
|
||||
.oe_picture {
|
||||
display: block;
|
||||
max-width: 84%;
|
||||
max-height: 400px;
|
||||
margin: 16px 8%;
|
||||
}
|
||||
|
||||
.oe_screenshot {
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.oe_pic_ctr {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.oe_pic_ctr > img.oe_picture {
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
max-height: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.oe_pic_ctr > .oe_title {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 38px;
|
||||
}
|
||||
|
||||
.oe_styling_v8 .oe_pic_ctr > .oe_title {
|
||||
font-size: 64px;
|
||||
color: white;
|
||||
font-weight: 600;
|
||||
margin: 0;
|
||||
text-shadow: 0px 2px 0px #494949, 0px 2px 5px rgba(0, 0, 0, 0.33), 0px 0px 60px rgba(0, 0, 0, 0.22);
|
||||
}
|
||||
|
||||
/* ----- Link Image with Footer ----- */
|
||||
/* FIXME: Terrible CSS, rewrite this */
|
||||
div.oe_demo {
|
||||
position: relative;
|
||||
border: 1px solid #dedede;
|
||||
}
|
||||
div.oe_demo span.oe_demo_play {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 80px;
|
||||
height: 60px;
|
||||
margin-top: -30px;
|
||||
margin-left: -40px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
background: url("../img/layout/play-button.png") no-repeat left top transparent;
|
||||
pointer-events: none;
|
||||
}
|
||||
div.oe_demo img {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
div.oe_demo div.oe_demo_footer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
background-color: rgba(0, 0, 0, 0.4);
|
||||
opacity: 0.85;
|
||||
bottom: -1px;
|
||||
width: 100%;
|
||||
padding-top: 7px;
|
||||
padding-bottom: 7px;
|
||||
color: white;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
div.oe_demo:hover span.oe_demo_play {
|
||||
background: url("../img/layout/play-button-over.png") no-repeat left top transparent;
|
||||
}
|
||||
|
||||
/* ----- SEPARATOR ----- */
|
||||
.oe_styling_v8 .oe_container.oe_separator {
|
||||
height: 64px;
|
||||
margin-bottom: 16px;
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0.02)));
|
||||
background: -webkit-linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.02));
|
||||
background: -moz-linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.02));
|
||||
background: -o-linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.02));
|
||||
background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.02));
|
||||
-webkit-box-shadow: 0px -3px 10px -5px rgba(0, 0, 0, 0.1) inset;
|
||||
-moz-box-shadow: 0px -3px 10px -5px rgba(0, 0, 0, 0.1) inset;
|
||||
box-shadow: 0px -3px 10px -5px rgba(0, 0, 0, 0.1) inset;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
/* ----- TABS ----- */
|
||||
.oe_row_tabs {
|
||||
text-align: center;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
padding-top: 21px;
|
||||
}
|
||||
|
||||
.oe_row_tab {
|
||||
position: relative;
|
||||
min-width: 120px;
|
||||
padding: 8px;
|
||||
font-size: 20px;
|
||||
display: inline-block;
|
||||
margin: 0px -2px;
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
border: solid 1px rgba(0, 0, 0, 0.1);
|
||||
border-bottom: none;
|
||||
background: #fafafa;
|
||||
background-image: +linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.02));
|
||||
box-shadow: 0px -3px 10px -5px rgba(0, 0, 0, 0.1) inset;
|
||||
cursor: pointer;
|
||||
-webkit-transition: all 250ms linear;
|
||||
-moz-transition: all 250ms linear;
|
||||
-o-transition: all 250ms linear;
|
||||
transition: all 250ms linear;
|
||||
}
|
||||
|
||||
.oe_row_tab:hover {
|
||||
padding-bottom: 12px;
|
||||
top: -4px;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.oe_row_tab.oe_active {
|
||||
background-color: white;
|
||||
background-image: none;
|
||||
box-shadow: none;
|
||||
border-top-color: #8272b6;
|
||||
border-top-width: 2px;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.oe_row_tab.oe_active:hover {
|
||||
padding-bottom: 8px;
|
||||
top: 0asx;
|
||||
}
|
||||
|
||||
/* ------ CALL TO ACTION ----- */
|
||||
.oe_calltoaction {
|
||||
height: 32px;
|
||||
margin-top: -32px;
|
||||
position: relative;
|
||||
}
|
|
@ -0,0 +1,572 @@
|
|||
@charset "utf-8"
|
||||
@import "compass/css3"
|
||||
@import "compass/css3/user-interface"
|
||||
|
||||
/**
|
||||
* This CSS is for the html description of modules
|
||||
* TODO clean
|
||||
*/
|
||||
|
||||
/* --------------------------------- *
|
||||
* STYLING CONTEXT *
|
||||
* --------------------------------- */
|
||||
|
||||
/* --- Styling for the V8/Lato/White/Purple design --- */
|
||||
|
||||
$v8_title_font_color: rgb(51,51,51)
|
||||
$v8_text_font_color: rgb(100,100,100)
|
||||
$v8_font_paragraph_color: rgb(51,51,51)
|
||||
$v8_body_color: rgb(245,245,245)
|
||||
$v8_bg_color: rgb(255,255,255)
|
||||
$v8_text_font_family: 'Open Sans','Helvetica',Sans
|
||||
$v8_title_font_family: 'Lato','Open Sans','Helvetica',Sans
|
||||
$v8_anchor_color: #6D57E0
|
||||
$v8_anchor_visited_color: rgb(91, 40, 79)
|
||||
|
||||
|
||||
.openerp .oe_form_sheet_width
|
||||
max-width: 960px
|
||||
|
||||
.openerp .oe_form .oe_styling_v8
|
||||
width: 100%
|
||||
padding: 0
|
||||
margin: 0
|
||||
font-family: $v8_text_font_family
|
||||
font-weight: 300
|
||||
color: $v8_text_font_color
|
||||
background: $v8_bg_color
|
||||
font-size: 16px
|
||||
|
||||
.oe_websiteonly
|
||||
display: none
|
||||
|
||||
.oe_website_contents
|
||||
background: $v8_body_color
|
||||
padding-bottom: 1px
|
||||
|
||||
b
|
||||
font-weight: 600
|
||||
a
|
||||
color: $v8_anchor_color
|
||||
text-decoration: none
|
||||
a:visited
|
||||
color: $v8_anchor_visited_color
|
||||
a:hover
|
||||
color: #0096EB
|
||||
|
||||
.oe_title_font
|
||||
font-family: $v8_title_font_family
|
||||
|
||||
|
||||
.oe_page
|
||||
background: $v8_bg_color
|
||||
overflow: hidden
|
||||
+border-radius(1px)
|
||||
+box-shadow(0 1px 3px rgba(0,0,0,0.35))
|
||||
|
||||
.oe_emph
|
||||
font-weight: 400
|
||||
|
||||
.oe_dark
|
||||
overflow: hidden
|
||||
background: #FCFCFC
|
||||
+box-shadow(0px 5px 9px -7px rgba(0,0,255,0.5) inset, 0px -3px 9px -7px rgba(0,0,255,0.5) inset)
|
||||
|
||||
/* --------------------------------- *
|
||||
* LAYOUT *
|
||||
* --------------------------------- */
|
||||
|
||||
/* ------ BASE GRID CONSTRUCTS ----- */
|
||||
|
||||
.oe_page
|
||||
margin: 0px auto 64px auto
|
||||
max-width: 992px
|
||||
|
||||
|
||||
.oe_row
|
||||
width: 928px
|
||||
margin-top: 16px
|
||||
margin-bottom: 16px
|
||||
margin-left: auto
|
||||
margin-right: auto
|
||||
|
||||
.oe_row.oe_fit
|
||||
width: auto
|
||||
|
||||
.oe_clearfix:after, .oe_row:after
|
||||
content: "."
|
||||
display: block
|
||||
clear: both
|
||||
visibility: hidden
|
||||
line-height: 0
|
||||
height: 0
|
||||
|
||||
$oe_span12_width: 928px
|
||||
$oe_span10_width: 773px
|
||||
$oe_span9_width: 696px
|
||||
$oe_span8_width: 618px
|
||||
$oe_span6_width: 464px
|
||||
$oe_span4_width: 309px
|
||||
$oe_span3_width: 232px
|
||||
$oe_span2_width: 154px
|
||||
|
||||
[class*='oe_span']
|
||||
float: left
|
||||
+box-sizing(border-box)
|
||||
padding: 0 16px
|
||||
.oe_span12
|
||||
width: $oe_span12_width
|
||||
.oe_span10
|
||||
width: $oe_span10_width
|
||||
.oe_span9
|
||||
width: $oe_span9_width
|
||||
.oe_span8
|
||||
width: $oe_span8_width
|
||||
.oe_span6
|
||||
width: $oe_span6_width
|
||||
.oe_span4
|
||||
width: $oe_span4_width
|
||||
.oe_span3
|
||||
width: $oe_span3_width
|
||||
.oe_span2
|
||||
width: $oe_span2_width
|
||||
|
||||
[class*='oe_span'].oe_fit
|
||||
padding-left: 0px !important
|
||||
padding-right: 0px !important
|
||||
|
||||
[class*='oe_span'].oe_right
|
||||
float: right
|
||||
|
||||
.oe_row.oe_flex
|
||||
[class*='oe_span']
|
||||
display: inline-block
|
||||
float: none
|
||||
vertical-align: top
|
||||
+box-sizing(border-box)
|
||||
padding: 0 16px
|
||||
width: auto
|
||||
.oe_span12
|
||||
max-width: $oe_span12_width
|
||||
.oe_span10
|
||||
max-width: ($oe_span10_width +-4px)
|
||||
.oe_span9
|
||||
max-width: ($oe_span9_width +-4px)
|
||||
.oe_span8
|
||||
max-width: ($oe_span8_width +-4px)
|
||||
.oe_span6
|
||||
max-width: ($oe_span6_width +-4px)
|
||||
.oe_span4
|
||||
max-width: ($oe_span4_width +-4px)
|
||||
.oe_span3
|
||||
max-width: ($oe_span3_width +-4px)
|
||||
.oe_span2
|
||||
max-width: ($oe_span2_width +-4px)
|
||||
|
||||
.oe_mb0
|
||||
margin-bottom: 0px !important
|
||||
.oe_mb4
|
||||
margin-bottom: 4px !important
|
||||
.oe_mb8
|
||||
margin-bottom: 8px !important
|
||||
.oe_mb16
|
||||
margin-bottom: 16px !important
|
||||
.oe_mb32
|
||||
margin-bottom: 32px !important
|
||||
.oe_mb48
|
||||
margin-bottom: 48px !important
|
||||
.oe_mb64
|
||||
margin-bottom: 64px !important
|
||||
|
||||
.oe_mt0
|
||||
margin-top: 0px !important
|
||||
.oe_mt4
|
||||
margin-top: 4px !important
|
||||
.oe_mt8
|
||||
margin-top: 8px !important
|
||||
.oe_mt16
|
||||
margin-top: 16px !important
|
||||
.oe_mt32
|
||||
margin-top: 32px !important
|
||||
.oe_mt48
|
||||
margin-top: 48px !important
|
||||
.oe_mt64
|
||||
margin-top: 64px !important
|
||||
|
||||
/* ------ GENERIC LAYOUT MODIFIERS ----- */
|
||||
|
||||
.oe_rightfit
|
||||
padding-right: 0px !important
|
||||
.oe_leftfit
|
||||
padding-left: 0px !important
|
||||
.oe_leftalign
|
||||
text-align: left
|
||||
.oe_rightalign
|
||||
text-align: right
|
||||
.oe_centeralign
|
||||
text-align: center
|
||||
.oe_centered
|
||||
margin-left: auto
|
||||
margin-right: auto
|
||||
.oe_hidden
|
||||
display: none !important
|
||||
opacity: 0 !important
|
||||
.oe_invisible
|
||||
visibility: hidden !important
|
||||
.oe_transparent
|
||||
opacity: 0 !important
|
||||
|
||||
.oe_mb0
|
||||
margin-bottom: 0px !important
|
||||
.oe_mb4
|
||||
margin-bottom: 4px !important
|
||||
.oe_mb8
|
||||
margin-bottom: 8px !important
|
||||
.oe_mb16
|
||||
margin-bottom: 16px !important
|
||||
.oe_mb32
|
||||
margin-bottom: 32px !important
|
||||
.oe_mb64
|
||||
margin-bottom: 64px !important
|
||||
|
||||
.oe_spaced
|
||||
margin-top: 32px
|
||||
margin-bottom: 32px
|
||||
.oe_more_spaced
|
||||
margin-top: 64px
|
||||
margin-bottom: 64px
|
||||
.oe_padded
|
||||
padding-top: 16px
|
||||
padding-bottom: 16px
|
||||
.oe_more_padded
|
||||
padding-top: 32px
|
||||
padding-bottom: 32px
|
||||
|
||||
/* --------------------------------- *
|
||||
* WEBPAGE COMPONENTS *
|
||||
* --------------------------------- */
|
||||
|
||||
/* ------ BUTTONS ----- */
|
||||
|
||||
.oe_button
|
||||
position: relative
|
||||
bottom: 0
|
||||
display: inline-block
|
||||
cursor: pointer
|
||||
+user-select(none)
|
||||
|
||||
.oe_styling_v8 .oe_button, .oe_styling_v8 a.oe_button
|
||||
padding: 8px 14px
|
||||
background: rgb(139, 114, 182)
|
||||
color: white
|
||||
+border-radius(2px)
|
||||
+box-shadow(0px 2px 0px rgb(175, 168, 204))
|
||||
+text-shadow(0px 1px 1px rgba(0,0,0, 0.44))
|
||||
border: solid 1px rgba(0,0,0,0.09)
|
||||
+transition-property((bottom, background))
|
||||
+transition-duration(250ms)
|
||||
&:hover
|
||||
background: rgb(139,91,221)
|
||||
color: white
|
||||
&:active
|
||||
background: rgb(51,51,51)
|
||||
bottom: -3px
|
||||
&.oe_big
|
||||
font-size: 24px
|
||||
&.oe_bigger
|
||||
font-size: 32px
|
||||
&.oe_small
|
||||
font-size: 13px
|
||||
padding: 2px 4px
|
||||
&:active
|
||||
bottom: -1px
|
||||
&.oe_medium
|
||||
padding: 5px 12px
|
||||
font-size: 16px
|
||||
&.oe_tacky
|
||||
background: rgb(255,68,68)
|
||||
+box-shadow(0px 2px 0px #eba8a8)
|
||||
&:hover
|
||||
background: rgb(255,16,16)
|
||||
&:active
|
||||
background: black
|
||||
&.oe_disabled
|
||||
background: rgb(200,200,200)
|
||||
+box-shadow(0px 2px 0px rgb(180,180,180))
|
||||
cursor: default
|
||||
&:hover
|
||||
background: rgb(200,200,200)
|
||||
+box-shadow(0px 2px 0px rgb(180,180,180))
|
||||
&:active
|
||||
background: rgb(200,200,200)
|
||||
bottom: 0px
|
||||
+box-shadow(0px 2px 0px rgb(180,180,180))
|
||||
|
||||
.oe_styling_v8.oe_styling_black .oe_button
|
||||
+box-shadow(0px 2px 0px rgb(70,53,85))
|
||||
|
||||
/* ------ FORMS ----- */
|
||||
|
||||
.oe_styling_v8
|
||||
.oe_input
|
||||
padding: 4px 7px
|
||||
border-radius: 3px
|
||||
border: solid 1px rgb(214,214,214)
|
||||
box-shadow: 0px 2px rgb(230,230,230)
|
||||
background: rgb(250,250,250)
|
||||
font-weight: 300
|
||||
outline: none
|
||||
@include transition( all 150ms linear )
|
||||
&:focus
|
||||
border: solid 1px rgb(150,150,150)
|
||||
box-shadow: 0px 2px rgb(210,210,210)
|
||||
|
||||
&.oe_valid
|
||||
background: #F2FFEC
|
||||
border-color: rgb(177,235,182)
|
||||
box-shadow: 0px 2px rgb(225,248,225)
|
||||
color: rgb(15,97,15)
|
||||
|
||||
&.oe_invalid
|
||||
background: rgb(255,242,242)
|
||||
border-color: #EBB1B1
|
||||
box-shadow: 0px 2px #F8E1E1
|
||||
color: #610F0F
|
||||
&.oe_big
|
||||
padding: 8px 14px
|
||||
.oe_input_label
|
||||
font-weight: 300
|
||||
font-size: 16px
|
||||
&.oe_big
|
||||
font-size: 20px
|
||||
|
||||
/* FIXME: this is a quick hack for the release */
|
||||
|
||||
.oe_textarea
|
||||
width: 300px
|
||||
height: 80px
|
||||
.oe_form_layout_table
|
||||
width: 100%
|
||||
td
|
||||
padding-bottom: 16px
|
||||
&:first-child
|
||||
text-align: right
|
||||
padding-right: 16px
|
||||
|
||||
/* ------ SLOGANS ----- */
|
||||
|
||||
.oe_styling_v8
|
||||
.oe_slogan
|
||||
color: $v8_title_font_color
|
||||
font-family: $v8_title_font_family
|
||||
text-align: center
|
||||
margin-top: 32px
|
||||
margin-bottom: 32px
|
||||
|
||||
h1.oe_slogan
|
||||
font-size: 64px
|
||||
font-weight: 900
|
||||
margin-top: 48px
|
||||
margin-bottom: 48px
|
||||
|
||||
h2.oe_slogan
|
||||
font-size: 40px
|
||||
font-weight: 300
|
||||
|
||||
h3.oe_slogan
|
||||
font-size: 26px
|
||||
font-weight: 300
|
||||
+opacity(0.5)
|
||||
|
||||
h4.oe_slogan
|
||||
font-size: 24px
|
||||
font-weight: 300
|
||||
h4.oe_slogan:before, h4.oe_slogan:after
|
||||
margin: 0 20px
|
||||
content: ""
|
||||
display: inline-block
|
||||
width: 100px
|
||||
height: 0px
|
||||
border-top: solid 1px
|
||||
vertical-align: middle
|
||||
+opacity(0.3)
|
||||
|
||||
h5.oe_slogan
|
||||
font-weight: 300
|
||||
//TODO
|
||||
|
||||
/* ------ QUOTES ----- */
|
||||
|
||||
.oe_quote
|
||||
margin: 8px
|
||||
padding: 16px
|
||||
background: rgba(0,0,0,0.02)
|
||||
border: solid 1px rgba(0,0,0,0.06)
|
||||
+border-radius(2px)
|
||||
|
||||
.oe_q,q
|
||||
margin: 10px
|
||||
display: block
|
||||
font-style: italic
|
||||
text-align: center
|
||||
font-size: 20px
|
||||
color: rgb(78, 102, 231)
|
||||
&:before, &:after
|
||||
content: '\"'
|
||||
font-weight: 900
|
||||
+opacity(0.2)
|
||||
|
||||
cite
|
||||
display: block
|
||||
font-style: normal
|
||||
margin-top: 16px
|
||||
|
||||
.oe_photo
|
||||
float: left
|
||||
+border-radius(3px)
|
||||
margin-right: 16px
|
||||
|
||||
.oe_author
|
||||
font-size: 20px
|
||||
padding-top: 6px
|
||||
color: rgb(141, 123, 172)
|
||||
|
||||
.oe_dark .oe_quote
|
||||
background: white
|
||||
border: 1px solid rgb(240,240,255)
|
||||
|
||||
/* ------ PICTURES ----- */
|
||||
|
||||
// display a picture in a span
|
||||
.oe_picture
|
||||
display: block
|
||||
max-width: 84%
|
||||
max-height: 400px
|
||||
margin: 16px 8%
|
||||
|
||||
// style the picture like a screenshot
|
||||
.oe_screenshot
|
||||
+border-radius(3px)
|
||||
+box-shadow(0px 3px 8px rgba(0,0,0,0.2))
|
||||
|
||||
// display a picture taking full width of a row
|
||||
.oe_pic_ctr
|
||||
position: relative
|
||||
|
||||
.oe_pic_ctr > img.oe_picture
|
||||
width: 100%
|
||||
max-width: none
|
||||
max-height: none
|
||||
margin: 0
|
||||
|
||||
// styling of the picture's title
|
||||
.oe_pic_ctr > .oe_title
|
||||
position: absolute
|
||||
top: 15px
|
||||
right: 38px
|
||||
|
||||
.oe_styling_v8 .oe_pic_ctr > .oe_title
|
||||
font-size: 64px
|
||||
color: white
|
||||
font-weight: 600
|
||||
margin: 0
|
||||
+text-shadow( 0px 2px 0px rgb(73, 73, 73), 0px 2px 5px rgba(0, 0, 0, 0.33), 0px 0px 60px rgba(0, 0, 0, 0.22))
|
||||
|
||||
/* ----- Link Image with Footer ----- */
|
||||
/* FIXME: Terrible CSS, rewrite this */
|
||||
|
||||
div.oe_demo
|
||||
position: relative
|
||||
border: 1px solid #dedede
|
||||
span.oe_demo_play
|
||||
top: 50%
|
||||
left: 50%
|
||||
width: 80px
|
||||
height: 60px
|
||||
margin-top: -30px
|
||||
margin-left: -40px
|
||||
display: block
|
||||
position: absolute
|
||||
background: url("../img/layout/play-button.png") no-repeat left top transparent
|
||||
pointer-events: none
|
||||
img
|
||||
max-width: 100%
|
||||
width: 100%
|
||||
div.oe_demo_footer
|
||||
position: absolute
|
||||
left: 0
|
||||
background-color: rgba(0,0,0,0.4)
|
||||
opacity: 0.85
|
||||
bottom: -1px
|
||||
width: 100%
|
||||
padding-top: 7px
|
||||
padding-bottom: 7px
|
||||
color: white
|
||||
font-size: 14px
|
||||
font-weight: bold
|
||||
border-bottom-left-radius: 3px
|
||||
border-bottom-right-radius: 3px
|
||||
pointer-events: none
|
||||
|
||||
div.oe_demo:hover
|
||||
span.oe_demo_play
|
||||
background: url("../img/layout/play-button-over.png") no-repeat left top transparent
|
||||
|
||||
/* ----- SEPARATOR ----- */
|
||||
|
||||
.oe_styling_v8 .oe_container.oe_separator
|
||||
height: 64px
|
||||
margin-bottom: 16px
|
||||
@include background(linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.02)))
|
||||
+box-shadow(0px -3px 10px -5px rgba(0,0,0,0.1) inset)
|
||||
overflow-y: hidden
|
||||
|
||||
/* ----- TABS ----- */
|
||||
|
||||
.oe_row_tabs
|
||||
text-align: center
|
||||
margin-top: 0px
|
||||
margin-bottom: 0px
|
||||
padding-top: 21px
|
||||
|
||||
.oe_row_tab
|
||||
position: relative
|
||||
min-width: 120px
|
||||
padding: 8px
|
||||
font-size: 20px
|
||||
display: inline-block
|
||||
margin: 0px -2px
|
||||
border-top-left-radius: 4px
|
||||
border-top-right-radius: 4px
|
||||
border: solid 1px rgba(0,0,0,0.1)
|
||||
border-bottom: none
|
||||
background: rgb(250,250,250)
|
||||
background-image: +linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.02))
|
||||
box-shadow: 0px -3px 10px -5px rgba(0,0,0,0.1) inset
|
||||
cursor: pointer
|
||||
@include transition(all 250ms linear)
|
||||
|
||||
.oe_row_tab:hover
|
||||
padding-bottom: 12px
|
||||
top: -4px
|
||||
background-color: white
|
||||
|
||||
.oe_row_tab.oe_active
|
||||
background-color: white
|
||||
background-image: none
|
||||
box-shadow: none
|
||||
border-top-color: rgb(130, 114, 182)
|
||||
border-top-width: 2px
|
||||
cursor: default
|
||||
|
||||
.oe_row_tab.oe_active:hover
|
||||
padding-bottom: 8px
|
||||
top: 0asx
|
||||
|
||||
/* ------ CALL TO ACTION ----- */
|
||||
|
||||
.oe_calltoaction
|
||||
height: 32px
|
||||
margin-top: -32px
|
||||
position: relative
|
||||
|
|
@ -398,7 +398,9 @@ def is_leaf(element, internal=False):
|
|||
INTERNAL_OPS += ('inselect',)
|
||||
return (isinstance(element, tuple) or isinstance(element, list)) \
|
||||
and len(element) == 3 \
|
||||
and element[1] in INTERNAL_OPS
|
||||
and element[1] in INTERNAL_OPS \
|
||||
and ((isinstance(element[0], basestring) and element[0])
|
||||
or element in (TRUE_LEAF, FALSE_LEAF))
|
||||
|
||||
|
||||
# --------------------------------------------------
|
||||
|
|
|
@ -1804,13 +1804,19 @@ class BaseModel(object):
|
|||
# try to find a view_id if none provided
|
||||
if not view_id:
|
||||
# <view_type>_view_ref in context can be used to overrride the default view
|
||||
view_ref = context.get(view_type + '_view_ref')
|
||||
if view_ref and '.' in view_ref:
|
||||
module, view_ref = view_ref.split('.', 1)
|
||||
cr.execute("SELECT res_id FROM ir_model_data WHERE model='ir.ui.view' AND module=%s AND name=%s", (module, view_ref))
|
||||
view_ref_res = cr.fetchone()
|
||||
if view_ref_res:
|
||||
view_id = view_ref_res[0]
|
||||
view_ref_key = view_type + '_view_ref'
|
||||
view_ref = context.get(view_ref_key)
|
||||
if view_ref:
|
||||
if '.' in view_ref:
|
||||
module, view_ref = view_ref.split('.', 1)
|
||||
cr.execute("SELECT res_id FROM ir_model_data WHERE model='ir.ui.view' AND module=%s AND name=%s", (module, view_ref))
|
||||
view_ref_res = cr.fetchone()
|
||||
if view_ref_res:
|
||||
view_id = view_ref_res[0]
|
||||
else:
|
||||
_logger.warning('%r requires a fully-qualified external id (got: %r for model %s). '
|
||||
'Please use the complete `module.view_id` form instead.', view_ref_key, view_ref,
|
||||
self._name)
|
||||
else:
|
||||
# otherwise try to find the lowest priority matching ir.ui.view
|
||||
view_id = View.default_view(cr, uid, self._name, view_type, context=context)
|
||||
|
|
|
@ -109,7 +109,7 @@ class _date_format(str, _format):
|
|||
if self.val:
|
||||
if getattr(self,'name', None):
|
||||
date = datetime.strptime(self.name[:get_date_length()], DEFAULT_SERVER_DATE_FORMAT)
|
||||
return date.strftime(str(self.lang_obj.date_format))
|
||||
return date.strftime(self.lang_obj.date_format.encode('utf-8'))
|
||||
return self.val
|
||||
|
||||
class _dttime_format(str, _format):
|
||||
|
@ -120,8 +120,8 @@ class _dttime_format(str, _format):
|
|||
def __str__(self):
|
||||
if self.val and getattr(self,'name', None):
|
||||
return datetime.strptime(self.name, DEFAULT_SERVER_DATETIME_FORMAT)\
|
||||
.strftime("%s %s"%(str(self.lang_obj.date_format),
|
||||
str(self.lang_obj.time_format)))
|
||||
.strftime("%s %s"%((self.lang_obj.date_format).encode('utf-8'),
|
||||
(self.lang_obj.time_format).encode('utf-8')))
|
||||
return self.val
|
||||
|
||||
|
||||
|
@ -313,7 +313,7 @@ class rml_parse(object):
|
|||
date = datetime_field.context_timestamp(self.cr, self.uid,
|
||||
timestamp=date,
|
||||
context=self.localcontext)
|
||||
return date.strftime(date_format)
|
||||
return date.strftime(date_format.encode('utf-8'))
|
||||
|
||||
res = self.lang_dict['lang_obj'].format('%.' + str(digits) + 'f', value, grouping=grouping, monetary=monetary)
|
||||
if currency_obj:
|
||||
|
|
|
@ -411,14 +411,11 @@ class WorkerCron(Worker):
|
|||
if rpc_request_flag:
|
||||
start_time = time.time()
|
||||
start_rss, start_vms = psutil.Process(os.getpid()).get_memory_info()
|
||||
while True:
|
||||
# acquired = openerp.addons.base.ir.ir_cron.ir_cron._acquire_job(db_name)
|
||||
# TODO why isnt openerp.addons.base defined ?
|
||||
import openerp.addons.base as base
|
||||
acquired = base.ir.ir_cron.ir_cron._acquire_job(db_name)
|
||||
if not acquired:
|
||||
openerp.modules.registry.RegistryManager.delete(db_name)
|
||||
break
|
||||
|
||||
import openerp.addons.base as base
|
||||
base.ir.ir_cron.ir_cron._acquire_job(db_name)
|
||||
openerp.modules.registry.RegistryManager.delete(db_name)
|
||||
|
||||
# dont keep cursors in multi database mode
|
||||
if len(db_names) > 1:
|
||||
openerp.sql_db.close_db(db_name)
|
||||
|
|
|
@ -9,6 +9,7 @@ import common
|
|||
# test group that demo user should not have
|
||||
GROUP_TECHNICAL_FEATURES = 'base.group_no_one'
|
||||
|
||||
|
||||
class TestACL(common.TransactionCase):
|
||||
|
||||
def setUp(self):
|
||||
|
@ -22,25 +23,25 @@ class TestACL(common.TransactionCase):
|
|||
|
||||
def test_field_visibility_restriction(self):
|
||||
"""Check that model-level ``groups`` parameter effectively restricts access to that
|
||||
field for users who do not belong to one of the explicitly allowed groups"""
|
||||
field for users who do not belong to one of the explicitly allowed groups"""
|
||||
# Verify the test environment first
|
||||
original_fields = self.res_currency.fields_get(self.cr, self.demo_uid, [])
|
||||
form_view = self.res_currency.fields_view_get(self.cr, self.demo_uid, False, 'form')
|
||||
view_arch = etree.fromstring(form_view.get('arch'))
|
||||
has_tech_feat = self.res_users.has_group(self.cr, self.demo_uid, GROUP_TECHNICAL_FEATURES)
|
||||
self.assertFalse(has_tech_feat, "`demo` user should not belong to the restricted group before the test")
|
||||
self.assertTrue('rate' in original_fields, "'rate' field must be properly visible before the test")
|
||||
self.assertNotEquals(view_arch.xpath("//field[@name='rate']"), [],
|
||||
"Field 'rate' must be found in view definition before the test")
|
||||
self.assertTrue('accuracy' in original_fields, "'accuracy' field must be properly visible before the test")
|
||||
self.assertNotEquals(view_arch.xpath("//field[@name='accuracy']"), [],
|
||||
"Field 'accuracy' must be found in view definition before the test")
|
||||
|
||||
# Restrict access to the field and check it's gone
|
||||
self.res_currency._columns['rate'].groups = GROUP_TECHNICAL_FEATURES
|
||||
self.res_currency._columns['accuracy'].groups = GROUP_TECHNICAL_FEATURES
|
||||
fields = self.res_currency.fields_get(self.cr, self.demo_uid, [])
|
||||
form_view = self.res_currency.fields_view_get(self.cr, self.demo_uid, False, 'form')
|
||||
view_arch = etree.fromstring(form_view.get('arch'))
|
||||
self.assertFalse('rate' in fields, "'rate' field should be gone")
|
||||
self.assertEquals(view_arch.xpath("//field[@name='rate']"), [],
|
||||
"Field 'rate' must not be found in view definition")
|
||||
self.assertFalse('accuracy' in fields, "'accuracy' field should be gone")
|
||||
self.assertEquals(view_arch.xpath("//field[@name='accuracy']"), [],
|
||||
"Field 'accuracy' must not be found in view definition")
|
||||
|
||||
# Make demo user a member of the restricted group and check that the field is back
|
||||
self.tech_group.write({'users': [(4, self.demo_uid)]})
|
||||
|
@ -50,13 +51,13 @@ class TestACL(common.TransactionCase):
|
|||
view_arch = etree.fromstring(form_view.get('arch'))
|
||||
#import pprint; pprint.pprint(fields); pprint.pprint(form_view)
|
||||
self.assertTrue(has_tech_feat, "`demo` user should now belong to the restricted group")
|
||||
self.assertTrue('rate' in fields, "'rate' field must be properly visible again")
|
||||
self.assertNotEquals(view_arch.xpath("//field[@name='rate']"), [],
|
||||
"Field 'rate' must be found in view definition again")
|
||||
self.assertTrue('accuracy' in fields, "'accuracy' field must be properly visible again")
|
||||
self.assertNotEquals(view_arch.xpath("//field[@name='accuracy']"), [],
|
||||
"Field 'accuracy' must be found in view definition again")
|
||||
|
||||
#cleanup
|
||||
self.tech_group.write({'users': [(3, self.demo_uid)]})
|
||||
self.res_currency._columns['rate'].groups = False
|
||||
self.res_currency._columns['accuracy'].groups = False
|
||||
|
||||
@mute_logger('openerp.osv.orm')
|
||||
def test_field_crud_restriction(self):
|
||||
|
@ -65,7 +66,7 @@ class TestACL(common.TransactionCase):
|
|||
has_tech_feat = self.res_users.has_group(self.cr, self.demo_uid, GROUP_TECHNICAL_FEATURES)
|
||||
self.assertFalse(has_tech_feat, "`demo` user should not belong to the restricted group")
|
||||
self.assert_(self.res_partner.read(self.cr, self.demo_uid, [1], ['bank_ids']))
|
||||
self.assert_(self.res_partner.write(self.cr, self.demo_uid, [1], {'bank_ids': []}))
|
||||
self.assert_(self.res_partner.write(self.cr, self.demo_uid, [1], {'bank_ids': []}))
|
||||
|
||||
# Now restrict access to the field and check it's forbidden
|
||||
self.res_partner._columns['bank_ids'].groups = GROUP_TECHNICAL_FEATURES
|
||||
|
@ -79,12 +80,30 @@ class TestACL(common.TransactionCase):
|
|||
has_tech_feat = self.res_users.has_group(self.cr, self.demo_uid, GROUP_TECHNICAL_FEATURES)
|
||||
self.assertTrue(has_tech_feat, "`demo` user should now belong to the restricted group")
|
||||
self.assert_(self.res_partner.read(self.cr, self.demo_uid, [1], ['bank_ids']))
|
||||
self.assert_(self.res_partner.write(self.cr, self.demo_uid, [1], {'bank_ids': []}))
|
||||
|
||||
self.assert_(self.res_partner.write(self.cr, self.demo_uid, [1], {'bank_ids': []}))
|
||||
|
||||
#cleanup
|
||||
self.tech_group.write({'users': [(3, self.demo_uid)]})
|
||||
self.res_partner._columns['bank_ids'].groups = False
|
||||
|
||||
def test_fields_browse_restriction(self):
|
||||
"""Test access to records having restricted fields"""
|
||||
self.res_partner._columns['email'].groups = GROUP_TECHNICAL_FEATURES
|
||||
try:
|
||||
P = self.res_partner
|
||||
pid = P.search(self.cr, self.demo_uid, [], limit=1)[0]
|
||||
part = P.browse(self.cr, self.demo_uid, pid)
|
||||
# accessing fields must no raise exceptions...
|
||||
part.name
|
||||
# ... except they are restricted
|
||||
with self.assertRaises(openerp.osv.orm.except_orm) as cm:
|
||||
part.email
|
||||
|
||||
self.assertEqual(cm.exception.args[0], 'Access Denied')
|
||||
finally:
|
||||
self.res_partner._columns['email'].groups = False
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest2.main()
|
||||
|
||||
|
|
|
@ -23,146 +23,9 @@
|
|||
##############################################################################
|
||||
|
||||
import unittest2
|
||||
from . import test_mail_examples
|
||||
from openerp.tools import html_sanitize, html_email_clean, append_content_to_html, plaintext2html
|
||||
|
||||
HTML_SOURCE = """
|
||||
<font size="2" style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; ">test1</font>
|
||||
<div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; font-size: 12px; font-style: normal; ">
|
||||
<b>test2</b></div><div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; font-size: 12px; ">
|
||||
<i>test3</i></div><div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; font-size: 12px; ">
|
||||
<u>test4</u></div><div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; font-size: 12px; ">
|
||||
<strike>test5</strike></div><div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; ">
|
||||
<font size="5">test6</font></div><div><ul><li><font color="#1f1f1f" face="monospace" size="2">test7</font></li><li>
|
||||
<font color="#1f1f1f" face="monospace" size="2">test8</font></li></ul><div><ol><li><font color="#1f1f1f" face="monospace" size="2">test9</font>
|
||||
</li><li><font color="#1f1f1f" face="monospace" size="2">test10</font></li></ol></div></div>
|
||||
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><div><font color="#1f1f1f" face="monospace" size="2">
|
||||
test11</font></div></div></div></blockquote><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
|
||||
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><font color="#1f1f1f" face="monospace" size="2">
|
||||
test12</font></div><div><font color="#1f1f1f" face="monospace" size="2"><br></font></div></blockquote></blockquote>
|
||||
<font color="#1f1f1f" face="monospace" size="2"><a href="http://google.com">google</a></font>
|
||||
<a href="javascript:alert('malicious code')">test link</a>
|
||||
"""
|
||||
|
||||
EDI_LIKE_HTML_SOURCE = """<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
|
||||
<p>Hello ${object.partner_id.name},</p>
|
||||
<p>A new invoice is available for you: </p>
|
||||
<p style="border-left: 1px solid #8e0000; margin-left: 30px;">
|
||||
<strong>REFERENCES</strong><br />
|
||||
Invoice number: <strong>${object.number}</strong><br />
|
||||
Invoice total: <strong>${object.amount_total} ${object.currency_id.name}</strong><br />
|
||||
Invoice date: ${object.date_invoice}<br />
|
||||
Order reference: ${object.origin}<br />
|
||||
Your contact: <a href="mailto:${object.user_id.email or ''}?subject=Invoice%20${object.number}">${object.user_id.name}</a>
|
||||
</p>
|
||||
<br/>
|
||||
<p>It is also possible to directly pay with Paypal:</p>
|
||||
<a style="margin-left: 120px;" href="${object.paypal_url}">
|
||||
<img class="oe_edi_paypal_button" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif"/>
|
||||
</a>
|
||||
<br/>
|
||||
<p>If you have any question, do not hesitate to contact us.</p>
|
||||
<p>Thank you for choosing ${object.company_id.name or 'us'}!</p>
|
||||
<br/>
|
||||
<br/>
|
||||
<div style="width: 375px; margin: 0px; padding: 0px; background-color: #8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; background-repeat: repeat no-repeat;">
|
||||
<h3 style="margin: 0px; padding: 2px 14px; font-size: 12px; color: #DDD;">
|
||||
<strong style="text-transform:uppercase;">${object.company_id.name}</strong></h3>
|
||||
</div>
|
||||
<div style="width: 347px; margin: 0px; padding: 5px 14px; line-height: 16px; background-color: #F2F2F2;">
|
||||
<span style="color: #222; margin-bottom: 5px; display: block; ">
|
||||
${object.company_id.street}<br/>
|
||||
${object.company_id.street2}<br/>
|
||||
${object.company_id.zip} ${object.company_id.city}<br/>
|
||||
${object.company_id.state_id and ('%s, ' % object.company_id.state_id.name) or ''} ${object.company_id.country_id.name or ''}<br/>
|
||||
</span>
|
||||
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
|
||||
Phone: ${object.company_id.phone}
|
||||
</div>
|
||||
<div>
|
||||
Web : <a href="${object.company_id.website}">${object.company_id.website}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div></body></html>"""
|
||||
|
||||
TEXT_MAIL1 = """I contact you about our meeting for tomorrow. Here is the schedule I propose:
|
||||
9 AM: brainstorming about our new amazing business app</span></li>
|
||||
9.45 AM: summary
|
||||
10 AM: meeting with Fabien to present our app
|
||||
Is everything ok for you ?
|
||||
--
|
||||
Administrator"""
|
||||
|
||||
HTML_MAIL1 = """<div>
|
||||
<font><span>I contact you about our meeting for tomorrow. Here is the schedule I propose:</span></font>
|
||||
</div>
|
||||
<div><ul>
|
||||
<li><span>9 AM: brainstorming about our new amazing business app</span></li>
|
||||
<li><span>9.45 AM: summary</span></li>
|
||||
<li><span>10 AM: meeting with Fabien to present our app</span></li>
|
||||
</ul></div>
|
||||
<div><font><span>Is everything ok for you ?</span></font></div>"""
|
||||
|
||||
GMAIL_REPLY1_SAN = """Hello,<div><br></div><div>Ok for me. I am replying directly in gmail, without signature.</div><div><br></div><div>Kind regards,</div><div><br></div><div>Demo.<br><br><div>On Thu, Nov 8, 2012 at 5:29 PM, <span><<a href="mailto:dummy@example.com">dummy@example.com</a>></span> wrote:<br><blockquote><div>I contact you about our meeting for tomorrow. Here is the schedule I propose:</div><div><ul><li>9 AM: brainstorming about our new amazing business app</span></li></li>
|
||||
<li>9.45 AM: summary</li><li>10 AM: meeting with Fabien to present our app</li></ul></div><div>Is everything ok for you ?</div>
|
||||
<div><p>--<br>Administrator</p></div>
|
||||
|
||||
<div><p>Log in our portal at: <a href="http://localhost:8069#action=login&db=mail_1&login=demo">http://localhost:8069#action=login&db=mail_1&login=demo</a></p></div>
|
||||
</blockquote></div><br></div>"""
|
||||
|
||||
THUNDERBIRD_16_REPLY1_SAN = """ <div>On 11/08/2012 05:29 PM,
|
||||
<a href="mailto:dummy@example.com">dummy@example.com</a> wrote:<br></div>
|
||||
<blockquote>
|
||||
<div>I contact you about our meeting for tomorrow. Here is the
|
||||
schedule I propose:</div>
|
||||
<div>
|
||||
<ul><li>9 AM: brainstorming about our new amazing business
|
||||
app</span></li></li>
|
||||
<li>9.45 AM: summary</li>
|
||||
<li>10 AM: meeting with Fabien to present our app</li>
|
||||
</ul></div>
|
||||
<div>Is everything ok for you ?</div>
|
||||
<div>
|
||||
<p>--<br>
|
||||
Administrator</p>
|
||||
</div>
|
||||
<div>
|
||||
<p>Log in our portal at:
|
||||
<a href="http://localhost:8069#action=login&db=mail_1&token=rHdWcUART5PhEnJRaXjH">http://localhost:8069#action=login&db=mail_1&token=rHdWcUART5PhEnJRaXjH</a></p>
|
||||
</div>
|
||||
</blockquote>
|
||||
Ok for me. I am replying directly below your mail, using
|
||||
Thunderbird, with a signature.<br><br>
|
||||
Did you receive my email about my new laptop, by the way ?<br><br>
|
||||
Raoul.<br><pre>--
|
||||
Raoul Grosbedonnée
|
||||
</pre>"""
|
||||
|
||||
TEXT_TPL = """Salut Raoul!
|
||||
Le 28 oct. 2012 à 00:02, Raoul Grosbedon a écrit :
|
||||
|
||||
> C'est sûr que je suis intéressé (quote)!
|
||||
|
||||
Trouloulou pouet pouet. Je ne vais quand même pas écrire de vrais mails, non mais ho.
|
||||
|
||||
> 2012/10/27 Bert Tartopoils :
|
||||
>> Diantre, me disè-je en envoyant un message similaire à Martine, mais comment vas-tu (quote)?
|
||||
>>
|
||||
>> A la base le contenu était un vrai mail, mais je l'ai quand même réécrit pour ce test, histoire de dire que, quand même, on ne met pas n'importe quoi ici. (quote)
|
||||
>>
|
||||
>> Et sinon bon courage pour trouver tes clefs (quote).
|
||||
>>
|
||||
>> Bert TARTOPOILS
|
||||
>> bert.tartopoils@miam.miam
|
||||
>>
|
||||
>
|
||||
>
|
||||
> --
|
||||
> Raoul Grosbedon
|
||||
|
||||
Bert TARTOPOILS
|
||||
bert.tartopoils@miam.miam
|
||||
"""
|
||||
|
||||
|
||||
class TestSanitizer(unittest2.TestCase):
|
||||
""" Test the html sanitizer that filters html to remove unwanted attributes """
|
||||
|
@ -223,22 +86,21 @@ class TestSanitizer(unittest2.TestCase):
|
|||
self.assertTrue('ha.ckers.org' not in html or 'http://ha.ckers.org/xss.css' in html, 'html_sanitize did not remove a malicious code in %s (%s)' % (content, html))
|
||||
|
||||
def test_html(self):
|
||||
sanitized_html = html_sanitize(HTML_SOURCE)
|
||||
sanitized_html = html_sanitize(test_mail_examples.MISC_HTML_SOURCE)
|
||||
for tag in ['<div', '<b', '<i', '<u', '<strike', '<li', '<blockquote', '<a href']:
|
||||
self.assertIn(tag, sanitized_html, 'html_sanitize stripped too much of original html')
|
||||
for attr in ['javascript']:
|
||||
self.assertNotIn(attr, sanitized_html, 'html_sanitize did not remove enough unwanted attributes')
|
||||
|
||||
emails =[("Charles <charles.bidule@truc.fr>", "Charles <charles.bidule@truc.fr>"),
|
||||
emails = [("Charles <charles.bidule@truc.fr>", "Charles <charles.bidule@truc.fr>"),
|
||||
("Dupuis <'tr/-: ${dupuis#$'@truc.baz.fr>", "Dupuis <'tr/-: ${dupuis#$'@truc.baz.fr>"),
|
||||
("Technical <service/technical+2@open.com>", "Technical <service/technical+2@open.com>"),
|
||||
("Div nico <div-nico@open.com>", "Div nico <div-nico@open.com>")]
|
||||
for email in emails:
|
||||
self.assertIn(email[1], html_sanitize(email[0]), 'html_sanitize stripped emails of original html')
|
||||
|
||||
|
||||
def test_edi_source(self):
|
||||
html = html_sanitize(EDI_LIKE_HTML_SOURCE)
|
||||
html = html_sanitize(test_mail_examples.EDI_LIKE_HTML_SOURCE)
|
||||
self.assertIn('div style="font-family: \'Lucica Grande\', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF;', html,
|
||||
'html_sanitize removed valid style attribute')
|
||||
self.assertIn('<span style="color: #222; margin-bottom: 5px; display: block; ">', html,
|
||||
|
@ -251,36 +113,122 @@ class TestSanitizer(unittest2.TestCase):
|
|||
class TestCleaner(unittest2.TestCase):
|
||||
""" Test the email cleaner function that filters the content of incoming emails """
|
||||
|
||||
def test_html_email_clean(self):
|
||||
# Test1: reply through gmail: quote in blockquote, signature --\nAdministrator
|
||||
new_html = html_email_clean(GMAIL_REPLY1_SAN)
|
||||
self.assertNotIn('blockquote', new_html, 'html_email_cleaner did not remove a blockquote')
|
||||
self.assertNotIn('I contact you about our meeting', new_html, 'html_email_cleaner wrongly removed the quoted content')
|
||||
self.assertNotIn('Administrator', new_html, 'html_email_cleaner did not erase the signature')
|
||||
self.assertIn('Ok for me', new_html, 'html_email_cleaner erased too much content')
|
||||
def test_00_basic_text(self):
|
||||
""" html_email_clean test for signatures """
|
||||
test_data = [
|
||||
(
|
||||
"""This is Sparta!\n--\nAdministrator\n+9988776655""",
|
||||
['This is Sparta!'],
|
||||
['Administrator', '9988776655']
|
||||
), (
|
||||
"""<p>--\nAdministrator</p>""",
|
||||
[],
|
||||
['--', 'Administrator']
|
||||
), (
|
||||
"""<p>This is Sparta!\n---\nAdministrator</p>""",
|
||||
['This is Sparta!'],
|
||||
['---', 'Administrator']
|
||||
), (
|
||||
"""<p>--<br>Administrator</p>""",
|
||||
[],
|
||||
[]
|
||||
), (
|
||||
"""<p>This is Sparta!<br/>--<br>Administrator</p>""",
|
||||
['This is Sparta!'],
|
||||
[]
|
||||
), (
|
||||
"""This is Sparta!\n>Ah bon ?\nCertes\n> Chouette !\nClair""",
|
||||
['This is Sparta!', 'Certes', 'Clair'],
|
||||
['Ah bon', 'Chouette']
|
||||
)
|
||||
]
|
||||
for test, in_lst, out_lst in test_data:
|
||||
new_html = html_email_clean(test, remove=True)
|
||||
for text in in_lst:
|
||||
self.assertIn(text, new_html, 'html_email_cleaner wrongly removed content')
|
||||
for text in out_lst:
|
||||
self.assertNotIn(text, new_html, 'html_email_cleaner did not remove unwanted content')
|
||||
|
||||
# Test2: reply through Tunderbird 16.0.2
|
||||
new_html = html_email_clean(THUNDERBIRD_16_REPLY1_SAN)
|
||||
self.assertNotIn('blockquote', new_html, 'html_email_cleaner did not remove a blockquote')
|
||||
self.assertNotIn('I contact you about our meeting', new_html, 'html_email_cleaner wrongly removed the quoted content')
|
||||
self.assertNotIn('Administrator', new_html, 'html_email_cleaner did not erase the signature')
|
||||
self.assertNotIn('Grosbedonn', new_html, 'html_email_cleaner did not erase the signature')
|
||||
self.assertIn('Ok for me', new_html, 'html_email_cleaner erased too much content')
|
||||
def test_10_email_text(self):
|
||||
""" html_email_clean test for text-based emails """
|
||||
new_html = html_email_clean(test_mail_examples.TEXT_1, remove=True)
|
||||
for ext in test_mail_examples.TEXT_1_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.TEXT_1_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
# Test3: text email
|
||||
new_html = html_email_clean(TEXT_MAIL1)
|
||||
self.assertIn('I contact you about our meeting', new_html, 'html_email_cleaner wrongly removed the quoted content')
|
||||
self.assertNotIn('Administrator', new_html, 'html_email_cleaner did not erase the signature')
|
||||
new_html = html_email_clean(test_mail_examples.TEXT_2, remove=True)
|
||||
for ext in test_mail_examples.TEXT_2_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.TEXT_2_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
# Test4: more complex text email
|
||||
new_html = html_email_clean(TEXT_TPL)
|
||||
self.assertNotIn('quote', new_html, 'html_email_cleaner did not remove correctly plaintext quotes')
|
||||
def test_20_email_html(self):
|
||||
new_html = html_email_clean(test_mail_examples.HTML_1, remove=True)
|
||||
for ext in test_mail_examples.HTML_1_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.HTML_1_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
# Test5: False boolean for text must return empty string
|
||||
new_html = html_email_clean(test_mail_examples.HTML_2, remove=True)
|
||||
for ext in test_mail_examples.HTML_2_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.HTML_2_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
# --- MAIL ORIGINAL --- -> can't parse this one currently, too much language-dependent
|
||||
# new_html = html_email_clean(test_mail_examples.HTML_3, remove=False)
|
||||
# for ext in test_mail_examples.HTML_3_IN:
|
||||
# self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
# for ext in test_mail_examples.HTML_3_OUT:
|
||||
# self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
def test_30_email_msoffice(self):
|
||||
new_html = html_email_clean(test_mail_examples.MSOFFICE_1, remove=True)
|
||||
for ext in test_mail_examples.MSOFFICE_1_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.MSOFFICE_1_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
new_html = html_email_clean(test_mail_examples.MSOFFICE_2, remove=True)
|
||||
for ext in test_mail_examples.MSOFFICE_2_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.MSOFFICE_2_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
new_html = html_email_clean(test_mail_examples.MSOFFICE_3, remove=True)
|
||||
for ext in test_mail_examples.MSOFFICE_3_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.MSOFFICE_3_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
def test_40_email_hotmail(self):
|
||||
new_html = html_email_clean(test_mail_examples.HOTMAIL_1, remove=True)
|
||||
for ext in test_mail_examples.HOTMAIL_1_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.HOTMAIL_1_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
def test_50_email_gmail(self):
|
||||
new_html = html_email_clean(test_mail_examples.GMAIL_1, remove=True)
|
||||
for ext in test_mail_examples.GMAIL_1_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.GMAIL_1_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
def test_60_email_thunderbird(self):
|
||||
new_html = html_email_clean(test_mail_examples.THUNDERBIRD_1, remove=True)
|
||||
for ext in test_mail_examples.THUNDERBIRD_1_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed not quoted content')
|
||||
for ext in test_mail_examples.THUNDERBIRD_1_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
def test_90_misc(self):
|
||||
# False boolean for text must return empty string
|
||||
new_html = html_email_clean(False)
|
||||
self.assertEqual(new_html, False, 'html_email_cleaner did change a False in an other value.')
|
||||
|
||||
# Test6: Message with xml and doctype tags don't crash
|
||||
# Message with xml and doctype tags don't crash
|
||||
new_html = html_email_clean(u'<?xml version="1.0" encoding="iso-8859-1"?>\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n <head>\n <title>404 - Not Found</title>\n </head>\n <body>\n <h1>404 - Not Found</h1>\n </body>\n</html>\n')
|
||||
self.assertNotIn('encoding', new_html, 'html_email_cleaner did not remove correctly encoding attributes')
|
||||
|
||||
|
|
|
@ -0,0 +1,639 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
MISC_HTML_SOURCE = """
|
||||
<font size="2" style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; ">test1</font>
|
||||
<div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; font-size: 12px; font-style: normal; ">
|
||||
<b>test2</b></div><div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; font-size: 12px; ">
|
||||
<i>test3</i></div><div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; font-size: 12px; ">
|
||||
<u>test4</u></div><div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; font-size: 12px; ">
|
||||
<strike>test5</strike></div><div style="color: rgb(31, 31, 31); font-family: monospace; font-variant: normal; line-height: normal; ">
|
||||
<font size="5">test6</font></div><div><ul><li><font color="#1f1f1f" face="monospace" size="2">test7</font></li><li>
|
||||
<font color="#1f1f1f" face="monospace" size="2">test8</font></li></ul><div><ol><li><font color="#1f1f1f" face="monospace" size="2">test9</font>
|
||||
</li><li><font color="#1f1f1f" face="monospace" size="2">test10</font></li></ol></div></div>
|
||||
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><div><font color="#1f1f1f" face="monospace" size="2">
|
||||
test11</font></div></div></div></blockquote><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
|
||||
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><font color="#1f1f1f" face="monospace" size="2">
|
||||
test12</font></div><div><font color="#1f1f1f" face="monospace" size="2"><br></font></div></blockquote></blockquote>
|
||||
<font color="#1f1f1f" face="monospace" size="2"><a href="http://google.com">google</a></font>
|
||||
<a href="javascript:alert('malicious code')">test link</a>
|
||||
"""
|
||||
|
||||
EDI_LIKE_HTML_SOURCE = """<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
|
||||
<p>Hello ${object.partner_id.name},</p>
|
||||
<p>A new invoice is available for you: </p>
|
||||
<p style="border-left: 1px solid #8e0000; margin-left: 30px;">
|
||||
<strong>REFERENCES</strong><br />
|
||||
Invoice number: <strong>${object.number}</strong><br />
|
||||
Invoice total: <strong>${object.amount_total} ${object.currency_id.name}</strong><br />
|
||||
Invoice date: ${object.date_invoice}<br />
|
||||
Order reference: ${object.origin}<br />
|
||||
Your contact: <a href="mailto:${object.user_id.email or ''}?subject=Invoice%20${object.number}">${object.user_id.name}</a>
|
||||
</p>
|
||||
<br/>
|
||||
<p>It is also possible to directly pay with Paypal:</p>
|
||||
<a style="margin-left: 120px;" href="${object.paypal_url}">
|
||||
<img class="oe_edi_paypal_button" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif"/>
|
||||
</a>
|
||||
<br/>
|
||||
<p>If you have any question, do not hesitate to contact us.</p>
|
||||
<p>Thank you for choosing ${object.company_id.name or 'us'}!</p>
|
||||
<br/>
|
||||
<br/>
|
||||
<div style="width: 375px; margin: 0px; padding: 0px; background-color: #8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; background-repeat: repeat no-repeat;">
|
||||
<h3 style="margin: 0px; padding: 2px 14px; font-size: 12px; color: #DDD;">
|
||||
<strong style="text-transform:uppercase;">${object.company_id.name}</strong></h3>
|
||||
</div>
|
||||
<div style="width: 347px; margin: 0px; padding: 5px 14px; line-height: 16px; background-color: #F2F2F2;">
|
||||
<span style="color: #222; margin-bottom: 5px; display: block; ">
|
||||
${object.company_id.street}<br/>
|
||||
${object.company_id.street2}<br/>
|
||||
${object.company_id.zip} ${object.company_id.city}<br/>
|
||||
${object.company_id.state_id and ('%s, ' % object.company_id.state_id.name) or ''} ${object.company_id.country_id.name or ''}<br/>
|
||||
</span>
|
||||
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">
|
||||
Phone: ${object.company_id.phone}
|
||||
</div>
|
||||
<div>
|
||||
Web : <a href="${object.company_id.website}">${object.company_id.website}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div></body></html>"""
|
||||
|
||||
TEXT_1 = """I contact you about our meeting tomorrow. Here is the schedule I propose:
|
||||
9 AM: brainstorming about our new amazing business app
|
||||
9.45 AM: summary
|
||||
10 AM: meeting with Ignasse to present our app
|
||||
Is everything ok for you ?
|
||||
--
|
||||
MySignature"""
|
||||
|
||||
TEXT_1_IN = ["""I contact you about our meeting tomorrow. Here is the schedule I propose:
|
||||
9 AM: brainstorming about our new amazing business app
|
||||
9.45 AM: summary
|
||||
10 AM: meeting with Ignasse to present our app
|
||||
Is everything ok for you ?"""]
|
||||
TEXT_1_OUT = ["""--
|
||||
MySignature"""]
|
||||
|
||||
TEXT_2 = """Salut Raoul!
|
||||
Le 28 oct. 2012 à 00:02, Raoul Grosbedon a écrit :
|
||||
|
||||
> I contact you about our meeting tomorrow. Here is the schedule I propose: (quote)
|
||||
|
||||
Of course. This seems viable.
|
||||
|
||||
> 2012/10/27 Bert Tartopoils :
|
||||
>> blahblahblah (quote)?
|
||||
>>
|
||||
>> blahblahblah (quote)
|
||||
>>
|
||||
>> Bert TARTOPOILS
|
||||
>> bert.tartopoils@miam.miam
|
||||
>>
|
||||
>
|
||||
>
|
||||
> --
|
||||
> RaoulSignature
|
||||
|
||||
Bert TARTOPOILS
|
||||
bert.tartopoils@miam.miam
|
||||
"""
|
||||
|
||||
TEXT_2_IN = ["Salut Raoul!", "Of course. This seems viable."]
|
||||
TEXT_2_OUT = ["I contact you about our meeting tomorrow. Here is the schedule I propose: (quote)",
|
||||
"""> 2012/10/27 Bert Tartopoils :
|
||||
>> blahblahblah (quote)?
|
||||
>>
|
||||
>> blahblahblah (quote)
|
||||
>>
|
||||
>> Bert TARTOPOILS
|
||||
>> bert.tartopoils@miam.miam
|
||||
>>
|
||||
>
|
||||
>
|
||||
> --
|
||||
> RaoulSignature"""]
|
||||
|
||||
HTML_1 = """<p>I contact you about our meeting for tomorrow. Here is the schedule I propose: (keep)
|
||||
9 AM: brainstorming about our new amazing business app
|
||||
9.45 AM: summary
|
||||
10 AM: meeting with Ignasse to present our app
|
||||
Is everything ok for you ?
|
||||
--
|
||||
MySignature</p>"""
|
||||
|
||||
HTML_1_IN = ["""I contact you about our meeting for tomorrow. Here is the schedule I propose: (keep)
|
||||
9 AM: brainstorming about our new amazing business app
|
||||
9.45 AM: summary
|
||||
10 AM: meeting with Ignasse to present our app
|
||||
Is everything ok for you ?"""]
|
||||
HTML_1_OUT = ["""--
|
||||
MySignature"""]
|
||||
|
||||
HTML_2 = """<div>
|
||||
<font><span>I contact you about our meeting for tomorrow. Here is the schedule I propose:</span></font>
|
||||
</div>
|
||||
<div>
|
||||
<ul>
|
||||
<li><span>9 AM: brainstorming about our new amazing business app</span></li>
|
||||
<li><span>9.45 AM: summary</span></li>
|
||||
<li><span>10 AM: meeting with Fabien to present our app</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<font><span>Is everything ok for you ?</span></font>
|
||||
</div>"""
|
||||
|
||||
HTML_2_IN = ["<font><span>I contact you about our meeting for tomorrow. Here is the schedule I propose:</span></font>",
|
||||
"<li><span>9 AM: brainstorming about our new amazing business app</span></li>",
|
||||
"<li><span>9.45 AM: summary</span></li>",
|
||||
"<li><span>10 AM: meeting with Fabien to present our app</span></li>",
|
||||
"<font><span>Is everything ok for you ?</span></font>"]
|
||||
HTML_2_OUT = []
|
||||
|
||||
HTML_3 = """<div><pre>This is an answer.
|
||||
|
||||
Regards,
|
||||
XXXXXX
|
||||
----- Mail original -----</pre>
|
||||
|
||||
|
||||
<pre>Hi,
|
||||
|
||||
|
||||
My CRM-related question.
|
||||
|
||||
Regards,
|
||||
|
||||
XXXX</pre></div>"""
|
||||
|
||||
HTML_3_IN = ["""<div><pre>This is an answer.
|
||||
|
||||
Regards,
|
||||
XXXXXX
|
||||
----- Mail original -----</pre>"""]
|
||||
HTML_3_OUT = ["Hi,", "My CRM-related question.",
|
||||
"Regards,"]
|
||||
|
||||
HTML_4 = """
|
||||
<div>
|
||||
<div>Hi Nicholas,</div>
|
||||
<br>
|
||||
<div>I'm free now. 00447710085916.</div>
|
||||
<br>
|
||||
<div>Regards,</div>
|
||||
<div>Nicholas</div>
|
||||
<br>
|
||||
<span id="OLK_SRC_BODY_SECTION">
|
||||
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
|
||||
<span style="font-weight:bold">From: </span>OpenERP Enterprise <<a href="mailto:sales@openerp.com">sales@openerp.com</a>><br><span style="font-weight:bold">Reply-To: </span><<a href="mailto:sales@openerp.com">sales@openerp.com</a>><br><span style="font-weight:bold">Date: </span>Wed, 17 Apr 2013 13:30:47 +0000<br><span style="font-weight:bold">To: </span>Microsoft Office User <<a href="mailto:n.saxlund@babydino.com">n.saxlund@babydino.com</a>><br><span style="font-weight:bold">Subject: </span>Re: your OpenERP.com registration<br>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<p>Hello Nicholas Saxlund, </p>
|
||||
<p>I noticed you recently registered to our OpenERP Online solution. </p>
|
||||
<p>You indicated that you wish to use OpenERP in your own company. We would like to know more about your your business needs and requirements, and see how we can help you. When would you be available to discuss your project ?
|
||||
</p>
|
||||
<p>Best regards, </p>
|
||||
<pre><a href="http://openerp.com">http://openerp.com</a>
|
||||
Belgium: +32.81.81.37.00
|
||||
U.S.: +1 (650) 307-6736
|
||||
India: +91 (79) 40 500 100
|
||||
</pre>
|
||||
</div>
|
||||
</span>
|
||||
</div>"""
|
||||
|
||||
HTML_5 = """<div><pre>Hi,
|
||||
|
||||
I have downloaded OpenERP installer 7.0 and successfully installed the postgresql server and the OpenERP.
|
||||
I created a database and started to install module by log in as administrator.
|
||||
However, I was not able to install any module due to "OpenERP Server Error" as shown in the attachement.
|
||||
Could you please let me know how could I fix this problem?
|
||||
|
||||
Regards,
|
||||
Goh Sin Yih
|
||||
|
||||
|
||||
________________________________
|
||||
From: OpenERP Enterprise <sales@openerp.com>
|
||||
To: sinyih_goh@yahoo.com
|
||||
Sent: Friday, February 8, 2013 12:46 AM
|
||||
Subject: Feedback From Your OpenERP Trial
|
||||
|
||||
|
||||
Hello Goh Sin Yih,
|
||||
Thank you for having tested OpenERP Online.
|
||||
I noticed you started a trial of OpenERP Online (gsy) but you did not decide to keep using it.
|
||||
So, I just wanted to get in touch with you to get your feedback. Can you tell me what kind of application you were you looking for and why you didn't decide to continue with OpenERP?
|
||||
Thanks in advance for providing your feedback,
|
||||
Do not hesitate to contact me if you have any questions,
|
||||
Thanks,
|
||||
</pre>"""
|
||||
|
||||
GMAIL_1 = """Hello,<div><br></div><div>Ok for me. I am replying directly in gmail, without signature.</div><div><br></div><div>Kind regards,</div><div><br></div><div>Demo.<br><br><div>On Thu, Nov 8, 2012 at 5:29 PM, <span><<a href="mailto:dummy@example.com">dummy@example.com</a>></span> wrote:<br><blockquote><div>I contact you about our meeting for tomorrow. Here is the schedule I propose:</div><div><ul><li>9 AM: brainstorming about our new amazing business app</span></li></li>
|
||||
<li>9.45 AM: summary</li><li>10 AM: meeting with Fabien to present our app</li></ul></div><div>Is everything ok for you ?</div>
|
||||
<div><p>--<br>Administrator</p></div>
|
||||
|
||||
<div><p>Log in our portal at: <a href="http://localhost:8069#action=login&db=mail_1&login=demo">http://localhost:8069#action=login&db=mail_1&login=demo</a></p></div>
|
||||
</blockquote></div><br></div>"""
|
||||
|
||||
GMAIL_1_IN = ['Ok for me. I am replying directly in gmail, without signature.']
|
||||
GMAIL_1_OUT = ['Administrator', 'Log in our portal at:']
|
||||
|
||||
THUNDERBIRD_1 = """<div>On 11/08/2012 05:29 PM,
|
||||
<a href="mailto:dummy@example.com">dummy@example.com</a> wrote:<br></div>
|
||||
<blockquote>
|
||||
<div>I contact you about our meeting for tomorrow. Here is the
|
||||
schedule I propose:</div>
|
||||
<div>
|
||||
<ul><li>9 AM: brainstorming about our new amazing business
|
||||
app</span></li></li>
|
||||
<li>9.45 AM: summary</li>
|
||||
<li>10 AM: meeting with Fabien to present our app</li>
|
||||
</ul></div>
|
||||
<div>Is everything ok for you ?</div>
|
||||
<div>
|
||||
<p>--<br>
|
||||
Administrator</p>
|
||||
</div>
|
||||
<div>
|
||||
<p>Log in our portal at:
|
||||
<a href="http://localhost:8069#action=login&db=mail_1&token=rHdWcUART5PhEnJRaXjH">http://localhost:8069#action=login&db=mail_1&token=rHdWcUART5PhEnJRaXjH</a></p>
|
||||
</div>
|
||||
</blockquote>
|
||||
Ok for me. I am replying directly below your mail, using Thunderbird, with a signature.<br><br>
|
||||
Did you receive my email about my new laptop, by the way ?<br><br>
|
||||
Raoul.<br><pre>--
|
||||
Raoul Grosbedonnée
|
||||
</pre>"""
|
||||
|
||||
THUNDERBIRD_1_IN = ['Ok for me. I am replying directly below your mail, using Thunderbird, with a signature.']
|
||||
THUNDERBIRD_1_OUT = ['I contact you about our meeting for tomorrow.', 'Raoul Grosbedon']
|
||||
|
||||
HOTMAIL_1 = """<div>
|
||||
<div dir="ltr"><br>
|
||||
I have an amazing company, i'm learning OpenERP, it is a small company yet, but plannig to grow up quickly.
|
||||
<br> <br>Kindest regards,<br>xxx<br>
|
||||
<div>
|
||||
<div id="SkyDrivePlaceholder">
|
||||
</div>
|
||||
<hr id="stopSpelling">
|
||||
Subject: Re: your OpenERP.com registration<br>From: xxx@xxx.xxx<br>To: xxx@xxx.xxx<br>Date: Wed, 27 Mar 2013 17:12:12 +0000
|
||||
<br><br>
|
||||
Hello xxx,
|
||||
<br>
|
||||
I noticed you recently created an OpenERP.com account to access OpenERP Apps.
|
||||
<br>
|
||||
You indicated that you wish to use OpenERP in your own company.
|
||||
We would like to know more about your your business needs and requirements, and see how
|
||||
we can help you. When would you be available to discuss your project ?<br>
|
||||
Best regards,<br>
|
||||
<pre>
|
||||
<a href="http://openerp.com" target="_blank">http://openerp.com</a>
|
||||
Belgium: +32.81.81.37.00
|
||||
U.S.: +1 (650) 307-6736
|
||||
India: +91 (79) 40 500 100
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>"""
|
||||
|
||||
HOTMAIL_1_IN = ["I have an amazing company, i'm learning OpenERP, it is a small company yet, but plannig to grow up quickly."]
|
||||
HOTMAIL_1_OUT = ["Subject: Re: your OpenERP.com registration", " I noticed you recently created an OpenERP.com account to access OpenERP Apps.",
|
||||
"We would like to know more about your your business needs and requirements", "Belgium: +32.81.81.37.00"]
|
||||
|
||||
MSOFFICE_1 = """
|
||||
<div>
|
||||
<div class="WordSection1">
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
Our requirements are simple. Just looking to replace some spreadsheets for tracking quotes and possibly using the timecard module.
|
||||
We are a company of 25 engineers providing product design services to clients.
|
||||
</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
I’ll install on a windows server and run a very limited trial to see how it works.
|
||||
If we adopt OpenERP we will probably move to Linux or look for a hosted SaaS option.
|
||||
</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
<br>
|
||||
I am also evaluating Adempiere and maybe others.
|
||||
</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span>
|
||||
</p>
|
||||
<p> </p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
I expect the trial will take 2-3 months as this is not a high priority for us.
|
||||
</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span>
|
||||
</p>
|
||||
<p> </p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
Alan
|
||||
</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span>
|
||||
</p>
|
||||
<p> </p>
|
||||
<p></p>
|
||||
<div>
|
||||
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
|
||||
<p class="MsoNormal">
|
||||
<b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
|
||||
From:
|
||||
</span></b>
|
||||
<span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
|
||||
OpenERP Enterprise [mailto:sales@openerp.com]
|
||||
<br><b>Sent:</b> Monday, 11 March, 2013 14:47<br><b>To:</b> Alan Widmer<br><b>Subject:</b> Re: your OpenERP.com registration
|
||||
</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="MsoNormal"></p>
|
||||
<p> </p>
|
||||
<p>Hello Alan Widmer, </p>
|
||||
<p></p>
|
||||
<p>I noticed you recently downloaded OpenERP. </p>
|
||||
<p></p>
|
||||
<p>
|
||||
Uou mentioned you wish to use OpenERP in your own company. Please let me more about your
|
||||
business needs and requirements? When will you be available to discuss about your project?
|
||||
</p>
|
||||
<p></p>
|
||||
<p>Thanks for your interest in OpenERP, </p>
|
||||
<p></p>
|
||||
<p>Feel free to contact me if you have any questions, </p>
|
||||
<p></p>
|
||||
<p>Looking forward to hear from you soon. </p>
|
||||
<p></p>
|
||||
<pre><p> </p></pre>
|
||||
<pre>--<p></p></pre>
|
||||
<pre>Nicolas<p></p></pre>
|
||||
<pre><a href="http://openerp.com">http://openerp.com</a><p></p></pre>
|
||||
<pre>Belgium: +32.81.81.37.00<p></p></pre>
|
||||
<pre>U.S.: +1 (650) 307-6736<p></p></pre>
|
||||
<pre>India: +91 (79) 40 500 100<p></p></pre>
|
||||
<pre> <p></p></pre>
|
||||
</div>
|
||||
</div>"""
|
||||
|
||||
MSOFFICE_1_IN = ['Our requirements are simple. Just looking to replace some spreadsheets for tracking quotes and possibly using the timecard module.']
|
||||
MSOFFICE_1_OUT = ['I noticed you recently downloaded OpenERP.', 'Uou mentioned you wish to use OpenERP in your own company.', 'Belgium: +32.81.81.37.00']
|
||||
|
||||
MSOFFICE_2 = """
|
||||
<div>
|
||||
<div class="WordSection1">
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Nicolas,</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal" style="text-indent:.5in">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">We are currently investigating the possibility of moving away from our current ERP </span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span></p><p> </p>
|
||||
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Thank You</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Matt</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span></p><p> </p>
|
||||
|
||||
<p></p>
|
||||
<div>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Raoul Petitpoil</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Poil Industries</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Information Technology</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">920 Super Street</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Sanchez, Pa 17046 USA</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Tel: xxx.xxx</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Fax: xxx.xxx</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Email: </span>
|
||||
<a href="mailto:raoul@petitpoil.com">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:blue">raoul@petitpoil.com</span>
|
||||
</a>
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span></p><p></p>
|
||||
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">www.poilindustries.com</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">www.superproducts.com</span></p><p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span></p><p> </p>
|
||||
|
||||
<p></p>
|
||||
<div>
|
||||
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
|
||||
<p class="MsoNormal">
|
||||
<b>
|
||||
<span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span>
|
||||
</b>
|
||||
<span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> OpenERP Enterprise [mailto:sales@openerp.com] <br><b>Sent:</b> Wednesday, April 17, 2013 1:31 PM<br><b>To:</b> Matt Witters<br><b>Subject:</b> Re: your OpenERP.com registration</span></p><p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="MsoNormal"></p>
|
||||
<p> </p>
|
||||
<p>Hello Raoul Petitpoil, </p>
|
||||
<p></p>
|
||||
<p>I noticed you recently downloaded OpenERP. </p>
|
||||
<p></p>
|
||||
<p>You indicated that you wish to use OpenERP in your own company. We would like to know more about your your business needs and requirements, and see how we can help you. When would you be available to discuss your project ? </p>
|
||||
<p></p>
|
||||
<p>Best regards, </p>
|
||||
<p></p>
|
||||
<pre> <p> </p>
|
||||
</pre>
|
||||
<pre>--<p></p></pre>
|
||||
<pre>Nicolas<p></p></pre>
|
||||
<pre> <a href="http://openerp.com">http://openerp.com</a>
|
||||
<p></p>
|
||||
</pre>
|
||||
<pre>Belgium: +32.81.81.37.00<p></p></pre>
|
||||
<pre>U.S.: +1 (650) 307-6736<p></p></pre>
|
||||
<pre>India: +91 (79) 40 500 100<p></p></pre>
|
||||
<pre> <p></p></pre>
|
||||
</div>
|
||||
</div>"""
|
||||
|
||||
MSOFFICE_2_IN = ['We are currently investigating the possibility']
|
||||
MSOFFICE_2_OUT = ['I noticed you recently downloaded OpenERP.', 'You indicated that you wish', 'Belgium: +32.81.81.37.00']
|
||||
|
||||
MSOFFICE_3 = """<div>
|
||||
<div class="WordSection1">
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Nicolas !</span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span></p><p> </p>
|
||||
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Yes I’d be glad to hear about your offers as we struggle every year with the planning/approving of LOA. </span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I saw your boss yesterday on tv and immediately wanted to test the interface. </span></p><p></p>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span></p><p> </p>
|
||||
|
||||
<p></p>
|
||||
<div>
|
||||
<p class="MsoNormal">
|
||||
<b>
|
||||
<span lang="NL-BE" style="font-size:10.0pt;font-family:"Trebuchet MS","sans-serif";color:gray">Bien à vous, </span></b></p><p></p><b>
|
||||
</b>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<b>
|
||||
<span lang="NL-BE" style="font-size:10.0pt;font-family:"Trebuchet MS","sans-serif";color:gray">Met vriendelijke groeten, </span></b></p><p></p><b>
|
||||
</b>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<b>
|
||||
<span lang="EN-GB" style="font-size:10.0pt;font-family:"Trebuchet MS","sans-serif";color:gray">Best regards,</span></b></p><p></p><b>
|
||||
</b>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<b>
|
||||
<span lang="EN-GB" style="font-size:10.0pt;font-family:"Trebuchet MS","sans-serif";color:gray">
|
||||
</span></b></p><p><b> </b></p><b>
|
||||
|
||||
</b>
|
||||
<p></p>
|
||||
<p class="MsoNormal">
|
||||
<b>
|
||||
<span lang="EN-GB" style="font-size:10.0pt;font-family:"Trebuchet MS","sans-serif";color:gray">R. Petitpoil <br></span>
|
||||
</b>
|
||||
<span lang="EN-GB" style="font-size:10.0pt;font-family:"Trebuchet MS","sans-serif";color:gray">Human Resource Manager<b><br><br>Field Resource s.a n.v. <i> <br></i></b>Hermesstraat 6A <br>1930 Zaventem</span>
|
||||
<span lang="EN-GB" style="font-size:8.0pt;font-family:"Tahoma","sans-serif";color:gray"><br></span>
|
||||
<b>
|
||||
<span lang="FR" style="font-size:10.0pt;font-family:Wingdings;color:#1F497D">(</span>
|
||||
</b>
|
||||
<b>
|
||||
<span lang="FR" style="font-size:9.0pt;font-family:Wingdings;color:#1F497D"> </span>
|
||||
</b>
|
||||
<b>
|
||||
<span lang="EN-GB" style="font-size:8.0pt;font-family:"Trebuchet MS","sans-serif";color:gray">xxx.xxx </span>
|
||||
</b>
|
||||
<b>
|
||||
<span lang="EN-GB" style="font-size:9.0pt;font-family:"Trebuchet MS","sans-serif";color:gray"><br></span>
|
||||
</b>
|
||||
<b>
|
||||
<span lang="FR" style="font-size:10.0pt;font-family:"Wingdings 2";color:#1F497D">7</span>
|
||||
</b>
|
||||
<b>
|
||||
<span lang="FR" style="font-size:9.0pt;font-family:"Wingdings 2";color:#1F497D"> </span>
|
||||
</b>
|
||||
<b>
|
||||
<span lang="EN-GB" style="font-size:8.0pt;font-family:"Trebuchet MS","sans-serif";color:gray">+32 2 727.05.91<br></span>
|
||||
</b>
|
||||
<span lang="EN-GB" style="font-size:24.0pt;font-family:Webdings;color:green">P</span>
|
||||
<span lang="EN-GB" style="font-size:8.0pt;font-family:"Tahoma","sans-serif";color:green"> <b> </b></span>
|
||||
<b>
|
||||
<span lang="EN-GB" style="font-size:9.0pt;font-family:"Trebuchet MS","sans-serif";color:green">Please consider the environment before printing this email.</span>
|
||||
</b>
|
||||
<span lang="EN-GB" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:navy"> </span>
|
||||
<span lang="EN-GB" style="font-family:"Calibri","sans-serif";color:navy">
|
||||
</span></p><p></p>
|
||||
|
||||
<p></p>
|
||||
</div>
|
||||
<p class="MsoNormal">
|
||||
<span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">
|
||||
</span></p><p> </p>
|
||||
|
||||
<p></p>
|
||||
<div>
|
||||
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
|
||||
<p class="MsoNormal">
|
||||
<b>
|
||||
<span lang="FR" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">De :</span>
|
||||
</b>
|
||||
<span lang="FR" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> OpenERP Enterprise [mailto:sales@openerp.com] <br><b>Envoyé :</b> jeudi 18 avril 2013 11:31<br><b>À :</b> Paul Richard<br><b>Objet :</b> Re: your OpenERP.com registration</span></p><p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="MsoNormal"></p>
|
||||
<p> </p>
|
||||
<p>Hello Raoul PETITPOIL, </p>
|
||||
<p></p>
|
||||
<p>I noticed you recently registered to our OpenERP Online solution. </p>
|
||||
<p></p>
|
||||
<p>You indicated that you wish to use OpenERP in your own company. We would like to know more about your your business needs and requirements, and see how we can help you. When would you be available to discuss your project ? </p>
|
||||
<p></p>
|
||||
<p>Best regards, </p>
|
||||
<p></p>
|
||||
<pre> <p> </p>
|
||||
</pre>
|
||||
<pre>--<p></p></pre>
|
||||
<pre>Nicolas<p></p></pre>
|
||||
<pre> <a href="http://openerp.com">http://openerp.com</a>
|
||||
<p></p>
|
||||
</pre>
|
||||
<pre>Belgium: +32.81.81.37.00<p></p></pre>
|
||||
<pre>U.S.: +1 (650) 307-6736<p></p></pre>
|
||||
<pre>India: +91 (79) 40 500 100<p></p></pre>
|
||||
<pre> <p></p></pre>
|
||||
</div>
|
||||
</div>"""
|
||||
|
||||
MSOFFICE_3_IN = ['I saw your boss yesterday']
|
||||
MSOFFICE_3_OUT = ['I noticed you recently downloaded OpenERP.', 'You indicated that you wish', 'Belgium: +32.81.81.37.00']
|
|
@ -2,7 +2,7 @@
|
|||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Business Applications
|
||||
# Copyright (C) 2012 OpenERP S.A. (<http://openerp.com>).
|
||||
# Copyright (C) 2012-2013 OpenERP S.A. (<http://openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
|
@ -44,27 +44,54 @@ tags_to_kill = ["script", "head", "meta", "title", "link", "style", "frame", "if
|
|||
tags_to_remove = ['html', 'body', 'font']
|
||||
|
||||
|
||||
def html_sanitize(src):
|
||||
def html_sanitize(src, silent=True):
|
||||
if not src:
|
||||
return src
|
||||
src = ustr(src, errors='replace')
|
||||
|
||||
logger = _logger.getChild('html_sanitize')
|
||||
|
||||
# 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)
|
||||
|
||||
# some corner cases make the parser crash (such as <SCRIPT/XSS SRC=\"http://ha.ckers.org/xss.js\"></SCRIPT> in test_mail)
|
||||
|
||||
kwargs = {
|
||||
'page_structure': True,
|
||||
'style': False, # do not remove style attributes
|
||||
'forms': True, # remove form tags
|
||||
}
|
||||
if etree.LXML_VERSION >= (2, 3, 1):
|
||||
# kill_tags attribute has been added in version 2.3.1
|
||||
kwargs.update({
|
||||
'kill_tags': tags_to_kill,
|
||||
'remove_tags': tags_to_remove,
|
||||
})
|
||||
else:
|
||||
kwargs['remove_tags'] = tags_to_kill + tags_to_remove
|
||||
|
||||
if etree.LXML_VERSION >= (3, 1, 0):
|
||||
kwargs.update({
|
||||
'safe_attrs_only': True,
|
||||
'safe_attrs': clean.defs.safe_attrs | set(['style']),
|
||||
})
|
||||
else:
|
||||
# lxml < 3.1.0 does not allow to specify safe_attrs. We keep all attributes in order to keep "style"
|
||||
kwargs['safe_attrs_only'] = False
|
||||
|
||||
try:
|
||||
cleaner = clean.Cleaner(page_structure=True, style=False, safe_attrs_only=False, forms=False, kill_tags=tags_to_kill, remove_tags=tags_to_remove)
|
||||
# some corner cases make the parser crash (such as <SCRIPT/XSS SRC=\"http://ha.ckers.org/xss.js\"></SCRIPT> in test_mail)
|
||||
cleaner = clean.Cleaner(**kwargs)
|
||||
cleaned = cleaner.clean_html(src)
|
||||
except TypeError, e:
|
||||
# lxml.clean version < 2.3.1 does not have a kill_tags attribute
|
||||
# to remove in 2014
|
||||
cleaner = clean.Cleaner(page_structure=True, style=False, safe_attrs_only=False, forms=False, remove_tags=tags_to_kill+tags_to_remove)
|
||||
cleaned = cleaner.clean_html(src)
|
||||
except:
|
||||
_logger.warning('html_sanitize failed to parse %s' % (src))
|
||||
cleaned = '<p>Impossible to parse</p>'
|
||||
except etree.ParserError:
|
||||
if not silent:
|
||||
raise
|
||||
logger.warning('ParserError obtained when sanitizing %r', src, exc_info=True)
|
||||
cleaned = '<p>ParserError when sanitizing</p>'
|
||||
except Exception:
|
||||
if not silent:
|
||||
raise
|
||||
logger.warning('unknown error obtained when sanitizing %r', src, exc_info=True)
|
||||
cleaned = '<p>Unknown error when sanitizing</p>'
|
||||
return cleaned
|
||||
|
||||
|
||||
|
@ -72,17 +99,36 @@ def html_sanitize(src):
|
|||
# HTML Cleaner
|
||||
#----------------------------------------------------------
|
||||
|
||||
def html_email_clean(html):
|
||||
""" html_email_clean: clean the html to display in the web client.
|
||||
- strip email quotes (remove blockquote nodes)
|
||||
- strip signatures (remove --\n{\n)Blahblah), by replacing <br> by
|
||||
\n to avoid ignoring signatures converted into html
|
||||
def html_email_clean(html, remove=False, shorten=False, max_length=300):
|
||||
""" html_email_clean: clean the html by doing the following steps:
|
||||
|
||||
:param string html: sanitized html; tags like html or head should not
|
||||
be present in the html string. This method therefore takes as input
|
||||
html code coming from a sanitized source, like fields.html.
|
||||
- try to strip email quotes, by removing blockquotes or having some client-
|
||||
specific heuristics
|
||||
- try to strip signatures
|
||||
- shorten the html to a maximum number of characters if requested
|
||||
|
||||
Some specific use case:
|
||||
|
||||
- MsOffice: ``div.style = border-top:solid;`` delimitates the beginning of
|
||||
a quote; detecting by finding WordSection1 of MsoNormal
|
||||
- Hotmail: ``hr.stopSpelling`` delimitates the beginning of a quote; detect
|
||||
Hotmail by funding ``SkyDrivePlaceholder``
|
||||
|
||||
:param string html: sanitized html; tags like html or head should not
|
||||
be present in the html string. This method therefore
|
||||
takes as input html code coming from a sanitized source,
|
||||
like fields.html.
|
||||
:param boolean remove: remove the html code that is unwanted; otherwise it
|
||||
is only flagged and tagged
|
||||
:param boolean shorten: shorten the html; every excessing content will
|
||||
be flagged as to remove
|
||||
:param int max_length: if shortening, maximum number of characters before
|
||||
shortening
|
||||
"""
|
||||
def _replace_matching_regex(regex, source, replace=''):
|
||||
""" Replace all matching expressions in source by replace """
|
||||
if not source:
|
||||
return source
|
||||
dest = ''
|
||||
idx = 0
|
||||
for item in re.finditer(regex, source):
|
||||
|
@ -91,62 +137,162 @@ def html_email_clean(html):
|
|||
dest += source[idx:]
|
||||
return dest
|
||||
|
||||
def _create_node(tag, text, tail=None, attrs={}):
|
||||
new_node = etree.Element(tag)
|
||||
new_node.text = text
|
||||
new_node.tail = tail
|
||||
for key, val in attrs.iteritems():
|
||||
new_node.set(key, val)
|
||||
return new_node
|
||||
|
||||
def _insert_new_node(node, index, new_node_tag, new_node_text, new_node_tail=None, new_node_attrs={}):
|
||||
new_node = _create_node(new_node_tag, new_node_text, new_node_tail, new_node_attrs)
|
||||
node.insert(index, new_node)
|
||||
return new_node
|
||||
|
||||
def _tag_matching_regex_in_text(regex, node, new_node_tag='span', new_node_attrs={}):
|
||||
text = node.text or ''
|
||||
if not re.search(regex, text):
|
||||
return
|
||||
|
||||
cur_node = node
|
||||
node.text = ''
|
||||
idx, iteration = 0, 0
|
||||
for item in re.finditer(regex, text):
|
||||
if iteration == 0:
|
||||
cur_node.text = text[idx:item.start()]
|
||||
else:
|
||||
_insert_new_node(node, (iteration - 1) * 2 + 1, new_node_tag, text[idx:item.start()])
|
||||
new_node = _insert_new_node(node, iteration * 2, new_node_tag, text[item.start():item.end()], None, new_node_attrs)
|
||||
|
||||
cur_node = new_node
|
||||
idx = item.end()
|
||||
iteration += 1
|
||||
new_node = _insert_new_node(node, -1, new_node_tag, text[idx:] + (cur_node.tail or ''), None, {})
|
||||
|
||||
if not html or not isinstance(html, basestring):
|
||||
return html
|
||||
|
||||
html = ustr(html)
|
||||
|
||||
# 0. remove encoding attribute inside tags
|
||||
# Pre processing
|
||||
# ------------------------------------------------------------
|
||||
# TDE TODO: --- MAIL ORIGINAL ---: '[\-]{4,}([^\-]*)[\-]{4,}'
|
||||
|
||||
# html: remove encoding attribute inside tags
|
||||
doctype = re.compile(r'(<[^>]*\s)(encoding=(["\'][^"\']*?["\']|[^\s\n\r>]+)(\s[^>]*|/)?>)', re.IGNORECASE | re.DOTALL)
|
||||
html = doctype.sub(r"", html)
|
||||
|
||||
# 1. <br[ /]> -> \n, because otherwise the tree is obfuscated
|
||||
br_tags = re.compile(r'([<]\s*[bB][rR]\s*\/?[>])')
|
||||
html = _replace_matching_regex(br_tags, html, '__BR_TAG__')
|
||||
# html: ClEditor seems to love using <div><br /><div> -> replace with <br />
|
||||
br_div_tags = re.compile(r'(<div>\s*<br\s*\/>\s*<\/div>)', re.IGNORECASE)
|
||||
html = _replace_matching_regex(br_div_tags, html, '<br />')
|
||||
|
||||
# 2. form a tree, handle (currently ?) pure-text by enclosing them in a pre
|
||||
# form a tree
|
||||
root = lxml.html.fromstring(html)
|
||||
if not len(root) and root.text is None and root.tail is None:
|
||||
html = '<div>%s</div>' % html
|
||||
root = lxml.html.fromstring(html)
|
||||
|
||||
# 2.5 remove quoted text in nodes
|
||||
quote_tags = re.compile(r'(\n(>)+[^\n\r]*)')
|
||||
# remove all tails and replace them by a span element, because managing text and tails can be a pain in the ass
|
||||
for node in root.getiterator():
|
||||
if not node.text:
|
||||
continue
|
||||
node.text = _replace_matching_regex(quote_tags, node.text)
|
||||
|
||||
# 3. remove blockquotes
|
||||
quotes = [el for el in root.getiterator(tag='blockquote')]
|
||||
for node in quotes:
|
||||
# copy the node tail into parent text
|
||||
if node.tail:
|
||||
parent = node.getparent()
|
||||
parent.text = parent.text or '' + node.tail
|
||||
# remove the node
|
||||
node.getparent().remove(node)
|
||||
tail_node = _create_node('span', node.tail)
|
||||
node.tail = None
|
||||
node.addnext(tail_node)
|
||||
|
||||
# 4. strip signatures
|
||||
signature = re.compile(r'([-]{2}[\s]?[\r\n]{1,2}[^\z]+)')
|
||||
for elem in root.getiterator():
|
||||
if elem.text:
|
||||
match = re.search(signature, elem.text)
|
||||
if match:
|
||||
elem.text = elem.text[:match.start()] + elem.text[match.end():]
|
||||
if elem.tail:
|
||||
match = re.search(signature, elem.tail)
|
||||
if match:
|
||||
elem.tail = elem.tail[:match.start()] + elem.tail[match.end():]
|
||||
# form node and tag text-based quotes and signature
|
||||
quote_tags = re.compile(r'(\n(>)+[^\n\r]*)')
|
||||
signature = re.compile(r'([-]{2,}[\s]?[\r\n]{1,2}[^.]+)')
|
||||
for node in root.getiterator():
|
||||
_tag_matching_regex_in_text(quote_tags, node, 'span', {'text_quote': '1'})
|
||||
_tag_matching_regex_in_text(signature, node, 'span', {'text_signature': '1'})
|
||||
|
||||
# 5. \n back to <br/>
|
||||
html = etree.tostring(root, pretty_print=True)
|
||||
html = html.replace('__BR_TAG__', '<br />')
|
||||
# Processing
|
||||
# ------------------------------------------------------------
|
||||
|
||||
# 6. Misc cleaning :
|
||||
# - ClEditor seems to love using <div><br /><div> -> replace with <br />
|
||||
br_div_tags = re.compile(r'(<div>\s*<br\s*\/>\s*<\/div>)')
|
||||
html = _replace_matching_regex(br_div_tags, html, '<br />')
|
||||
# tree: tag nodes
|
||||
# signature_begin = False # try dynamic signature recognition
|
||||
quote_begin = False
|
||||
overlength = False
|
||||
cur_char_nbr = 0
|
||||
for node in root.getiterator():
|
||||
# root: try to tag the client used to write the html
|
||||
if 'WordSection1' in node.get('class', '') or 'MsoNormal' in node.get('class', ''):
|
||||
root.set('msoffice', '1')
|
||||
if 'SkyDrivePlaceholder' in node.get('class', '') or 'SkyDrivePlaceholder' in node.get('id', ''):
|
||||
root.set('hotmail', '1')
|
||||
|
||||
# state of the parsing
|
||||
if quote_begin:
|
||||
node.set('in_quote', '1')
|
||||
node.set('tail_remove', '1')
|
||||
if overlength:
|
||||
node.set('in_overlength', '1')
|
||||
node.set('tail_remove', '1')
|
||||
|
||||
if root.get('msoffice') and node.tag == 'div' and 'border-top:solid' in node.get('style', ''):
|
||||
quote_begin = True
|
||||
node.set('in_quote', '1')
|
||||
node.set('tail_remove', '1')
|
||||
if root.get('hotmail') and node.tag == 'hr' and ('stopSpelling' in node.get('class', '') or 'stopSpelling' in node.get('id', '')):
|
||||
quote_begin = True
|
||||
node.set('in_quote', '1')
|
||||
node.set('tail_remove', '1')
|
||||
|
||||
# shorten:
|
||||
# 1/ truncate the text at the next available space
|
||||
# 2/ create a 'read more' node, next to current node
|
||||
# 3/ add the truncated text in a new node, next to 'read more' node
|
||||
if shorten and not overlength and cur_char_nbr + len(node.text or '') > max_length:
|
||||
overlength = True
|
||||
# truncate text
|
||||
innertext = node.text[0:(max_length - cur_char_nbr)]
|
||||
outertext = node.text[(max_length - cur_char_nbr):]
|
||||
stop_idx = outertext.find(' ')
|
||||
if stop_idx == -1:
|
||||
stop_idx = len(outertext)
|
||||
node.text = innertext + outertext[0:stop_idx]
|
||||
# create <span> ... <a href="#">read more</a></span> node
|
||||
read_more_node = _create_node('span', ' ... ', None, {'class': 'oe_mail_expand'})
|
||||
read_more_link_node = _create_node('a', 'read more', None, {'href': '#', 'class': 'oe_mail_expand'})
|
||||
read_more_node.append(read_more_link_node)
|
||||
# create outertext node
|
||||
new_node = _create_node('span', outertext[stop_idx:])
|
||||
# add newly created nodes in dom
|
||||
node.addnext(new_node)
|
||||
node.addnext(read_more_node)
|
||||
# tag node
|
||||
new_node.set('in_overlength', '1')
|
||||
|
||||
cur_char_nbr += len(node.text or '')
|
||||
|
||||
if node.tag == 'blockquote' or node.get('text_quote') or node.get('text_signature'):
|
||||
node.set('in_quote', '1')
|
||||
|
||||
# Post processing
|
||||
# ------------------------------------------------------------
|
||||
|
||||
to_remove = []
|
||||
for node in root.getiterator():
|
||||
if node.get('in_quote') or node.get('in_overlength'):
|
||||
# copy the node tail into parent text
|
||||
if node.tail and not node.get('tail_remove'):
|
||||
parent = node.getparent()
|
||||
parent.tail = node.tail + (parent.tail or '')
|
||||
to_remove.append(node)
|
||||
if node.get('tail_remove'):
|
||||
node.tail = ''
|
||||
for node in to_remove:
|
||||
if remove:
|
||||
node.getparent().remove(node)
|
||||
else:
|
||||
if not 'oe_mail_expand' in node.get('class', ''): # trick: read more link should be displayed even if it's in overlength
|
||||
node_class = node.get('class', '') + ' ' + 'oe_mail_cleaned'
|
||||
node.set('class', node_class)
|
||||
|
||||
# html: \n that were tail of elements have been encapsulated into <span> -> back to \n
|
||||
html = etree.tostring(root, pretty_print=False)
|
||||
linebreaks = re.compile(r'<span>([\s]*[\r\n]+[\s]*)<\/span>', re.IGNORECASE | re.DOTALL)
|
||||
html = _replace_matching_regex(linebreaks, html, '\n')
|
||||
|
||||
return html
|
||||
|
||||
|
|
|
@ -421,6 +421,7 @@ def get_iso_codes(lang):
|
|||
|
||||
ALL_LANGUAGES = {
|
||||
'ab_RU': u'Abkhazian / аҧсуа',
|
||||
'am_ET': u'Amharic / አምሃርኛ',
|
||||
'ar_SY': u'Arabic / الْعَرَبيّة',
|
||||
'bg_BG': u'Bulgarian / български език',
|
||||
'bs_BS': u'Bosnian / bosanski jezik',
|
||||
|
|
|
@ -101,7 +101,7 @@ def check(cr, workitem, ident, transition, signal):
|
|||
return False
|
||||
|
||||
uid = ident[0]
|
||||
if uid != openerp.SUPERUSER_ID and transition['groups_id']:
|
||||
if uid != openerp.SUPERUSER_ID and transition['group_id']:
|
||||
registry = openerp.registry(cr.dbname)
|
||||
user_groups = registry['res.users'].read(cr, uid, [uid], ['groups_id'])[0]['groups_id']
|
||||
if transition['group_id'] not in user_groups:
|
||||
|
|
Loading…
Reference in New Issue