[MERGE] Sync with trunk until revision 4957.

bzr revid: tde@openerp.com-20131002133820-8xomdumexexqp3pk
This commit is contained in:
Thibault Delavallée 2013-10-02 15:38:20 +02:00
commit 54933118a4
88 changed files with 17155 additions and 1225 deletions

View File

@ -37,7 +37,6 @@ There are two types of views:
.. note:: Since OpenERP 4.1, form views can also contain graphs.
Form views
----------
@ -388,6 +387,33 @@ The easiest method to compute real statistics on objects is:
You can get en example in all modules of the form: report\_.... Example: report_crm.
Controlling view actions
------------------------
When defining a view, the following attributes can be added on the
opening element of the view (i.e. ``<form>``, ``<tree>``...)
``create``
set to ``false`` to hide the link / button which allows to create a new
record.
``delete``
set to ``false`` to hide the link / button which allows to remove a
record.
``edit``
set to ``false`` to hide the link / button which allows to
edit a record.
These attributes are available on form, tree, kanban and gantt
views. They are normally automatically set from the access rights of
the users, but can be forced globally in the view definition. A
possible use case for these attributes is to define an inner tree view
for a one2many relation inside a form view, in which the user cannot
add or remove related records, but only edit the existing ones (which
are presumably created through another way, such as a wizard).
Calendar Views
--------------
@ -680,6 +706,7 @@ toolbar
its descendants will be displayed in the main tree. The value is ignored
for flat lists.
Grouping Elements
+++++++++++++++++
@ -1351,12 +1378,22 @@ When you add a one2many field in a form view, you do something like this :
If you want to specify the views to use, you can add a *context* attribute, and
specify a view id for each type of view supported, exactly like the action's
*view_id* attribute:
*view_id* attribute, except that the provided view id must always be
fully-qualified with the module name, even if it belongs to the same module:
.. code-block:: xml
<field name="order_line" colspan="4" nolabel="1"
context="{'form_view_ref' : 'module.view_id', 'tree_view_ref' : 'model.view_id'}"/>
context="{'form_view_ref': 'module.view_id',
'tree_view_ref': 'module.view_id'}"/>
.. note::
You *have to* put the module name in the view_id, because this
is evaluated when the view is displayed, and not when the XML file
is parsed, so the module name information is not available. Failing
to do so will result in the default view being selected (see
below).
If you don't specify the views, OpenERP will choose one in this order :

View File

@ -6,6 +6,8 @@ Changelog
`trunk`
-------
- Added support of custom group_by format and display format when using group_by
on a datetime field, using datetime_format context key
- Improved ``html_email_clean`` in tools: better quote and signature finding,
added shortening.
- Cleaned and slightly refactored ``ir.actions.server``. The ``loop``, ``sms``

View File

@ -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-08-28 04:52+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:17+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:52+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:17+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:52+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:17+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:53+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:17+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:53+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:18+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

File diff suppressed because it is too large Load Diff

View File

