[MERGE] Merged lp:openobject-addons.
bzr revid: psa@tinyerp.com-20130321064554-w3yt1py9lnucryyc
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
<field name="name">Invoice - Send by Email</field>
|
||||
<field name="email_from">${object.user_id.email or object.company_id.email or 'noreply@localhost'}</field>
|
||||
<field name="subject">${object.company_id.name} Invoice (Ref ${object.number or 'n/a'})</field>
|
||||
<field name="email_recipients">${object.partner_id.id}</field>
|
||||
<field name="partner_to">${object.partner_id.id}</field>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="report_template" ref="account_invoices"/>
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
# Hungarian 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 <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-03-20 14:54+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: Hungarian <hu@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-21 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: view:account.analytic.account:0
|
||||
msgid "or view"
|
||||
msgstr "vagy nézet"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Nothing to invoice, create"
|
||||
msgstr "Nincs mit számlázni, hozzon létre"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: view:account.analytic.account:0
|
||||
msgid "expenses"
|
||||
msgstr "költségek"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr "Gyűjtő/elemző könyvelés"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:129
|
||||
#, python-format
|
||||
msgid "Expenses to Invoice of %s"
|
||||
msgstr "Ennek számlázandó költségei %s"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:121
|
||||
#, python-format
|
||||
msgid "Expenses of %s"
|
||||
msgstr "Ennek költségei %s"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: field:account.analytic.account,expense_invoiced:0
|
||||
#: field:account.analytic.account,expense_to_invoice:0
|
||||
#: field:account.analytic.account,remaining_expense:0
|
||||
msgid "unknown"
|
||||
msgstr "ismeretlen"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: field:account.analytic.account,est_expenses:0
|
||||
msgid "Estimation of Expenses to Invoice"
|
||||
msgstr "Költségek költségek számlázára"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: field:account.analytic.account,charge_expenses:0
|
||||
msgid "Charge Expenses"
|
||||
msgstr "Költségek felszámolása"
|
||||
|
||||
#. module: analytic_contract_hr_expense
|
||||
#: view:account.analytic.account:0
|
||||
msgid "⇒ Invoice"
|
||||
msgstr "⇒ Számla"
|
||||
@@ -7,44 +7,44 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2011-02-09 13:28+0000\n"
|
||||
"Last-Translator: Krisztian Eyssen <krisz@eyssen.hu>\n"
|
||||
"PO-Revision-Date: 2013-03-20 14:30+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-16 05:34+0000\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-21 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: model:ir.model,name:analytic_user_function.model_account_analytic_line
|
||||
msgid "Analytic Line"
|
||||
msgstr ""
|
||||
msgstr "Gyűjtőkód tételsor"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Invoice Price Rate per User"
|
||||
msgstr ""
|
||||
msgstr "Számlázási ár mértéke felhasználónként"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: field:analytic.user.funct.grid,product_id:0
|
||||
msgid "Service"
|
||||
msgstr ""
|
||||
msgstr "Szolgáltatás"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid
|
||||
msgid "Price per User"
|
||||
msgstr ""
|
||||
msgstr "Felhasználónkénti ár"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: field:analytic.user.funct.grid,price:0
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
msgstr "Ár"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: help:analytic.user.funct.grid,price:0
|
||||
msgid "Price per hour for this user."
|
||||
msgstr ""
|
||||
msgstr "Ennek a felhasználónak a óránkénti ára."
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: field:analytic.user.funct.grid,account_id:0
|
||||
@@ -57,12 +57,12 @@ msgstr "Gyűjtőkód"
|
||||
#: code:addons/analytic_user_function/analytic_user_function.py:135
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr ""
|
||||
msgstr "Hiba!"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: view:analytic.user.funct.grid:0
|
||||
msgid "Invoicing Data"
|
||||
msgstr ""
|
||||
msgstr "Számlázási adatok"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: field:account.analytic.account,user_product_ids:0
|
||||
@@ -78,11 +78,16 @@ msgid ""
|
||||
" of the default values when invoicing the "
|
||||
"customer."
|
||||
msgstr ""
|
||||
"Határozzon meg egy sajátos szolgáltatást (pl. Rangelső tanácsadó)\n"
|
||||
" és árat egy pár felhasználóhoz ezeknek az "
|
||||
"adatoknak az alap\n"
|
||||
" adatok helyetti használatához a vevő "
|
||||
"számlázására."
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: field:analytic.user.funct.grid,uom_id:0
|
||||
msgid "Unit of Measure"
|
||||
msgstr ""
|
||||
msgstr "Mértékegység"
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: code:addons/analytic_user_function/analytic_user_function.py:107
|
||||
@@ -105,6 +110,13 @@ msgid ""
|
||||
" specific user. This allows to set invoicing\n"
|
||||
" conditions for a group of contracts."
|
||||
msgstr ""
|
||||
"OpenERP visszamenőlegesen keresi a szülő fiókokban annak\n"
|
||||
" ellenőrzésére, hogy sajátos körülmények vannak-"
|
||||
"e\n"
|
||||
" meghatározva a felhasználóhoz. Ez lehetővé "
|
||||
"teszi\n"
|
||||
" sajátos számlázási körülmény beállítását egy "
|
||||
"vevő csoporthoz."
|
||||
|
||||
#. module: analytic_user_function
|
||||
#: field:analytic.user.funct.grid,user_id:0
|
||||
|
||||
@@ -0,0 +1,350 @@
|
||||
# Hungarian 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 <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-03-20 14:51+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: Hungarian <hu@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-21 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
|
||||
msgid "ir.model.fields.anonymize.wizard"
|
||||
msgstr "ir.model.fields.anonymize.wizard"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,model_id:0
|
||||
msgid "Object"
|
||||
msgstr "Objektum"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_migration_fix
|
||||
msgid "ir.model.fields.anonymization.migration.fix"
|
||||
msgstr "ir.model.fields.anonymization.migration.fix"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.migration.fix,target_version:0
|
||||
msgid "Target Version"
|
||||
msgstr "Cél verziója"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
|
||||
msgid "sql"
|
||||
msgstr "sql"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:91
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The database anonymization is currently in an unstable state. Some fields "
|
||||
"are anonymized, while some fields are not anonymized. You should try to "
|
||||
"solve this problem before trying to create, write or delete fields."
|
||||
msgstr ""
|
||||
"Az adatbázis névtelenítő/titkosító bizonytalan állapotban van. Egyes mezők "
|
||||
"névtelenítettek/titkosítottak lesznek, de egyesek nem. Ezt a problémát meg "
|
||||
"kell oldania, mielőtt mezőket hozna létre, írna vagy törölne."
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,field_name:0
|
||||
msgid "Field Name"
|
||||
msgstr "Mezőnév"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,field_id:0
|
||||
#: field:ir.model.fields.anonymization.migration.fix,field_name:0
|
||||
msgid "Field"
|
||||
msgstr "Mező"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization,state:0
|
||||
msgid "New"
|
||||
msgstr "Új"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymize.wizard,file_import:0
|
||||
msgid "Import"
|
||||
msgstr "Importálás"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization
|
||||
msgid "ir.model.fields.anonymization"
|
||||
msgstr "ir.model.fields.anonymization"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:300
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Before executing the anonymization process, you should make a backup of your "
|
||||
"database."
|
||||
msgstr ""
|
||||
"Mielőtt kiadna egy névtelenítő/titkosító folyamatot, készítsen mentést az "
|
||||
"adatbázisról."
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.history,state:0
|
||||
#: field:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "Status"
|
||||
msgstr "Állapot"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.history,direction:0
|
||||
msgid "Direction"
|
||||
msgstr "Irány"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree
|
||||
#: view:ir.model.fields.anonymization:0
|
||||
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields
|
||||
msgid "Anonymized Fields"
|
||||
msgstr "névtelenített/titkosított mezők"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
|
||||
msgid "Database anonymization"
|
||||
msgstr "Adatbázis névtelenítés/titkosítás"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,direction:0
|
||||
msgid "clear -> anonymized"
|
||||
msgstr "törlés -> titkosított"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization,state:0
|
||||
#: selection:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "Anonymized"
|
||||
msgstr "Névtelenített/titkosított"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,state:0
|
||||
msgid "unknown"
|
||||
msgstr "ismeretlen"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:448
|
||||
#, python-format
|
||||
msgid "Anonymized value is None. This cannot happens."
|
||||
msgstr "Nincs névtelenítés/titkosítás. Ilyen nincs."
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.history,filepath:0
|
||||
msgid "File path"
|
||||
msgstr "Fájl elérési útvonal"
|
||||
|
||||
#. module: anonymization
|
||||
#: help:ir.model.fields.anonymize.wizard,file_import:0
|
||||
msgid ""
|
||||
"This is the file created by the anonymization process. It should have the "
|
||||
"'.pickle' extention."
|
||||
msgstr ""
|
||||
"Ez a névtelenítési/titkosítási folyamat által létrehozott fájl. Ennek "
|
||||
"'.pickle' kiterjesztésűnek kell lennie."
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.history,date:0
|
||||
msgid "Date"
|
||||
msgstr "Dátum"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymize.wizard,file_export:0
|
||||
msgid "Export"
|
||||
msgstr "Exportálás"
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymize.wizard:0
|
||||
msgid "Reverse the Database Anonymization"
|
||||
msgstr "Állítsa vissza az adatbázis névtelenítését/titkosítását"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:444
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot anonymize fields of these types: binary, many2many, many2one, "
|
||||
"one2many, reference."
|
||||
msgstr ""
|
||||
"ilyen típusú mezőket nem tud névteleníteni/titkosítani: bináris, many2many, "
|
||||
"many2one, one2many, referencia, hivatkozás."
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymize.wizard:0
|
||||
msgid "Database Anonymization"
|
||||
msgstr "Adatbázis névtelenítése/titkosítása"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
|
||||
msgid "Anonymize database"
|
||||
msgstr "Adatbázis névtelenítés/titkosítás"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
|
||||
msgid "python"
|
||||
msgstr "python"
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymization.history:0
|
||||
#: field:ir.model.fields.anonymization.history,field_ids:0
|
||||
msgid "Fields"
|
||||
msgstr "Mezők"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization,state:0
|
||||
#: selection:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "Clear"
|
||||
msgstr "Tiszta"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:533
|
||||
#, python-format
|
||||
msgid ""
|
||||
"It is not possible to reverse the anonymization process without supplying "
|
||||
"the anonymization export file."
|
||||
msgstr ""
|
||||
"Nem lehetséges a névtelenítés/titkosítás visszaállítási folyamat az "
|
||||
"névtelenítési/titkosítási export fájl megléte nélkül."
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymize.wizard,summary:0
|
||||
msgid "Summary"
|
||||
msgstr "Összegzés"
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymization:0
|
||||
msgid "Anonymized Field"
|
||||
msgstr "Névtelenített/titkosított mező"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:391
|
||||
#: code:addons/anonymization/anonymization.py:526
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The database anonymization is currently in an unstable state. Some fields "
|
||||
"are anonymized, while some fields are not anonymized. You should try to "
|
||||
"solve this problem before trying to do anything."
|
||||
msgstr ""
|
||||
"Az adatbázis névtelenítő/titkosító bizonytalan állapotban van. Egyes mezők "
|
||||
"névtelenítettek/titkosítottak lesznek, de egyesek nem. Ezt a problémát meg "
|
||||
"kell oldania, mielőtt tenne valamit."
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymize.wizard,state:0
|
||||
msgid "Unstable"
|
||||
msgstr "Bizonytalan"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,state:0
|
||||
msgid "Exception occured"
|
||||
msgstr "Kivétel keletkezett"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization,state:0
|
||||
msgid "Not Existing"
|
||||
msgstr "Nem létező"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization,model_name:0
|
||||
msgid "Object Name"
|
||||
msgstr "Tárgy neve"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree
|
||||
#: view:ir.model.fields.anonymization.history:0
|
||||
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history
|
||||
msgid "Anonymization History"
|
||||
msgstr "Névtelenítési/titkosítási történet"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.migration.fix,model_name:0
|
||||
msgid "Model"
|
||||
msgstr "Modell"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history
|
||||
msgid "ir.model.fields.anonymization.history"
|
||||
msgstr "ir.model.fields.anonymization.history"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:358
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The database anonymization is currently in an unstable state. Some fields "
|
||||
"are anonymized, while some fields are not anonymized. You should try to "
|
||||
"solve this problem before trying to do anything else."
|
||||
msgstr ""
|
||||
"Az adatbázis névtelenítő/titkosító bizonytalan állapotban van. Egyes mezők "
|
||||
"névtelenítettek/titkosítottak lesznek, de egyesek nem. Ezt a problémát meg "
|
||||
"kell oldania, mielőtt tenne valami mást."
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:389
|
||||
#: code:addons/anonymization/anonymization.py:448
|
||||
#, python-format
|
||||
msgid "Error !"
|
||||
msgstr "Hiba!"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
|
||||
#: view:ir.model.fields.anonymize.wizard:0
|
||||
msgid "Anonymize Database"
|
||||
msgstr "Adatbázis névtelenítés/titkosítás"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymize.wizard,name:0
|
||||
msgid "File Name"
|
||||
msgstr "Fájl neve"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.migration.fix,sequence:0
|
||||
msgid "Sequence"
|
||||
msgstr "Sorrend/szekvencia"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,direction:0
|
||||
msgid "anonymized -> clear"
|
||||
msgstr "névtelenített/titkosított -> üres"
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,state:0
|
||||
msgid "Started"
|
||||
msgstr "Elkezdve"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:389
|
||||
#, python-format
|
||||
msgid "The database is currently anonymized, you cannot anonymize it again."
|
||||
msgstr ""
|
||||
"Az adatbázis jelenleg névtelenítettek/titkosítot, nem tudja még egyszer "
|
||||
"névteleníteteni/titkosítani."
|
||||
|
||||
#. module: anonymization
|
||||
#: selection:ir.model.fields.anonymization.history,state:0
|
||||
msgid "Done"
|
||||
msgstr "Elvégezve"
|
||||
|
||||
#. module: anonymization
|
||||
#: field:ir.model.fields.anonymization.migration.fix,query:0
|
||||
#: field:ir.model.fields.anonymization.migration.fix,query_type:0
|
||||
msgid "Query"
|
||||
msgstr "Kérdés"
|
||||
|
||||
#. module: anonymization
|
||||
#: view:ir.model.fields.anonymization.history:0
|
||||
#: field:ir.model.fields.anonymization.history,msg:0
|
||||
#: field:ir.model.fields.anonymize.wizard,msg:0
|
||||
msgid "Message"
|
||||
msgstr "Üzenet"
|
||||
|
||||
#. module: anonymization
|
||||
#: code:addons/anonymization/anonymization.py:65
|
||||
#: sql_constraint:ir.model.fields.anonymization:0
|
||||
#, python-format
|
||||
msgid "You cannot have two fields with the same name on the same object!"
|
||||
msgstr "Nem lehet ugyanazon a tárgyon lévő két mezőnek ugyanaz a neve!"
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-02-02 16:47+0000\n"
|
||||
"Last-Translator: Krisztian Eyssen <krisz@eyssen.hu>\n"
|
||||
"PO-Revision-Date: 2013-03-20 13:52+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-16 05:47+0000\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-21 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: association
|
||||
@@ -29,7 +29,7 @@ msgstr "Események kezelése"
|
||||
#. module: association
|
||||
#: field:profile.association.config.install_modules_wizard,project_gtd:0
|
||||
msgid "Getting Things Done"
|
||||
msgstr ""
|
||||
msgstr "Getting Things Done - GTD módszer, végezzük el a feladatokat"
|
||||
|
||||
#. module: association
|
||||
#: model:ir.module.module,description:association.module_meta_information
|
||||
@@ -81,6 +81,8 @@ msgid ""
|
||||
"GTD is a methodology to efficiently organise yourself and your tasks. This "
|
||||
"module fully integrates GTD principle with OpenERP's project management."
|
||||
msgstr ""
|
||||
"A GTD a feladatok hatékony rendszerezésére szolgáló módszertan. Ez a modul "
|
||||
"teljesen integrálja a GTD alapelvet az OpenERP projektmenedzsmentjébe."
|
||||
|
||||
#. module: association
|
||||
#: view:profile.association.config.install_modules_wizard:0
|
||||
|
||||
@@ -7,25 +7,25 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2011-01-31 12:50+0000\n"
|
||||
"Last-Translator: Krisztian Eyssen <krisz@eyssen.hu>\n"
|
||||
"PO-Revision-Date: 2013-03-20 14:23+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-16 05:32+0000\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-21 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
msgid "Old Value Text : "
|
||||
msgstr ""
|
||||
msgstr "Szöveg régi értéke: "
|
||||
|
||||
#. module: audittrail
|
||||
#: code:addons/audittrail/audittrail.py:76
|
||||
#, python-format
|
||||
msgid "WARNING: audittrail is not part of the pool"
|
||||
msgstr ""
|
||||
msgstr "VIGYÁZAT: sávvizsgálat nem képezi részét az összegyűjtött edatnak"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,log_id:0
|
||||
@@ -36,7 +36,7 @@ msgstr "Napló"
|
||||
#: view:audittrail.rule:0
|
||||
#: selection:audittrail.rule,state:0
|
||||
msgid "Subscribed"
|
||||
msgstr ""
|
||||
msgstr "Feliratkozva"
|
||||
|
||||
#. module: audittrail
|
||||
#: code:addons/audittrail/audittrail.py:260
|
||||
@@ -44,31 +44,31 @@ msgstr ""
|
||||
#: code:addons/audittrail/audittrail.py:408
|
||||
#, python-format
|
||||
msgid "'%s' Model does not exist..."
|
||||
msgstr ""
|
||||
msgstr "'%s' Modell nem létezik..."
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
msgid "Subscribed Rule"
|
||||
msgstr ""
|
||||
msgstr "Szabály a feliratkozáshoz"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
#: model:ir.model,name:audittrail.model_audittrail_rule
|
||||
msgid "Audittrail Rule"
|
||||
msgstr ""
|
||||
msgstr "Szabály a sávvizsgálatra"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
#: field:audittrail.rule,state:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
msgstr "Állapot"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.view.log:0
|
||||
#: model:ir.actions.act_window,name:audittrail.action_audittrail_log_tree
|
||||
#: model:ir.ui.menu,name:audittrail.menu_audit_logs
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
msgstr "Vizsgálati naplózások"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
@@ -79,7 +79,7 @@ msgstr "Csoportosítás..."
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
msgid "_Subscribe"
|
||||
msgstr ""
|
||||
msgstr "_Feliratkozás"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
@@ -103,6 +103,8 @@ msgid ""
|
||||
"Select this if you want to keep track of read/open on any record of the "
|
||||
"object of this rule"
|
||||
msgstr ""
|
||||
"Válassza ezt, ha nyomon akarja követni ehhez a szabályhoz tartozó bármely "
|
||||
"objektum rekord írását/olvasását"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log,method:0
|
||||
@@ -112,7 +114,7 @@ msgstr "Módszer"
|
||||
#. module: audittrail
|
||||
#: field:audittrail.view.log,from:0
|
||||
msgid "Log From"
|
||||
msgstr ""
|
||||
msgstr "Naplózási forma"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,log:0
|
||||
@@ -127,7 +129,7 @@ msgstr "Forrás ID"
|
||||
#. module: audittrail
|
||||
#: help:audittrail.rule,user_id:0
|
||||
msgid "if User is not added then it will applicable for all users"
|
||||
msgstr ""
|
||||
msgstr "Ha nincs felhasználó hozzáadva akkor minden felhasználó hozzáférhet"
|
||||
|
||||
#. module: audittrail
|
||||
#: help:audittrail.rule,log_workflow:0
|
||||
@@ -135,6 +137,8 @@ msgid ""
|
||||
"Select this if you want to keep track of workflow on any record of the "
|
||||
"object of this rule"
|
||||
msgstr ""
|
||||
"Válassza ezt, ha nyomon akarja követni ehhez a szabályhoz tartozó bármely "
|
||||
"objektum rekord munkafolyamatát"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,user_id:0
|
||||
@@ -144,7 +148,7 @@ msgstr "Felhasználók"
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
msgid "Log Lines"
|
||||
msgstr ""
|
||||
msgstr "Naplózási sorok"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
@@ -156,28 +160,28 @@ msgstr "Tárgy"
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
msgid "AuditTrail Rule"
|
||||
msgstr ""
|
||||
msgstr "Sávvizsgálati szabály"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.view.log,to:0
|
||||
msgid "Log To"
|
||||
msgstr ""
|
||||
msgstr "Napló erre"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
msgid "New Value Text: "
|
||||
msgstr ""
|
||||
msgstr "Új érték a szövegre: "
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
msgid "Search Audittrail Rule"
|
||||
msgstr ""
|
||||
msgstr "Sávvizsgálati szabály keresése"
|
||||
|
||||
#. module: audittrail
|
||||
#: model:ir.actions.act_window,name:audittrail.action_audittrail_rule_tree
|
||||
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail_rule_tree
|
||||
msgid "Audit Rules"
|
||||
msgstr ""
|
||||
msgstr "Vizsgálati szabályok"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
@@ -201,42 +205,45 @@ msgid ""
|
||||
"Select this if you want to keep track of modification on any record of the "
|
||||
"object of this rule"
|
||||
msgstr ""
|
||||
"Válassza ezt, ha nyomon akarja követni ehhez a szabályhoz tartozó bármely "
|
||||
"objektum rekord módosítását"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
msgid "AuditTrail Rules"
|
||||
msgstr ""
|
||||
msgstr "Sávvizsgálati szabályok"
|
||||
|
||||
#. module: audittrail
|
||||
#: help:audittrail.rule,object_id:0
|
||||
msgid "Select object for which you want to generate log."
|
||||
msgstr ""
|
||||
msgstr "Válassza ki az objektumot amire a naplózást szeretné végezni."
|
||||
|
||||
#. module: audittrail
|
||||
#: model:ir.ui.menu,name:audittrail.menu_audit
|
||||
msgid "Audit"
|
||||
msgstr ""
|
||||
msgstr "Vizsgálat"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_workflow:0
|
||||
msgid "Log Workflow"
|
||||
msgstr ""
|
||||
msgstr "Naplózza a munkafolyamatot"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_read:0
|
||||
msgid "Log Reads"
|
||||
msgstr ""
|
||||
msgstr "Naplózza az olvasásokat"
|
||||
|
||||
#. module: audittrail
|
||||
#: code:addons/audittrail/audittrail.py:77
|
||||
#, python-format
|
||||
msgid "Change audittrail depends -- Setting rule as DRAFT"
|
||||
msgstr ""
|
||||
"Sávvizsgálat függőség megváltoztatása -- A szabály TERVEZET -re állítja"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log,line_ids:0
|
||||
msgid "Log lines"
|
||||
msgstr ""
|
||||
msgstr "Naplózza a sorokat"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,field_id:0
|
||||
@@ -246,7 +253,7 @@ msgstr "Mezők"
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_create:0
|
||||
msgid "Log Creates"
|
||||
msgstr ""
|
||||
msgstr "Naplózza a létrehozásokat"
|
||||
|
||||
#. module: audittrail
|
||||
#: help:audittrail.rule,log_unlink:0
|
||||
@@ -254,6 +261,8 @@ msgid ""
|
||||
"Select this if you want to keep track of deletion on any record of the "
|
||||
"object of this rule"
|
||||
msgstr ""
|
||||
"Válassza ezt, ha nyomon akarja követni ehhez a szabályhoz tartozó bármely "
|
||||
"objektum rekord törlését"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
@@ -270,6 +279,8 @@ msgstr "Művelet ID"
|
||||
#: view:audittrail.rule:0
|
||||
msgid "Users (if User is not added then it will applicable for all users)"
|
||||
msgstr ""
|
||||
"Felhasználók (ha nincs felhasználó hozzáadva akkor az összes felhasználóra "
|
||||
"érvényes)"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
@@ -282,17 +293,19 @@ msgid ""
|
||||
"There is already a rule defined on this object\n"
|
||||
" You cannot define another: please edit the existing one."
|
||||
msgstr ""
|
||||
"Erre az objektumra már van szabály\n"
|
||||
" Nem tud másikat meghatározni: kérem szerkessze a meglévőt."
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_unlink:0
|
||||
msgid "Log Deletes"
|
||||
msgstr ""
|
||||
msgstr "Naplók a törlésre"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
#: view:audittrail.rule:0
|
||||
msgid "Model"
|
||||
msgstr ""
|
||||
msgstr "Modell"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,field_description:0
|
||||
@@ -302,22 +315,22 @@ msgstr "Mező leírása"
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
msgid "Search Audittrail Log"
|
||||
msgstr ""
|
||||
msgstr "Sávvizsgálat napló keresése"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_write:0
|
||||
msgid "Log Writes"
|
||||
msgstr ""
|
||||
msgstr "Napló az írásra"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.view.log:0
|
||||
msgid "Open Logs"
|
||||
msgstr ""
|
||||
msgstr "Naplók megnyitása"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,new_value_text:0
|
||||
msgid "New value Text"
|
||||
msgstr ""
|
||||
msgstr "Szöveh új értéke"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,name:0
|
||||
@@ -333,29 +346,31 @@ msgstr "Új érték"
|
||||
#: code:addons/audittrail/audittrail.py:223
|
||||
#, python-format
|
||||
msgid "'%s' field does not exist in '%s' model"
|
||||
msgstr ""
|
||||
msgstr "'%s' mező nem létezik a '%s' modellben"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
msgid "AuditTrail Logs"
|
||||
msgstr ""
|
||||
msgstr "Sávvizsgálati naplók"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
msgid "Draft Rule"
|
||||
msgstr ""
|
||||
msgstr "Szabály tervezet"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
#: model:ir.model,name:audittrail.model_audittrail_log
|
||||
msgid "Audittrail Log"
|
||||
msgstr ""
|
||||
msgstr "Sávvizsgálati napló"
|
||||
|
||||
#. module: audittrail
|
||||
#: help:audittrail.rule,log_action:0
|
||||
msgid ""
|
||||
"Select this if you want to keep track of actions on the object of this rule"
|
||||
msgstr ""
|
||||
"VVálassza ezt, ha nyomon akarja követni ehhez a szabályhoz tartozó bármely "
|
||||
"objektum rekord műveleteit"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
@@ -365,32 +380,32 @@ msgstr "Új érték : "
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,old_value_text:0
|
||||
msgid "Old value Text"
|
||||
msgstr ""
|
||||
msgstr "Szöveg régi értéke"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.view.log:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Megszakítás"
|
||||
|
||||
#. module: audittrail
|
||||
#: model:ir.model,name:audittrail.model_audittrail_view_log
|
||||
msgid "View Log"
|
||||
msgstr ""
|
||||
msgstr "Napló megtekintése"
|
||||
|
||||
#. module: audittrail
|
||||
#: model:ir.model,name:audittrail.model_audittrail_log_line
|
||||
msgid "Log Line"
|
||||
msgstr ""
|
||||
msgstr "Napló a sorokra"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.view.log:0
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
msgstr "vagy"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_action:0
|
||||
msgid "Log Action"
|
||||
msgstr ""
|
||||
msgstr "napló a műveletekre"
|
||||
|
||||
#. module: audittrail
|
||||
#: help:audittrail.rule,log_create:0
|
||||
@@ -398,6 +413,8 @@ msgid ""
|
||||
"Select this if you want to keep track of creation on any record of the "
|
||||
"object of this rule"
|
||||
msgstr ""
|
||||
"Válassza ezt, ha nyomon akarja követni ehhez a szabályhoz tartozó bármely "
|
||||
"objektum rekord létrehozását"
|
||||
|
||||
#~ msgid "State"
|
||||
#~ msgstr "Állapot"
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# Hungarian 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 <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-03-19 18:28+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Hungarian <hu@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: auth_crypt
|
||||
#: field:res.users,password_crypt:0
|
||||
msgid "Encrypted Password"
|
||||
msgstr "Kódolt jalszó"
|
||||
|
||||
#. module: auth_crypt
|
||||
#: model:ir.model,name:auth_crypt.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Felhasználók"
|
||||
@@ -0,0 +1,135 @@
|
||||
# Hungarian 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 <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-03-19 18:17+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Hungarian <hu@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,validation_endpoint:0
|
||||
msgid "Validation URL"
|
||||
msgstr "URL elérési út érvényesítés"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,auth_endpoint:0
|
||||
msgid "Authentication URL"
|
||||
msgstr "URL elérési út hitelesítés"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: model:ir.model,name:auth_oauth.model_base_config_settings
|
||||
msgid "base.config.settings"
|
||||
msgstr "base.config.settings"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,name:0
|
||||
msgid "Provider name"
|
||||
msgstr "Szolgáltató neve"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,scope:0
|
||||
msgid "Scope"
|
||||
msgstr "Hatáskör"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:res.users,oauth_provider_id:0
|
||||
msgid "OAuth Provider"
|
||||
msgstr "OAuth szolgáltató"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,css_class:0
|
||||
msgid "CSS class"
|
||||
msgstr "CSS osztály"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,body:0
|
||||
msgid "Body"
|
||||
msgstr "Törzs"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: model:ir.model,name:auth_oauth.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Felhasználók"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,sequence:0
|
||||
msgid "unknown"
|
||||
msgstr "ismeretlen"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:res.users,oauth_access_token:0
|
||||
msgid "OAuth Access Token"
|
||||
msgstr "OAuth hozzáférési Token"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,client_id:0
|
||||
#: field:base.config.settings,auth_oauth_facebook_client_id:0
|
||||
#: field:base.config.settings,auth_oauth_google_client_id:0
|
||||
msgid "Client ID"
|
||||
msgstr "Ügyfál ID azonosító"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers
|
||||
msgid "OAuth Providers"
|
||||
msgstr "OAuth szolgáltatók"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: model:ir.model,name:auth_oauth.model_auth_oauth_provider
|
||||
msgid "OAuth2 provider"
|
||||
msgstr "OAuth2 szolgáltató"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:res.users,oauth_uid:0
|
||||
msgid "OAuth User ID"
|
||||
msgstr "OAuth felhasználó ID azonosító"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:base.config.settings,auth_oauth_facebook_enabled:0
|
||||
msgid "Allow users to sign in with Facebook"
|
||||
msgstr "Felhasználók Facebook keresztüli bejelentkezés engedélyezése"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: sql_constraint:res.users:0
|
||||
msgid "OAuth UID must be unique per provider"
|
||||
msgstr "OAuth UID egyedinek kell lennie mindegyik szolgáltatóhoz"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: help:res.users,oauth_uid:0
|
||||
msgid "Oauth Provider user_id"
|
||||
msgstr "Oauth szolgáltatói felhasználó_id"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,data_endpoint:0
|
||||
msgid "Data URL"
|
||||
msgstr "Adat URL elérési út"
|
||||
|
||||
#. module: auth_oauth
|
||||
#: view:auth.oauth.provider:0
|
||||
msgid "arch"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_oauth
|
||||
#: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider
|
||||
msgid "Providers"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:base.config.settings,auth_oauth_google_enabled:0
|
||||
msgid "Allow users to sign in with Google"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_oauth
|
||||
#: field:auth.oauth.provider,enabled:0
|
||||
msgid "Allowed"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,23 @@
|
||||
# Hungarian 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 <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-03-19 18:13+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Hungarian <hu@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: auth_oauth_signup
|
||||
#: model:ir.model,name:auth_oauth_signup.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Felhasználók"
|
||||
@@ -0,0 +1,97 @@
|
||||
# Hungarian 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 <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-03-19 18:15+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Hungarian <hu@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:24
|
||||
#, python-format
|
||||
msgid "Username"
|
||||
msgstr "Felhasználónév"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:12
|
||||
#: view:res.users:0
|
||||
#, python-format
|
||||
msgid "OpenID"
|
||||
msgstr "OpenID"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:30
|
||||
#: field:res.users,openid_url:0
|
||||
#, python-format
|
||||
msgid "OpenID URL"
|
||||
msgstr "OpenID URL elérési út"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:9
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10
|
||||
#, python-format
|
||||
msgid "Google"
|
||||
msgstr "Google"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:11
|
||||
#, python-format
|
||||
msgid "Launchpad"
|
||||
msgstr "Launchpad/Kiadásiszerk"
|
||||
|
||||
#. module: auth_openid
|
||||
#: help:res.users,openid_email:0
|
||||
msgid "Used for disambiguation in case of a shared OpenID URL"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:18
|
||||
#, python-format
|
||||
msgid "Google Apps Domain"
|
||||
msgstr "Google Alk Domain"
|
||||
|
||||
#. module: auth_openid
|
||||
#: field:res.users,openid_email:0
|
||||
msgid "OpenID Email"
|
||||
msgstr "OpenID Email"
|
||||
|
||||
#. module: auth_openid
|
||||
#: field:res.users,openid_key:0
|
||||
msgid "OpenID Key"
|
||||
msgstr "OpenID Kulcs"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:8
|
||||
#, python-format
|
||||
msgid "Password"
|
||||
msgstr "Jelszó"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10
|
||||
#, python-format
|
||||
msgid "Google Apps"
|
||||
msgstr "Google Alk"
|
||||
|
||||
#. module: auth_openid
|
||||
#: model:ir.model,name:auth_openid.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Felhasználók"
|
||||
@@ -8,24 +8,24 @@ msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-01-11 17:36+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2013-03-20 13:50+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: Hungarian <hu@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-16 05:52+0000\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-21 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_type:0
|
||||
msgid "Signup Token Type"
|
||||
msgstr ""
|
||||
msgstr "Feliratkozó Token típus"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:base.config.settings,auth_signup_uninvited:0
|
||||
msgid "Allow external users to sign up"
|
||||
msgstr ""
|
||||
msgstr "Külső felhasználók bejelentkezésének engedéjezése"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
@@ -37,18 +37,18 @@ msgstr "Jelszó megerõsítése"
|
||||
#. module: auth_signup
|
||||
#: help:base.config.settings,auth_signup_uninvited:0
|
||||
msgid "If unchecked, only invited users may sign up."
|
||||
msgstr ""
|
||||
msgstr "He nincs bejelölve, vsak maghívott felhasználók jelentkezhetnek be."
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:ir.model,name:auth_signup.model_base_config_settings
|
||||
msgid "base.config.settings"
|
||||
msgstr ""
|
||||
msgstr "base.config.settings"
|
||||
|
||||
#. module: auth_signup
|
||||
#: code:addons/auth_signup/res_users.py:265
|
||||
#, python-format
|
||||
msgid "Cannot send email: user has no email address."
|
||||
msgstr ""
|
||||
msgstr "Nem küldhető e-mail: a felhasználónak nincs e-mail címe."
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
@@ -61,7 +61,7 @@ msgstr "Jelszó visszaállítása"
|
||||
#. module: auth_signup
|
||||
#: field:base.config.settings,auth_signup_template_user_id:0
|
||||
msgid "Template user for new users created through signup"
|
||||
msgstr ""
|
||||
msgstr "Sablon felhasználó amit a új felhasznlók létrehozásához használ"
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:email.template,subject:auth_signup.reset_password_email
|
||||
@@ -78,7 +78,7 @@ msgstr "Kérem adjon meg egy jelszót és erősítse meg."
|
||||
#. module: auth_signup
|
||||
#: view:res.users:0
|
||||
msgid "Send an email to the user to (re)set their password."
|
||||
msgstr ""
|
||||
msgstr "Küldjön egy e-mailt a felhasználónak a jelszava visszaállításához."
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
@@ -97,12 +97,12 @@ msgstr "Új"
|
||||
#: code:addons/auth_signup/res_users.py:258
|
||||
#, python-format
|
||||
msgid "Mail sent to:"
|
||||
msgstr ""
|
||||
msgstr "Címzett:"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.users,state:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
msgstr "Állapot"
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:email.template,body_html:auth_signup.reset_password_email
|
||||
@@ -116,6 +116,15 @@ msgid ""
|
||||
"\n"
|
||||
"<p>Note: If you do not expect this, you can safely ignore this email.</p>"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"<p>Egy jelszó visszaállítást indított el az e-mailhez tartozó OpenERP "
|
||||
"fiókhoz.</p>\n"
|
||||
"\n"
|
||||
"<p>Meg kell változtatnia a jelszavát a következő <a "
|
||||
"href=\"${object.signup_url}\">linken</a>.</p>\n"
|
||||
"\n"
|
||||
"<p>Megjegyzés: Ha nem várta ezt az e-mail-t, akkor biztonságosan törölje "
|
||||
"azt.</p>"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
@@ -132,14 +141,14 @@ msgstr "Felhasználók"
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_url:0
|
||||
msgid "Signup URL"
|
||||
msgstr ""
|
||||
msgstr "Bejelentkezési URL elérési útvonal"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
|
||||
#, python-format
|
||||
msgid "Please enter a username."
|
||||
msgstr ""
|
||||
msgstr "Kérjük, adja meg a felhasználónevet."
|
||||
|
||||
#. module: auth_signup
|
||||
#: selection:res.users,state:0
|
||||
@@ -153,6 +162,8 @@ msgid ""
|
||||
"Cannot send email: no outgoing email server configured.\n"
|
||||
"You can configure it under Settings/General Settings."
|
||||
msgstr ""
|
||||
"Nem küldhető e-mail: nincs kimenő e-mail szerver beállítva.\n"
|
||||
"Beállíthatja a Beállítások/Általános beállítások alatt."
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
@@ -173,7 +184,7 @@ msgstr "Név"
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
|
||||
#, python-format
|
||||
msgid "Please enter a username or email address."
|
||||
msgstr ""
|
||||
msgstr "Kérem adjon meg egy felhasználónevet vagy e-mail címet."
|
||||
|
||||
#. module: auth_signup
|
||||
#: selection:res.users,state:0
|
||||
@@ -190,12 +201,14 @@ msgstr "Felhasználónév (Email)"
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_expiration:0
|
||||
msgid "Signup Expiration"
|
||||
msgstr ""
|
||||
msgstr "Bejelentkezési határidő"
|
||||
|
||||
#. module: auth_signup
|
||||
#: help:base.config.settings,auth_signup_reset_password:0
|
||||
msgid "This allows users to trigger a password reset from the Login page."
|
||||
msgstr ""
|
||||
"Ez lehetővé teszi a felhasználó részére a jelszó megváltoztatásának "
|
||||
"elindítását a bejelentkezési oldalról."
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
@@ -247,12 +260,12 @@ msgstr "Nincs kiválasztott adatbázis!"
|
||||
#. module: auth_signup
|
||||
#: view:res.users:0
|
||||
msgid "Reset Password"
|
||||
msgstr ""
|
||||
msgstr "Jelszó visszaállítása"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:base.config.settings,auth_signup_reset_password:0
|
||||
msgid "Enable password reset from Login page"
|
||||
msgstr ""
|
||||
msgstr "Jelszóváltoztató engedélyezése a belépési oldalról"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-03-18 00:17+0000\n"
|
||||
"PO-Revision-Date: 2013-03-19 17:29+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-18 04:46+0000\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: base_calendar
|
||||
@@ -257,7 +257,7 @@ msgstr "Hiba!"
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.attendee,role:0
|
||||
msgid "Chair Person"
|
||||
msgstr ""
|
||||
msgstr "Elnök személye"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
@@ -886,7 +886,7 @@ msgstr "Ügyféltalálkozó"
|
||||
msgid ""
|
||||
"Reference to the URIthat points to the directory information corresponding "
|
||||
"to the attendee."
|
||||
msgstr ""
|
||||
msgstr "URI hivatkozás mely a felszólaló információs könyvtárára mutat"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.event,month_list:0
|
||||
@@ -1099,6 +1099,7 @@ msgstr "Feladattal megbízva"
|
||||
#: help:calendar.alarm,action:0
|
||||
msgid "Defines the action to be invoked when an alarm is triggered"
|
||||
msgstr ""
|
||||
"Meghatározza a segítségül hivható műveletet egy vészjelzés beindítása esetén"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
@@ -1124,18 +1125,20 @@ msgid ""
|
||||
"If the active field is set to true, it will allow you to hide the event "
|
||||
"alarm information without removing it."
|
||||
msgstr ""
|
||||
"Ha egy aktív mező igazra állított, akkor lehetővé teszi az esemény riasztás "
|
||||
"információ eltüntetését annak törlése nélkül."
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,end_type:0
|
||||
#: field:calendar.todo,end_type:0
|
||||
#: field:crm.meeting,end_type:0
|
||||
msgid "Recurrence Termination"
|
||||
msgstr ""
|
||||
msgstr "Ismétlés megállítása"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "Until"
|
||||
msgstr ""
|
||||
msgstr "Eddig"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:res.alarm:0
|
||||
@@ -1145,12 +1148,12 @@ msgstr "Emlékeztető részletei"
|
||||
#. module: base_calendar
|
||||
#: model:crm.meeting.type,name:base_calendar.categ_meet3
|
||||
msgid "Off-site Meeting"
|
||||
msgstr ""
|
||||
msgstr "Külső találkozó"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "Day of Month"
|
||||
msgstr ""
|
||||
msgstr "A hónap napja"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.alarm,state:0
|
||||
@@ -1167,7 +1170,7 @@ msgstr "Ismétlés (nap/hét/hó/év)"
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "All Day?"
|
||||
msgstr ""
|
||||
msgstr "Minden nap?"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
@@ -1188,6 +1191,16 @@ msgid ""
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Kattintson új találkozó ütemezéséhez.\n"
|
||||
" </p><p>\n"
|
||||
" A naptár az alkalmazottak között megosztott és teljesen "
|
||||
"integrált az\n"
|
||||
" egyéb alkalmazásokkal mint az alkalmazotti szabadságok vagy az "
|
||||
"üzleti\n"
|
||||
" lehetőségek.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: base_calendar
|
||||
#: help:calendar.alarm,description:0
|
||||
@@ -1196,6 +1209,8 @@ msgid ""
|
||||
"calendar component, than that provided by the "
|
||||
"\"SUMMARY\" property"
|
||||
msgstr ""
|
||||
"Egy jóval összetettebb leírást biztosít a naptári bejegyzéshez, mint amit az "
|
||||
"\"ÖSSZEGZÉS\" tulajdonságoknál létre lett hozva"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
@@ -1205,7 +1220,7 @@ msgstr "Felelős felhasználó"
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "Select Weekdays"
|
||||
msgstr ""
|
||||
msgstr "Munkanapokat válasszon"
|
||||
|
||||
#. module: base_calendar
|
||||
#: code:addons/base_calendar/base_calendar.py:1519
|
||||
@@ -1220,7 +1235,7 @@ msgstr "Foglalt"
|
||||
#. module: base_calendar
|
||||
#: model:ir.model,name:base_calendar.model_calendar_event
|
||||
msgid "Calendar Event"
|
||||
msgstr ""
|
||||
msgstr "Naptári esemény"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,recurrency:0
|
||||
@@ -1255,6 +1270,8 @@ msgstr "Kivétel szabály"
|
||||
msgid ""
|
||||
"To specify the language for text values in aproperty or property parameter."
|
||||
msgstr ""
|
||||
"Nyelv meghatározása a tulajdonság vagy a tulajdonság paraméter szöveg "
|
||||
"értékekhez."
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
@@ -1269,6 +1286,8 @@ msgid ""
|
||||
"Defines a rule or repeating pattern of time to exclude from the recurring "
|
||||
"rule."
|
||||
msgstr ""
|
||||
"Meghatároz egy idő szabályt vagy ismétlődési mintát az ismétlődési "
|
||||
"szabályból való kizáráshoz."
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,month_list:0
|
||||
@@ -1282,17 +1301,17 @@ msgstr "Hónap"
|
||||
#: selection:calendar.todo,rrule_type:0
|
||||
#: selection:crm.meeting,rrule_type:0
|
||||
msgid "Day(s)"
|
||||
msgstr ""
|
||||
msgstr "Nap(ok)"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
msgid "Confirmed Events"
|
||||
msgstr ""
|
||||
msgstr "Nyugtázozz események"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.attendee,dir:0
|
||||
msgid "URI Reference"
|
||||
msgstr ""
|
||||
msgstr "URI Referencia"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.alarm,description:0
|
||||
@@ -1331,7 +1350,7 @@ msgstr "ir.values"
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "Search Meetings"
|
||||
msgstr ""
|
||||
msgstr "Találkozó keresés"
|
||||
|
||||
#. module: base_calendar
|
||||
#: model:ir.model,name:base_calendar.model_ir_attachment
|
||||
@@ -1341,7 +1360,7 @@ msgstr "ir.attachment"
|
||||
#. module: base_calendar
|
||||
#: model:ir.model,name:base_calendar.model_crm_meeting_type
|
||||
msgid "Meeting Type"
|
||||
msgstr ""
|
||||
msgstr "Találkozó típusa"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.attendee,state:0
|
||||
@@ -1367,16 +1386,24 @@ msgid ""
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Kattintson új riasztás típus beállításához.\n"
|
||||
" </p><p>\n"
|
||||
" Meg tud határozni egy személyre szabott naptári riasztás "
|
||||
"típust melyet\n"
|
||||
" hozzá lehet rendelni naptári eseményhez vagy találkozókhoz.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:crm.meeting,state:0
|
||||
msgid "Unconfirmed"
|
||||
msgstr ""
|
||||
msgstr "Nincs megerősítve"
|
||||
|
||||
#. module: base_calendar
|
||||
#: help:calendar.attendee,sent_by:0
|
||||
msgid "Specify the user that is acting on behalf of the calendar user"
|
||||
msgstr ""
|
||||
msgstr "Határozza meg a falhasználót aki a naptár felhasználója lesz"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
@@ -1409,7 +1436,7 @@ msgstr "Név"
|
||||
#: field:calendar.todo,exdate:0
|
||||
#: field:crm.meeting,exdate:0
|
||||
msgid "Exception Date/Times"
|
||||
msgstr ""
|
||||
msgstr "Dátum/idő kivételek"
|
||||
|
||||
#. module: base_calendar
|
||||
#: help:calendar.alarm,name:0
|
||||
@@ -1417,11 +1444,13 @@ msgid ""
|
||||
"Contains the text to be used as the message subject for "
|
||||
"email or contains the text to be used for display"
|
||||
msgstr ""
|
||||
"Tartalmazza az e-mail tárgyaként felhasznált szöveget vagy a megjeleníteni "
|
||||
"kívánt üzenetet"
|
||||
|
||||
#. module: base_calendar
|
||||
#: model:ir.model,name:base_calendar.model_mail_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
msgstr "Üzenet"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,base_calendar_alarm_id:0
|
||||
@@ -1446,7 +1475,7 @@ msgstr "Április"
|
||||
#: code:addons/base_calendar/crm_meeting.py:106
|
||||
#, python-format
|
||||
msgid "Email addresses not found"
|
||||
msgstr ""
|
||||
msgstr "E-mail cím nem található"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
@@ -1464,7 +1493,7 @@ msgstr "Hétköznap"
|
||||
#: code:addons/base_calendar/base_calendar.py:1013
|
||||
#, python-format
|
||||
msgid "Interval cannot be negative."
|
||||
msgstr ""
|
||||
msgstr "Intervallum nem lehet negatív."
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,byday:0
|
||||
@@ -1477,7 +1506,7 @@ msgstr "Nappal"
|
||||
#: code:addons/base_calendar/base_calendar.py:441
|
||||
#, python-format
|
||||
msgid "First you have to specify the date of the invitation."
|
||||
msgstr ""
|
||||
msgstr "Elöször meg kell határoznia a meghívó dátumát."
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.alarm,model_id:0
|
||||
@@ -1499,7 +1528,7 @@ msgstr "ID"
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.attendee,role:0
|
||||
msgid "For information Purpose"
|
||||
msgstr ""
|
||||
msgstr "Információs célokra"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,select1:0
|
||||
@@ -1511,7 +1540,7 @@ msgstr "Opció"
|
||||
#. module: base_calendar
|
||||
#: model:ir.model,name:base_calendar.model_calendar_attendee
|
||||
msgid "Attendee information"
|
||||
msgstr ""
|
||||
msgstr "Résztvevők információi"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.alarm,res_id:0
|
||||
@@ -1521,12 +1550,12 @@ msgstr "Erőforrás ID"
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.attendee,state:0
|
||||
msgid "Needs Action"
|
||||
msgstr ""
|
||||
msgstr "Beavatkozás szükséges"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.attendee,sent_by:0
|
||||
msgid "Sent By"
|
||||
msgstr ""
|
||||
msgstr "Küldte"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,sequence:0
|
||||
@@ -1540,7 +1569,7 @@ msgstr "Sorszám"
|
||||
#: help:calendar.todo,alarm_id:0
|
||||
#: help:crm.meeting,alarm_id:0
|
||||
msgid "Set an alarm at this time, before the event occurs"
|
||||
msgstr ""
|
||||
msgstr "Most beállított riasztás, mielőtt az esemény elkezdődne"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
@@ -1560,7 +1589,7 @@ msgstr "Szombat"
|
||||
#: field:calendar.todo,interval:0
|
||||
#: field:crm.meeting,interval:0
|
||||
msgid "Repeat Every"
|
||||
msgstr ""
|
||||
msgstr "Ismétlés minden"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.event,byday:0
|
||||
@@ -1601,6 +1630,11 @@ msgid ""
|
||||
" * Points to a procedure resource, which is invoked when "
|
||||
" the alarm is triggered for procedure."
|
||||
msgstr ""
|
||||
"* Hangforrásra mutat, mely beindul, ha a hangra "
|
||||
"riasztást ad,\n"
|
||||
" * Fájl mely elküldésre szánt mint e-mail melléklet,\n"
|
||||
" * Művelet forrásra mutat, melyet segítségül hív ha "
|
||||
" a riasztás a művelet miatt lett kapcsolva."
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.event,byday:0
|
||||
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-18 04:46+0000\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-19 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: base_import
|
||||
|
||||
@@ -72,19 +72,4 @@
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<!-- Mail template is done in a NOUPDATE block
|
||||
so users can freely customize/delete them -->
|
||||
<data noupdate="1">
|
||||
|
||||
<!--Definition of an email template with an empty body that will be used in opportunity mailing. Used to give a
|
||||
basis for email recipients, name and to ease the definition of a further elaborated template. -->
|
||||
<record id="email_template_opportunity_mail" model="email.template">
|
||||
<field name="name">Opportunity - Send Emails</field>
|
||||
<field name="subject">${object.name}</field>
|
||||
<field name="model_id" ref="crm.model_crm_lead"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="email_recipients">${object.partner_id.id}</field>
|
||||
<field name="body_html"></field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -221,5 +221,17 @@
|
||||
<field name="relation_field">section_id</field>
|
||||
</record>
|
||||
|
||||
<!--Definition of an email template with an empty body that will be used in opportunity mailing.
|
||||
Used to give a basis for email recipients, name and to ease the definition of a further
|
||||
elaborated template. -->
|
||||
<record id="email_template_opportunity_mail" model="email.template">
|
||||
<field name="name">Lead/Opportunity Mass Mail</field>
|
||||
<field name="model_id" ref="crm.model_crm_lead"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="partner_to">${object.partner_id and object.partner_id.id}</field>
|
||||
<field name="email_to">${not object.partner_id and object.email_from}</field>
|
||||
<field name="body_html"></field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -582,5 +582,29 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
MASS MAILING
|
||||
-->
|
||||
<act_window name="Lead/Opportunity Mass Mail"
|
||||
res_model="mail.compose.message"
|
||||
src_model="crm.lead"
|
||||
view_mode="form"
|
||||
multi="True"
|
||||
target="new"
|
||||
key2="client_action_multi"
|
||||
id="crm.action_lead_mass_mail"
|
||||
context="{
|
||||
'default_composition_mode': 'mass_mail',
|
||||
'default_email_to':'{$object.email or \'\'}',
|
||||
'default_use_template': True,
|
||||
'default_template_id': ref('crm.email_template_opportunity_mail'),
|
||||
}"/>
|
||||
|
||||
<!--Update of email_template defined in crm_lead_data, to add ref_ir_act_window
|
||||
allowing to have a well formed email template (context action considered as set). -->
|
||||
<record id="email_template_opportunity_mail" model="email.template">
|
||||
<field name="ref_ir_act_window" ref="crm.action_lead_mass_mail"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -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: 2013-03-18 04:46+0000\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-19 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: crm
|
||||
|
||||
@@ -146,7 +146,9 @@ class email_template(osv.osv):
|
||||
help="Sender address (placeholders may be used here). If not set, the default "
|
||||
"value will be the author's email alias if configured, or email address."),
|
||||
'email_to': fields.char('To (Emails)', help="Comma-separated recipient addresses (placeholders may be used here)"),
|
||||
'email_recipients': fields.char('To (Partners)', help="Comma-separated ids of recipient partners (placeholders may be used here)"),
|
||||
'partner_to': fields.char('To (Partners)',
|
||||
help="Comma-separated ids of recipient partners (placeholders may be used here)",
|
||||
oldname='email_recipients'),
|
||||
'email_cc': fields.char('Cc', help="Carbon copy recipients (placeholders may be used here)"),
|
||||
'reply_to': fields.char('Reply-To', help="Preferred response address (placeholders may be used here)"),
|
||||
'mail_server_id': fields.many2one('ir.mail_server', 'Outgoing Mail Server', readonly=False,
|
||||
@@ -314,7 +316,7 @@ class email_template(osv.osv):
|
||||
template = self.get_email_template(cr, uid, template_id, res_id, context)
|
||||
values = {}
|
||||
for field in ['subject', 'body_html', 'email_from',
|
||||
'email_to', 'email_recipients', 'email_cc', 'reply_to']:
|
||||
'email_to', 'partner_to', 'email_cc', 'reply_to']:
|
||||
values[field] = self.render_template(cr, uid, getattr(template, field),
|
||||
template.model, res_id, context=context) \
|
||||
or False
|
||||
@@ -374,7 +376,7 @@ class email_template(osv.osv):
|
||||
values = self.generate_email(cr, uid, template_id, res_id, context=context)
|
||||
assert 'email_from' in values, 'email_from is missing or empty after template rendering, send_mail() cannot proceed'
|
||||
attachments = values.pop('attachments') or {}
|
||||
del values['email_recipients'] # TODO Properly use them.
|
||||
del values['partner_to'] # TODO Properly use them.
|
||||
msg_id = mail_mail.create(cr, uid, values, context=context)
|
||||
# link attachments
|
||||
attachment_ids = []
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<group string="Addressing">
|
||||
<field name="email_from"/>
|
||||
<field name="email_to"/>
|
||||
<field name="email_recipients"/>
|
||||
<field name="partner_to"/>
|
||||
<field name="email_cc"/>
|
||||
<field name="reply_to"/>
|
||||
<field name="user_signature"/>
|
||||
@@ -78,7 +78,7 @@
|
||||
<field name="subject"/>
|
||||
<field name="email_from"/>
|
||||
<field name="email_to"/>
|
||||
<field name="email_recipients"/>
|
||||
<field name="partner_to"/>
|
||||
<field name="report_name"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
@@ -25,5 +25,35 @@
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!--Definition of an email template with an empty body that will be used in partner mailing. Used to give a
|
||||
basis for email recipients, name and to ease the definition of a further elaborated template. -->
|
||||
<record id="email_template_partner" model="email.template">
|
||||
<field name="name">Partner Mass Mail</field>
|
||||
<field name="model_id" ref="base.model_res_partner"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="partner_to">${object.id}</field>
|
||||
</record>
|
||||
|
||||
<!-- Replace the default mass-mailing wizard in base with the composition wizard -->
|
||||
<act_window name="Partner Mass Mailing"
|
||||
res_model="mail.compose.message"
|
||||
src_model="res.partner"
|
||||
view_mode="form"
|
||||
multi="True"
|
||||
target="new"
|
||||
key2="client_action_multi"
|
||||
id="base.action_partner_mass_mail"
|
||||
context="{
|
||||
'default_composition_mode': 'mass_mail',
|
||||
'default_partner_to': '${object.id or \'\'}',
|
||||
'default_use_template': True,
|
||||
'default_template_id': ref('email_template_partner'),
|
||||
}"/>
|
||||
|
||||
<record id="email_template_partner" model="email.template">
|
||||
<field name="ref_ir_act_window" ref="base.action_partner_mass_mail"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -130,6 +130,7 @@ class test_message_compose(TestMailBase):
|
||||
# 1. Mass_mail on pigs and bird, with a default_partner_ids set to check he is correctly added
|
||||
context = {
|
||||
'default_composition_mode': 'mass_mail',
|
||||
'default_notify': True,
|
||||
'default_model': 'mail.group',
|
||||
'default_res_id': self.group_pigs_id,
|
||||
'default_template_id': email_template_id,
|
||||
@@ -170,20 +171,20 @@ class test_message_compose(TestMailBase):
|
||||
self.assertEqual(set(message_bird_pids), set(partner_ids), 'mail.message on bird notified_partner_ids incorrect')
|
||||
|
||||
# ----------------------------------------
|
||||
# CASE4: test newly introduced email_recipients field
|
||||
# CASE4: test newly introduced partner_to field
|
||||
# ----------------------------------------
|
||||
|
||||
# get already-created partners back
|
||||
p_b_id = self.res_partner.search(cr, uid, [('email', '=', 'b@b.b')])[0]
|
||||
p_c_id = self.res_partner.search(cr, uid, [('email', '=', 'c@c.c')])[0]
|
||||
p_d_id = self.res_partner.search(cr, uid, [('email', '=', 'd@d.d')])[0]
|
||||
# modify template: use email_recipients, use template and email address in email_to to test all features together
|
||||
# modify template: use partner_to, use template and email address in email_to to test all features together
|
||||
user_model_id = self.registry('ir.model').search(cr, uid, [('model', '=', 'res.users')])[0]
|
||||
email_template.write(cr, uid, [email_template_id], {
|
||||
'model_id': user_model_id,
|
||||
'body_html': '${object.login}',
|
||||
'email_to': '${object.email} c@c',
|
||||
'email_recipients': '%i,%i' % (p_b_id, p_c_id),
|
||||
'partner_to': '%i,%i' % (p_b_id, p_c_id),
|
||||
'email_cc': 'd@d',
|
||||
})
|
||||
# patner by email + partner by id (no double)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<group>
|
||||
<field name="email_from" readonly="1"/>
|
||||
<field name="email_to" readonly="1"/>
|
||||
<field name="email_recipients" readonly="1"/>
|
||||
<field name="partner_to" readonly="1"/>
|
||||
<field name="email_cc" readonly="1" attrs="{'invisible':[('email_cc','=',False)]}"/>
|
||||
<field name="reply_to" readonly="1" attrs="{'invisible':[('reply_to','=',False)]}"/>
|
||||
<field name="subject" readonly="1"/>
|
||||
|
||||
@@ -59,14 +59,21 @@ class mail_compose_message(osv.TransientModel):
|
||||
_columns = {
|
||||
# incredible hack of the day: size=-1 means we want an int db column instead of an str one
|
||||
'template_id': fields.selection(_get_templates, 'Template', size=-1),
|
||||
'partner_to': fields.char('To (Partner IDs)',
|
||||
help="Comma-separated list of recipient partners ids (placeholders may be used here)"),
|
||||
'email_to': fields.char('To (Emails)',
|
||||
help="Comma-separated recipient addresses (placeholders may be used here)",),
|
||||
'email_cc': fields.char('Cc (Emails)',
|
||||
help="Carbon copy recipients (placeholders may be used here)"),
|
||||
}
|
||||
|
||||
def onchange_template_id(self, cr, uid, ids, template_id, composition_mode, model, res_id, context=None):
|
||||
""" - mass_mailing: we cannot render, so return the template values
|
||||
- normal mode: return rendered values """
|
||||
if template_id and composition_mode == 'mass_mail':
|
||||
values = self.pool.get('email.template').read(cr, uid, template_id, ['subject', 'body_html'], context)
|
||||
values.pop('id')
|
||||
fields = ['subject', 'body_html', 'email_from', 'email_to', 'partner_to', 'email_cc', 'reply_to']
|
||||
template_values = self.pool.get('email.template').read(cr, uid, template_id, fields, context)
|
||||
values = dict((field, template_values[field]) for field in fields if template_values.get(field))
|
||||
elif template_id:
|
||||
# FIXME odo: change the mail generation to avoid attachment duplication
|
||||
values = self.generate_email_for_composer(cr, uid, template_id, res_id, context=context)
|
||||
@@ -84,7 +91,7 @@ class mail_compose_message(osv.TransientModel):
|
||||
}
|
||||
values['attachment_ids'].append(ir_attach_obj.create(cr, uid, data_attach, context=context))
|
||||
else:
|
||||
values = self.default_get(cr, uid, ['body', 'subject', 'partner_ids', 'attachment_ids'], context=context)
|
||||
values = self.default_get(cr, uid, ['subject', 'body', 'email_from', 'email_to', 'email_cc', 'partner_to', 'reply_to', 'attachment_ids'], context=context)
|
||||
|
||||
if values.get('body_html'):
|
||||
values['body'] = values.pop('body_html')
|
||||
@@ -117,26 +124,31 @@ class mail_compose_message(osv.TransientModel):
|
||||
# Wizard validation and send
|
||||
#------------------------------------------------------
|
||||
|
||||
def _get_or_create_partners_from_values(self, cr, uid, rendered_values, context=None):
|
||||
""" Check for email_to, email_cc, partner_to """
|
||||
partner_ids = []
|
||||
mails = tools.email_split(rendered_values.pop('email_to', '') + ' ' + rendered_values.pop('email_cc', ''))
|
||||
for mail in mails:
|
||||
partner_id = self.pool.get('res.partner').find_or_create(cr, uid, mail, context=context)
|
||||
partner_ids.append(partner_id)
|
||||
partner_to = rendered_values.pop('partner_to', '')
|
||||
if partner_to:
|
||||
for partner_id in partner_to.split(','):
|
||||
if partner_id: # placeholders could generate '', 3, 2 due to some empty field values
|
||||
partner_ids.append(int(partner_id))
|
||||
return partner_ids
|
||||
|
||||
def generate_email_for_composer(self, cr, uid, template_id, res_id, context=None):
|
||||
""" Call email_template.generate_email(), get fields relevant for
|
||||
mail.compose.message, transform email_cc and email_to into partner_ids """
|
||||
template_values = self.pool.get('email.template').generate_email(cr, uid, template_id, res_id, context=context)
|
||||
# filter template values
|
||||
fields = ['body_html', 'subject', 'email_to', 'email_recipients', 'email_cc', 'attachments']
|
||||
fields = ['subject', 'body_html', 'email_from', 'email_to', 'partner_to', 'email_cc', 'reply_to', 'attachments']
|
||||
values = dict((field, template_values[field]) for field in fields if template_values.get(field))
|
||||
values['body'] = values.pop('body_html', '')
|
||||
|
||||
# transform email_to, email_cc into partner_ids
|
||||
partner_ids = set()
|
||||
mails = tools.email_split(values.pop('email_to', '') + ' ' + values.pop('email_cc', ''))
|
||||
for mail in mails:
|
||||
partner_id = self.pool.get('res.partner').find_or_create(cr, uid, mail, context=context)
|
||||
partner_ids.add(partner_id)
|
||||
email_recipients = values.pop('email_recipients', '')
|
||||
if email_recipients:
|
||||
for partner_id in email_recipients.split(','):
|
||||
if partner_id: # placeholders could generate '', 3, 2 due to some empty field values
|
||||
partner_ids.add(int(partner_id))
|
||||
partner_ids = self._get_or_create_partners_from_values(cr, uid, values, context=context)
|
||||
# legacy template behavior: void values do not erase existing values and the
|
||||
# related key is removed from the values dict
|
||||
if partner_ids:
|
||||
@@ -153,6 +165,11 @@ class mail_compose_message(osv.TransientModel):
|
||||
values = {}
|
||||
# get values to return
|
||||
email_dict = super(mail_compose_message, self).render_message(cr, uid, wizard, res_id, context)
|
||||
# those values are not managed; they are readonly
|
||||
email_dict.pop('email_to', None)
|
||||
email_dict.pop('email_cc', None)
|
||||
email_dict.pop('partner_to', None)
|
||||
# update template values by wizard values
|
||||
values.update(email_dict)
|
||||
return values
|
||||
|
||||
|
||||
@@ -7,6 +7,22 @@
|
||||
<field name="model">mail.compose.message</field>
|
||||
<field name="inherit_id" ref="mail.email_compose_message_wizard_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='subject']" position="after">
|
||||
<label string="Template Recipients" for="partner_to"
|
||||
groups="base.group_no_one"
|
||||
attrs="{'invisible':[('composition_mode', '!=', 'mass_mail')]}"/>
|
||||
<div groups="base.group_no_one"
|
||||
attrs="{'invisible':[('composition_mode', '!=', 'mass_mail')]}">
|
||||
<group class="oe_grey">
|
||||
<!-- <label string="Partners" for="partner_to"/> -->
|
||||
<field name="partner_to" readonly="1"/>
|
||||
<!-- <label string="Email To" for="email_to"/> -->
|
||||
<field name="email_to" readonly="1"/>
|
||||
<!-- <label string="Email CC" for="email_cc"/> -->
|
||||
<field name="email_cc" readonly="1"/>
|
||||
</group>
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//footer" position="inside">
|
||||
<group class="oe_right" col="1">
|
||||
<div>Use template
|
||||
|
||||
@@ -186,23 +186,19 @@ class mail_notification(osv.Model):
|
||||
signature_company = self.get_signature_footer(cr, uid, user_id, res_model=msg.model, res_id=msg.res_id, context=context)
|
||||
body_html = tools.append_content_to_html(body_html, signature_company, plaintext=False, container_tag='div')
|
||||
|
||||
# email_from: partner-user alias or partner email or mail.message email_from
|
||||
if msg.author_id and msg.author_id.user_ids and msg.author_id.user_ids[0].alias_domain and msg.author_id.user_ids[0].alias_name:
|
||||
email_from = '%s <%s@%s>' % (msg.author_id.name, msg.author_id.user_ids[0].alias_name, msg.author_id.user_ids[0].alias_domain)
|
||||
elif msg.author_id:
|
||||
email_from = '%s <%s>' % (msg.author_id.name, msg.author_id.email)
|
||||
else:
|
||||
email_from = msg.email_from
|
||||
|
||||
mail_values = {
|
||||
'mail_message_id': msg.id,
|
||||
'auto_delete': True,
|
||||
'body_html': body_html,
|
||||
'email_from': email_from,
|
||||
'recipient_ids': [(4, id) for id in notify_partner_ids]
|
||||
}
|
||||
if msg.email_from:
|
||||
mail_values['email_from'] = msg.email_from
|
||||
if msg.reply_to:
|
||||
mail_values['reply_to'] = msg.reply_to
|
||||
mail_mail = self.pool.get('mail.mail')
|
||||
email_notif_id = mail_mail.create(cr, uid, mail_values, context=context)
|
||||
try:
|
||||
return mail_mail.send(cr, uid, [email_notif_id], recipient_ids=notify_partner_ids, context=context)
|
||||
return mail_mail.send(cr, uid, [email_notif_id], context=context)
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
+46
-48
@@ -55,22 +55,25 @@ class mail_mail(osv.Model):
|
||||
help="Permanently delete this email after sending it, to save space"),
|
||||
'references': fields.text('References', help='Message references, such as identifiers of previous messages', readonly=1),
|
||||
'email_from': fields.char('From', help='Message sender, taken from user preferences.'),
|
||||
'email_to': fields.text('To', help='Message recipients'),
|
||||
'email_to': fields.text('To', help='Message recipients (emails)'),
|
||||
'recipient_ids': fields.many2many('res.partner', string='To (Partners)'),
|
||||
'email_cc': fields.char('Cc', help='Carbon copy message recipients'),
|
||||
'reply_to': fields.char('Reply-To', help='Preferred response address for the message'),
|
||||
'body_html': fields.text('Rich-text Contents', help="Rich-text/HTML message"),
|
||||
|
||||
# If not set in create values, auto-detected based on create values (res_id, model, email_from)
|
||||
'reply_to': fields.char('Reply-To',
|
||||
help='Preferred response address for the message'),
|
||||
# Auto-detected based on create() - if 'mail_message_id' was passed then this mail is a notification
|
||||
# and during unlink() we will not cascade delete the parent and its attachments
|
||||
'notification': fields.boolean('Is Notification')
|
||||
'notification': fields.boolean('Is Notification',
|
||||
help='Mail has been created to notify people of an existing mail.message')
|
||||
}
|
||||
|
||||
def _get_default_from(self, cr, uid, context=None):
|
||||
this = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
this = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context)
|
||||
if this.alias_domain:
|
||||
return '%s@%s' % (this.alias_name, this.alias_domain)
|
||||
return '%s <%s@%s>' % (this.name, this.alias_name, this.alias_domain)
|
||||
elif this.email:
|
||||
return this.email
|
||||
return '%s <%s>' % (this.name, this.email)
|
||||
raise osv.except_osv(_('Invalid Action!'), _("Unable to send email, please configure the sender's email address or alias."))
|
||||
|
||||
_defaults = {
|
||||
@@ -82,12 +85,41 @@ class mail_mail(osv.Model):
|
||||
# protection for `default_type` values leaking from menu action context (e.g. for invoices)
|
||||
# To remove when automatic context propagation is removed in web client
|
||||
if context and context.get('default_type') and context.get('default_type') not in self._all_columns['type'].column.selection:
|
||||
context = dict(context, default_type = None)
|
||||
context = dict(context, default_type=None)
|
||||
return super(mail_mail, self).default_get(cr, uid, fields, context=context)
|
||||
|
||||
def _get_reply_to(self, cr, uid, values, context=None):
|
||||
""" Return a specific reply_to: alias of the document through message_get_reply_to
|
||||
or take the email_from
|
||||
"""
|
||||
if values.get('reply_to'):
|
||||
return values.get('reply_to')
|
||||
email_reply_to = False
|
||||
|
||||
# if model and res_id: try to use ``message_get_reply_to`` that returns the document alias
|
||||
if values.get('model') and values.get('res_id') and hasattr(self.pool.get(values.get('model')), 'message_get_reply_to'):
|
||||
email_reply_to = self.pool.get(values.get('model')).message_get_reply_to(cr, uid, [values.get('res_id')], context=context)[0]
|
||||
# no alias reply_to -> reply_to will be the email_from, only the email part
|
||||
if not email_reply_to and values.get('email_from'):
|
||||
emails = tools.email_split(values.get('email_from'))
|
||||
if emails:
|
||||
email_reply_to = emails[0]
|
||||
|
||||
# format 'Document name <email_address>'
|
||||
if email_reply_to and values.get('model') and values.get('res_id'):
|
||||
document_name = self.pool.get(values.get('model')).name_get(cr, SUPERUSER_ID, [values.get('res_id')], context=context)[0]
|
||||
if document_name:
|
||||
email_reply_to = _('Followers of %s <%s>') % (document_name[1], email_reply_to)
|
||||
|
||||
return email_reply_to
|
||||
|
||||
def create(self, cr, uid, values, context=None):
|
||||
# notification field: if not set, set if mail comes from an existing mail.message
|
||||
if 'notification' not in values and values.get('mail_message_id'):
|
||||
values['notification'] = True
|
||||
# reply_to: if not set, set with default values that require creation values
|
||||
if not values.get('reply_to'):
|
||||
values['reply_to'] = self._get_reply_to(cr, uid, values, context=context)
|
||||
return super(mail_mail, self).create(cr, uid, values, context=context)
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
@@ -200,33 +232,6 @@ class mail_mail(osv.Model):
|
||||
body = tools.append_content_to_html(body, body_footer, plaintext=False, container_tag='div')
|
||||
return body
|
||||
|
||||
def send_get_mail_reply_to(self, cr, uid, mail, partner=None, context=None):
|
||||
""" Return a specific ir_email reply_to.
|
||||
|
||||
:param browse_record mail: mail.mail browse_record
|
||||
:param browse_record partner: specific recipient partner
|
||||
"""
|
||||
if mail.reply_to:
|
||||
return mail.reply_to
|
||||
email_reply_to = False
|
||||
|
||||
# if model and res_id: try to use ``message_get_reply_to`` that returns the document alias
|
||||
if mail.model and mail.res_id and hasattr(self.pool.get(mail.model), 'message_get_reply_to'):
|
||||
email_reply_to = self.pool.get(mail.model).message_get_reply_to(cr, uid, [mail.res_id], context=context)[0]
|
||||
# no alias reply_to -> reply_to will be the email_from, only the email part
|
||||
if not email_reply_to and mail.email_from:
|
||||
emails = tools.email_split(mail.email_from)
|
||||
if emails:
|
||||
email_reply_to = emails[0]
|
||||
|
||||
# format 'Document name <email_address>'
|
||||
if email_reply_to and mail.model and mail.res_id:
|
||||
document_name = self.pool.get(mail.model).name_get(cr, SUPERUSER_ID, [mail.res_id], context=context)[0]
|
||||
if document_name:
|
||||
email_reply_to = _('Followers of %s <%s>') % (document_name[1], email_reply_to)
|
||||
|
||||
return email_reply_to
|
||||
|
||||
def send_get_email_dict(self, cr, uid, mail, partner=None, context=None):
|
||||
""" Return a dictionary for specific email values, depending on a
|
||||
partner, or generic to the whole recipients given by mail.email_to.
|
||||
@@ -236,7 +241,6 @@ class mail_mail(osv.Model):
|
||||
"""
|
||||
body = self.send_get_mail_body(cr, uid, mail, partner=partner, context=context)
|
||||
subject = self.send_get_mail_subject(cr, uid, mail, partner=partner, context=context)
|
||||
reply_to = self.send_get_mail_reply_to(cr, uid, mail, partner=partner, context=context)
|
||||
body_alternative = tools.html2plaintext(body)
|
||||
email_to = [partner.email] if partner else tools.email_split(mail.email_to)
|
||||
return {
|
||||
@@ -244,10 +248,9 @@ class mail_mail(osv.Model):
|
||||
'body_alternative': body_alternative,
|
||||
'subject': subject,
|
||||
'email_to': email_to,
|
||||
'reply_to': reply_to,
|
||||
}
|
||||
|
||||
def send(self, cr, uid, ids, auto_commit=False, recipient_ids=None, context=None):
|
||||
def send(self, cr, uid, ids, auto_commit=False, context=None):
|
||||
""" Sends the selected emails immediately, ignoring their current
|
||||
state (mails that have already been sent should not be passed
|
||||
unless they should actually be re-sent).
|
||||
@@ -258,14 +261,10 @@ class mail_mail(osv.Model):
|
||||
:param bool auto_commit: whether to force a commit of the mail status
|
||||
after sending each mail (meant only for scheduler processing);
|
||||
should never be True during normal transactions (default: False)
|
||||
:param list recipient_ids: specific list of res.partner recipients.
|
||||
If set, one email is sent to each partner. Its is possible to
|
||||
tune the sent email through ``send_get_mail_body`` and ``send_get_mail_subject``.
|
||||
If not specified, one email is sent to mail_mail.email_to.
|
||||
:return: True
|
||||
"""
|
||||
ir_mail_server = self.pool.get('ir.mail_server')
|
||||
for mail in self.browse(cr, uid, ids, context=context):
|
||||
for mail in self.browse(cr, SUPERUSER_ID, ids, context=context):
|
||||
try:
|
||||
# handle attachments
|
||||
attachments = []
|
||||
@@ -273,11 +272,10 @@ class mail_mail(osv.Model):
|
||||
attachments.append((attach.datas_fname, base64.b64decode(attach.datas)))
|
||||
# specific behavior to customize the send email for notified partners
|
||||
email_list = []
|
||||
if recipient_ids:
|
||||
for partner in self.pool.get('res.partner').browse(cr, SUPERUSER_ID, recipient_ids, context=context):
|
||||
email_list.append(self.send_get_email_dict(cr, uid, mail, partner=partner, context=context))
|
||||
else:
|
||||
if mail.email_to:
|
||||
email_list.append(self.send_get_email_dict(cr, uid, mail, context=context))
|
||||
for partner in mail.recipient_ids:
|
||||
email_list.append(self.send_get_email_dict(cr, uid, mail, partner=partner, context=context))
|
||||
|
||||
# build an RFC2822 email.message.Message object and send it without queuing
|
||||
for email in email_list:
|
||||
@@ -288,7 +286,7 @@ class mail_mail(osv.Model):
|
||||
body = email.get('body'),
|
||||
body_alternative = email.get('body_alternative'),
|
||||
email_cc = tools.email_split(mail.email_cc),
|
||||
reply_to = email.get('reply_to'),
|
||||
reply_to = mail.reply_to,
|
||||
attachments = attachments,
|
||||
message_id = mail.message_id,
|
||||
references = mail.references,
|
||||
|
||||
@@ -14,31 +14,23 @@
|
||||
<button name="%(action_email_compose_message_wizard)d" string="Reply" type="action" icon="terp-mail-replied"
|
||||
context="{'default_composition_mode':'reply', 'default_parent_id': active_id}" states='received,sent,exception,cancel'/>
|
||||
</div>
|
||||
<notebook colspan="4">
|
||||
<page string="Message Details">
|
||||
<group>
|
||||
<group>
|
||||
<field name="email_from"/>
|
||||
<field name="email_to"/>
|
||||
<field name="email_cc"/>
|
||||
<field name="reply_to"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="partner_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Body">
|
||||
<field name="body_html"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<group>
|
||||
<field name="email_from"/>
|
||||
<field name="email_to"/>
|
||||
<field name="recipient_ids" widget="many2many_tags"/>
|
||||
<field name="email_cc"/>
|
||||
<field name="reply_to"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Body">
|
||||
<field name="body_html"/>
|
||||
</page>
|
||||
<page string="Advanced" groups="base.group_no_one">
|
||||
<group>
|
||||
<group>
|
||||
<field name="auto_delete"/>
|
||||
<field name="type"/>
|
||||
<field name="state" colspan="2"/>
|
||||
<field name="state"/>
|
||||
<field name="mail_server_id"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
@@ -46,6 +38,8 @@
|
||||
<group>
|
||||
<field name="message_id"/>
|
||||
<field name="references"/>
|
||||
<field name="partner_ids" widget="many2many_tags"/>
|
||||
<field name="notified_partner_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
@@ -67,7 +61,7 @@
|
||||
<field name="subject"/>
|
||||
<field name="author_id" string="User"/>
|
||||
<field name="message_id" invisible="1"/>
|
||||
<field name="partner_ids" invisible="1"/>
|
||||
<field name="recipient_ids" invisible="1"/>
|
||||
<field name="model" invisible="1"/>
|
||||
<field name="res_id" invisible="1"/>
|
||||
<field name="email_from" invisible="1"/>
|
||||
@@ -97,7 +91,7 @@
|
||||
<filter icon="terp-camera_test" name="type_notification" string="Notification" domain="[('type','=','notification')]"/>
|
||||
<group expand="0" string="Extended Filters...">
|
||||
<field name="author_id"/>
|
||||
<field name="partner_ids"/>
|
||||
<field name="recipient_ids"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
</group>
|
||||
|
||||
@@ -139,6 +139,8 @@ class mail_message(osv.Model):
|
||||
"message, comment for other messages such as user replies"),
|
||||
'email_from': fields.char('From',
|
||||
help="Email address of the sender. This field is set when no matching partner is found for incoming emails."),
|
||||
'reply_to': fields.char('Reply-To',
|
||||
help='Reply email address. Setting the reply_to bypasses the automatic thread creation.'),
|
||||
'author_id': fields.many2one('res.partner', 'Author', select=1,
|
||||
ondelete='set null',
|
||||
help="Author of the message. If not set, email_from may hold an email address that did not match any partner."),
|
||||
@@ -185,8 +187,9 @@ class mail_message(osv.Model):
|
||||
_defaults = {
|
||||
'type': 'email',
|
||||
'date': lambda *a: fields.datetime.now(),
|
||||
'author_id': lambda self, cr, uid, ctx={}: self._get_default_author(cr, uid, ctx),
|
||||
'author_id': lambda self, cr, uid, ctx=None: self._get_default_author(cr, uid, ctx),
|
||||
'body': '',
|
||||
'email_from': lambda self, cr, uid, ctx=None: self.pool.get('mail.mail')._get_default_from(cr, uid, ctx),
|
||||
}
|
||||
|
||||
#------------------------------------------------------
|
||||
@@ -731,7 +734,10 @@ class mail_message(osv.Model):
|
||||
if context is None:
|
||||
context = {}
|
||||
default_starred = context.pop('default_starred', False)
|
||||
if not values.get('message_id') and values.get('res_id') and values.get('model'):
|
||||
# generate message_id, to redirect answers to the right discussion thread
|
||||
if not values.get('message_id') and values.get('reply_to'):
|
||||
values['message_id'] = tools.generate_tracking_message_id('reply_to-%(model)s' % values)
|
||||
elif not values.get('message_id') and values.get('res_id') and values.get('model'):
|
||||
values['message_id'] = tools.generate_tracking_message_id('%(res_id)s-%(model)s' % values)
|
||||
elif not values.get('message_id'):
|
||||
values['message_id'] = tools.generate_tracking_message_id('private')
|
||||
|
||||
@@ -504,6 +504,7 @@ class mail_thread(osv.AbstractModel):
|
||||
# 1. Verify if this is a reply to an existing thread
|
||||
thread_references = references or in_reply_to
|
||||
ref_match = thread_references and tools.reference_re.search(thread_references)
|
||||
|
||||
if ref_match:
|
||||
thread_id = int(ref_match.group(1))
|
||||
model = ref_match.group(2) or model
|
||||
@@ -516,7 +517,10 @@ class mail_thread(osv.AbstractModel):
|
||||
|
||||
# Verify whether this is a reply to a private message
|
||||
if in_reply_to:
|
||||
message_ids = self.pool.get('mail.message').search(cr, uid, [('message_id', '=', in_reply_to)], limit=1, context=context)
|
||||
message_ids = self.pool.get('mail.message').search(cr, uid, [
|
||||
('message_id', '=', in_reply_to),
|
||||
'!', ('message_id', 'ilike', 'reply_to')
|
||||
], limit=1, context=context)
|
||||
if message_ids:
|
||||
message = self.pool.get('mail.message').browse(cr, uid, message_ids[0], context=context)
|
||||
_logger.debug('Routing mail with Message-Id %s: direct reply to a private message: %s, custom_values: %s, uid: %s',
|
||||
@@ -1062,7 +1066,7 @@ class mail_thread(osv.AbstractModel):
|
||||
# Create and auto subscribe the author
|
||||
msg_id = mail_message.create(cr, uid, values, context=context)
|
||||
message = mail_message.browse(cr, uid, msg_id, context=context)
|
||||
if message.author_id and thread_id and type != 'notification':
|
||||
if message.author_id and thread_id and type != 'notification' and not context.get('mail_create_nosubscribe'):
|
||||
self.message_subscribe(cr, uid, [thread_id], [message.author_id.id], context=context)
|
||||
return msg_id
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
##############################################################################
|
||||
|
||||
from openerp.addons.mail.tests.test_mail_base import TestMailBase
|
||||
from openerp.tools.mail import html_sanitize, append_content_to_html
|
||||
from openerp.tools.mail import html_sanitize
|
||||
|
||||
MAIL_TEMPLATE = """Return-Path: <whatever-2a840@postmaster.twitter.com>
|
||||
To: {to}
|
||||
@@ -312,7 +312,7 @@ class test_mail(TestMailBase):
|
||||
self.res_users.write(cr, uid, [uid], {'signature': 'Admin', 'email': 'a@a'})
|
||||
# 1 - Bert Tartopoils, with email, should receive emails for comments and emails
|
||||
p_b_id = self.res_partner.create(cr, uid, {'name': 'Bert Tartopoils', 'email': 'b@b'})
|
||||
# 2 - Carine Poilvache, with email, should never receive emails
|
||||
# 2 - Carine Poilvache, with email, should receive emails for emails
|
||||
p_c_id = self.res_partner.create(cr, uid, {'name': 'Carine Poilvache', 'email': 'c@c', 'notification_email_send': 'email'})
|
||||
# 3 - Dédé Grosbedon, without email, to test email verification; should receive emails for every message
|
||||
p_d_id = self.res_partner.create(cr, uid, {'name': 'Dédé Grosbedon', 'notification_email_send': 'all'})
|
||||
@@ -456,7 +456,7 @@ class test_mail(TestMailBase):
|
||||
# 2 - Carine Poilvache, with email, should never receive emails
|
||||
p_c_id = self.res_partner.create(cr, uid, {'name': 'Carine Poilvache', 'email': 'c@c', 'notification_email_send': 'email'})
|
||||
# 3 - Dédé Grosbedon, without email, to test email verification; should receive emails for every message
|
||||
p_d_id = self.res_partner.create(cr, uid, {'name': 'Dédé Grosbedon', 'notification_email_send': 'all'})
|
||||
p_d_id = self.res_partner.create(cr, uid, {'name': 'Dédé Grosbedon', 'email': 'd@d', 'notification_email_send': 'all'})
|
||||
|
||||
# Subscribe #1
|
||||
group_pigs.message_subscribe([p_b_id])
|
||||
@@ -519,7 +519,7 @@ class test_mail(TestMailBase):
|
||||
# 1. mass_mail on pigs and bird
|
||||
compose_id = mail_compose.create(cr, uid,
|
||||
{'subject': _subject, 'body': '${object.description}'},
|
||||
{'default_composition_mode': 'mass_mail', 'default_model': 'mail.group', 'default_res_id': False,
|
||||
{'default_composition_mode': 'mass_mail', 'default_model': 'mail.group', 'default_res_id': False, 'default_notify': True,
|
||||
'active_ids': [self.group_pigs_id, group_bird_id]})
|
||||
compose = mail_compose.browse(cr, uid, compose_id)
|
||||
|
||||
|
||||
@@ -82,15 +82,15 @@ class invite_wizard(osv.osv_memory):
|
||||
wizard.message = tools.append_content_to_html(wizard.message, signature_company, plaintext=False, container_tag='div')
|
||||
|
||||
# send mail to new followers
|
||||
for follower_id in new_follower_ids:
|
||||
mail_mail = self.pool.get('mail.mail')
|
||||
# the invite wizard should create a private message not related to any object -> no model, no res_id
|
||||
mail_id = mail_mail.create(cr, uid, {
|
||||
'model': wizard.res_model,
|
||||
'res_id': wizard.res_id,
|
||||
'subject': _('Invitation to follow %s: %s') % (model_name, document.name_get()[0][1]),
|
||||
'body_html': '%s' % wizard.message,
|
||||
'auto_delete': True,
|
||||
}, context=context)
|
||||
mail_mail.send(cr, uid, [mail_id], recipient_ids=[follower_id], context=context)
|
||||
# the invite wizard should create a private message not related to any object -> no model, no res_id
|
||||
mail_mail = self.pool.get('mail.mail')
|
||||
mail_id = mail_mail.create(cr, uid, {
|
||||
'model': wizard.res_model,
|
||||
'res_id': wizard.res_id,
|
||||
'subject': _('Invitation to follow %s: %s') % (model_name, document.name_get()[0][1]),
|
||||
'body_html': '%s' % wizard.message,
|
||||
'auto_delete': True,
|
||||
'recipient_ids': [(4, id) for id in new_follower_ids]
|
||||
}, context=context)
|
||||
mail_mail.send(cr, uid, [mail_id], context=context)
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
@@ -113,6 +113,12 @@ class mail_compose_message(osv.TransientModel):
|
||||
'partner_ids': fields.many2many('res.partner',
|
||||
'mail_compose_message_res_partner_rel',
|
||||
'wizard_id', 'partner_id', 'Additional contacts'),
|
||||
'post': fields.boolean('Post a copy in the document',
|
||||
help='Post a copy of the message on the document communication history.'),
|
||||
'notify': fields.boolean('Notify followers',
|
||||
help='Notify followers of the document'),
|
||||
'same_thread': fields.boolean('Replies in the document',
|
||||
help='Replies to the messages will go into the selected document.'),
|
||||
'attachment_ids': fields.many2many('ir.attachment',
|
||||
'mail_compose_message_ir_attachments_rel',
|
||||
'wizard_id', 'attachment_id', 'Attachments'),
|
||||
@@ -121,9 +127,13 @@ class mail_compose_message(osv.TransientModel):
|
||||
|
||||
_defaults = {
|
||||
'composition_mode': 'comment',
|
||||
'email_from': lambda self, cr, uid, ctx={}: self.pool.get('mail.mail')._get_default_from(cr, uid, context=ctx),
|
||||
'body': lambda self, cr, uid, ctx={}: '',
|
||||
'subject': lambda self, cr, uid, ctx={}: False,
|
||||
'partner_ids': lambda self, cr, uid, ctx={}: [],
|
||||
'notify': lambda self, cr, uid, ctx={}: False,
|
||||
'post': lambda self, cr, uid, ctx={}: True,
|
||||
'same_thread': lambda self, cr, uid, ctx={}: True,
|
||||
}
|
||||
|
||||
def _notify(self, cr, uid, newid, context=None):
|
||||
@@ -195,6 +205,8 @@ class mail_compose_message(osv.TransientModel):
|
||||
|
||||
for wizard in self.browse(cr, uid, ids, context=context):
|
||||
mass_mail_mode = wizard.composition_mode == 'mass_mail'
|
||||
if mass_mail_mode: # mass mail: avoid any auto subscription because this could lead to people being follower of plenty of documents
|
||||
context['mail_create_nosubscribe'] = True
|
||||
active_model_pool = self.pool.get(wizard.model if wizard.model else 'mail.thread')
|
||||
|
||||
# wizard works in batch mode: [res_id] or active_ids
|
||||
@@ -216,11 +228,28 @@ class mail_compose_message(osv.TransientModel):
|
||||
new_attachments = email_dict.pop('attachments', [])
|
||||
post_values['attachments'] += new_attachments
|
||||
post_values.update(email_dict)
|
||||
# email_from: mass mailing only can specify another email_from
|
||||
if email_dict.get('email_from'):
|
||||
post_values['email_from'] = email_dict.pop('email_from')
|
||||
# replies redirection: mass mailing only
|
||||
if not wizard.same_thread:
|
||||
post_values['reply_to'] = email_dict.pop('reply_to')
|
||||
# clean the context (hint: mass mailing sets some default values that
|
||||
# could be wrongly interpreted by mail_mail)
|
||||
context.pop('default_email_to', None)
|
||||
context.pop('default_partner_ids', None)
|
||||
# post the message
|
||||
subtype = 'mail.mt_comment'
|
||||
if is_log:
|
||||
subtype = False
|
||||
active_model_pool.message_post(cr, uid, [res_id], type='comment', subtype=subtype, context=context, **post_values)
|
||||
if mass_mail_mode and not wizard.post:
|
||||
post_values['recipient_ids'] = [(4, id) for id in post_values.pop('partner_ids', [])]
|
||||
self.pool.get('mail.mail').create(cr, uid, post_values, context=context)
|
||||
else:
|
||||
subtype = 'mail.mt_comment'
|
||||
if is_log or (mass_mail_mode and not wizard.notify):
|
||||
subtype = False
|
||||
msg_id = active_model_pool.message_post(cr, uid, [res_id], type='comment', subtype=subtype, context=context, **post_values)
|
||||
# mass_mailing, post without notify: notify specific partners
|
||||
if mass_mail_mode and not wizard.notify and post_values['partner_ids']:
|
||||
self.pool.get('mail.notification')._notify(cr, uid, msg_id, post_values['partner_ids'], context=context)
|
||||
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
@@ -231,6 +260,8 @@ class mail_compose_message(osv.TransientModel):
|
||||
return {
|
||||
'subject': self.render_template(cr, uid, wizard.subject, wizard.model, res_id, context),
|
||||
'body': self.render_template(cr, uid, wizard.body, wizard.model, res_id, context),
|
||||
'email_from': self.render_template(cr, uid, wizard.email_from, wizard.model, res_id, context),
|
||||
'reply_to': self.render_template(cr, uid, wizard.reply_to, wizard.model, res_id, context),
|
||||
}
|
||||
|
||||
def render_template(self, cr, uid, template, model, res_id, context=None):
|
||||
|
||||
@@ -13,25 +13,33 @@
|
||||
<field name="res_id" invisible="1"/>
|
||||
<field name="parent_id" invisible="1"/>
|
||||
<!-- visible wizard -->
|
||||
<field name="email_from"
|
||||
attrs="{'invisible':[('composition_mode', '!=', 'mass_mail')]}"/>
|
||||
<field name="subject" placeholder="Subject..." required="True"/>
|
||||
<field name="post"
|
||||
attrs="{'invisible':[('composition_mode', '!=', 'mass_mail')]}"/>
|
||||
<field name="notify"
|
||||
attrs="{'invisible':['|', ('post', '!=', True), ('composition_mode', '!=', 'mass_mail')]}"/>
|
||||
<field name="same_thread"
|
||||
attrs="{'invisible':[('composition_mode', '!=', 'mass_mail')]}"/>
|
||||
<field name="reply_to" placeholder="Email address te redirect replies..."
|
||||
attrs="{'invisible':['|', ('same_thread', '=', True), ('composition_mode', '!=', 'mass_mail')],
|
||||
'required':[('same_thread', '!=', True)]}"/>
|
||||
<label for="partner_ids" string="Recipients"
|
||||
invisible="context.get('mail_compose_log', False)"/>
|
||||
<div groups="base.group_user" invisible="context.get('mail_compose_log', False)">
|
||||
<span attrs="{'invisible':['|', ('model', '=', False), ('composition_mode', '!=', 'mass_mail')]}">
|
||||
Followers of selected items and
|
||||
</span>
|
||||
<span attrs="{'invisible':['|', ('model', '=', False), ('composition_mode', '=', 'mass_mail')]}">
|
||||
attrs="{'invisible':[('composition_mode', '=', 'mass_mail')]}"/>
|
||||
<div groups="base.group_user"
|
||||
attrs="{'invisible':[('composition_mode', '=', 'mass_mail')]}">
|
||||
<span attrs="{'invisible':[('model', '=', False)]}">
|
||||
Followers of
|
||||
<field name="record_name" readonly="1" class="oe_inline"
|
||||
attrs="{'invisible':[('model', '=', False)]}"/>
|
||||
and
|
||||
<field name="record_name" readonly="1" class="oe_inline"/>
|
||||
and
|
||||
</span>
|
||||
<field name="partner_ids" widget="many2many_tags_email" placeholder="Add contacts to notify..."
|
||||
context="{'force_email':True, 'show_email':True}"/>
|
||||
</div>
|
||||
<field name="subject" placeholder="Subject..."/>
|
||||
</group>
|
||||
<field name="body"/>
|
||||
<field name="attachment_ids" widget="many2many_binary"/>
|
||||
<field name="attachment_ids" widget="many2many_binary" string="Attach a file"/>
|
||||
<footer>
|
||||
<button string="Send" name="send_mail" type="object" class="oe_highlight"/>
|
||||
or
|
||||
@@ -52,7 +60,7 @@
|
||||
</record>
|
||||
|
||||
<!-- Replace the default mass-mailing wizard in base with the composition wizard -->
|
||||
<act_window name="Mass Mailing"
|
||||
<act_window name="Partner Mass Mailing"
|
||||
res_model="mail.compose.message"
|
||||
src_model="res.partner"
|
||||
view_mode="form"
|
||||
@@ -60,6 +68,10 @@
|
||||
target="new"
|
||||
key2="client_action_multi"
|
||||
id="base.action_partner_mass_mail"
|
||||
context="{'default_composition_mode': 'mass_mail'}"/>
|
||||
context="{
|
||||
'default_composition_mode': 'mass_mail',
|
||||
'default_partner_to': '${object.id or \'\'}',
|
||||
}"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -59,12 +59,11 @@ class sale_order(osv.Model):
|
||||
assert len(ids) == 1
|
||||
document = self.browse(cr, uid, ids[0], context=context)
|
||||
partner = document.partner_id
|
||||
# TDE note: this code should be improved: used a real invite wizard instead of an ugly email
|
||||
if partner.id not in document.message_follower_ids:
|
||||
self.message_subscribe(cr, uid, ids, [partner.id], context=context)
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
mail_values = {
|
||||
'email_from': user.partner_id.email,
|
||||
'email_to': partner.email,
|
||||
'recipient_ids': [(4, partner.id)],
|
||||
'subject': 'Invitation to follow %s' % document.name_get()[0][1],
|
||||
'body_html': 'You have been invited to follow %s' % document.name_get()[0][1],
|
||||
'auto_delete': True,
|
||||
@@ -72,7 +71,7 @@ class sale_order(osv.Model):
|
||||
}
|
||||
mail_obj = self.pool.get('mail.mail')
|
||||
mail_id = mail_obj.create(cr, uid, mail_values, context=context)
|
||||
mail_obj.send(cr, uid, [mail_id], recipient_ids=[partner.id], context=context)
|
||||
mail_obj.send(cr, uid, [mail_id], context=context)
|
||||
return super(sale_order, self).action_button_confirm(cr, uid, ids, context=context)
|
||||
|
||||
def get_signup_url(self, cr, uid, ids, context=None):
|
||||
@@ -120,12 +119,11 @@ class account_invoice(osv.Model):
|
||||
# fetch the partner's id and subscribe the partner to the invoice
|
||||
document = self.browse(cr, uid, ids[0], context=context)
|
||||
partner = document.partner_id
|
||||
# TDE note: this code should be improved: used a real invite wizard instead of an ugly email
|
||||
if partner.id not in document.message_follower_ids:
|
||||
self.message_subscribe(cr, uid, ids, [partner.id], context=context)
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
mail_values = {
|
||||
'email_from': user.partner_id.email,
|
||||
'email_to': partner.email,
|
||||
'recipient_ids': [(4, partner.id)],
|
||||
'subject': 'Invitation to follow %s' % document.name_get()[0][1],
|
||||
'body_html': 'You have been invited to follow %s' % document.name_get()[0][1],
|
||||
'auto_delete': True,
|
||||
@@ -133,7 +131,7 @@ class account_invoice(osv.Model):
|
||||
}
|
||||
mail_obj = self.pool.get('mail.mail')
|
||||
mail_id = mail_obj.create(cr, uid, mail_values, context=context)
|
||||
mail_obj.send(cr, uid, [mail_id], recipient_ids=[partner.id], context=context)
|
||||
mail_obj.send(cr, uid, [mail_id], context=context)
|
||||
return super(account_invoice, self).invoice_validate(cr, uid, ids, context=context)
|
||||
|
||||
def get_signup_url(self, cr, uid, ids, context=None):
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="name">Sales Order - Send by Email (Portal)</field>
|
||||
<field name="email_from">${object.user_id.email or ''}</field>
|
||||
<field name="subject">${object.company_id.name} ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })</field>
|
||||
<field name="email_recipients">${object.partner_invoice_id.id}</field>
|
||||
<field name="partner_to">${object.partner_invoice_id.id}</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="report_template" ref="sale.report_sale_order"/>
|
||||
@@ -97,7 +97,7 @@
|
||||
<field name="name">Invoice - Send by Email (Portal)</field>
|
||||
<field name="email_from">${object.user_id.email or object.company_id.email or 'noreply@localhost'}</field>
|
||||
<field name="subject">${object.company_id.name} Invoice (Ref ${object.number or 'n/a' })</field>
|
||||
<field name="email_recipients">${object.partner_id.id}</field>
|
||||
<field name="partner_to">${object.partner_id.id}</field>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="report_template" ref="account.account_invoices"/>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<field name="name">Purchase Order - Send by mail</field>
|
||||
<field name="email_from">${object.validator.email or ''}</field>
|
||||
<field name="subject">${object.company_id.name} Order (Ref ${object.name or 'n/a' })</field>
|
||||
<field name="email_recipients">${object.partner_id.id}</field>
|
||||
<field name="partner_to">${object.partner_id.id}</field>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="report_template" ref="report_purchase_quotation"/>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,7 +22,7 @@
|
||||
<field name="name">Sales Order - Send by Email</field>
|
||||
<field name="email_from">${object.user_id.email or ''}</field>
|
||||
<field name="subject">${object.company_id.name} ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })</field>
|
||||
<field name="email_recipients">${object.partner_invoice_id.id}</field>
|
||||
<field name="partner_to">${object.partner_invoice_id.id}</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="report_template" ref="report_sale_order"/>
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
# Spanish (Colombia) 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 <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:06+0000\n"
|
||||
"PO-Revision-Date: 2013-03-19 03:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Spanish (Colombia) <es_CO@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-20 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
|
||||
#. module: sale_analytic_plans
|
||||
#: field:sale.order.line,analytics_id:0
|
||||
msgid "Analytic Distribution"
|
||||
msgstr "Distribución Analítica"
|
||||
|
||||
#. module: sale_analytic_plans
|
||||
#: model:ir.model,name:sale_analytic_plans.model_sale_order
|
||||
msgid "Sales Order"
|
||||
msgstr "Pedido de Venta"
|
||||
|
||||
#. module: sale_analytic_plans
|
||||
#: model:ir.model,name:sale_analytic_plans.model_sale_order_line
|
||||
msgid "Sales Order Line"
|
||||
msgstr "Línea de Pedido de Venta"
|
||||
Reference in New Issue
Block a user