[MERGE] Sync with trunk

bzr revid: tde@openerp.com-20130708082630-s26q27e5jw0a2592
This commit is contained in:
Thibault Delavallée 2013-07-08 10:26:30 +02:00
commit 8ae77f33cc
54 changed files with 2760 additions and 492 deletions

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2013-06-27 14:01+0000\n"
"PO-Revision-Date: 2013-07-02 06:32+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-06-28 05:42+0000\n"
"X-Generator: Launchpad (build 16681)\n"
"X-Launchpad-Export-Date: 2013-07-03 05:14+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -4707,7 +4707,7 @@ msgstr "Месяц"
#: code:addons/account/account.py:668
#, python-format
msgid "You cannot change the code of account which contains journal items!"
msgstr ""
msgstr "Нальзя изменить код счета который содержит проводки!"
#. module: account
#: field:account.config.settings,purchase_sequence_prefix:0
@ -4826,7 +4826,7 @@ msgstr "Отметьте, если хотите выводить счета с 0
#. module: account
#: field:account.move.reconcile,opening_reconciliation:0
msgid "Opening Entries Reconciliation"
msgstr ""
msgstr "Сверка проводок открытия"
#. module: account
#. openerp-web

File diff suppressed because it is too large Load Diff

View File

@ -366,12 +366,13 @@ class aged_trial_report(report_sxw.rml_parse, common_report_header):
return period or 0.0
def _get_partners(self,data):
# TODO: deprecated, to remove in trunk
if data['form']['result_selection'] == 'customer':
return 'Receivable Accounts'
return self._translate('Receivable Accounts')
elif data['form']['result_selection'] == 'supplier':
return 'Payable Accounts'
return self._translate('Payable Accounts')
elif data['form']['result_selection'] == 'customer_supplier':
return 'Receivable and Payable Accounts'
return self._translate('Receivable and Payable Accounts')
return ''
report_sxw.report_sxw('report.account.aged_trial_balance', 'res.partner',

View File

@ -147,7 +147,9 @@
<para style="terp_default_Centre_8">[[ data['form']['period_length'] ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ get_partners(data) ]]</para>
<para style="terp_default_Centre_8">Receivable Accounts[[ data['form']['result_selection'] == 'customer' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_8">Payable Accounts[[ data['form']['result_selection'] == 'supplier' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_8">Receivable and Payable Accounts[[ data['form']['result_selection'] == 'customer_supplier' or removeParentNode('para') ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ data['form']['direction_selection'] ]]</para>
@ -166,7 +168,8 @@
<para style="terp_tblheader_Details">Partners</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">[[ data['form']['direction_selection'] == 'future' and 'Due' or 'Not due' ]]</para>
<para style="terp_tblheader_Details_Right">Due[[ data['form']['direction_selection'] == 'future' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_tblheader_Details_Right">Not due[[ data['form']['direction_selection'] != 'future' and ' ' or removeParentNode('para') ]]</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">[[ data['form']['4']['name'] ]]</para>

View File

@ -211,8 +211,10 @@
</para>
<blockTable colWidths="130.0,80.0,100.0,140.0,90.0" style="Table8">
<tr>
<td><para style="terp_tblheader_General_Centre">[[ data['model']=='account.account' and 'Company'or removeParentNode('para') ]]</para>
<para style="terp_tblheader_General_Centre"> [[ data['model']=='ir.ui.menu' and 'Chart of Accounts' or removeParentNode('para') ]]</para></td>
<td>
<para style="terp_tblheader_General_Centre">Company[[ data['model']=='account.account' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_tblheader_General_Centre">Chart of Accounts[[ data['model']=='ir.ui.menu' and ' ' or removeParentNode('para') ]]</para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Fiscal Year</para>
</td>
@ -233,7 +235,11 @@
<td>
<para style="terp_default_Centre_8">[[ get_fiscalyear(data) or '' ]]</para>
</td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td>
<para style="terp_default_Centre_7">All[[ data['form']['display_account']=='all' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_7">With movements[[ data['form']['display_account']=='movement' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_7">With balance is not equal to 0[[ data['form']['display_account']=='not_zero' and ' ' or removeParentNode('para') ]]</para>
</td>
<td> <para style="terp_default_Centre_8">[[ data['form']['filter']=='filter_no' and get_filter(data) or removeParentNode('para') ]] </para>
<blockTable colWidths="60.0,60.0" style="Table5">[[ data['form']['filter']=='filter_date' or removeParentNode('blockTable') ]]
<tr>

View File

@ -220,8 +220,8 @@
</blockTable>
<blockTable colWidths="80.0,100,80.0,150.0,100.0" style="Table2">
<tr>
<td><para style="terp_tblheader_General_Centre">[[ data['model']=='account.journal.period' and 'Company' or removeParentNode('para') ]]</para>
<para style="terp_tblheader_General_Centre"> [[ data['model']=='ir.ui.menu' and 'Chart of Accounts' or removeParentNode('para') ]]</para></td>
<td><para style="terp_tblheader_General_Centre">Company[[ data['model']=='account.journal.period' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_tblheader_General_Centre">Chart of Accounts[[ data['model']=='ir.ui.menu' and ' ' or removeParentNode('para') ]]</para></td>
<td><para style="terp_tblheader_General_Centre">Fiscal Year</para></td>
<td><para style="terp_tblheader_General_Centre">Journals</para></td>
<td><para style="terp_tblheader_General_Centre">Filter By [[ data['form']['filter']!='filter_no' and get_filter(data) ]]</para></td>

View File

@ -360,9 +360,8 @@
<blockTable colWidths="110.0,110.0,110.0,110.0,128.0,93.0,110.0" style="Table1">
<tr>
<td>
<para style="terp_tblheader_General_Centre">[[ data['model']=='account.account' and 'Company' or removeParentNode('para') ]]</para>
<para style="terp_tblheader_General_Centre">[[ data['model']=='ir.ui.menu' and 'Chart of Accounts' or removeParentNode('para') ]]</para>
</td>
<para style="terp_tblheader_General_Centre">Company[[ data['model']=='account.account' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_tblheader_General_Centre">Chart of Accounts[[ data['model']=='ir.ui.menu' and ' ' or removeParentNode('para') ]]</para></td>
<td>
<para style="terp_tblheader_General_Centre">Fiscal Year</para>
</td>
@ -395,7 +394,9 @@
<para style="terp_default_Centre_7">[[', '.join([ lt or '' for lt in get_journal(data) ]) ]]</para>
</td>
<td>
<para style="terp_default_Centre_7">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para>
<para style="terp_default_Centre_7">All[[ data['form']['display_account']=='all' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_7">With movements[[ data['form']['display_account']=='movement' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_7">With balance is not equal to 0[[ data['form']['display_account']=='not_zero' and ' ' or removeParentNode('para') ]]</para>
</td>
<td>
<para style="terp_default_Centre_7">[[ data['form']['filter']=='filter_no' and get_filter(data) or removeParentNode('para') ]]</para>

View File

@ -189,11 +189,12 @@ class journal_print(report_sxw.rml_parse, common_report_header):
return data['form']['amount_currency']
def _get_sortby(self, data):
# TODO: deprecated, to remove in trunk
if self.sort_selection == 'date':
return 'Date'
return self._translate('Date')
elif self.sort_selection == 'ref':
return 'Reference Number'
return 'Date'
return self._translate('Reference Number')
return self._translate('Date')
report_sxw.report_sxw('report.account.journal.period.print', 'account.journal.period', 'addons/account/report/account_journal.rml', parser=journal_print, header='external')
report_sxw.report_sxw('report.account.journal.period.print.sale.purchase', 'account.journal.period', 'addons/account/report/account_journal_sale_purchase.rml', parser=journal_print, header='external')

View File

@ -186,8 +186,8 @@
</para>
<blockTable colWidths="85.0,80.0,80.0,120.0,70.0,100.0" style="Table2">
<tr>
<td><para style="terp_tblheader_General_Centre"> [[ data['model']=='account.journal.period'and 'Company' or removeParentNode('para') ]]</para>
<para style="terp_tblheader_General_Centre">[[ data['model']=='ir.ui.menu' and 'Chart of Accounts' or removeParentNode('para') ]]</para></td>
<td><para style="terp_tblheader_General_Centre">Company[[ data['model']=='account.journal.period'and ' ' or removeParentNode('para') ]]</para>
<para style="terp_tblheader_General_Centre">Chart of Accounts[[ data['model']=='ir.ui.menu' and ' ' or removeParentNode('para') ]]</para></td>
<td><para style="terp_tblheader_General_Centre">Fiscal Year</para></td>
<td><para style="terp_tblheader_General_Centre">Journal</para></td>
<td><para style="terp_tblheader_General_Centre">Period</para></td>
@ -199,8 +199,10 @@
<td><para style="terp_default_Centre_8">[[ get_fiscalyear(data) or '' ]]</para></td>
<td><para style="terp_default_Centre_8">[[ o.journal_id.name ]]</para></td>
<td><para style="terp_default_Centre_8">[[ o.period_id.name ]] </para></td>
<td><para style="terp_default_Centre_8">[[ get_sortby(data) ]]</para></td>
<td><para style="terp_default_Centre_8">[[ get_target_move(data) ]] </para></td>
<td>
<para style="terp_default_Centre_8">Date[[ data['form'].get('sort_selection', 'date') == 'date' and ' ' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_8">Reference Number[[ data['form'].get('sort_selection', 'date') == 'ref' and ' ' or removeParentNode('para') ]]</para>
</td>
</tr>
</blockTable>
<para style="P9">

View File

@ -267,12 +267,13 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header):
return result_tmp + result_init
def _get_partners(self):
# TODO: deprecated, to remove in trunk
if self.result_selection == 'customer':
return 'Receivable Accounts'
return _('Receivable Accounts')
elif self.result_selection == 'supplier':
return 'Payable Accounts'
return _('Payable Accounts')
elif self.result_selection == 'customer_supplier':
return 'Receivable and Payable Accounts'
return _('Receivable and Payable Accounts')
return ''
def _sum_currency_amount_account(self, account, form):

View File

@ -423,7 +423,9 @@
</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ get_partners() ]]</para>
<para style="terp_default_Centre_8">Receivable Accounts[[ data['form'].get('result_selection', 'customer') == 'customer' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_8">Payable Accounts[[ data['form'].get('result_selection', 'customer') == 'supplier' or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_8">Receivable and Payable Accounts[[ data['form'].get('result_selection', 'customer') == 'customer_supplier' or removeParentNode('para') ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ get_target_move(data) ]]</para>

View File

@ -84,7 +84,7 @@ openerp.account.quickadd = function (instance) {
},
search_by_journal_period: function() {
var self = this;
var domain = [];
var domain = ['|',['debit', '!=', 0], ['credit', '!=', 0]];
if (self.current_journal !== null) domain.push(["journal_id", "=", self.current_journal]);
if (self.current_period !== null) domain.push(["period_id", "=", self.current_period]);
self.last_context["journal_id"] = self.current_journal === null ? false : self.current_journal;

View File

@ -175,7 +175,7 @@ class account_common_report(osv.osv_memory):
data['form'][field] = data['form'][field][0]
used_context = self._build_contexts(cr, uid, ids, data, context=context)
data['form']['periods'] = used_context.get('periods', False) and used_context['periods'] or []
data['form']['used_context'] = used_context
data['form']['used_context'] = dict(used_context, lang=context.get('lang', 'en_US'))
return self._print_report(cr, uid, ids, data, context=context)

View File

@ -248,9 +248,12 @@
<field name="model">account.analytic.default</field>
<field name="inherit_id" ref="account_analytic_default.view_account_analytic_default_tree"/>
<field name="arch" type="xml">
<field name="analytic_id" required="1" position="replace">
<xpath expr="//field[@name='analytic_id']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='analytic_id']" position="after">
<field name="analytics_id" required="1"/>
</field>
</xpath>
</field>
</record>

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: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2010-12-21 14:22+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"PO-Revision-Date: 2013-06-30 16:08+0000\n"
"Last-Translator: Hung Tran <vanda6688@yahoo.com>\n"
"Language-Team: Vietnamese <vi@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-16 05:42+0000\n"
"X-Generator: Launchpad (build 16532)\n"
"X-Launchpad-Export-Date: 2013-07-01 05:14+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: account_cancel
#: view:account.invoice:0
msgid "Cancel"
msgstr ""
msgstr "Hủy bỏ"
#~ msgid "Account Cancel"
#~ msgstr "Hủy bỏ Tài khoản"

View File

@ -42,7 +42,7 @@ class Controller(http.Controller):
}
return config
@http.route('/auth_signup/retrieve', type='json', auth="user")
@http.route('/auth_signup/retrieve', type='json', auth="none")
def retrieve(self, dbname, token):
""" retrieve the user info (name, login or email) corresponding to a signup token """
registry = RegistryManager.get(dbname)
@ -51,7 +51,7 @@ class Controller(http.Controller):
user_info = res_partner.signup_retrieve_info(cr, openerp.SUPERUSER_ID, token)
return user_info
@http.route('/auth_signup/signup', type='json', auth="user")
@http.route('/auth_signup/signup', type='json', auth="none")
def signup(self, dbname, token, **values):
""" sign up a user (new or existing)"""
try:
@ -66,7 +66,7 @@ class Controller(http.Controller):
res_users = registry.get('res.users')
res_users.signup(cr, openerp.SUPERUSER_ID, values, token)
@http.route('/auth_signup/reset_password', type='json', auth="user")
@http.route('/auth_signup/reset_password', type='json', auth="none")
def reset_password(self, dbname, login):
""" retrieve user, and perform reset password """
registry = RegistryManager.get(dbname)

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: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-04-16 04:33+0000\n"
"Last-Translator: Key <key.diagram@gmail.com>\n"
"PO-Revision-Date: 2013-07-02 08:11+0000\n"
"Last-Translator: DWXXX <Unknown>\n"
"Language-Team: Chinese (Simplified) <zh_CN@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-04-17 05:15+0000\n"
"X-Generator: Launchpad (build 16567)\n"
"X-Launchpad-Export-Date: 2013-07-03 05:14+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: auth_signup
#: field:res.partner,signup_type:0
@ -29,7 +29,7 @@ msgstr "允许外部用户登录"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:19
#, python-format
msgid "Confirm Password"
msgstr "确认密码"
@ -37,7 +37,7 @@ msgstr "确认密码"
#. module: auth_signup
#: help:base.config.settings,auth_signup_uninvited:0
msgid "If unchecked, only invited users may sign up."
msgstr ""
msgstr "如果不勾选,只有被邀请用户才能注册。"
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_base_config_settings
@ -45,15 +45,15 @@ msgid "base.config.settings"
msgstr "base.config.settings"
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:265
#: code:addons/auth_signup/res_users.py:266
#, python-format
msgid "Cannot send email: user has no email address."
msgstr ""
msgstr "无法发送邮件:用户邮件地址为空。"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:28
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:27
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:31
#, python-format
msgid "Reset password"
msgstr "重设密码"
@ -70,7 +70,7 @@ msgstr "重置密码"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
#, python-format
msgid "Please enter a password and confirm it."
msgstr "请输入密码并确认。"
@ -78,12 +78,12 @@ msgstr "请输入密码并确认。"
#. module: auth_signup
#: view:res.users:0
msgid "Send an email to the user to (re)set their password."
msgstr ""
msgstr "向用户发送重置密码邮件。"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:26
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:29
#, python-format
msgid "Sign Up"
msgstr "注册"
@ -119,10 +119,10 @@ msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
#, python-format
msgid "Please enter a name."
msgstr ""
msgstr "请输入名字"
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_users
@ -136,10 +136,10 @@ msgstr "注册 URL"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
#, python-format
msgid "Please enter a username."
msgstr ""
msgstr "请输入您的用户名"
#. module: auth_signup
#: selection:res.users,state:0
@ -147,7 +147,7 @@ msgid "Active"
msgstr "启用"
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:269
#: code:addons/auth_signup/res_users.py:270
#, python-format
msgid ""
"Cannot send email: no outgoing email server configured.\n"
@ -170,10 +170,10 @@ msgstr "姓名"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
#: code:addons/auth_signup/static/src/js/auth_signup.js:173
#, python-format
msgid "Please enter a username or email address."
msgstr ""
msgstr "请输入用户名和邮件地址"
#. module: auth_signup
#: selection:res.users,state:0
@ -199,7 +199,7 @@ msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25
#, python-format
msgid "Log in"
msgstr "登录"
@ -211,35 +211,35 @@ msgstr "注册令牌( Token )是有效的"
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:108
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
#: code:addons/auth_signup/static/src/js/auth_signup.js:167
#: code:addons/auth_signup/static/src/js/auth_signup.js:123
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
#: code:addons/auth_signup/static/src/js/auth_signup.js:173
#, python-format
msgid "Login"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:94
#: code:addons/auth_signup/static/src/js/auth_signup.js:97
#, python-format
msgid "Invalid signup token"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
#: code:addons/auth_signup/static/src/js/auth_signup.js:123
#, python-format
msgid "Passwords do not match; please retype them."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:108
#: code:addons/auth_signup/static/src/js/auth_signup.js:167
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
#, python-format
msgid "No database selected !"
msgstr ""
@ -256,7 +256,7 @@ msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:27
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:30
#, python-format
msgid "Back to Login"
msgstr "返回登录页面"
@ -266,12 +266,12 @@ msgstr "返回登录页面"
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
#, python-format
msgid "Sign up"
msgstr ""
msgstr "注册"
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_partner
msgid "Partner"
msgstr "业务伙伴"
msgstr "合作伙伴"
#. module: auth_signup
#: field:res.partner,signup_token:0

View File

@ -1510,7 +1510,7 @@ rule or repeating pattern of time to exclude from the recurring rule."),
continue
if r['class']=='private':
for f in r.keys():
if f not in ('id','date','date_deadline','duration','user_id','state'):
if f not in ('id','date','date_deadline','duration','user_id','state','interval','count'):
if isinstance(r[f], list):
r[f] = []
else:

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: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-11-28 16:50+0000\n"
"Last-Translator: Joshua Jan(SHINEIT) <popkar77@gmail.com>\n"
"PO-Revision-Date: 2013-06-29 05:34+0000\n"
"Last-Translator: David.Xu <xzxyxu@gmail.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-16 05:45+0000\n"
"X-Generator: Launchpad (build 16532)\n"
"X-Launchpad-Export-Date: 2013-06-30 05:56+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: base_calendar
#: selection:calendar.alarm,trigger_related:0
@ -42,7 +42,7 @@ msgstr "这属性定义循环日程的日期/时间异常列表。"
#: selection:calendar.todo,rrule_type:0
#: selection:crm.meeting,rrule_type:0
msgid "Week(s)"
msgstr ""
msgstr ""
#. module: base_calendar
#: field:calendar.event,we:0
@ -248,7 +248,7 @@ msgid "To"
msgstr "到"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:1260
#: code:addons/base_calendar/base_calendar.py:1262
#, python-format
msgid "Error!"
msgstr "错误!"
@ -300,7 +300,7 @@ msgstr "与会者的参与状况"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Mail To"
msgstr ""
msgstr "收信人"
#. module: base_calendar
#: field:crm.meeting,name:0
@ -361,9 +361,9 @@ msgstr "保存复杂的摘要(消息数量,……等)。为了插入到看板视
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:399
#: code:addons/base_calendar/base_calendar.py:441
#: code:addons/base_calendar/base_calendar.py:1013
#: code:addons/base_calendar/base_calendar.py:1015
#: code:addons/base_calendar/base_calendar.py:1460
#: code:addons/base_calendar/base_calendar.py:1017
#: code:addons/base_calendar/base_calendar.py:1462
#, python-format
msgid "Warning!"
msgstr "警告!"
@ -478,7 +478,7 @@ msgstr "日期"
#. module: base_calendar
#: field:crm.meeting,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "关注者"
#. module: base_calendar
#: field:calendar.event,location:0
@ -522,7 +522,7 @@ msgid "Event alarm information"
msgstr "事件提醒信息"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:1015
#: code:addons/base_calendar/base_calendar.py:1017
#, python-format
msgid "Count cannot be negative or 0."
msgstr ""
@ -530,21 +530,21 @@ msgstr ""
#. module: base_calendar
#: field:crm.meeting,create_date:0
msgid "Creation Date"
msgstr ""
msgstr "创建日期"
#. module: base_calendar
#: view:crm.meeting:0
#: model:ir.model,name:base_calendar.model_crm_meeting
#: model:res.request.link,name:base_calendar.request_link_meeting
msgid "Meeting"
msgstr ""
msgstr "会议"
#. module: base_calendar
#: selection:calendar.event,rrule_type:0
#: selection:calendar.todo,rrule_type:0
#: selection:crm.meeting,rrule_type:0
msgid "Month(s)"
msgstr ""
msgstr ""
#. module: base_calendar
#: view:calendar.event:0
@ -566,7 +566,7 @@ msgstr "Caldav 服务的URL"
#. module: base_calendar
#: model:ir.model,name:base_calendar.model_mail_wizard_invite
msgid "Invite wizard"
msgstr ""
msgstr "邀请向导"
#. module: base_calendar
#: selection:calendar.event,month_list:0
@ -590,7 +590,7 @@ msgstr "周四"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Meeting Details"
msgstr ""
msgstr "会议详情"
#. module: base_calendar
#: field:calendar.attendee,child_ids:0
@ -601,21 +601,21 @@ msgstr "代表人"
#: code:addons/base_calendar/crm_meeting.py:102
#, python-format
msgid "The following contacts have no email address :"
msgstr ""
msgstr "下列联系人没有电子邮件地址:"
#. module: base_calendar
#: selection:calendar.event,rrule_type:0
#: selection:calendar.todo,rrule_type:0
#: selection:crm.meeting,rrule_type:0
msgid "Year(s)"
msgstr ""
msgstr ""
#. module: base_calendar
#: view:crm.meeting.type:0
#: model:ir.actions.act_window,name:base_calendar.action_crm_meeting_type
#: model:ir.ui.menu,name:base_calendar.menu_crm_meeting_type
msgid "Meeting Types"
msgstr ""
msgstr "会议类型"
#. module: base_calendar
#: field:calendar.event,create_date:0
@ -633,7 +633,7 @@ msgstr "全员可见"
#. module: base_calendar
#: view:crm.meeting:0
msgid "hours"
msgstr ""
msgstr "小时"
#. module: base_calendar
#: field:calendar.attendee,partner_id:0
@ -655,7 +655,7 @@ msgstr "重复直到"
#. module: base_calendar
#: view:crm.meeting:0
msgid "Options"
msgstr ""
msgstr "选项"
#. module: base_calendar
#: selection:calendar.event,byday:0
@ -694,7 +694,7 @@ msgstr "周二"
#. module: base_calendar
#: field:crm.meeting,categ_ids:0
msgid "Tags"
msgstr ""
msgstr "标签"
#. module: base_calendar
#: view:calendar.event:0
@ -741,7 +741,7 @@ msgid "Declined"
msgstr "已拒绝"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:1460
#: code:addons/base_calendar/base_calendar.py:1462
#, python-format
msgid "Group by date is not supported, use the calendar view instead."
msgstr ""
@ -1200,7 +1200,7 @@ msgid "Select Weekdays"
msgstr ""
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:1519
#: code:addons/base_calendar/base_calendar.py:1521
#: selection:calendar.attendee,availability:0
#: selection:calendar.event,show_as:0
#: selection:calendar.todo,show_as:0
@ -1453,7 +1453,7 @@ msgid "Weekday"
msgstr "工作日"
#. module: base_calendar
#: code:addons/base_calendar/base_calendar.py:1013
#: code:addons/base_calendar/base_calendar.py:1015
#, python-format
msgid "Interval cannot be negative."
msgstr ""

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: 2012-12-03 16:03+0000\n"
"PO-Revision-Date: 2011-07-20 09:55+0000\n"
"Last-Translator: OpenBMS JSC <Unknown>\n"
"PO-Revision-Date: 2013-06-30 16:09+0000\n"
"Last-Translator: Hung Tran <vanda6688@yahoo.com>\n"
"Language-Team: Vietnamese <vi@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-16 05:49+0000\n"
"X-Generator: Launchpad (build 16532)\n"
"X-Launchpad-Export-Date: 2013-07-01 05:14+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: base_crypt
#: model:ir.model,name:base_crypt.model_res_users
msgid "Users"
msgstr ""
msgstr "Người dùng"
#, python-format
#~ msgid "Error"

View File

@ -0,0 +1,33 @@
# Vietnamese translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-06-30 16:10+0000\n"
"Last-Translator: Hung Tran <vanda6688@yahoo.com>\n"
"Language-Team: Vietnamese <vi@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-07-01 05:14+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: claim_from_delivery
#: view:stock.picking.out:0
msgid "Claims"
msgstr "Các khiếu nại"
#. module: claim_from_delivery
#: model:res.request.link,name:claim_from_delivery.request_link_claim_from_delivery
msgid "Delivery Order"
msgstr ""
#. module: claim_from_delivery
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
msgid "Claim From Delivery"
msgstr ""

View File

@ -0,0 +1,37 @@
# 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: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-06-28 09:32+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-06-30 05:56+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to add a contact in your address book.\n"
" </p><p>\n"
" OpenERP helps you easily track all activities related to\n"
" a customer; discussions, history of business opportunities,\n"
" documents, etc.\n"
" </p>\n"
" "
msgstr ""
#. module: contacts
#: model:ir.actions.act_window,name:contacts.action_contacts
#: model:ir.ui.menu,name:contacts.menu_contacts
msgid "Contacts"
msgstr "연락처"

View File

@ -96,13 +96,11 @@ class crm_lead(base_stage, format_address, osv.osv):
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
if not vals.get('stage_id'):
ctx = context.copy()
if vals.get('section_id'):
ctx['default_section_id'] = vals['section_id']
if vals.get('type'):
ctx['default_type'] = vals['type']
vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx)
if vals.get('type') and not context.get('default_type'):
context['default_type'] = vals.get('type')
if vals.get('section_id') and not context.get('default_section_id'):
context['default_section_id'] = vals.get('section_id')
# context: no_log, because subtype already handle this
create_context = dict(context, mail_create_nolog=True)
return super(crm_lead, self).create(cr, uid, vals, context=create_context)

View File

@ -58,7 +58,7 @@
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_inbound_phone_tree_view"/>
<field name="domain">[]</field>
<field name="context">{}</field>
<field name="context">{'default_state': 'done'}</field>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">

View File

@ -56,7 +56,7 @@ class res_partner(osv.osv):
default.update({'opportunity_ids': [], 'meeting_ids' : [], 'phonecall_ids' : []})
super(res_partner, self).copy(cr, uid, record_id, default, context)
return super(res_partner, self).copy(cr, uid, record_id, default, context)
def redirect_partner_form(self, cr, uid, partner_id, context=None):
search_view = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'view_res_partner_filter')

View File

@ -0,0 +1,49 @@
# 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: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-06-28 09:31+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-06-30 05:56+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: decimal_precision
#: field:decimal.precision,digits:0
msgid "Digits"
msgstr "자리수"
#. module: decimal_precision
#: model:ir.actions.act_window,name:decimal_precision.action_decimal_precision_form
#: model:ir.ui.menu,name:decimal_precision.menu_decimal_precision_form
msgid "Decimal Accuracy"
msgstr "소숫점 정확성"
#. module: decimal_precision
#: field:decimal.precision,name:0
msgid "Usage"
msgstr "사용량"
#. module: decimal_precision
#: sql_constraint:decimal.precision:0
msgid "Only one value can be defined for each given usage!"
msgstr ""
#. module: decimal_precision
#: view:decimal.precision:0
msgid "Decimal Precision"
msgstr "소수점 정확성"
#. module: decimal_precision
#: model:ir.model,name:decimal_precision.model_decimal_precision
msgid "decimal.precision"
msgstr "decimal.precision"

View File

@ -66,7 +66,7 @@ class document_page(osv.osv):
'create_date': fields.datetime("Created on", select=True, readonly=True),
'create_uid': fields.many2one('res.users', 'Author', select=True, readonly=True),
'write_date': fields.datetime("Modification Date", select=True, readonly=True),
'write_uid': fields.many2one('res.users', "Last Contributor", select=True),
'write_uid': fields.many2one('res.users', "Last Contributor", select=True, readonly=True),
}
_defaults = {
'type':'content',

322
addons/fetchmail/i18n/ko.po Normal file
View File

@ -0,0 +1,322 @@
# 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: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-06-28 09:25+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-06-30 05:56+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: fetchmail
#: selection:fetchmail.server,state:0
msgid "Confirmed"
msgstr "확정됨"
#. module: fetchmail
#: field:fetchmail.server,server:0
msgid "Server Name"
msgstr "서버 이름"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "POP"
msgstr "POP"
#. module: fetchmail
#: help:fetchmail.server,priority:0
msgid "Defines the order of processing, lower values mean higher priority"
msgstr ""
#. module: fetchmail
#: help:fetchmail.server,is_ssl:0
msgid ""
"Connections are encrypted with SSL/TLS through a dedicated port (default: "
"IMAPS=993, POP3S=995)"
msgstr ""
#. module: fetchmail
#: field:fetchmail.server,attach:0
msgid "Keep Attachments"
msgstr "첨부파일 보관"
#. module: fetchmail
#: field:fetchmail.server,is_ssl:0
msgid "SSL/TLS"
msgstr "SSL/TLS"
#. module: fetchmail
#: help:fetchmail.server,original:0
msgid ""
"Whether a full original copy of each email should be kept for referenceand "
"attached to each processed message. This will usually double the size of "
"your message database."
msgstr ""
#. module: fetchmail
#: view:base.config.settings:0
msgid "Configure the incoming email gateway"
msgstr "수신 이메일 게이트웨이 구성"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Fetch Now"
msgstr "지금 가져오기"
#. module: fetchmail
#: model:ir.actions.act_window,name:fetchmail.action_email_server_tree
#: model:ir.ui.menu,name:fetchmail.menu_action_fetchmail_server_tree
msgid "Incoming Mail Servers"
msgstr "수신 메일 서버"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Server type IMAP."
msgstr "서버유형 IMAP."
#. module: fetchmail
#: view:fetchmail.server:0
msgid "POP/IMAP Servers"
msgstr "POP/IMAP 서버"
#. module: fetchmail
#: selection:fetchmail.server,type:0
msgid "Local Server"
msgstr "로컬 서버"
#. module: fetchmail
#: field:fetchmail.server,state:0
msgid "Status"
msgstr "상태"
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_fetchmail_server
msgid "POP/IMAP Server"
msgstr "POP/IMAP 서버"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Reset Confirmation"
msgstr ""
#. module: fetchmail
#: view:fetchmail.server:0
msgid "SSL"
msgstr "SSL"
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_fetchmail_config_settings
msgid "fetchmail.config.settings"
msgstr "fetchmail.config.settings"
#. module: fetchmail
#: field:fetchmail.server,date:0
msgid "Last Fetch Date"
msgstr "마지막으로 가져온 날짜"
#. module: fetchmail
#: help:fetchmail.server,action_id:0
msgid ""
"Optional custom server action to trigger for each incoming mail, on the "
"record that was created or updated by this mail"
msgstr ""
#. module: fetchmail
#: view:fetchmail.server:0
msgid "# of emails"
msgstr "이메일 개수"
#. module: fetchmail
#: field:fetchmail.server,original:0
msgid "Keep Original"
msgstr "원본 유지"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Advanced Options"
msgstr "고급 옵션"
#. module: fetchmail
#: view:fetchmail.server:0
#: field:fetchmail.server,configuration:0
msgid "Configuration"
msgstr "구성"
#. module: fetchmail
#: field:fetchmail.server,script:0
msgid "Script"
msgstr "스크립트"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Incoming Mail Server"
msgstr "수신 메일 서버"
#. module: fetchmail
#: code:addons/fetchmail/fetchmail.py:163
#, python-format
msgid "Connection test failed!"
msgstr "연결 시험에 실패함!"
#. module: fetchmail
#: field:fetchmail.server,user:0
msgid "Username"
msgstr "사용자명"
#. module: fetchmail
#: help:fetchmail.server,server:0
msgid "Hostname or IP of the mail server"
msgstr "메일서버의 호스트이름 또는 IP"
#. module: fetchmail
#: field:fetchmail.server,name:0
msgid "Name"
msgstr "이름"
#. module: fetchmail
#: code:addons/fetchmail/fetchmail.py:163
#, python-format
msgid ""
"Here is what we got instead:\n"
" %s."
msgstr ""
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Test & Confirm"
msgstr "시험 & 확정"
#. module: fetchmail
#: field:fetchmail.server,action_id:0
msgid "Server Action"
msgstr "서버 동작"
#. module: fetchmail
#: field:mail.mail,fetchmail_server_id:0
msgid "Inbound Mail Server"
msgstr "수신메일서버"
#. module: fetchmail
#: field:fetchmail.server,message_ids:0
#: model:ir.actions.act_window,name:fetchmail.act_server_history
msgid "Messages"
msgstr "메시지"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Search Incoming Mail Servers"
msgstr "수신메일서버 검색"
#. module: fetchmail
#: field:fetchmail.server,active:0
msgid "Active"
msgstr "활성"
#. module: fetchmail
#: help:fetchmail.server,attach:0
msgid ""
"Whether attachments should be downloaded. If not enabled, incoming emails "
"will be stripped of any attachments before being processed"
msgstr ""
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_mail_mail
msgid "Outgoing Mails"
msgstr "발신 이메일"
#. module: fetchmail
#: field:fetchmail.server,priority:0
msgid "Server Priority"
msgstr "서버 우선 순위"
#. module: fetchmail
#: selection:fetchmail.server,type:0
msgid "IMAP Server"
msgstr "IMAP 서버"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "IMAP"
msgstr "IMAP"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Server type POP."
msgstr ""
#. module: fetchmail
#: field:fetchmail.server,password:0
msgid "Password"
msgstr "암호"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Actions to Perform on Incoming Mails"
msgstr "수신 메일에 실행할 동작"
#. module: fetchmail
#: field:fetchmail.server,type:0
msgid "Server Type"
msgstr "서버 유형"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Login Information"
msgstr "로그인 정보"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Server Information"
msgstr "서버 정보"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "If SSL required."
msgstr "SSL이 필요할 경우."
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Advanced"
msgstr "고급"
#. module: fetchmail
#: view:fetchmail.server:0
msgid "Server & Login"
msgstr "서버 & 로그인"
#. module: fetchmail
#: help:fetchmail.server,object_id:0
msgid ""
"Process each incoming mail as part of a conversation corresponding to this "
"document type. This will create new documents for new conversations, or "
"attach follow-up emails to the existing conversations (documents)."
msgstr ""
#. module: fetchmail
#: field:fetchmail.server,object_id:0
msgid "Create a New Record"
msgstr ""
#. module: fetchmail
#: selection:fetchmail.server,state:0
msgid "Not Confirmed"
msgstr "확정되지 않음"
#. module: fetchmail
#: selection:fetchmail.server,type:0
msgid "POP Server"
msgstr "POP 서버"
#. module: fetchmail
#: field:fetchmail.server,port:0
msgid "Port"
msgstr "포트"

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-06-27 16:03+0000\n"
"PO-Revision-Date: 2013-01-04 11:38+0000\n"
"Last-Translator: Roc Wu <irocwu@gmail.com>\n"
"PO-Revision-Date: 2013-06-29 04:39+0000\n"
"Last-Translator: David.Xu <xzxyxu@gmail.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@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-06-28 05:42+0000\n"
"X-Generator: Launchpad (build 16681)\n"
"X-Launchpad-Export-Date: 2013-06-30 05:56+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: google_drive
#: model:ir.ui.menu,name:google_drive.menu_google_drive_config
msgid "Google Drive configuration"
msgstr ""
msgstr "Google Drive配置"
#. module: google_drive
#: code:addons/google_drive/google_drive.py:48
@ -50,7 +50,7 @@ msgstr ""
#. module: google_drive
#: view:google.drive.config:0
msgid "To create a new filter:"
msgstr ""
msgstr "创建新过滤器"
#. module: google_drive
#: model:ir.model,name:google_drive.model_base_config_settings
@ -78,12 +78,12 @@ msgstr ""
#: code:addons/google_drive/google_drive.py:150
#, python-format
msgid "Incorrect URL!"
msgstr ""
msgstr "错误的URL"
#. module: google_drive
#: view:base.config.settings:0
msgid "Configure your templates"
msgstr ""
msgstr "配置你的模版"
#. module: google_drive
#: help:google.drive.config,name_template:0
@ -132,7 +132,7 @@ msgstr ""
#: code:addons/google_drive/google_drive.py:150
#, python-format
msgid "Please enter a valid Google Document URL."
msgstr ""
msgstr "请输入一个有效的Google文档URL"
#. module: google_drive
#: field:google.drive.config,google_drive_client_id:0
@ -149,7 +149,7 @@ msgstr ""
#. module: google_drive
#: field:google.drive.config,filter_id:0
msgid "Filter"
msgstr ""
msgstr "过滤器"
#. module: google_drive
#: field:google.drive.config,name_template:0
@ -222,7 +222,7 @@ msgstr ""
#. module: google_drive
#: field:google.drive.config,name:0
msgid "Template Name"
msgstr ""
msgstr "模板名称"
#. module: google_drive
#: constraint:google.drive.config:0
@ -243,7 +243,7 @@ msgstr ""
#. module: google_drive
#: field:base.config.settings,google_drive_authorization_code:0
msgid "Authorization Code"
msgstr ""
msgstr "授权码"
#. module: google_drive
#: model:ir.model,name:google_drive.model_google_drive_config

View File

@ -86,7 +86,7 @@
</group>
<notebook>
<page string="Description">
<field name="line_ids" context="{'currency_id': currency_id, 'default_analytic_account': context.get('analytic_account')}">
<field name="line_ids" context="{'currency_id': currency_id, 'default_analytic_account': context.get('analytic_account', '')}">
<form string="Expense Lines" version="7.0">
<group>
<group>

View File

@ -220,6 +220,7 @@ class hr_applicant(osv.Model):
_defaults = {
'active': lambda *a: 1,
'user_id': lambda s, cr, uid, c: uid,
'email_from': lambda s, cr, uid, c: s._get_default_email(cr, uid, c),
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
'department_id': lambda s, cr, uid, c: s._get_default_department_id(cr, uid, c),
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'hr.applicant', context=c),
@ -231,13 +232,11 @@ class hr_applicant(osv.Model):
}
def onchange_job(self, cr, uid, ids, job, context=None):
result = {}
if job:
job_obj = self.pool.get('hr.job')
result['department_id'] = job_obj.browse(cr, uid, job, context=context).department_id.id
return {'value': result}
return {'value': {'department_id': False}}
job_record = self.pool.get('hr.job').browse(cr, uid, job, context=context)
if job_record and job_record.department_id:
return {'value': {'department_id': job_record.department_id.id}}
return {}
def onchange_department_id(self, cr, uid, ids, department_id=False, context=None):
obj_recru_stage = self.pool.get('hr.recruitment.stage')
@ -381,6 +380,11 @@ class hr_applicant(osv.Model):
return super(hr_applicant, self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context)
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
if vals.get('department_id') and not context.get('default_department_id'):
context['default_department_id'] = vals.get('department_id')
obj_id = super(hr_applicant, self).create(cr, uid, vals, context=context)
applicant = self.browse(cr, uid, obj_id, context=context)
if applicant.job_id:

View File

@ -183,6 +183,7 @@
<filter string="Next Actions" context="{'invisible_next_action':False, 'invisible_next_date':False}"
domain="[('date_action','&lt;&gt;',False)]" help="Filter and view on next actions and date"/>
<field name="job_id"/>
<field name="department_id"/>
<field name="user_id"/>
<separator/>
<field name="categ_ids"/>

View File

@ -173,7 +173,10 @@ class account_analytic_line(osv.osv):
data = {}
journal_types = {}
price = 0.0
for line in self.pool.get('account.analytic.line').browse(cr, uid, ids, context=context):
price += line.amount*-1
line_name = line.name
if line.journal_id.type not in journal_types:
journal_types[line.journal_id.type] = set()
journal_types[line.journal_id.type].add(line.account_id.id)
@ -204,7 +207,6 @@ class account_analytic_line(osv.osv):
'date_due': date_due,
'fiscal_position': account.partner_id.property_account_position.id
}
context2 = context.copy()
context2['lang'] = partner.lang
# set company_id in context, so the correct default journal will be selected
@ -225,36 +227,42 @@ class account_analytic_line(osv.osv):
if data.get('product'):
product_id = data['product'][0]
product = product_obj.browse(cr, uid, product_id, context=context2)
if not product:
raise osv.except_osv(_('Error!'), _('There is no product defined. Please select one or force the product through the wizard.'))
factor = invoice_factor_obj.browse(cr, uid, factor_id, context=context2)
factor_name = product_obj.name_get(cr, uid, [product_id], context=context2)[0][1]
if factor.customer_name:
factor_name += ' - ' + factor.customer_name
ctx = context.copy()
ctx.update({'uom':uom})
price = self._get_invoice_price(cr, uid, account, product_id, user_id, qty, ctx)
general_account = product.property_account_income or product.categ_id.property_account_income_categ
if not general_account:
raise osv.except_osv(_("Configuration Error!"), _("Please define income account for product '%s'.") % product.name)
taxes = product.taxes_id or general_account.tax_ids
tax = fiscal_pos_obj.map_tax(cr, uid, account.partner_id.property_account_position, taxes)
factor_name = factor.customer_name and line_name + ' - ' + factor.customer_name or line_name
curr_line = {
'price_unit': price,
'quantity': qty,
'discount':factor.factor,
'invoice_line_tax_id': [(6,0,tax )],
'discount': factor.factor,
'invoice_id': last_invoice,
'name': factor_name,
'product_id': product_id,
'invoice_line_tax_id': [(6,0,tax)],
'uos_id': uom,
'account_id': general_account.id,
'account_analytic_id': account.id,
}
if product:
factor_name = product_obj.name_get(cr, uid, [product_id], context=context2)[0][1]
if factor.customer_name:
factor_name += ' - ' + factor.customer_name
ctx = context.copy()
ctx.update({'uom': uom})
# check force product
if data.get('product'):
price = self._get_invoice_price(cr, uid, account, product_id, user_id, qty, ctx)
general_account = product.property_account_income or product.categ_id.property_account_income_categ
if not general_account:
raise osv.except_osv(_("Configuration Error!"), _("Please define income account for product '%s'.") % product.name)
taxes = product.taxes_id or general_account.tax_ids
tax = fiscal_pos_obj.map_tax(cr, uid, account.partner_id.property_account_position, taxes)
curr_line.update({
'price_unit': price,
'invoice_line_tax_id': [(6,0,tax )],
'name': factor_name,
'product_id': product_id,
'invoice_line_tax_id': [(6,0,tax)],
'account_id': general_account.id,
})
#
# Compute for lines

View File

@ -93,7 +93,6 @@
help="Accepted Ideas" />
<group expand="0" string="Group By...">
<filter string="Creator" help="By Responsible" context="{'group_by': 'user_id'}"/>
<filter string="Category" help="By Category" context="{'group_by': 'category_ids'}"/>
<filter string="Status" help="By State" context="{'group_by': 'state'}"/>
</group>
</search>

View File

@ -117,6 +117,8 @@ class account_coda_import(osv.osv_memory):
# and so a 'like' operator would return the first account number in the database which matches.
cr.execute("select id from res_partner_bank where replace(replace(acc_number,' ',''),'-','') = %s", (statement['acc_number'],))
bank_ids = [id[0] for id in cr.fetchall()]
# Filter bank accounts which are not allowed
bank_ids = self.pool.get('res.partner.bank').search(cr, uid, [('id', 'in', bank_ids)])
if bank_ids and len(bank_ids) > 0:
bank_accs = self.pool.get('res.partner.bank').browse(cr, uid, bank_ids)
for bank_acc in bank_accs:
@ -248,7 +250,7 @@ class account_coda_import(osv.osv_memory):
elif line[0] == '9':
statement['balanceMin'] = float(rmspaces(line[22:37])) / 1000
statement['balancePlus'] = float(rmspaces(line[37:52])) / 1000
if not statement['balance_end_real']:
if not statement.get('balance_end_real'):
statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin']
for i, statement in enumerate(statements):
statement['coda_note'] = ''
@ -266,6 +268,8 @@ class account_coda_import(osv.osv_memory):
raise osv.except_osv(_('Error'), _("Configuration Error in journal %s!\nPlease verify the Default Debit and Credit Account settings.") % statement['journal_id'].name)
if balance_start_check != statement['balance_start']:
statement['coda_note'] = _("The CODA Statement %s Starting Balance (%.2f) does not correspond with the previous Closing Balance (%.2f) in journal %s!") % (statement['description'] + ' #' + statement['paperSeqNumber'], statement['balance_start'], balance_start_check, statement['journal_id'].name)
if not(statement.get('period_id')):
raise osv.except_osv(_('Error') + ' R3006', _(' No transactions or no period in coda file !'))
data = {
'name': statement['paperSeqNumber'],
'date': statement['date'],

View File

@ -153,25 +153,33 @@ class account_invoice(osv.osv):
return {'value': {'reference': reference}}
def create(self, cr, uid, vals, context=None):
if vals.has_key('reference_type'):
reference_type = vals['reference_type']
reference = vals.get('reference', False)
reference_type = vals.get('reference_type', False)
if vals.get('type') == 'out_invoice' and not reference_type:
# fallback on default communication type for partner
reference_type = self.pool.get('res.partner').browse(cr, uid, vals['partner_id']).out_inv_comm_type
if reference_type == 'bba':
if vals.has_key('reference'):
bbacomm = vals['reference']
else:
reference = self.generate_bbacomm(cr, uid, [], vals['type'], reference_type, vals['partner_id'], '', context={})['value']['reference']
vals.update({
'reference_type': reference_type or 'none',
'reference': reference,
})
if reference_type == 'bba':
if not reference:
raise osv.except_osv(_('Warning!'),
_('Empty BBA Structured Communication!' \
'\nPlease fill in a unique BBA Structured Communication.'))
if self.check_bbacomm(reference):
reference = re.sub('\D', '', reference)
vals['reference'] = '+++' + reference[0:3] + '/' + reference[3:7] + '/' + reference[7:] + '+++'
same_ids = self.search(cr, uid,
[('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'),
('reference', '=', vals['reference'])])
if same_ids:
raise osv.except_osv(_('Warning!'),
_('Empty BBA Structured Communication!' \
'\nPlease fill in a unique BBA Structured Communication.'))
if self.check_bbacomm(bbacomm):
reference = re.sub('\D', '', bbacomm)
vals['reference'] = '+++' + reference[0:3] + '/' + reference[3:7] + '/' + reference[7:] + '+++'
same_ids = self.search(cr, uid,
[('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'),
('reference', '=', vals['reference'])])
if same_ids:
raise osv.except_osv(_('Warning!'),
_('The BBA Structured Communication has already been used!' \
'\nPlease create manually a unique BBA Structured Communication.'))
_('The BBA Structured Communication has already been used!' \
'\nPlease create manually a unique BBA Structured Communication.'))
return super(account_invoice, self).create(cr, uid, vals, context=context)
def write(self, cr, uid, ids, vals, context=None):

View File

@ -101,8 +101,8 @@
<record id="gsttvq_sale_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">GST + TVQ for sales</field>
<field name="description">GSTTVQ_SALE</field>
<field name="name">GST + QST for sales</field>
<field name="description">GSTQST_SALE</field>
<field name="type_tax_use">sale</field>
<field name="amount">1</field>
<field name="type">percent</field>
@ -127,8 +127,8 @@
<record id="tvq_sale_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVQ for sales - 9.975%</field>
<field name="description">TVQ</field>
<field name="name">QST for sales - 9.975%</field>
<field name="description">QST</field>
<field name="type_tax_use">sale</field>
<field name="amount">0.099750</field>
<field name="type">percent</field>
@ -192,8 +192,8 @@
<record id="hst12_sale_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVH for sales - 12%</field>
<field name="description">TVH12_SALE</field>
<field name="name">HST for sales - 12%</field>
<field name="description">HST12_SALE</field>
<field name="type_tax_use">sale</field>
<field name="amount">0.120000</field>
<field name="type">percent</field>
@ -207,8 +207,8 @@
<record id="hst13_sale_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVH for sales - 13%</field>
<field name="description">TVH13_SALE</field>
<field name="name">HST for sales - 13%</field>
<field name="description">HST13_SALE</field>
<field name="type_tax_use">sale</field>
<field name="amount">0.130000</field>
<field name="type">percent</field>
@ -222,8 +222,8 @@
<record id="hst135_sale_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVH for sales - 13.5%</field>
<field name="description">TVH135_SALE</field>
<field name="name">HST for sales - 13.5%</field>
<field name="description">HST135_SALE</field>
<field name="type_tax_use">sale</field>
<field name="amount">0.135000</field>
<field name="type">percent</field>
@ -237,8 +237,8 @@
<record id="hst15_sale_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVH for sales - 15%</field>
<field name="description">TVH15_SALE</field>
<field name="name">HST for sales - 15%</field>
<field name="description">HST15_SALE</field>
<field name="type_tax_use">sale</field>
<field name="amount">0.150000</field>
<field name="type">percent</field>
@ -367,8 +367,8 @@
<record id="gsttvq_purc_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">GST + TVQ for purchases</field>
<field name="description">GSTTVQ_PURC</field>
<field name="name">GST + QST for purchases</field>
<field name="description">GSTQST_PURC</field>
<field name="type_tax_use">purchase</field>
<field name="amount">1</field>
<field name="type">percent</field>
@ -393,8 +393,8 @@
<record id="tvq_purc_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVQ for purchases - 9.975%</field>
<field name="description">TVQ</field>
<field name="name">QST for purchases - 9.975%</field>
<field name="description">QST</field>
<field name="type_tax_use">purchase</field>
<field name="amount">0.099750</field>
<field name="type">percent</field>
@ -458,8 +458,8 @@
<record id="hst12_purc_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVH for purchases - 12%</field>
<field name="description">TVH12_PURC</field>
<field name="name">HST for purchases - 12%</field>
<field name="description">HST12_PURC</field>
<field name="type_tax_use">purchase</field>
<field name="amount">0.120000</field>
<field name="type">percent</field>
@ -473,8 +473,8 @@
<record id="hst13_purc_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVH for purchases - 13%</field>
<field name="description">TVH13_PURC</field>
<field name="name">HST for purchases - 13%</field>
<field name="description">HST13_PURC</field>
<field name="type_tax_use">purchase</field>
<field name="amount">0.130000</field>
<field name="type">percent</field>
@ -488,8 +488,8 @@
<record id="hst135_purc_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVH for purchases - 13.5%</field>
<field name="description">TVH135_PURC</field>
<field name="name">HST for purchases - 13.5%</field>
<field name="description">HST135_PURC</field>
<field name="type_tax_use">purchase</field>
<field name="amount">0.135000</field>
<field name="type">percent</field>
@ -503,8 +503,8 @@
<record id="hst15_purc_en" model="account.tax.template">
<field name="chart_template_id" ref="ca_en_chart_template_en"/>
<field name="name">TVH for purchases - 15%</field>
<field name="description">TVH15_PURC</field>
<field name="name">HST for purchases - 15%</field>
<field name="description">HST15_PURC</field>
<field name="type_tax_use">purchase</field>
<field name="amount">0.150000</field>
<field name="type">percent</field>

View File

@ -24,8 +24,8 @@
{'name': 'Switzerland - Accounting',
'description': """
Swiss localization :
====================
Swiss localization
==================
**Multilang swiss STERCHI account chart and taxes**
**Author:** Camptocamp SA

1702
addons/mail/i18n/th.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -176,7 +176,7 @@ class mail_mail(osv.Model):
if context is None:
context = {}
if not ids:
filters = ['&', ('state', '=', 'outgoing'), ('type', '=', 'email')]
filters = [('state', '=', 'outgoing')]
if 'filters' in context:
filters.extend(context['filters'])
ids = self.search(cr, uid, filters, context=context)

View File

@ -312,7 +312,12 @@ class mail_thread(osv.AbstractModel):
# subscribe uid unless asked not to
if not context.get('mail_create_nosubscribe'):
self.message_subscribe_users(cr, uid, [thread_id], [uid], context=context)
self.message_auto_subscribe(cr, uid, [thread_id], values.keys(), context=context)
# auto_subscribe: take values and defaults into account
create_values = set(values.keys())
for key, val in context.iteritems():
if key.startswith('default_'):
create_values.add(key[8:])
self.message_auto_subscribe(cr, uid, [thread_id], list(create_values), context=context)
# track values
tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=context)
@ -1436,7 +1441,7 @@ class mail_thread(osv.AbstractModel):
], context=context)
mail_followers_obj.write(cr, SUPERUSER_ID, fol_ids, {'subtype_ids': [(6, 0, subtype_ids)]}, context=context)
# subtype_ids not specified: do not update already subscribed partner, fetch default subtypes for new partners
else:
elif subtype_ids is None:
subtype_ids = subtype_obj.search(cr, uid, [
('default', '=', True),
'|',

View File

@ -975,11 +975,11 @@ class pos_order(osv.osv):
})
if data_type == 'product':
key = ('product', values['partner_id'], values['product_id'])
key = ('product', values['partner_id'], values['product_id'], values['debit'] > 0)
elif data_type == 'tax':
key = ('tax', values['partner_id'], values['tax_code_id'],)
key = ('tax', values['partner_id'], values['tax_code_id'], values['debit'] > 0)
elif data_type == 'counter_part':
key = ('counter_part', values['partner_id'], values['account_id'])
key = ('counter_part', values['partner_id'], values['account_id'], values['debit'] > 0)
else:
return

View File

@ -85,6 +85,7 @@ class pos_session_opening(osv.osv_memory):
session_ids = proxy.search(cr, uid, [
('state', '!=', 'closed'),
('config_id', '=', config_id),
('user_id', '=', uid),
], context=context)
if session_ids:
session = proxy.browse(cr, uid, session_ids[0], context=context)

View File

@ -0,0 +1,25 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-07-03 15:17+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese (Simplified) <zh_CN@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-07-04 05:12+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: portal_anonymous
#. openerp-web
#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8
#, python-format
msgid "Login"
msgstr "用户名"

View File

@ -12,7 +12,7 @@
<field eval="False" name="doall"/>
<field eval="'procurement.order'" name="model"/>
<field eval="'run_scheduler'" name="function"/>
<field eval="'(False,)'" name="args"/>
<field eval="'(False,True)'" name="args"/>
</record>
<record id="sequence_mrp_op_type" model="ir.sequence.type">

View File

@ -36,6 +36,8 @@ class procurement_order(osv.osv):
''' Runs through scheduler.
@param use_new_cursor: False or the dbname
'''
if use_new_cursor:
use_new_cursor = cr.dbname
self._procure_confirm(cr, uid, use_new_cursor=use_new_cursor, context=context)
self._procure_orderpoint_confirm(cr, uid, automatic=automatic,\
use_new_cursor=use_new_cursor, context=context)

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2013-06-27 03:25+0000\n"
"PO-Revision-Date: 2013-07-07 05:02+0000\n"
"Last-Translator: Alan <shuchuan.wu@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-06-28 05:42+0000\n"
"X-Generator: Launchpad (build 16681)\n"
"X-Launchpad-Export-Date: 2013-07-08 05:25+0000\n"
"X-Generator: Launchpad (build 16696)\n"
#. module: project
#: view:project.project:0
@ -38,7 +38,7 @@ msgstr "进度"
#. module: project
#: model:process.node,name:project.process_node_taskbydelegate0
msgid "Task by delegate"
msgstr "委派任务"
msgstr "委派任务"
#. module: project
#: view:project.project:0
@ -58,18 +58,18 @@ msgstr "阶段名称"
#. module: project
#: model:process.transition.action,name:project.process_transition_action_openpendingtask0
msgid "Set pending"
msgstr "设为未决"
msgstr "设置为等待状态"
#. module: project
#: view:project.project:0
msgid "New Project Based on Template"
msgstr "新的基于模板的项目"
msgstr "基于该模板新建项目"
#. module: project
#: view:report.project.task.user:0
#: field:report.project.task.user,day:0
msgid "Day"
msgstr "天"
msgstr "天"
#. module: project
#: model:project.task.type,name:project.project_tt_merge

View File

@ -586,6 +586,15 @@ class task(base_stage, osv.osv):
},
}
def _get_default_partner(self, cr, uid, context=None):
""" Override of base_stage to add project specific behavior """
project_id = self._get_default_project_id(cr, uid, context)
if project_id:
project = self.pool.get('project.project').browse(cr, uid, project_id, context=context)
if project and project.partner_id:
return project.partner_id.id
return super(task, self)._get_default_partner(cr, uid, context=context)
def _get_default_project_id(self, cr, uid, context=None):
""" Gives default section by checking if present in the context """
return (self._resolve_project_id_from_context(cr, uid, context=context) or False)
@ -600,7 +609,8 @@ class task(base_stage, osv.osv):
context key, or None if it cannot be resolved to a single
project.
"""
if context is None: context = {}
if context is None:
context = {}
if type(context.get('default_project_id')) in (int, long):
return context['default_project_id']
if isinstance(context.get('default_project_id'), basestring):
@ -681,13 +691,11 @@ class task(base_stage, osv.osv):
def onchange_planned(self, cr, uid, ids, planned=0.0, effective=0.0):
return {'value':{'remaining_hours': planned - effective}}
def onchange_project(self, cr, uid, id, project_id):
if not project_id:
return {}
data = self.pool.get('project.project').browse(cr, uid, [project_id])
partner_id=data and data[0].partner_id
if partner_id:
return {'value':{'partner_id':partner_id.id}}
def onchange_project(self, cr, uid, id, project_id, context=None):
if project_id:
project = self.pool.get('project.project').browse(cr, uid, project_id, context=context)
if project and project.partner_id:
return {'value': {'partner_id': project.partner_id.id}}
return {}
def duplicate_task(self, cr, uid, map_ids, context=None):
@ -810,8 +818,9 @@ class task(base_stage, osv.osv):
'progress': 0,
'sequence': 10,
'active': True,
'user_id': lambda obj, cr, uid, context: uid,
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'project.task', context=c),
'user_id': lambda obj, cr, uid, ctx=None: uid,
'company_id': lambda self, cr, uid, ctx=None: self.pool.get('res.company')._company_default_get(cr, uid, 'project.task', context=ctx),
'partner_id': lambda self, cr, uid, ctx=None: self._get_default_partner(cr, uid, context=ctx),
}
_order = "priority, sequence, date_start, name, id"
@ -1111,11 +1120,9 @@ class task(base_stage, osv.osv):
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
if not vals.get('stage_id'):
ctx = context.copy()
if vals.get('project_id'):
ctx['default_project_id'] = vals['project_id']
vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx)
if vals.get('project_id') and not context.get('default_project_id'):
context['default_project_id'] = vals.get('project_id')
# context: no_log, because subtype already handle this
create_context = dict(context, mail_create_nolog=True)
task_id = super(task, self).create(cr, uid, vals, context=create_context)
@ -1127,11 +1134,6 @@ class task(base_stage, osv.osv):
def write(self, cr, uid, ids, vals, context=None):
if isinstance(ids, (int, long)):
ids = [ids]
if vals.get('project_id'):
project_id = self.pool.get('project.project').browse(cr, uid, vals.get('project_id'), context=context)
if project_id:
vals.setdefault('message_follower_ids', [])
vals['message_follower_ids'] += [(6, 0,[follower.id]) for follower in project_id.message_follower_ids]
if vals and not 'kanban_state' in vals and 'stage_id' in vals:
new_stage = vals.get('stage_id')
vals_reset_kstate = dict(vals, kanban_state='normal')

View File

@ -65,15 +65,22 @@ class project_issue(base_stage, osv.osv):
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
if not vals.get('stage_id'):
ctx = context.copy()
if vals.get('project_id'):
ctx['default_project_id'] = vals['project_id']
vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx)
if vals.get('project_id') and not context.get('default_project_id'):
context['default_project_id'] = vals.get('project_id')
# context: no_log, because subtype already handle this
create_context = dict(context, mail_create_nolog=True)
return super(project_issue, self).create(cr, uid, vals, context=create_context)
def _get_default_partner(self, cr, uid, context=None):
""" Override of base_stage to add project specific behavior """
project_id = self._get_default_project_id(cr, uid, context)
if project_id:
project = self.pool.get('project.project').browse(cr, uid, project_id, context=context)
if project and project.partner_id:
return project.partner_id.id
return super(project_issue, self)._get_default_partner(cr, uid, context=context)
def _get_default_project_id(self, cr, uid, context=None):
""" Gives default project by checking if present in the context """
return self._resolve_project_id_from_context(cr, uid, context=context)
@ -215,6 +222,10 @@ class project_issue(base_stage, osv.osv):
return res
def on_change_project(self, cr, uid, ids, project_id, context=None):
if project_id:
project = self.pool.get('project.project').browse(cr, uid, project_id, context=context)
if project and project.partner_id:
return {'value': {'partner_id': project.partner_id.id}}
return {}
def _get_issue_task(self, cr, uid, ids, context=None):
@ -309,6 +320,7 @@ class project_issue(base_stage, osv.osv):
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
'priority': crm.AVAILABLE_PRIORITIES[2][0],
'kanban_state': 'normal',
'user_id': lambda obj, cr, uid, context: uid,
}
_group_by_full = {

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: 2012-12-21 17:06+0000\n"
"PO-Revision-Date: 2012-11-27 14:57+0000\n"
"Last-Translator: 盈通 ccdos <ccdos@163.com>\n"
"PO-Revision-Date: 2013-07-07 04:44+0000\n"
"Last-Translator: Alan <shuchuan.wu@gmail.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-16 05:47+0000\n"
"X-Generator: Launchpad (build 16532)\n"
"X-Launchpad-Export-Date: 2013-07-08 05:25+0000\n"
"X-Generator: Launchpad (build 16696)\n"
#. module: project_long_term
#: help:project.phase,constraint_date_end:0
@ -46,7 +46,7 @@ msgstr ""
#. module: project_long_term
#: field:project.phase,user_ids:0
msgid "Assigned Users"
msgstr "指定的用户"
msgstr "已分配的用户"
#. module: project_long_term
#: view:project.phase:0

View File

@ -26,9 +26,9 @@
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<field name="state" position="after">
<xpath expr="//page[@string='Extra Info']//field[@name='state']" position="after">
<field name="sale_line_id" string="Order Line"/>
</field>
</xpath>
</field>
</record>
<record id="product_product_normal_form_supply_view" model="ir.ui.view">

View File

@ -173,7 +173,7 @@ class WebKitParser(report_sxw):
),
'w'
)
head_file.write(header)
head_file.write(header.encode('utf-8'))
head_file.close()
file_to_del.append(head_file.name)
command.extend(['--header-html', head_file.name])
@ -184,7 +184,7 @@ class WebKitParser(report_sxw):
),
'w'
)
foot_file.write(footer)
foot_file.write(footer.encode('utf-8'))
foot_file.close()
file_to_del.append(foot_file.name)
command.extend(['--footer-html', foot_file.name])
@ -205,7 +205,7 @@ class WebKitParser(report_sxw):
for html in html_list :
html_file = file(os.path.join(tmp_dir, str(time.time()) + str(count) +'.body.html'), 'w')
count += 1
html_file.write(html)
html_file.write(html.encode('utf-8'))
html_file.close()
file_to_del.append(html_file.name)
command.append(html_file.name)

View File

@ -918,7 +918,7 @@
<field name="state" nolabel="1" readonly="1" widget="statusbar" statusbar_visible="draft,confirmed,assigned,done" statusbar_colors='{"auto":"blue", "confirmed":"blue"}'/>
</xpath>
<xpath expr="//field[@name='partner_id']" position="replace">
<field name="partner_id" on_change="onchange_partner_in(partner_id)" string="Customer"/>
<field name="partner_id" on_change="onchange_partner_in(partner_id)" string="Customer" domain="[('customer','=',True)]" />
</xpath>
<xpath expr="//field[@name='move_lines']" position="replace">
<field name="move_lines" context="{'address_out_id': partner_id, 'picking_type': 'out', 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}"/>
@ -1045,7 +1045,7 @@
<button name="action_process" states="assigned" string="Receive" type="object" class="oe_highlight"/>
</xpath>
<xpath expr="//field[@name='partner_id']" position="replace">
<field name="partner_id" on_change="onchange_partner_in(partner_id)" string="Supplier"/>
<field name="partner_id" on_change="onchange_partner_in(partner_id)" string="Supplier" domain="[('supplier','=',True)]" />
</xpath>
<xpath expr="//field[@name='move_lines']" position="replace">
<field name="move_lines" context="{'address_in_id': partner_id, 'picking_type': 'in', 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}"/>

View File

@ -7,51 +7,51 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:06+0000\n"
"PO-Revision-Date: 2009-04-24 15:40+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2013-06-28 15:37+0000\n"
"Last-Translator: Els Van Vossel (Agaplan) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-16 05:35+0000\n"
"X-Generator: Launchpad (build 16532)\n"
"X-Launchpad-Export-Date: 2013-06-30 05:56+0000\n"
"X-Generator: Launchpad (build 16692)\n"
#. module: warning
#: model:ir.model,name:warning.model_purchase_order_line
#: field:product.product,purchase_line_warn:0
msgid "Purchase Order Line"
msgstr ""
msgstr "Aankooporderlijn"
#. module: warning
#: model:ir.model,name:warning.model_stock_picking_in
msgid "Incoming Shipments"
msgstr ""
msgstr "Binnenkomende leveringen"
#. module: warning
#: field:product.product,purchase_line_warn_msg:0
msgid "Message for Purchase Order Line"
msgstr ""
msgstr "Bericht voor aankooporderlijn"
#. module: warning
#: model:ir.model,name:warning.model_stock_picking
msgid "Picking List"
msgstr ""
msgstr "Pickinglijst"
#. module: warning
#: view:product.product:0
msgid "Warning when Purchasing this Product"
msgstr ""
msgstr "Waarschuwing bij aankoop van artikel"
#. module: warning
#: model:ir.model,name:warning.model_product_product
msgid "Product"
msgstr ""
msgstr "Product"
#. module: warning
#: view:product.product:0
#: view:res.partner:0
msgid "Warnings"
msgstr ""
msgstr "Waarschuwingen"
#. module: warning
#: selection:product.product,purchase_line_warn:0
@ -61,12 +61,12 @@ msgstr ""
#: selection:res.partner,purchase_warn:0
#: selection:res.partner,sale_warn:0
msgid "Blocking Message"
msgstr ""
msgstr "Blokkerend bericht"
#. module: warning
#: view:res.partner:0
msgid "Warning on the Invoice"
msgstr ""
msgstr "Waarschuwing op de factuur"
#. module: warning
#: selection:product.product,purchase_line_warn:0
@ -76,34 +76,34 @@ msgstr ""
#: selection:res.partner,purchase_warn:0
#: selection:res.partner,sale_warn:0
msgid "No Message"
msgstr ""
msgstr "Geen bericht"
#. module: warning
#: model:ir.model,name:warning.model_account_invoice
#: field:res.partner,invoice_warn:0
msgid "Invoice"
msgstr ""
msgstr "Factuur"
#. module: warning
#: view:product.product:0
msgid "Warning when Selling this Product"
msgstr ""
msgstr "Waarschuwing bij verkoop van artikel"
#. module: warning
#: field:res.partner,picking_warn:0
msgid "Stock Picking"
msgstr ""
msgstr "Ontvangst"
#. module: warning
#: model:ir.model,name:warning.model_purchase_order
#: field:res.partner,purchase_warn:0
msgid "Purchase Order"
msgstr ""
msgstr "Aankooporder"
#. module: warning
#: field:res.partner,purchase_warn_msg:0
msgid "Message for Purchase Order"
msgstr ""
msgstr "Bericht voor aankooporder"
#. module: warning
#: code:addons/warning/warning.py:32
@ -119,6 +119,10 @@ msgid ""
"Selecting \"Blocking Message\" will throw an exception with the message and "
"block the flow. The Message has to be written in the next field."
msgstr ""
"Als u 'Waarschuwing' selecteert, wordt het bericht naar de gebruiker "
"gestuurd. Als u 'Blokkerend bericht' kiest, wordt een fout gegenereerd met "
"de boodschap en het proces wordt geblokkeerd. Het bericht moet in het "
"volgende veld worden ingevoerd."
#. module: warning
#: code:addons/warning/warning.py:67
@ -131,32 +135,32 @@ msgstr ""
#: code:addons/warning/warning.py:299
#, python-format
msgid "Alert for %s !"
msgstr ""
msgstr "Waarschuwing voor %s!"
#. module: warning
#: view:res.partner:0
msgid "Warning on the Sales Order"
msgstr ""
msgstr "Waarschuwing op verkooporder"
#. module: warning
#: field:res.partner,invoice_warn_msg:0
msgid "Message for Invoice"
msgstr ""
msgstr "Bericht voor factuur"
#. module: warning
#: field:res.partner,sale_warn_msg:0
msgid "Message for Sales Order"
msgstr ""
msgstr "Bericht voor verkooporder"
#. module: warning
#: view:res.partner:0
msgid "Warning on the Picking"
msgstr ""
msgstr "Waarschuwing op ontvangst"
#. module: warning
#: view:res.partner:0
msgid "Warning on the Purchase Order"
msgstr ""
msgstr "Waarschuwing op aankooporder"
#. module: warning
#: code:addons/warning/warning.py:68
@ -169,12 +173,12 @@ msgstr ""
#: code:addons/warning/warning.py:300
#, python-format
msgid "Warning for %s"
msgstr ""
msgstr "Waarschuwing voor %s"
#. module: warning
#: field:product.product,sale_line_warn_msg:0
msgid "Message for Sales Order Line"
msgstr ""
msgstr "Bericht voor verkooporderlijn"
#. module: warning
#: selection:product.product,purchase_line_warn:0
@ -184,31 +188,31 @@ msgstr ""
#: selection:res.partner,purchase_warn:0
#: selection:res.partner,sale_warn:0
msgid "Warning"
msgstr ""
msgstr "Waarschuwing"
#. module: warning
#: field:res.partner,picking_warn_msg:0
msgid "Message for Stock Picking"
msgstr ""
msgstr "Bericht voor ontvangst"
#. module: warning
#: model:ir.model,name:warning.model_res_partner
msgid "Partner"
msgstr ""
msgstr "Relatie"
#. module: warning
#: model:ir.model,name:warning.model_sale_order
#: field:res.partner,sale_warn:0
msgid "Sales Order"
msgstr ""
msgstr "Verkooporder"
#. module: warning
#: model:ir.model,name:warning.model_stock_picking_out
msgid "Delivery Orders"
msgstr ""
msgstr "Uitgaande leveringen"
#. module: warning
#: model:ir.model,name:warning.model_sale_order_line
#: field:product.product,sale_line_warn:0
msgid "Sales Order Line"
msgstr ""
msgstr "Verkooporderlijn"