@ -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-08-28 04:53+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:18+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:54+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:18+0000\n"
"X-Generator: Launchpad (build 16771)\n"
"X-Poedit-Language: Czech\n"
#. module: base
@ -4544,7 +4544,7 @@ msgstr "Nauru"
#: code:addons/base/res/res_company.py:166
#, python-format
msgid "Reg"
msgstr ""
msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_property

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2012-08-20 15:44+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"PO-Revision-Date: 2013-09-26 21:06+0000\n"
"Last-Translator: Morten Schou <ms@msteknik.dk>\n"
"Language-Team: Danish <da@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-08-28 04:54+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-27 05:48+0000\n"
"X-Generator: Launchpad (build 16774)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -64,12 +64,12 @@ msgstr "Vis arkitektur"
#. module: base
#: model:ir.module.module,summary:base.module_sale_stock
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
msgstr ""
msgstr "Tilbud, Salgs ordre, Følgeseddel og Faktura kontrol"
#. module: base
#: selection:ir.sequence,implementation:0
msgid "No gap"
msgstr ""
msgstr "Ingen forskel"
#. module: base
#: selection:base.language.install,lang:0
@ -98,7 +98,7 @@ msgstr "Touchscreen-grænseflade for butikker"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
msgid "Indian Payroll"
msgstr ""
msgstr "Indisk Løn"
#. module: base
#: help:ir.cron,model:0
@ -166,6 +166,9 @@ msgid ""
"specified as a Python expression defining a list of triplets. For example: "
"[('color','=','red')]"
msgstr ""
"Valgfrit domæne til at begrænse mulige værdier for forholdsfelter, angivet "
"som et Python-udtryk definerer en liste af trillinger. For eksempel: "
"[('color', '=', 'red')]"
#. module: base
#: field:res.partner,ref:0
@ -175,7 +178,7 @@ msgstr "Reference"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
msgid "Belgium - Structured Communication"
msgstr ""
msgstr "Belgisk struktureret kommunikation"
#. module: base
#: field:ir.actions.act_window,target:0
@ -249,12 +252,12 @@ msgstr "Swaziland"
#: code:addons/orm.py:4485
#, python-format
msgid "created."
msgstr ""
msgstr "Oprettet"
#. module: base
#: field:ir.actions.report.xml,report_xsl:0
msgid "XSL Path"
msgstr ""
msgstr "XLS sti"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_tr
@ -280,7 +283,7 @@ msgstr ""
#. module: base
#: model:res.groups,name:base.group_multi_currency
msgid "Multi Currencies"
msgstr ""
msgstr "Flere valutaer"
#. module: base
#: model:ir.module.module,description:base.module_l10n_cl
@ -296,7 +299,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale
msgid "Sales Management"
msgstr ""
msgstr "Salgs administration"
#. module: base
#: help:res.partner,user_id:0
@ -304,6 +307,7 @@ msgid ""
"The internal user that is in charge of communicating with this contact if "
"any."
msgstr ""
"Den interne bruger som er ansvarlig for kommunikationen med denne kontakt"
#. module: base
#: view:res.partner:0
@ -318,7 +322,7 @@ msgstr "Antal moduler"
#. module: base
#: help:multi_company.default,company_dest_id:0
msgid "Company to store the current record"
msgstr ""
msgstr "Firma som denne post skal gemmes i"
#. module: base
#: field:res.partner.bank.type.field,size:0
@ -346,7 +350,7 @@ msgstr ""
#. module: base
#: sql_constraint:res.lang:0
msgid "The name of the language must be unique !"
msgstr ""
msgstr "Sprogets navn skal være unik"
#. module: base
#: selection:res.request,state:0
@ -374,7 +378,7 @@ msgstr ""
#. module: base
#: model:ir.module.category,name:base.module_category_customer_relationship_management
msgid "Customer Relationship Management"
msgstr ""
msgstr "Kundestyring (CRM)"
#. module: base
#: model:ir.module.module,description:base.module_delivery
@ -429,12 +433,12 @@ msgstr ""
#: view:ir.attachment:0
#: field:ir.attachment,create_uid:0
msgid "Owner"
msgstr ""
msgstr "Ejer"
#. module: base
#: view:ir.actions.act_window:0
msgid "Source Object"
msgstr ""
msgstr "Kilde objekt"
#. module: base
#: model:res.partner.bank.type,format_layout:base.bank_normal
@ -472,6 +476,8 @@ msgid ""
"One of the records you are trying to modify has already been deleted "
"(Document type: %s)."
msgstr ""
"En af de poster du prøver at ændre, er allerede blevet slettet (dokument "
"type:%s)"
#. module: base
#: help:ir.actions.act_window,views:0
@ -485,12 +491,12 @@ msgstr ""
#. module: base
#: field:ir.model.relation,name:0
msgid "Relation Name"
msgstr ""
msgstr "Relationens navn"
#. module: base
#: view:ir.rule:0
msgid "Create Access Right"
msgstr ""
msgstr "Opret adgangs rettighed"
#. module: base
#: model:res.country,name:base.tv
@ -538,7 +544,7 @@ msgstr "Fransk Guyana"
#. module: base
#: model:ir.module.module,summary:base.module_hr
msgid "Jobs, Departments, Employees Details"
msgstr ""
msgstr "Jobs, Afdelinger, Ansattes detaljer"
#. module: base
#: model:ir.module.module,description:base.module_analytic
@ -558,7 +564,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_idea
msgid "Ideas"
msgstr ""
msgstr "Ideer"
#. module: base
#: model:ir.module.module,description:base.module_event
@ -581,7 +587,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Bosnian / bosanski jezik"
msgstr ""
msgstr "Bosnisk"
#. module: base
#: help:ir.actions.report.xml,attachment_use:0
@ -619,12 +625,12 @@ msgstr "Spansk (VE) / Español (VE)"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice
msgid "Invoice on Timesheets"
msgstr ""
msgstr "Faktura fra timesedler"
#. module: base
#: view:base.module.upgrade:0
msgid "Your system will be updated."
msgstr ""
msgstr "Systemet bliver opdateret"
#. module: base
#: field:ir.actions.todo,note:0
@ -645,7 +651,7 @@ msgstr "Colombia"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_mister
msgid "Mister"
msgstr ""
msgstr "Hr."
#. module: base
#: help:res.country,code:0
@ -653,26 +659,28 @@ msgid ""
"The ISO country code in two chars.\n"
"You can use this field for quick search."
msgstr ""
"ISO landekoden i 2 tegn.\n"
"Kan bruges til hurtig søgning"
#. module: base
#: model:res.country,name:base.pw
msgid "Palau"
msgstr ""
msgstr "Palau"
#. module: base
#: view:res.partner:0
msgid "Sales & Purchases"
msgstr ""
msgstr "Salg og Indkøb"
#. module: base
#: view:ir.translation:0
msgid "Untranslated"
msgstr ""
msgstr "ikke oversat"
#. module: base
#: view:ir.mail_server:0
msgid "Outgoing Mail Server"
msgstr ""
msgstr "server til udgående post"
#. module: base
#: help:ir.actions.act_window,context:0
@ -705,12 +713,12 @@ msgstr ""
#. module: base
#: sql_constraint:ir.config_parameter:0
msgid "Key must be unique."
msgstr ""
msgstr "Nøglen skal være unik"
#. module: base
#: model:ir.module.module,shortdesc:base.module_plugin_outlook
msgid "Outlook Plug-In"
msgstr ""
msgstr "Outlook Plug-In"
#. module: base
#: model:ir.module.module,description:base.module_account
@ -748,7 +756,7 @@ msgstr ""
#: view:ir.model:0
#: field:ir.model,name:0
msgid "Model Description"
msgstr ""
msgstr "Model beskrivelse"
#. module: base
#: model:ir.module.module,description:base.module_marketing
@ -795,7 +803,7 @@ msgstr ""
#. module: base
#: help:ir.cron,nextcall:0
msgid "Next planned execution date for this job."
msgstr ""
msgstr "Næste planlagte kørsel for dette job"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@ -810,7 +818,7 @@ msgstr "Eritrea"
#. module: base
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr ""
msgstr "Firmanavnet skal være unik!"
#. module: base
#: model:ir.ui.menu,name:base.menu_base_action_rule_admin
@ -846,7 +854,7 @@ msgstr ""
#. module: base
#: view:ir.mail_server:0
msgid "Security and Authentication"
msgstr ""
msgstr "Sikkerhed og godkendelse"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_calendar
@ -862,7 +870,7 @@ msgstr "Svensk / Swedish"
#: field:base.language.export,name:0
#: field:ir.attachment,datas_fname:0
msgid "File Name"
msgstr ""
msgstr "Filnavn"
#. module: base
#: model:res.country,name:base.rs
@ -883,7 +891,7 @@ msgstr ""
#: field:base.language.import,overwrite:0
#: field:base.language.install,overwrite:0
msgid "Overwrite Existing Terms"
msgstr ""
msgstr "Overskriv eksisterende betingelser"
#. module: base
#: model:ir.module.module,description:base.module_hr_holidays
@ -938,6 +946,7 @@ msgstr "Papua Ny Guinea"
#: help:ir.actions.report.xml,report_type:0
msgid "Report Type, e.g. pdf, html, raw, sxw, odt, html2html, mako2html, ..."
msgstr ""
"Rapport Type, eks. pdf, html, raw, sxw, odt, html2html, mako2html, ..."
#. module: base
#: model:ir.module.module,shortdesc:base.module_document_webdav
@ -947,7 +956,7 @@ msgstr ""
#. module: base
#: view:res.users:0
msgid "Email Preferences"
msgstr ""
msgstr "Email indstillinger"
#. module: base
#: code:addons/base/ir/ir_fields.py:195
@ -990,7 +999,7 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_base_module_upgrade
msgid "Module Upgrade"
msgstr ""
msgstr "Opgrader modul"
#. module: base
#: selection:base.language.install,lang:0
@ -1010,7 +1019,7 @@ msgstr "Oman"
#. module: base
#: model:ir.module.module,shortdesc:base.module_mrp
msgid "MRP"
msgstr ""
msgstr "MRP"
#. module: base
#: model:ir.module.module,description:base.module_hr_attendance
@ -1032,7 +1041,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_membership
msgid "Membership Management"
msgstr ""
msgstr "Medlems håndtering"
#. module: base
#: selection:ir.module.module,license:0
@ -1048,7 +1057,7 @@ msgstr ""
#: model:ir.actions.act_window,name:base.act_menu_create
#: view:wizard.ir.model.menu.create:0
msgid "Create Menu"
msgstr ""
msgstr "Opret Menu"
#. module: base
#: model:res.country,name:base.in
@ -1064,12 +1073,12 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_google_base_account
msgid "Google Users"
msgstr ""
msgstr "Google brugere"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fleet
msgid "Fleet Management"
msgstr ""
msgstr "Bilpark håndtering"
#. module: base
#: help:ir.server.object.lines,value:0
@ -1140,6 +1149,8 @@ msgstr ""
msgid ""
"Users added to this group are automatically added in the following groups."
msgstr ""
"Brugere tilføjet denne gruppe, bliver automatisk tilføjet i de følgende "
"grupper."
#. module: base
#: code:addons/base/ir/ir_model.py:732
@ -1151,12 +1162,12 @@ msgstr ""
#. module: base
#: view:res.users:0
msgid "Change the user password."
msgstr ""
msgstr "Skift brugerens adgangskode."
#. module: base
#: view:res.lang:0
msgid "%B - Full month name."
msgstr ""
msgstr "%B - Fulde navn på måned."
#. module: base
#: field:ir.actions.todo,type:0
@ -1171,12 +1182,12 @@ msgstr ""
#: view:ir.values:0
#: field:ir.values,key:0
msgid "Type"
msgstr ""
msgstr "Type"
#. module: base
#: field:ir.mail_server,smtp_user:0
msgid "Username"
msgstr ""
msgstr "Brugernavn"
#. module: base
#: model:ir.module.module,description:base.module_l10n_br
@ -1232,6 +1243,8 @@ msgid ""
"Language with code \"%s\" is not defined in your system !\n"
"Define it through the Administration menu."
msgstr ""
"Sproget med koden \"%s\" er ikke indlæst i systemet !\n"
"Indlæs gennem Administrations menuen."
#. module: base
#: model:res.country,name:base.gu
@ -1241,17 +1254,17 @@ msgstr "Guam (USA)"
#. module: base
#: sql_constraint:res.country:0
msgid "The name of the country must be unique !"
msgstr ""
msgstr "Landets navn skal være unikt!"
#. module: base
#: field:ir.module.module,installed_version:0
msgid "Latest Version"
msgstr ""
msgstr "Seneste version"
#. module: base
#: view:ir.rule:0
msgid "Delete Access Right"
msgstr ""
msgstr "Slet adgangs rettighed"
#. module: base
#: code:addons/base/ir/ir_mail_server.py:214
@ -1268,7 +1281,7 @@ msgstr "Attrap"
#. module: base
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
msgstr "Ugyldig XML for View Architecture!"
#. module: base
#: model:res.country,name:base.ky
@ -1294,32 +1307,32 @@ msgstr ""
#: code:addons/orm.py:4920
#, python-format
msgid "Record #%d of %s not found, cannot copy!"
msgstr ""
msgstr "Post #%d of %s ikke fundet, kan ikke kopiere!"
#. module: base
#: field:ir.module.module,contributors:0
msgid "Contributors"
msgstr ""
msgstr "Bidragsydere"
#. module: base
#: field:ir.rule,perm_unlink:0
msgid "Apply for Delete"
msgstr ""
msgstr "Godkend for slet"
#. module: base
#: selection:ir.property,type:0
msgid "Char"
msgstr ""
msgstr "Tegn"
#. module: base
#: field:ir.module.category,visible:0
msgid "Visible"
msgstr ""
msgstr "Synlig"
#. module: base
#: model:ir.actions.client,name:base.action_client_base_menu
msgid "Open Settings Menu"
msgstr ""
msgstr "Åben konfigurations menu"
#. module: base
#: selection:base.language.install,lang:0
@ -1334,7 +1347,7 @@ msgstr "Uganda"
#. module: base
#: field:ir.model.access,perm_unlink:0
msgid "Delete Access"
msgstr ""
msgstr "Slet adgang"
#. module: base
#: model:res.country,name:base.ne
@ -1364,12 +1377,12 @@ msgstr ""
#. module: base
#: field:ir.mail_server,smtp_port:0
msgid "SMTP Port"
msgstr ""
msgstr "SMTP port"
#. module: base
#: help:res.users,login:0
msgid "Used to log into the system"
msgstr ""
msgstr "Bruges til at logge ind i systemet"
#. module: base
#: view:base.language.export:0
@ -1392,12 +1405,12 @@ msgstr ""
#: code:addons/base/module/wizard/base_language_install.py:53
#, python-format
msgid "Language Pack"
msgstr ""
msgstr "Sprog pakke"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_tests
msgid "Tests"
msgstr ""
msgstr "Test"
#. module: base
#: field:ir.actions.report.xml,attachment:0
@ -1460,25 +1473,25 @@ msgstr ""
#. module: base
#: field:ir.module.category,parent_id:0
msgid "Parent Application"
msgstr ""
msgstr "Overordnet Applikation"
#. module: base
#: model:ir.actions.act_window,name:base.ir_action_wizard
#: view:ir.actions.wizard:0
#: model:ir.ui.menu,name:base.menu_ir_action_wizard
msgid "Wizards"
msgstr ""
msgstr "Wizards"
#. module: base
#: code:addons/base/res/res_users.py:131
#, python-format
msgid "Operation Canceled"
msgstr ""
msgstr "Funktion afbrudt"
#. module: base
#: model:ir.module.module,shortdesc:base.module_document
msgid "Document Management System"
msgstr ""
msgstr "Dokument styring system"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_claim
@ -1521,7 +1534,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 "Indkøb"
#. module: base
#: model:res.country,name:base.md
@ -1584,11 +1597,13 @@ msgid ""
"If specified, this action will be opened at logon for this user, in addition "
"to the standard menu."
msgstr ""
"Hvis specificeret, vil denne funktion blive udført, når brugeren logger på, "
"sammen med standard menuen."
#. module: base
#: model:res.country,name:base.mf
msgid "Saint Martin (French part)"
msgstr ""
msgstr "Sankt Martin (Fransk del)"
#. module: base
#: model:ir.model,name:base.model_ir_exports
@ -1613,28 +1628,28 @@ msgstr ""
#: code:addons/base/module/wizard/base_update_translations.py:39
#, python-format
msgid "No language with code \"%s\" exists"
msgstr ""
msgstr "Der eksisterer ikke noget sprog med denne kode \"%s\""
#. module: base
#: model:ir.module.category,name:base.module_category_social_network
#: model:ir.module.module,shortdesc:base.module_mail
msgid "Social Network"
msgstr ""
msgstr "Socialt netværk"
#. module: base
#: view:res.lang:0
msgid "%Y - Year with century."
msgstr ""
msgstr "%Y - År med århundrede."
#. module: base
#: view:res.company:0
msgid "Report Footer Configuration"
msgstr ""
msgstr "Konfiguration af rapport foden"
#. module: base
#: field:ir.translation,comments:0
msgid "Translation comments"
msgstr ""
msgstr "Kommenterer til oversættelsen"
#. module: base
#: model:ir.module.module,description:base.module_lunch
@ -1664,7 +1679,7 @@ msgstr ""
#. module: base
#: view:wizard.ir.model.menu.create:0
msgid "Create _Menu"
msgstr ""
msgstr "Opret menu"
#. module: base
#: help:ir.actions.server,trigger_obj_id:0
@ -1691,6 +1706,8 @@ msgid ""
"Helps you manage your purchase-related processes such as requests for "
"quotations, supplier invoices, etc..."
msgstr ""
"Hjælper dig med at styre dine indkøbsrelaterede processer som anmodninger om "
"tilbud, leverandørfakturaer, osv. .."
#. module: base
#: help:res.partner,website:0
@ -1757,7 +1774,7 @@ msgstr "Værktøj"
#. module: base
#: selection:ir.property,type:0
msgid "Float"
msgstr ""
msgstr "Kommatal"
#. module: base
#: help:ir.actions.todo,type:0
@ -1771,12 +1788,12 @@ msgstr ""
#. module: base
#: field:res.partner,image_small:0
msgid "Small-sized image"
msgstr ""
msgstr "Lille billede"
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock
msgid "Warehouse Management"
msgstr ""
msgstr "Lager administration"
#. module: base
#: model:ir.model,name:base.model_res_request_link
@ -1792,7 +1809,7 @@ msgstr ""
#: model:ir.actions.act_window,name:base.action_wizard_lang_export
#: model:ir.ui.menu,name:base.menu_wizard_lang_export
msgid "Export Translation"
msgstr ""
msgstr "Exporter oversættelse"
#. module: base
#: model:ir.actions.act_window,name:base.action_server_action
@ -1816,12 +1833,12 @@ msgstr "Øst Timor"
#: view:ir.module.module:0
#, python-format
msgid "Install"
msgstr ""
msgstr "Installer"
#. module: base
#: field:res.currency,accuracy:0
msgid "Computational Accuracy"
msgstr ""
msgstr "Beregnet nøjagtighed"
#. module: base
#: model:ir.module.module,description:base.module_l10n_at
@ -1856,7 +1873,7 @@ msgstr ""
#. module: base
#: view:ir.sequence:0
msgid "Day: %(day)s"
msgstr ""
msgstr "Dag:%(day)s"
#. module: base
#: model:ir.module.category,description:base.module_category_point_of_sale
@ -1865,6 +1882,8 @@ msgid ""
"simplified payment mode encoding, automatic picking lists generation and "
"more."
msgstr ""
"Hjælper dig med at få det bedste ud af dit detailhandelssystem med hurtigt "
"salg, enkel betaling, automatisk plukliste m.m."
#. module: base
#: code:addons/base/ir/ir_fields.py:164
@ -1885,7 +1904,7 @@ msgstr ""
#. module: base
#: selection:ir.translation,state:0
msgid "Translation in Progress"
msgstr ""
msgstr "Oversættelse i gang"
#. module: base
#: model:ir.model,name:base.model_ir_rule
@ -1900,13 +1919,13 @@ msgstr "Dage"
#. module: base
#: model:ir.module.module,summary:base.module_fleet
msgid "Vehicle, leasing, insurances, costs"
msgstr ""
msgstr "Køretøj,leasing,forsikring,omkostning"
#. module: base
#: view:ir.model.access:0
#: field:ir.model.access,perm_read:0
msgid "Read Access"
msgstr ""
msgstr "Læse adgang"
#. module: base
#: help:ir.attachment,res_id:0
@ -1976,7 +1995,7 @@ msgstr ""
#: view:res.partner:0
#: field:res.partner.category,partner_ids:0
msgid "Partners"
msgstr ""
msgstr "Partnere"
#. module: base
#: field:res.partner.category,parent_left:0
@ -1992,12 +2011,12 @@ msgstr ""
#: code:addons/base/ir/ir_model.py:320
#, python-format
msgid "This column contains module data and cannot be removed!"
msgstr ""
msgstr "Kolonnen indeholder modul data som ikke kan slettes"
#. module: base
#: field:res.partner.bank,footer:0
msgid "Display on Reports"
msgstr ""
msgstr "Vis på rapporter"
#. module: base
#: model:ir.module.module,description:base.module_project_timesheet
@ -2123,7 +2142,7 @@ msgstr ""
#. module: base
#: view:base.language.export:0
msgid "The next step depends on the file format:"
msgstr ""
msgstr "Næste skridt afhænger af fil formatet:"
#. module: base
#: view:res.lang:0
@ -2155,7 +2174,7 @@ msgstr ""
#. module: base
#: view:ir.actions.server:0
msgid "Create / Write / Copy"
msgstr ""
msgstr "Opret/ Gem/ Kopier"
#. module: base
#: view:ir.sequence:0
@ -2173,6 +2192,8 @@ msgid ""
"Display this bank account on the footer of printed documents like invoices "
"and sales orders."
msgstr ""
"Vis denne bankkonto i foden af udskrevne dokumenter, på fakturaer og salgs "
"ordre."
#. module: base
#: selection:base.language.install,lang:0
@ -2250,7 +2271,7 @@ msgstr ""
#. module: base
#: field:base.module.update,update:0
msgid "Number of modules updated"
msgstr ""
msgstr "Antallet af opdaterede moduler"
#. module: base
#: field:ir.cron,function:0
@ -2472,7 +2493,7 @@ msgstr ""
#. module: base
#: sql_constraint:ir.ui.view_sc:0
msgid "Shortcut for this menu already exists!"
msgstr ""
msgstr "Genvej til denne menu, eksisterer allerede!"
#. module: base
#: view:ir.rule:0
@ -9073,7 +9094,7 @@ msgstr ""
#. module: base
#: model:ir.module.category,name:base.module_category_warehouse_management
msgid "Warehouse"
msgstr ""
msgstr "Lagerstyrning"
#. module: base
#: field:ir.exports,resource:0
@ -10619,7 +10640,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_stock
msgid "Sales and Warehouse Management"
msgstr ""
msgstr "Salg og lager opsætning"
#. module: base
#: model:ir.module.module,description:base.module_hr_recruitment

