[MERGE] sync with latest trunk

bzr revid: mat@openerp.com-20130515151044-1va9vpq71l2udlbq
This commit is contained in:
Martin Trigaux 2013-05-15 17:10:44 +02:00
commit 2e348533e2
26 changed files with 3447 additions and 74 deletions

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-03-07 08:37+0000\n"
"PO-Revision-Date: 2012-12-21 23:00+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2013-05-14 01:08+0000\n"
"Last-Translator: AhnJD <zion64@msn.com>\n"
"Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-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

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\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 <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2013-05-11 23:16+0000\n"
"Last-Translator: Damir Tušek <damir.tusek@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-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"

View File

@ -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])

View File

@ -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,

View File

@ -46,6 +46,9 @@
</search>
</field>
</record>
<!-- TODO: merge the 3 voucher form views of this file into a single view -->
<!-- Low priority view... If we open a voucher from a m2o, for example. -->
<record model="ir.ui.view" id="view_low_priority_payment_form">
<field name="name">account.voucher.payment.low.priority.form</field>
<field name="model">account.voucher</field>
@ -119,6 +122,7 @@
</field>
</record>
<!-- Supplier Payment -->
<record model="ir.ui.view" id="view_vendor_payment_form">
<field name="name">account.voucher.payment.form</field>
<field name="model">account.voucher</field>
@ -193,12 +197,16 @@
<field name="narration" colspan="2" nolabel="1"/>
</group>
<group>
<group col="4" attrs="{'invisible':[('is_multi_currency','=',False)]}">
<separator string="Currency Options" colspan="4"/>
<group col="2" attrs="{'invisible':[('is_multi_currency','=',False)]}">
<separator string="Currency Options" colspan="2"/>
<field name="is_multi_currency" invisible="1"/>
<field name="payment_rate" required="1" colspan="3" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
<label for="payment_rate" colspan="1"/>
<div>
<field name="payment_rate" required="1" class="oe_inline" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="payment_rate_currency_id" class="oe_inline" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
</div>
<field name="currency_help_label" colspan="2" nolabel="1" class="oe_grey"/>
<field name="paid_amount_in_company_currency" colspan="2" invisible="1"/>
</group>
<group col="2">
<separator string="Payment Options" colspan="2"/>
@ -282,6 +290,7 @@
<menuitem action="action_vendor_payment" icon="STOCK_JUSTIFY_FILL" sequence="12"
id="menu_action_vendor_payment" parent="account.menu_finance_payables"/>
<!-- Register Payment Form (old Pay Invoice wizard) -->
<record model="ir.ui.view" id="view_vendor_receipt_dialog_form">
<field name="name">account.voucher.receipt.dialog.form</field>
<field name="model">account.voucher</field>
@ -392,6 +401,7 @@
</record>
<!-- Customer Payment -->
<record model="ir.ui.view" id="view_vendor_receipt_form">
<field name="name">account.voucher.receipt.form</field>
<field name="model">account.voucher</field>
@ -474,8 +484,12 @@
</group>
<group col="4" attrs="{'invisible':[('is_multi_currency','=',False)]}">
<field name="is_multi_currency" invisible="1"/>
<field name="payment_rate" required="1" colspan="3" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
<label for="payment_rate" colspan="1"/>
<div>
<field name="payment_rate" required="1" class="oe_inline" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="payment_rate_currency_id" class="oe_inline" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
</div>
<field name="currency_help_label" colspan="2" nolabel="1" class="oe_grey"/>
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
</group>
<group>

View File

@ -147,8 +147,9 @@
</notebook>
<group col="4" invisible="1">
<field name="is_multi_currency" invisible="1"/>
<field name="payment_rate" required="1" on_change="onchange_rate(payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context)" colspan="3" invisible="1"/>
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency" invisible="1"/>
<field name="currency_help_label" invisible="1"/>
<field name="payment_rate" invisible="1"/>
<field name="payment_rate_currency_id" invisible="1"/>
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
</group>
</sheet>
@ -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"/>
<field name="paid_amount_in_company_currency" invisible="1"/>
<field name="currency_help_label" invisible="1"/>
</group>
</group>
<notebook>

View File

@ -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:

View File

@ -8,32 +8,32 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\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 <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2013-05-12 11:04+0000\n"
"Last-Translator: AhnJD <zion64@msn.com>\n"
"Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-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

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-03-07 08:37+0000\n"
"PO-Revision-Date: 2012-12-21 23:00+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2013-05-14 12:42+0000\n"
"Last-Translator: Paul Korotkov <korotkov.paul@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-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

906
addons/lunch/i18n/ko.po Normal file
View File

