diff --git a/addons/account/i18n/ko.po b/addons/account/i18n/ko.po index 711b4a354de..3ce33e32685 100644 --- a/addons/account/i18n/ko.po +++ b/addons/account/i18n/ko.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-05-14 01:08+0000\n" +"Last-Translator: AhnJD \n" "Language-Team: Korean \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-28 05:23+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-05-15 06:07+0000\n" +"X-Generator: Launchpad (build 16617)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -92,7 +92,7 @@ msgstr "총 차변" msgid "" "Error!\n" "You cannot create recursive account templates." -msgstr "" +msgstr "순환구조를 가진 계정과목은 생성할 수 없습니다." #. module: account #. openerp-web @@ -1299,7 +1299,7 @@ msgstr "세금 코드" #. module: account #: field:account.account,currency_mode:0 msgid "Outgoing Currencies Rate" -msgstr "" +msgstr "외화매각 환율" #. module: account #: view:account.analytic.account:0 @@ -2425,7 +2425,7 @@ msgstr "설명" #: field:account.tax,price_include:0 #: field:account.tax.template,price_include:0 msgid "Tax Included in Price" -msgstr "" +msgstr "세금포함된 가격" #. module: account #: view:account.subscription:0 diff --git a/addons/account_cancel/i18n/hr.po b/addons/account_cancel/i18n/hr.po index a285b8a48ab..370e526da15 100644 --- a/addons/account_cancel/i18n/hr.po +++ b/addons/account_cancel/i18n/hr.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-05-11 23:16+0000\n" +"Last-Translator: Damir Tušek \n" "Language-Team: Croatian \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-28 05:29+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-05-12 06:27+0000\n" +"X-Generator: Launchpad (build 16598)\n" #. module: account_cancel #: view:account.invoice:0 msgid "Cancel Invoice" -msgstr "" +msgstr "Storniraj račun" #~ msgid "Cancel" #~ msgstr "Otkaži" diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 4b4639daeb6..bbd8976f36c 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -27,6 +27,7 @@ from openerp.osv import fields, osv import openerp.addons.decimal_precision as dp from openerp.tools.translate import _ from openerp.tools import float_compare +from openerp.report import report_sxw class res_currency(osv.osv): _inherit = "res.currency" @@ -247,13 +248,12 @@ class account_voucher(osv.osv): line_osv = self.pool.get("account.voucher.line") line_dr_ids = resolve_o2m_operations(cr, uid, line_osv, line_dr_ids, ['amount'], context) line_cr_ids = resolve_o2m_operations(cr, uid, line_osv, line_cr_ids, ['amount'], context) - #compute the field is_multi_currency that is used to hide/display options linked to secondary currency on the voucher is_multi_currency = False #loop on the voucher lines to see if one of these has a secondary currency. If yes, we need to see the options for voucher_line in line_dr_ids+line_cr_ids: - line_currency = voucher_line.get('move_line_id', False) and self.pool.get('account.move.line').browse(cr, uid, voucher_line.get('move_line_id'), context=context).currency_id - if line_currency: + line_id = voucher_line.get('id') and self.pool.get('account.voucher.line').browse(cr, uid, voucher_line['id'], context=context).move_line_id.id or voucher_line.get('move_line_id') + if line_id and self.pool.get('account.move.line').browse(cr, uid, line_id, context=context).currency_id: is_multi_currency = True break return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount, type), 'is_multi_currency': is_multi_currency}} @@ -294,6 +294,36 @@ class account_voucher(osv.osv): res[voucher.id] = self.pool.get('res.currency').compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, voucher.amount, context=ctx) return res + def _get_currency_help_label(self, cr, uid, currency_id, payment_rate, payment_rate_currency_id, context=None): + """ + This function builds a string to help the users to understand the behavior of the payment rate fields they can specify on the voucher. + This string is only used to improve the usability in the voucher form view and has no other effect. + + :param currency_id: the voucher currency + :type currency_id: integer + :param payment_rate: the value of the payment_rate field of the voucher + :type payment_rate: float + :param payment_rate_currency_id: the value of the payment_rate_currency_id field of the voucher + :type payment_rate_currency_id: integer + :return: translated string giving a tip on what's the effect of the current payment rate specified + :rtype: str + """ + rml_parser = report_sxw.rml_parse(cr, uid, 'currency_help_label', context=context) + currency_pool = self.pool.get('res.currency') + currency_str = payment_rate_str = '' + if currency_id: + currency_str = rml_parser.formatLang(1, currency_obj=currency_pool.browse(cr, uid, currency_id, context=context)) + if payment_rate_currency_id: + payment_rate_str = rml_parser.formatLang(payment_rate, currency_obj=currency_pool.browse(cr, uid, payment_rate_currency_id, context=context)) + currency_help_label = _('At the operation date, the exchange rate was\n%s = %s') % (currency_str, payment_rate_str) + return currency_help_label + + def _fnct_currency_help_label(self, cr, uid, ids, name, args, context=None): + res = {} + for voucher in self.browse(cr, uid, ids, context=context): + res[voucher.id] = self._get_currency_help_label(cr, uid, voucher.currency_id.id, voucher.payment_rate, voucher.payment_rate_currency_id.id, context=context) + return res + _name = 'account.voucher' _description = 'Accounting Voucher' _inherit = ['mail.thread'] @@ -365,6 +395,7 @@ class account_voucher(osv.osv): help='The specific rate that will be used, in this voucher, between the selected currency (in \'Payment Rate Currency\' field) and the voucher currency.'), 'paid_amount_in_company_currency': fields.function(_paid_amount_in_company_currency, string='Paid Amount in Company Currency', type='float', readonly=True), 'is_multi_currency': fields.boolean('Multi Currency Voucher', help='Fields with internal purpose only that depicts if the voucher is a multi currency one or not'), + 'currency_help_label': fields.function(_fnct_currency_help_label, type='text', string="Helping Sentence", help="This sentence helps you to know how to specify the payment rate by giving you the direct effect it has"), } _defaults = { 'active': True, @@ -537,7 +568,7 @@ class account_voucher(osv.osv): return default def onchange_rate(self, cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=None): - res = {'value': {'paid_amount_in_company_currency': amount}} + res = {'value': {'paid_amount_in_company_currency': amount, 'currency_help_label': self._get_currency_help_label(cr, uid, currency_id, rate, payment_rate_currency_id, context=context)}} if rate and amount and currency_id: company_currency = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id #context should contain the date, the payment currency and the payment rate specified on the voucher @@ -816,7 +847,7 @@ class account_voucher(osv.osv): if context is None: context = {} res = {'value': {}} - if currency_id and currency_id == payment_rate_currency_id: + if currency_id: #set the default payment rate of the voucher and compute the paid amount in company currency ctx = context.copy() ctx.update({'date': date}) @@ -881,6 +912,12 @@ class account_voucher(osv.osv): else: currency_id = journal.company_id.currency_id.id vals['value'].update({'currency_id': currency_id}) + #in case we want to register the payment directly from an invoice, it's confusing to allow to switch the journal + #without seeing that the amount is expressed in the journal currency, and not in the invoice currency. So to avoid + #this common mistake, we simply reset the amount to 0 if the currency is not the invoice currency. + if context.get('payment_expected_currency') and currency_id != context.get('payment_expected_currency'): + vals['value']['amount'] = 0 + amount = 0 res = self.onchange_partner_id(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context) for key in res.keys(): vals[key].update(res[key]) diff --git a/addons/account_voucher/invoice.py b/addons/account_voucher/invoice.py index c0584ddbd52..a38a3d3e9b6 100644 --- a/addons/account_voucher/invoice.py +++ b/addons/account_voucher/invoice.py @@ -41,6 +41,7 @@ class invoice(osv.osv): 'target': 'new', 'domain': '[]', 'context': { + 'payment_expected_currency': inv.currency_id.id, 'default_partner_id': self.pool.get('res.partner')._find_accounting_partner(inv.partner_id).id, 'default_amount': inv.type in ('out_refund', 'in_refund') and -inv.residual or inv.residual, 'default_reference': inv.name, diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index e7296a6670f..dea94d59f4e 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -46,6 +46,9 @@ + + + account.voucher.payment.low.priority.form account.voucher @@ -119,6 +122,7 @@ + account.voucher.payment.form account.voucher @@ -193,12 +197,16 @@ - - + + - - - + @@ -282,6 +290,7 @@ + account.voucher.receipt.dialog.form account.voucher @@ -392,6 +401,7 @@ + account.voucher.receipt.form account.voucher @@ -474,8 +484,12 @@ - - + diff --git a/addons/account_voucher/voucher_sales_purchase_view.xml b/addons/account_voucher/voucher_sales_purchase_view.xml index ca7e46053b4..dc732129803 100644 --- a/addons/account_voucher/voucher_sales_purchase_view.xml +++ b/addons/account_voucher/voucher_sales_purchase_view.xml @@ -147,8 +147,9 @@ - - + + + @@ -243,6 +244,7 @@ on_change="onchange_journal(journal_id, line_dr_ids, tax_id, partner_id, date, amount, type, company_id, context)" groups="account.group_account_user"/> + diff --git a/addons/anonymization/anonymization.py b/addons/anonymization/anonymization.py index de46e2e8d03..594acbc9a59 100644 --- a/addons/anonymization/anonymization.py +++ b/addons/anonymization/anonymization.py @@ -543,6 +543,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory): fixes = group(fixes, ('model_name', 'field_name')) for line in data: + queries = [] table_name = self.pool.get(line['model_id'])._table if self.pool.get(line['model_id']) else None # check if custom sql exists: diff --git a/addons/board/i18n/ko.po b/addons/board/i18n/ko.po index 7723b3a6b00..7b38689d10c 100644 --- a/addons/board/i18n/ko.po +++ b/addons/board/i18n/ko.po @@ -8,32 +8,32 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:38+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-05-12 11:04+0000\n" +"Last-Translator: AhnJD \n" "Language-Team: Korean \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-28 05:34+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-05-13 06:46+0000\n" +"X-Generator: Launchpad (build 16614)\n" #. module: board #: model:ir.actions.act_window,name:board.action_board_create #: model:ir.ui.menu,name:board.menu_board_create msgid "Create Board" -msgstr "" +msgstr "게시판 생성" #. module: board #: view:board.create:0 msgid "Create" -msgstr "" +msgstr "생성" #. module: board #. openerp-web #: code:addons/board/static/src/xml/board.xml:4 #, python-format msgid "Reset Layout.." -msgstr "" +msgstr "레이아웃 재설정" #. module: board #: view:board.create:0 diff --git a/addons/hr/i18n/ru.po b/addons/hr/i18n/ru.po index 56f4d34c8ea..19dca6ea133 100644 --- a/addons/hr/i18n/ru.po +++ b/addons/hr/i18n/ru.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-05-14 12:42+0000\n" +"Last-Translator: Paul Korotkov \n" "Language-Team: Russian \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-28 05:40+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-05-15 06:07+0000\n" +"X-Generator: Launchpad (build 16617)\n" #. module: hr #: model:process.node,name:hr.process_node_openerpuser0 @@ -69,7 +69,7 @@ msgstr "" #: view:hr.employee:0 #: view:hr.job:0 msgid "Group By..." -msgstr "Объеденить по..." +msgstr "Группировать по ..." #. module: hr #: model:ir.actions.act_window,name:hr.view_department_form_installer diff --git a/addons/lunch/i18n/ko.po b/addons/lunch/i18n/ko.po new file mode 100644 index 00000000000..35d4889f127 --- /dev/null +++ b/addons/lunch/i18n/ko.po @@ -0,0 +1,906 @@ +# Korean translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2013-03-07 08:38+0000\n" +"PO-Revision-Date: 2013-05-12 07:26+0000\n" +"Last-Translator: AhnJD \n" +"Language-Team: Korean \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-05-13 06:46+0000\n" +"X-Generator: Launchpad (build 16614)\n" + +#. module: lunch +#: field:lunch.product,category_id:0 +#: field:lunch.product.category,name:0 +msgid "Category" +msgstr "범주" + +#. module: lunch +#: model:ir.ui.menu,name:lunch.menu_lunch_order_by_supplier_form +msgid "Today's Orders by Supplier" +msgstr "" + +#. module: lunch +#: view:lunch.order:0 +msgid "My Orders" +msgstr "나의 주문" + +#. module: lunch +#: selection:lunch.order,state:0 +msgid "Partially Confirmed" +msgstr "" + +#. module: lunch +#: view:lunch.cashmove:0 +#: view:lunch.order.line:0 +msgid "Group By..." +msgstr "" + +#. module: lunch +#: field:lunch.alert,sunday:0 +msgid "Sunday" +msgstr "" + +#. module: lunch +#: field:lunch.order.line,supplier:0 +#: field:lunch.product,supplier:0 +msgid "Supplier" +msgstr "공급업체" + +#. module: lunch +#: view:lunch.order.line:0 +msgid "Today" +msgstr "오늘" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "March" +msgstr "3월" + +#. module: lunch +#: view:lunch.cashmove:0 +msgid "By Employee" +msgstr "직원에 의해" + +#. module: lunch +#: field:lunch.alert,friday:0 +msgid "Friday" +msgstr "" + +#. module: lunch +#: view:lunch.validation:0 +msgid "validate order lines" +msgstr "" + +#. module: lunch +#: view:lunch.order.line:0 +msgid "Order lines Tree" +msgstr "" + +#. module: lunch +#: field:lunch.alert,specific_day:0 +#: field:report.lunch.order.line,day:0 +msgid "Day" +msgstr "" + +#. module: lunch +#: view:lunch.order.line:0 +#: selection:lunch.order.line,state:0 +msgid "Received" +msgstr "받음" + +#. module: lunch +#: view:lunch.order.line:0 +msgid "By Supplier" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_order_tree +msgid "" +"