View File

@ -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-08-28 04:55+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:20+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:55+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:20+0000\n"
"X-Generator: Launchpad (build 16771)\n"
"X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n"

View File

@ -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-08-28 05:02+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:26+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -354,6 +354,8 @@ msgid ""
"Database ID of record to open in form view, when ``view_mode`` is set to "
"'form' only"
msgstr ""
"Database ID of record to open in form view, when ``view_mode`` is set to "
"'form' only"
#. module: base
#: help:ir.values,key2:0
@ -399,6 +401,14 @@ msgid ""
"document and Wiki based Hidden.\n"
" "
msgstr ""
"\n"
"Installer for knowledge-based Hidden.\n"
"=====================================\n"
"\n"
"Makes the Knowledge Application Configuration available from where you can "
"install\n"
"document and Wiki based Hidden.\n"
" "
#. module: base
#: model:ir.module.category,name:base.module_category_customer_relationship_management
@ -417,6 +427,14 @@ msgid ""
"invoices from picking, OpenERP is able to add and compute the shipping "
"line.\n"
msgstr ""
"\n"
"Allows you to add delivery methods in sale orders and picking.\n"
"==============================================================\n"
"\n"
"You can define your own carrier and delivery grids for prices. When creating "
"\n"
"invoices from picking, OpenERP is able to add and compute the shipping "
"line.\n"
#. module: base
#: code:addons/base/ir/ir_filters.py:80
@ -595,6 +613,16 @@ msgid ""
"that have no counterpart in the general financial accounts.\n"
" "
msgstr ""
"\n"
"Module for defining analytic accounting object.\n"
"===============================================\n"
"\n"
"In OpenERP, analytic accounts are linked to general accounts but are "
"treated\n"
"totally independently. So, you can enter various different analytic "
"operations\n"
"that have no counterpart in the general financial accounts.\n"
" "
#. module: base
#: model:ir.module.module,shortdesc:base.module_idea
@ -699,7 +727,7 @@ msgstr "Colombia"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_mister
msgid "Mister"
msgstr ""
msgstr "Mister"
#. module: base
#: help:res.country,code:0
@ -728,7 +756,7 @@ msgstr "Untranslated"
#. module: base
#: view:ir.mail_server:0
msgid "Outgoing Mail Server"
msgstr ""
msgstr "Outgoing Mail Server"
#. module: base
#: help:ir.actions.act_window,context:0
@ -741,7 +769,7 @@ msgstr ""
#. module: base
#: field:res.company,logo_web:0
msgid "Logo Web"
msgstr ""
msgstr "Logo Web"
#. module: base
#: code:addons/base/ir/ir_model.py:344
@ -843,6 +871,12 @@ msgid ""
"Contains the installer for marketing-related modules.\n"
" "
msgstr ""
"\n"
"Menu for Marketing.\n"
"===================\n"
"\n"
"Contains the installer for marketing-related modules.\n"
" "
#. module: base
#: model:ir.module.module,description:base.module_web_linkedin
@ -914,7 +948,7 @@ msgstr "Romania - Accounting"
#. module: base
#: model:ir.model,name:base.model_res_config_settings
msgid "res.config.settings"
msgstr ""
msgstr "res.config.settings"
#. module: base
#: help:res.partner,image_small:0
@ -946,7 +980,7 @@ msgstr "Security and Authentication"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_calendar
msgid "Web Calendar"
msgstr ""
msgstr "Web Calendar"
#. module: base
#: selection:base.language.install,lang:0
@ -957,7 +991,7 @@ msgstr "Swedish / svenska"
#: field:base.language.export,name:0
#: field:ir.attachment,datas_fname:0
msgid "File Name"
msgstr ""
msgstr "File Name"
#. module: base
#: model:res.country,name:base.rs
@ -1090,6 +1124,7 @@ msgstr "Zimbabwe"
msgid ""
"Type of the constraint: `f` for a foreign key, `u` for other constraints."
msgstr ""
"Type of the constraint: `f` for a foreign key, `u` for other constraints."
#. module: base
#: view:ir.actions.report.xml:0
@ -1170,7 +1205,7 @@ msgstr "Other OSI Approved Licence"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_gantt
msgid "Web Gantt"
msgstr ""
msgstr "Web Gantt"
#. module: base
#: model:ir.actions.act_window,name:base.act_menu_create
@ -1197,7 +1232,7 @@ msgstr "Google Users"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fleet
msgid "Fleet Management"
msgstr ""
msgstr "Fleet Management"
#. module: base
#: help:ir.server.object.lines,value:0
@ -1309,7 +1344,7 @@ msgstr ""
#: code:addons/base/ir/ir_model.py:735
#, python-format
msgid "Document model"
msgstr ""
msgstr "Document model"
#. module: base
#: view:res.users:0

