\n"
+" Pritisnite za kreiranje novog kontakta u adresaru.\n"
+"
\n"
+" Pomoću OpenERP-a moguće je jednostavno pratiti sve \n"
+" aktivnosti povezane sa dobavljačima: diskusije, povijest \n"
+" nabave, dokumenti i sl.\n"
+"
\n"
+" "
#. module: base
#: model:res.country,name:base.lr
@@ -10384,7 +10403,7 @@ msgstr "Guinea Bissau"
#. module: base
#: field:ir.actions.report.xml,header:0
msgid "Add RML Header"
-msgstr ""
+msgstr "Dodaj RML zaglavlje"
#. module: base
#: help:res.company,rml_footer:0
@@ -10394,7 +10413,7 @@ msgstr "Tekst podnožja prikazan na dnu svih izvještaja"
#. module: base
#: field:ir.module.module,icon:0
msgid "Icon URL"
-msgstr ""
+msgstr "URL ikone"
#. module: base
#: model:ir.module.module,shortdesc:base.module_note_pad
@@ -10838,7 +10857,7 @@ msgstr ""
#. module: base
#: help:res.partner,ean13:0
msgid "BarCode"
-msgstr ""
+msgstr "Barkod"
#. module: base
#: help:ir.model.fields,model_id:0
@@ -11130,7 +11149,7 @@ msgstr "Predefinirana organizacija po objektu"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_hello
msgid "Hello"
-msgstr ""
+msgstr "Pozdrav"
#. module: base
#: view:ir.actions.configuration.wizard:0
@@ -11953,7 +11972,7 @@ msgstr "Izraz petlje"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_16
msgid "Retailer"
-msgstr ""
+msgstr "Trgovac"
#. module: base
#: view:ir.model.fields:0
@@ -14072,7 +14091,7 @@ msgstr "Tajland"
#. module: base
#: model:ir.model,name:base.model_change_password_wizard
msgid "Change Password Wizard"
-msgstr ""
+msgstr "Čarobnjak za promjenu lozinke"
#. module: base
#: model:ir.module.module,summary:base.module_account_voucher
@@ -14152,7 +14171,7 @@ msgstr "Relacija objekta"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_voucher
msgid "eInvoicing & Payments"
-msgstr ""
+msgstr "eRačuni i Plaćanja"
#. module: base
#: view:ir.rule:0
@@ -14270,7 +14289,7 @@ msgstr "Korištenje akcije"
#. module: base
#: field:ir.module.module,name:0
msgid "Technical Name"
-msgstr ""
+msgstr "Tehnički naziv"
#. module: base
#: model:ir.model,name:base.model_workflow_workitem
@@ -14517,7 +14536,7 @@ msgstr "Aruba"
#: code:addons/base/module/wizard/base_module_import.py:58
#, python-format
msgid "File is not a zip file!"
-msgstr ""
+msgstr "Datoteka nij eu zip formatu !"
#. module: base
#: model:res.country,name:base.ar
@@ -15113,7 +15132,7 @@ msgstr "Uvjet"
#: model:ir.actions.client,name:base.modules_updates_act_cl
#: model:ir.ui.menu,name:base.menu_module_updates
msgid "Updates"
-msgstr ""
+msgstr "Nadogradnja"
#. module: base
#: help:res.currency,rate:0
@@ -15472,6 +15491,14 @@ msgid ""
" \n"
" "
msgstr ""
+"
\n"
+" Pritisnite za kreiranje novog kontakta u adresaru.\n"
+"
\n"
+" Pomoću OpenERP-a moguće je jednostavno pratiti sve \n"
+" aktivnosti povezane sa kupcima: diskusije, povijest \n"
+" prilika, dokumenti i sl.\n"
+"
\n"
+" "
#. module: base
#: model:res.partner.category,name:base.res_partner_category_2
diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po
index ef48b0ea8a2..b29473411c9 100644
--- a/openerp/addons/base/i18n/hu.po
+++ b/openerp/addons/base/i18n/hu.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:41+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/hy.po b/openerp/addons/base/i18n/hy.po
index 5f63746c9f3..a3414b87477 100644
--- a/openerp/addons/base/i18n/hy.po
+++ b/openerp/addons/base/i18n/hy.po
@@ -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-09-25 05:18+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:38+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/id.po b/openerp/addons/base/i18n/id.po
index 2319671b252..e1ff7e99c5d 100644
--- a/openerp/addons/base/i18n/id.po
+++ b/openerp/addons/base/i18n/id.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/is.po b/openerp/addons/base/i18n/is.po
index 1d80c72ee0a..8df0df2ffaa 100644
--- a/openerp/addons/base/i18n/is.po
+++ b/openerp/addons/base/i18n/is.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po
index 636fff4ffa7..7f2ced532b7 100644
--- a/openerp/addons/base/i18n/it.po
+++ b/openerp/addons/base/i18n/it.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/ja.po b/openerp/addons/base/i18n/ja.po
index ec8dafe6ba4..d851d89354c 100644
--- a/openerp/addons/base/i18n/ja.po
+++ b/openerp/addons/base/i18n/ja.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@@ -25,6 +25,10 @@ msgid ""
"================================================\n"
" "
msgstr ""
+"\n"
+"小切手作成・印刷のモジュール\n"
+"================================================\n"
+" "
#. module: base
#: model:res.country,name:base.sh
@@ -58,7 +62,7 @@ msgstr "ビューアーキテクチャ"
#. module: base
#: model:ir.module.module,summary:base.module_sale_stock
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
-msgstr ""
+msgstr "見積書、販売オーダ、出荷、請求書コントロール"
#. module: base
#: selection:ir.sequence,implementation:0
diff --git a/openerp/addons/base/i18n/ka.po b/openerp/addons/base/i18n/ka.po
index a5babd39cd1..66447babcc5 100644
--- a/openerp/addons/base/i18n/ka.po
+++ b/openerp/addons/base/i18n/ka.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:19+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:40+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/kk.po b/openerp/addons/base/i18n/kk.po
index 615562fa527..c9159836a90 100644
--- a/openerp/addons/base/i18n/kk.po
+++ b/openerp/addons/base/i18n/kk.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:21+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/ko.po b/openerp/addons/base/i18n/ko.po
index f8235102389..ef6e0c4c9dd 100644
--- a/openerp/addons/base/i18n/ko.po
+++ b/openerp/addons/base/i18n/ko.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/lt.po b/openerp/addons/base/i18n/lt.po
index da2d2c73093..d2e3c3ef4a5 100644
--- a/openerp/addons/base/i18n/lt.po
+++ b/openerp/addons/base/i18n/lt.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/lv.po b/openerp/addons/base/i18n/lv.po
index 2167ac8a1d3..e2848ad5a53 100644
--- a/openerp/addons/base/i18n/lv.po
+++ b/openerp/addons/base/i18n/lv.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po
index 374f2eca74a..199d738895b 100644
--- a/openerp/addons/base/i18n/mk.po
+++ b/openerp/addons/base/i18n/mk.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/mn.po b/openerp/addons/base/i18n/mn.po
index 8d4192ef36f..4d5bceaf671 100644
--- a/openerp/addons/base/i18n/mn.po
+++ b/openerp/addons/base/i18n/mn.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/nb.po b/openerp/addons/base/i18n/nb.po
index 1338531f92b..66340e1d131 100644
--- a/openerp/addons/base/i18n/nb.po
+++ b/openerp/addons/base/i18n/nb.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:22+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/nl.po b/openerp/addons/base/i18n/nl.po
index 27d4309d7fa..3fd2efaf667 100644
--- a/openerp/addons/base/i18n/nl.po
+++ b/openerp/addons/base/i18n/nl.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:19+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:39+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/nl_BE.po b/openerp/addons/base/i18n/nl_BE.po
index 731c39ba43c..d9cd2b2a0b1 100644
--- a/openerp/addons/base/i18n/nl_BE.po
+++ b/openerp/addons/base/i18n/nl_BE.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:27+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:47+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po
index 1cc79312fa0..8b5af32e358 100644
--- a/openerp/addons/base/i18n/pl.po
+++ b/openerp/addons/base/i18n/pl.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po
index 41c0b6b25d9..fbf23562ddf 100644
--- a/openerp/addons/base/i18n/pt.po
+++ b/openerp/addons/base/i18n/pt.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po
index 1e39886b805..749f6afa8e9 100644
--- a/openerp/addons/base/i18n/pt_BR.po
+++ b/openerp/addons/base/i18n/pt_BR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:26+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/ro.po b/openerp/addons/base/i18n/ro.po
index 8658e64b1da..441f1fcb778 100644
--- a/openerp/addons/base/i18n/ro.po
+++ b/openerp/addons/base/i18n/ro.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po
index a87a18c0549..321134ec830 100644
--- a/openerp/addons/base/i18n/ru.po
+++ b/openerp/addons/base/i18n/ru.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:23+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/sk.po b/openerp/addons/base/i18n/sk.po
index 7815afa9839..f6508c82998 100644
--- a/openerp/addons/base/i18n/sk.po
+++ b/openerp/addons/base/i18n/sk.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/sl.po b/openerp/addons/base/i18n/sl.po
index 5e8848380d1..4124fefe7a1 100644
--- a/openerp/addons/base/i18n/sl.po
+++ b/openerp/addons/base/i18n/sl.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/sq.po b/openerp/addons/base/i18n/sq.po
index 97c40486522..3ccb5e34230 100644
--- a/openerp/addons/base/i18n/sq.po
+++ b/openerp/addons/base/i18n/sq.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:17+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:38+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/sr.po b/openerp/addons/base/i18n/sr.po
index aad28891173..4158db2ab6f 100644
--- a/openerp/addons/base/i18n/sr.po
+++ b/openerp/addons/base/i18n/sr.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/sr@latin.po b/openerp/addons/base/i18n/sr@latin.po
index 77f59690d13..bd6314e4f8e 100644
--- a/openerp/addons/base/i18n/sr@latin.po
+++ b/openerp/addons/base/i18n/sr@latin.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:28+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:49+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/sv.po b/openerp/addons/base/i18n/sv.po
index 119918240b7..a6e76dff183 100644
--- a/openerp/addons/base/i18n/sv.po
+++ b/openerp/addons/base/i18n/sv.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:24+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/th.po b/openerp/addons/base/i18n/th.po
index b201cface37..37703f638c1 100644
--- a/openerp/addons/base/i18n/th.po
+++ b/openerp/addons/base/i18n/th.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/tlh.po b/openerp/addons/base/i18n/tlh.po
index 1937eabbfdb..b5dcd87baa8 100644
--- a/openerp/addons/base/i18n/tlh.po
+++ b/openerp/addons/base/i18n/tlh.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/tr.po b/openerp/addons/base/i18n/tr.po
index ecb04329663..763015f2c22 100644
--- a/openerp/addons/base/i18n/tr.po
+++ b/openerp/addons/base/i18n/tr.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/uk.po b/openerp/addons/base/i18n/uk.po
index 1d728456930..f641d8c62c7 100644
--- a/openerp/addons/base/i18n/uk.po
+++ b/openerp/addons/base/i18n/uk.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/ur.po b/openerp/addons/base/i18n/ur.po
index a2663a4d322..5d7d5f171af 100644
--- a/openerp/addons/base/i18n/ur.po
+++ b/openerp/addons/base/i18n/ur.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/vi.po b/openerp/addons/base/i18n/vi.po
index e28cea3dd62..fe020c806b8 100644
--- a/openerp/addons/base/i18n/vi.po
+++ b/openerp/addons/base/i18n/vi.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/zh_CN.po b/openerp/addons/base/i18n/zh_CN.po
index d806b9ab538..274a4066dfa 100644
--- a/openerp/addons/base/i18n/zh_CN.po
+++ b/openerp/addons/base/i18n/zh_CN.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:27+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:48+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@@ -229,7 +229,7 @@ msgstr "基本字段的属性不能这样修改,请通过 Python 代码来修
#: code:addons/osv.py:151
#, python-format
msgid "Constraint Error"
-msgstr "约束错误"
+msgstr "约束性错误"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view_custom
diff --git a/openerp/addons/base/i18n/zh_HK.po b/openerp/addons/base/i18n/zh_HK.po
index 7191df28ac1..c457ec60396 100644
--- a/openerp/addons/base/i18n/zh_HK.po
+++ b/openerp/addons/base/i18n/zh_HK.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:25+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
diff --git a/openerp/addons/base/i18n/zh_TW.po b/openerp/addons/base/i18n/zh_TW.po
index ed8f746f0fd..b5246db8eed 100644
--- a/openerp/addons/base/i18n/zh_TW.po
+++ b/openerp/addons/base/i18n/zh_TW.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-09-25 05:27+0000\n"
-"X-Generator: Launchpad (build 16771)\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:48+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
From 5050231a9c0d496a557e1bb28e122c0084469ea4 Mon Sep 17 00:00:00 2001
From: Launchpad Translations on behalf of openerp <>
Date: Fri, 11 Oct 2013 04:49:29 +0000
Subject: [PATCH 04/21] Launchpad automatic translations update.
bzr revid: launchpad_translations_on_behalf_of_openerp-20131010044138-9giz2wpfhyq0u3h1
bzr revid: launchpad_translations_on_behalf_of_openerp-20131011044929-d9u1r6i67x2ru3jp
---
addons/account_cancel/i18n/et.po | 23 +
addons/auth_crypt/i18n/et.po | 32 +-
addons/auth_oauth_signup/i18n/et.po | 23 +
addons/base_report_designer/i18n/hi.po | 185 ++
addons/claim_from_delivery/i18n/et.po | 33 +
addons/crm_todo/i18n/et.po | 85 +
addons/sale/i18n/hi.po | 2132 ++++++++++++++++++++++++
7 files changed, 2496 insertions(+), 17 deletions(-)
create mode 100644 addons/account_cancel/i18n/et.po
create mode 100644 addons/auth_oauth_signup/i18n/et.po
create mode 100644 addons/base_report_designer/i18n/hi.po
create mode 100644 addons/claim_from_delivery/i18n/et.po
create mode 100644 addons/crm_todo/i18n/et.po
create mode 100644 addons/sale/i18n/hi.po
diff --git a/addons/account_cancel/i18n/et.po b/addons/account_cancel/i18n/et.po
new file mode 100644
index 00000000000..440850791a7
--- /dev/null
+++ b/addons/account_cancel/i18n/et.po
@@ -0,0 +1,23 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-10-09 14:39+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-10 04:41+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#. module: account_cancel
+#: view:account.invoice:0
+msgid "Cancel"
+msgstr ""
diff --git a/addons/auth_crypt/i18n/et.po b/addons/auth_crypt/i18n/et.po
index a634e17faa5..cbe529a053d 100644
--- a/addons/auth_crypt/i18n/et.po
+++ b/addons/auth_crypt/i18n/et.po
@@ -1,30 +1,28 @@
# Estonian translation for openobject-addons
-# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2011.
+# FIRST AUTHOR , 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-03 16:03+0000\n"
-"PO-Revision-Date: 2011-10-10 19:33+0000\n"
-"Last-Translator: Aare Vesi \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-10-09 14:40+0000\n"
+"Last-Translator: FULL NAME \n"
"Language-Team: Estonian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n"
-"X-Generator: Launchpad (build 16335)\n"
+"X-Launchpad-Export-Date: 2013-10-10 04:41+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
-#. module: base_crypt
-#: model:ir.model,name:base_crypt.model_res_users
+#. module: auth_crypt
+#: field:res.users,password_crypt:0
+msgid "Encrypted Password"
+msgstr "Krüpteeritud Parool"
+
+#. module: auth_crypt
+#: model:ir.model,name:auth_crypt.model_res_users
msgid "Users"
-msgstr ""
-
-#, python-format
-#~ msgid "Error"
-#~ msgstr "Viga"
-
-#~ msgid "res.users"
-#~ msgstr "res.users"
+msgstr "Kasutajad"
diff --git a/addons/auth_oauth_signup/i18n/et.po b/addons/auth_oauth_signup/i18n/et.po
new file mode 100644
index 00000000000..2d159250cff
--- /dev/null
+++ b/addons/auth_oauth_signup/i18n/et.po
@@ -0,0 +1,23 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-10-09 14:34+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-10 04:41+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#. module: auth_oauth_signup
+#: model:ir.model,name:auth_oauth_signup.model_res_users
+msgid "Users"
+msgstr "Kasutajad"
diff --git a/addons/base_report_designer/i18n/hi.po b/addons/base_report_designer/i18n/hi.po
new file mode 100644
index 00000000000..660f5e3d429
--- /dev/null
+++ b/addons/base_report_designer/i18n/hi.po
@@ -0,0 +1,185 @@
+# Hindi translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-10-09 05:55+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Hindi \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-10 04:41+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#. module: base_report_designer
+#: model:ir.model,name:base_report_designer.model_base_report_sxw
+msgid "base.report.sxw"
+msgstr "base.report.sxw"
+
+#. module: base_report_designer
+#: view:base_report_designer.installer:0
+msgid "OpenERP Report Designer Configuration"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base_report_designer.installer:0
+msgid ""
+"This plug-in allows you to create/modify OpenERP Reports into OpenOffice "
+"Writer."
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.sxw:0
+msgid "Upload the modified report"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.file.sxw:0
+msgid "The .SXW report"
+msgstr ""
+
+#. module: base_report_designer
+#: model:ir.model,name:base_report_designer.model_base_report_designer_installer
+msgid "base_report_designer.installer"
+msgstr ""
+
+#. module: base_report_designer
+#: model:ir.model,name:base_report_designer.model_base_report_rml_save
+msgid "base.report.rml.save"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base_report_designer.installer:0
+msgid "Configure"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base_report_designer.installer:0
+msgid "title"
+msgstr ""
+
+#. module: base_report_designer
+#: field:base.report.file.sxw,report_id:0
+#: field:base.report.sxw,report_id:0
+msgid "Report"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.rml.save:0
+msgid "The RML Report"
+msgstr ""
+
+#. module: base_report_designer
+#: model:ir.ui.menu,name:base_report_designer.menu_action_report_designer_wizard
+msgid "Report Designer"
+msgstr ""
+
+#. module: base_report_designer
+#: field:base_report_designer.installer,name:0
+msgid "File name"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.file.sxw:0
+#: view:base.report.sxw:0
+msgid "Get a report"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base_report_designer.installer:0
+#: model:ir.actions.act_window,name:base_report_designer.action_report_designer_wizard
+msgid "OpenERP Report Designer"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.sxw:0
+msgid "Continue"
+msgstr ""
+
+#. module: base_report_designer
+#: field:base.report.rml.save,file_rml:0
+msgid "Save As"
+msgstr ""
+
+#. module: base_report_designer
+#: help:base_report_designer.installer,plugin_file:0
+msgid ""
+"OpenObject Report Designer plug-in file. Save as this file and install this "
+"plug-in in OpenOffice."
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.rml.save:0
+msgid "Save RML FIle"
+msgstr ""
+
+#. module: base_report_designer
+#: field:base.report.file.sxw,file_sxw:0
+#: field:base.report.file.sxw,file_sxw_upload:0
+msgid "Your .SXW file"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base_report_designer.installer:0
+msgid "Installation and Configuration Steps"
+msgstr ""
+
+#. module: base_report_designer
+#: field:base_report_designer.installer,description:0
+msgid "Description"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.file.sxw:0
+msgid ""
+"This is the template of your requested report.\n"
+"Save it as a .SXW file and open it with OpenOffice.\n"
+"Don't forget to install the OpenERP SA OpenOffice package to modify it.\n"
+"Once it is modified, re-upload it in OpenERP using this wizard."
+msgstr ""
+
+#. module: base_report_designer
+#: model:ir.actions.act_window,name:base_report_designer.action_view_base_report_sxw
+msgid "Base Report sxw"
+msgstr ""
+
+#. module: base_report_designer
+#: model:ir.model,name:base_report_designer.model_base_report_file_sxw
+msgid "base.report.file.sxw"
+msgstr ""
+
+#. module: base_report_designer
+#: field:base_report_designer.installer,plugin_file:0
+msgid "OpenObject Report Designer Plug-in"
+msgstr ""
+
+#. module: base_report_designer
+#: model:ir.actions.act_window,name:base_report_designer.action_report_designer_installer
+msgid "OpenERP Report Designer Installation"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.sxw:0
+msgid "Cancel"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.sxw:0
+msgid "or"
+msgstr ""
+
+#. module: base_report_designer
+#: model:ir.model,name:base_report_designer.model_ir_actions_report_xml
+msgid "ir.actions.report.xml"
+msgstr ""
+
+#. module: base_report_designer
+#: view:base.report.sxw:0
+msgid "Select your report"
+msgstr ""
diff --git a/addons/claim_from_delivery/i18n/et.po b/addons/claim_from_delivery/i18n/et.po
new file mode 100644
index 00000000000..312e096ffde
--- /dev/null
+++ b/addons/claim_from_delivery/i18n/et.po
@@ -0,0 +1,33 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-10-09 14:42+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-10 04:41+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#. module: claim_from_delivery
+#: view:stock.picking.out:0
+msgid "Claims"
+msgstr "Nõuded"
+
+#. module: claim_from_delivery
+#: model:res.request.link,name:claim_from_delivery.request_link_claim_from_delivery
+msgid "Delivery Order"
+msgstr "Tarnetellimus"
+
+#. module: claim_from_delivery
+#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
+msgid "Claim From Delivery"
+msgstr ""
diff --git a/addons/crm_todo/i18n/et.po b/addons/crm_todo/i18n/et.po
new file mode 100644
index 00000000000..4e08132360c
--- /dev/null
+++ b/addons/crm_todo/i18n/et.po
@@ -0,0 +1,85 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-10-09 15:39+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-10 04:41+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#. module: crm_todo
+#: model:ir.model,name:crm_todo.model_project_task
+msgid "Task"
+msgstr "Ülesanne"
+
+#. module: crm_todo
+#: view:crm.lead:0
+msgid "Timebox"
+msgstr "Ajalahter"
+
+#. module: crm_todo
+#: view:crm.lead:0
+msgid "Lead"
+msgstr ""
+
+#. module: crm_todo
+#: view:crm.lead:0
+msgid "For cancelling the task"
+msgstr "Ülesande katkestamiseks"
+
+#. module: crm_todo
+#: view:crm.lead:0
+msgid "Next"
+msgstr "Järgmine"
+
+#. module: crm_todo
+#: model:ir.actions.act_window,name:crm_todo.crm_todo_action
+#: model:ir.ui.menu,name:crm_todo.menu_crm_todo
+msgid "My Tasks"
+msgstr "Minu ülesanded"
+
+#. module: crm_todo
+#: view:crm.lead:0
+#: field:crm.lead,task_ids:0
+msgid "Tasks"
+msgstr "Ülesanded"
+
+#. module: crm_todo
+#: view:crm.lead:0
+msgid "Done"
+msgstr "Valmis"
+
+#. module: crm_todo
+#: view:crm.lead:0
+msgid "Cancel"
+msgstr "Katkesta"
+
+#. module: crm_todo
+#: model:ir.model,name:crm_todo.model_crm_lead
+msgid "Lead/Opportunity"
+msgstr ""
+
+#. module: crm_todo
+#: field:project.task,lead_id:0
+msgid "Lead / Opportunity"
+msgstr ""
+
+#. module: crm_todo
+#: view:crm.lead:0
+msgid "For changing to done state"
+msgstr ""
+
+#. module: crm_todo
+#: view:crm.lead:0
+msgid "Previous"
+msgstr "Eelmine"
diff --git a/addons/sale/i18n/hi.po b/addons/sale/i18n/hi.po
new file mode 100644
index 00000000000..075835fe5ac
--- /dev/null
+++ b/addons/sale/i18n/hi.po
@@ -0,0 +1,2132 @@
+# Hindi translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:04+0000\n"
+"PO-Revision-Date: 2013-10-10 09:57+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Hindi \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-11 04:49+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#. module: sale
+#: model:res.groups,name:sale.group_analytic_accounting
+msgid "Analytic Accounting for Sales"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_confirmquotation0
+msgid "Confirm Quotation"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+msgid "Sales Dashboard"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:92
+#, python-format
+msgid "There is no income account defined as global property."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_tree2
+#: model:ir.ui.menu,name:sale.menu_invoicing_sales_order_lines
+msgid "Order Lines to Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,date_confirm:0
+msgid "Confirmation Date"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+#: view:sale.report:0
+msgid "Group By..."
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,address_allotment_id:0
+msgid "Allotment Partner"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_view_sale_advance_payment_inv
+msgid "Invoice Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.settings:0
+msgid "Product Features"
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,module_account_analytic_analysis:0
+msgid ""
+"Allows to define your customer contracts conditions: invoicing\n"
+" method (fixed price, on timesheet, advance invoice), the exact "
+"pricing\n"
+" (650€/day for a developer), the duration (one year support "
+"contract).\n"
+" You will be able to follow the progress of the contract and "
+"invoice automatically.\n"
+" It installs the account_analytic_analysis module."
+msgstr ""
+
+#. module: sale
+#: model:email.template,report_name:sale.email_template_edi_sale
+msgid ""
+"${(object.name or '').replace('/','_')}_${object.state == 'draft' and "
+"'draft' or ''}"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+#: field:sale.report,product_uom:0
+msgid "Unit of Measure"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,type:0
+msgid "Procurement Method"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,date_confirm:0
+msgid "Date on which sales order is confirmed."
+msgstr ""
+
+#. module: sale
+#: field:account.config.settings,module_sale_analytic_plans:0
+msgid "Use multiple analytic accounts on sales"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "March"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:565
+#, python-format
+msgid "First cancel all invoices attached to this sales order."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Quotation Number"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,message_unread:0
+msgid "Unread Messages"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,company_id:0
+#: field:sale.order.line,company_id:0
+#: view:sale.report:0
+#: field:sale.report,company_id:0
+#: field:sale.shop,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: sale
+#: field:sale.make.invoice,invoice_date:0
+msgid "Invoice Date"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_tree3
+msgid "Uninvoiced and Delivered Lines"
+msgstr ""
+
+#. module: sale
+#: model:mail.message.subtype,description:sale.mt_order_confirmed
+msgid "Quotation confirmed"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Invoice Exception"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Quotation "
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+msgid "Draft Quotation"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,partner_shipping_id:0
+msgid "Delivery Address"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,analytic_account_id:0
+#: field:sale.shop,project_id:0
+msgid "Analytic Account"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,module_sale_journal:0
+msgid "Allow batch invoicing of delivery orders through journals"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,price_subtotal:0
+msgid "Subtotal"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,day:0
+msgid "Day"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_cancelorder0
+#: view:sale.order:0
+msgid "Cancel Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,th_weight:0
+msgid "Weight"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.settings:0
+msgid "Warehouse Features"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,time_unit:0
+msgid "The default working time unit for services is"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uom:0
+msgid "Unit of Measure "
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:101
+#, python-format
+msgid "Incorrect Data"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:102
+#, python-format
+msgid "The value of Advance Amount must be positive."
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,group_discount_per_so_line:0
+msgid "Allows you to apply some discount per sales order line."
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Sales Order Lines that are in 'done' state"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,type:0
+msgid "on order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,message_ids:0
+msgid "Messages"
+msgstr ""
+
+#. module: sale
+#: field:sale.report,state:0
+msgid "Order Status"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,amount_tax:0
+#: field:sale.order.line,tax_id:0
+msgid "Taxes"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,amount_untaxed:0
+msgid "Untaxed Amount"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,module_project:0
+msgid "Project"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:185
+#: code:addons/sale/sale.py:363
+#: code:addons/sale/sale.py:504
+#: code:addons/sale/sale.py:598
+#: code:addons/sale/sale.py:763
+#: code:addons/sale/sale.py:780
+#, python-format
+msgid "Error!"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Net Total :"
+msgstr ""
+
+#. module: sale
+#: help:sale.order.line,type:0
+msgid ""
+"From stock: When needed, the product is taken from the stock or we wait for "
+"replenishment.\n"
+"On order: When needed, the product is purchased or produced."
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,module_analytic_user_function:0
+msgid ""
+"Allows you to define what is the default function of a specific user on a "
+"given account.\n"
+" This is mostly used when a user encodes his timesheet. The "
+"values are retrieved and the fields are auto-filled.\n"
+" But the possibility to change these values is still "
+"available.\n"
+" This installs the module analytic_user_function."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.order.line,state:0
+#: selection:sale.report,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Sales Order Lines related to a Sales Order of mine"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+msgid "Quotation Sent"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_mail_compose_message
+msgid "Email composition wizard"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,message_unread:0
+msgid "If checked new messages require your attention."
+msgstr "sale"
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Shipping Exception"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uos_qty:0
+msgid "Quantity (UoS)"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_shop_form
+#: field:sale.order,shop_id:0
+#: view:sale.report:0
+#: field:sale.report,shop_id:0
+msgid "Shop"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_orders_exception
+msgid "Sales in Exception"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,partner_invoice_id:0
+msgid "Invoice Address"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,create_date:0
+msgid "Date on which sales order is created."
+msgstr ""
+
+#. module: sale
+#: view:res.partner:0
+msgid "False"
+msgstr ""
+
+#. module: sale
+#: help:sale.advance.payment.inv,advance_payment_method:0
+msgid ""
+"Use All to create the final invoice.\n"
+" Use Percentage to invoice a percentage of the total amount.\n"
+" Use Fixed Price to invoice a specific amound in advance.\n"
+" Use Some Order Lines to invoice a selection of the sales "
+"order lines."
+msgstr ""
+
+#. module: sale
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Create Invoices"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Tax"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:277
+#: code:addons/sale/sale.py:820
+#: code:addons/sale/sale.py:983
+#, python-format
+msgid "Invalid Action!"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,state:0
+msgid ""
+"Gives the status of the quotation or sales order. \n"
+"The exception status is automatically set when a cancel operation occurs "
+" in the invoice validation (Invoice Exception) or in the picking "
+"list process (Shipping Exception).\n"
+"The 'Waiting Schedule' status is set when the invoice is confirmed "
+" but waiting for the scheduler to run on the order date."
+msgstr ""
+
+#. module: sale
+#: field:sale.report,date_confirm:0
+msgid "Date Confirm"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,nbr:0
+msgid "# of Lines"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,message_summary:0
+msgid ""
+"Holds the Chatter summary (number of messages, ...). This summary is "
+"directly in html format in order to be inserted in kanban views."
+msgstr ""
+
+#. module: sale
+#: help:sale.order.line,sequence:0
+msgid "Gives the sequence order when displaying a list of sales order lines."
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,product_uom_qty:0
+msgid "# of Qty"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Fax :"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:277
+#, python-format
+msgid ""
+"In order to delete a confirmed sales order, you must cancel it before !"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "(update)"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_res_partner
+#: view:sale.report:0
+#: field:sale.report,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.settings:0
+msgid "Contract Features"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:287
+#: code:addons/sale/sale.py:584
+#: model:ir.model,name:sale.model_sale_order
+#: model:process.node,name:sale.process_node_order0
+#: model:process.node,name:sale.process_node_saleorder0
+#: field:res.partner,sale_order_ids:0
+#: model:res.request.link,name:sale.req_link_sale_order
+#: view:sale.order:0
+#: selection:sale.order,state:0
+#, python-format
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale
+#: model:res.groups,name:sale.group_invoice_so_lines
+msgid "Enable Invoicing Sales order lines"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,amount:0
+msgid "Advance Amount"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoice_exists:0
+msgid "It indicates that sales order has at least one invoice."
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,group_sale_pricelist:0
+msgid ""
+"Allows to manage different prices based on rules per category of customers.\n"
+"Example: 10% for retailers, promotion of 5 EUR on this product, etc."
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,module_analytic_user_function:0
+msgid "One employee can have different roles per contract"
+msgstr ""
+
+#. module: sale
+#: selection:sale.advance.payment.inv,advance_payment_method:0
+msgid "Invoice the whole sales order"
+msgstr ""
+
+#. module: sale
+#: field:sale.shop,payment_default_id:0
+msgid "Default Payment Term"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_confirm0
+msgid "Confirm"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,timesheet:0
+msgid "Prepare invoices based on timesheets"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:820
+#, python-format
+msgid "You cannot cancel a sales order line that has already been invoiced."
+msgstr ""
+
+#. module: sale
+#: view:account.invoice.report:0
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_turnover_by_month
+msgid "Monthly Turnover"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,invoice_quantity:0
+msgid "Shipped Quantities"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,year:0
+msgid "Year"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,group_uom:0
+msgid "Allow using different units of measures"
+msgstr ""
+
+#. module: sale
+#: model:mail.message.subtype,name:sale.mt_order_confirmed
+msgid "Sales Order Confirmed"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Sales Order that haven't yet been confirmed"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Print"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Order N°"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,order_line:0
+msgid "Order Lines"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Disc.(%)"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:764
+#, python-format
+msgid "Please define income account for this product: \"%s\" (id:%d)."
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,invoice_lines:0
+msgid "Invoice Lines"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,price_total:0
+msgid "Total Price"
+msgstr ""
+
+#. module: sale
+#: help:account.config.settings,group_analytic_account_for_sales:0
+msgid "Allows you to specify an analytic account on sales orders."
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,module_sale_journal:0
+msgid ""
+"Allows you to categorize your sales and deliveries (picking lists) between "
+"different journals,\n"
+" and perform batch operations on journals.\n"
+" This installs the module sale_journal."
+msgstr ""
+
+#. module: sale
+#: help:sale.make.invoice,grouped:0
+msgid "Check the box to group the invoices for the same customers"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_sale_order_make_invoice
+#: model:ir.actions.act_window,name:sale.action_view_sale_order_line_make_invoice
+msgid "Make Invoices"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/res_config.py:97
+#, python-format
+msgid "Hour"
+msgstr ""
+
+#. module: sale
+#: field:res.partner,sale_order_count:0
+msgid "# of Sales Order"
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,timesheet:0
+msgid ""
+"For modifying account analytic view to show important data to project "
+"manager of services companies.\n"
+" You can also view the report of account analytic summary "
+"user-wise as well as month wise.\n"
+" This installs the module account_analytic_analysis."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,create_date:0
+msgid "Creation Date"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "To Invoice"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,partner_invoice_id:0
+msgid "Invoice address for current sales order."
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,invoice_quantity:0
+msgid "Ordered Quantities"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Ordered Year of the sales order"
+msgstr ""
+
+#. module: sale
+#: model:res.groups,name:sale.group_delivery_invoice_address
+msgid "Addresses in Sales Orders"
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,qtty:0
+#: report:sale.order:0
+#: field:sale.order.line,product_uom_qty:0
+msgid "Quantity"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Total :"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Sales Order Lines ready to be invoiced"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "My Sales"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,name:0
+#: field:sale.order.line,order_id:0
+msgid "Order Reference"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,fiscal_position:0
+msgid "Fiscal Position"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "July"
+msgstr ""
+
+#. module: sale
+#: help:sale.order.line,state:0
+msgid ""
+"* The 'Draft' status is set when the related sales order in draft status. "
+" \n"
+"* The 'Confirmed' status is set when the related sales order is confirmed. "
+" \n"
+"* The 'Exception' status is set when the related sales order is set as "
+"exception. \n"
+"* The 'Done' status is set when the sales order line has been picked. "
+" \n"
+"* The 'Cancelled' status is set when a user cancel the sales order related."
+msgstr ""
+
+#. module: sale
+#: view:sale.config.settings:0
+msgid "Default Options"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:960
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:91
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:95
+#, python-format
+msgid "Configuration Error!"
+msgstr ""
+
+#. module: sale
+#: field:account.config.settings,group_analytic_account_for_sales:0
+msgid "Analytic accounting for sales"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,state:0
+#: view:sale.order.line:0
+#: field:sale.order.line,state:0
+#: view:sale.report:0
+msgid "Status"
+msgstr ""
+
+#. module: sale
+#: view:sale.advance.payment.inv:0
+msgid ""
+"After clicking 'Show Lines to Invoice', select lines to invoice and create "
+"the invoice from the 'More' dropdown menu."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Send by Email"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/edi/sale_order.py:140
+#, python-format
+msgid "EDI Pricelist (%s)"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "On Delivery Order"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.settings:0
+msgid "Invoicing Process"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Order Date"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Sales Order done"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:364
+#, python-format
+msgid "Please define sales journal for this company: \"%s\" (id:%d)."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order
+#: view:res.partner:0
+msgid "Quotations and Sales"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoiced:0
+msgid "Paid"
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,group_uom:0
+msgid ""
+"Allows you to select and maintain different units of measure for products."
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Reference Unit of Measure"
+msgstr ""
+
+#. module: sale
+#: view:sale.advance.payment.inv:0
+msgid "Create and View Invoice"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Sales order lines done"
+msgstr ""
+
+#. module: sale
+#: field:sale.make.invoice,grouped:0
+msgid "Group the invoices"
+msgstr ""
+
+#. module: sale
+#: help:sale.advance.payment.inv,amount:0
+msgid "The amount to be invoiced in advance."
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_make_invoice
+msgid "Sales Make Invoice"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:307
+#, python-format
+msgid "Pricelist Warning!"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,discount:0
+msgid "Discount (%)"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_line_invoice.py:107
+#, python-format
+msgid ""
+"Invoice cannot be created for this Sales Order Line due to one of the "
+"following reasons:\n"
+"1.The state of this sales order line is either \"draft\" or \"cancel\"!\n"
+"2.The Sales Order Line is Invoiced!"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line.make.invoice:0
+msgid "Create & View Invoice"
+msgstr ""
+
+#. module: sale
+#: view:board.board:0
+#: model:ir.actions.act_window,name:sale.action_quotation_for_sale
+msgid "My Quotations"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoice_ids:0
+msgid "Invoices"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "December"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.settings:0
+msgid "Contracts Management"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Shipped"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,month:0
+msgid "Month"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,currency_id:0
+msgid "Currency"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Uninvoiced"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,categ_id:0
+msgid "Category of Product"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:564
+#, python-format
+msgid "Cannot cancel this sales order!"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Recreate Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,module_warning:0
+msgid "Allow configuring alerts by customer or products"
+msgstr ""
+
+#. module: sale
+#: field:sale.shop,name:0
+msgid "Shop Name"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "My Sales Orders"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Taxes :"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoice_exists:0
+#: field:sale.order.line,invoiced:0
+msgid "Invoiced"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:202
+#, python-format
+msgid "Advance Invoice"
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,group_invoice_so_lines:0
+msgid ""
+"To allow your salesman to make invoices for sales order lines using the menu "
+"'Lines to Invoice'."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.client,name:sale.action_client_sale_menu
+msgid "Open Sale Menu"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:598
+#, python-format
+msgid "You cannot confirm a sales order which has no line."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,state:0
+msgid "In Progress"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:865
+#, python-format
+msgid "No Customer Defined !"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,module_sale_stock:0
+msgid "Trigger delivery orders automatically from sales orders"
+msgstr ""
+
+#. module: sale
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Create invoices"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:106
+#, python-format
+msgid "Advance of %s %%"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_order_line_make_invoice
+msgid "Sale OrderLine Make_invoice"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_email_templates
+msgid "Email Templates"
+msgstr ""
+
+#. module: sale
+#: help:sale.order.line,address_allotment_id:0
+msgid "A partner to whom the particular product needs to be allotted."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,project_id:0
+msgid "Contract / Analytic"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+#: selection:sale.report,state:0
+msgid "Waiting Schedule"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,note:0
+msgid "Terms and conditions"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_orders
+#: model:ir.ui.menu,name:sale.menu_sale_order
+#: view:sale.order:0
+msgid "Sales Orders"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,amount_tax:0
+msgid "The tax amount."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoiced_rate:0
+msgid "Invoiced Ratio"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "On Demand"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "August"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_saleorder0
+msgid "Drives procurement and invoicing"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "To Do"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "June"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_shop_form
+msgid ""
+"
\n"
+" Click to define a new sale shop.\n"
+"
\n"
+" Each quotation or sales order must be linked to a shop. The\n"
+" shop also defines the warehouse from which the products will "
+"be\n"
+" delivered for each particular sales.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Order"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_report_all
+#: model:ir.ui.menu,name:sale.menu_report_product_all
+#: view:sale.report:0
+msgid "Sales Analysis"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,message_is_follower:0
+msgid "Is a Follower"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid ""
+"Sales Order Lines that are confirmed, done or in exception state and haven't "
+"yet been invoiced"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_report
+msgid "Sales Orders Statistics"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,date_order:0
+msgid "Date"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: view:sale.order:0
+#: field:sale.order,user_id:0
+#: view:sale.order.line:0
+#: field:sale.order.line,salesman_id:0
+#: view:sale.report:0
+#: field:sale.report,user_id:0
+msgid "Salesperson"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "November"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Extended Filters..."
+msgstr ""
+
+#. module: sale
+#: model:process.node,name:sale.process_node_quotation0
+#: view:sale.order:0
+#: selection:sale.report,state:0
+msgid "Quotation"
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,product_id:0
+msgid "Advance Product"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,state:0
+msgid "Exception"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "October"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_invoice0
+msgid ""
+"The Salesman creates an invoice manually, if the sales order shipping policy "
+"is 'Shipping and Manual in Progress'. The invoice is created automatically "
+"if the shipping policy is 'Payment before Delivery'."
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_shop
+#: view:sale.shop:0
+msgid "Sales Shop"
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,module_sale_stock:0
+msgid ""
+"Allows you to Make Quotation, Sale Order using different Order policy and "
+"Manage Related Stock.\n"
+" This installs the module sale_stock."
+msgstr ""
+
+#. module: sale
+#: help:sale.advance.payment.inv,product_id:0
+msgid ""
+"Select a product of type service which is called 'Advance Product'.\n"
+" You may have to create it and set it as a default value on "
+"this field."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "January"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,group_discount_per_so_line:0
+msgid "Allow setting a discount on the sales order lines"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_orders_in_progress
+msgid "Sales Order in Progress"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line.make.invoice:0
+msgid ""
+"All items in these order lines will be invoiced. You can also invoice a "
+"percentage of the sales order\n"
+" or a fixed price (for advances) directly from the sales "
+"order form if you prefer."
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,module_warning:0
+msgid ""
+"Allow to configure notification on products and trigger them when a user "
+"wants to sale a given product or a given customer.\n"
+"Example: Product: this product is deprecated, do not purchase more than 5.\n"
+" Supplier: don't forget to ask for an express delivery."
+msgstr ""
+
+#. module: sale
+#: field:sale.order,paypal_url:0
+msgid "Paypal Url"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,project_id:0
+msgid "The analytic account related to a sales order."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "View Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.advance.payment.inv,advance_payment_method:0
+msgid "What do you want to invoice?"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,group_sale_pricelist:0
+msgid "Use pricelists to adapt your price per customers"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_confirmquotation0
+msgid ""
+"The salesman confirms the quotation. The state of the sales order becomes "
+"'In progress' or 'Manual in progress'."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:942
+#, python-format
+msgid ""
+"You have to select a pricelist or a customer in the sales form !\n"
+"Please set one before choosing a product."
+msgstr ""
+
+#. module: sale
+#: help:sale.order,origin:0
+msgid "Reference of the document that generated this sales order request."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:955
+#, python-format
+msgid "No valid pricelist line found ! :"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:113
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:115
+#, python-format
+msgid "Advance of %s %s"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+#: field:sale.report,delay:0
+msgid "Commitment Delay"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_quotations
+#: model:ir.ui.menu,name:sale.menu_sale_quotations
+#: view:sale.order:0
+#: view:sale.report:0
+msgid "Quotations"
+msgstr ""
+
+#. module: sale
+#: help:account.config.settings,module_sale_analytic_plans:0
+msgid "This allows install module sale_analytic_plans."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Ignore Exception"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,partner_shipping_id:0
+msgid "Delivery address for current sales order."
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,module_sale_margin:0
+msgid "Display margins on sales orders"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoice_ids:0
+msgid ""
+"This is the list of invoices that have been generated for this sales order. "
+"The same sales order may have been invoiced in several times (by line for "
+"example)."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Your Reference"
+msgstr ""
+
+#. module: sale
+#: view:sale.advance.payment.inv:0
+msgid "Show Lines to Invoice"
+msgstr ""
+
+#. module: sale
+#: field:sale.report,date:0
+msgid "Date Order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,pricelist_id:0
+#: field:sale.report,pricelist_id:0
+#: field:sale.shop,pricelist_id:0
+msgid "Pricelist"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "TVA :"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:444
+#, python-format
+msgid "Customer Invoices"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_order0
+msgid "Confirmed sales order to invoice."
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.open_board_sales
+#: model:ir.ui.menu,name:sale.menu_dashboard_sales
+#: model:process.process,name:sale.process_process_salesprocess0
+#: view:res.partner:0
+#: view:sale.order:0
+#: view:sale.report:0
+msgid "Sales"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:308
+#, python-format
+msgid ""
+"If you change the pricelist of this order (and eventually the currency), "
+"prices of existing order lines will not be updated."
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Qty"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order.line,type:0
+msgid "from stock"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Quotation Date"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,amount_total:0
+#: view:sale.order.line:0
+msgid "Total"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: selection:sale.order,state:0
+#: view:sale.order.line:0
+#: selection:sale.order.line,state:0
+#: selection:sale.report,state:0
+msgid "Done"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Invoice address :"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_line_invoice.py:121
+#: model:ir.model,name:sale.model_account_invoice
+#: model:process.node,name:sale.process_node_invoice0
+#: view:sale.order:0
+#, python-format
+msgid "Invoice"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "My Sales Order Lines"
+msgstr ""
+
+#. module: sale
+#: model:process.transition.action,name:sale.process_transition_action_cancel0
+#: view:sale.advance.payment.inv:0
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "Cancel"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,message_follower_ids:0
+msgid "Followers"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:944
+#, python-format
+msgid "No Pricelist ! : "
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Sales Order "
+msgstr ""
+
+#. module: sale
+#: model:mail.message.subtype,description:sale.mt_order_sent
+#: model:mail.message.subtype,name:sale.mt_order_sent
+msgid "Quotation send"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Search Uninvoiced Lines"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_account_config_settings
+msgid "account.config.settings"
+msgstr ""
+
+#. module: sale
+#: sql_constraint:sale.order:0
+msgid "Order Reference must be unique per Company!"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_order_line_tree2
+msgid ""
+"
\n"
+" Here is a list of each sales order line to be invoiced. You "
+"can\n"
+" invoice sales orders partially, by lines of sales order. You "
+"do\n"
+" not need this list if you invoice from the delivery orders "
+"or\n"
+" if you invoice sales totally.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Shipping address :"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:505
+#, python-format
+msgid ""
+"You cannot group sales having different currencies for the same partner."
+msgstr ""
+
+#. module: sale
+#: view:sale.advance.payment.inv:0
+msgid "Invoice Sales Order"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoice_quantity:0
+msgid ""
+"The sales order will automatically create the invoice proposition (draft "
+"invoice). You have to choose "
+"if you want your invoice based on ordered "
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,module_account_analytic_analysis:0
+msgid "Use contracts management"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:952
+#, python-format
+msgid ""
+"Cannot find a pricelist line matching this product and quantity.\n"
+"You have to change either the product, the quantity or the pricelist."
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_advance_payment_inv
+msgid "Sales Advance Payment Invoice"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_invoice0
+#: model:process.transition.action,name:sale.process_transition_action_createinvoice0
+#: view:sale.advance.payment.inv:0
+#: view:sale.order:0
+#: field:sale.order,order_policy:0
+#: view:sale.order.line:0
+msgid "Create Invoice"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,amount_untaxed:0
+msgid "The amount without tax."
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Order reference"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,invoiced:0
+msgid "It indicates that an invoice has been paid."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order.line,price_unit:0
+msgid "Unit Price"
+msgstr ""
+
+#. module: sale
+#: selection:sale.advance.payment.inv,advance_payment_method:0
+msgid "Percentage"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Other Information"
+msgstr ""
+
+#. module: sale
+#: model:email.template,body_html:sale.email_template_edi_sale
+msgid ""
+"\n"
+"
\n"
+"\n"
+"
Hello ${object.partner_id.name},
\n"
+" \n"
+"
Here is your ${object.state in ('draft', 'sent') and 'quotation' or "
+"'order confirmation'} from ${object.company_id.name}:
\n"
+"\n"
+"
\n"
+" REFERENCES \n"
+" Order number: ${object.name} \n"
+" Order total: ${object.amount_total} "
+"${object.pricelist_id.currency_id.name} \n"
+" Order date: ${object.date_order} \n"
+" % if object.origin:\n"
+" Order reference: ${object.origin} \n"
+" % endif\n"
+" % if object.client_order_ref:\n"
+" Your reference: ${object.client_order_ref} \n"
+" % endif\n"
+" % if object.user_id:\n"
+" Your contact: ${object.user_id.name}\n"
+" % endif\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+#: field:sale.order.line,product_id:0
+#: view:sale.report:0
+#: field:sale.report,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,amount_total:0
+msgid "The total amount."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Confirm Sale"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_make_invoice_advance.py:96
+#, python-format
+msgid "There is no income account defined for this product: \"%s\" (id:%d)."
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "May"
+msgstr ""
+
+#. module: sale
+#: model:email.template,subject:sale.email_template_edi_sale
+msgid ""
+"${object.company_id.name} ${object.state in ('draft', 'sent') and "
+"'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Price"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,order_policy:0
+msgid ""
+"On demand: A draft invoice can be created from the sales order when needed. "
+"\n"
+"On delivery order: A draft invoice can be created from the delivery order "
+"when the products have been delivered. \n"
+"Before delivery: A draft invoice is created from the sales order and must be "
+"paid before the products can be delivered."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_order_report_all
+msgid ""
+"This report performs analysis on your quotations and sales orders. Analysis "
+"check your sales revenues and sort it by different group criteria (salesman, "
+"partner, product, etc.) Use this report to perform analysis on sales not "
+"having invoiced yet. If you want to analyse your turnover, you should use "
+"the Invoice Analysis report in the Accounting application."
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.report.xml,name:sale.report_sale_order
+msgid "Quotation / Order"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Tel. :"
+msgstr ""
+
+#. module: sale
+#: view:sale.make.invoice:0
+msgid "Do you really want to create the invoice(s)?"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_quotations
+msgid ""
+"
\n"
+" Click to create a quotation, the first step of a new sale.\n"
+"
\n"
+" OpenERP will help you handle efficiently the complete sale "
+"flow:\n"
+" from the quotation to the sales order, the\n"
+" delivery, the invoicing and the payment collection.\n"
+"
\n"
+" The social feature helps you organize discussions on each "
+"sales\n"
+" order, and allow your customers to keep track of the "
+"evolution\n"
+" of the sales order.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: sale
+#: view:res.partner:0
+msgid "sale.group_delivery_invoice_address"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:781
+#, python-format
+msgid ""
+"There is no Fiscal Position defined or Income category account defined for "
+"default properties of Product categories."
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_invoice0
+msgid "To be reviewed by the accountant."
+msgstr ""
+
+#. module: sale
+#: model:res.groups,name:sale.group_mrp_properties
+msgid "Properties on lines"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,state:0
+msgid "Sale to Invoice"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Order Number"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: field:sale.order,partner_id:0
+#: field:sale.order.line,order_partner_id:0
+msgid "Customer"
+msgstr ""
+
+#. module: sale
+#: model:product.template,name:sale.advance_product_0_product_template
+msgid "Advance"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "February"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.action_orders
+msgid ""
+"
\n"
+" Click to create a quotation that can be converted into a "
+"sales\n"
+" order.\n"
+"
\n"
+" OpenERP will help you efficiently handle the complete sales "
+"flow:\n"
+" quotation, sales order, delivery, invoicing and payment.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: sale
+#: field:sale.order,invoice_quantity:0
+msgid "Invoice on"
+msgstr ""
+
+#. module: sale
+#: selection:sale.advance.payment.inv,advance_payment_method:0
+msgid "Fixed price (deposit)"
+msgstr ""
+
+#. module: sale
+#: model:ir.model,name:sale.model_sale_config_settings
+msgid "sale.config.settings"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "September"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Date Ordered"
+msgstr ""
+
+#. module: sale
+#: selection:sale.order,order_policy:0
+msgid "Before Delivery"
+msgstr ""
+
+#. module: sale
+#: field:sale.order.line,product_uos:0
+msgid "Product UoS"
+msgstr ""
+
+#. module: sale
+#: model:process.node,note:sale.process_node_quotation0
+msgid "Draft state of sales order"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,origin:0
+msgid "Source Document"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,month:0
+msgid "April"
+msgstr ""
+
+#. module: sale
+#: selection:sale.report,state:0
+msgid "Manual In Progress"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/wizard/sale_line_invoice.py:107
+#: code:addons/sale/wizard/sale_make_invoice.py:42
+#: code:addons/sale/wizard/sale_make_invoice.py:55
+#, python-format
+msgid "Warning!"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_tree
+msgid "Old Quotations"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,help:sale.act_res_partner_2_sale_order
+msgid ""
+"
\n"
+" Click to create a quotation or sales order for this "
+"customer.\n"
+"
\n"
+" OpenERP will help you efficiently handle the complete sale "
+"flow:\n"
+" quotation, sales order, delivery, invoicing and\n"
+" payment.\n"
+"
\n"
+" The social feature helps you organize discussions on each "
+"sales\n"
+" order, and allow your customer to keep track of the "
+"evolution\n"
+" of the sales order.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: sale
+#: field:sale.order,message_summary:0
+msgid "Summary"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,message_ids:0
+msgid "Messages and communication history"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "Search Sales Order"
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order.line,name:0
+msgid "Description"
+msgstr ""
+
+#. module: sale
+#: view:sale.config.settings:0
+msgid ""
+"Use contract to be able to manage your services with\n"
+" multiple invoicing as part of the same contract "
+"with\n"
+" your customer."
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Ordered month of the sales order"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,name:sale.process_transition_saleinvoice0
+msgid "From a sales order"
+msgstr ""
+
+#. module: sale
+#: view:sale.order.line:0
+msgid "Confirmed sales order lines, not yet delivered"
+msgstr ""
+
+#. module: sale
+#: model:process.transition,note:sale.process_transition_saleinvoice0
+msgid ""
+"Depending on the Invoicing control of the sales order, the invoice can be "
+"based on delivered or on ordered quantities. Thus, a sales order can "
+"generates an invoice or a delivery order as soon as it is confirmed by the "
+"salesman."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "UoS"
+msgstr ""
+
+#. module: sale
+#: selection:sale.advance.payment.inv,advance_payment_method:0
+msgid "Some order lines"
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:983
+#, python-format
+msgid "Cannot delete a sales order line which is in state '%s'."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+#: field:sale.order,payment_term:0
+msgid "Payment Term"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Sales Order ready to be invoiced"
+msgstr ""
+
+#. module: sale
+#: field:sale.config.settings,group_invoice_so_lines:0
+msgid "Generate invoices based on the sales order lines"
+msgstr ""
+
+#. module: sale
+#: view:sale.advance.payment.inv:0
+#: view:sale.make.invoice:0
+#: view:sale.order.line.make.invoice:0
+msgid "or"
+msgstr ""
+
+#. module: sale
+#: model:ir.actions.act_window,name:sale.action_order_line_product_tree
+#: view:sale.order:0
+#: view:sale.order.line:0
+msgid "Sales Order Lines"
+msgstr ""
+
+#. module: sale
+#: help:sale.order,pricelist_id:0
+msgid "Pricelist for current sales order."
+msgstr ""
+
+#. module: sale
+#: report:sale.order:0
+msgid "Quotation N°"
+msgstr ""
+
+#. module: sale
+#: model:res.groups,name:sale.group_discount_per_so_line
+msgid "Discount on lines"
+msgstr ""
+
+#. module: sale
+#: field:sale.order,client_order_ref:0
+msgid "Customer Reference"
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Picked"
+msgstr ""
+
+#. module: sale
+#: help:sale.config.settings,module_sale_margin:0
+msgid ""
+"This adds the 'Margin' on sales order.\n"
+" This gives the profitability by calculating the difference "
+"between the Unit Price and Cost Price.\n"
+" This installs the module sale_margin."
+msgstr ""
+
+#. module: sale
+#: code:addons/sale/sale.py:865
+#, python-format
+msgid ""
+"Before choosing a product,\n"
+" select a customer in the sales form."
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "Total Tax Included"
+msgstr ""
+
+#. module: sale
+#: view:sale.order:0
+msgid "New Copy of Quotation"
+msgstr ""
+
+#. module: sale
+#: view:sale.advance.payment.inv:0
+msgid ""
+"Select how you want to invoice this order. This\n"
+" will create a draft invoice that can be modified\n"
+" before validation."
+msgstr ""
+
+#. module: sale
+#: view:sale.report:0
+msgid "Ordered date of the sales order"
+msgstr ""
From cfcafee87cf8dc9e450c239d35512042e9670dd5 Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Fri, 11 Oct 2013 11:54:24 +0200
Subject: [PATCH 05/21] [IMP] Added some documentation in the framwork.
bzr revid: nicolas.vanhoren@openerp.com-20131011095424-midppkv5czebt1f2
---
addons/web/static/src/js/openerpframework.js | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/addons/web/static/src/js/openerpframework.js b/addons/web/static/src/js/openerpframework.js
index 027452b42fb..062ecb8fe80 100644
--- a/addons/web/static/src/js/openerpframework.js
+++ b/addons/web/static/src/js/openerpframework.js
@@ -138,6 +138,7 @@ var openerp = {};
throw new Error("You can only instanciate objects with the 'new' operator");
}
// All construction is actually done in the init method
+ this._super = null;
if (!initializing && this.init) {
var ret = this.init.apply(this, arguments);
if (ret) { return ret; }
@@ -385,6 +386,14 @@ var Events = openerp.Class.extend({
}
});
+/**
+ Mixin containing an event system. Events are also registered by specifying the target object
+ (the object which will receive the event when it is raised). Both the event-emitting object
+ and the target object store or reference to each other. This is used to correctly remove all
+ reference to the event handler when any of the object is destroyed (when the destroy() method
+ from ParentedMixin is called). Removing those references is necessary to avoid memory leak
+ and phantom events (events which are raised and sent to a previously destroyed object).
+*/
openerp.EventDispatcherMixin = _.extend({}, openerp.ParentedMixin, {
__eventDispatcherMixin: true,
init: function() {
From e059b1c5c0efde36893e16dea9b8b5f6dd1694ac Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Fri, 11 Oct 2013 14:34:16 +0200
Subject: [PATCH 06/21] Added test with openerp sessions
bzr revid: nicolas.vanhoren@openerp.com-20131011123416-wsfr0g1pusa0wftp
---
addons/web/static/test/jsonrpc.js | 30 ++++++++++++------------------
1 file changed, 12 insertions(+), 18 deletions(-)
diff --git a/addons/web/static/test/jsonrpc.js b/addons/web/static/test/jsonrpc.js
index a8b901d3b1c..f8a1d325375 100644
--- a/addons/web/static/test/jsonrpc.js
+++ b/addons/web/static/test/jsonrpc.js
@@ -113,25 +113,16 @@ function (test) {
});*/
});
-
-// desactivated because I can't manage to make these work in the runbot
-/*
var login = "admin";
var password = "admin";
-var db = null;
ropenerp.testing.section('jsonrpc-auth', {
- setup: function() {
- var session = new openerp.Session();
- return session.session_reload().then(function() {
- db = session.db;
- ok(db, "db must be valid");
- });
- },
+ rpc: "rpc",
},
function (test) {
- test('basic-auth', {asserts: 4}, function () {
- var session = new openerp.Session();
+ test('basic-auth', {asserts: 3}, function () {
+ var db = ropenerp.session.db;
+ var session = new openerp.Session(null, null, {override_session: true});
equal(session.uid, undefined, "uid is expected to be undefined");
return session.session_authenticate(db, login, password).then(function() {
equal(session.uid, 1, "Admin's uid must be 1");
@@ -145,14 +136,16 @@ function (test) {
});
});
});
- test('share-sessions', {asserts: 7}, function () {
- var session = new openerp.Session();
+ test('share-sessions', {asserts: 6}, function () {
+ var db = ropenerp.session.db;
+ var session = new openerp.Session(null, null, {override_session: true});
var session2;
return session.session_authenticate(db, login, password).then(function() {
equal(session.uid, 1, "Admin's uid must be 1");
session2 = new openerp.Session(null, null, {session_id: session.session_id});
equal(session2.uid, undefined, "uid should be undefined");
equal(session2.override_session, true, "overwrite_session should be true");
+ console.log("session_id", session.session_id);
return session2.session_reload();
}).then(function() {
equal(session2.uid, session.uid);
@@ -167,8 +160,9 @@ function (test) {
});
});
});
- test('models', {asserts: 3}, function () {
- var session = new openerp.Session();
+ test('models', {asserts: 2}, function () {
+ var db = ropenerp.session.db;
+ var session = new openerp.Session(null, null, {override_session: true});
return session.session_authenticate(db, login, password).then(function() {
return session.model("res.users").call("search_read", {fields: ["login"], domain: [["id", "=", 1]]});
}).then(function(result) {
@@ -176,6 +170,6 @@ function (test) {
equal(result[0].login, "admin", "Must have admin's login");
});
});
-});*/
+});
})();
From 083d3fc91e149dae323e664b0ec1ff581125450b Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Fri, 11 Oct 2013 15:30:54 +0200
Subject: [PATCH 07/21] Added tests about timeouts and implemented it in
jsonprpc2
bzr revid: nicolas.vanhoren@openerp.com-20131011133054-0dx3wxqcqbdocnlf
---
addons/web/static/src/js/openerpframework.js | 20 ++++++++++-
addons/web/static/test/jsonrpc.js | 36 ++++++++++++++++++++
2 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/addons/web/static/src/js/openerpframework.js b/addons/web/static/src/js/openerpframework.js
index 062ecb8fe80..ab10d304b30 100644
--- a/addons/web/static/src/js/openerpframework.js
+++ b/addons/web/static/src/js/openerpframework.js
@@ -817,7 +817,7 @@ var genericJsonRpc = function(fct_name, params, fct) {
return result.result;
}
}, function() {
- console.error("JsonRPC communication error", _.toArray(arguments));
+ //console.error("JsonRPC communication error", _.toArray(arguments));
var def = $.Deferred();
return def.reject.apply(def, ["communication"].concat(_.toArray(arguments)));
});
@@ -899,11 +899,29 @@ openerp.jsonpRpc = function(url, fct_name, params, settings) {
});
// append the iframe to the DOM (will trigger the first load)
$form.after($iframe);
+ if (settings.timeout) {
+ realSetTimeout(function() {
+ deferred.reject({});
+ }, settings.timeout);
+ }
return deferred;
}
});
};
+var realSetTimeout = function(fct, millis) {
+ var finished = new Date().getTime() + millis;
+ var wait = function() {
+ var current = new Date().getTime();
+ if (current < finished) {
+ setTimeout(wait, finished - current);
+ } else {
+ fct();
+ }
+ };
+ setTimeout(wait, millis);
+};
+
openerp.Session = openerp.Class.extend(openerp.PropertiesMixin, {
triggers: {
'request': 'Request sent',
diff --git a/addons/web/static/test/jsonrpc.js b/addons/web/static/test/jsonrpc.js
index f8a1d325375..93aa9894455 100644
--- a/addons/web/static/test/jsonrpc.js
+++ b/addons/web/static/test/jsonrpc.js
@@ -111,6 +111,42 @@ function (test) {
notEqual(result, origin_tmp, "Values in the different sessions should be different");
});
});*/
+ test('timeout-jsonrpc', {asserts: 1}, function () {
+ var session = new openerp.Session();
+ return session.rpc("/gen_session_id", {}, {timeout: 1}).then(function() {
+ ok(false, "the request incorrectly succeeded");
+ return $.when();
+ }, function(a, e) {
+ e.preventDefault();
+ ok(true, "the request correctly failed");
+ return $.when();
+ });
+ });
+ test('timeout-jsonprpc', {asserts: 1}, function () {
+ var session = new openerp.Session();
+ session.origin_server = false;
+ return session.rpc("/gen_session_id", {}, {timeout: 1}).then(function() {
+ ok(false, "the request incorrectly succeeded");
+ return $.when();
+ }, function(a, e) {
+ e.preventDefault();
+ ok(true, "the request correctly failed");
+ return $.when();
+ });
+ });
+ // desactivated because the phantomjs runner crash
+ test('timeout-jsonprpc2', {asserts: 1}, function () {
+ var session = new openerp.Session();
+ session.origin_server = false;
+ return session.rpc("/gen_session_id", {}, {force2step: true, timeout: 1}).then(function() {
+ ok(false, "the request incorrectly succeeded");
+ return $.when();
+ }, function(a, e) {
+ e.preventDefault();
+ ok(true, "the request correctly failed");
+ return $.when();
+ });
+ });
});
var login = "admin";
From 6475f3225d71047ce1e60438ada3781fce5f1553 Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Fri, 11 Oct 2013 15:32:08 +0200
Subject: [PATCH 08/21] Removed jsonprpc2 test because it fails in phantomjs
bzr revid: nicolas.vanhoren@openerp.com-20131011133208-gjz0iprk63447qub
---
addons/web/static/test/jsonrpc.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/web/static/test/jsonrpc.js b/addons/web/static/test/jsonrpc.js
index 93aa9894455..46b7ceeac6e 100644
--- a/addons/web/static/test/jsonrpc.js
+++ b/addons/web/static/test/jsonrpc.js
@@ -135,7 +135,7 @@ function (test) {
});
});
// desactivated because the phantomjs runner crash
- test('timeout-jsonprpc2', {asserts: 1}, function () {
+ /*test('timeout-jsonprpc2', {asserts: 1}, function () {
var session = new openerp.Session();
session.origin_server = false;
return session.rpc("/gen_session_id", {}, {force2step: true, timeout: 1}).then(function() {
@@ -146,7 +146,7 @@ function (test) {
ok(true, "the request correctly failed");
return $.when();
});
- });
+ });*/
});
var login = "admin";
From d2eb959710137f6ecb4f91d06d4e22bfda3b6de9 Mon Sep 17 00:00:00 2001
From: Antony Lesuisse
Date: Sun, 13 Oct 2013 04:13:22 +0200
Subject: [PATCH 09/21] [FIX] ensure the use the registry signaling for
registries loaded with -d
bzr revid: al@openerp.com-20131013021322-5ej7ovpcrf7ilnn5
---
openerp/cli/server.py | 5 +++++
openerp/service/server.py | 1 -
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/openerp/cli/server.py b/openerp/cli/server.py
index 24987c098e4..97737a38c3f 100644
--- a/openerp/cli/server.py
+++ b/openerp/cli/server.py
@@ -168,6 +168,11 @@ def main(args):
import_translation()
sys.exit(0)
+ # This needs to be done now to ensure the use of the multiprocessing
+ # signaling mecanism for registries loaded with -d
+ if config['workers']:
+ openerp.multi_process = True
+
# preload registryies, needed for -u --stop_after_init
rc = 0
if config['db_name']:
diff --git a/openerp/service/server.py b/openerp/service/server.py
index 80a7155926b..7fa6dae0015 100644
--- a/openerp/service/server.py
+++ b/openerp/service/server.py
@@ -828,7 +828,6 @@ def start():
global server
load_server_wide_modules()
if config['workers']:
- openerp.multi_process = True
server = PreforkServer(openerp.service.wsgi_server.application)
elif openerp.evented:
server = GeventServer(openerp.service.wsgi_server.application)
From 81e03814e88c198f1bd04c36bb29085f4a9810db Mon Sep 17 00:00:00 2001
From: Martin Trigaux
Date: Mon, 14 Oct 2013 11:40:25 +0200
Subject: [PATCH 10/21] [IMP] base_setup: adapt fonts to many2one instead of
list
bzr revid: mat@openerp.com-20131014094025-05989gbpdghu2rwt
---
addons/base_setup/res_config.py | 7 ++-----
addons/base_setup/res_config_view.xml | 1 +
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/addons/base_setup/res_config.py b/addons/base_setup/res_config.py
index bbb54e4538a..ea640a74859 100644
--- a/addons/base_setup/res_config.py
+++ b/addons/base_setup/res_config.py
@@ -26,9 +26,6 @@ from openerp.report.render.rml2pdf import customfonts
class base_config_settings(osv.osv_memory):
_name = 'base.config.settings'
_inherit = 'res.config.settings'
-
- def _get_font(self, cr, uid, context=None):
- return sorted(customfonts.RegisterCustomFonts())
_columns = {
'module_multi_company': fields.boolean('Manage multiple companies',
@@ -44,11 +41,11 @@ class base_config_settings(osv.osv_memory):
'module_base_import': fields.boolean("Allow users to import data from CSV files"),
'module_google_drive': fields.boolean('Attach Google documents to any record',
help="""This installs the module google_docs."""),
- 'font': fields.selection(_get_font, "Select Font", help="Set your favorite font into company header"),
+ 'font': fields.many2one('res.font', string="Report Font", help="Set the font into the report header, it will be used for every RML report of the user company"),
}
_defaults= {
- 'font': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.font or 'Helvetica',
+ 'font': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.font.id,
}
def open_company(self, cr, uid, ids, context=None):
diff --git a/addons/base_setup/res_config_view.xml b/addons/base_setup/res_config_view.xml
index e0434480a37..a235d98bdde 100644
--- a/addons/base_setup/res_config_view.xml
+++ b/addons/base_setup/res_config_view.xml
@@ -95,6 +95,7 @@
+
From b3a8a4493dbfe1efe59a47efcfc24b85e0353e67 Mon Sep 17 00:00:00 2001
From: Martin Trigaux
Date: Mon, 14 Oct 2013 11:41:22 +0200
Subject: [PATCH 11/21] [IMP] fonts: adapt fonts to many2one instead of list
bzr revid: mat@openerp.com-20131014094122-6ndc5scni2xyzksy
---
openerp/addons/base/res/__init__.py | 1 +
openerp/addons/base/res/res_company.py | 17 +--
openerp/addons/base/res/res_company_view.xml | 1 +
openerp/addons/base/res/res_font.py | 145 +++++++++++++++++++
4 files changed, 155 insertions(+), 9 deletions(-)
create mode 100644 openerp/addons/base/res/res_font.py
diff --git a/openerp/addons/base/res/__init__.py b/openerp/addons/base/res/__init__.py
index 50807e20116..041a42f9f14 100644
--- a/openerp/addons/base/res/__init__.py
+++ b/openerp/addons/base/res/__init__.py
@@ -29,6 +29,7 @@ import res_company
import res_users
import res_request
import res_lang
+import res_font
import ir_property
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py
index d61963dbce4..e922cfbbe1e 100644
--- a/openerp/addons/base/res/res_company.py
+++ b/openerp/addons/base/res/res_company.py
@@ -112,9 +112,6 @@ class res_company(osv.osv):
def _get_companies_from_partner(self, cr, uid, ids, context=None):
return self.pool['res.company'].search(cr, uid, [('partner_id', 'in', ids)], context=context)
-
- def _get_font(self, cr, uid, context=None):
- return sorted(customfonts.RegisterCustomFonts())
_columns = {
'name': fields.related('partner_id', 'name', string='Company Name', size=128, required=True, store=True, type='char'),
@@ -128,7 +125,7 @@ class res_company(osv.osv):
'rml_footer': fields.text('Report Footer', help="Footer text displayed at the bottom of all reports."),
'rml_footer_readonly': fields.related('rml_footer', type='text', string='Report Footer', readonly=True),
'custom_footer': fields.boolean('Custom Footer', help="Check this to define the report footer manually. Otherwise it will be filled in automatically."),
- 'font': fields.selection(_get_font, "Font",help="Set the font into the report header, will be used for every RML report of the company"),
+ 'font': fields.many2one('res.font', string="Font",help="Set the font into the report header, will be used for every RML report of the company"),
'logo': fields.related('partner_id', 'image', string="Logo", type="binary"),
'logo_web': fields.function(_get_logo_web, string="Logo Web", type="binary", store={
'res.company': (lambda s, c, u, i, x: i, ['partner_id'], 10),
@@ -192,10 +189,11 @@ class res_company(osv.osv):
default_para = re.sub('fontName.?=.?".*"', 'fontName="%s"'% font,header)
return re.sub('("%s"\g<3>'% font,default_para)
+ fontname = self.pool.get('res.font').browse(cr, uid, font, context=context).name
return {'value':{
- 'rml_header': _change_header(rml_header,font),
- 'rml_header2':_change_header(rml_header2,font),
- 'rml_header3':_change_header(rml_header3,font)
+ 'rml_header': _change_header(rml_header,fontname),
+ 'rml_header2':_change_header(rml_header2,fontname),
+ 'rml_header3':_change_header(rml_header3,fontname)
}}
def on_change_country(self, cr, uid, ids, country_id, context=None):
@@ -388,6 +386,9 @@ class res_company(osv.osv):
return {'value': {'rml_header': self._header_letter}}
return {'value': {'rml_header': self._header_a4}}
+ def act_discover_fonts(self, cr, uid, ids, context=None):
+ return self.pool.get("res.font").act_discover_fonts(cr, uid, ids, context)
+
_defaults = {
'currency_id': _get_euro,
'paper_format': 'a4',
@@ -395,12 +396,10 @@ class res_company(osv.osv):
'rml_header2': _header2,
'rml_header3': _header3,
'logo':_get_logo,
- 'font':'Helvetica',
}
_constraints = [
(osv.osv._check_recursion, 'Error! You can not create recursive companies.', ['parent_id'])
]
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/base/res/res_company_view.xml b/openerp/addons/base/res/res_company_view.xml
index e9acf7940b3..ebf6cb534b3 100644
--- a/openerp/addons/base/res/res_company_view.xml
+++ b/openerp/addons/base/res/res_company_view.xml
@@ -81,6 +81,7 @@
+
diff --git a/openerp/addons/base/res/res_font.py b/openerp/addons/base/res/res_font.py
new file mode 100644
index 00000000000..e67939c541d
--- /dev/null
+++ b/openerp/addons/base/res/res_font.py
@@ -0,0 +1,145 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from reportlab import rl_config
+from reportlab.pdfbase import pdfmetrics, ttfonts
+from openerp.osv import fields, osv
+
+import logging
+import os,platform
+
+"""This module allows the mapping of some system-available TTF fonts to
+the reportlab engine.
+
+This file could be customized per distro (although most Linux/Unix ones)
+should have the same filenames, only need the code below).
+
+Due to an awful configuration that ships with reportlab at many Linux
+and Ubuntu distros, we have to override the search path, too.
+"""
+_fonts_cache = {'registered_fonts': [], 'total_system_fonts': 0}
+_logger = logging.getLogger(__name__)
+
+# Basic fonts family included in PDF standart, will always be in the font list
+BasePDFFonts = [
+ 'Helvetica',
+ 'Times',
+ 'Courier'
+]
+
+# List of fonts found on the disk
+CustomTTFonts = BaseCustomTTFonts = [ ('Helvetica', "DejaVu Sans", "DejaVuSans.ttf", 'normal'),
+ ('Helvetica', "DejaVu Sans Bold", "DejaVuSans-Bold.ttf", 'bold'),
+ ('Helvetica', "DejaVu Sans Oblique", "DejaVuSans-Oblique.ttf", 'italic'),
+ ('Helvetica', "DejaVu Sans BoldOblique", "DejaVuSans-BoldOblique.ttf", 'bolditalic'),
+ ('Times', "Liberation Serif", "LiberationSerif-Regular.ttf", 'normal'),
+ ('Times', "Liberation Serif Bold", "LiberationSerif-Bold.ttf", 'bold'),
+ ('Times', "Liberation Serif Italic", "LiberationSerif-Italic.ttf", 'italic'),
+ ('Times', "Liberation Serif BoldItalic", "LiberationSerif-BoldItalic.ttf", 'bolditalic'),
+ ('Courier', "FreeMono", "FreeMono.ttf", 'normal'),
+ ('Courier', "FreeMono Bold", "FreeMonoBold.ttf", 'bold'),
+ ('Courier', "FreeMono Oblique", "FreeMonoOblique.ttf", 'italic'),
+ ('Courier', "FreeMono BoldOblique", "FreeMonoBoldOblique.ttf", 'bolditalic'),
+]
+
+
+# Search path for TTF files, in addition of rl_config.TTFSearchPath
+TTFSearchPath = [
+ '~/test',
+ '/usr/share/fonts/truetype', # SuSE
+ '/usr/share/fonts/dejavu', '/usr/share/fonts/liberation', # Fedora, RHEL
+ '/usr/share/fonts/truetype/*','/usr/local/share/fonts' # Ubuntu,
+ '/usr/share/fonts/TTF/*', # at Mandriva/Mageia
+ '/usr/share/fonts/TTF', # Arch Linux
+ '/usr/lib/openoffice/share/fonts/truetype/',
+ '~/.fonts',
+ '~/.local/share/fonts',
+
+ # mac os X - from
+ # http://developer.apple.com/technotes/tn/tn2024.html
+ '~/Library/Fonts',
+ '/Library/Fonts',
+ '/Network/Library/Fonts',
+ '/System/Library/Fonts',
+
+ # windows
+ 'c:/winnt/fonts',
+ 'c:/windows/fonts'
+]
+
+def list_all_sysfonts():
+ """
+ This function returns list of font directories of system.
+ """
+ filepath = []
+
+ # Perform the search for font files ourselves, as reportlab's
+ # TTFOpenFile is not very good at it.
+ searchpath = list(set(TTFSearchPath + rl_config.TTFSearchPath))
+ for dirname in searchpath:
+ dirname = os.path.expanduser(dirname)
+ if os.path.exists(dirname):
+ for filename in [x for x in os.listdir(dirname) if x.lower().endswith('.ttf')]:
+ filepath.append(os.path.join(dirname, filename))
+ return filepath
+
+
+class res_font(osv.Model):
+ _name = "res.font"
+ _description = 'Fonts available'
+ _order = 'name'
+
+ _columns = {
+ 'name': fields.char("Name", required=True),
+ }
+
+ _sql_constraints = [
+ ('name_font_uniq', 'unique(name)', 'You can not register to fonts with the same name'),
+ ]
+
+ def act_discover_fonts(self, cr, uid, ids, context=None):
+ CustomTTFonts = BaseCustomTTFonts
+
+ found_fonts = {}
+ for font_path in list_all_sysfonts():
+ try:
+ font = ttfonts.TTFontFile(font_path)
+ _logger.debug("Found font %s at %s", font.name, font_path)
+ if not found_fonts.get(font.familyName):
+ found_fonts[font.familyName] = {'name': font.familyName}
+
+ mode = font.styleName.lower().replace(" ", "")
+
+ CustomTTFonts.append((font.familyName, font.name, font_path, mode))
+ except ttfonts.TTFError:
+ _logger.warning("Could not register Font %s", font_path)
+
+ # add default PDF fonts
+ for family in BasePDFFonts:
+ if not found_fonts.get(family):
+ found_fonts[family] = {'name': family}
+
+
+ # to make sure we always have updated list, delete all and recreate
+ self.unlink(cr, uid, self.search(cr, uid, [], context=context), context=context)
+ for family, vals in found_fonts.items():
+ self.create(cr, uid, vals, context=context)
+
From b94140f6c9455e2f67bff644b294a30837a7f814 Mon Sep 17 00:00:00 2001
From: Martin Trigaux
Date: Mon, 14 Oct 2013 12:15:03 +0200
Subject: [PATCH 12/21] [IMP] better labels
bzr revid: mat@openerp.com-20131014101503-lfge6qnfioepu22x
---
addons/base_setup/res_config.py | 2 +-
addons/base_setup/res_config_view.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/base_setup/res_config.py b/addons/base_setup/res_config.py
index 82475be55d9..556b358506e 100644
--- a/addons/base_setup/res_config.py
+++ b/addons/base_setup/res_config.py
@@ -41,7 +41,7 @@ class base_config_settings(osv.osv_memory):
'module_base_import': fields.boolean("Allow users to import data from CSV files"),
'module_google_drive': fields.boolean('Attach Google documents to any record',
help="""This installs the module google_docs."""),
- 'font': fields.many2one('res.font', string="Report Font", help="Set the font into the report header, it will be used for every RML report of the user company"),
+ 'font': fields.many2one('res.font', string="Report Font", help="Set the font into the report header, it will be used as default font in the RML reports of the user company"),
}
_defaults= {
diff --git a/addons/base_setup/res_config_view.xml b/addons/base_setup/res_config_view.xml
index a235d98bdde..6a2c226f467 100644
--- a/addons/base_setup/res_config_view.xml
+++ b/addons/base_setup/res_config_view.xml
@@ -95,7 +95,7 @@
-
+
From 3798b1ed96a901048439f2870a98555c8c29fd31 Mon Sep 17 00:00:00 2001
From: Martin Trigaux
Date: Mon, 14 Oct 2013 12:15:23 +0200
Subject: [PATCH 13/21] [IMP] better labels
bzr revid: mat@openerp.com-20131014101523-bwb4lda2rxbqpb8a
---
openerp/addons/base/res/res_company.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py
index e922cfbbe1e..7579ede7bdf 100644
--- a/openerp/addons/base/res/res_company.py
+++ b/openerp/addons/base/res/res_company.py
@@ -125,7 +125,7 @@ class res_company(osv.osv):
'rml_footer': fields.text('Report Footer', help="Footer text displayed at the bottom of all reports."),
'rml_footer_readonly': fields.related('rml_footer', type='text', string='Report Footer', readonly=True),
'custom_footer': fields.boolean('Custom Footer', help="Check this to define the report footer manually. Otherwise it will be filled in automatically."),
- 'font': fields.many2one('res.font', string="Font",help="Set the font into the report header, will be used for every RML report of the company"),
+ 'font': fields.many2one('res.font', string="Font",help="Set the font into the report header, it will be used as default font in the RML reports of the user company"),
'logo': fields.related('partner_id', 'image', string="Logo", type="binary"),
'logo_web': fields.function(_get_logo_web, string="Logo Web", type="binary", store={
'res.company': (lambda s, c, u, i, x: i, ['partner_id'], 10),
From 59efdc209aa7688c90c79e7f5e54f6dd0eb241a3 Mon Sep 17 00:00:00 2001
From: Martin Trigaux
Date: Mon, 14 Oct 2013 12:33:08 +0200
Subject: [PATCH 14/21] [FIX] base_setup: correctly handle new font value
bzr revid: mat@openerp.com-20131014103308-jynnbs2cy0nsehhn
---
addons/base_setup/res_config.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/addons/base_setup/res_config.py b/addons/base_setup/res_config.py
index 556b358506e..fd28a5fc8ca 100644
--- a/addons/base_setup/res_config.py
+++ b/addons/base_setup/res_config.py
@@ -71,7 +71,8 @@ class base_config_settings(osv.osv_memory):
wizard = self.browse(cr, uid, ids)[0]
if wizard.font:
user = self.pool.get('res.users').browse(cr, uid, uid, context)
- user.company_id.write({'font':wizard.font,'rml_header': self._change_header(user.company_id.rml_header,wizard.font), 'rml_header2': self._change_header(user.company_id.rml_header2,wizard.font), 'rml_header3': self._change_header(user.company_id.rml_header3,wizard.font)})
+ font_name = wizard.font.name
+ user.company_id.write({'font': wizard.font.id,'rml_header': self._change_header(user.company_id.rml_header,font_name), 'rml_header2': self._change_header(user.company_id.rml_header2, font_name), 'rml_header3': self._change_header(user.company_id.rml_header3, font_name)})
return {}
# Preferences wizard for Sales & CRM.
From 53e8625ceaa1d546f7c3c7060525675d0dcb2c6f Mon Sep 17 00:00:00 2001
From: Martin Trigaux
Date: Mon, 14 Oct 2013 14:38:15 +0200
Subject: [PATCH 15/21] [FIX] font: cleaning and better default data
bzr revid: mat@openerp.com-20131014123815-6tnegdiv4cnaimtf
---
openerp/addons/base/res/__init__.py | 2 +-
openerp/addons/base/res/res_company.py | 10 ++
openerp/addons/base/res/res_font.py | 93 ++++---------------
openerp/report/render/rml2pdf/customfonts.py | 98 ++++----------------
4 files changed, 49 insertions(+), 154 deletions(-)
diff --git a/openerp/addons/base/res/__init__.py b/openerp/addons/base/res/__init__.py
index 041a42f9f14..24bded0cc7f 100644
--- a/openerp/addons/base/res/__init__.py
+++ b/openerp/addons/base/res/__init__.py
@@ -25,11 +25,11 @@ import res_partner
import res_bank
import res_config
import res_currency
+import res_font
import res_company
import res_users
import res_request
import res_lang
-import res_font
import ir_property
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py
index 7579ede7bdf..438ee08cd26 100644
--- a/openerp/addons/base/res/res_company.py
+++ b/openerp/addons/base/res/res_company.py
@@ -292,6 +292,15 @@ class res_company(osv.osv):
def _get_logo(self, cr, uid, ids):
return open(os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'res_company_logo.png'), 'rb') .read().encode('base64')
+ def _get_font(self, cr, uid, ids):
+ font_obj = self.pool.get('res.font')
+ res = font_obj.search(cr, uid, [('name', '=', 'Helvetica')], limit=1)
+ if res:
+ return res[0]
+
+ font_obj.init_no_scan(cr, uid)
+ return font_obj.search(cr, uid, [('name', '=', 'Helvetica')], limit=1)[0]
+
_header = """
@@ -396,6 +405,7 @@ class res_company(osv.osv):
'rml_header2': _header2,
'rml_header3': _header3,
'logo':_get_logo,
+ 'font':_get_font,
}
_constraints = [
diff --git a/openerp/addons/base/res/res_font.py b/openerp/addons/base/res/res_font.py
index e67939c541d..d4209c614b7 100644
--- a/openerp/addons/base/res/res_font.py
+++ b/openerp/addons/base/res/res_font.py
@@ -19,12 +19,11 @@
#
##############################################################################
-from reportlab import rl_config
-from reportlab.pdfbase import pdfmetrics, ttfonts
+from reportlab.pdfbase import ttfonts
from openerp.osv import fields, osv
+from openerp.report.render.rml2pdf import customfonts
import logging
-import os,platform
"""This module allows the mapping of some system-available TTF fonts to
the reportlab engine.
@@ -35,72 +34,8 @@ should have the same filenames, only need the code below).
Due to an awful configuration that ships with reportlab at many Linux
and Ubuntu distros, we have to override the search path, too.
"""
-_fonts_cache = {'registered_fonts': [], 'total_system_fonts': 0}
_logger = logging.getLogger(__name__)
-# Basic fonts family included in PDF standart, will always be in the font list
-BasePDFFonts = [
- 'Helvetica',
- 'Times',
- 'Courier'
-]
-
-# List of fonts found on the disk
-CustomTTFonts = BaseCustomTTFonts = [ ('Helvetica', "DejaVu Sans", "DejaVuSans.ttf", 'normal'),
- ('Helvetica', "DejaVu Sans Bold", "DejaVuSans-Bold.ttf", 'bold'),
- ('Helvetica', "DejaVu Sans Oblique", "DejaVuSans-Oblique.ttf", 'italic'),
- ('Helvetica', "DejaVu Sans BoldOblique", "DejaVuSans-BoldOblique.ttf", 'bolditalic'),
- ('Times', "Liberation Serif", "LiberationSerif-Regular.ttf", 'normal'),
- ('Times', "Liberation Serif Bold", "LiberationSerif-Bold.ttf", 'bold'),
- ('Times', "Liberation Serif Italic", "LiberationSerif-Italic.ttf", 'italic'),
- ('Times', "Liberation Serif BoldItalic", "LiberationSerif-BoldItalic.ttf", 'bolditalic'),
- ('Courier', "FreeMono", "FreeMono.ttf", 'normal'),
- ('Courier', "FreeMono Bold", "FreeMonoBold.ttf", 'bold'),
- ('Courier', "FreeMono Oblique", "FreeMonoOblique.ttf", 'italic'),
- ('Courier', "FreeMono BoldOblique", "FreeMonoBoldOblique.ttf", 'bolditalic'),
-]
-
-
-# Search path for TTF files, in addition of rl_config.TTFSearchPath
-TTFSearchPath = [
- '~/test',
- '/usr/share/fonts/truetype', # SuSE
- '/usr/share/fonts/dejavu', '/usr/share/fonts/liberation', # Fedora, RHEL
- '/usr/share/fonts/truetype/*','/usr/local/share/fonts' # Ubuntu,
- '/usr/share/fonts/TTF/*', # at Mandriva/Mageia
- '/usr/share/fonts/TTF', # Arch Linux
- '/usr/lib/openoffice/share/fonts/truetype/',
- '~/.fonts',
- '~/.local/share/fonts',
-
- # mac os X - from
- # http://developer.apple.com/technotes/tn/tn2024.html
- '~/Library/Fonts',
- '/Library/Fonts',
- '/Network/Library/Fonts',
- '/System/Library/Fonts',
-
- # windows
- 'c:/winnt/fonts',
- 'c:/windows/fonts'
-]
-
-def list_all_sysfonts():
- """
- This function returns list of font directories of system.
- """
- filepath = []
-
- # Perform the search for font files ourselves, as reportlab's
- # TTFOpenFile is not very good at it.
- searchpath = list(set(TTFSearchPath + rl_config.TTFSearchPath))
- for dirname in searchpath:
- dirname = os.path.expanduser(dirname)
- if os.path.exists(dirname):
- for filename in [x for x in os.listdir(dirname) if x.lower().endswith('.ttf')]:
- filepath.append(os.path.join(dirname, filename))
- return filepath
-
class res_font(osv.Model):
_name = "res.font"
@@ -112,14 +47,16 @@ class res_font(osv.Model):
}
_sql_constraints = [
- ('name_font_uniq', 'unique(name)', 'You can not register to fonts with the same name'),
+ ('name_font_uniq', 'unique(name)', 'You can not register two fonts with the same name'),
]
- def act_discover_fonts(self, cr, uid, ids, context=None):
- CustomTTFonts = BaseCustomTTFonts
+ def discover_fonts(self, cr, uid, ids, context=None):
+ """Scan fonts on the file system, add them to the list of known fonts
+ and create font object for the new ones"""
+ customfonts.CustomTTFonts = customfonts.BaseCustomTTFonts
found_fonts = {}
- for font_path in list_all_sysfonts():
+ for font_path in customfonts.list_all_sysfonts():
try:
font = ttfonts.TTFontFile(font_path)
_logger.debug("Found font %s at %s", font.name, font_path)
@@ -128,12 +65,12 @@ class res_font(osv.Model):
mode = font.styleName.lower().replace(" ", "")
- CustomTTFonts.append((font.familyName, font.name, font_path, mode))
+ customfonts.CustomTTFonts.append((font.familyName, font.name, font_path, mode))
except ttfonts.TTFError:
_logger.warning("Could not register Font %s", font_path)
# add default PDF fonts
- for family in BasePDFFonts:
+ for family in customfonts.BasePDFFonts:
if not found_fonts.get(family):
found_fonts[family] = {'name': family}
@@ -141,5 +78,13 @@ class res_font(osv.Model):
# to make sure we always have updated list, delete all and recreate
self.unlink(cr, uid, self.search(cr, uid, [], context=context), context=context)
for family, vals in found_fonts.items():
- self.create(cr, uid, vals, context=context)
+ if not self.search(cr, uid, [('name', '=', family)], context=context):
+ self.create(cr, uid, vals, context=context)
+ return True
+ def init_no_scan(self, cr, uid, context=None):
+ """Add demo data for PDF fonts without scan (faster for db creation)"""
+ for font in customfonts.BasePDFFonts:
+ if not self.search(cr, uid, [('name', '=', font)], context=context):
+ self.create(cr, uid, {'name':font}, context=context)
+ return True
\ No newline at end of file
diff --git a/openerp/report/render/rml2pdf/customfonts.py b/openerp/report/render/rml2pdf/customfonts.py
index ede2d91aaed..7f89f324bf7 100644
--- a/openerp/report/render/rml2pdf/customfonts.py
+++ b/openerp/report/render/rml2pdf/customfonts.py
@@ -37,18 +37,30 @@ should have the same filenames, only need the code below).
Due to an awful configuration that ships with reportlab at many Linux
and Ubuntu distros, we have to override the search path, too.
"""
-_fonts_cache = {'registered_fonts': [], 'total_system_fonts': 0}
_logger = logging.getLogger(__name__)
-# Basic fonts familly included in PDF standart, will always be in the font list
+# Basic fonts family included in PDF standart, will always be in the font list
BasePDFFonts = [
- ('Helvetica', 'Helvetica'),
- ('Times', 'Times'),
- ('Courier', 'Courier'),
+ 'Helvetica',
+ 'Times',
+ 'Courier'
]
# List of fonts found on the disk
-CustomTTFonts = []
+CustomTTFonts = BaseCustomTTFonts = [ ('Helvetica', "DejaVu Sans", "DejaVuSans.ttf", 'normal'),
+ ('Helvetica', "DejaVu Sans Bold", "DejaVuSans-Bold.ttf", 'bold'),
+ ('Helvetica', "DejaVu Sans Oblique", "DejaVuSans-Oblique.ttf", 'italic'),
+ ('Helvetica', "DejaVu Sans BoldOblique", "DejaVuSans-BoldOblique.ttf", 'bolditalic'),
+ ('Times', "Liberation Serif", "LiberationSerif-Regular.ttf", 'normal'),
+ ('Times', "Liberation Serif Bold", "LiberationSerif-Bold.ttf", 'bold'),
+ ('Times', "Liberation Serif Italic", "LiberationSerif-Italic.ttf", 'italic'),
+ ('Times', "Liberation Serif BoldItalic", "LiberationSerif-BoldItalic.ttf", 'bolditalic'),
+ ('Courier', "FreeMono", "FreeMono.ttf", 'normal'),
+ ('Courier', "FreeMono Bold", "FreeMonoBold.ttf", 'bold'),
+ ('Courier', "FreeMono Oblique", "FreeMonoOblique.ttf", 'italic'),
+ ('Courier', "FreeMono BoldOblique", "FreeMonoBoldOblique.ttf", 'bolditalic'),
+]
+
# Search path for TTF files, in addition of rl_config.TTFSearchPath
TTFSearchPath = [
@@ -73,7 +85,7 @@ TTFSearchPath = [
'c:/windows/fonts'
]
-def all_sysfonts_list():
+def list_all_sysfonts():
"""
This function returns list of font directories of system.
"""
@@ -89,76 +101,6 @@ def all_sysfonts_list():
filepath.append(os.path.join(dirname, filename))
return filepath
-def init_new_font(familyName, name, font_dir):
- return {
- 'regular':(familyName, name, font_dir, 'regular'),
- 'italic':(),
- 'bold':(familyName, name, font_dir, 'bold'),
- 'bolditalic':(),
- }
-
-def RegisterCustomFonts():
- """
- This function prepares a list for all system fonts to be registered
- in reportlab and returns the updated list with new fonts.
- """
- global CustomTTFonts
- all_system_fonts = all_sysfonts_list()
- if len(all_system_fonts) != _fonts_cache['total_system_fonts']:
- font_modes, last_family, registered_font_list, _fonts_cache['registered_fonts'] = {}, "", [], list(BasePDFFonts)
-
- #Prepares a list of registered fonts. Remove such fonts those don't have cmap for Unicode.
- for dirname in all_system_fonts:
- try:
- font_info = ttfonts.TTFontFile(dirname)
- if font_info.styleName in ('Regular','Normal','Book','Medium', 'Roman'):
- _fonts_cache['registered_fonts'].append((font_info.name, font_info.fullName))
- registered_font_list.append((font_info.familyName, font_info.name, dirname, font_info.styleName.lower().replace(" ", "")))
- _logger.debug("Found font %s at %s", font_info.name, dirname)
- except:
- _logger.warning("Could not register Font %s", dirname)
-
- #Prepare font list for mapping.Each font family requires four type of modes(regular,bold,italic,bolditalic).
- #If all modes are not found, dummy entries are made for remaining modes.
- for familyName, name, font_dir, mode in sorted(registered_font_list):
- if not last_family or not font_modes:
- last_family = familyName
- font_modes = init_new_font(familyName, name, font_dir)
-
- if last_family != familyName:
- # new font familly, adding previous to the list of fonts
- if not font_modes['italic']:
- font_modes['italic'] = font_modes['regular'][:3]+('italic',)
- if not font_modes['bolditalic']:
- font_modes['bolditalic'] = font_modes['bold'][:3]+('bolditalic',)
- CustomTTFonts.extend(font_modes.values())
- font_modes = init_new_font(familyName, name, font_dir)
-
- if (mode== 'normal') or (mode == 'regular') or (mode == 'medium') or (mode == 'book') or (mode == 'roman'):
- font_modes['regular'] = (familyName, name, font_dir, 'regular')
- elif (mode == 'italic') or (mode == 'oblique'):
- font_modes['italic'] = (familyName, name, font_dir, 'italic')
- elif mode == 'bold':
- font_modes['bold'] = (familyName, name, font_dir, 'bold')
- elif (mode == 'bolditalic') or (mode == 'boldoblique'):
- font_modes['bolditalic'] = (familyName, name, font_dir, 'bolditalic')
- last_family = familyName
-
- # add the last one
- if font_modes:
- if not font_modes['italic']:
- font_modes['italic'] = font_modes['regular'][:3]+('italic',)
- if not font_modes['bolditalic']:
- font_modes['bolditalic'] = font_modes['bold'][:3]+('bolditalic',)
- CustomTTFonts.extend(font_modes.values())
-
- _fonts_cache['total_system_fonts'] = len(all_system_fonts)
-
- # remove duplicates
- CustomTTFonts = sorted(list(set(CustomTTFonts)))
- _fonts_cache['registered_fonts'] = sorted(list(set(_fonts_cache['registered_fonts'])))
- return _fonts_cache['registered_fonts']
-
def SetCustomFonts(rmldoc):
""" Map some font names to the corresponding TTF fonts
@@ -167,8 +109,6 @@ def SetCustomFonts(rmldoc):
This function is called once per report, so it should
avoid system-wide processing (cache it, instead).
"""
- if not _fonts_cache['registered_fonts']:
- RegisterCustomFonts()
for name, font, filename, mode in CustomTTFonts:
if os.path.isabs(filename) and os.path.exists(filename):
rmldoc.setTTFontMapping(name, font, filename, mode)
From 3bc24a9f3b62d6c32f851960139dfa239b808529 Mon Sep 17 00:00:00 2001
From: Martin Trigaux
Date: Mon, 14 Oct 2013 16:53:39 +0200
Subject: [PATCH 16/21] [FIX] font: correct action for reloading
bzr revid: mat@openerp.com-20131014145339-p1uz9iwfyf3uhyhr
---
addons/base_setup/res_config.py | 3 +++
addons/base_setup/res_config_view.xml | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/addons/base_setup/res_config.py b/addons/base_setup/res_config.py
index fd28a5fc8ca..06c57f2df5a 100644
--- a/addons/base_setup/res_config.py
+++ b/addons/base_setup/res_config.py
@@ -75,6 +75,9 @@ class base_config_settings(osv.osv_memory):
user.company_id.write({'font': wizard.font.id,'rml_header': self._change_header(user.company_id.rml_header,font_name), 'rml_header2': self._change_header(user.company_id.rml_header2, font_name), 'rml_header3': self._change_header(user.company_id.rml_header3, font_name)})
return {}
+ def act_discover_fonts(self, cr, uid, ids, context=None):
+ return self.pool.get("res.font").discover_fonts(cr, uid, ids, context)
+
# Preferences wizard for Sales & CRM.
# It is defined here because it is inherited independently in modules sale, crm,
# plugin_outlook and plugin_thunderbird.
diff --git a/addons/base_setup/res_config_view.xml b/addons/base_setup/res_config_view.xml
index 6a2c226f467..34a59444fd2 100644
--- a/addons/base_setup/res_config_view.xml
+++ b/addons/base_setup/res_config_view.xml
@@ -95,7 +95,7 @@