\n" +" Click to create a lunch order. \n" +"

\n" +"

\n" +" A lunch order is defined by its user, date and order lines.\n" +" Each order line corresponds to a product, an additional note " +"and a price.\n" +" Before selecting your order lines, don't forget to read the " +"warnings displayed in the reddish area.\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: view:lunch.order.line:0 +msgid "Not Received" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_order_by_supplier_form +#: model:ir.ui.menu,name:lunch.menu_lunch_control_suppliers +msgid "Orders by Supplier" +msgstr "" + +#. module: lunch +#: view:lunch.validation:0 +msgid "Receive Meals" +msgstr "" + +#. module: lunch +#: view:lunch.cashmove:0 +msgid "cashmove form" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_cashmove_form +msgid "" +"

\n" +" Here you can see your cash moves.
A cash moves can be " +"either an expense or a payment.\n" +" An expense is automatically created when an order is " +"received while a payment is a reimbursement to the company encoded by the " +"manager.\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: field:lunch.cashmove,amount:0 +msgid "Amount" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_products +#: model:ir.ui.menu,name:lunch.menu_lunch_products +#: field:lunch.order,order_line_ids:0 +msgid "Products" +msgstr "상품" + +#. module: lunch +#: view:lunch.order.line:0 +msgid "By Date" +msgstr "" + +#. module: lunch +#: selection:lunch.order,state:0 +#: view:lunch.order.line:0 +#: selection:lunch.order.line,state:0 +msgid "Cancelled" +msgstr "" + +#. module: lunch +#: view:lunch.cashmove:0 +msgid "lunch employee payment" +msgstr "" + +#. module: lunch +#: view:lunch.alert:0 +msgid "alert tree" +msgstr "" + +#. module: lunch +#: model:ir.model,name:lunch.model_report_lunch_order_line +msgid "Lunch Orders Statistics" +msgstr "점심 주문 상태" + +#. module: lunch +#: model:ir.model,name:lunch.model_lunch_alert +msgid "Lunch Alert" +msgstr "" + +#. module: lunch +#: code:addons/lunch/lunch.py:183 +#, python-format +msgid "Select a product and put your order comments on the note." +msgstr "" + +#. module: lunch +#: selection:lunch.alert,alter_type:0 +msgid "Every Week" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_cashmove +msgid "Register Cash Moves" +msgstr "" + +#. module: lunch +#: selection:lunch.order,state:0 +msgid "Confirmed" +msgstr "" + +#. module: lunch +#: view:lunch.order:0 +msgid "lunch orders" +msgstr "" + +#. module: lunch +#: view:lunch.order.line:0 +msgid "Confirm" +msgstr "확정" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_cashmove_form +msgid "Your Account" +msgstr "" + +#. module: lunch +#: model:ir.ui.menu,name:lunch.menu_lunch_cashmove_form +msgid "Your Lunch Account" +msgstr "점심 계정" + +#. module: lunch +#: field:lunch.alert,active_from:0 +msgid "Between" +msgstr "" + +#. module: lunch +#: model:ir.model,name:lunch.model_lunch_order_order +msgid "Wizard to order a meal" +msgstr "" + +#. module: lunch +#: selection:lunch.order,state:0 +#: selection:lunch.order.line,state:0 +msgid "New" +msgstr "" + +#. module: lunch +#: code:addons/lunch/lunch.py:180 +#, python-format +msgid "This is the first time you order a meal" +msgstr "이것은 첫번쨰 고기 주문입니다." + +#. module: lunch +#: field:report.lunch.order.line,price_total:0 +msgid "Total Price" +msgstr "총액" + +#. module: lunch +#: model:ir.model,name:lunch.model_lunch_validation +msgid "lunch validation for order" +msgstr "" + +#. module: lunch +#: report:lunch.order.line:0 +msgid "Name/Date" +msgstr "이름/날짜" + +#. module: lunch +#: report:lunch.order.line:0 +msgid "Total :" +msgstr "합계 :" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "July" +msgstr "" + +#. module: lunch +#: model:ir.ui.menu,name:lunch.menu_lunch_config +msgid "Configuration" +msgstr "" + +#. module: lunch +#: field:lunch.order,state:0 +#: field:lunch.order.line,state:0 +msgid "Status" +msgstr "상태" + +#. module: lunch +#: view:lunch.order.order:0 +msgid "" +"Order a meal doesn't mean that we have to pay it.\n" +" A meal should be paid when it is received." +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_control_accounts +#: model:ir.ui.menu,name:lunch.menu_lunch_control_accounts +msgid "Control Accounts" +msgstr "" + +#. module: lunch +#: selection:lunch.alert,alter_type:0 +msgid "Every Day" +msgstr "매일" + +#. module: lunch +#: field:lunch.order.line,cashmove:0 +msgid "Cash Move" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.order_order_lines +msgid "Order meals" +msgstr "육류 주문" + +#. module: lunch +#: view:lunch.alert:0 +msgid "Schedule Hour" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "September" +msgstr "9월" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_control_suppliers +msgid "" +"

\n" +" Here you can see every orders grouped by suppliers and by " +"date.\n" +"

\n" +"

\n" +" - Click on the to announce " +"that the order is ordered
\n" +" - Click on the to announce that " +"the order is received
\n" +" - Click on the red X to announce " +"that the order isn't available\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: field:lunch.alert,tuesday:0 +msgid "Tuesday" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_order_tree +msgid "Your Orders" +msgstr "" + +#. module: lunch +#: field:report.lunch.order.line,month:0 +msgid "Month" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_products +msgid "" +"

\n" +" Click to create a product for lunch. \n" +"

\n" +"

\n" +" A product is defined by its name, category, price and " +"supplier.\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: view:lunch.alert:0 +#: field:lunch.alert,message:0 +msgid "Message" +msgstr "" + +#. module: lunch +#: view:lunch.order.order:0 +msgid "Order Meals" +msgstr "" + +#. module: lunch +#: view:lunch.cancel:0 +#: view:lunch.order.order:0 +#: view:lunch.validation:0 +msgid "or" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_product_categories +msgid "" +"

\n" +" Click to create a lunch category. \n" +"

\n" +"

\n" +" Here you can find every lunch categories for products.\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: view:lunch.order.order:0 +msgid "Order meal" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_product_categories +#: model:ir.ui.menu,name:lunch.menu_lunch_product_categories +msgid "Product Categories" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_control_suppliers +msgid "Control Suppliers" +msgstr "" + +#. module: lunch +#: view:lunch.alert:0 +msgid "Schedule Date" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_alert +#: model:ir.ui.menu,name:lunch.menu_lunch_alert +#: field:lunch.order,alerts:0 +msgid "Alerts" +msgstr "" + +#. module: lunch +#: field:lunch.order.line,note:0 +#: field:report.lunch.order.line,note:0 +msgid "Note" +msgstr "" + +#. module: lunch +#: code:addons/lunch/lunch.py:250 +#, python-format +msgid "Add" +msgstr "" + +#. module: lunch +#: view:lunch.product:0 +#: view:lunch.product.category:0 +msgid "Products Form" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.cancel_order_lines +msgid "Cancel meals" +msgstr "" + +#. module: lunch +#: model:ir.model,name:lunch.model_lunch_cashmove +#: view:lunch.cashmove:0 +msgid "lunch cashmove" +msgstr "" + +#. module: lunch +#: view:lunch.cancel:0 +msgid "Are you sure you want to cancel these meals?" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "August" +msgstr "" + +#. module: lunch +#: field:lunch.alert,monday:0 +msgid "Monday" +msgstr "" + +#. module: lunch +#: field:lunch.order.line,name:0 +msgid "unknown" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.validate_order_lines +msgid "Receive meals" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "June" +msgstr "" + +#. module: lunch +#: field:lunch.cashmove,user_id:0 +#: field:lunch.order,user_id:0 +#: field:report.lunch.order.line,user_id:0 +msgid "User Name" +msgstr "" + +#. module: lunch +#: model:ir.module.category,name:lunch.module_lunch_category +#: model:ir.ui.menu,name:lunch.menu_lunch +#: model:ir.ui.menu,name:lunch.menu_lunch_title +msgid "Lunch" +msgstr "" + +#. module: lunch +#: model:ir.model,name:lunch.model_lunch_order_line +msgid "lunch order line" +msgstr "" + +#. module: lunch +#: model:ir.model,name:lunch.model_lunch_product +msgid "lunch product" +msgstr "" + +#. module: lunch +#: field:lunch.order.line,user_id:0 +#: model:res.groups,name:lunch.group_lunch_user +msgid "User" +msgstr "" + +#. module: lunch +#: field:lunch.cashmove,date:0 +#: field:lunch.order,date:0 +#: field:lunch.order.line,date:0 +msgid "Date" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "November" +msgstr "" + +#. module: lunch +#: view:lunch.order:0 +msgid "Orders Tree" +msgstr "" + +#. module: lunch +#: view:lunch.order:0 +msgid "Orders Form" +msgstr "" + +#. module: lunch +#: view:lunch.alert:0 +#: view:lunch.order.line:0 +msgid "Search" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "October" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_order_by_supplier_form +msgid "" +"