View File

@ -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-08-28 04:59+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:01+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:26+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

File diff suppressed because it is too large Load Diff

View File

@ -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-08-28 05:02+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:26+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:02+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:27+0000\n"
"X-Generator: Launchpad (build 16771)\n"
"Language: \n"
#. module: base

View File

@ -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-08-28 05:02+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:26+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:03+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:28+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:03+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:27+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:01+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:26+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:54+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:19+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:53+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:18+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:58+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
"X-Generator: Launchpad (build 16771)\n"
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
"X-Poedit-Language: Persian\n"

View File

@ -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-08-28 05:03+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:28+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:54+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:19+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -38,7 +38,7 @@ msgstr "Muut määritykset"
#. module: base
#: selection:ir.property,type:0
msgid "DateTime"
msgstr "PäivämääräKellonaika"
msgstr "Päivämäärä ja kellonaika"
#. module: base
#: code:addons/fields.py:652
@ -47,8 +47,8 @@ msgid ""
"The second argument of the many2many field %s must be a SQL table !You used "
"%s, which is not a valid SQL table name."
msgstr ""
"Many2many kentän %s toisen argumentin pitää olla SQL taulu! Suottämäsi arvo "
"%s, ei ole käypä SQL taulun nimi."
"Monen-suhde-moneen kentän %s toisen argumentin pitää olla SQL taulu! "
"Syöttämäsi arvo %s, ei ole käypä SQL taulun nimi."
#. module: base
#: field:ir.ui.view,arch:0
@ -88,7 +88,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,summary:base.module_point_of_sale
msgid "Touchscreen Interface for Shops"
msgstr ""
msgstr "Kosketusnäytöille tarkoitettu käyttöliittymä kaupoille"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
@ -138,7 +138,7 @@ msgstr ""
#. module: base
#: help:res.partner,employee:0
msgid "Check this box if this contact is an Employee."
msgstr ""
msgstr "Valitse tämä, jos kontakti on työntekijä."
#. module: base
#: help:ir.model.fields,domain:0
@ -239,12 +239,12 @@ msgstr "luotu."
#. module: base
#: field:ir.actions.report.xml,report_xsl:0
msgid "XSL Path"
msgstr ""
msgstr "XSL Polku"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_tr
msgid "Turkey - Accounting"
msgstr ""
msgstr "Turkki - Kirjanpito"
#. module: base
#: field:ir.sequence,number_increment:0

View File

@ -8,13 +8,13 @@ msgstr ""
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2012-12-06 10:07+0000\n"
"Last-Translator: Quentin THEURET <Unknown>\n"
"Last-Translator: Quentin THEURET @TeMPO Consulting <Unknown>\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-08-28 04:54+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:19+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:02+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:26+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:55+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:20+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:55+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:20+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:55+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:20+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:56+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:20+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:59+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
"X-Generator: Launchpad (build 16771)\n"
"Language: hr\n"
#. module: base
@ -1736,7 +1736,7 @@ msgstr ""
#. module: base
#: help:res.partner,website:0
msgid "Website of Partner or Company"
msgstr "Webs tranice Partnera ili Tvrtke"
msgstr "Web stranice partnera ili tvrtke"
#. module: base
#: help:base.language.install,overwrite:0

View File

@ -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-08-28 04:56+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:53+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:18+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:56+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:56+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -68,12 +68,12 @@ msgstr "ekkert bil"
#. module: base
#: selection:base.language.install,lang:0
msgid "Hungarian / Magyar"
msgstr ""
msgstr "Ungverska"
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (PY) / Español (PY)"
msgstr ""
msgstr "Spænska (PY) / Español (PY)"
#. module: base
#: model:ir.module.category,description:base.module_category_project_management
@ -137,7 +137,7 @@ msgstr ""
#. module: base
#: help:res.partner,employee:0
msgid "Check this box if this contact is an Employee."
msgstr ""
msgstr "Merkið við ef tengiliður er stafsmaður."
#. module: base
#: help:ir.model.fields,domain:0

View File

@ -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-08-28 04:56+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -32,7 +32,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.sh
msgid "Saint Helena"
msgstr "Saint Helena"
msgstr "Sant'Elena"
#. module: base
#: view:ir.actions.report.xml:0

View File

@ -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-08-28 04:56+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -1635,7 +1635,7 @@ msgstr "コード %s を持つ言語が存在しません。"
#: model:ir.module.category,name:base.module_category_social_network
#: model:ir.module.module,shortdesc:base.module_mail
msgid "Social Network"
msgstr ""
msgstr "ソーシャルネットワーク"
#. module: base
#: view:res.lang:0
@ -5316,7 +5316,7 @@ msgstr "レート"
#. module: base
#: model:ir.module.module,shortdesc:base.module_email_template
msgid "Email Templates"
msgstr ""
msgstr "Eメールテンプレート"
#. module: base
#: model:res.country,name:base.sy
@ -9993,7 +9993,7 @@ msgstr "インストールする"
#: model:ir.module.module,shortdesc:base.module_base
#: field:res.currency,base:0
msgid "Base"
msgstr "基本"
msgstr "ベース"
#. module: base
#: field:ir.model.data,model: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

View File