@ -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 <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-03-07 08:38+0000\n"
"PO-Revision-Date: 2013-05-12 07:26+0000\n"
"Last-Translator: AhnJD <zion64@msn.com>\n"
"Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-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 ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a lunch order. \n"
" </p>\n"
" <p>\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"
" </p>\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 ""
"<p>\n"
" Here you can see your cash moves.<br/>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"
" </p>\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 ""
"<p>\n"
" Here you can see every orders grouped by suppliers and by "
"date.\n"
" </p>\n"
" <p>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/terp-call-start.png\"/> to announce "
"that the order is ordered <br/>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/gtk-apply.png\"/> to announce that "
"the order is received <br/>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/gtk-cancel.png\"/> red X to announce "
"that the order isn't available\n"
" </p>\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 ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a product for lunch. \n"
" </p>\n"
" <p>\n"
" A product is defined by its name, category, price and "
"supplier.\n"
" </p>\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 ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a lunch category. \n"
" </p>\n"
" <p>\n"
" Here you can find every lunch categories for products.\n"
" </p>\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 ""
"<p>\n"
" Here you can see today's orders grouped by suppliers.\n"
" </p>\n"
" <p>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/terp-call-start.png\"/> to announce "
"that the order is ordered <br/>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/gtk-apply.png\"/> to announce that "
"the order is received <br/>\n"
" - Click on the <img "
"src=\"../../../web/static/src/img/icons/gtk-cancel.png\"/> to announce that "
"the order isn't available\n"
" </p>\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 ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a lunch alert. \n"
" </p>\n"
" <p>\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"
" </p>\n"
" <p>\n"
" Example: <br/>\n"
" - Recurency: Everyday<br/>\n"
" - Time interval: from 00h00 am to 11h59 pm<br/>\n"
" - Message: \"You must order before 10h30 am\"\n"
" </p>\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 ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a payment. \n"
" </p>\n"
" <p>\n"
" Here you can see the employees' payment. A payment is a cash "
"move from the employee to the company.\n"
" </p>\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 ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new payment. \n"
" </p>\n"
" <p>\n"
" A cashmove can either be an expense or a payment.<br/>\n"
" An expense is automatically created at the order "
"receipt.<br/>\n"
" A payment represents the employee reimbursement to the "
"company.\n"
" </p>\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 ""

1783
addons/mail/i18n/ko.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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:

View File

@ -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):

View File

@ -21,6 +21,7 @@
import portal
import mail_mail
import mail_message
import wizard
import acquirer

548
addons/portal/i18n/ko.po Normal file
View File

@ -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 <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-03-07 08:38+0000\n"
"PO-Revision-Date: 2013-05-14 01:13+0000\n"
"Last-Translator: AhnJD <zion64@msn.com>\n"
"Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-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 "<p>Access this document <a href=\"%s\">directly in OpenERP</a></p>"
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 ""
"<p>\n"
" Youd don't have unread company's news.\n"
" </p>\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 ""
"<p>\n"
" Youd don't have unread job offers.\n"
" </p>\n"
" "
msgstr ""
#. module: portal
#: model:ir.actions.client,help:portal.action_mail_archives_feeds_portal
msgid ""
"<p>\n"
" No message found and no message sent yet.\n"
" </p><p>\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"
" </p>\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 ""
"<p>Access your messages and personal documents through <a href=\"%s\">our "
"Customer Portal</a></p>"
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 <a href=\"%s\">Bank&Cash settings</a>"
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 ""
"<p>\n"
" <b>Good Job!</b> Your inbox is empty.\n"
" </p><p>\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"
" </p>\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"
"<form action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\" "
"target=\"_blank\">\n"
" <input type=\"hidden\" name=\"cmd\" value=\"_xclick\"/>\n"
" <input type=\"hidden\" name=\"business\" "
"value=\"${object.company_id.paypal_account}\"/>\n"
" <input type=\"hidden\" name=\"item_name\" "
"value=\"${object.company_id.name} ${kind.title()} ${reference}\"/>\n"
" <input type=\"hidden\" name=\"amount\" value=\"${amount}\"/>\n"
" <input type=\"hidden\" name=\"currency_code\" "
"value=\"${currency.name}\"/>\n"
" <input type=\"image\" name=\"submit\" "
"src=\"https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif\"/>\n"
"</form>\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 ""
"<p>\n"
" <b>No todo.</b>\n"
" </p><p>\n"
" When you process messages in your inbox, you can mark "
"some\n"
" as <i>todo</i>. From this menu, you can process all your "
"todo.\n"
" </p>\n"
" "
msgstr ""
#. module: portal
#: view:portal.payment.acquirer:0
msgid "Form Template"
msgstr ""
#. module: portal
#: view:share.wizard:0
msgid "Details"
msgstr ""

View File

@ -0,0 +1,57 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2011 OpenERP S.A (<http://www.openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
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)

View File

@ -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'])

View File

@ -5,14 +5,7 @@
<record id="portal_project_long_term_rule" model="ir.rule">
<field name="name">Project/Phase: portal users: public or portal and following</field>
<field name="model_id" ref="project_long_term.model_project_phase"/>
<field name="domain_force">['|',
('project_id.privacy_visibility', '=', 'public'),
'&amp;',
('project_id.privacy_visibility', 'in', ['portal', 'followers']),
'|',
('message_follower_ids','in', [user.partner_id.id]),
('user_id', '=', user.id),
]</field>
<field name="domain_force">[('project_id.privacy_visibility', 'in', ['public', 'portal'])]</field>
<field name="groups" eval="[(4, ref('portal.group_portal'))]"/>
</record>

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 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) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-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

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 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) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-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

View File

@ -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 <neps1192@gmail.com>\n"
"PO-Revision-Date: 2013-05-13 10:14+0000\n"
"Last-Translator: Ayhan KIZILTAN <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-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

View File

@ -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,

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-03-07 08:38+0000\n"
"PO-Revision-Date: 2012-12-21 23:00+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2013-05-13 10:10+0000\n"
"Last-Translator: serkan erdoğan <serd@37.com>\n"
"Language-Team: Turkish <tr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-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 "ıklama"
#. module: report_intrastat
#: report:account.invoice.intrastat:0

View File

@ -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)

View File

@ -1252,8 +1252,8 @@
<field name="location_dest_id" groups="stock.group_locations"/>
<field name="partner_id" context="{'contact_display':'partner'}"
groups="stock.group_locations"/>
<field name="date_expected" on_change="onchange_date(date,date_expected)"/>
<field name="date" groups="base.group_no_one"/>
<field name="date_expected" on_change="onchange_date(date,date_expected)" attrs="{'invisible': [('state', '=', 'done')]}"/>
<field name="date" attrs="{'invisible': [('state', '!=', 'done')]}"/>
</group>
<group string="Traceability"
groups="stock.group_tracking_lot">