\n" +" Here you can see today's orders grouped by suppliers.\n" +"

\n" +"

\n" +" - Click on the to announce " +"that the order is ordered
\n" +" - Click on the to announce that " +"the order is received
\n" +" - Click on the to announce that " +"the order isn't available\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "January" +msgstr "" + +#. module: lunch +#: selection:lunch.alert,alter_type:0 +msgid "Specific Day" +msgstr "" + +#. module: lunch +#: field:lunch.alert,wednesday:0 +msgid "Wednesday" +msgstr "" + +#. module: lunch +#: view:lunch.product.category:0 +msgid "Product Category: " +msgstr "" + +#. module: lunch +#: field:lunch.alert,active_to:0 +msgid "And" +msgstr "" + +#. module: lunch +#: view:lunch.alert:0 +msgid "Write the message you want to display during the defined period..." +msgstr "" + +#. module: lunch +#: selection:lunch.order.line,state:0 +msgid "Ordered" +msgstr "" + +#. module: lunch +#: field:report.lunch.order.line,date:0 +msgid "Date Order" +msgstr "" + +#. module: lunch +#: view:lunch.cancel:0 +msgid "Cancel Orders" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_alert +msgid "" +"

\n" +" Click to create a lunch alert. \n" +"

\n" +"

\n" +" Alerts are used to warn employee from possible issues " +"concerning the lunch orders.\n" +" To create a lunch alert you have to define its recurrency, " +"the time interval during which the alert should be executed and the message " +"to display.\n" +"

\n" +"

\n" +" Example:
\n" +" - Recurency: Everyday
\n" +" - Time interval: from 00h00 am to 11h59 pm
\n" +" - Message: \"You must order before 10h30 am\"\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: view:lunch.cancel:0 +msgid "A cancelled meal should not be paid by employees." +msgstr "" + +#. module: lunch +#: model:ir.ui.menu,name:lunch.menu_lunch_cash +msgid "Administrate Cash Moves" +msgstr "" + +#. module: lunch +#: model:ir.model,name:lunch.model_lunch_cancel +msgid "cancel lunch order" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "December" +msgstr "" + +#. module: lunch +#: view:lunch.cancel:0 +#: view:lunch.order.line:0 +#: view:lunch.order.order:0 +#: view:lunch.validation:0 +msgid "Cancel" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_cashmove +msgid "" +"

\n" +" Click to create a payment. \n" +"

\n" +"

\n" +" Here you can see the employees' payment. A payment is a cash " +"move from the employee to the company.\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: code:addons/lunch/lunch.py:186 +#, python-format +msgid "Your favorite meals will be created based on your last orders." +msgstr "" + +#. module: lunch +#: model:ir.module.category,description:lunch.module_lunch_category +msgid "" +"Helps you handle your lunch needs, if you are a manager you will be able to " +"create new products, cashmoves and to confirm or cancel orders." +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,help:lunch.action_lunch_control_accounts +msgid "" +"

\n" +" Click to create a new payment. \n" +"

\n" +"

\n" +" A cashmove can either be an expense or a payment.
\n" +" An expense is automatically created at the order " +"receipt.
\n" +" A payment represents the employee reimbursement to the " +"company.\n" +"