@ -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-08-28 04:55+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:19+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:57+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:57+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:57+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:57+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:57+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:57+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:58+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -8,13 +8,13 @@ msgstr ""
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2012-12-22 07:41+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\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-08-28 04:54+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:19+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:02+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:27+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:58+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:58+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:01+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:26+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:58+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:59+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:59+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:59+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:52+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:17+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 04:59+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:03+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:28+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:00+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:00+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:00+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:00+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:00+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:01+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:01+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:03+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:27+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -25,7 +25,7 @@ msgid ""
" "
msgstr ""
"\n"
"此模块用于支票和支票打印\n"
"此模块用于支票填写和打印\n"
"================================================\n"
" "
@ -790,32 +790,6 @@ msgid ""
"module named account_voucher.\n"
" "
msgstr ""
"\n"
"会计和财务管理\n"
"=====================================\n"
"Financial and accounting module that covers:\n"
"--------------------------------------------\n"
"* General Accounting\n"
"* Cost/Analytic accounting\n"
"* Third party accounting\n"
"* Taxes management\n"
"* Budgets\n"
"* Customer and Supplier Invoices\n"
"* Bank statements\n"
"* Reconciliation process by partner\n"
"\n"
"Creates a dashboard for accountants that includes:\n"
"--------------------------------------------------\n"
"* List of Customer Invoice to Approve\n"
"* Company Analysis\n"
"* Graph of Treasury\n"
"\n"
"The processes like maintaining of general ledger is done through the defined "
"financial Journals (entry move line orgrouping is maintained through "
"journal)\n"
"for a particular financial year and for preparation of vouchers there is a "
"module named account_voucher.\n"
" "
#. module: base
#: view:ir.model:0
@ -1237,6 +1211,20 @@ msgid ""
"* Planned Revenue by Stage and User (graph)\n"
"* Opportunities by Stage (graph)\n"
msgstr ""
"\n"
"通用客户关系管理CRM模块\n"
"====================================================\n"
"此模块能让群组人员合理有效地管理线索、商机、会谈以及电话访问等活动。\n"
"管理涉及的重要功能包括:通信、身份识别、优先级设定、任务委派、投诉解决及通知等。\n"
"OpenERP可以有效跟踪用户、客户和供应商的所有的活动案例。根据设定的规则可以自动发送提醒、请求触发各种动作。\n"
"最重要的好处是用户不需要做任何特殊的事。此模块集成了电子邮件网关邮件在OpenERP中自动同步用户只需在OpenERP中根据系统反馈按需发送和回复"
"邮件。\n"
"OpenERP将接管其余的事诸如发送感谢信、自动转发到相关人员并确保之后相应的回复能准确送达。\n"
"\n"
"CRM 控制面板Dashboard 包括:\n"
"---------------------------------------\n"
"* 可按阶段和用户分类的预计收益图表\n"
"* 按阶段分类的商机图表\n"
#. module: base
#: selection:base.language.export,format:0
@ -2012,15 +2000,13 @@ msgid ""
"rights to the Demo user. \n"
msgstr ""
"\n"
"会计访问权限\n"
"会计访问权限管理\n"
"\n"
"========================\n"
"\n"
"It gives the Administrator user access to all accounting features such as "
"journal items and the chart of accounts.\n"
"此模块用来管理所有会计功能的访问权限如凭证行归类journal items和会计科目chart of accounts等。\n"
"\n"
"It assigns manager and user access rights to the Administrator and only user "
"rights to the Demo user。 \n"
"默认设置管理员Administrator拥有经理和一般用户的访问权限而演示用户Demo user仅拥有一般用户的权限。 \n"
#. module: base
#: view:ir.sequence:0
@ -2965,6 +2951,36 @@ msgid ""
"* Monthly Turnover (Graph)\n"
" "
msgstr ""
"\n"
"报价单和销售订单管理\n"
"==================================\n"
"此模块用来有效记录和跟踪所有销售订单及其历史,从而有效管理你的销售目标。\n"
"\n"
"整个销售流程包括:\n"
"\n"
"* **报价单** -> **销售订单** -> **发票**\n"
"\n"
"参数设置(仅在安装了仓库管理模块的情况下):\n"
"------------------------------------------------------\n"
"\n"
"如果安装了仓库管理模块,您可以设置以下参数:\n"
"\n"
"* 发货:选择一次性发货或部分发货\n"
"* 发票:选择发票是如何被支付\n"
"* Incoterms选择所使用的国际贸易术语\n"
"\n"
"您可以选择灵活的开票方式:\n"
"\n"
"* *按需开具*:需要时,手动从销售订单开具发票\n"
"* *按发货单*:按发货单自动生成发票\n"
"* *发运前*:先创建发票草稿,待支付后发货\n"
"\n"
"\n"
"销售经理的控制面板Dashboard包括\n"
"------------------------------------------------\n"
"* 我的报价单\n"
"* 月成交量(图表)\n"
" "
#. module: base
#: field:ir.actions.act_window,res_id:0
@ -5022,7 +5038,7 @@ msgstr "瑞士 - 会计"
#: field:res.partner,zip:0
#: field:res.partner.bank,zip:0
msgid "Zip"
msgstr "邮"
msgstr "邮编"
#. module: base
#: view:ir.module.module:0
@ -6299,10 +6315,7 @@ msgid ""
" "
msgstr ""
"\n"
"让用户建立自定义的仪表板\n"
"========================================\n"
"\n"
"允许用户建立自定义的仪表板\n"
"让用户自定义控制面板\n"
" "
#. module: base
@ -8810,6 +8823,13 @@ msgid ""
"\n"
"Notes can be found in the 'Home' menu.\n"
msgstr ""
"\n"
"此模块能让用户在OpenERP中创建他们自己的笔记Notes\n"
"=================================================================\n"
"Notes可用来记录会议纪要、即时的想法和创意、个人待办事项等等。每个用户管理其自己的个人笔记。笔记只能由创建者自己看到但可通过分享笔记给其它用户以便"
"多人协作实时更新同一笔记。这对诸如分享会议纪要等十分有效。\n"
"\n"
"Notes菜单可在“消息”菜单中找到\n"
#. module: base
#: model:res.country,name:base.dm
@ -11020,7 +11040,7 @@ msgstr "找不到币别 %s 日期 %s 的汇率。"
msgid ""
"Customized views are used when users reorganize the content of their "
"dashboard views (via web client)"
msgstr "自定义视图用于用户重新组织他们的控制台视图内容(通过 Web 客户端)"
msgstr "如果用户重新组织过他的控制面板视图,则使用其自定义的视图。"
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_stock
@ -11518,7 +11538,7 @@ msgstr "采购多次审核"
#: field:res.company,street2:0
#: field:res.partner,street2:0
msgid "Street2"
msgstr "街区地址2"
msgstr "次要街道"
#. module: base
#: model:ir.actions.act_window,name:base.action_view_base_module_update
@ -11949,7 +11969,7 @@ msgstr "ir.model.relation"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_check_writing
msgid "Check Writing"
msgstr "检查写作"
msgstr "支票填写"
#. module: base
#: model:ir.module.module,description:base.module_plugin_outlook
@ -12621,7 +12641,7 @@ msgstr "爱沙尼亚"
#: model:ir.module.module,shortdesc:base.module_board
#: model:ir.ui.menu,name:base.menu_reporting_dashboard
msgid "Dashboards"
msgstr "控制"
msgstr "控制面板"
#. module: base
#: model:ir.module.module,shortdesc:base.module_procurement

View File

@ -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-08-28 05:01+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -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-08-28 05:02+0000\n"
"X-Generator: Launchpad (build 16738)\n"
"X-Launchpad-Export-Date: 2013-09-25 05:27+0000\n"
"X-Generator: Launchpad (build 16771)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing

View File

@ -110,7 +110,7 @@ class report_xml(osv.osv):
kwargs = {}
new_report = report_sxw('report.'+r['report_name'], r['model'],
opj('addons',r['report_rml'] or '/'), header=r['header'], register=False, **kwargs)
elif r['report_xsl']:
elif r['report_xsl'] and r['report_xml']:
new_report = report_rml('report.'+r['report_name'], r['model'],
opj('addons',r['report_xml']),
r['report_xsl'] and opj('addons',r['report_xsl']), register=False)

View File

@ -76,7 +76,7 @@
<filter string="Owner" icon="terp-personal" domain="[]" context="{'group_by':'create_uid'}"/>
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}" groups="base.group_no_one"/>
<filter string="Company" icon="terp-gtk-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Month" help="Creation Month" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}"/>
<filter string="Creation Month" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}"/>
</group>
</search>
</field>

View File

@ -404,8 +404,10 @@ class ir_mail_server(osv.osv):
# The email's "Envelope From" (Return-Path), and all recipient addresses must only contain ASCII characters.
from_rfc2822 = extract_rfc2822_addresses(smtp_from)
assert len(from_rfc2822) == 1, "Malformed 'Return-Path' or 'From' address - it may only contain plain ASCII characters"
smtp_from = from_rfc2822[0]
assert from_rfc2822, ("Malformed 'Return-Path' or 'From' address: %r - "
"It should contain one valid plain ASCII email") % smtp_from
# use last extracted email, to support rarities like 'Support@MyComp <support@mycompany.com>'
smtp_from = from_rfc2822[-1]
email_to = message['To']
email_cc = message['Cc']
email_bcc = message['Bcc']

View File

@ -21,6 +21,8 @@
import collections
import copy
import logging
from lxml import etree
from operator import itemgetter
import os
import sys
import re
@ -103,6 +105,10 @@ class view(osv.osv):
return self._relaxng_validator
def _check_xml(self, cr, uid, ids, context=None):
if context is None:
context = {}
context['check_view_ids'] = ids
for view in self.browse(cr, uid, ids, context):
# Sanity check: the view should not break anything upon rendering!
try:
@ -197,15 +203,19 @@ class view(osv.osv):
:rtype: list of tuples
:return: [(view_arch,view_id), ...]
"""
user_groups = frozenset(self.pool.get('res.users').browse(cr, 1, uid, context).groups_id)
check_view_ids = context and context.get('check_view_ids') or (0,)
conditions = [['inherit_id', '=', view_id], ['model', '=', model]]
if self.pool._init:
# Module init currently in progress, only consider views from
# modules whose code is already loaded
conditions.extend([
['model_ids.model', '=', 'ir.ui.view'],
'|',
['model_ids.module', 'in', tuple(self.pool._init_modules)],
['id', 'in', check_view_ids],
])
view_ids = self.search(cr, uid, conditions, context=context)
@ -346,7 +356,7 @@ class view(osv.osv):
:return: a modified source where all the modifying architecture are applied
"""
if context is None: context = {}
sql_inherit = self.pool.get('ir.ui.view').get_inheriting_views_arch(cr, uid, source_id, model)
sql_inherit = self.pool.get('ir.ui.view').get_inheriting_views_arch(cr, uid, source_id, model, context=context)
for (specs, view_id) in sql_inherit:
specs_tree = etree.fromstring(specs.encode('utf-8'))
if context.get('inherit_branding'):
@ -844,6 +854,22 @@ class view(osv.osv):
})
return super(view, self).copy(cr, uid, id, default, context=context)
def _validate_custom_views(self, cr, uid, model):
"""Validate architecture of custom views (= without xml id) for a given model.
This method is called at the end of registry update.
"""
cr.execute("""SELECT max(v.id)
FROM ir_ui_view v
LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id)
WHERE md.module IS NULL
AND v.model = %s
GROUP BY coalesce(v.inherit_id, v.id)
""", (model,))
ids = map(itemgetter(0), cr.fetchall())
return self._check_xml(cr, uid, ids)
MOVABLE_BRANDING = ['data-oe-model','data-oe-id','data-oe-field','data-oe-xpath']
class view_sc(osv.osv):

