[MERGE] Sync with trunk.
bzr revid: tde@openerp.com-20121220091858-ye1t25614ajfv4zl
This commit is contained in:
@@ -93,16 +93,11 @@ The kernel of OpenERP, needed for all installation.
|
||||
'res/res_partner_image_demo.xml',
|
||||
],
|
||||
'test': [
|
||||
'test/base_test.xml',
|
||||
'test/base_test.yml',
|
||||
'test/test_context.xml',
|
||||
'test/bug_lp541545.xml',
|
||||
'test/test_osv_expression.yml',
|
||||
'test/test_ir_rule.yml', # <-- These tests modify/add/delete ir_rules.
|
||||
# Commented because this takes some time.
|
||||
# This must be (un)commented with the corresponding import statement
|
||||
# in test/__init__.py.
|
||||
# 'test/test_ir_cron.yml', # <-- These tests perform a roolback.
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': True,
|
||||
|
||||
@@ -8,14 +8,14 @@ msgstr ""
|
||||
"Project-Id-Version: openobject-server\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-17 20:41+0000\n"
|
||||
"PO-Revision-Date: 2012-12-19 19:54+0000\n"
|
||||
"Last-Translator: David Bowers <sales@skitzotek.com>\n"
|
||||
"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-18 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16372)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -4199,6 +4199,13 @@ msgid ""
|
||||
"invite.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"This module updates memos inside OpenERP when using an external pad\n"
|
||||
"=====================================================================\n"
|
||||
"\n"
|
||||
"Use to update your text memo in real time with a user following that you "
|
||||
"invite.\n"
|
||||
"\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:609
|
||||
|
||||
+959
-196
File diff suppressed because it is too large
Load Diff
@@ -7,14 +7,14 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-11-05 00:42+0000\n"
|
||||
"PO-Revision-Date: 2012-12-20 02:14+0000\n"
|
||||
"Last-Translator: Cristian Salamea (Gnuthink) <ovnicraft@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-04 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16335)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-20 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -24,6 +24,10 @@ msgid ""
|
||||
"================================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Módulo para la emisión e impresión de cheques\n"
|
||||
"================================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
@@ -59,7 +63,7 @@ msgstr "Código vista"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale_stock
|
||||
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
|
||||
msgstr ""
|
||||
msgstr "Presupuesto, órdenes de venta, entrega y control de facturación"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
@@ -88,12 +92,12 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_point_of_sale
|
||||
msgid "Touchscreen Interface for Shops"
|
||||
msgstr ""
|
||||
msgstr "Interfaz de pantalla táctil para tiendas"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
|
||||
msgid "Indian Payroll"
|
||||
msgstr ""
|
||||
msgstr "Nomina de la India"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,model:0
|
||||
@@ -123,6 +127,17 @@ msgid ""
|
||||
" * Product Attributes\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Módulo que añade fabricantes y atributos en el formulario de producto.\n"
|
||||
"===========================================================\n"
|
||||
"\n"
|
||||
"Puede definir los siguientes campos para un producto:\n"
|
||||
"-------------------------------------------------\n"
|
||||
"* Fabricante\n"
|
||||
"* Nombre del producto del fabricante\n"
|
||||
"* Código del producto del fabricante\n"
|
||||
"* Atributos del producto\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.client,params:0
|
||||
@@ -136,11 +151,14 @@ msgid ""
|
||||
"The module adds google user in res user.\n"
|
||||
"========================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"El módulo añade usuarios Google al registro de usuarios\n"
|
||||
"============================================\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,employee:0
|
||||
msgid "Check this box if this contact is an Employee."
|
||||
msgstr ""
|
||||
msgstr "Marque si el contacto es un empleado"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,domain:0
|
||||
@@ -171,7 +189,7 @@ msgstr "Ventana destino"
|
||||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_rml:0
|
||||
msgid "Main Report File Path"
|
||||
msgstr ""
|
||||
msgstr "Ruta de archivo del informe principal"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
|
||||
@@ -269,7 +287,7 @@ msgstr "creado."
|
||||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_xsl:0
|
||||
msgid "XSL Path"
|
||||
msgstr ""
|
||||
msgstr "Ruta XSL"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_tr
|
||||
@@ -295,7 +313,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_multi_currency
|
||||
msgid "Multi Currencies"
|
||||
msgstr ""
|
||||
msgstr "Multimoneda"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_cl
|
||||
@@ -307,6 +325,12 @@ msgid ""
|
||||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Plan de cuentas y localización de impuestos chilenos.\n"
|
||||
"==============================================\n"
|
||||
"Plan contable chileno e impuestos de acuerdo a disposiciones vigentes\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
@@ -319,6 +343,7 @@ msgid ""
|
||||
"The internal user that is in charge of communicating with this contact if "
|
||||
"any."
|
||||
msgstr ""
|
||||
"El usuario interno encargado de comunicarse con este contacto si lo hubiese."
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-18 22:00+0000\n"
|
||||
"PO-Revision-Date: 2012-12-19 19:49+0000\n"
|
||||
"Last-Translator: Ahti Hinnov <sipelgas@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-19 05:13+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-20 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
@@ -531,7 +531,7 @@ msgstr "Kuupäeva vorming"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_report_designer
|
||||
msgid "OpenOffice Report Designer"
|
||||
msgstr ""
|
||||
msgstr "OpenOffice aruande kujundaja"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.an
|
||||
@@ -980,7 +980,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:res.users:0
|
||||
msgid "Email Preferences"
|
||||
msgstr ""
|
||||
msgstr "E-posti seadistused"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:196
|
||||
@@ -1571,7 +1571,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Report Footer Configuration"
|
||||
msgstr ""
|
||||
msgstr "Aruande jaluse seadistamine"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.translation,comments:0
|
||||
@@ -1951,7 +1951,7 @@ msgstr "Lisatud mudel"
|
||||
#. module: base
|
||||
#: field:res.partner.bank,footer:0
|
||||
msgid "Display on Reports"
|
||||
msgstr ""
|
||||
msgstr "Kuva aruannetes"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_project_timesheet
|
||||
@@ -2144,7 +2144,7 @@ msgstr "Hispaania / Español"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Korean (KP) / 한국어 (KP)"
|
||||
msgstr ""
|
||||
msgstr "Korea (KP) / 한국어 (KP)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ax
|
||||
@@ -2487,7 +2487,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.company,rml_header1:0
|
||||
msgid "Company Slogan"
|
||||
msgstr ""
|
||||
msgstr "Ettevõtte loosung"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bb
|
||||
@@ -2537,7 +2537,7 @@ msgstr "Kreeka / Ελληνικά"
|
||||
#. module: base
|
||||
#: field:res.company,custom_footer:0
|
||||
msgid "Custom Footer"
|
||||
msgstr ""
|
||||
msgstr "Kohandatud jalus"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_crm
|
||||
@@ -2593,7 +2593,7 @@ msgstr "Arveldus"
|
||||
#. module: base
|
||||
#: field:ir.ui.view_sc,name:0
|
||||
msgid "Shortcut Name"
|
||||
msgstr "Kiirkorralduse nimi"
|
||||
msgstr "Otsetee nimi"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,contact_address:0
|
||||
@@ -3009,7 +3009,7 @@ msgstr "Norfolki saar"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Korean (KR) / 한국어 (KR)"
|
||||
msgstr ""
|
||||
msgstr "Korea (KR) / 한국어 (KR)"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,model:0
|
||||
@@ -3636,7 +3636,7 @@ msgstr ""
|
||||
#: field:res.company,rml_footer:0
|
||||
#: field:res.company,rml_footer_readonly:0
|
||||
msgid "Report Footer"
|
||||
msgstr ""
|
||||
msgstr "Aruande jalus"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.lang,direction:0
|
||||
@@ -3868,7 +3868,7 @@ msgstr "Peata kõik"
|
||||
#. module: base
|
||||
#: field:res.company,paper_format:0
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
msgstr "Paberi formaat"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_note_pad
|
||||
@@ -4714,7 +4714,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Portuguese (BR) / Português (BR)"
|
||||
msgstr ""
|
||||
msgstr "Portugali (BR) / Português (BR)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_needaction_mixin
|
||||
@@ -5154,7 +5154,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Preview Header/Footer"
|
||||
msgstr ""
|
||||
msgstr "Päise/jaluse eelvaade"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.menu,parent_id:0
|
||||
@@ -5841,7 +5841,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:ir.ui.view_sc:0
|
||||
msgid "Shortcut"
|
||||
msgstr "Lühend"
|
||||
msgstr "Otsetee"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.data,date_init:0
|
||||
@@ -6718,7 +6718,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: selection:res.currency,position:0
|
||||
msgid "After Amount"
|
||||
msgstr ""
|
||||
msgstr "Peale summat"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -7044,7 +7044,7 @@ msgstr "Mitmel dokumendil"
|
||||
#: view:res.users:0
|
||||
#: view:wizard.ir.model.menu.create:0
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
msgstr "või"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_accountant
|
||||
@@ -7608,7 +7608,7 @@ msgstr "Kohandatud väli"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_account_accountant
|
||||
msgid "Financial and Analytic Accounting"
|
||||
msgstr ""
|
||||
msgstr "Finants- ja analüütiline raamatupidamine"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_project
|
||||
@@ -7708,7 +7708,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:res.partner.bank.type,name:base.bank_normal
|
||||
msgid "Normal Bank Account"
|
||||
msgstr ""
|
||||
msgstr "Tavaline pangakonto"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.wizard:0
|
||||
@@ -7980,7 +7980,7 @@ msgstr "Tühista eemaldus"
|
||||
#. module: base
|
||||
#: view:res.bank:0
|
||||
msgid "Communication"
|
||||
msgstr "Suhtlemine"
|
||||
msgstr "Kontakt"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_analytic
|
||||
@@ -9571,7 +9571,7 @@ msgstr "Paigaldamise ootel"
|
||||
#: model:ir.module.module,shortdesc:base.module_base
|
||||
#: field:res.currency,base:0
|
||||
msgid "Base"
|
||||
msgstr "Baas"
|
||||
msgstr "Alus"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.data,model:0
|
||||
@@ -9660,7 +9660,7 @@ msgstr "Minutid"
|
||||
#. module: base
|
||||
#: view:res.currency:0
|
||||
msgid "Display"
|
||||
msgstr ""
|
||||
msgstr "Kuvamine"
|
||||
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_multi_company
|
||||
@@ -12471,7 +12471,7 @@ msgstr "Küpros"
|
||||
#. module: base
|
||||
#: field:res.users,new_password:0
|
||||
msgid "Set Password"
|
||||
msgstr ""
|
||||
msgstr "Määra salasõna"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,subject:0
|
||||
@@ -12503,7 +12503,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: selection:res.currency,position:0
|
||||
msgid "Before Amount"
|
||||
msgstr ""
|
||||
msgstr "Enne summat"
|
||||
|
||||
#. module: base
|
||||
#: field:res.request,act_from:0
|
||||
@@ -12572,7 +12572,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.company,company_registry:0
|
||||
msgid "Company Registry"
|
||||
msgstr "Ettevõtte register"
|
||||
msgstr "Ettevõtte registrikood"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
@@ -12917,7 +12917,7 @@ msgstr "Zaire"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_project
|
||||
msgid "Projects, Tasks"
|
||||
msgstr ""
|
||||
msgstr "Projektid, ülesanded"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.instance,res_id:0
|
||||
|
||||
@@ -7,14 +7,14 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-17 20:19+0000\n"
|
||||
"PO-Revision-Date: 2012-12-19 20:48+0000\n"
|
||||
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
|
||||
"Language-Team: openerp-translators\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-18 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16372)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
#. module: base
|
||||
@@ -714,7 +714,7 @@ msgstr "Palau"
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Sales & Purchases"
|
||||
msgstr "Prodaja i naručivanje"
|
||||
msgstr "Prodaja i nabava"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.translation:0
|
||||
@@ -1511,7 +1511,7 @@ msgstr ""
|
||||
#: model:ir.module.category,name:base.module_category_purchase_management
|
||||
#: model:ir.ui.menu,name:base.menu_purchase_root
|
||||
msgid "Purchases"
|
||||
msgstr "Nabave"
|
||||
msgstr "Nabava"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.md
|
||||
|
||||
+281
-15
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-18 17:37+0000\n"
|
||||
"PO-Revision-Date: 2012-12-19 16:59+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: Hungarian <openerp-hungarian-team@lists.launchpad.net>\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-19 05:14+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-20 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
@@ -251,6 +251,35 @@ msgid ""
|
||||
"* Planned Revenue by Stage and User (graph)\n"
|
||||
"* Opportunities by Stage (graph)\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Az alapértelemezett OpenERP CRM Ügyfélkapcsolat-kezelés\n"
|
||||
"=====================================================\n"
|
||||
"\n"
|
||||
"Ez az alkalmazás lehetővé teszi egy csoportnak, hogy inteligensen és "
|
||||
"hatékonyan kezelje a vezetői gyűléseket, lehetőségeket, találkozókat és "
|
||||
"telefonokat.\n"
|
||||
"\n"
|
||||
"Kezeli a kulcsfontosságú munkákat mint kommunikáció, azonosítás, kiosztás, "
|
||||
"felosztás és értesítés.\n"
|
||||
"\n"
|
||||
"OpenERP biztosítja, hogy minden esetben nyomon követhetőek legyenek a "
|
||||
"felhasználók, vásárlók és beszállítók. Autómatikusan küldhető emlékeztető, "
|
||||
"kiterjezti az igényt, bekapcsol speciális eszközt és még több cselekvésen "
|
||||
"alapuló módot, melyet a vállalkozása szabályaira szabhat.\n"
|
||||
"\n"
|
||||
"A legnayobb dolog ebben a rendszerben, hgoy a felhasználónak nem kell semmi "
|
||||
"speciálisat véghezvinnie. A CRM modulnak van egy e-amil átjárója ami "
|
||||
"szinkronizálja az e-maileket az OpenERP által. Így, a felhasználók e-"
|
||||
"maileket küldhetnek az igénylés helyére.\n"
|
||||
"\n"
|
||||
"OpenERP törődni fog az üzenetek megköszönésével, automatikusan átirányítva a "
|
||||
"megfelelő osztályhoz, biztosítva a jövőbeni munkafolyamat megfelő helyét.\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"Dashboard / irányítópult a CRM-ben, ezt is beleértve:\n"
|
||||
"-------------------------------\n"
|
||||
"* Tervezett bevétel szintek és felhasználók szerint (grafikon)\n"
|
||||
"* Lehetőségek szintenként (grafikon)\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:397
|
||||
@@ -5753,6 +5782,23 @@ msgid ""
|
||||
"since it's the same which has been renamed.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Ez a modul lehetővé teszi a felhasználók részére a partnerek leválogatását.\n"
|
||||
"=================================================================\n"
|
||||
"\n"
|
||||
"A profil kritériumokat használja az előző leválogató modulból ami fel lett "
|
||||
"javítva. \n"
|
||||
"Köszönhető az új felfogású kikérdezőnek. Újra tudja csoportosítani a "
|
||||
"kérdéseket\n"
|
||||
"egy kikérdezőbe és direkt használhatja azokat a partnerekhez.\n"
|
||||
"\n"
|
||||
"Össze lett kapcsolva az előző CRM & SRM leválogatás eszközzel mivel ezek át "
|
||||
"lettek fedve.\n"
|
||||
"\n"
|
||||
" **Megjegyzés** ez a modul nem kompatibilis a leválogató modullal, mivel "
|
||||
"ez ugyanaz, csak más \n"
|
||||
"másként lett elnevezve.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gt
|
||||
@@ -6358,7 +6404,7 @@ msgstr "Man Sziget"
|
||||
#. module: base
|
||||
#: help:ir.actions.client,res_model:0
|
||||
msgid "Optional model, mostly used for needactions."
|
||||
msgstr ""
|
||||
msgstr "Választható modell, főként szükséges műveletekhez használják."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.attachment,create_uid:0
|
||||
@@ -6523,6 +6569,58 @@ msgid ""
|
||||
" * Zip return for separated PDF\n"
|
||||
" * Web client WYSIWYG\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Ez a modul hozzáad egy Kimutatás motort WebKit könyvtárt alapul véve "
|
||||
"(wkhtmltopdf) a HTML +CCS megalkotott kimutatások támogatásához.\n"
|
||||
"============================================================================="
|
||||
"========================================\n"
|
||||
"\n"
|
||||
"A modul felépítését és egy pár kódolást a report_openoffice modul "
|
||||
"ösztönözte.\n"
|
||||
"\n"
|
||||
"A modul lehetővé teszi:\n"
|
||||
"------------------\n"
|
||||
" - HTML kimutatás meghatározását\n"
|
||||
" - Többszörös fejléc támogatása\n"
|
||||
" - Többszörös logó használat\n"
|
||||
" - Többszörös vállalat támogatás\n"
|
||||
" - HTML és CSS-3 támogatás (az aktuális WebKIT verzió határain belül)\n"
|
||||
" - JavaScript támogatás\n"
|
||||
" - Nyers HTML debugger\n"
|
||||
" - Könyv nyomtatási lehetőség\n"
|
||||
" - Margó meghatározás\n"
|
||||
" - Papír méret meghatározás\n"
|
||||
"\n"
|
||||
"Többszörös fejléc és logó meghatározható vállalatonként. CCS stílus, fejléc "
|
||||
"és\n"
|
||||
"lábjegyzet meghatározható vállalatonként.\n"
|
||||
"\n"
|
||||
"Például kimutatást megtekinthet webkit_report_sample modulban, és ebben a "
|
||||
"videóban:\n"
|
||||
" http://files.me.com/nbessi/06n92k.mov\n"
|
||||
"\n"
|
||||
"Követelmények és telepítés:\n"
|
||||
"------------------------------\n"
|
||||
"Ehhez a modulhoz kell a ``wkthtmltopdf`` könyvtár a HTML dokumentumok PDF "
|
||||
"ábrázolásához.\n"
|
||||
"Verzió 0.9.9 vagy későbbi szükséges, és megtalálható a \n"
|
||||
"http://code.google.com/p/wkhtmltopdf/ a Linux, Mac OS X (i386) és Windows "
|
||||
"(32bits) rendszerekhez.\n"
|
||||
"\n"
|
||||
"A könyvtár OpenERP szerveren való telepítése után, be kell állítani az "
|
||||
"elérési utat a ``wkthtmltopdf`` futtatójához minden vállalathoz.\n"
|
||||
"\n"
|
||||
"Ha nem talál fejlécet/lábjegyzetet vagy egyéb probléma merül fel a Linuxon, "
|
||||
"akkor győződjön meg, hogy telepíti a könyvtár 'static' verzióját. UBUNTU "
|
||||
"alatt ez ey ismert ``wkhtmltopdf`` probléma.\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"Tennivaló:\n"
|
||||
"-----\n"
|
||||
" * JavaScript támogatás aktiválás deaktiválás\n"
|
||||
" * Gyűjtő és könyv formátum támogatás\n"
|
||||
" * Zip visszaadás egy külön PDF-hez\n"
|
||||
" * Web kliens WYSIWYG\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_sale_salesman_all_leads
|
||||
@@ -8175,6 +8273,30 @@ msgid ""
|
||||
"* In a module, so that administrators and users of OpenERP who do not\n"
|
||||
" need or want an online import can avoid it being available to users.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Új fájl import kiterjesztések az OpenERP rendszerhez\n"
|
||||
"======================================\n"
|
||||
"\n"
|
||||
"Az OpenERP fájl rendszerének újra-implementálása:\n"
|
||||
"\n"
|
||||
"* Szerver oldal, az előző rendszer a legtöbb végrehalytást a kliensre "
|
||||
"kényszerítette\n"
|
||||
" amely megduplázta az energiát (kliensek közt), az importálási rendszert \n"
|
||||
" nehézkessé teszi a kliens nélkül(direkt RPC vagy\n"
|
||||
" más automata formátumnál) és az export/import rendszer érthetőségét\n"
|
||||
" is nehézkessé teszi amint 3 + különböző projekten hajtódik végre.\n"
|
||||
"\n"
|
||||
"* Érthetőbben a felhasználók és partnerek a saját import kivitelezést tudnak "
|
||||
"\n"
|
||||
" készíteni más fájl formátumokból (pl. OpenDocument fájlok)\n"
|
||||
" ami leegyszerűsítheti a munka folyamatuk kezelését az adat forrásból "
|
||||
"való\n"
|
||||
" előállítását.\n"
|
||||
"\n"
|
||||
"* A modulban, azok az OpenERP adminisztrátorok és felhasználók akik nem\n"
|
||||
" igénylik az online importot biztosíthatják, hogy azok nem lesznek "
|
||||
"elérhetők \n"
|
||||
" a felhasználók részére.\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.currency,position:0
|
||||
@@ -12740,7 +12862,7 @@ msgstr "Olvasási hozzáférési jog"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_analytic_user_function
|
||||
msgid "Jobs on Contracts"
|
||||
msgstr ""
|
||||
msgstr "Feladatok a szerződésekben"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_lang.py:187
|
||||
@@ -14646,6 +14768,8 @@ msgid ""
|
||||
"Helps you manage your inventory and main stock operations: delivery orders, "
|
||||
"receptions, etc."
|
||||
msgstr ""
|
||||
"Segít Önnek a készletek és a fő készletműveletek kezelésében: "
|
||||
"szállítólevelek, áruátvételek, stb."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_base_module_update
|
||||
@@ -16029,6 +16153,7 @@ msgstr ""
|
||||
#: help:ir.actions.act_window,usage:0
|
||||
msgid "Used to filter menu and home actions from the user form."
|
||||
msgstr ""
|
||||
"A menű és főoldal műveletek szűrésére használták a felhasználói űrlapból."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sa
|
||||
@@ -16050,6 +16175,15 @@ msgid ""
|
||||
"order.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Ez a modul lehetőséget ad MRP és eladási modul egyszeri telepítésére.\n"
|
||||
"============================================================================="
|
||||
"=======\n"
|
||||
"\n"
|
||||
"Alapvetően akkor használt, ha nyomon szeretnénk követni a megrendelésekből "
|
||||
"generált termelési megrendeléseket. A gyártási megrendeléshez ad hozzá "
|
||||
"eladás nevet és eladási hivatkozást.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:147
|
||||
@@ -16073,6 +16207,12 @@ msgid ""
|
||||
"=========================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Ez a modul hozzáadja a portáljához a project/terv menűt és annak "
|
||||
"tulajdonságait (feladatait) ha a projekt/terv és portál telepítve vannak.\n"
|
||||
"============================================================================="
|
||||
"=========================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/wizard/base_module_configuration.py:38
|
||||
@@ -16085,7 +16225,7 @@ msgstr "Rendszer konfigurálása kész"
|
||||
#: view:ir.config_parameter:0
|
||||
#: model:ir.ui.menu,name:base.ir_config_menu
|
||||
msgid "System Parameters"
|
||||
msgstr ""
|
||||
msgstr "Rendszer paraméterek"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_ch
|
||||
@@ -16203,7 +16343,7 @@ msgstr "Művelet több dokumentumon"
|
||||
#: model:ir.actions.act_window,name:base.action_partner_title_partner
|
||||
#: model:ir.ui.menu,name:base.menu_partner_title_partner
|
||||
msgid "Titles"
|
||||
msgstr ""
|
||||
msgstr "Címek"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_anonymization
|
||||
@@ -16226,6 +16366,22 @@ msgid ""
|
||||
"anonymization process to recover your previous data.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Ez a modul lehetővé teszi az adatbázis titkosítását.\n"
|
||||
"===============================================\n"
|
||||
"\n"
|
||||
"Ezzel a modullal a bizalmas adatait biztonságban tarthatja egy megadott "
|
||||
"adatbázisban.\n"
|
||||
"Ez az eljárás hasznos, ha költöztetéskor megakarja védeni a saját ügyfelei "
|
||||
"bizalmas adatait. \n"
|
||||
"Az alapelv az, hogy egy titkosító eszközt futtat amely elrejti a bizalmas "
|
||||
"adatokat (ki lesznek \n"
|
||||
"cserélve ‘XXX’ karakterekkel). Ekkor elküldheti a titkosított adatokat a "
|
||||
"költözési csoporhoz.\n"
|
||||
"Amikor visszatértek a költöztetni kívánt adatok, akkor vissza lehet állítani "
|
||||
"azokat\n"
|
||||
"a titkosító eljárással az adatok visszanyeréssel.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_analytics
|
||||
@@ -16237,6 +16393,12 @@ msgid ""
|
||||
"Collects web application usage with Google Analytics.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Google Analytics.\n"
|
||||
"==============================\n"
|
||||
"\n"
|
||||
"Összegyűjti a web alkalmazás használaát a Google Analytics rendszerrel.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: help:ir.sequence,implementation:0
|
||||
@@ -16245,6 +16407,9 @@ msgid ""
|
||||
"later is slower than the former but forbids any gap in the sequence (while "
|
||||
"they are possible in the former)."
|
||||
msgstr ""
|
||||
"Két sorrendet ajánl a tárgy beillesztésthez: Alapértelmezett és 'Nincs rés'. "
|
||||
"A későbbi lasúbb mint a mostani, de megtilt minden rést ami ebben a "
|
||||
"sorrendben van (mivel ezek az előzőben lehettek)."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gn
|
||||
@@ -16280,7 +16445,7 @@ msgstr "Hiba ! Nem hozhat létre rekurzív menüket."
|
||||
#. module: base
|
||||
#: view:ir.translation:0
|
||||
msgid "Web-only translations"
|
||||
msgstr ""
|
||||
msgstr "Kizárólag-web fordítások"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
@@ -16337,16 +16502,60 @@ msgid ""
|
||||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Belga számlatükör és lokalizáció \n"
|
||||
"\n"
|
||||
"This is the base module to manage the accounting chart for Belgium in "
|
||||
"OpenERP.\n"
|
||||
"============================================================================="
|
||||
"=\n"
|
||||
"\n"
|
||||
"After installing this module, the Configuration wizard for accounting is "
|
||||
"launched.\n"
|
||||
" * We have the account templates which can be helpful to generate Charts "
|
||||
"of Accounts.\n"
|
||||
" * On that particular wizard, you will be asked to pass the name of the "
|
||||
"company,\n"
|
||||
" the chart template to follow, the no. of digits to generate, the code "
|
||||
"for your\n"
|
||||
" account and bank account, currency to create journals.\n"
|
||||
"\n"
|
||||
"Thus, the pure copy of Chart Template is generated.\n"
|
||||
"\n"
|
||||
"Wizards provided by this module:\n"
|
||||
"--------------------------------\n"
|
||||
" * Partner VAT Intra: Enlist the partners with their related VAT and "
|
||||
"invoiced\n"
|
||||
" amounts. Prepares an XML file format.\n"
|
||||
" \n"
|
||||
" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium "
|
||||
"Statements/Partner VAT Intra\n"
|
||||
" * Periodical VAT Declaration: Prepares an XML file for Vat Declaration "
|
||||
"of\n"
|
||||
" the Main company of the User currently Logged in.\n"
|
||||
" \n"
|
||||
" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium "
|
||||
"Statements/Periodical VAT Declaration\n"
|
||||
" * Annual Listing Of VAT-Subjected Customers: Prepares an XML file for "
|
||||
"Vat\n"
|
||||
" Declaration of the Main company of the User currently Logged in Based "
|
||||
"on\n"
|
||||
" Fiscal year.\n"
|
||||
" \n"
|
||||
" **Path to access :** Invoicing/Reporting/Legal Reports/Belgium "
|
||||
"Statements/Annual Listing Of VAT-Subjected Customers\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_gengo
|
||||
msgid "Automated Translations through Gengo API"
|
||||
msgstr ""
|
||||
msgstr "Automatikus fordítás a Gengo API keresztül"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_payment
|
||||
msgid "Suppliers Payment Management"
|
||||
msgstr ""
|
||||
msgstr "Szállítói kifizetések kezelése"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sv
|
||||
@@ -16376,7 +16585,7 @@ msgstr "Thaiföld"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_account_voucher
|
||||
msgid "Send Invoices and Track Payments"
|
||||
msgstr ""
|
||||
msgstr "Számlák küldése és fizetések nyomonkövetése"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_crm_config_lead
|
||||
@@ -16387,6 +16596,7 @@ msgstr "Lehetőségek"
|
||||
#: model:res.country,name:base.gg
|
||||
msgid "Guernsey"
|
||||
msgstr ""
|
||||
"Guernsey-sziget - Guernsey valutaunióban van az Egyesült Királysággal"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -16406,6 +16616,17 @@ msgid ""
|
||||
" bilgileriniz, ilgili para birimi gibi bilgiler isteyecek.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Török számlatükör és lokalizáció\n"
|
||||
"\n"
|
||||
"Türkiye için Tek düzen hesap planı şablonu OpenERP Modülü.\n"
|
||||
"==========================================================\n"
|
||||
"\n"
|
||||
"Bu modül kurulduktan sonra, Muhasebe yapılandırma sihirbazı çalışır\n"
|
||||
" * Sihirbaz sizden hesap planı şablonu, planın kurulacağı şirket, banka "
|
||||
"hesap\n"
|
||||
" bilgileriniz, ilgili para birimi gibi bilgiler isteyecek.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: selection:workflow.activity,join_mode:0
|
||||
@@ -16418,6 +16639,8 @@ msgstr "És"
|
||||
msgid ""
|
||||
"Database identifier of the record to which this applies. 0 = for all records"
|
||||
msgstr ""
|
||||
"Adatbázis azonosító arra a rekordra amelyre ez vonatkozik. 0 = összes "
|
||||
"rekordra"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.fields,relation:0
|
||||
@@ -16427,7 +16650,7 @@ msgstr "Objektum kapcsolat"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_voucher
|
||||
msgid "eInvoicing & Payments"
|
||||
msgstr ""
|
||||
msgstr "Számlázás & Kifizetések"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_base_crypt
|
||||
@@ -16463,6 +16686,42 @@ msgid ""
|
||||
"This module is currently not compatible with the ``user_ldap`` module and\n"
|
||||
"will disable LDAP authentication completely if installed at the same time.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Rendesszövegű jelszó kiváltása biztonsági hasító függvénnyel az "
|
||||
"adatbázisban.\n"
|
||||
"================================================================\n"
|
||||
"\n"
|
||||
"A meglévő felhasználói adatbázisban, a rendesszövegű jelszavak azonnal el "
|
||||
"lesznek távolítva\n"
|
||||
"amint telepítésre kerül a base_crypt.\n"
|
||||
"\n"
|
||||
"Minden jelszó ki lesz cserélve egy biztonságos, konzervált, kriptográfiai "
|
||||
"hasító függvénnyel, \n"
|
||||
"ezzel megakadályozva az eredeti jelszó kiolvasását az adatbázisból.\n"
|
||||
"\n"
|
||||
"Miután telepítette ezt a modult, nem lesz lehetősége az elfelejtett jelszó "
|
||||
"visszafejtésére \n"
|
||||
"a felhasználók részéről, az adminisztátor egyedüli lehetősége lesz egy új "
|
||||
"jelszó megadása.\n"
|
||||
"\n"
|
||||
"Biztonsági figyelmeztetés:\n"
|
||||
"-----------------\n"
|
||||
"Ennek a modulnak a telepítésével nem hagyhatja figyelmen kívül a többi "
|
||||
"biztonsági intézkedést,\n"
|
||||
"mivel a jelszó a hálózaton keresztül kódolatlanul halad keresztül, kivéve, "
|
||||
"ha \n"
|
||||
"biztonsági protokolt használ mint a XML-RPCS vagy HTTPS.\n"
|
||||
"\n"
|
||||
"Ez nem védi meg az adatbázis többi részét, mely bizalmas\n"
|
||||
"adatokat is tartalmazhat. Pontos biztonsági intézkedést kell beileszteni\n"
|
||||
"a rendszer adminisztrátornak minden területen, mint: adatbázis védelmi "
|
||||
"mentések,\n"
|
||||
"rendszer fájlok, távoli héj hozzáférések, fizikai szerver hozzáférések.\n"
|
||||
"\n"
|
||||
"Kölcsönhatás az LDAP azonosítással:\n"
|
||||
"-------------------------------------\n"
|
||||
"Ez a modul most még nem kompatibilis a ``user_ldap`` modullal és\n"
|
||||
"ki fogja iktatni a LDAP azonosítást teljesen ha ugyanakkor telepítettek.\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
@@ -16499,12 +16758,12 @@ msgstr "Valuta árfolyam"
|
||||
#: view:base.module.upgrade:0
|
||||
#: field:base.module.upgrade,module_info:0
|
||||
msgid "Modules to Update"
|
||||
msgstr ""
|
||||
msgstr "Frissítendő modulok"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_custom_multicompany
|
||||
msgid "Multi-Companies"
|
||||
msgstr ""
|
||||
msgstr "Többszörös-vállalatok"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow,osv:0
|
||||
@@ -16516,12 +16775,12 @@ msgstr "Erőforrás objektum"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_crm_helpdesk
|
||||
msgid "Helpdesk"
|
||||
msgstr ""
|
||||
msgstr "Ügyfélszolgálat"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.rule,perm_write:0
|
||||
msgid "Apply for Write"
|
||||
msgstr ""
|
||||
msgstr "Íráshoz alkamaz"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_stock
|
||||
@@ -16569,6 +16828,11 @@ msgid ""
|
||||
"Web pages\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Oldalak\n"
|
||||
"=====\n"
|
||||
"Web oldalak\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,code:0
|
||||
@@ -16576,6 +16840,8 @@ msgid ""
|
||||
"Python code to be executed if condition is met.\n"
|
||||
"It is a Python block that can use the same values as for the condition field"
|
||||
msgstr ""
|
||||
"Python code to be executed if condition is met.\n"
|
||||
"It is a Python block that can use the same values as for the condition field"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.grant_menu_access
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-19 05:14+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-18 18:59+0000\n"
|
||||
"PO-Revision-Date: 2012-12-19 19:34+0000\n"
|
||||
"Last-Translator: Fekete Mihai <mihai@erpsystems.ro>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-19 05:14+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
@@ -327,7 +327,7 @@ msgstr "creat(a)."
|
||||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_xsl:0
|
||||
msgid "XSL Path"
|
||||
msgstr ""
|
||||
msgstr "Ruta XSL"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_tr
|
||||
@@ -353,7 +353,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_multi_currency
|
||||
msgid "Multi Currencies"
|
||||
msgstr ""
|
||||
msgstr "Mzi multe valute"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_cl
|
||||
@@ -365,11 +365,17 @@ msgid ""
|
||||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Localizarea planului contabil si fiscal chilian\n"
|
||||
"==============================================\n"
|
||||
"Plan contabil si fiscal chilian in conformitate cu dispozitiile in vigoare\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
msgid "Sales Management"
|
||||
msgstr "Gestiune vanzari"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,user_id:0
|
||||
@@ -377,6 +383,8 @@ msgid ""
|
||||
"The internal user that is in charge of communicating with this contact if "
|
||||
"any."
|
||||
msgstr ""
|
||||
"Utilizatorul intern care este responsabil cu comunicarea cu acest contact, "
|
||||
"daca exista."
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
@@ -386,7 +394,7 @@ msgstr "Cauta Partener"
|
||||
#. module: base
|
||||
#: field:ir.module.category,module_nr:0
|
||||
msgid "Number of Modules"
|
||||
msgstr "Numar de module"
|
||||
msgstr "Numar de Module"
|
||||
|
||||
#. module: base
|
||||
#: help:multi_company.default,company_dest_id:0
|
||||
@@ -411,6 +419,15 @@ msgid ""
|
||||
" * Commitment Date\n"
|
||||
" * Effective Date\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Adauga informatii suplimentare despre date la comanda de vanzare.\n"
|
||||
"===================================================\n"
|
||||
"\n"
|
||||
"Puteti adauga urmatoarele date suplimentare la o comanda de vanzare:\n"
|
||||
"-----------------------------------------------------------\n"
|
||||
" * Data Solicitata\n"
|
||||
" * Data Angajament\n"
|
||||
" * Data Efectiva\n"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,res_id:0
|
||||
@@ -418,6 +435,8 @@ msgid ""
|
||||
"Database ID of record to open in form view, when ``view_mode`` is set to "
|
||||
"'form' only"
|
||||
msgstr ""
|
||||
"ID baza de date a inregistrarii de deschis in vizualizare formular, atunci "
|
||||
"cand ``modul_vizualizare`` este setat doar pe 'formular'"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.address,name:0
|
||||
@@ -468,11 +487,18 @@ msgid ""
|
||||
"document and Wiki based Hidden.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Programul de instalare Ascuns bazat pe cunostinte.\n"
|
||||
"=====================================\n"
|
||||
"\n"
|
||||
"Face Configuratia Aplicatiei Cunostinte disponibila, de unde puteti instala\n"
|
||||
"documente si Ascuns bazat pe Wiki.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_customer_relationship_management
|
||||
msgid "Customer Relationship Management"
|
||||
msgstr "Gestionarea relatiilor cu clientii"
|
||||
msgstr "Gestionarea Relatiilor cu Clientii"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_delivery
|
||||
@@ -486,6 +512,14 @@ msgid ""
|
||||
"invoices from picking, OpenERP is able to add and compute the shipping "
|
||||
"line.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Va permite sa adaugati metode de livrare la comenzile de vanzare si "
|
||||
"ridicare.\n"
|
||||
"==============================================================\n"
|
||||
"\n"
|
||||
"Va puteti defini propriile grile de preturi pentru transport si livrare. "
|
||||
"Atunci cand creati \n"
|
||||
"facturi la ridicare, OpenERP poate adauga si calcula linia de transport.\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_filters.py:83
|
||||
@@ -494,6 +528,8 @@ msgid ""
|
||||
"There is already a shared filter set as default for %(model)s, delete or "
|
||||
"change it before setting a new default"
|
||||
msgstr ""
|
||||
"Exista deja un filtru comun setat ca default pentru %(model)s, stergeti-l "
|
||||
"sau schimbati-l inainte de a seta unul nou."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2648
|
||||
@@ -536,7 +572,7 @@ msgstr "Obiect Sursa"
|
||||
#. module: base
|
||||
#: model:res.partner.bank.type,format_layout:base.bank_normal
|
||||
msgid "%(bank_name)s: %(acc_number)s"
|
||||
msgstr "%(bank_name)s: %(acc_number)s"
|
||||
msgstr "%(nume_banca)s: %(numar_cont)s"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.todo:0
|
||||
@@ -591,12 +627,12 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:ir.model.relation,name:0
|
||||
msgid "Relation Name"
|
||||
msgstr ""
|
||||
msgstr "Nume Relatie"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
msgid "Create Access Right"
|
||||
msgstr ""
|
||||
msgstr "Creeaza Drept de acces"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.tv
|
||||
@@ -636,7 +672,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:workflow.transition:0
|
||||
msgid "Workflow Transition"
|
||||
msgstr ""
|
||||
msgstr "Tranzitie Flux de lucru"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gf
|
||||
@@ -646,7 +682,7 @@ msgstr "Guyana Franceza"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_hr
|
||||
msgid "Jobs, Departments, Employees Details"
|
||||
msgstr ""
|
||||
msgstr "Posturi, Departamente, Detalii angajati"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_analytic
|
||||
@@ -662,6 +698,16 @@ msgid ""
|
||||
"that have no counterpart in the general financial accounts.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Modul pentru definirea obiectului contabilitatii analitice.\n"
|
||||
"===============================================\n"
|
||||
"\n"
|
||||
"In OpenERP, conturile analitice sunt legate de conturile generale, dar sunt "
|
||||
"tratate\n"
|
||||
"in mod total independent. Astfel, puteti introduce diverse operatiuni "
|
||||
"analitice\n"
|
||||
"care nu au niciun corespondent in conturile financiare generale.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.view.custom,ref_id:0
|
||||
@@ -685,6 +731,19 @@ msgid ""
|
||||
"* Use emails to automatically confirm and send acknowledgements for any "
|
||||
"event registration\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Organizarea si gestionarea Evenimentelor.\n"
|
||||
"======================================\n"
|
||||
"\n"
|
||||
"Modulul eveniment va permite sa organizati eficient evenimente si toate "
|
||||
"sarcinile asociate lor: planificare, urmarirea inregistrarii,\n"
|
||||
"prezente, etc.\n"
|
||||
"\n"
|
||||
"Caracteristici cheie:\n"
|
||||
"------------\n"
|
||||
"* Gestioneaza Evenimentele si Inregistrarile dumneavoastra\n"
|
||||
"* Foloseste email-urile pentru a confirma si trimite automat confirmarile "
|
||||
"pentru inregistrarea oricarui eveniment\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -710,6 +769,21 @@ msgid ""
|
||||
"requested it.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Traduceri Automate prin Gengo API\n"
|
||||
"----------------------------------------\n"
|
||||
"\n"
|
||||
"Acest modul va instala programatorul pasiv pentru traduceri automate \n"
|
||||
"folosind Gengo API. Pentru a-l activa, trebuie sa\n"
|
||||
"1) Va configurati parametrii de autentificare Gengo din `Setari > Companii > "
|
||||
"Parametrii Gengo`\n"
|
||||
"2) Lansati wizard-ul din `Setari > Termenii Aplicatiei > Gengo: Solicitare "
|
||||
"Manuala a Traducerii` si sa urmeze wizard-ul.\n"
|
||||
"\n"
|
||||
"Acest wizard va activa CRON si Programatorul si va incepe traducerea "
|
||||
"automata prin intermediul Serviciilor Gengo pentru toti termenii solicitati "
|
||||
"de dumneavoastra.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.report.xml,attachment_use:0
|
||||
|
||||
@@ -7,14 +7,14 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-06 18:17+0000\n"
|
||||
"Last-Translator: ccdos <ccdos@163.com>\n"
|
||||
"PO-Revision-Date: 2012-12-19 07:05+0000\n"
|
||||
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-07 04:34+0000\n"
|
||||
"X-Generator: Launchpad (build 16341)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-20 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -1517,7 +1517,7 @@ msgstr "海地"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll
|
||||
msgid "French Payroll"
|
||||
msgstr ""
|
||||
msgstr "法国薪酬管理"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.ui.view:0
|
||||
@@ -2871,6 +2871,9 @@ msgid ""
|
||||
"Module to attach a google document to any model.\n"
|
||||
"================================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"用于附加 Google 文档到任意模型的模块。\n"
|
||||
"================================================\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:334
|
||||
@@ -3118,7 +3121,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_linkedin
|
||||
msgid "LinkedIn Integration"
|
||||
msgstr ""
|
||||
msgstr "LinkedIn 集成"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2021
|
||||
@@ -3301,6 +3304,10 @@ msgid ""
|
||||
"==========================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"比利时薪酬规则的会计数据。\n"
|
||||
"==========================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.am
|
||||
@@ -4002,6 +4009,17 @@ msgid ""
|
||||
"If you need to manage your meetings, you should install the CRM module.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"这是功能完整的日程表系统\n"
|
||||
"========================================\n"
|
||||
"\n"
|
||||
"支持:\n"
|
||||
"------------\n"
|
||||
" - 约会排程\n"
|
||||
" - 重复性事件\n"
|
||||
"\n"
|
||||
"如果您需要管理您的会议,您应该安装 CRM 模块。\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.je
|
||||
@@ -4039,7 +4057,7 @@ msgstr "%x - 使用日期表示"
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Tag"
|
||||
msgstr ""
|
||||
msgstr "标签"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
||||
@@ -18,11 +18,164 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
import itertools
|
||||
|
||||
import hashlib
|
||||
import itertools
|
||||
import os
|
||||
import re
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import fields,osv
|
||||
|
||||
class ir_attachment(osv.osv):
|
||||
"""Attachments are used to link binary files or url to any openerp document.
|
||||
|
||||
External attachment storage
|
||||
---------------------------
|
||||
|
||||
The 'data' function field (_data_get,data_set) is implemented using
|
||||
_file_read, _file_write and _file_delete which can be overridden to
|
||||
implement other storage engines, shuch methods should check for other
|
||||
location pseudo uri (example: hdfs://hadoppserver)
|
||||
|
||||
The default implementation is the file:dirname location that stores files
|
||||
on the local filesystem using name based on their sha1 hash
|
||||
"""
|
||||
def _name_get_resname(self, cr, uid, ids, object, method, context):
|
||||
data = {}
|
||||
for attachment in self.browse(cr, uid, ids, context=context):
|
||||
model_object = attachment.res_model
|
||||
res_id = attachment.res_id
|
||||
if model_object and res_id:
|
||||
model_pool = self.pool.get(model_object)
|
||||
res = model_pool.name_get(cr,uid,[res_id],context)
|
||||
res_name = res and res[0][1] or False
|
||||
if res_name:
|
||||
field = self._columns.get('res_name',False)
|
||||
if field and len(res_name) > field.size:
|
||||
res_name = res_name[:field.size-3] + '...'
|
||||
data[attachment.id] = res_name
|
||||
else:
|
||||
data[attachment.id] = False
|
||||
return data
|
||||
|
||||
# 'data' field implementation
|
||||
def _full_path(self, cr, uid, location, path):
|
||||
# location = 'file:filestore'
|
||||
assert location.startswith('file:'), "Unhandled filestore location %s" % location
|
||||
location = location[5:]
|
||||
|
||||
# sanitize location name and path
|
||||
location = re.sub('[.]','',location)
|
||||
location = location.strip('/\\')
|
||||
|
||||
path = re.sub('[.]','',path)
|
||||
path = path.strip('/\\')
|
||||
return os.path.join(tools.config['root_path'], location, cr.dbname, path)
|
||||
|
||||
def _file_read(self, cr, uid, location, fname, bin_size=False):
|
||||
full_path = self._full_path(cr, uid, location, fname)
|
||||
r = ''
|
||||
try:
|
||||
if bin_size:
|
||||
r = os.path.getsize(full_path)
|
||||
else:
|
||||
r = open(full_path).read().encode('base64')
|
||||
except IOError:
|
||||
_logger.error("_read_file reading %s",full_path)
|
||||
return r
|
||||
|
||||
def _file_write(self, cr, uid, location, value):
|
||||
bin_value = value.decode('base64')
|
||||
fname = hashlib.sha1(bin_value).hexdigest()
|
||||
# scatter files across 1024 dirs
|
||||
# we use '/' in the db (even on windows)
|
||||
fname = fname[:3] + '/' + fname
|
||||
full_path = self._full_path(cr, uid, location, fname)
|
||||
try:
|
||||
dirname = os.path.dirname(full_path)
|
||||
if not os.path.isdir(dirname):
|
||||
os.makedirs(dirname)
|
||||
open(full_path,'wb').write(bin_value)
|
||||
except IOError:
|
||||
_logger.error("_file_write writing %s",full_path)
|
||||
return fname
|
||||
|
||||
def _file_delete(self, cr, uid, location, fname):
|
||||
count = self.search(cr, 1, [('store_fname','=',fname)], count=True)
|
||||
if count <= 1:
|
||||
full_path = self._full_path(cr, uid, location, fname)
|
||||
try:
|
||||
os.unlink(full_path)
|
||||
except IOError:
|
||||
# Harmless and needed for race conditions
|
||||
_logger.error("_file_delete could not unlink %s",full_path)
|
||||
|
||||
def _data_get(self, cr, uid, ids, name, arg, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
result = {}
|
||||
location = self.pool.get('ir.config_parameter').get_param(cr, uid, 'ir_attachment.location')
|
||||
bin_size = context.get('bin_size')
|
||||
for attach in self.browse(cr, uid, ids, context=context):
|
||||
if location and attach.store_fname:
|
||||
result[attach.id] = self._file_read(cr, uid, location, attach.store_fname, bin_size)
|
||||
else:
|
||||
result[attach.id] = attach.db_datas
|
||||
return result
|
||||
|
||||
def _data_set(self, cr, uid, id, name, value, arg, context=None):
|
||||
# We dont handle setting data to null
|
||||
if not value:
|
||||
return True
|
||||
if context is None:
|
||||
context = {}
|
||||
location = self.pool.get('ir.config_parameter').get_param(cr, uid, 'ir_attachment.location')
|
||||
file_size = len(value.decode('base64'))
|
||||
if location:
|
||||
attach = self.browse(cr, uid, id, context=context)
|
||||
if attach.store_fname:
|
||||
self._file_delete(cr, uid, location, attach.store_fname)
|
||||
fname = self._file_write(cr, uid, location, value)
|
||||
super(ir_attachment, self).write(cr, uid, [id], {'store_fname': fname, 'file_size': file_size}, context=context)
|
||||
else:
|
||||
super(ir_attachment, self).write(cr, uid, [id], {'db_datas': value, 'file_size': file_size}, context=context)
|
||||
return True
|
||||
|
||||
_name = 'ir.attachment'
|
||||
_columns = {
|
||||
'name': fields.char('Attachment Name',size=256, required=True),
|
||||
'datas_fname': fields.char('File Name',size=256),
|
||||
'description': fields.text('Description'),
|
||||
'res_name': fields.function(_name_get_resname, type='char', size=128, string='Resource Name', store=True),
|
||||
'res_model': fields.char('Resource Model',size=64, readonly=True, help="The database object this attachment will be attached to"),
|
||||
'res_id': fields.integer('Resource ID', readonly=True, help="The record id this is attached to"),
|
||||
'create_date': fields.datetime('Date Created', readonly=True),
|
||||
'create_uid': fields.many2one('res.users', 'Owner', readonly=True),
|
||||
'company_id': fields.many2one('res.company', 'Company', change_default=True),
|
||||
'type': fields.selection( [ ('url','URL'), ('binary','Binary'), ],
|
||||
'Type', help="Binary File or URL", required=True, change_default=True),
|
||||
'url': fields.char('Url', size=1024),
|
||||
# al: We keep shitty field names for backward compatibility with document
|
||||
'datas': fields.function(_data_get, fnct_inv=_data_set, string='File Content', type="binary", nodrop=True),
|
||||
'store_fname': fields.char('Stored Filename', size=256),
|
||||
'db_datas': fields.binary('Database Data'),
|
||||
'file_size': fields.integer('File Size'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'type': 'binary',
|
||||
'file_size': 0,
|
||||
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'ir.attachment', context=c),
|
||||
}
|
||||
|
||||
def _auto_init(self, cr, context=None):
|
||||
super(ir_attachment, self)._auto_init(cr, context)
|
||||
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('ir_attachment_res_idx',))
|
||||
if not cr.fetchone():
|
||||
cr.execute('CREATE INDEX ir_attachment_res_idx ON ir_attachment (res_model, res_id)')
|
||||
cr.commit()
|
||||
|
||||
def check(self, cr, uid, ids, mode, context=None, values=None):
|
||||
"""Restricts the access to an ir.attachment, according to referred model
|
||||
In the 'document' module, it is overriden to relax this hard rule, since
|
||||
@@ -108,6 +261,8 @@ class ir_attachment(osv.osv):
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
self.check(cr, uid, ids, 'write', context=context, values=vals)
|
||||
if 'file_size' in vals:
|
||||
del vals['file_size']
|
||||
return super(ir_attachment, self).write(cr, uid, ids, vals, context)
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
@@ -116,70 +271,22 @@ class ir_attachment(osv.osv):
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
self.check(cr, uid, ids, 'unlink', context=context)
|
||||
location = self.pool.get('ir.config_parameter').get_param(cr, uid, 'ir_attachment.location')
|
||||
if location:
|
||||
for attach in self.browse(cr, uid, ids, context=context):
|
||||
if attach.store_fname:
|
||||
self._file_delete(cr, uid, location, attach.store_fname)
|
||||
return super(ir_attachment, self).unlink(cr, uid, ids, context)
|
||||
|
||||
def create(self, cr, uid, values, context=None):
|
||||
self.check(cr, uid, [], mode='create', context=context, values=values)
|
||||
if 'file_size' in values:
|
||||
del values['file_size']
|
||||
return super(ir_attachment, self).create(cr, uid, values, context)
|
||||
|
||||
def action_get(self, cr, uid, context=None):
|
||||
return self.pool.get('ir.actions.act_window').for_xml_id(
|
||||
cr, uid, 'base', 'action_attachment', context=context)
|
||||
|
||||
def _name_get_resname(self, cr, uid, ids, object, method, context):
|
||||
data = {}
|
||||
for attachment in self.browse(cr, uid, ids, context=context):
|
||||
model_object = attachment.res_model
|
||||
res_id = attachment.res_id
|
||||
if model_object and res_id:
|
||||
model_pool = self.pool.get(model_object)
|
||||
res = model_pool.name_get(cr,uid,[res_id],context)
|
||||
res_name = res and res[0][1] or False
|
||||
if res_name:
|
||||
field = self._columns.get('res_name',False)
|
||||
if field and len(res_name) > field.size:
|
||||
res_name = res_name[:field.size-3] + '...'
|
||||
data[attachment.id] = res_name
|
||||
else:
|
||||
data[attachment.id] = False
|
||||
return data
|
||||
|
||||
_name = 'ir.attachment'
|
||||
_columns = {
|
||||
'name': fields.char('Attachment Name',size=256, required=True),
|
||||
'datas': fields.binary('Data'),
|
||||
'datas_fname': fields.char('File Name',size=256),
|
||||
'description': fields.text('Description'),
|
||||
'res_name': fields.function(_name_get_resname, type='char', size=128,
|
||||
string='Resource Name', store=True),
|
||||
'res_model': fields.char('Resource Object',size=64, readonly=True,
|
||||
help="The database object this attachment will be attached to"),
|
||||
'res_id': fields.integer('Resource ID', readonly=True,
|
||||
help="The record id this is attached to"),
|
||||
'url': fields.char('Url', size=512, oldname="link"),
|
||||
'type': fields.selection(
|
||||
[ ('url','URL'), ('binary','Binary'), ],
|
||||
'Type', help="Binary File or external URL", required=True, change_default=True),
|
||||
|
||||
'create_date': fields.datetime('Date Created', readonly=True),
|
||||
'create_uid': fields.many2one('res.users', 'Owner', readonly=True),
|
||||
'company_id': fields.many2one('res.company', 'Company', change_default=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'type': 'binary',
|
||||
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'ir.attachment', context=c),
|
||||
}
|
||||
|
||||
def _auto_init(self, cr, context=None):
|
||||
super(ir_attachment, self)._auto_init(cr, context)
|
||||
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('ir_attachment_res_idx',))
|
||||
if not cr.fetchone():
|
||||
cr.execute('CREATE INDEX ir_attachment_res_idx ON ir_attachment (res_model, res_id)')
|
||||
cr.commit()
|
||||
|
||||
ir_attachment()
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Assert:
|
||||
-->
|
||||
|
||||
<assert model="res.request" id="res_partner_asustek_request" string="Reference field request returns a browsable object">
|
||||
<test expr="ref_doc1.name">ASUSTeK</test>
|
||||
</assert>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -1,116 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2011-TODAY OpenERP S.A. <http://www.openerp.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
import openerp
|
||||
|
||||
JOB = {
|
||||
'function': u'_0_seconds',
|
||||
'interval_type': u'minutes',
|
||||
'user_id': 1,
|
||||
'name': u'test',
|
||||
'args': False,
|
||||
'numbercall': 1,
|
||||
'nextcall': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'priority': 5,
|
||||
'doall': True,
|
||||
'active': True,
|
||||
'interval_number': 1,
|
||||
'model': u'ir.cron'
|
||||
}
|
||||
|
||||
class test_ir_cron(openerp.osv.osv.osv):
|
||||
""" Add a few handy methods to test cron jobs scheduling. """
|
||||
_inherit = "ir.cron"
|
||||
|
||||
def _0_seconds(a, b, c):
|
||||
print ">>> _0_seconds"
|
||||
|
||||
def _20_seconds(self, cr, uid):
|
||||
print ">>> in _20_seconds"
|
||||
time.sleep(20)
|
||||
print ">>> out _20_seconds"
|
||||
|
||||
def _80_seconds(self, cr, uid):
|
||||
print ">>> in _80_seconds"
|
||||
time.sleep(80)
|
||||
print ">>> out _80_seconds"
|
||||
|
||||
def test_0(self, cr, uid):
|
||||
now = datetime.now()
|
||||
t1 = (now + relativedelta(minutes=1)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
t2 = (now + relativedelta(minutes=1, seconds=5)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
t3 = (now + relativedelta(minutes=1, seconds=10)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
self.create(cr, uid, dict(JOB, name='test_0 _20_seconds A', function='_20_seconds', nextcall=t1))
|
||||
self.create(cr, uid, dict(JOB, name='test_0 _20_seconds B', function='_20_seconds', nextcall=t2))
|
||||
self.create(cr, uid, dict(JOB, name='test_0 _20_seconds C', function='_20_seconds', nextcall=t3))
|
||||
|
||||
def test_1(self, cr, uid):
|
||||
now = datetime.now()
|
||||
t1 = (now + relativedelta(minutes=1)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
self.create(cr, uid, dict(JOB, name='test_1 _20_seconds * 3', function='_20_seconds', nextcall=t1, numbercall=3))
|
||||
|
||||
def test_2(self, cr, uid):
|
||||
now = datetime.now()
|
||||
t1 = (now + relativedelta(minutes=1)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
self.create(cr, uid, dict(JOB, name='test_2 _80_seconds * 2', function='_80_seconds', nextcall=t1, numbercall=2))
|
||||
|
||||
def test_3(self, cr, uid):
|
||||
now = datetime.now()
|
||||
t1 = (now + relativedelta(minutes=1)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
t2 = (now + relativedelta(minutes=1, seconds=5)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
t3 = (now + relativedelta(minutes=1, seconds=10)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
self.create(cr, uid, dict(JOB, name='test_3 _80_seconds A', function='_80_seconds', nextcall=t1))
|
||||
self.create(cr, uid, dict(JOB, name='test_3 _20_seconds B', function='_20_seconds', nextcall=t2))
|
||||
self.create(cr, uid, dict(JOB, name='test_3 _20_seconds C', function='_20_seconds', nextcall=t3))
|
||||
|
||||
# This test assumes 4 cron threads.
|
||||
def test_00(self, cr, uid):
|
||||
self.test_00_set = set()
|
||||
now = datetime.now()
|
||||
t1 = (now + relativedelta(minutes=1)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
t2 = (now + relativedelta(minutes=1, seconds=5)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
t3 = (now + relativedelta(minutes=1, seconds=10)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
self.create(cr, uid, dict(JOB, name='test_00 _20_seconds_A', function='_20_seconds_A', nextcall=t1))
|
||||
self.create(cr, uid, dict(JOB, name='test_00 _20_seconds_B', function='_20_seconds_B', nextcall=t2))
|
||||
self.create(cr, uid, dict(JOB, name='test_00 _20_seconds_C', function='_20_seconds_C', nextcall=t3))
|
||||
|
||||
def _expect(self, cr, uid, to_add, to_sleep, to_expect_in, to_expect_out):
|
||||
assert self.test_00_set == to_expect_in
|
||||
self.test_00_set.add(to_add)
|
||||
time.sleep(to_sleep)
|
||||
self.test_00_set.discard(to_add)
|
||||
assert self.test_00_set == to_expect_out
|
||||
|
||||
def _20_seconds_A(self, cr, uid):
|
||||
self._expect(cr, uid, 'A', 20, set(), set(['B', 'C']))
|
||||
|
||||
def _20_seconds_B(self, cr, uid):
|
||||
self._expect(cr, uid, 'B', 20, set('A'), set('C'))
|
||||
|
||||
def _20_seconds_C(self, cr, uid):
|
||||
self._expect(cr, uid, 'C', 20, set(['A', 'B']), set())
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
-
|
||||
Test the cron jobs scheduling.
|
||||
-
|
||||
Disable the existing cron jobs if any during the tests.
|
||||
-
|
||||
!python {model: ir.cron }: |
|
||||
# For this test to work, as it involves multiple database cursors,
|
||||
# we have to commit changes. But YAML tests must be rollbacked, so
|
||||
# the final database state is left untouched. So we have to be a bit
|
||||
# ugly here: use our own cursor, commit, and clean after ourselves.
|
||||
# We also pass around some ids using setattr/delattr, and we have to
|
||||
# rollback the previous tests otherwise we won't be able to touch the
|
||||
# db.
|
||||
# Well, this should probably be a standalone, or regular unit test,
|
||||
# instead of using the YAML infrastructure.
|
||||
cr.rollback()
|
||||
our_cr = self.pool.db.cursor()
|
||||
try:
|
||||
ids = self.search(our_cr, uid, [], {})
|
||||
setattr(self, 'saved_ids', ids)
|
||||
self.write(our_cr, uid, ids, {'active': False}, {})
|
||||
our_cr.commit()
|
||||
finally:
|
||||
our_cr.close()
|
||||
-
|
||||
Three concurrent jobs started with a slight time gap. Assume 4 cron threads.
|
||||
This will take about 2 minutes.
|
||||
-
|
||||
!python {model: ir.cron }: |
|
||||
# Pretend initialization is already done. We the use a try/finally
|
||||
# to reset _init correctly.
|
||||
self.pool._init = False
|
||||
our_cr = self.pool.db.cursor()
|
||||
try:
|
||||
self.test_00(our_cr, uid) # this will commit using the passed cursor
|
||||
import openerp.cron
|
||||
openerp.cron._thread_slots = 4
|
||||
# Wake up this db as soon as the master cron thread starts.
|
||||
openerp.cron.schedule_wakeup(1, self.pool.db.dbname)
|
||||
# Pretend to be the master thread, for 4 iterations.
|
||||
openerp.cron.runner_body()
|
||||
openerp.cron.runner_body()
|
||||
openerp.cron.runner_body()
|
||||
openerp.cron.runner_body()
|
||||
finally:
|
||||
self.pool._init = True
|
||||
our_cr.close()
|
||||
-
|
||||
Clean after ourselves.
|
||||
-
|
||||
!python {model: ir.cron }: |
|
||||
our_cr = self.pool.db.cursor()
|
||||
try:
|
||||
ids = [x for x in self.search(our_cr, uid, ['|', ('active', '=', True), ('active', '=', False)], {}) if x not in self.saved_ids]
|
||||
self.unlink(our_cr, uid, ids, {})
|
||||
ids = self.saved_ids
|
||||
delattr(self, 'saved_ids')
|
||||
self.write(our_cr, uid, ids, {'active': True}, {})
|
||||
our_cr.commit()
|
||||
finally:
|
||||
our_cr.close()
|
||||
@@ -1,9 +1,15 @@
|
||||
import test_base, test_expression, test_search, test_ir_values, test_menu
|
||||
import test_base
|
||||
import test_expression
|
||||
import test_ir_attachment
|
||||
import test_ir_values
|
||||
import test_menu
|
||||
import test_search
|
||||
|
||||
checks = [
|
||||
test_base,
|
||||
test_expression,
|
||||
test_search,
|
||||
test_ir_attachment,
|
||||
test_ir_values,
|
||||
test_menu,
|
||||
test_search,
|
||||
]
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
import hashlib
|
||||
import os
|
||||
|
||||
import unittest2
|
||||
|
||||
import openerp
|
||||
import openerp.tests.common
|
||||
|
||||
class test_ir_attachment(openerp.tests.common.TransactionCase):
|
||||
|
||||
def test_00_attachment_flow(self):
|
||||
registry, cr, uid = self.registry, self.cr, self.uid
|
||||
root_path = openerp.tools.config['root_path']
|
||||
ira = registry('ir.attachment')
|
||||
|
||||
# Blob1
|
||||
blob1 = 'blob1'
|
||||
blob1_b64 = blob1.encode('base64')
|
||||
blob1_hash = hashlib.sha1(blob1).hexdigest()
|
||||
blob1_fname = blob1_hash[:3] + '/' + blob1_hash
|
||||
|
||||
# Blob2
|
||||
blob2 = 'blob2'
|
||||
blob2_b64 = blob2.encode('base64')
|
||||
blob2_hash = hashlib.sha1(blob2).hexdigest()
|
||||
blob2_fname = blob2_hash[:3] + '/' + blob2_hash
|
||||
|
||||
# 'ir_attachment.location' is undefined test database storage
|
||||
a1 = ira.create(cr, uid, {'name': 'a1', 'datas': blob1_b64})
|
||||
a1_read = ira.read(cr, uid, [a1], ['datas'])
|
||||
self.assertEqual(a1_read[0]['datas'], blob1_b64)
|
||||
|
||||
cr.execute("select id,db_datas from ir_attachment where id = %s", (a1,) )
|
||||
a1_db_datas = str(cr.fetchall()[0][1])
|
||||
self.assertEqual(a1_db_datas, blob1_b64)
|
||||
|
||||
# define a location for filestore
|
||||
registry('ir.config_parameter').set_param(cr, uid, 'ir_attachment.location', 'file:///filestore')
|
||||
|
||||
# Test file storage
|
||||
a2 = ira.create(cr, uid, {'name': 'a2', 'datas': blob1_b64})
|
||||
a2_read = ira.read(cr, uid, [a2], ['datas'])
|
||||
self.assertEqual(a2_read[0]['datas'], blob1_b64)
|
||||
|
||||
cr.execute("select id,store_fname from ir_attachment where id = %s", (a2,) )
|
||||
a2_store_fname = cr.fetchall()[0][1]
|
||||
self.assertEqual(a2_store_fname, blob1_fname)
|
||||
|
||||
a2_fn = os.path.join(root_path, 'filestore', cr.dbname, blob1_hash[:3], blob1_hash)
|
||||
fc = file(a2_fn).read()
|
||||
self.assertEqual(fc, blob1)
|
||||
|
||||
# create a3 with same blob
|
||||
a3 = ira.create(cr, uid, {'name': 'a3', 'datas': blob1_b64})
|
||||
a3_read = ira.read(cr, uid, [a3], ['datas'])
|
||||
self.assertEqual(a3_read[0]['datas'], blob1_b64)
|
||||
|
||||
cr.execute("select id,store_fname from ir_attachment where id = %s", (a3,) )
|
||||
a3_store_fname = cr.fetchall()[0][1]
|
||||
self.assertEqual(a3_store_fname, a2_store_fname)
|
||||
|
||||
# create a4 blob2
|
||||
a4 = ira.create(cr, uid, {'name': 'a4', 'datas': blob2_b64})
|
||||
a4_read = ira.read(cr, uid, [a4], ['datas'])
|
||||
self.assertEqual(a4_read[0]['datas'], blob2_b64)
|
||||
|
||||
a4_fn = os.path.join(root_path, 'filestore', cr.dbname, blob2_hash[:3], blob2_hash)
|
||||
self.assertTrue(os.path.isfile(a4_fn))
|
||||
|
||||
# delete a3 but file stays
|
||||
ira.unlink(cr, uid, [a3])
|
||||
self.assertTrue(os.path.isfile(a2_fn))
|
||||
|
||||
# delete a2 it is unlinked
|
||||
ira.unlink(cr, uid, [a2])
|
||||
self.assertFalse(os.path.isfile(a2_fn))
|
||||
|
||||
# update a4 blob2 by blob1
|
||||
ira.write(cr, uid, [a4], {'datas': blob1_b64})
|
||||
a4_read = ira.read(cr, uid, [a4], ['datas'])
|
||||
self.assertEqual(a4_read[0]['datas'], blob1_b64)
|
||||
|
||||
# file of a4 disapear and a2 reappear
|
||||
self.assertFalse(os.path.isfile(a4_fn))
|
||||
self.assertTrue(os.path.isfile(a2_fn))
|
||||
|
||||
# everybody applause
|
||||
|
||||
|
||||
@@ -8,12 +8,20 @@ Tests can be explicitely added to the `fast_suite` or `checks` lists or not.
|
||||
See the :ref:`test-framework` section in the :ref:`features` list.
|
||||
"""
|
||||
|
||||
from . import test_acl
|
||||
from . import test_expression, test_mail, test_ir_sequence, test_orm, \
|
||||
test_fields, test_basecase, \
|
||||
test_view_validation, test_uninstall, test_misc, test_db_cursor, \
|
||||
test_osv, test_translate
|
||||
from . import test_ir_filters
|
||||
import test_acl
|
||||
import test_basecase
|
||||
import test_db_cursor
|
||||
import test_expression
|
||||
import test_fields
|
||||
import test_ir_filters
|
||||
import test_ir_sequence
|
||||
import test_mail
|
||||
import test_misc
|
||||
import test_orm
|
||||
import test_osv
|
||||
import test_translate
|
||||
import test_uninstall
|
||||
import test_view_validation
|
||||
|
||||
fast_suite = [
|
||||
test_ir_sequence,
|
||||
@@ -33,5 +41,5 @@ checks = [
|
||||
test_osv,
|
||||
test_translate,
|
||||
]
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
Reference in New Issue
Block a user