\n" +" " +msgstr "" + +#. module: lunch +#: field:lunch.alert,alter_type:0 +msgid "Recurrency" +msgstr "" + +#. module: lunch +#: code:addons/lunch/lunch.py:189 +#, python-format +msgid "Don't forget the alerts displayed in the reddish area" +msgstr "" + +#. module: lunch +#: field:lunch.alert,thursday:0 +msgid "Thursday" +msgstr "" + +#. module: lunch +#: report:lunch.order.line:0 +msgid "Unit Price" +msgstr "" + +#. module: lunch +#: view:lunch.cashmove:0 +msgid "By User" +msgstr "" + +#. module: lunch +#: field:lunch.order.line,product_id:0 +#: field:lunch.product,name:0 +msgid "Product" +msgstr "" + +#. module: lunch +#: field:lunch.cashmove,description:0 +#: report:lunch.order.line:0 +#: field:lunch.product,description:0 +msgid "Description" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "May" +msgstr "" + +#. module: lunch +#: field:lunch.order.line,price:0 +#: field:lunch.product,price:0 +msgid "Price" +msgstr "" + +#. module: lunch +#: field:lunch.cashmove,state:0 +msgid "Is an order or a Payment" +msgstr "" + +#. module: lunch +#: model:ir.actions.act_window,name:lunch.action_lunch_order_form +#: model:ir.ui.menu,name:lunch.menu_lunch_order_form +msgid "New Order" +msgstr "" + +#. module: lunch +#: view:lunch.cashmove:0 +msgid "cashmove tree" +msgstr "" + +#. module: lunch +#: view:lunch.cancel:0 +msgid "Cancel a meal means that we didn't receive it from the supplier." +msgstr "" + +#. module: lunch +#: view:lunch.cashmove:0 +msgid "My Account grouped" +msgstr "" + +#. module: lunch +#: model:ir.ui.menu,name:lunch.menu_lunch_cashmove +msgid "Employee Payments" +msgstr "" + +#. module: lunch +#: view:lunch.cashmove:0 +#: selection:lunch.cashmove,state:0 +msgid "Payment" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "February" +msgstr "" + +#. module: lunch +#: field:report.lunch.order.line,year:0 +msgid "Year" +msgstr "" + +#. module: lunch +#: view:lunch.order:0 +msgid "List" +msgstr "" + +#. module: lunch +#: model:ir.ui.menu,name:lunch.menu_lunch_admin +msgid "Administrate Orders" +msgstr "" + +#. module: lunch +#: selection:report.lunch.order.line,month:0 +msgid "April" +msgstr "" + +#. module: lunch +#: view:lunch.order:0 +msgid "Select your order" +msgstr "" + +#. module: lunch +#: field:lunch.cashmove,order_id:0 +#: selection:lunch.cashmove,state:0 +#: report:lunch.order.line:0 +#: view:lunch.order.line:0 +#: field:lunch.order.line,order_id:0 +msgid "Order" +msgstr "" + +#. module: lunch +#: model:ir.actions.report.xml,name:lunch.report_lunch_order +#: model:ir.model,name:lunch.model_lunch_order +#: report:lunch.order.line:0 +msgid "Lunch Order" +msgstr "" + +#. module: lunch +#: view:lunch.order.order:0 +msgid "Are you sure you want to order these meals?" +msgstr "" + +#. module: lunch +#: view:lunch.cancel:0 +msgid "cancel order lines" +msgstr "" + +#. module: lunch +#: model:ir.model,name:lunch.model_lunch_product_category +msgid "lunch product category" +msgstr "" + +#. module: lunch +#: field:lunch.alert,saturday:0 +msgid "Saturday" +msgstr "" + +#. module: lunch +#: model:res.groups,name:lunch.group_lunch_manager +msgid "Manager" +msgstr "" + +#. module: lunch +#: view:lunch.validation:0 +msgid "Did your received these meals?" +msgstr "" + +#. module: lunch +#: view:lunch.validation:0 +msgid "Once a meal is received a new cash move is created for the employee." +msgstr "" + +#. module: lunch +#: view:lunch.product:0 +msgid "Products Tree" +msgstr "" + +#. module: lunch +#: view:lunch.cashmove:0 +#: view:lunch.order:0 +#: field:lunch.order,total:0 +#: view:lunch.order.line:0 +msgid "Total" +msgstr "" + +#. module: lunch +#: model:ir.ui.menu,name:lunch.menu_lunch_order_tree +msgid "Previous Orders" +msgstr "" diff --git a/addons/mail/i18n/ko.po b/addons/mail/i18n/ko.po new file mode 100644 index 00000000000..10ed3f37964 --- /dev/null +++ b/addons/mail/i18n/ko.po @@ -0,0 +1,1783 @@ +# Korean translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2013-03-07 08:37+0000\n" +"PO-Revision-Date: 2013-05-12 07:39+0000\n" +"Last-Translator: AhnJD \n" +"Language-Team: Korean \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-05-13 06:46+0000\n" +"X-Generator: Launchpad (build 16614)\n" + +#. module: mail +#: view:mail.followers:0 +msgid "Followers Form" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_publisher_warranty_contract +msgid "publisher_warranty.contract" +msgstr "" + +#. module: mail +#: field:mail.compose.message,author_id:0 +#: field:mail.message,author_id:0 +msgid "Author" +msgstr "작성자" + +#. module: mail +#: view:mail.mail:0 +msgid "Message Details" +msgstr "" + +#. module: mail +#: help:mail.mail,email_to:0 +msgid "Message recipients" +msgstr "" + +#. module: mail +#: help:mail.message.subtype,default:0 +msgid "Activated by default when subscribing." +msgstr "" + +#. module: mail +#: view:mail.message:0 +msgid "Comments" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:296 +#, python-format +msgid "more messages" +msgstr "" + +#. module: mail +#: view:mail.alias:0 +#: view:mail.mail:0 +msgid "Group By..." +msgstr "" + +#. module: mail +#: help:mail.compose.message,body:0 +#: help:mail.message,body:0 +msgid "Automatically sanitized HTML contents" +msgstr "" + +#. module: mail +#: help:mail.alias,alias_name:0 +msgid "" +"The name of the email alias, e.g. 'jobs' if you want to catch emails for " +"" +msgstr "" + +#. module: mail +#: model:ir.actions.act_window,name:mail.action_email_compose_message_wizard +#: view:mail.compose.message:0 +msgid "Compose Email" +msgstr "메일 작성" + +#. module: mail +#: constraint:mail.alias:0 +msgid "" +"Invalid expression, it must be a literal python dictionary definition e.g. " +"\"{'field': 'value'}\"" +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "Group Name" +msgstr "그룹명" + +#. module: mail +#: selection:mail.group,public:0 +msgid "Public" +msgstr "" + +#. module: mail +#: view:mail.message:0 +msgid "Unread" +msgstr "읽지 않음" + +#. module: mail +#: view:mail.mail:0 +msgid "Body" +msgstr "본문" + +#. module: mail +#: view:mail.message:0 +msgid "Show messages to read" +msgstr "" + +#. module: mail +#: help:mail.compose.message,email_from:0 +#: help:mail.message,email_from:0 +msgid "" +"Email address of the sender. This field is set when no matching partner is " +"found for incoming emails." +msgstr "보내는 사람의 이메일 주소. 이 필드는 수신 메일에서 일치하는 파트너를 찾을 수 없을 때 설정됩니다." + +#. module: mail +#: model:ir.model,name:mail.model_mail_compose_message +msgid "Email composition wizard" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail_followers.xml:23 +#, python-format +msgid "Add others" +msgstr "" + +#. module: mail +#: field:mail.message.subtype,parent_id:0 +msgid "Parent" +msgstr "" + +#. module: mail +#: field:mail.group,message_unread:0 +#: field:mail.thread,message_unread:0 +#: field:res.partner,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:267 +#, python-format +msgid "to" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:296 +#, python-format +msgid "show" +msgstr "" + +#. module: mail +#: help:mail.group,group_ids:0 +msgid "" +"Members of those groups will automatically added as followers. Note that " +"they will be able to manage their subscription manually if necessary." +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/js/mail.js:1019 +#, python-format +msgid "Do you really want to delete this message?" +msgstr "" + +#. module: mail +#: view:mail.message:0 +#: field:mail.notification,read:0 +msgid "Read" +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "Search Groups" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/js/mail_followers.js:110 +#, python-format +msgid "" +"Warning! \n" +" %s won't be notified of any email or discussion on this document. Do you " +"really want to remove him from the followers ?" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/js/mail_followers.js:159 +#, python-format +msgid "followers" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_message.py:726 +#, python-format +msgid "Access Denied" +msgstr "" + +#. module: mail +#: help:mail.group,image_medium:0 +msgid "" +"Medium-sized photo of the group. It is automatically resized as a 128x128px " +"image, with aspect ratio preserved. Use this field in form views or some " +"kanban views." +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:212 +#, python-format +msgid "Uploading error" +msgstr "" + +#. module: mail +#: model:mail.group,name:mail.group_support +msgid "Support" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_message.py:727 +#, python-format +msgid "" +"The requested operation cannot be completed due to security restrictions. " +"Please contact your system administrator.\n" +"\n" +"(Document type: %s, Operation: %s)" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +#: selection:mail.mail,state:0 +msgid "Received" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:73 +#, python-format +msgid "Attach a File" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Thread" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:29 +#, python-format +msgid "Open the full mail composer" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:29 +#, python-format +msgid "ò" +msgstr "" + +#. module: mail +#: field:base.config.settings,alias_domain:0 +msgid "Alias Domain" +msgstr "" + +#. module: mail +#: field:mail.group,group_ids:0 +msgid "Auto Subscription" +msgstr "" + +#. module: mail +#: field:mail.mail,references:0 +msgid "References" +msgstr "" + +#. module: mail +#: view:mail.wizard.invite:0 +msgid "Add Followers" +msgstr "" + +#. module: mail +#: help:mail.compose.message,author_id:0 +#: help:mail.message,author_id:0 +msgid "" +"Author of the message. If not set, email_from may hold an email address that " +"did not match any partner." +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:98 +#: code:addons/mail/static/src/xml/mail.xml:110 +#, python-format +msgid "uploading" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail_followers.xml:52 +#, python-format +msgid "more." +msgstr "" + +#. module: mail +#: help:mail.compose.message,type:0 +#: help:mail.message,type:0 +msgid "" +"Message type: email for email message, notification for system message, " +"comment for other messages such as user replies" +msgstr "" + +#. module: mail +#: help:mail.message.subtype,relation_field:0 +msgid "" +"Field used to link the related model to the subtype model when using " +"automatic subscription on a related document. The field is used to compute " +"getattr(related_document.relation_field)." +msgstr "" + +#. module: mail +#: selection:mail.mail,state:0 +msgid "Cancelled" +msgstr "" + +#. module: mail +#: field:mail.mail,reply_to:0 +msgid "Reply-To" +msgstr "" + +#. module: mail +#: code:addons/mail/wizard/invite.py:37 +#, python-format +msgid "
You have been invited to follow %s.
" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:54 +#, python-format +msgid "Send a message" +msgstr "" + +#. module: mail +#: help:mail.group,message_unread:0 +#: help:mail.thread,message_unread:0 +#: help:res.partner,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: mail +#: field:mail.group,image_medium:0 +msgid "Medium-sized photo" +msgstr "" + +#. module: mail +#: model:ir.actions.client,name:mail.action_mail_to_me_feeds +#: model:ir.ui.menu,name:mail.mail_tomefeeds +msgid "To: me" +msgstr "" + +#. module: mail +#: field:mail.message.subtype,name:0 +msgid "Message Type" +msgstr "" + +#. module: mail +#: field:mail.mail,auto_delete:0 +msgid "Auto Delete" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:264 +#, python-format +msgid "logged a note" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail_followers.xml:12 +#: view:mail.group:0 +#, python-format +msgid "Unfollow" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:295 +#, python-format +msgid "show one more message" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_mail.py:74 +#: code:addons/mail/res_users.py:69 +#, python-format +msgid "Invalid Action!" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:25 +#, python-format +msgid "User img" +msgstr "" + +#. module: mail +#: model:ir.actions.act_window,name:mail.action_view_mail_mail +#: model:ir.ui.menu,name:mail.menu_mail_mail +#: view:mail.mail:0 +#: view:mail.message:0 +msgid "Emails" +msgstr "" + +#. module: mail +#: field:mail.followers,partner_id:0 +msgid "Related Partner" +msgstr "" + +#. module: mail +#: help:mail.group,message_summary:0 +#: help:mail.thread,message_summary:0 +#: help:res.partner,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: mail +#: help:mail.alias,alias_model_id:0 +msgid "" +"The model (OpenERP Document Kind) to which this alias corresponds. Any " +"incoming email that does not reply to an existing record will cause the " +"creation of a new record of this model (e.g. a Project Task)" +msgstr "" + +#. module: mail +#: view:base.config.settings:0 +msgid "mycompany.my.openerp.com" +msgstr "" + +#. module: mail +#: field:mail.message.subtype,relation_field:0 +msgid "Relation field" +msgstr "" + +#. module: mail +#: selection:mail.compose.message,type:0 +#: selection:mail.message,type:0 +msgid "System notification" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_res_partner +#: view:mail.mail:0 +msgid "Partner" +msgstr "" + +#. module: mail +#: model:ir.ui.menu,name:mail.mail_my_stuff +msgid "Organizer" +msgstr "" + +#. module: mail +#: field:mail.compose.message,subject:0 +#: field:mail.message,subject:0 +msgid "Subject" +msgstr "" + +#. module: mail +#: field:mail.wizard.invite,partner_ids:0 +msgid "Partners" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Retry" +msgstr "" + +#. module: mail +#: field:mail.compose.message,email_from:0 +#: field:mail.mail,email_from:0 +#: field:mail.message,email_from:0 +msgid "From" +msgstr "" + +#. module: mail +#: field:mail.compose.message,subtype_id:0 +#: field:mail.followers,subtype_ids:0 +#: field:mail.message,subtype_id:0 +#: view:mail.message.subtype:0 +msgid "Subtype" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +#: view:mail.message.subtype:0 +msgid "Email message" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_base_config_settings +msgid "base.config.settings" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:128 +#, python-format +msgid "this document" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:36 +#: view:mail.compose.message:0 +#, python-format +msgid "Send" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/js/mail_followers.js:155 +#, python-format +msgid "No followers" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Failed" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:154 +#, python-format +msgid "Attach a note that will not be send to the followers" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail_followers.xml:22 +#: model:ir.actions.act_window,name:mail.action_view_followers +#: model:ir.ui.menu,name:mail.menu_email_followers +#: view:mail.followers:0 +#: field:mail.group,message_follower_ids:0 +#: field:mail.thread,message_follower_ids:0 +#: field:res.partner,message_follower_ids:0 +#, python-format +msgid "Followers" +msgstr "" + +#. module: mail +#: model:ir.actions.client,name:mail.action_mail_archives_feeds +#: model:ir.ui.menu,name:mail.mail_archivesfeeds +msgid "Archives" +msgstr "" + +#. module: mail +#: view:mail.compose.message:0 +msgid "Subject..." +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:97 +#: code:addons/mail/static/src/xml/mail.xml:109 +#, python-format +msgid "Delete this attachment" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_thread.py:112 +#, python-format +msgid "New" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/js/mail_followers.js:157 +#, python-format +msgid "One follower" +msgstr "" + +#. module: mail +#: field:mail.compose.message,type:0 +#: field:mail.message,type:0 +msgid "Type" +msgstr "" + +#. module: mail +#: selection:mail.compose.message,type:0 +#: view:mail.mail:0 +#: selection:mail.message,type:0 +msgid "Email" +msgstr "" + +#. module: mail +#: field:ir.ui.menu,mail_group_id:0 +msgid "Mail Group" +msgstr "" + +#. module: mail +#: selection:res.partner,notification_email_send:0 +msgid "Comments and Emails" +msgstr "" + +#. module: mail +#: field:mail.alias,alias_defaults:0 +msgid "Default Values" +msgstr "" + +#. module: mail +#: code:addons/mail/res_users.py:89 +#, python-format +msgid "%s has joined the %s network." +msgstr "" + +#. module: mail +#: help:mail.group,image_small:0 +msgid "" +"Small-sized photo of the group. It is automatically resized as a 64x64px " +"image, with aspect ratio preserved. Use this field anywhere a small image is " +"required." +msgstr "" + +#. module: mail +#: view:mail.compose.message:0 +#: field:mail.message,partner_ids:0 +msgid "Recipients" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:142 +#, python-format +msgid "<<<" +msgstr "" + +#. module: mail +#: field:mail.group,group_public_id:0 +msgid "Authorized Group" +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "Join Group" +msgstr "" + +#. module: mail +#: help:mail.mail,email_from:0 +msgid "Message sender, taken from user preferences." +msgstr "" + +#. module: mail +#: code:addons/mail/wizard/invite.py:40 +#, python-format +msgid "
You have been invited to follow a new document.
" +msgstr "" + +#. module: mail +#: field:mail.compose.message,parent_id:0 +#: field:mail.message,parent_id:0 +msgid "Parent Message" +msgstr "" + +#. module: mail +#: field:mail.compose.message,res_id:0 +#: field:mail.followers,res_id:0 +#: field:mail.message,res_id:0 +#: field:mail.wizard.invite,res_id:0 +msgid "Related Document ID" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/js/mail_followers.js:254 +#, python-format +msgid "" +"Warning! \n" +"You won't be notified of any email or discussion on this document. Do you " +"really want to unfollow this document ?" +msgstr "" + +#. module: mail +#: model:ir.actions.client,help:mail.action_mail_to_me_feeds +msgid "" +"

\n" +" No private message.\n" +"

\n" +" This list contains messages sent to you.\n" +"

\n" +" " +msgstr "" + +#. module: mail +#: model:mail.group,name:mail.group_rd +msgid "R&D" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_mail_wizard_invite +msgid "Invite wizard" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_mail_thread +msgid "Email Thread" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Advanced" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:244 +#, python-format +msgid "Move to Inbox" +msgstr "" + +#. module: mail +#: code:addons/mail/wizard/mail_compose_message.py:165 +#, python-format +msgid "Re:" +msgstr "" + +#. module: mail +#: field:mail.compose.message,to_read:0 +#: field:mail.message,to_read:0 +msgid "To read" +msgstr "" + +#. module: mail +#: code:addons/mail/res_users.py:69 +#, python-format +msgid "" +"You may not create a user. To create new users, you should use the " +"\"Settings > Users\" menu." +msgstr "" + +#. module: mail +#: help:mail.followers,res_model:0 +#: help:mail.wizard.invite,res_model:0 +msgid "Model of the followed resource" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:320 +#, python-format +msgid "like" +msgstr "" + +#. module: mail +#: view:mail.compose.message:0 +#: view:mail.wizard.invite:0 +msgid "Cancel" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:47 +#, python-format +msgid "Share with my followers..." +msgstr "" + +#. module: mail +#: field:mail.notification,partner_id:0 +msgid "Contact" +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "" +"Only the invited followers can read the\n" +" discussions on this group." +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_ir_ui_menu +msgid "ir.ui.menu" +msgstr "" + +#. module: mail +#: view:mail.message:0 +msgid "Has attachments" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "on" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_message.py:915 +#, python-format +msgid "" +"The following partners chosen as recipients for the email have no email " +"address linked :" +msgstr "" + +#. module: mail +#: help:mail.alias,alias_defaults:0 +msgid "" +"A Python dictionary that will be evaluated to provide default values when " +"creating new records for this alias." +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_mail_message_subtype +msgid "Message subtypes" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:37 +#: code:addons/mail/static/src/xml/mail.xml:57 +#, python-format +msgid "Log a note" +msgstr "" + +#. module: mail +#: selection:mail.compose.message,type:0 +#: view:mail.mail:0 +#: selection:mail.message,type:0 +msgid "Comment" +msgstr "" + +#. module: mail +#: model:ir.actions.client,help:mail.action_mail_inbox_feeds +msgid "" +"

\n" +" Good Job! Your inbox is empty.\n" +"

\n" +" Your inbox contains private messages or emails sent to " +"you\n" +" as well as information related to documents or people " +"you\n" +" follow.\n" +"

\n" +" " +msgstr "" + +#. module: mail +#: field:mail.mail,notification:0 +msgid "Is Notification" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:188 +#, python-format +msgid "Compose a new message" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Send Now" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_mail.py:74 +#, python-format +msgid "" +"Unable to send email, please configure the sender's email address or alias." +msgstr "" + +#. module: mail +#: help:res.users,alias_id:0 +msgid "" +"Email address internally associated with this user. Incoming emails will " +"appear in the user's notifications." +msgstr "" + +#. module: mail +#: field:mail.group,image:0 +msgid "Photo" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:56 +#: code:addons/mail/static/src/xml/mail.xml:191 +#: view:mail.compose.message:0 +#: view:mail.wizard.invite:0 +#, python-format +msgid "or" +msgstr "" + +#. module: mail +#: help:mail.compose.message,vote_user_ids:0 +#: help:mail.message,vote_user_ids:0 +msgid "Users that voted for this message" +msgstr "" + +#. module: mail +#: help:mail.group,alias_id:0 +msgid "" +"The email address associated with this group. New emails received will " +"automatically create new topics." +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Month" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Email Search" +msgstr "" + +#. module: mail +#: field:mail.compose.message,child_ids:0 +#: field:mail.message,child_ids:0 +msgid "Child Messages" +msgstr "" + +#. module: mail +#: field:mail.alias,alias_user_id:0 +msgid "Owner" +msgstr "" + +#. module: mail +#: code:addons/mail/res_partner.py:49 +#, python-format +msgid "Partner Profile" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_mail_message +#: field:mail.mail,mail_message_id:0 +#: view:mail.message:0 +#: field:mail.notification,message_id:0 +#: field:mail.wizard.invite,message:0 +msgid "Message" +msgstr "" + +#. module: mail +#: help:mail.followers,res_id:0 +#: help:mail.wizard.invite,res_id:0 +msgid "Id of the followed resource" +msgstr "" + +#. module: mail +#: field:mail.compose.message,body:0 +#: field:mail.message,body:0 +msgid "Contents" +msgstr "" + +#. module: mail +#: model:ir.actions.act_window,name:mail.action_view_mail_alias +#: model:ir.ui.menu,name:mail.mail_alias_menu +msgid "Aliases" +msgstr "" + +#. module: mail +#: help:mail.message.subtype,description:0 +msgid "" +"Description that will be added in the message posted for this subtype. If " +"void, the name will be added instead." +msgstr "" + +#. module: mail +#: field:mail.compose.message,vote_user_ids:0 +#: field:mail.message,vote_user_ids:0 +msgid "Votes" +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "Group" +msgstr "" + +#. module: mail +#: help:mail.compose.message,starred:0 +#: help:mail.message,starred:0 +msgid "Current user has a starred notification linked to this message" +msgstr "" + +#. module: mail +#: field:mail.group,public:0 +msgid "Privacy" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Notification" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/js/mail.js:650 +#, python-format +msgid "Please complete partner's informations" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_mail.py:187 +#, python-format +msgid "

Access this document directly in OpenERP

" +msgstr "" + +#. module: mail +#: view:mail.compose.message:0 +msgid "Followers of selected items and" +msgstr "" + +#. module: mail +#: field:mail.alias,alias_force_thread_id:0 +msgid "Record Thread ID" +msgstr "" + +#. module: mail +#: model:ir.ui.menu,name:mail.mail_group_root +msgid "My Groups" +msgstr "" + +#. module: mail +#: model:ir.actions.client,help:mail.action_mail_archives_feeds +msgid "" +"

\n" +" No message found and no message sent yet.\n" +"

\n" +" Click on the top-right icon to compose a message. This\n" +" message will be sent by email if it's an internal " +"contact.\n" +"

\n" +" " +msgstr "" + +#. module: mail +#: view:mail.mail:0 +#: field:mail.mail,state:0 +msgid "Status" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +#: selection:mail.mail,state:0 +msgid "Outgoing" +msgstr "" + +#. module: mail +#: selection:res.partner,notification_email_send:0 +msgid "All feeds" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_thread.py:111 +#, python-format +msgid "You have one unread message" +msgstr "" + +#. module: mail +#: help:mail.compose.message,record_name:0 +#: help:mail.message,record_name:0 +msgid "Name get of the related document." +msgstr "" + +#. module: mail +#: model:ir.actions.act_window,name:mail.action_view_notifications +#: model:ir.model,name:mail.model_mail_notification +#: model:ir.ui.menu,name:mail.menu_email_notifications +#: field:mail.compose.message,notification_ids:0 +#: view:mail.message:0 +#: field:mail.message,notification_ids:0 +#: view:mail.notification:0 +msgid "Notifications" +msgstr "" + +#. module: mail +#: view:mail.alias:0 +msgid "Search Alias" +msgstr "" + +#. module: mail +#: help:mail.alias,alias_force_thread_id:0 +msgid "" +"Optional ID of a thread (record) to which all incoming messages will be " +"attached, even if they did not reply to it. If set, this will disable the " +"creation of new records completely." +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:294 +#, python-format +msgid "show more message" +msgstr "" + +#. module: mail +#: help:mail.message.subtype,name:0 +msgid "" +"Message subtype gives a more precise type on the message, especially for " +"system notifications. For example, it can be a notification related to a new " +"record (New), or to a stage change in a process (Stage change). Message " +"subtypes allow to precisely tune the notifications the user want to receive " +"on its wall." +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "by" +msgstr "" + +#. module: mail +#: model:mail.group,name:mail.group_best_sales_practices +msgid "Best Sales Practices" +msgstr "" + +#. module: mail +#: selection:mail.group,public:0 +msgid "Selected Group Only" +msgstr "" + +#. module: mail +#: field:mail.group,message_is_follower:0 +#: field:mail.thread,message_is_follower:0 +#: field:res.partner,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: mail +#: view:mail.alias:0 +#: view:mail.mail:0 +msgid "User" +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "Groups" +msgstr "" + +#. module: mail +#: view:mail.message:0 +msgid "Messages Search" +msgstr "" + +#. module: mail +#: field:mail.compose.message,date:0 +#: field:mail.message,date:0 +msgid "Date" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Extended Filters..." +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:278 +#, python-format +msgid "more" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:122 +#, python-format +msgid "To:" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:193 +#, python-format +msgid "Write to my followers" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_res_groups +msgid "Access Groups" +msgstr "" + +#. module: mail +#: field:mail.message.subtype,default:0 +msgid "Default" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_res_users +msgid "Users" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:246 +#, python-format +msgid "Mark as Todo" +msgstr "" + +#. module: mail +#: help:mail.message.subtype,parent_id:0 +msgid "Parent subtype, used for automatic subscription." +msgstr "" + +#. module: mail +#: field:mail.group,message_summary:0 +#: field:mail.thread,message_summary:0 +#: field:res.partner,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: mail +#: help:mail.message.subtype,res_model:0 +msgid "" +"Model the subtype applies to. If False, this subtype applies to all models." +msgstr "" + +#. module: mail +#: view:mail.compose.message:0 +#: view:mail.wizard.invite:0 +msgid "Add contacts to notify..." +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "Group Form" +msgstr "" + +#. module: mail +#: field:mail.compose.message,starred:0 +#: field:mail.message,starred:0 +#: field:mail.notification,starred:0 +msgid "Starred" +msgstr "" + +#. module: mail +#: field:mail.group,menu_id:0 +msgid "Related Menu" +msgstr "" + +#. module: mail +#: code:addons/mail/update.py:93 +#, python-format +msgid "Error" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail_followers.xml:13 +#, python-format +msgid "Following" +msgstr "" + +#. module: mail +#: sql_constraint:mail.alias:0 +msgid "" +"Unfortunately this email alias is already used, please choose a unique one" +msgstr "" + +#. module: mail +#: help:mail.alias,alias_user_id:0 +msgid "" +"The owner of records created upon receiving emails on this alias. If this " +"field is not set the system will attempt to find the right owner based on " +"the sender (From) address, or will use the Administrator account if no " +"system user is found for that address." +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail_followers.xml:52 +#, python-format +msgid "And" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_thread.py:111 +#, python-format +msgid "You have %d unread messages" +msgstr "" + +#. module: mail +#: field:mail.compose.message,message_id:0 +#: field:mail.message,message_id:0 +msgid "Message-Id" +msgstr "" + +#. module: mail +#: help:mail.group,image:0 +msgid "" +"This field holds the image used as photo for the group, limited to " +"1024x1024px." +msgstr "" + +#. module: mail +#: field:mail.compose.message,attachment_ids:0 +#: view:mail.mail:0 +#: field:mail.message,attachment_ids:0 +msgid "Attachments" +msgstr "" + +#. module: mail +#: field:mail.compose.message,record_name:0 +#: field:mail.message,record_name:0 +msgid "Message Record Name" +msgstr "" + +#. module: mail +#: field:mail.mail,email_cc:0 +msgid "Cc" +msgstr "" + +#. module: mail +#: help:mail.notification,starred:0 +msgid "Starred message that goes into the todo mailbox" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Cancel Email" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:125 +#: view:mail.compose.message:0 +#, python-format +msgid "Followers of" +msgstr "" + +#. module: mail +#: help:mail.mail,auto_delete:0 +msgid "Permanently delete this email after sending it, to save space" +msgstr "" + +#. module: mail +#: model:ir.actions.client,name:mail.action_mail_group_feeds +msgid "Discussion Group" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:242 +#, python-format +msgid "Done" +msgstr "" + +#. module: mail +#: model:mail.message.subtype,name:mail.mt_comment +msgid "Discussions" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail_followers.xml:11 +#, python-format +msgid "Follow" +msgstr "" + +#. module: mail +#: model:mail.group,name:mail.group_all_employees +msgid "Whole Company" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:131 +#: code:addons/mail/static/src/xml/mail.xml:278 +#: view:mail.compose.message:0 +#, python-format +msgid "and" +msgstr "" + +#. module: mail +#: help:mail.mail,body_html:0 +msgid "Rich-text/HTML message" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +msgid "Creation Month" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:306 +#, python-format +msgid "Compose new Message" +msgstr "" + +#. module: mail +#: help:mail.compose.message,notified_partner_ids:0 +#: help:mail.message,notified_partner_ids:0 +msgid "" +"Partners that have a notification pushing this message in their mailboxes" +msgstr "" + +#. module: mail +#: view:mail.message:0 +msgid "Content" +msgstr "" + +#. module: mail +#: field:mail.mail,email_to:0 +msgid "To" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:245 +#: view:mail.mail:0 +#, python-format +msgid "Reply" +msgstr "" + +#. module: mail +#: field:mail.compose.message,notified_partner_ids:0 +#: field:mail.message,notified_partner_ids:0 +msgid "Notified partners" +msgstr "" + +#. module: mail +#: help:mail.group,public:0 +msgid "" +"This group is visible by non members. Invisible groups can add " +"members through the invite button." +msgstr "" + +#. module: mail +#: model:mail.group,name:mail.group_board +msgid "Board meetings" +msgstr "" + +#. module: mail +#: field:mail.alias,alias_model_id:0 +msgid "Aliased Model" +msgstr "" + +#. module: mail +#: help:mail.compose.message,message_id:0 +#: help:mail.message,message_id:0 +msgid "Message unique identifier" +msgstr "" + +#. module: mail +#: field:mail.group,description:0 +#: field:mail.message.subtype,description:0 +msgid "Description" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_mail_followers +msgid "Document Followers" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail_followers.xml:35 +#, python-format +msgid "Remove this follower" +msgstr "" + +#. module: mail +#: selection:res.partner,notification_email_send:0 +msgid "Never" +msgstr "" + +#. module: mail +#: field:mail.mail,mail_server_id:0 +msgid "Outgoing mail server" +msgstr "" + +#. module: mail +#: code:addons/mail/mail_message.py:919 +#, python-format +msgid "Partners email addresses not found" +msgstr "" + +#. module: mail +#: view:mail.mail:0 +#: selection:mail.mail,state:0 +msgid "Sent" +msgstr "" + +#. module: mail +#: field:mail.mail,body_html:0 +msgid "Rich-text Contents" +msgstr "" + +#. module: mail +#: help:mail.compose.message,to_read:0 +#: help:mail.message,to_read:0 +msgid "Current user has an unread notification linked to this message" +msgstr "" + +#. module: mail +#: help:res.partner,notification_email_send:0 +msgid "" +"Choose in which case you want to receive an email when you receive new feeds." +msgstr "" + +#. module: mail +#: model:ir.actions.act_window,name:mail.action_view_groups +#: model:ir.ui.menu,name:mail.mail_allgroups +msgid "Join a group" +msgstr "" + +#. module: mail +#: model:ir.actions.client,help:mail.action_mail_group_feeds +msgid "" +"

\n" +" No message in this group.\n" +"

\n" +" " +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:213 +#, python-format +msgid "Please, wait while the file is uploading." +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "" +"This group is visible by everyone,\n" +" including your customers if you " +"installed\n" +" the portal module." +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:243 +#, python-format +msgid "Set back to Todo" +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "Send a message to the group" +msgstr "" + +#. module: mail +#: field:mail.group,name:0 +msgid "Name" +msgstr "" + +#. module: mail +#: view:mail.group:0 +msgid "Topics discussed in this group..." +msgstr "" + +#. module: mail +#: field:res.partner,notification_email_send:0 +msgid "Receive Feeds by Email" +msgstr "" + +#. module: mail +#: help:base.config.settings,alias_domain:0 +msgid "" +"If you have setup a catch-all email domain redirected to the OpenERP server, " +"enter the domain name here." +msgstr "" + +#. module: mail +#: model:ir.actions.act_window,name:mail.action_view_mail_message +#: model:ir.ui.menu,name:mail.menu_mail_message +#: field:mail.group,message_ids:0 +#: view:mail.message:0 +#: field:mail.thread,message_ids:0 +#: field:res.partner,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:141 +#, python-format +msgid "others..." +msgstr "" + +#. module: mail +#: model:ir.actions.client,name:mail.action_mail_star_feeds +#: model:ir.ui.menu,name:mail.mail_starfeeds +msgid "To-do" +msgstr "" + +#. module: mail +#: view:mail.alias:0 +#: field:mail.alias,alias_name:0 +#: field:mail.group,alias_id:0 +#: field:res.users,alias_id:0 +msgid "Alias" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail +#: help:mail.compose.message,notification_ids:0 +#: help:mail.message,notification_ids:0 +msgid "" +"Technical field holding the message notifications. Use notified_partner_ids " +"to access notified partners." +msgstr "" + +#. module: mail +#: model:ir.ui.menu,name:mail.mail_feeds +#: model:ir.ui.menu,name:mail.mail_feeds_main +msgid "Messaging" +msgstr "" + +#. module: mail +#: view:mail.alias:0 +#: field:mail.message.subtype,res_model:0 +msgid "Model" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:206 +#, python-format +msgid "No messages." +msgstr "" + +#. module: mail +#: help:mail.followers,subtype_ids:0 +msgid "" +"Message subtypes followed, meaning subtypes that will be pushed onto the " +"user's Wall." +msgstr "" + +#. module: mail +#: help:mail.group,message_ids:0 +#: help:mail.thread,message_ids:0 +#: help:res.partner,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: mail +#: help:mail.mail,references:0 +msgid "Message references, such as identifiers of previous messages" +msgstr "" + +#. module: mail +#: field:mail.compose.message,composition_mode:0 +msgid "Composition mode" +msgstr "" + +#. module: mail +#: field:mail.compose.message,model:0 +#: field:mail.followers,res_model:0 +#: field:mail.message,model:0 +#: field:mail.wizard.invite,res_model:0 +msgid "Related Document Model" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/mail.xml:321 +#, python-format +msgid "unlike" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_mail_group +msgid "Discussion group" +msgstr "" + +#. module: mail +#: help:mail.mail,email_cc:0 +msgid "Carbon copy message recipients" +msgstr "" + +#. module: mail +#: field:mail.alias,alias_domain:0 +msgid "Alias domain" +msgstr "" + +#. module: mail +#: code:addons/mail/update.py:93 +#, python-format +msgid "Error during communication with the publisher warranty server." +msgstr "" + +#. module: mail +#: selection:mail.group,public:0 +msgid "Private" +msgstr "" + +#. module: mail +#: model:ir.actions.client,help:mail.action_mail_star_feeds +msgid "" +"

\n" +" No todo.\n" +"

\n" +" When you process messages in your inbox, you can mark " +"some\n" +" as todo. From this menu, you can process all your " +"todo.\n" +"

\n" +" " +msgstr "" + +#. module: mail +#: selection:mail.mail,state:0 +msgid "Delivery Failed" +msgstr "" + +#. module: mail +#: field:mail.compose.message,partner_ids:0 +msgid "Additional contacts" +msgstr "" + +#. module: mail +#: help:mail.compose.message,parent_id:0 +#: help:mail.message,parent_id:0 +msgid "Initial thread message." +msgstr "" + +#. module: mail +#: model:mail.group,name:mail.group_hr_policies +msgid "HR Policies" +msgstr "" + +#. module: mail +#: selection:res.partner,notification_email_send:0 +msgid "Emails only" +msgstr "" + +#. module: mail +#: model:ir.actions.client,name:mail.action_mail_inbox_feeds +#: model:ir.ui.menu,name:mail.mail_inboxfeeds +msgid "Inbox" +msgstr "" + +#. module: mail +#: field:mail.compose.message,filter_id:0 +msgid "Filters" +msgstr "" + +#. module: mail +#. openerp-web +#: code:addons/mail/static/src/js/many2many_tags_email.js:63 +#, python-format +msgid "Please complete partner's informations and Email" +msgstr "" + +#. module: mail +#: model:ir.actions.act_window,name:mail.action_view_message_subtype +#: model:ir.ui.menu,name:mail.menu_message_subtype +msgid "Subtypes" +msgstr "" + +#. module: mail +#: model:ir.model,name:mail.model_mail_alias +msgid "Email Aliases" +msgstr "" + +#. module: mail +#: field:mail.group,image_small:0 +msgid "Small-sized photo" +msgstr "" + +#. module: mail +#: help:mail.mail,reply_to:0 +msgid "Preferred response address for the message" +msgstr "" diff --git a/addons/mail/i18n/lt.po b/addons/mail/i18n/lt.po index 935cb3437bb..9dfc3951545 100644 --- a/addons/mail/i18n/lt.po +++ b/addons/mail/i18n/lt.po @@ -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-05-10 06:51+0000\n" +"X-Launchpad-Export-Date: 2013-05-11 06:29+0000\n" "X-Generator: Launchpad (build 16598)\n" #. module: mail diff --git a/addons/mail/mail_followers.py b/addons/mail/mail_followers.py index fe2362eecc0..fcd32ec7315 100644 --- a/addons/mail/mail_followers.py +++ b/addons/mail/mail_followers.py @@ -88,7 +88,7 @@ class mail_notification(osv.Model): continue partner = notification.partner_id # If partners_to_notify specified: restrict to them - if partners_to_notify and partner.id not in partners_to_notify: + if partners_to_notify is not None and partner.id not in partners_to_notify: continue # Do not send to partners without email address defined if not partner.email: diff --git a/addons/mail/mail_mail.py b/addons/mail/mail_mail.py index 351ff0130e5..2cbfec2f72a 100644 --- a/addons/mail/mail_mail.py +++ b/addons/mail/mail_mail.py @@ -157,8 +157,10 @@ class mail_mail(osv.Model): :param browse_record mail: mail.mail browse_record :param browse_record partner: specific recipient partner """ - if force or (not mail.subject and mail.model and mail.res_id): + if (force or not mail.subject) and mail.record_name: return 'Re: %s' % (mail.record_name) + elif (force or not mail.subject) and mail.parent_id and mail.parent_id.subject: + return 'Re: %s' % (mail.parent_id.subject) return mail.subject def send_get_mail_body(self, cr, uid, mail, partner=None, context=None): diff --git a/addons/portal/__init__.py b/addons/portal/__init__.py index 0045a557a49..e7026986ea4 100644 --- a/addons/portal/__init__.py +++ b/addons/portal/__init__.py @@ -21,6 +21,7 @@ import portal import mail_mail +import mail_message import wizard import acquirer diff --git a/addons/portal/i18n/ko.po b/addons/portal/i18n/ko.po new file mode 100644 index 00000000000..6aee5f9a5c8 --- /dev/null +++ b/addons/portal/i18n/ko.po @@ -0,0 +1,548 @@ +# Korean translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2013-03-07 08:38+0000\n" +"PO-Revision-Date: 2013-05-14 01:13+0000\n" +"Last-Translator: AhnJD \n" +"Language-Team: Korean \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-05-15 06:07+0000\n" +"X-Generator: Launchpad (build 16617)\n" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "Mako" +msgstr "" + +#. module: portal +#: code:addons/portal/wizard/share_wizard.py:50 +#, python-format +msgid "Please select at least one user to share with" +msgstr "" + +#. module: portal +#: view:portal.wizard:0 +msgid "" +"Select which contacts should belong to the portal in the list below.\n" +" The email address of each selected contact must be " +"valid and unique.\n" +" If necessary, you can fix any contact's email " +"address directly in the list." +msgstr "" + +#. module: portal +#: model:mail.group,name:portal.company_jobs +msgid "Company Jobs" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "amount: the total amount to pay, as a float" +msgstr "" + +#. module: portal +#: view:portal.wizard.user:0 +msgid "Contacts" +msgstr "연락처" + +#. module: portal +#: view:portal.wizard:0 +msgid "This text is included in the email sent to new portal users." +msgstr "" + +#. module: portal +#: view:share.wizard:0 +#: field:share.wizard,group_ids:0 +msgid "Existing groups" +msgstr "기존 그룹" + +#. module: portal +#: view:res.groups:0 +msgid "Portal Groups" +msgstr "포털 그룹" + +#. module: portal +#: code:addons/portal/mail_mail.py:52 +#, python-format +msgid "

Access this document directly in OpenERP

" +msgstr "" + +#. module: portal +#: field:portal.wizard,welcome_message:0 +msgid "Invitation Message" +msgstr "초대 메시지" + +#. module: portal +#: model:ir.actions.act_window,name:portal.partner_wizard_action +#: model:ir.model,name:portal.model_portal_wizard +#: view:portal.wizard:0 +msgid "Portal Access Management" +msgstr "" + +#. module: portal +#: view:res.groups:0 +msgid "Non-Portal Groups" +msgstr "" + +#. module: portal +#: code:addons/portal/wizard/share_wizard.py:54 +#, python-format +msgid "Please select at least one group to share with" +msgstr "" + +#. module: portal +#: model:ir.actions.client,name:portal.action_mail_archives_feeds_portal +#: model:ir.ui.menu,name:portal.portal_mail_archivesfeeds +msgid "Archives" +msgstr "보관" + +#. module: portal +#: model:ir.ui.menu,name:portal.portal_orders +msgid "Quotations and Sales Orders" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "reference: the reference number of the document to pay" +msgstr "" + +#. module: portal +#: help:portal.payment.acquirer,visible:0 +msgid "" +"Make this payment acquirer available in portal forms (Customer invoices, " +"etc.)" +msgstr "" + +#. module: portal +#: model:ir.model,name:portal.model_share_wizard +msgid "Share Wizard" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "" +", so it may use Mako expressions.\n" +" The Mako evaluation context provides:" +msgstr "" + +#. module: portal +#: model:ir.actions.client,help:portal.action_news +msgid "" +"

\n" +" Youd don't have unread company's news.\n" +"

\n" +" " +msgstr "" + +#. module: portal +#: field:portal.wizard.user,email:0 +msgid "Email" +msgstr "" + +#. module: portal +#: view:portal.wizard:0 +msgid "or" +msgstr "" + +#. module: portal +#: model:ir.actions.client,name:portal.action_mail_star_feeds_portal +#: model:ir.ui.menu,name:portal.portal_mail_starfeeds +msgid "To-do" +msgstr "" + +#. module: portal +#: code:addons/portal/wizard/portal_wizard.py:194 +#, python-format +msgid "" +"You must have an email address in your User Preferences to send emails." +msgstr "" + +#. module: portal +#: model:ir.actions.client,name:portal.action_jobs +#: model:ir.ui.menu,name:portal.portal_jobs +msgid "Jobs" +msgstr "" + +#. module: portal +#: field:portal.wizard,user_ids:0 +msgid "Users" +msgstr "" + +#. module: portal +#: code:addons/portal/acquirer.py:82 +#, python-format +msgid "Pay safely online" +msgstr "" + +#. module: portal +#: code:addons/portal/acquirer.py:77 +#, python-format +msgid "No online payment acquirers configured" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "" +"kind: the kind of document on which the payment form is rendered (translated " +"to user language, e.g. \"Invoice\")" +msgstr "" + +#. module: portal +#: help:portal.wizard,portal_id:0 +msgid "The portal that users can be added in or removed from." +msgstr "" + +#. module: portal +#: code:addons/portal/wizard/share_wizard.py:38 +#, python-format +msgid "Users you already shared with" +msgstr "" + +#. module: portal +#: model:ir.actions.client,help:portal.action_jobs +msgid "" +"

\n" +" Youd don't have unread job offers.\n" +"

\n" +" " +msgstr "" + +#. module: portal +#: model:ir.actions.client,help:portal.action_mail_archives_feeds_portal +msgid "" +"

\n" +" No message found and no message sent yet.\n" +"

\n" +" Click on the top-right icon to compose a message. This\n" +" message will be sent by email if it's an internal " +"contact.\n" +"

\n" +" " +msgstr "" + +#. module: portal +#: model:ir.ui.menu,name:portal.portal_menu +#: field:portal.wizard,portal_id:0 +#: field:res.groups,is_portal:0 +#: model:res.groups,name:portal.group_portal +msgid "Portal" +msgstr "" + +#. module: portal +#: code:addons/portal/wizard/portal_wizard.py:34 +#, python-format +msgid "Your OpenERP account at %(company)s" +msgstr "" + +#. module: portal +#: model:res.groups,name:portal.group_anonymous +msgid "Anonymous" +msgstr "" + +#. module: portal +#: field:portal.wizard.user,in_portal:0 +msgid "In Portal" +msgstr "" + +#. module: portal +#: model:ir.actions.client,name:portal.action_news +#: model:ir.ui.menu,name:portal.portal_company_news +msgid "News" +msgstr "" + +#. module: portal +#: model:ir.ui.menu,name:portal.portal_after_sales +msgid "After Sale Services" +msgstr "" + +#. module: portal +#: model:res.groups,comment:portal.group_portal +msgid "" +"Portal members have specific access rights (such as record rules and " +"restricted menus).\n" +" They usually do not belong to the usual OpenERP groups." +msgstr "" + +#. module: portal +#: model:ir.actions.act_window,name:portal.action_acquirer_list +#: view:portal.payment.acquirer:0 +msgid "Payment Acquirers" +msgstr "" + +#. module: portal +#: model:ir.ui.menu,name:portal.portal_projects +msgid "Projects" +msgstr "" + +#. module: portal +#: model:ir.actions.client,name:portal.action_mail_inbox_feeds_portal +#: model:ir.ui.menu,name:portal.portal_inbox +msgid "Inbox" +msgstr "" + +#. module: portal +#: view:share.wizard:0 +#: field:share.wizard,user_ids:0 +msgid "Existing users" +msgstr "" + +#. module: portal +#: field:portal.wizard.user,wizard_id:0 +msgid "Wizard" +msgstr "" + +#. module: portal +#: field:portal.payment.acquirer,name:0 +msgid "Name" +msgstr "" + +#. module: portal +#: model:ir.model,name:portal.model_res_groups +msgid "Access Groups" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "uid: the current user id" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "" +"quote(): a method to quote special string character to make them suitable " +"for inclusion in a URL" +msgstr "" + +#. module: portal +#: code:addons/portal/mail_mail.py:44 +#, python-format +msgid "" +"

Access your messages and personal documents through our " +"Customer Portal

" +msgstr "" + +#. module: portal +#: field:portal.payment.acquirer,form_template:0 +msgid "Payment form template (HTML)" +msgstr "" + +#. module: portal +#: field:portal.wizard.user,partner_id:0 +msgid "Contact" +msgstr "" + +#. module: portal +#: model:ir.model,name:portal.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: portal +#: code:addons/portal/wizard/portal_wizard.py:193 +#, python-format +msgid "Email required" +msgstr "" + +#. module: portal +#: model:ir.ui.menu,name:portal.portal_messages +msgid "Messaging" +msgstr "" + +#. module: portal +#: model:res.groups,comment:portal.group_anonymous +msgid "" +"Anonymous users have specific access rights (such as record rules and " +"restricted menus).\n" +" They usually do not belong to the usual OpenERP groups." +msgstr "" + +#. module: portal +#: model:ir.model,name:portal.model_portal_payment_acquirer +msgid "Online Payment Acquirer" +msgstr "" + +#. module: portal +#: model:mail.group,name:portal.company_news_feed +msgid "Company News" +msgstr "" + +#. module: portal +#: code:addons/portal/acquirer.py:76 +#, python-format +msgid "" +"You can finish the configuration in the Bank&Cash settings" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "cr: the current database cursor" +msgstr "" + +#. module: portal +#: model:ir.actions.client,help:portal.action_mail_inbox_feeds_portal +msgid "" +"

\n" +" Good Job! Your inbox is empty.\n" +"

\n" +" Your inbox contains private messages or emails sent to " +"you\n" +" as well as information related to documents or people " +"you\n" +" follow.\n" +"

\n" +" " +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "" +"object: the document on which the payment form is rendered (usually an " +"invoice or sales order record)" +msgstr "" + +#. module: portal +#: help:portal.wizard,welcome_message:0 +msgid "This text is included in the email sent to new users of the portal." +msgstr "" + +#. module: portal +#: model:ir.ui.menu,name:portal.portal_company +msgid "About Us" +msgstr "" + +#. module: portal +#: help:res.groups,is_portal:0 +msgid "If checked, this group is usable as a portal." +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "Payment Acquirer" +msgstr "" + +#. module: portal +#: code:addons/portal/wizard/portal_wizard.py:35 +#, python-format +msgid "" +"Dear %(name)s,\n" +"\n" +"You have been given access to %(portal)s.\n" +"\n" +"Your login account data is:\n" +"Database: %(db)s\n" +"Username: %(login)s\n" +"\n" +"In order to complete the signin process, click on the following url:\n" +"%(url)s\n" +"\n" +"%(welcome_message)s\n" +"\n" +"--\n" +"OpenERP - Open Source Business Applications\n" +"http://www.openerp.com\n" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "" +"currency: the currency record in which the document is issued (e.g. " +"currency.name could be EUR)" +msgstr "" + +#. module: portal +#: model:portal.payment.acquirer,form_template:portal.paypal_acquirer +msgid "" +"\n" +"% if object.company_id.paypal_account:\n" +"
\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"
\n" +"% endif\n" +" " +msgstr "" + +#. module: portal +#: model:ir.model,name:portal.model_portal_wizard_user +msgid "Portal User Config" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "" +"If the template renders to an empty result in a certain context it will be " +"ignored, as if it was inactive." +msgstr "" + +#. module: portal +#: field:portal.payment.acquirer,visible:0 +msgid "Visible" +msgstr "" + +#. module: portal +#: code:addons/portal/wizard/share_wizard.py:39 +#, python-format +msgid "Existing Groups (e.g Portal Groups)" +msgstr "" + +#. module: portal +#: view:portal.wizard:0 +msgid "Cancel" +msgstr "" + +#. module: portal +#: view:portal.wizard:0 +msgid "Apply" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "ctx: the current context dictionary" +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "" +"This is an HTML form template to submit a payment through this acquirer.\n" +" The template will be rendered with" +msgstr "" + +#. module: portal +#: model:ir.actions.client,help:portal.action_mail_star_feeds_portal +msgid "" +"

\n" +" No todo.\n" +"

\n" +" When you process messages in your inbox, you can mark " +"some\n" +" as todo. From this menu, you can process all your " +"todo.\n" +"

\n" +" " +msgstr "" + +#. module: portal +#: view:portal.payment.acquirer:0 +msgid "Form Template" +msgstr "" + +#. module: portal +#: view:share.wizard:0 +msgid "Details" +msgstr "" diff --git a/addons/portal/mail_message.py b/addons/portal/mail_message.py new file mode 100644 index 00000000000..d6a38f27378 --- /dev/null +++ b/addons/portal/mail_message.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2011 OpenERP S.A (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp.osv import osv, orm +from openerp.tools.translate import _ + + +class mail_message(osv.Model): + """ Update of mail_message class, to restrict mail access. """ + _inherit = 'mail.message' + + def _search(self, cr, uid, args, offset=0, limit=None, order=None, + context=None, count=False, access_rights_uid=None): + """ Override that adds specific access rights of mail.message, to remove + all internal notes if uid is a non-employee + """ + group_ids = self.pool.get('res.users').browse(cr, uid, uid, context=context).groups_id + group_user_id = self.pool.get("ir.model.data").get_object_reference(cr, uid, 'base', 'group_user')[1] + if group_user_id not in [group.id for group in group_ids]: + args = ['&', '|', ('type', '!=', 'comment'), ('subtype_id', '!=', False)] + list(args) + + return super(mail_message, self)._search(cr, uid, args, offset=offset, limit=limit, order=order, + context=context, count=False, access_rights_uid=access_rights_uid) + + def check_access_rule(self, cr, uid, ids, operation, context=None): + """ Add Access rules of mail.message for non-employee user: + - read: + - raise if the type is comment and subtype NULL (internal note) + """ + group_ids = self.pool.get('res.users').browse(cr, uid, uid, context=context).groups_id + group_user_id = self.pool.get("ir.model.data").get_object_reference(cr, uid, 'base', 'group_user')[1] + if group_user_id not in [group.id for group in group_ids]: + cr.execute('SELECT DISTINCT id FROM "%s" WHERE type = %%s AND subtype_id IS NULL AND id = ANY (%%s)' % (self._table), ('comment', ids,)) + if cr.fetchall(): + raise orm.except_orm(_('Access Denied'), + _('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: %s, Operation: %s)') % \ + (self._description, operation)) + + return super(mail_message, self).check_access_rule(cr, uid, ids=ids, operation=operation, context=context) diff --git a/addons/portal/tests/test_portal.py b/addons/portal/tests/test_portal.py index 03f2491315b..c0b5709ac4f 100644 --- a/addons/portal/tests/test_portal.py +++ b/addons/portal/tests/test_portal.py @@ -40,7 +40,9 @@ class test_portal(TestMailBase): self.partner_chell_id = self.user_chell.partner_id.id # Create a PigsPortal group - self.group_port_id = self.mail_group.create(cr, uid, {'name': 'PigsPortal', 'public': 'groups', 'group_public_id': self.group_portal_id}) + self.group_port_id = self.mail_group.create(cr, uid, + {'name': 'PigsPortal', 'public': 'groups', 'group_public_id': self.group_portal_id}, + {'mail_create_nolog': True}) # Set an email address for the user running the tests, used as Sender for outgoing mails self.res_users.write(cr, uid, uid, {'email': 'test@localhost'}) @@ -130,3 +132,28 @@ class test_portal(TestMailBase): 'body of invitation email is incorrect') self.assertTrue(partner_carine.signup_url in sent_email.get('body'), 'body of invitation email does not contain signup url') + + def test_20_message_read(self): + cr, uid, group_port_id = self.cr, self.uid, self.group_port_id + + # Data: custom subtypes + mt_group_public_id = self.mail_message_subtype.create(cr, uid, {'name': 'group_public', 'description': 'Group changed'}) + self.ir_model_data.create(cr, uid, {'name': 'mt_group_public', 'model': 'mail.message.subtype', 'module': 'mail', 'res_id': mt_group_public_id}) + # Data: post messages with various subtypes + msg1_id = self.mail_group.message_post(cr, uid, group_port_id, body='Body1', type='comment', subtype='mail.mt_comment') + msg2_id = self.mail_group.message_post(cr, uid, group_port_id, body='Body2', type='comment', subtype='mail.mt_group_public') + msg3_id = self.mail_group.message_post(cr, uid, group_port_id, body='Body3', type='comment', subtype='mail.mt_comment') + msg4_id = self.mail_group.message_post(cr, uid, group_port_id, body='Body4', type='comment') + msg5_id = self.mail_group.message_post(cr, uid, group_port_id, body='Body5', type='notification') + + # Do: Chell search messages: should not see internal notes (comment without subtype) + msg_ids = self.mail_message.search(cr, self.user_chell_id, [('model', '=', 'mail.group'), ('res_id', '=', group_port_id)]) + self.assertEqual(set(msg_ids), set([msg1_id, msg2_id, msg3_id, msg5_id]), + 'mail_message: portal user has access to messages he should not read') + + # Do: Chell read messages she can read + self.mail_message.read(cr, self.user_chell_id, msg_ids, ['body', 'type', 'subtype_id']) + + # Do: Chell read a message she should not be able to read + with self.assertRaises(except_orm): + self.mail_message.read(cr, self.user_chell_id, [msg4_id], ['body', 'type', 'subtype_id']) diff --git a/addons/portal_project_long_term/security/portal_security.xml b/addons/portal_project_long_term/security/portal_security.xml index eab70ebe734..cd3f591df0c 100644 --- a/addons/portal_project_long_term/security/portal_security.xml +++ b/addons/portal_project_long_term/security/portal_security.xml @@ -5,14 +5,7 @@ Project/Phase: portal users: public or portal and following - ['|', - ('project_id.privacy_visibility', '=', 'public'), - '&', - ('project_id.privacy_visibility', 'in', ['portal', 'followers']), - '|', - ('message_follower_ids','in', [user.partner_id.id]), - ('user_id', '=', user.id), - ] + [('project_id.privacy_visibility', 'in', ['public', 'portal'])] diff --git a/addons/project/i18n/nl.po b/addons/project/i18n/nl.po index 38fb3ed06d3..1c124d8eb81 100644 --- a/addons/project/i18n/nl.po +++ b/addons/project/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-15 17:57+0000\n" +"PO-Revision-Date: 2013-05-12 19:29+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \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-28 05:56+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-05-13 06:46+0000\n" +"X-Generator: Launchpad (build 16614)\n" #. module: project #: view:project.project:0 @@ -2162,7 +2162,7 @@ msgstr "projecten waarvan ik manager ben" #: selection:project.task.history,kanban_state:0 #: selection:project.task.history.cumulative,kanban_state:0 msgid "Ready for next stage" -msgstr "Gereed voor ogende fase" +msgstr "Gereed voor volgende fase" #. module: project #: field:project.task.type,case_default:0 diff --git a/addons/project_issue/i18n/nl.po b/addons/project_issue/i18n/nl.po index 3dd547d1a07..32918e16d1d 100644 --- a/addons/project_issue/i18n/nl.po +++ b/addons/project_issue/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:37+0000\n" -"PO-Revision-Date: 2013-03-15 17:58+0000\n" +"PO-Revision-Date: 2013-05-12 19:29+0000\n" "Last-Translator: Erwin van der Ploeg (Endian Solutions) \n" "Language-Team: Dutch \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-28 05:57+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-05-13 06:46+0000\n" +"X-Generator: Launchpad (build 16614)\n" #. module: project_issue #: model:project.category,name:project_issue.project_issue_category_03 @@ -803,7 +803,7 @@ msgstr "Niet afgesloten issues" #: view:project.issue:0 #: selection:project.issue,kanban_state:0 msgid "Ready for next stage" -msgstr "Gereed voor vogende fase" +msgstr "Gereed voor volgende fase" #. module: project_issue #: selection:project.issue.report,month:0 diff --git a/addons/project_long_term/i18n/tr.po b/addons/project_long_term/i18n/tr.po index f0f67b82700..2a2d28e6d35 100644 --- a/addons/project_long_term/i18n/tr.po +++ b/addons/project_long_term/i18n/tr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-03-07 08:38+0000\n" -"PO-Revision-Date: 2013-05-08 09:17+0000\n" -"Last-Translator: Ediz Duman \n" +"PO-Revision-Date: 2013-05-13 10:14+0000\n" +"Last-Translator: Ayhan KIZILTAN \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-05-09 06:11+0000\n" -"X-Generator: Launchpad (build 16598)\n" +"X-Launchpad-Export-Date: 2013-05-14 06:25+0000\n" +"X-Generator: Launchpad (build 16617)\n" #. module: project_long_term #: help:project.phase,constraint_date_end:0 @@ -436,6 +436,8 @@ msgid "" "It's computed by the scheduler according the project date or the end date of " "the previous phase." msgstr "" +"Planlamacı tarafından proje tarihine göre ya da önceki aşamanın bitiş " +"tarihine göre hesaplanmıştır." #. module: project_long_term #: model:ir.actions.act_window,name:project_long_term.act_project_phase diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index b1f552b64cc..a7973a40a47 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -641,7 +641,7 @@ class purchase_order(osv.osv): 'product_uom': order_line.product_uom.id, 'product_uos': order_line.product_uom.id, 'date': self.date_to_datetime(cr, uid, order.date_order, context), - 'date_expected': self.date_to_datetime(cr, uid, order.date_order, context), + 'date_expected': self.date_to_datetime(cr, uid, order_line.date_planned, context), 'location_id': order.partner_id.property_stock_supplier.id, 'location_dest_id': order.location_id.id, 'picking_id': picking_id, diff --git a/addons/report_intrastat/i18n/tr.po b/addons/report_intrastat/i18n/tr.po index d3d5e2699e9..563bc4a1b6a 100644 --- a/addons/report_intrastat/i18n/tr.po +++ b/addons/report_intrastat/i18n/tr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-03-07 08:38+0000\n" -"PO-Revision-Date: 2012-12-21 23:00+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2013-05-13 10:10+0000\n" +"Last-Translator: serkan erdoğan \n" "Language-Team: Turkish \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-28 05:59+0000\n" -"X-Generator: Launchpad (build 16546)\n" +"X-Launchpad-Export-Date: 2013-05-14 06:25+0000\n" +"X-Generator: Launchpad (build 16617)\n" #. module: report_intrastat #: report:account.invoice.intrastat:0 @@ -51,7 +51,7 @@ msgstr "İçe Aktar" #: report:account.invoice.intrastat:0 #: field:report.intrastat.code,description:0 msgid "Description" -msgstr "" +msgstr "Açıklama" #. module: report_intrastat #: report:account.invoice.intrastat:0 diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 6d9cb1aae84..fca3d9ff073 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -29,7 +29,7 @@ from openerp.osv import fields, osv from openerp.tools.translate import _ from openerp import netsvc from openerp import tools -from openerp.tools import float_compare +from openerp.tools import float_compare, DEFAULT_SERVER_DATETIME_FORMAT import openerp.addons.decimal_precision as dp import logging _logger = logging.getLogger(__name__) @@ -651,7 +651,7 @@ class stock_picking(osv.osv): ), 'min_date': fields.function(get_min_max_date, fnct_inv=_set_minimum_date, multi="min_max_date", store=True, type='datetime', string='Scheduled Time', select=1, help="Scheduled time for the shipment to be processed"), - 'date': fields.datetime('Time', help="Creation time, usually the time of the order.", select=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}), + 'date': fields.datetime('Creation Date', help="Creation date, usually the time of the order.", select=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}), 'date_done': fields.datetime('Date of Transfer', help="Date of Completion", states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}), 'max_date': fields.function(get_min_max_date, fnct_inv=_set_maximum_date, multi="min_max_date", store=True, type='datetime', string='Max. Expected Date', select=2), @@ -2334,7 +2334,6 @@ class stock_move(osv.osv): 'line_id': move_lines, 'ref': move.picking_id and move.picking_id.name}) - def action_done(self, cr, uid, ids, context=None): """ Makes the move done and if all moves are done, it will finish the picking. @return: @@ -2380,7 +2379,7 @@ class stock_move(osv.osv): if todo: self.action_confirm(cr, uid, todo, context=context) - self.write(cr, uid, move_ids, {'state': 'done', 'date': time.strftime('%Y-%m-%d %H:%M:%S')}, context=context) + self.write(cr, uid, move_ids, {'state': 'done', 'date': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT)}, context=context) for id in move_ids: wf_service.trg_trigger(uid, 'stock.move', id, cr) diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 83362ab5d6f..3c3967e2e2e 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -1252,8 +1252,8 @@ - - + +