View File

@ -24,6 +24,7 @@ from docutils.transforms import Transform, writer_aux
from docutils.writers.html4css1 import Writer
import imp
import logging
from operator import attrgetter
import os
import re
import shutil
@ -178,9 +179,6 @@ class module(osv.osv):
def _get_views(self, cr, uid, ids, field_name=None, arg=None, context=None):
res = {}
model_data_obj = self.pool.get('ir.model.data')
view_obj = self.pool.get('ir.ui.view')
report_obj = self.pool.get('ir.actions.report.xml')
menu_obj = self.pool.get('ir.ui.menu')
dmodels = []
if field_name is None or 'views_by_module' in field_name:
@ -192,7 +190,7 @@ class module(osv.osv):
assert dmodels, "no models for %s" % field_name
for module_rec in self.browse(cr, uid, ids, context=context):
res[module_rec.id] = {
res_mod_dic = res[module_rec.id] = {
'menus_by_module': [],
'reports_by_module': [],
'views_by_module': []
@ -212,28 +210,20 @@ class module(osv.osv):
for imd_res in model_data_obj.read(cr, uid, imd_ids, ['model', 'res_id'], context=context):
imd_models[imd_res['model']].append(imd_res['res_id'])
# For each one of the models, get the names of these ids.
# We use try except, because views or menus may not exist.
try:
res_mod_dic = res[module_rec.id]
view_ids = imd_models.get('ir.ui.view', [])
for v in view_obj.browse(cr, uid, view_ids, context=context):
aa = v.inherit_id and '* INHERIT ' or ''
res_mod_dic['views_by_module'].append('%s%s (%s)' % (aa, v.name, v.type))
def browse(model):
M = self.pool[model]
# as this method is called before the module update, some xmlid may be invalid at this stage
# explictly filter records before reading them
ids = M.exists(cr, uid, imd_models.get(model, []), context)
return M.browse(cr, uid, ids, context)
report_ids = imd_models.get('ir.actions.report.xml', [])
for rx in report_obj.browse(cr, uid, report_ids, context=context):
res_mod_dic['reports_by_module'].append(rx.name)
def format_view(v):
aa = v.inherit_id and '* INHERIT ' or ''
return '%s%s (%s)' % (aa, v.name, v.type)
menu_ids = imd_models.get('ir.ui.menu', [])
for um in menu_obj.browse(cr, uid, menu_ids, context=context):
res_mod_dic['menus_by_module'].append(um.complete_name)
except KeyError, e:
_logger.warning('Data not found for items of %s', module_rec.name)
except AttributeError, e:
_logger.warning('Data not found for items of %s %s', module_rec.name, str(e))
except Exception, e:
_logger.warning('Unknown error while fetching data of %s', module_rec.name, exc_info=True)
res_mod_dic['views_by_module'] = map(format_view, browse('ir.ui.view'))
res_mod_dic['reports_by_module'] = map(attrgetter('name'), browse('ir.actions.report.xml'))
res_mod_dic['menus_by_module'] = map(attrgetter('complete_name'), browse('ir.ui.menu'))
for key in res.iterkeys():
for k, v in res[key].iteritems():
@ -624,7 +614,7 @@ class module(osv.osv):
# wsgi handlers, so they can react accordingly
if tuple(res) != (0, 0):
for handler in openerp.service.wsgi_server.module_handlers:
if hasattr(handler,'load_addons'):
if hasattr(handler, 'load_addons'):
handler.load_addons()
return res

View File

@ -49,10 +49,10 @@ class res_config_module_installation_mixin(object):
to_install_missing_names.append(name)
elif module.state == 'uninstalled':
to_install_ids.append(module.id)
result = None
if to_install_ids:
ir_module.button_immediate_install(cr, uid, to_install_ids, context=context)
result = ir_module.button_immediate_install(cr, uid, to_install_ids, context=context)
#FIXME: if result is not none, the corresponding todo will be skipped because it was just marked done
if to_install_missing_names:
return {
'type': 'ir.actions.client',
@ -60,7 +60,7 @@ class res_config_module_installation_mixin(object):
'params': {'modules': to_install_missing_names},
}
return None
return result
class res_config_configurable(osv.osv_memory):
''' Base classes for new-style configuration items

View File

@ -482,7 +482,11 @@ class res_partner(osv.osv, format_address):
if partner.child_ids:
# 2a. Commercial Fields: sync if commercial entity
if partner.commercial_partner_id == partner:
self._commercial_sync_to_children(cr, uid, partner, context=context)
commercial_fields = self._commercial_fields(cr, uid,
context=context)
if any(field in update_values for field in commercial_fields):
self._commercial_sync_to_children(cr, uid, partner,
context=context)
# 2b. Address fields: sync if address changed
address_fields = self._address_fields(cr, uid, context=context)
if any(field in update_values for field in address_fields):
@ -505,6 +509,16 @@ class res_partner(osv.osv, format_address):
def write(self, cr, uid, ids, vals, context=None):
if isinstance(ids, (int, long)):
ids = [ids]
#res.partner must only allow to set the company_id of a partner if it
#is the same as the company of all users that inherit from this partner
#(this is to allow the code from res_users to write to the partner!) or
#if setting the company_id to False (this is compatible with any user company)
if vals.get('company_id'):
for partner in self.browse(cr, uid, ids, context=context):
if partner.user_ids:
user_companies = set([user.company_id.id for user in partner.user_ids])
if len(user_companies) > 1 or vals['company_id'] not in user_companies:
raise osv.except_osv(_("Warning"),_("You can not change the company as the partner/user has multiple user linked with different companies."))
result = super(res_partner,self).write(cr, uid, ids, vals, context=context)
for partner in self.browse(cr, uid, ids, context=context):
self._fields_sync(cr, uid, partner, vals, context)
@ -607,14 +621,15 @@ class res_partner(osv.osv, format_address):
if operator in ('=ilike', '=like'):
operator = operator[1:]
query_args = {'name': search_name}
limit_str = ''
query = ('''SELECT id FROM res_partner
WHERE email ''' + operator + ''' %(name)s
OR display_name ''' + operator + ''' %(name)s
ORDER BY display_name
''')
if limit:
limit_str = ' limit %(limit)s'
query += ' limit %(limit)s'
query_args['limit'] = limit
cr.execute('''SELECT partner.id FROM res_partner partner
LEFT JOIN res_partner company ON partner.parent_id = company.id
WHERE partner.email ''' + operator +''' %(name)s OR
partner.display_name ''' + operator + ' %(name)s ' + limit_str, query_args)
cr.execute(query, query_args)
ids = map(lambda x: x[0], cr.fetchall())
ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context)
if ids:

View File

@ -283,6 +283,13 @@ class res_users(osv.osv):
return result
def create(self, cr, uid, vals, context=None):
user_id = super(res_users, self).create(cr, uid, vals, context=context)
user = self.browse(cr, uid, user_id, context=context)
if user.partner_id.company_id:
user.partner_id.write({'company_id': user.company_id.id})
return user_id
def write(self, cr, uid, ids, values, context=None):
if not hasattr(ids, '__iter__'):
ids = [ids]
@ -297,7 +304,11 @@ class res_users(osv.osv):
uid = 1 # safe fields only, so we write as super-user to bypass access rights
res = super(res_users, self).write(cr, uid, ids, values, context=context)
if 'company_id' in values:
for user in self.browse(cr, uid, ids, context=context):
# if partner is global we keep it that way
if user.partner_id.company_id and user.partner_id.company_id.id != values['company_id']:
user.partner_id.write({'company_id': user.company_id.id})
# clear caches linked to the users
self.pool['ir.model.access'].call_cache_clearing_methods(cr)
clear = partial(self.pool['ir.rule'].clear_cache, cr)

View File

@ -18,6 +18,7 @@
"access_ir_model_relation","ir_model_relation","model_ir_model_relation",,1,0,0,0
"access_ir_model_access_all","ir_model_access_all","model_ir_model_access",,1,0,0,0
"access_ir_model_data_all","ir_model_data all","model_ir_model_data",,1,0,0,0
"access_ir_model_data_user","ir_model_data user","model_ir_model_data",base.group_user,1,0,1,0
"access_ir_model_fields_all","ir_model_fields all","model_ir_model_fields",,1,0,0,0
"access_ir_module_category_group_user","ir_module_category group_user","model_ir_module_category",,1,0,0,0
"access_ir_module_module_group_user","ir_module_module group_user","model_ir_module_module","group_system",1,1,1,1
@ -110,9 +111,7 @@
"access_res_bank_user","res_bank user","model_res_bank","group_user",1,0,0,0
"access_multi_company_default user","multi_company_default all","model_multi_company_default",,1,0,0,0
"access_multi_company_default manager","multi_company_default Manager","model_multi_company_default","group_erp_manager",1,1,1,1
"access_ir_filter all","ir_filters all","model_ir_filters",,1,0,0,0
"access_ir_filter employee","ir_filters employee","model_ir_filters","group_user",1,1,1,1
"access_ir_filters","ir_filters_all","model_ir_filters",,1,1,1,1
"access_ir_filter all","ir_filters all","model_ir_filters",,1,1,1,1
"access_ir_config_parameter","ir_config_parameter","model_ir_config_parameter",,1,0,0,0
"access_ir_mail_server","ir_mail_server","model_ir_mail_server","group_system",1,1,1,1
"access_ir_actions_client","ir_actions_client all","model_ir_actions_client",,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
18 access_ir_model_relation ir_model_relation model_ir_model_relation 1 0 0 0
19 access_ir_model_access_all ir_model_access_all model_ir_model_access 1 0 0 0
20 access_ir_model_data_all ir_model_data all model_ir_model_data 1 0 0 0
21 access_ir_model_data_user ir_model_data user model_ir_model_data base.group_user 1 0 1 0
22 access_ir_model_fields_all ir_model_fields all model_ir_model_fields 1 0 0 0
23 access_ir_module_category_group_user ir_module_category group_user model_ir_module_category 1 0 0 0
24 access_ir_module_module_group_user ir_module_module group_user model_ir_module_module group_system 1 1 1 1
111 access_res_bank_user res_bank user model_res_bank group_user 1 0 0 0
112 access_multi_company_default user multi_company_default all model_multi_company_default 1 0 0 0
113 access_multi_company_default manager multi_company_default Manager model_multi_company_default group_erp_manager 1 1 1 1
114 access_ir_filter all ir_filters all model_ir_filters 1 0 1 0 1 0 1
access_ir_filter employee ir_filters employee model_ir_filters group_user 1 1 1 1
access_ir_filters ir_filters_all model_ir_filters 1 1 1 1
115 access_ir_config_parameter ir_config_parameter model_ir_config_parameter 1 0 0 0
116 access_ir_mail_server ir_mail_server model_ir_mail_server group_system 1 1 1 1
117 access_ir_actions_client ir_actions_client all model_ir_actions_client 1 0 0 0

View File

@ -102,7 +102,7 @@ openerp.base = function(instance) {
});
}).
fail(function(client) {*/
self.do_warn(_t('OpenERP Apps Unreachable'), _t('Showing locally available modules'), true);
//self.do_warn(_t('OpenERP Apps Unreachable'), _t('Showing locally available modules'), true);
self.rpc('/web/action/load', {action_id: self.failback_action_id}).done(function(action) {
self.do_action(action);
instance.webclient.menu.open_action(action.id);

View File

@ -1,11 +1,16 @@
# -*- encoding: utf-8 -*-
from functools import partial
from lxml import etree as ET
from lxml.builder import E
import unittest2
from openerp.tests import common
from openerp.osv.orm import except_orm
from openerp.tools import mute_logger
Field = E.field
class TestNodeLocator(common.BaseCase):
"""
The node locator returns None when it can not find a node, and the first
@ -423,3 +428,102 @@ class TestNoModel(common.TransactionCase):
'Copyrighter, tous droits réservés'))
self.assertEqual(fields, {})
class test_views(common.TransactionCase):
@mute_logger('openerp.osv.orm', 'openerp.addons.base.ir.ir_ui_view')
def test_00_init_check_views(self):
Views = self.registry('ir.ui.view')
self.assertTrue(Views.pool._init)
error_msg = "The model name does not exist or the view architecture cannot be rendered"
# test arch check is call for views without xmlid during registry initialization
with self.assertRaisesRegexp(except_orm, error_msg):
Views.create(self.cr, self.uid, {
'name': 'Test View #1',
'model': 'ir.ui.view',
'arch': """<?xml version="1.0"?>
<tree>
<field name="test_1"/>
</tree>
""",
})
# same for inherited views
with self.assertRaisesRegexp(except_orm, error_msg):
# Views.pudb = True
Views.create(self.cr, self.uid, {
'name': 'Test View #2',
'model': 'ir.ui.view',
'inherit_id': self.browse_ref('base.view_view_tree').id,
'arch': """<?xml version="1.0"?>
<xpath expr="//field[@name='name']" position="after">
<field name="test_2"/>
</xpath>
""",
})
def _insert_view(self, **kw):
"""Insert view into database via a query to passtrough validation"""
kw.pop('id', None)
keys = sorted(kw.keys())
fields = ','.join('"%s"' % (k.replace('"', r'\"'),) for k in keys)
params = ','.join('%%(%s)s' % (k,) for k in keys)
query = 'INSERT INTO ir_ui_view(%s) VALUES(%s) RETURNING id' % (fields, params)
self.cr.execute(query, kw)
return self.cr.fetchone()[0]
def test_10_validate_custom_views(self):
Views = self.registry('ir.ui.view')
model = 'ir.actions.act_url'
validate = partial(Views._validate_custom_views, self.cr, self.uid, model)
# validation of a single view
vid = self._insert_view(**{
'name': 'base view',
'model': model,
'priority': 1,
'arch': """<?xml version="1.0"?>
<tree string="view">
<field name="url"/>
</tree>
""",
})
self.assertTrue(validate()) # single view
# validation of a inherited view
self._insert_view(**{
'name': 'inherited view',
'model': model,
'priority': 1,
'inherit_id': vid,
'arch': """<?xml version="1.0"?>
<xpath expr="//field[@name='url']" position="before">
<field name="name"/>
</xpath>
""",
})
self.assertTrue(validate()) # inherited view
# validation of a bad inherited view
self._insert_view(**{
'name': 'bad inherited view',
'model': model,
'priority': 2,
'inherit_id': vid,
'arch': """<?xml version="1.0"?>
<xpath expr="//field[@name='url']" position="after">
<field name="bad"/>
</xpath>
""",
})
with mute_logger('openerp.osv.orm', 'openerp.addons.base.ir.ir_ui_view'):
self.assertFalse(validate()) # bad inherited view
if __name__ == '__main__':
unittest2.main()

View File

@ -56,19 +56,6 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
:param skip_modules: optional list of module names (packages) which have previously been loaded and can be skipped
:return: list of modules that were installed or updated
"""
def process_sql_file(cr, fp):
queries = fp.read().split(';')
for query in queries:
new_query = ' '.join(query.split())
if new_query:
cr.execute(new_query)
load_init_xml = lambda *args: _load_data(cr, *args, kind='init_xml')
load_update_xml = lambda *args: _load_data(cr, *args, kind='update_xml')
load_demo_xml = lambda *args: _load_data(cr, *args, kind='demo_xml')
load_data = lambda *args: _load_data(cr, *args, kind='data')
load_demo = lambda *args: _load_data(cr, *args, kind='demo')
def load_test(module_name, idref, mode):
cr.commit()
try:
@ -86,6 +73,28 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
else:
cr.rollback()
def _get_files_of_kind(kind):
if kind == 'demo':
kind = ['demo_xml', 'demo']
elif kind == 'data':
kind = ['init_xml', 'update_xml', 'data']
if isinstance(kind, str):
kind = [kind]
files = []
for k in kind:
for f in package.data[k]:
files.append(f)
if k.endswith('_xml') and not (k == 'init_xml' and not f.endswith('.xml')):
# init_xml, update_xml and demo_xml are deprecated except
# for the case of init_xml with yaml, csv and sql files as
# we can't specify noupdate for those file.
correct_key = 'demo' if k.count('demo') else 'data'
_logger.warning(
"module %s: key '%s' is deprecated in favor of '%s' for file '%s'.",
package.name, k, correct_key, f
)
return files
def _load_data(cr, module_name, idref, mode, kind):
"""
@ -95,32 +104,12 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
init mode.
"""
for filename in package.data[kind]:
for filename in _get_files_of_kind(kind):
_logger.info("module %s: loading %s", module_name, filename)
_, ext = os.path.splitext(filename)
pathname = os.path.join(module_name, filename)
fp = tools.file_open(pathname)
noupdate = False
if kind in ('demo', 'demo_xml'):
if kind in ('demo', 'demo_xml') or (filename.endswith('.csv') and kind in ('init', 'init_xml')):
noupdate = True
try:
ext = ext.lower()
if ext == '.csv':
if kind in ('init', 'init_xml'):
noupdate = True
tools.convert_csv_import(cr, module_name, pathname, fp.read(), idref, mode, noupdate)
elif ext == '.sql':
process_sql_file(cr, fp)
elif ext == '.yml':
tools.convert_yaml_import(cr, module_name, fp, kind, idref, mode, noupdate, report)
elif ext == '.xml':
tools.convert_xml_import(cr, module_name, fp, idref, mode, noupdate, report)
elif ext == '.js':
pass # .js files are valid but ignored here.
else:
_logger.warning("Can't load unknown file type %s.", filename)
finally:
fp.close()
tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
if status is None:
status = {}
@ -176,13 +165,10 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
if package.state=='to upgrade':
# upgrading the module information
modobj.write(cr, SUPERUSER_ID, [module_id], modobj.get_values_from_terp(package.data))
load_init_xml(module_name, idref, mode)
load_update_xml(module_name, idref, mode)
load_data(module_name, idref, mode)
_load_data(cr, module_name, idref, mode, kind='data')
if hasattr(package, 'demo') or (package.dbdemo and package.state != 'installed'):
status['progress'] = (index + 0.75) / len(graph)
load_demo_xml(module_name, idref, mode)
load_demo(module_name, idref, mode)
_load_data(cr, module_name, idref, mode, kind='demo')
cr.execute('update ir_module_module set demo=%s where id=%s', (True, module_id))
# launch tests only in demo mode, as most tests will depend
@ -329,13 +315,21 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
# they are part of the "currently installed" modules. They will
# be dropped in STEP 6 later, before restarting the loading
# process.
states_to_load = ['installed', 'to upgrade', 'to remove']
processed = load_marked_modules(cr, graph, states_to_load, force, status, report, loaded_modules, update_module)
processed_modules.extend(processed)
if update_module:
states_to_load = ['to install']
processed = load_marked_modules(cr, graph, states_to_load, force, status, report, loaded_modules, update_module)
processed_modules.extend(processed)
# IMPORTANT 2: We have to loop here until all relevant modules have been
# processed, because in some rare cases the dependencies have
# changed, and modules that depend on an uninstalled module
# will not be processed on the first pass.
# It's especially useful for migrations.
previously_processed = -1
while previously_processed < len(processed_modules):
previously_processed = len(processed_modules)
processed_modules += load_marked_modules(cr, graph,
['installed', 'to upgrade', 'to remove'],
force, status, report, loaded_modules, update_module)
if update_module:
processed_modules += load_marked_modules(cr, graph,
['to install'], force, status, report,
loaded_modules, update_module)
# load custom models
cr.execute('select model from ir_model where state=%s', ('manual',))
@ -406,12 +400,22 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
_logger.info('Reloading registry once more after uninstalling modules')
return openerp.modules.registry.RegistryManager.new(cr.dbname, force_demo, status, update_module)
# STEP 7: verify custom views on every model
if update_module:
Views = registry['ir.ui.view']
custom_view_test = True
for model in registry.models.keys():
if not Views._validate_custom_views(cr, SUPERUSER_ID, model):
custom_view_test = False
_logger.error('invalid custom view(s) for model %s', model)
report.record_result(custom_view_test)
if report.failures:
_logger.error('At least one test failed when loading the modules.')
else:
_logger.info('Modules loaded.')
# STEP 7: call _register_hook on every model
# STEP 8: call _register_hook on every model
for model in registry.models.values():
model._register_hook(cr)

View File

@ -89,7 +89,7 @@ class MigrationManager(object):
'post': '[%s>]',
}
if not (hasattr(pkg, 'update') or pkg.state == 'to upgrade'):
if not (hasattr(pkg, 'update') or pkg.state == 'to upgrade') or pkg.installed_version is None:
return
def convert_version(version):

View File

@ -2175,7 +2175,18 @@ class BaseModel(object):
:param list groupby: fields by which the records will be grouped
:param int offset: optional number of records to skip
:param int limit: optional max number of records to return
:param dict context: context arguments, like lang, time zone
:param dict context: context arguments, like lang, time zone. A special
context key exist for datetime fields : ``datetime_format``.
context[``datetime_format``] = {
'field_name': {
groupby_format: format for to_char (default: yyyy-mm)
display_format: format for displaying the value
in the result (default: MMM yyyy)
interval: day, month or year; used for begin
and end date of group_by intervals
computation (default: month)
}
}
:param list orderby: optional ``order by`` specification, for
overriding the natural sort ordering of the
groups, see also :py:meth:`~osv.osv.osv.search`
@ -2215,11 +2226,26 @@ class BaseModel(object):
fget = self.fields_get(cr, uid, fields)
flist = ''
group_count = group_by = groupby
group_by_params = {}
if groupby:
if fget.get(groupby):
groupby_type = fget[groupby]['type']
if groupby_type in ('date', 'datetime'):
qualified_groupby_field = "to_char(%s,'yyyy-mm')" % qualified_groupby_field
if context.get('datetime_format') and isinstance(context['datetime_format'], dict) \
and context['datetime_format'].get(groupby) and isinstance(context['datetime_format'][groupby], dict):
groupby_format = context['datetime_format'][groupby].get('groupby_format', 'yyyy-mm')
display_format = context['datetime_format'][groupby].get('display_format', 'MMMM yyyy')
interval = context['datetime_format'][groupby].get('interval', 'month')
else:
groupby_format = 'yyyy-mm'
display_format = 'MMMM yyyy'
interval = 'month'
group_by_params = {
'groupby_format': groupby_format,
'display_format': display_format,
'interval': interval,
}
qualified_groupby_field = "to_char(%s,%%s)" % qualified_groupby_field
flist = "%s as %s " % (qualified_groupby_field, groupby)
elif groupby_type == 'boolean':
qualified_groupby_field = "coalesce(%s,false)" % qualified_groupby_field
@ -2246,6 +2272,8 @@ class BaseModel(object):
gb = groupby and (' GROUP BY ' + qualified_groupby_field) or ''
from_clause, where_clause, where_clause_params = query.get_sql()
if group_by_params and group_by_params.get('groupby_format'):
where_clause_params = [group_by_params['groupby_format']] + where_clause_params + [group_by_params['groupby_format']]
where_clause = where_clause and ' WHERE ' + where_clause
limit_str = limit and ' limit %d' % limit or ''
offset_str = offset and ' offset %d' % offset or ''
@ -2282,14 +2310,20 @@ class BaseModel(object):
d['__context'] = {'group_by': groupby_list[1:]}
if groupby and groupby in fget:
if d[groupby] and fget[groupby]['type'] in ('date', 'datetime'):
dt = datetime.datetime.strptime(alldata[d['id']][groupby][:7], '%Y-%m')
days = calendar.monthrange(dt.year, dt.month)[1]
date_value = datetime.datetime.strptime(d[groupby][:10], '%Y-%m-%d')
groupby_datetime = datetime.datetime.strptime(alldata[d['id']][groupby], '%Y-%m-%d')
d[groupby] = babel.dates.format_date(
date_value, format='MMMM yyyy', locale=context.get('lang', 'en_US'))
d['__domain'] = [(groupby, '>=', alldata[d['id']][groupby] and datetime.datetime.strptime(alldata[d['id']][groupby][:7] + '-01', '%Y-%m-%d').strftime('%Y-%m-%d') or False),\
(groupby, '<=', alldata[d['id']][groupby] and datetime.datetime.strptime(alldata[d['id']][groupby][:7] + '-' + str(days), '%Y-%m-%d').strftime('%Y-%m-%d') or False)] + domain
groupby_datetime, format=group_by_params.get('display_format', 'MMMM yyyy'), locale=context.get('lang', 'en_US'))
if group_by_params.get('interval') == 'month':
days = calendar.monthrange(groupby_datetime.year, groupby_datetime.month)[1]
domain_dt_begin = groupby_datetime.replace(day=1)
domain_dt_end = groupby_datetime.replace(day=days)
elif group_by_params.get('interval') == 'day':
domain_dt_begin = groupby_datetime.replace(hour=0, minute=0)
domain_dt_end = groupby_datetime.replace(hour=23, minute=59, second=59)
else:
domain_dt_begin = groupby_datetime.replace(month=1, day=1)
domain_dt_end = groupby_datetime.replace(month=12, day=31)
d['__domain'] = [(groupby, '>=', domain_dt_begin.strftime('%Y-%m-%d')), (groupby, '<=', domain_dt_end.strftime('%Y-%m-%d'))] + domain
del alldata[d['id']][groupby]
d.update(alldata[d['id']])
del d['id']
@ -4622,6 +4656,8 @@ class BaseModel(object):
"""
if type(ids) in (int, long):
ids = [ids]
if not ids:
return []
query = 'SELECT id FROM "%s"' % self._table
cr.execute(query + "WHERE ID IN %s", (tuple(ids),))
return [x[0] for x in cr.fetchall()]

View File

@ -33,6 +33,7 @@ import time
import openerp
import openerp.release
import openerp.workflow
from yaml_import import convert_yaml_import
import assertion_report
@ -943,6 +944,33 @@ form: module.record_id""" % (xml_id,)
'url': self._tag_url
}
def convert_file(cr, module, filename, idref, mode='update', noupdate=False, kind=None, report=None):
pathname = os.path.join(module, filename)
fp = misc.file_open(pathname)
ext = os.path.splitext(filename)[1].lower()
try:
if ext == '.csv':
convert_csv_import(cr, module, pathname, fp.read(), idref, mode, noupdate)
elif ext == '.sql':
convert_sql_import(cr, fp)
elif ext == '.yml':
convert_yaml_import(cr, module, fp, kind, idref, mode, noupdate, report)
elif ext == '.xml':
convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
elif ext == '.js':
pass # .js files are valid but ignored here.
else:
_logger.warning("Can't load unknown file type %s.", filename)
finally:
fp.close()
def convert_sql_import(cr, fp):
queries = fp.read().split(';')
for query in queries:
new_query = ' '.join(query.split())
if new_query:
cr.execute(new_query)
def convert_csv_import(cr, module, fname, csvcontent, idref=None, mode='init',
noupdate=False):
'''Import csv file :

View File

@ -547,6 +547,11 @@ command_re = re.compile("^Set-([a-z]+) *: *(.+)$", re.I + re.UNICODE)
# group(1) = the record ID ; group(2) = the model (if any) ; group(3) = the domain
reference_re = re.compile("<.*-open(?:object|erp)-(\\d+)(?:-([\w.]+))?.*@(.*)>", re.UNICODE)
# Bounce regex
# Typical form of bounce is bounce-128-crm.lead-34@domain
# group(1) = the mail ID; group(2) = the model (if any); group(3) = the record ID
bounce_re = re.compile("[\w]+-(\d+)-?([\w.]+)?-?(\d+)?", re.UNICODE)
def generate_tracking_message_id(res_id):
"""Returns a string that can be used in the Message-ID RFC822 header field

View File

@ -832,8 +832,11 @@ def trans_generate(lang, modules, cr):
if module:
src_file = open(fabsolutepath, 'r')
try:
for lineno, message, comments in extract.extract(extract_method, src_file,
keywords=extract_keywords):
for extracted in extract.extract(extract_method, src_file,
keywords=extract_keywords):
# Babel 0.9.6 yields lineno, message, comments
# Babel 1.3 yields lineno, message, comments, context
lineno, message, comments = extracted[:3]
push_translation(module, trans_type, display_path, lineno,
encode(message), comments + extra_comments)
except Exception: