[MERGE] Merge with lp:openobject-addons

bzr revid: sbh@tinyerp.com-20110413045550-zlcq9sjo6txa65nz
This commit is contained in:
Bhumika (OpenERP)
2011-04-13 10:25:50 +05:30
59 changed files with 10828 additions and 738 deletions
+7 -4
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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2010-12-21 15:14+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"PO-Revision-Date: 2011-04-12 03:56+0000\n"
"Last-Translator: Black Jack <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: 2011-01-15 05:56+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-04-13 04:40+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: account_accountant
#: model:ir.module.module,description:account_accountant.module_meta_information
@@ -26,6 +26,9 @@ msgid ""
"items and the chart of accounts.\n"
" "
msgstr ""
"\n"
"这模块给管理员设定所有的会计要素如:凭证簿项科目表\n"
" "
#. module: account_accountant
#: model:ir.module.module,shortdesc:account_accountant.module_meta_information
+17 -13
View File
@@ -7,26 +7,26 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2010-12-20 08:39+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"PO-Revision-Date: 2011-04-12 18:24+0000\n"
"Last-Translator: Black Jack <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: 2011-01-15 05:32+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-04-13 04:39+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: account_analytic_analysis
#: help:account.analytic.account,hours_qtt_invoiced:0
msgid ""
"Number of hours that can be invoiced plus those that already have been "
"invoiced."
msgstr "小时数能加在已开的发票上"
msgstr "小时数能开票,加到已开的发票上."
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_ca:0
msgid "Computed using the formula: Max Invoice Price - Invoiced Amount."
msgstr "计算公式为:最高发票价格 - 已开票金额"
msgstr "计算公式为:最大发票价格 - 已开票金额"
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_hours:0
@@ -56,6 +56,10 @@ msgid ""
"You can also view the report of account analytic summary\n"
"user-wise as well as month wise.\n"
msgstr ""
"\n"
"此模块在分析会计视图为公司的项目经理显示重要的数据,增加菜单为管理者显示有关信息。\n"
"\n"
"你可以查看会计分析报表如:用户- wise 或月度-wise\n"
#. module: account_analytic_analysis
#: field:account.analytic.account,last_invoice_date:0
@@ -75,7 +79,7 @@ msgstr "实际利润(%)"
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_theorical:0
msgid "Theoretical Revenue"
msgstr ""
msgstr "理论收入"
#. module: account_analytic_analysis
#: help:account.analytic.account,last_worked_invoiced_date:0
@@ -87,12 +91,12 @@ msgstr "如果发票来自费用, 这是最近工作日期或已开票的费用"
#. module: account_analytic_analysis
#: model:ir.ui.menu,name:account_analytic_analysis.menu_invoicing
msgid "Billing"
msgstr ""
msgstr "收费"
#. module: account_analytic_analysis
#: field:account.analytic.account,last_worked_date:0
msgid "Date of Last Cost/Work"
msgstr "费用或工作的最近日期"
msgstr "最近日期的工作成本"
#. module: account_analytic_analysis
#: field:account.analytic.account,total_cost:0
@@ -104,17 +108,17 @@ msgstr "总成本"
msgid ""
"Number of hours you spent on the analytic account (from timesheet). It "
"computes on all journal of type 'general'."
msgstr "在辅助核算项目你花费的小时数(根据时间表). 它在所有类型为普通的记录集合里计算."
msgstr "在分析会计中你花费的小时数(根据时间表). 它在计算所有类型为'普通的'凭证簿."
#. module: account_analytic_analysis
#: field:account.analytic.account,remaining_hours:0
msgid "Remaining Hours"
msgstr "剩余的小时数"
msgstr "剩余小时数"
#. module: account_analytic_analysis
#: field:account.analytic.account,theorical_margin:0
msgid "Theoretical Margin"
msgstr ""
msgstr "理论的差额"
#. module: account_analytic_analysis
#: help:account.analytic.account,ca_theorical:0
@@ -122,7 +126,7 @@ msgid ""
"Based on the costs you had on the project, what would have been the revenue "
"if all these costs have been invoiced at the normal sale price provided by "
"the pricelist."
msgstr "如果所有这些成本开发票按普通销售价目表.你项目的成本,将按这计算收入."
msgstr "如果所有成本按正常的销售价格开票那这项目的成本基于未来的收入."
#. module: account_analytic_analysis
#: field:account.analytic.account,user_ids:0
+20 -15
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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2010-07-13 08:42+0000\n"
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
"PO-Revision-Date: 2011-04-12 17:30+0000\n"
"Last-Translator: Black Jack <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: 2011-01-15 05:50+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-04-13 04:39+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: account_anglo_saxon
#: view:product.category:0
@@ -25,43 +25,43 @@ msgstr " 会计属性"
#. module: account_anglo_saxon
#: sql_constraint:purchase.order:0
msgid "Order Reference must be unique !"
msgstr ""
msgstr "单号必须唯一!"
#. module: account_anglo_saxon
#: constraint:product.category:0
msgid "Error ! You can not create recursive categories."
msgstr ""
msgstr "错误!你不能创建递归的类型."
#. module: account_anglo_saxon
#: constraint:product.template:0
msgid ""
"Error: The default UOM and the purchase UOM must be in the same category."
msgstr ""
msgstr "错误:默认的计量单位和采购的计量单位必须是同一类型."
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
msgstr "发票明细"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_purchase_order
msgid "Purchase Order"
msgstr ""
msgstr "采购订单"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_product_template
msgid "Product Template"
msgstr ""
msgstr "产品模板"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_product_category
msgid "Product Category"
msgstr ""
msgstr "产品类型"
#. module: account_anglo_saxon
#: model:ir.module.module,shortdesc:account_anglo_saxon.module_meta_information
msgid "Stock Accounting for Anglo Saxon countries"
msgstr ""
msgstr "新美国模式的库存会计"
#. module: account_anglo_saxon
#: field:product.category,property_account_creditor_price_difference_categ:0
@@ -72,12 +72,12 @@ msgstr "价格差异科目"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_account_invoice
msgid "Invoice"
msgstr ""
msgstr "发票"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_stock_picking
msgid "Picking List"
msgstr ""
msgstr "分拣单"
#. module: account_anglo_saxon
#: model:ir.module.module,description:account_anglo_saxon.module_meta_information
@@ -97,6 +97,11 @@ msgid ""
" Secondly, price differences between actual purchase price and fixed "
"product standard price are booked on a separate account"
msgstr ""
"此模块支持按新美国会计模式更改会计逻辑和库存运作.\n"
"新美国会计模式和欧洲大陆会计模式的不同在货物销售成本对应的销售成本不同.\n"
"新美国会计模式的成本在在创建销售发票是完成,欧洲大陆会计模式的成本含货物运送成本.\n"
"这模块通过使用一个临时性的科目来增加这功能.货物运输时的库存价值将保存在这临时科目,当创建发票时这金额将转借方或贷方科目.\n"
"其次实际价格和固定的标准价格的差异价格保存在一个独立的科目."
#. module: account_anglo_saxon
#: help:product.category,property_account_creditor_price_difference_categ:0
@@ -104,7 +109,7 @@ msgstr ""
msgid ""
"This account will be used to value price difference between purchase price "
"and cost price."
msgstr "这科目将用于在采购价格和销售价格之间的价格差异"
msgstr "这科目将用于采购价格和成本价格之间的差异"
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "无效XML视图结构!"
+35
View File
@@ -0,0 +1,35 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-04-12 12:51+0000\n"
"Last-Translator: Black Jack <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: 2011-04-13 04:39+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: account_cancel
#: model:ir.module.module,description:account_cancel.module_meta_information
msgid ""
"\n"
" Module adds 'Allow cancelling entries' field on form view of account "
"journal. If set to true it allows user to cancel entries & invoices.\n"
" "
msgstr ""
"\n"
" 此模块在凭证簿界面增加了一个“允许作废”的字段。如勾选了此选项,这个凭证簿的会计凭证或发票允许作废。\n"
" "
#. module: account_cancel
#: model:ir.module.module,shortdesc:account_cancel.module_meta_information
msgid "Account Cancel"
msgstr "作废"
+1 -1
View File
@@ -205,7 +205,7 @@ class account_analytic_account(osv.osv):
def check_recursion(self, cr, uid, ids, parent=None):
return super(account_analytic_account, self)._check_recursion(cr, uid, ids, parent=parent)
_order = 'date_start desc,parent_id desc,code'
_order = 'name asc'
_constraints = [
(check_recursion, 'Error! You can not create recursive analytic accounts.', ['parent_id']),
]
+226
View File
@@ -0,0 +1,226 @@
# Catalan translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-04-09 18:26+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan <ca@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: 2011-04-10 04:49+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
msgid "ir.model.fields.anonymize.wizard"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,field_name:0
msgid "Field Name"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,field_id:0
msgid "Field"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,state:0
#: field:ir.model.fields.anonymize.wizard,state:0
msgid "State"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_import:0
msgid "Import"
msgstr ""
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization
msgid "ir.model.fields.anonymization"
msgstr ""
#. module: anonymization
#: model:ir.module.module,shortdesc:anonymization.module_meta_information
msgid "Database anonymization module"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,direction:0
msgid "Direction"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree
#: view:ir.model.fields.anonymization:0
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields
msgid "Anonymized Fields"
msgstr ""
#. module: anonymization
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
msgid "Database anonymization"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:55
#: sql_constraint:ir.model.fields.anonymization:0
#, python-format
msgid "You cannot have two records having the same model and the same field"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Anonymized"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,state:0
msgid "unknown"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_id:0
msgid "Object"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,filepath:0
msgid "File path"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,date:0
msgid "Date"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_export:0
msgid "Export"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
msgid "Reverse the Database Anonymization"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
msgid "Database Anonymization"
msgstr ""
#. module: anonymization
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
msgid "Anonymize database"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
#: field:ir.model.fields.anonymization.history,field_ids:0
msgid "Fields"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Clear"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "clear -> anonymized"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
#: field:ir.model.fields.anonymize.wizard,summary:0
msgid "Summary"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization:0
msgid "Anonymized Field"
msgstr ""
#. module: anonymization
#: model:ir.module.module,description:anonymization.module_meta_information
msgid ""
"\n"
"This module allows you to anonymize a database.\n"
" "
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Unstable"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Exception occured"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Not Existing"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_name:0
msgid "Object Name"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree
#: view:ir.model.fields.anonymization.history:0
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history
msgid "Anonymization History"
msgstr ""
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history
msgid "ir.model.fields.anonymization.history"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
#: view:ir.model.fields.anonymize.wizard:0
msgid "Anonymize Database"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,name:0
msgid "File Name"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "anonymized -> clear"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Started"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Done"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
#: field:ir.model.fields.anonymization.history,msg:0
#: field:ir.model.fields.anonymize.wizard,msg:0
msgid "Message"
msgstr ""
+502
View File
@@ -0,0 +1,502 @@
# Catalan translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-04-11 21:15+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan <ca@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: 2011-04-12 04:34+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_user:0
msgid ""
"Check this if you want the rule to send an email to the responsible person."
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_remind_partner:0
msgid "Remind Partner"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_partner_categ_id:0
msgid "Partner Category"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_watchers:0
msgid "Mail to Watchers (CC)"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_state_to:0
msgid "Button Pressed"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,model_id:0
msgid "Object"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_email:0
msgid "Mail to these Emails"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_state:0
msgid "Set State to"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_email_from:0
msgid "Email From"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Body"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Days"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,last_run:0
msgid "Last Run"
msgstr ""
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:313
#, python-format
msgid "Error!"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_reply_to:0
msgid "Reply-To"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_email_cc:0
msgid ""
"These people will receive a copy of the future communication between partner "
"and users by email"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Minutes"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,name:0
msgid "Rule Name"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_remind_partner:0
msgid ""
"Check this if you want the rule to send a reminder by email to the partner."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Partner"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Deadline"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_partner_id:0
msgid "Partner"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_subject)s = Object subject"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Reminders"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Special Keywords to Be Used in The Body"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_state_from:0
msgid "State"
msgstr ""
#. module: base_action_rule
#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act
msgid ""
"Use automated actions to automatically trigger actions for various screens. "
"Example: a lead created by a specific user may be automatically set to a "
"specific sales team, or an opportunity which still has status pending after "
"14 days might trigger an automatic reminder email."
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_email:0
msgid "Email-id of the persons whom mail is to be sent"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
#: model:ir.module.module,shortdesc:base_action_rule.module_meta_information
msgid "Action Rule"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Fields to Change"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Creation Date"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Last Action Date"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Hours"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_id)s = Object ID"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Delay After Trigger Date"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_remind_attach:0
msgid "Remind with Attachment"
msgstr ""
#. module: base_action_rule
#: constraint:ir.cron:0
msgid "Invalid arguments"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_user_id:0
msgid "Set Responsible to"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "None"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_email_to:0
msgid ""
"Use a python expression to specify the right field on which one than we will "
"use for the 'To' field of the header"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_phone)s = Responsible phone"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid ""
"The rule uses the AND operator. The model must match all non-empty fields so "
"that the rule executes the action described in the 'Actions' tab."
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_date_range_type:0
msgid "Delay type"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,regex_name:0
msgid ""
"Regular expression for matching name of the resource\n"
"e.g.: 'urgent.*' will search for records having name starting with the "
"string 'urgent'\n"
"Note: This is case sensitive search."
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_method:0
msgid "Call Object Method"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_email_to:0
msgid "Email To"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_watchers:0
msgid ""
"Check this if you want the rule to mark CC(mail to any other person defined "
"in actions)."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner)s = Partner name"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Note"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_email_from:0
msgid ""
"Use a python expression to specify the right field on which one than we will "
"use for the 'From' field of the header"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_date_range:0
msgid "Delay after trigger date"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,trg_date_range:0
msgid ""
"Delay After Trigger Date,specifies you can put a negative number. If you "
"need a delay before the trigger date, like sending a reminder 15 minutes "
"before a meeting."
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,active:0
msgid "Active"
msgstr ""
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:314
#, python-format
msgid "No E-Mail ID Found for your Company address!"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_remind_user:0
msgid "Remind Responsible"
msgstr ""
#. module: base_action_rule
#: model:ir.module.module,description:base_action_rule.module_meta_information
msgid "This module allows to implement action rules for any object."
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,sequence:0
msgid "Gives the sequence order when displaying a list of rules."
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Months"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,filter_id:0
msgid "Filter"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Date"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,server_action_id:0
msgid ""
"Describes the action name.\n"
"eg:on which object which action to be taken on basis of which condition"
msgstr ""
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_ir_cron
msgid "ir.cron"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_description)s = Object description"
msgstr ""
#. module: base_action_rule
#: constraint:base.action.rule:0
msgid "Error: The mail is not well formated"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Actions"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Information"
msgstr ""
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_base_action_rule
msgid "Action Rules"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_mail_body:0
msgid "Content of mail"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_user_id:0
msgid "Responsible"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner_email)s = Partner Email"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_date)s = Creation date"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_email)s = Responsible Email"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_mail_body:0
msgid "Mail body"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_remind_user:0
msgid ""
"Check this if you want the rule to send a reminder by email to the user."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Server Action to be Triggered"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_user:0
msgid "Mail to Responsible"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_email_cc:0
msgid "Add Watchers (Cc)"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Fields"
msgstr ""
#. module: base_action_rule
#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act
#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form
msgid "Automated Actions"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,server_action_id:0
msgid "Server Action"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,regex_name:0
msgid "Regex on Resource Name"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_remind_attach:0
msgid ""
"Check this if you want that all documents attached to the object be attached "
"to the reminder email sent."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Timing"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,sequence:0
msgid "Sequence"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Actions"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the rule "
"without removing it."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user)s = Responsible name"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,create_date:0
msgid "Create Date"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on States"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_date_type:0
msgid "Trigger Date"
msgstr ""
+5 -5
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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-01-02 09:33+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"PO-Revision-Date: 2011-04-12 16:27+0000\n"
"Last-Translator: Viktor Prokopiev <Unknown>\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: 2011-01-15 05:55+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-04-13 04:39+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_user:0
@@ -78,7 +78,7 @@ msgstr "Дней"
#. module: base_action_rule
#: field:base.action.rule,last_run:0
msgid "Last Run"
msgstr ""
msgstr "Последнее выполнение"
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:313
+508
View File
@@ -0,0 +1,508 @@
# Danish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-04-12 08:42+0000\n"
"Last-Translator: Lars Dige <Unknown>\n"
"Language-Team: Danish <da@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: 2011-04-13 04:39+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: base_setup
#: field:base.setup.company,city:0
msgid "City"
msgstr "By"
#. module: base_setup
#: view:base.setup.installer:0
msgid "Install"
msgstr "Installer"
#. module: base_setup
#: field:base.setup.installer,account_voucher:0
msgid "Invoicing"
msgstr "Fakturering"
#. module: base_setup
#: field:base.setup.installer,hr:0
msgid "Human Resources"
msgstr "Human Resources"
#. module: base_setup
#: field:base.setup.company,email:0
msgid "E-mail"
msgstr "E-mail"
#. module: base_setup
#: field:base.setup.company,account_no:0
msgid "Bank Account No"
msgstr "Bank konto nr."
#. module: base_setup
#: field:base.setup.installer,profile_tools:0
msgid "Extra Tools"
msgstr "Ekstra værktøjer"
#. module: base_setup
#: field:base.setup.company,rml_footer1:0
msgid "Report Footer 1"
msgstr ""
#. module: base_setup
#: help:base.setup.installer,mrp:0
msgid ""
"Helps you manage your manufacturing processes and generate reports on those "
"processes."
msgstr ""
#. module: base_setup
#: help:base.setup.installer,marketing:0
msgid "Helps you manage your marketing campaigns step by step."
msgstr ""
#. module: base_setup
#: view:base.setup.config:0
msgid "Your database is now created."
msgstr "Din database er ny oprettet"
#. module: base_setup
#: field:base.setup.installer,point_of_sale:0
msgid "Point of Sales"
msgstr "Point of sales"
#. module: base_setup
#: field:base.setup.installer,association:0
msgid "Associations"
msgstr "Foreninger"
#. module: base_setup
#: help:base.setup.installer,account_accountant:0
msgid ""
"Helps you handle your accounting needs, if you are not an accountant, we "
"suggest you to install only the Invoicing "
msgstr ""
#. module: base_setup
#: code:addons/base_setup/__init__.py:50
#, python-format
msgid "The following users have been installed : \n"
msgstr "Følgende brugere er installeret \n"
#. module: base_setup
#: field:base.setup.company,progress:0
#: field:base.setup.installer,progress:0
msgid "Configuration Progress"
msgstr "Konfigurations fremskridt"
#. module: base_setup
#: field:base.setup.company,rml_footer2:0
msgid "Report Footer 2"
msgstr "Rapport sidefod"
#. module: base_setup
#: field:base.setup.company,currency:0
#: model:ir.model,name:base_setup.model_res_currency
msgid "Currency"
msgstr "Valuta"
#. module: base_setup
#: field:base.setup.company,state_id:0
msgid "Fed. State"
msgstr ""
#. module: base_setup
#: field:base.setup.installer,marketing:0
msgid "Marketing"
msgstr "Markedsføring"
#. module: base_setup
#: field:base.setup.company,company_id:0
msgid "Company"
msgstr "Virksomhed"
#. module: base_setup
#: field:base.setup.installer,sale:0
msgid "Sales Management"
msgstr "Salgsledelse"
#. module: base_setup
#: help:base.setup.installer,profile_tools:0
msgid ""
"Lets you install various interesting but non-essential tools like Survey, "
"Lunch and Ideas box."
msgstr ""
"Lader dig installere forskellige interessante, men ikke-væsentlige værktøjer "
"som f.eks. idé boks."
#. module: base_setup
#: view:base.setup.config:0
msgid ""
"You can start configuring the system or connect directly to the database as "
"an administrator."
msgstr ""
"Du kan starte med at konfigurere systemet eller tilslutte dig direkte til "
"databasen som en administrator."
#. module: base_setup
#: field:base.setup.installer,report_designer:0
msgid "Advanced Reporting"
msgstr "Avanceret rapportering"
#. module: base_setup
#: field:base.setup.company,phone:0
msgid "Phone"
msgstr "Tlf. nr."
#. module: base_setup
#: view:base.setup.company:0
msgid "res_config_contents"
msgstr ""
#. module: base_setup
#: view:base.setup.company:0
msgid ""
"Your company information will be used to personalize documents issued with "
"OpenERP such as invoices, sales orders and much more."
msgstr ""
"Dine virksomheds oplysninger vil blive brugt til at personliggøre dokumenter "
"udstedt med OpenERP såsom fakturaer, salgsordrer og meget mere."
#. module: base_setup
#: view:base.setup.installer:0
msgid "title"
msgstr "titel"
#. module: base_setup
#: field:base.setup.installer,knowledge:0
msgid "Knowledge Management"
msgstr "Knowledge Management"
#. module: base_setup
#: model:ir.module.module,description:base_setup.module_meta_information
msgid ""
"\n"
" This module implements a configuration system that helps user\n"
" to configure the system at the installation of a new database.\n"
"\n"
" It allows you to select between a list of profiles to install:\n"
" * Minimal profile\n"
" * Accounting only\n"
" * Services companies\n"
" * Manufacturing companies\n"
"\n"
" It also asks screens to help easily configure your company, the header "
"and\n"
" footer, the account chart to install and the language.\n"
" "
msgstr ""
#. module: base_setup
#: help:base.setup.installer,product_expiry:0
msgid ""
"Installs a preselected set of OpenERP applications which will help you "
"manage your industry."
msgstr ""
"Installerer en forudvalgt sæt OpenERP applikationer, der vil hjælpe dig med "
"at administrere din branche."
#. module: base_setup
#: help:base.setup.installer,project:0
msgid ""
"Helps you manage your projects and tasks by tracking them, generating "
"plannings, etc..."
msgstr ""
"Hjælper dig med at administrere dine projekter og opgaver ved at spore dem, "
"generere planlægning, osv. .."
#. module: base_setup
#: field:base.setup.company,name:0
msgid "Company Name"
msgstr "Firmanavn"
#. module: base_setup
#: view:base.setup.config:0
msgid "Skip Configuration Wizards"
msgstr "Spring over konfigurations wizard"
#. module: base_setup
#: help:base.setup.installer,hr:0
msgid ""
"Helps you manage your human resources by encoding your employees structure, "
"generating work sheets, tracking attendance and more."
msgstr ""
#. module: base_setup
#: help:base.setup.installer,account_voucher:0
msgid ""
"Allows you to create your invoices and track the payments. It is an easier "
"version of the accounting module for managers who are not accountants."
msgstr ""
#. module: base_setup
#: model:ir.model,name:base_setup.model_base_setup_company
msgid "base.setup.company"
msgstr "base.setup.company"
#. module: base_setup
#: help:base.setup.installer,purchase:0
msgid ""
"Helps you manage your purchase-related processes such as requests for "
"quotations, supplier invoices, etc..."
msgstr ""
"Hjælper dig med at styre dit køb-relaterede processer såsom anmodninger om "
"tilbud, leverandørfakturaer, osv. .."
#. module: base_setup
#: help:base.setup.company,rml_footer2:0
msgid ""
"This sentence will appear at the bottom of your reports.\n"
"We suggest you to put bank information here:\n"
"IBAN: BE74 1262 0121 6907 - SWIFT: CPDF BE71 - VAT: BE0477.472.701"
msgstr ""
#. module: base_setup
#: field:base.setup.company,street2:0
msgid "Street 2"
msgstr "Adresse 2"
#. module: base_setup
#: model:ir.model,name:base_setup.model_base_setup_installer
msgid "base.setup.installer"
msgstr "base.setup.installer"
#. module: base_setup
#: field:base.setup.company,country_id:0
msgid "Country"
msgstr "Land"
#. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_base_setup
msgid "Setup"
msgstr "Setup"
#. module: base_setup
#: field:base.setup.installer,account_accountant:0
msgid "Accounting & Finance"
msgstr "Regnskab & Finans"
#. module: base_setup
#: field:base.setup.installer,auction:0
msgid "Auction Houses"
msgstr "Auktionshuse"
#. module: base_setup
#: field:base.setup.company,zip:0
msgid "Zip Code"
msgstr "Postnr"
#. module: base_setup
#: view:base.setup.config:0
msgid "Start Configuration"
msgstr "Start konfiguration"
#. module: base_setup
#: help:base.setup.installer,knowledge:0
msgid ""
"Lets you install addons geared towards sharing knowledge with and between "
"your employees."
msgstr ""
"Lader dig installere addons rettet mod at dele viden med og mellem dine "
"medarbejdere."
#. module: base_setup
#: view:base.setup.installer:0
msgid ""
"Select the Applications you want your system to cover. If you are not sure "
"about your exact needs at this stage, you can easily install them later."
msgstr ""
"Vælg de programmer, du ønsker dit system skal indeholde. Hvis du ikke er "
"sikker på netop dine behov på nuvræendetidspunkt, kan du nemt installere dem "
"senere."
#. module: base_setup
#: view:base.setup.company:0
#: model:ir.actions.act_window,name:base_setup.action_base_setup_company
msgid "Company Configuration"
msgstr ""
#. module: base_setup
#: field:base.setup.company,logo:0
msgid "Logo"
msgstr ""
#. module: base_setup
#: help:base.setup.installer,point_of_sale:0
msgid ""
"Helps you get the most out of your points of sales with fast sale encoding, "
"simplified payment mode encoding, automatic picking lists generation and "
"more."
msgstr ""
#. module: base_setup
#: field:base.setup.installer,purchase:0
msgid "Purchase Management"
msgstr ""
#. module: base_setup
#: help:base.setup.installer,sale:0
msgid "Helps you handle your quotations, sale orders and invoicing."
msgstr ""
#. module: base_setup
#: field:base.setup.installer,stock:0
msgid "Warehouse Management"
msgstr ""
#. module: base_setup
#: field:base.setup.installer,project:0
msgid "Project Management"
msgstr ""
#. module: base_setup
#: field:base.setup.config,installed_users:0
msgid "Installed Users"
msgstr ""
#. module: base_setup
#: view:base.setup.config:0
msgid "New Database"
msgstr ""
#. module: base_setup
#: field:base.setup.installer,crm:0
msgid "Customer Relationship Management"
msgstr ""
#. module: base_setup
#: help:base.setup.installer,auction:0
msgid ""
"Installs a preselected set of OpenERP applications selected to help you "
"manage your auctions as well as the business processes around them."
msgstr ""
#. module: base_setup
#: help:base.setup.company,rml_header1:0
msgid ""
"This sentence will appear at the top right corner of your reports.\n"
"We suggest you to put a slogan here:\n"
"\"Open Source Business Solutions\"."
msgstr ""
#. module: base_setup
#: help:base.setup.installer,report_designer:0
msgid ""
"Lets you install various tools to simplify and enhance OpenERP's report "
"creation."
msgstr ""
#. module: base_setup
#: field:base.setup.company,rml_header1:0
msgid "Report Header"
msgstr ""
#. module: base_setup
#: view:base.setup.config:0
msgid "Information about your new database"
msgstr ""
#. module: base_setup
#: field:base.setup.company,config_logo:0
#: field:base.setup.config,config_logo:0
#: field:base.setup.installer,config_logo:0
msgid "Image"
msgstr ""
#. module: base_setup
#: field:base.setup.installer,product_expiry:0
msgid "Food Industry"
msgstr ""
#. module: base_setup
#: field:base.setup.installer,mrp:0
msgid "Manufacturing"
msgstr ""
#. module: base_setup
#: view:base.setup.company:0
msgid "Your Logo - Use a size of about 450x150 pixels."
msgstr ""
#. module: base_setup
#: help:base.setup.company,rml_footer1:0
msgid ""
"This sentence will appear at the bottom of your reports.\n"
"We suggest you to write legal sentences here:\n"
"Web: http://openerp.com - Fax: +32.81.73.35.01 - Fortis Bank: 126-2013269-07"
msgstr ""
#. module: base_setup
#: field:base.setup.company,website:0
msgid "Company Website"
msgstr ""
#. module: base_setup
#: view:base.setup.installer:0
msgid "Install Specific Industry Applications"
msgstr ""
#. module: base_setup
#: field:base.setup.company,street:0
msgid "Street"
msgstr ""
#. module: base_setup
#: view:base.setup.company:0
msgid "Configure Your Company Information"
msgstr ""
#. module: base_setup
#: help:base.setup.company,website:0
msgid "Example: http://openerp.com"
msgstr ""
#. module: base_setup
#: view:base.setup.installer:0
#: model:ir.actions.act_window,name:base_setup.action_base_setup_installer
msgid "Install Applications"
msgstr ""
#. module: base_setup
#: help:base.setup.installer,crm:0
msgid ""
"Helps you track and manage relations with customers such as leads, requests "
"or issues. Can automatically send reminders, escalate requests or trigger "
"business-specific actions based on standard events."
msgstr ""
#. module: base_setup
#: help:base.setup.installer,stock:0
msgid ""
"Helps you manage your inventory and main stock operations: delivery orders, "
"receptions, etc."
msgstr ""
#. module: base_setup
#: model:ir.module.module,shortdesc:base_setup.module_meta_information
msgid "Base Setup"
msgstr ""
#. module: base_setup
#: help:base.setup.installer,association:0
msgid ""
"Installs a preselected set of OpenERP applications which will help you "
"manage your association more efficiently."
msgstr ""
#. module: base_setup
#: model:ir.model,name:base_setup.model_base_setup_config
msgid "base.setup.config"
msgstr ""
+289
View File
@@ -0,0 +1,289 @@
# Catalan translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-04-10 21:15+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan <ca@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: 2011-04-11 04:54+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: base_synchro
#: model:ir.actions.act_window,name:base_synchro.action_view_base_synchro
msgid "Base Synchronization"
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,server_db:0
msgid "Server Database"
msgstr ""
#. module: base_synchro
#: view:base.synchro.server:0
#: model:ir.model,name:base_synchro.model_base_synchro_server
msgid "Synchronized server"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj.avoid,name:0
msgid "Field Name"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,synchronize_date:0
msgid "Latest Synchronization"
msgstr ""
#. module: base_synchro
#: field:base.synchro,user_id:0
msgid "Send Result To"
msgstr ""
#. module: base_synchro
#: model:ir.model,name:base_synchro.model_base_synchro_obj_avoid
msgid "Fields to not synchronize"
msgstr ""
#. module: base_synchro
#: view:base.synchro:0
msgid "_Close"
msgstr ""
#. module: base_synchro
#: view:base.synchro:0
msgid "Transfer Data To Server"
msgstr ""
#. module: base_synchro
#: model:ir.model,name:base_synchro.model_base_synchro_obj
msgid "Register Class"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
#: model:ir.actions.act_window,name:base_synchro.action_transfer_tree
#: model:ir.ui.menu,name:base_synchro.transfer_menu_id
msgid "Synchronized objects"
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,obj_ids:0
msgid "Models"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj.avoid,obj_id:0
#: view:base.synchro.obj.line:0
#: field:base.synchro.obj.line,obj_id:0
msgid "Object"
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,login:0
msgid "User Name"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
#: view:base.synchro.obj.line:0
msgid "Group By"
msgstr ""
#. module: base_synchro
#: selection:base.synchro.obj,action:0
msgid "Upload"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
msgid "Latest synchronization"
msgstr ""
#. module: base_synchro
#: model:ir.module.module,description:base_synchro.module_meta_information
msgid "Synchronization with all objects."
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj.line:0
#: field:base.synchro.obj.line,name:0
msgid "Date"
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,password:0
msgid "Password"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,avoid_ids:0
msgid "Fields Not Sync."
msgstr ""
#. module: base_synchro
#: selection:base.synchro.obj,action:0
msgid "Both"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,name:0
msgid "Name"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
msgid "Fields"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj.line:0
msgid "Transfered Ids Details"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,action:0
msgid "Synchronisation direction"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,server_id:0
msgid "Server"
msgstr ""
#. module: base_synchro
#: model:ir.actions.act_window,name:base_synchro.action_base_synchro_obj_line_tree
#: model:ir.model,name:base_synchro.model_base_synchro_obj_line
#: model:ir.ui.menu,name:base_synchro.menu_action_base_synchro_obj_line_tree
msgid "Synchronized instances"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,active:0
msgid "Active"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
#: field:base.synchro.obj,model_id:0
msgid "Object to synchronize"
msgstr ""
#. module: base_synchro
#: model:ir.module.module,shortdesc:base_synchro.module_meta_information
msgid "Base Synchro"
msgstr ""
#. module: base_synchro
#: model:ir.actions.act_window,name:base_synchro.action_base_synchro_server_tree
#: model:ir.ui.menu,name:base_synchro.synchro_server_tree_menu_id
msgid "Servers to be synchronized"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
msgid "Transfer Details"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj.line,remote_id:0
msgid "Remote Id"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,line_id:0
msgid "Ids Affected"
msgstr ""
#. module: base_synchro
#: model:ir.ui.menu,name:base_synchro.next_id_63
msgid "History"
msgstr ""
#. module: base_synchro
#: model:ir.ui.menu,name:base_synchro.next_id_62
#: model:ir.ui.menu,name:base_synchro.synch_config
msgid "Synchronization"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,domain:0
msgid "Domain"
msgstr ""
#. module: base_synchro
#: view:base.synchro:0
msgid "_Synchronize"
msgstr ""
#. module: base_synchro
#: view:base.synchro:0
msgid "OK"
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,name:0
msgid "Server name"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,sequence:0
msgid "Sequence"
msgstr ""
#. module: base_synchro
#: view:base.synchro:0
msgid ""
"The synchronisation has been started.You will receive a request when it's "
"done."
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,server_port:0
msgid "Server Port"
msgstr ""
#. module: base_synchro
#: model:ir.ui.menu,name:base_synchro.menu_action_view_base_synchro
msgid "Synchronize objects"
msgstr ""
#. module: base_synchro
#: view:base.synchro:0
msgid "Synchronization Complited!"
msgstr ""
#. module: base_synchro
#: model:ir.model,name:base_synchro.model_base_synchro
msgid "base.synchro"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj.line,local_id:0
msgid "Local Id"
msgstr ""
#. module: base_synchro
#: model:ir.actions.act_window,name:base_synchro.actions_regclass_tree
#: model:ir.actions.act_window,name:base_synchro.actions_transfer_line_form
msgid "Filters"
msgstr ""
#. module: base_synchro
#: selection:base.synchro.obj,action:0
msgid "Download"
msgstr ""
#. module: base_synchro
#: field:base.synchro,server_url:0
#: field:base.synchro.server,server_url:0
msgid "Server URL"
msgstr ""
+6 -6
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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-01-20 15:46+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"PO-Revision-Date: 2011-04-11 14:24+0000\n"
"Last-Translator: Black Jack <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: 2011-01-21 04:40+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-04-12 04:34+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: board
#: view:res.log.report:0
@@ -42,7 +42,7 @@ msgstr "作者"
#. module: board
#: model:ir.module.module,shortdesc:board.module_meta_information
msgid "Dashboard main module"
msgstr "仪表盘主模块"
msgstr "控制台主模块"
#. module: board
#: view:res.users:0
@@ -60,7 +60,7 @@ msgstr "用户错误!"
#: model:ir.actions.act_window,name:board.open_board_administration_form
#: model:ir.ui.menu,name:board.menu_board_admin
msgid "Administration Dashboard"
msgstr "管理员仪表盘"
msgstr "管理员控制台"
#. module: board
#: view:board.note:0
+22 -11
View File
@@ -98,6 +98,27 @@ class crm_lead(crm_case, osv.osv):
res[lead.id][field] = abs(int(duration))
return res
def _history_search(self, cr, uid, obj, name, args, context=None):
res = []
msg_obj = self.pool.get('mailgate.message')
message_ids = msg_obj.search(cr, uid, [('history','=',True), ('name', args[0][1], args[0][2])], context=context)
lead_ids = self.search(cr, uid, [('message_ids', 'in', message_ids)], context=context)
if lead_ids:
return [('id', 'in', lead_ids)]
else:
return [('id', '=', '0')]
def _get_email_subject(self, cr, uid, ids, fields, args, context=None):
res = {}
for obj in self.browse(cr, uid, ids, context=context):
res[obj.id] = ''
for msg in obj.message_ids:
if msg.history:
res[obj.id] = msg.name
break
return res
_columns = {
# Overridden from res.partner.address:
'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null',
@@ -149,6 +170,7 @@ class crm_lead(crm_case, osv.osv):
\nWhen the case is over, the state is set to \'Done\'.\
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
'subjects': fields.function(_get_email_subject, fnct_search=_history_search, string='Subject of Email', method=True, type='char', size=64),
}
@@ -288,17 +310,6 @@ class crm_lead(crm_case, osv.osv):
self.log(cr, uid, case.id, message)
return super(crm_lead,self).write(cr, uid, ids, vals, context)
def stage_historize(self, cr, uid, ids, stage, context=None):
stage_obj = self.pool.get('crm.case.stage').browse(cr, uid, stage, context=context)
self.history(cr, uid, ids, _('Stage'), details=stage_obj.name)
for case in self.browse(cr, uid, ids, context=context):
if case.type == 'lead':
message = _("The stage of lead '%s' has been changed to '%s'.") % (case.name, stage_obj.name)
elif case.type == 'opportunity':
message = _("The stage of opportunity '%s' has been changed to '%s'.") % (case.name, stage_obj.name)
self.log(cr, uid, case.id, message)
return True
def stage_next(self, cr, uid, ids, context=None):
stage = super(crm_lead, self).stage_next(cr, uid, ids, context=context)
if stage:
+30 -29
View File
@@ -183,7 +183,7 @@
<field colspan="4" name="email_cc" widget="char" size="512"/>
</group>
<field name="message_ids" colspan="4" nolabel="1" mode="tree,form">
<tree string="Communication history">
<tree string="History">
<field name="display_text" string="History Information"/>
<field name="history" invisible="1"/>
<button
@@ -192,34 +192,33 @@
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
<field name="email_from"/>
<field name="date"/>
<field name="email_to" widget="char" size="512"/>
<field name="email_cc" widget="char" size="512"/>
<field name="name" colspan="4" widget="char" size="512"/>
<field name="history" invisible="1"/>
</group>
<notebook colspan="4">
<page string="Details">
<group attrs="{'invisible': [('history', '!=', True)]}">
<field name="description" colspan="4" nolabel="1" height="250"/>
<button colspan="4"
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="terp-mail-replied" type="action" />
</group>
<group attrs="{'invisible': [('history', '=', True)]}">
<field name="display_text" colspan="4" nolabel="1" height="250"/>
</group>
</page>
<page string="Attachments">
<field name="attachment_ids" colspan="4" readonly="1" nolabel="1"/>
</page>
</notebook>
</form>
<form string="History">
<group col="4" colspan="4">
<field name="email_from"/>
<field name="date"/>
<field name="email_to" size="512"/>
<field name="email_cc" size="512"/>
<field name="name" colspan="4" widget="char" attrs="{'invisible': [('history', '=', False)]}" size="512"/>
<field name="display_text" colspan="4" attrs="{'invisible': [('history', '=', True)]}"/>
<field name="history" invisible="1"/>
</group>
<notebook colspan="4">
<page string="Details">
<field name="description" colspan="4" nolabel="1"/>
<group attrs="{'invisible': [('history', '!=', True)]}">
<button colspan="4"
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="terp-mail-replied" type="action" />
</group>
</page>
<page string="Attachments">
<field name="attachment_ids" colspan="4" readonly="1" nolabel="1"/>
</page>
</notebook>
</form>
</field>
<button string="Add Internal Note"
name="%(crm.action_crm_add_note)d"
@@ -255,6 +254,7 @@
<field name="type_id" invisible="1"/>
<field name="referred" invisible="1"/>
<field name="channel_id" invisible="1"/>
<field name="subjects" invisible="1"/>
<field name="stage_id"/>
<button name="stage_previous" string="Previous Stage"
@@ -335,6 +335,7 @@
domain="[('user_id','=', False)]"
help="Unassigned Leads" />
</field>
<field name="subjects"/>
<field name="section_id" widget="selection"
context="{'invisible_section': False}">
<filter icon="terp-personal+" groups="base.group_extended"
+4 -2
View File
@@ -156,8 +156,8 @@
<field name="date"/>
<field name="email_to" size="512"/>
<field name="email_cc" size="512"/>
<field name="name" colspan="4" attrs="{'invisible': [('history', '=', True)]}"/>
<field name="display_text" colspan="4" attrs="{'invisible': [('history', '=', False)]}"/>
<field name="name" colspan="4" widget="char" attrs="{'invisible': [('history', '=', False)]}" size="512"/>
<field name="display_text" colspan="4" attrs="{'invisible': [('history', '=', True)]}"/>
<field name="history" invisible="1"/>
</group>
<notebook colspan="4">
@@ -230,6 +230,7 @@
<field name="stage_id"/>
<field name="channel_id" invisible="1"/>
<field name="type_id" invisible="1"/>
<field name="subjects" invisible="1"/>
<button name="stage_previous" string="Previous Stage"
states="open,pending" type="object" icon="gtk-go-back" />
<button name="stage_next" string="Next Stage"
@@ -309,6 +310,7 @@
domain="[]"
help="Show Sales Team"/>
</field>
<field name="subjects"/>
<newline/>
<group expand="0" string="Extended Filters..." groups="base.group_extended">
<field name="stage_id" widget="selection" domain="[('type', '=', 'opportunity')]"/>
+475 -437
View File
File diff suppressed because it is too large Load Diff
+119 -16
View File
@@ -21,6 +21,8 @@
from osv import osv, fields
from tools.translate import _
import tools
import re
import time
@@ -46,21 +48,35 @@ class crm_lead2opportunity_partner(osv.osv_memory):
"""
lead_obj = self.pool.get('crm.lead')
res = super(crm_lead2opportunity_partner, self).default_get(cr, uid, fields, context=context)
opportunities = res.get('opportunity_ids') or []
partner_id = False
email = False
for lead in lead_obj.browse(cr, uid, opportunities, context=context):
partner_id = lead.partner_id and lead.partner_id.id or False
email = re.findall(r'([^ ,<@]+@[^> ,]+)', lead.email_from or '')
email = map(lambda x: "'" + x + "'", email)
if not partner_id and res.get('partner_id'):
partner_id = res.get('partner_id')
ids = []
if partner_id:
ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id), ('type', '=', 'opportunity')])
opportunities += ids
ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id), ('type', '=', 'opportunity'), '!', ('state', 'in', ['done', 'cancel'])])
if ids:
opportunities.append(ids[0])
if not partner_id:
label = False
opp_ids = []
if email:
# Find email of existing opportunity matches the email_from of the lead
cr.execute("""select id from crm_lead where type='opportunity' and
substring(email_from from '([^ ,<@]+@[^> ,]+)') in (%s)""" % (','.join(email)))
ids = map(lambda x:x[0], cr.fetchall())
if ids:
opportunities.append(ids[0])
if 'action' in fields:
res.update({'action' : partner_id and 'exist' or 'create'})
@@ -82,7 +98,6 @@ class crm_lead2opportunity_partner(osv.osv_memory):
@param uid: the current user’s ID for security checks,
@param fields: List of fields for default value
@param context: A standard dictionary for contextual values
"""
if context is None:
context = {}
@@ -90,13 +105,14 @@ class crm_lead2opportunity_partner(osv.osv_memory):
for lead in lead_obj.browse(cr, uid, context.get('active_ids', []), context=context):
if lead.state in ['done', 'cancel']:
raise osv.except_osv(_("Warning !"), _("Closed/Cancelled \
Leads Could not convert into Opportunity"))
raise osv.except_osv(_("Warning !"), _("Closed/Cancelled Leads Could not convert into Opportunity"))
return False
def _convert(self, cr, uid, ids, lead, partner_id, stage_ids, context=None):
leads = self.pool.get('crm.lead')
address_id = self.pool.get('res.partner.address').search(cr, uid,
address_id = False
if partner_id:
address_id = self.pool.get('res.partner.address').search(cr, uid,
[('partner_id', '=', partner_id)],
order='create_date desc',
limit=1)
@@ -110,8 +126,10 @@ Leads Could not convert into Opportunity"))
'stage_id': stage_ids and stage_ids[0] or False,
'date_action': time.strftime('%Y-%m-%d %H:%M:%S'),
}
if address_id:
if partner_id and address_id:
vals['partner_address_id'] = address_id[0]
else:
vals['partner_address_id'] = False
lead.write(vals, context=context)
leads.history(cr, uid, [lead], _('Converted to opportunity'), details='Converted to Opportunity', context=context)
@@ -122,6 +140,18 @@ Leads Could not convert into Opportunity"))
}, context=context)
leads.log(cr, uid, lead.id, _("Lead '%s' has been converted to an opportunity.") % lead.name)
def send_mail_to_salesman(self, lead):
email_to = lead.user_id and lead.user_id.user_email
if not email_to:
return
email_from = lead.section_id and lead.section_id.user_id and lead.section_id.user_id.user_email or email_to
partner = lead.partner_id and lead.partner_id.name or lead.partner_name
subject = "lead %s converted into opportunity" % lead.name
body = "Info \n Id : %s \n Subject: %s \n Partner: %s \n Description : %s " % (lead.id, lead.name, lead.partner_id.name, lead.description)
try :
tools.email_send(email_from, [email_to], subject, body)
except:
pass
def action_apply(self, cr, uid, ids, context=None):
"""
@@ -130,6 +160,9 @@ Leads Could not convert into Opportunity"))
@return : View dictionary opening the Opportunity form view
"""
if not context:
context = {}
record_id = context and context.get('active_ids') or False
if not record_id:
return {'type': 'ir.actions.act_window_close'}
@@ -154,22 +187,30 @@ Leads Could not convert into Opportunity"))
cr, uid, opportunity_view_tree, context=context).res_id
for lead in leads.browse(cr, uid, record_id, context=context):
if(lead.section_id):
if lead.section_id:
stage_ids = self.pool.get('crm.case.stage').search(cr, uid, [('type','=','opportunity'),('sequence','>=',1), ('section_ids','=', lead.section_id.id)])
else:
stage_ids = self.pool.get('crm.case.stage').search(cr, uid, [('type','=','opportunity'),('sequence','>=',1)])
data = self.browse(cr, uid, ids[0], context=context)
partner_ids = []
if data.action == 'create':
partner_ids = self._create_partner(cr, uid, ids, context=context)
partner_id = partner_ids and partner_ids[0] or data.partner_id.id
if data.action == 'create':
partner_ids = []
partner_ids = self._create_partner(cr, uid, ids, context=context)
partner_id = partner_ids and partner_ids[0]
elif data.action == 'exist':
partner_id = data.partner_id and data.partner_id.id
else:
partner_id = False
self._convert(cr, uid, ids, lead, partner_id, stage_ids, context=context)
if data.name == 'merge':
self.send_mail_to_salesman(lead)
#If we convert in mass, don't merge if there is no other opportunity but no warning
if data.name == 'merge' and (len(data.opportunity_ids) > 1 or not context.get('mass_convert') ):
merge_obj = self.pool.get('crm.merge.opportunity')
self.write(cr, uid, ids, {'opportunity_ids' : [(6,0, [data.opportunity_ids[0].id])]}, context=context)
context.update({'lead_ids' : record_id})
context.update({'lead_ids' : record_id, "convert" : True})
return merge_obj.merge(cr, uid, data.opportunity_ids, context=context)
return {
@@ -189,4 +230,66 @@ Leads Could not convert into Opportunity"))
crm_lead2opportunity_partner()
class crm_lead2opportunity_mass_convert(osv.osv_memory):
_name = 'crm.lead2opportunity.partner.mass'
_description = 'Mass Lead To Opportunity Partner'
_inherit = 'crm.lead2opportunity.partner'
_columns = {
'user_ids': fields.many2many('res.users', 'mass_convert_rel', 'user_id', 'wizard_id', 'Salesmans'),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
}
def mass_convert(self, cr, uid, ids, context=None):
lead_obj = self.pool.get('crm.lead')
if not context:
context = {}
active_ids = context.get('active_ids')
data = self.browse(cr, uid, ids, context=context)[0]
salesteam = data.section_id and data.section_id.id
if data.user_ids:
salesmans = map(lambda x : x.id, data.user_ids)
index = 0
else:
salesmans = False
for lead_id in active_ids:
value = {}
if salesteam:
value['section_id'] = salesteam
if salesmans:
value['user_id'] = salesmans[index]
index += 1
index = index < len(salesmans) and index or 0
if value:
lead_obj.write(cr, uid, [lead_id], value, context=context)
context['active_ids'] = [lead_id]
value = self.default_get(cr, uid, ['partner_id', 'opportunity_ids'], context=context)
value['opportunity_ids'] = [(6, 0, value['opportunity_ids'])]
self.write(cr, uid, ids, value, context=context)
self.action_apply(cr, uid, ids, context=context)
models_data = self.pool.get('ir.model.data')
result = models_data._get_id(cr, uid, 'crm', 'view_crm_case_opportunities_filter')
opportunity_view_search = models_data.browse(cr, uid, result, context=context).res_id
return {
'name': _('Opportunity'),
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'crm.lead',
'domain': [('type', '=', 'opportunity'), ('id', 'in', active_ids)],
'type': 'ir.actions.act_window',
'search_view_id': opportunity_view_search,
}
crm_lead2opportunity_mass_convert()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -36,5 +36,42 @@
</field>
</record>
<record id="view_crm_lead2opportunity_partner_mass" model="ir.ui.view">
<field name="name">crm.lead2opportunity.partner.mass.form</field>
<field name="model">crm.lead2opportunity.partner.mass</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Convert to Opportunity">
<field name="action"/>
<field name="name" colspan="4"/>
<separator string="Assigned opportunities to" colspan="4" />
<field name="section_id" />
<group col="4" colspan="4">
<separator string="Select Salesman" colspan="4" />
</group>
<field name="user_ids" nolabel="1" colspan="4">
<tree>
<field name="name" />
</tree>
</field>
<separator string="" colspan="4" />
<group col="4" colspan="4">
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="mass_convert" string="Convert into Opportunities" type="object" icon="gtk-ok"/>
</group>
</form>
</field>
</record>
<act_window id="action_crm_send_mass_convert"
multi="True"
key2="client_action_multi" name="Convert opportunities"
res_model="crm.lead2opportunity.partner.mass" src_model="crm.lead"
view_mode="form" target="new" view_type="form"
context="{'mass_convert' : True}"
view_id="view_crm_lead2opportunity_partner_mass"/>
</data>
</openerp>
+6 -9
View File
@@ -71,9 +71,8 @@ class crm_lead2partner(osv.osv_memory):
contact_obj = self.pool.get('res.partner.address')
partner_id = False
data = context and context.get('active_ids', []) or []
data = list(context and context.get('active_ids', []) or [])
res = super(crm_lead2partner, self).default_get(cr, uid, fields, context=context)
for lead in lead_obj.browse(cr, uid, data, context=context):
partner_ids = []
# Find partner address matches the email_from of the lead
@@ -85,17 +84,15 @@ class crm_lead2partner(osv.osv_memory):
substring(email from '([^ ,<@]+@[^> ,]+)') in (%s)""" % (','.join(email)))
address_ids = map(lambda x: x[0], cr.fetchall())
if address_ids:
addresses = contact_obj.browse(cr, uid, address_ids)
partner_ids = addresses and [addresses[0].partner_id.id] or False
partner_ids = partner_obj.search(cr, uid, [('address', 'in', address_ids)], context=context)
# Find partner name that matches the name of the lead
if not partner_ids and lead.partner_name:
partner_ids = partner_obj.search(cr, uid, [('name', '=', lead.partner_name)], context=context)
if not partner_ids:
cr.execute("""SELECT p.id from res_partner p
where regexp_replace(lower(p.name), '[^a-z]*', '', 'g') = regexp_replace(%s, '[^a-z]*', '', 'g')""", (lead.name.lower(), ))
partner_ids = map(lambda x: x[0], cr.fetchall())
partner_id = partner_ids and partner_ids[0] or False
if 'partner_id' in fields:
res.update({'partner_id': partner_id})
+66 -38
View File
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
@@ -27,13 +26,19 @@ class crm_merge_opportunity(osv.osv_memory):
_name = 'crm.merge.opportunity'
_description = 'Merge two Opportunities'
def _get_first_not_null_id(self, attr, ops):
def _get_first_not_null_id(self, attr, ops, oldest):
if hasattr(oldest, attr) and getattr(oldest, attr):
return getattr(oldest, attr).id
for op in ops:
if hasattr(op, attr) and getattr(op, attr):
return getattr(op, attr).id
return False
def _get_first_not_null(self, attr, ops):
def _get_first_not_null(self, attr, ops, oldest):
if hasattr(oldest, attr) and getattr(oldest, attr):
return getattr(oldest, attr)
for op in ops:
if hasattr(op, attr) and getattr(op, attr):
return getattr(op, attr)
@@ -53,6 +58,16 @@ class crm_merge_opportunity(osv.osv_memory):
attach_obj.write(cr, uid, attach_ids, {'res_id' : op_id})
def find_oldest(self, cr, uid, op_ids, context=None):
if not context:
context = {}
ids = [op_id.id for op_id in op_ids]
if context.get('convert'):
ids = list(set(ids) - set(context.get('lead_ids', False)) )
lead_obj = self.pool.get('crm.lead')
op_id = lead_obj.search(cr, uid, [('id', 'in', ids)], order='create_date' , context=context)
opps = lead_obj.browse(cr, uid, [op_id[0]], context=context)
return opps[0]
def merge(self, cr, uid, op_ids, context=None):
"""
@@ -61,61 +76,69 @@ class crm_merge_opportunity(osv.osv_memory):
opp_obj = self.pool.get('crm.lead')
message_obj = self.pool.get('mailgate.message')
lead_ids = context and context.pop('lead_ids', []) or []
lead_ids = context and context.get('lead_ids', []) or []
if len(op_ids) <= 1:
raise osv.except_osv(_('Warning !'),_('Please select more than one opportunities.'))
opportunities = opp_obj.browse(cr, uid, lead_ids, context=context)
opportunities_list = list(set(op_ids) - set(opportunities))
oldest_opp = self.find_oldest(cr, uid, op_ids, context=context)
if opportunities :
first_opportunity = opportunities[0]
tail_opportunities = opportunities_list
else:
first_opportunity = opportunities_list[0]
tail_opportunities = opportunities_list[1:]
data = {
'partner_id': self._get_first_not_null_id('partner_id', op_ids), # !!
'title': self._get_first_not_null_id('title', op_ids),
'name' : self._concat_all('name', op_ids), #not lost
'categ_id' : self._get_first_not_null_id('categ_id', op_ids), # !!
'channel_id' : self._get_first_not_null_id('channel_id', op_ids), # !!
'city' : self._get_first_not_null('city', op_ids), # !!
'company_id' : self._get_first_not_null_id('company_id', op_ids), #!!
'contact_name' : self._concat_all('contact_name', op_ids), #not lost
'country_id' : self._get_first_not_null_id('country_id', op_ids), #!!
'partner_address_id' : self._get_first_not_null_id('partner_address_id', op_ids), #!!
'partner_assigned_id' : hasattr(opp_obj,'partner_assigned_id') and self._get_first_not_null_id('partner_assigned_id', op_ids), #!!
'type_id' : self._get_first_not_null_id('type_id', op_ids), #!!
'user_id' : self._get_first_not_null_id('user_id', op_ids), #!!
'section_id' : self._get_first_not_null_id('section_id', op_ids), #!!
'state_id' : self._get_first_not_null_id('state_id', op_ids),
'partner_id': self._get_first_not_null_id('partner_id', op_ids, oldest_opp), # !!
'title': self._get_first_not_null_id('title', op_ids, oldest_opp),
'name' : self._get_first_not_null('name', op_ids, oldest_opp), #not lost
'categ_id' : self._get_first_not_null_id('categ_id', op_ids, oldest_opp), # !!
'channel_id' : self._get_first_not_null_id('channel_id', op_ids, oldest_opp), # !!
'city' : self._get_first_not_null('city', op_ids, oldest_opp), # !!
'company_id' : self._get_first_not_null_id('company_id', op_ids, oldest_opp), #!!
'contact_name' : self._get_first_not_null('contact_name', op_ids, oldest_opp), #not lost
'country_id' : self._get_first_not_null_id('country_id', op_ids, oldest_opp), #!!
'partner_address_id' : self._get_first_not_null_id('partner_address_id', op_ids, oldest_opp), #!!
'partner_assigned_id' : hasattr(opp_obj,'partner_assigned_id') and self._get_first_not_null_id('partner_assigned_id', op_ids, oldest_opp), #!!
'type_id' : self._get_first_not_null_id('type_id', op_ids, oldest_opp), #!!
'user_id' : self._get_first_not_null_id('user_id', op_ids, oldest_opp), #!!
'section_id' : self._get_first_not_null_id('section_id', op_ids, oldest_opp), #!!
'state_id' : self._get_first_not_null_id('state_id', op_ids, oldest_opp),
'description' : self._concat_all('description', op_ids), #not lost
'email' : self._get_first_not_null('email', op_ids), # !!
'fax' : self._get_first_not_null('fax', op_ids),
'mobile' : self._get_first_not_null('mobile', op_ids),
'partner_latitude' : hasattr(opp_obj,'partner_latitude') and self._get_first_not_null('partner_latitude', op_ids),
'partner_longitude' : hasattr(opp_obj,'partner_longitude') and self._get_first_not_null('partner_longitude', op_ids),
'partner_name' : self._get_first_not_null('partner_name', op_ids),
'phone' : self._get_first_not_null('phone', op_ids),
'probability' : self._get_first_not_null('probability', op_ids),
'planned_revenue' : self._get_first_not_null('planned_revenue', op_ids),
'street' : self._get_first_not_null('street', op_ids),
'street2' : self._get_first_not_null('street2', op_ids),
'zip' : self._get_first_not_null('zip', op_ids),
'email' : self._get_first_not_null('email', op_ids, oldest_opp), # !!
'fax' : self._get_first_not_null('fax', op_ids, oldest_opp),
'mobile' : self._get_first_not_null('mobile', op_ids, oldest_opp),
'partner_latitude' : hasattr(opp_obj,'partner_latitude') and self._get_first_not_null('partner_latitude', op_ids, oldest_opp),
'partner_longitude' : hasattr(opp_obj,'partner_longitude') and self._get_first_not_null('partner_longitude', op_ids, oldest_opp),
'partner_name' : self._get_first_not_null('partner_name', op_ids, oldest_opp),
'phone' : self._get_first_not_null('phone', op_ids, oldest_opp),
'probability' : self._get_first_not_null('probability', op_ids, oldest_opp),
'planned_revenue' : self._get_first_not_null('planned_revenue', op_ids, oldest_opp),
'street' : self._get_first_not_null('street', op_ids, oldest_opp),
'street2' : self._get_first_not_null('street2', op_ids, oldest_opp),
'zip' : self._get_first_not_null('zip', op_ids, oldest_opp),
'state' : 'open',
'create_date' : self._get_first_not_null('create_date', op_ids, oldest_opp),
'date_action_last': self._get_first_not_null('date_action_last', op_ids, oldest_opp),
'date_action_next': self._get_first_not_null('date_action_nexte', op_ids, oldest_opp),
'email_from' : self._get_first_not_null('email_from', op_ids, oldest_opp),
'email_cc' : self._get_first_not_null('email_cc', op_ids, oldest_opp),
'partner_name' : self._get_first_not_null('partner_name', op_ids, oldest_opp),
}
#copy message into the first opportunity + merge attachement
for opp in tail_opportunities:
for opp in tail_opportunities + [first_opportunity]:
attach_ids = self.get_attachments(cr, uid, opp, context=context)
self.set_attachements_res_id(cr, uid, first_opportunity.id, attach_ids)
for history in opp.message_ids:
message_obj.copy(cr, uid, history.id, default={'res_id': opp.id})
new_history = message_obj.write(cr, uid, history.id, {'res_id': first_opportunity.id, 'name' : _("From %s : %s") % (opp.name, history.name) }, context=context)
#Notification about loss of information
details = []
@@ -211,8 +234,13 @@ class crm_merge_opportunity(osv.osv_memory):
res = super(crm_merge_opportunity, self).default_get(cr, uid, fields, context=context)
if record_ids:
opp_ids = []
opps = self.pool.get('crm.lead').browse(cr, uid, record_ids, context=context)
for opp in opps:
if opp.state not in ('done', 'cancel'):
opp_ids.append(opp.id)
if 'opportunity_ids' in fields:
res.update({'opportunity_ids': record_ids})
res.update({'opportunity_ids': opp_ids})
return res
+33 -3
View File
@@ -57,9 +57,25 @@ class crm_send_new_email(osv.osv_memory):
'body': fields.text('Message Body', required=True),
'state': fields.selection(AVAILABLE_STATES, string='Set New State To', required=True),
'attachment_ids' : fields.one2many('crm.send.mail.attachment', 'wizard_id', 'Attachment'),
'html': fields.boolean('HTML formatting?', help="Select this if you want to send email with HTML formatting."),
'html': fields.boolean('HTML formatting?', help="Select this if you want to send email with HTML formatting."),
}
def action_mass_send(self, cr, uid, ids, context=None):
if not context:
context = {}
context.update({'mail' : 'new'})
actives_ids = context.get('active_ids')
print "mass_mail", context.get('mass_mail')
model = context.get('active_model')
case_pool = self.pool.get(model)
for id in actives_ids:
context.update({'active_id' : id})
self.action_send(cr, uid, ids, context=context)
return {'type': 'ir.actions.act_window_close'}
def action_send(self, cr, uid, ids, context=None):
""" This sends an email to ALL the addresses of the selected partners.
"""
@@ -75,6 +91,8 @@ class crm_send_new_email(osv.osv_memory):
case_pool = self.pool.get(model)
res_id = context and context.get('active_id', False) or False
for obj in self.browse(cr, uid, ids, context=context):
attach = [
(x.name, base64.decodestring(x.binary)) for x in obj.attachment_ids
@@ -110,8 +128,15 @@ class crm_send_new_email(osv.osv_memory):
res_id = hist.res_id
ref_id = hist.ref_id
case = case_pool.browse(cr, uid, res_id, context=context)
emails = re.findall(r'([^ ,<@]+@[^> ,]+)', obj.email_to or '')
if context.get('mass_mail'):
email_temp = case.email_from and tools.ustr(case.email_from) or ''
emails = re.findall(r'([^ ,<@]+@[^> ,]+)', email_temp)
else:
emails = re.findall(r'([^ ,<@]+@[^> ,]+)', obj.email_to or '')
email_cc = re.findall(r'([^ ,<@]+@[^> ,]+)', obj.email_cc or '')
emails = filter(None, emails)
body = obj.body
@@ -180,10 +205,11 @@ class crm_send_new_email(osv.osv_memory):
user_obj = self.pool.get('res.users')
user_mail_from = user_obj._get_email_from(cr, uid, [uid], context=context)[uid]
for case in mod_obj.browse(cr, uid, res_id, context=context):
if 'email_to' in fields:
res.update({'email_to': case.email_from and tools.ustr(case.email_from) or ''})
if context.get('mass_mail'):
res.update({'email_to': ''})
if 'email_from' in fields:
res.update({'email_from': user_mail_from and tools.ustr(user_mail_from) or ''})
if 'reply_to' in fields:
@@ -191,8 +217,12 @@ class crm_send_new_email(osv.osv_memory):
res.update({'reply_to': case.section_id and case.section_id.reply_to or False})
if 'subject' in fields:
res.update({'subject': tools.ustr(context.get('subject', case.name) or '')})
if context.get('mass_mail'):
res.update({'subject': ''})
if 'email_cc' in fields:
res.update({'email_cc': tools.ustr(case.email_cc or '')})
if context.get('mass_mail'):
res.update({'email_cc': ''})
if 'body' in fields:
res.update({'body': u'\n'+(tools.ustr(case.user_id.signature or ''))})
if 'state' in fields:
+50
View File
@@ -44,6 +44,45 @@
</field>
</record>
<record model="ir.ui.view" id="crm_send_new_mass_mail_view">
<field name="name">crm.new.send.mass.mail.form</field>
<field name="model">crm.send.mail</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Send Mail" col="4">
<group colspan="4" col="2">
<field name="email_from"/>
<field name="reply_to"/>
<field name="email_cc"/>
<field name="subject" />
<field name="html"/>
</group>
<notebook colspan="6">
<page string="Message">
<field name="body" nolabel="1" colspan="4" default_focus="1"/>
</page>
<page string="Attachments">
<field name="attachment_ids" colspan="4" nolabel="1">
<form string="Attachment">
<field name="binary" filename="name" />
<field name="name" />
</form>
<tree string="Attachments">
<field name="name" />
</tree>
</field>
</page>
</notebook>
<separator string="" colspan="6"/>
<group colspan="6" col="4" >
<field name="state" />
<button string="_Cancel" icon="gtk-cancel" special="cancel" />
<button name="action_mass_send" type="object" string="_Send to All" icon="gtk-go-forward" />
</group>
</form>
</field>
</record>
<!-- Send New Mail action -->
<record model="ir.actions.act_window" id="action_crm_send_mail">
@@ -56,6 +95,14 @@
</record>
<act_window id="action_crm_send_mass_mail"
multi="True"
key2="client_action_multi" name="Send emails"
res_model="crm.send.mail" src_model="crm.lead"
view_mode="form" target="new" view_type="form"
context="{'mass_mail' : True}"
view_id="crm_send_new_mass_mail_view"/>
<!-- Reply to Mail view -->
<record model="ir.ui.view" id="crm_reply_mail_view">
@@ -89,6 +136,9 @@
</field>
</record>
<!-- Reply to Mail action -->
<record model="ir.actions.act_window" id="action_crm_reply_mail">
+49
View File
@@ -0,0 +1,49 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-04-10 17:34+0000\n"
"Last-Translator: Black Jack <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: 2011-04-11 04:54+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: crm_caldav
#: model:ir.actions.act_window,name:crm_caldav.action_caldav_browse
msgid "Caldav Browse"
msgstr "Caldav翻阅"
#. module: crm_caldav
#: model:ir.model,name:crm_caldav.model_crm_meeting
msgid "Meeting"
msgstr "会议"
#. module: crm_caldav
#: model:ir.module.module,shortdesc:crm_caldav.module_meta_information
msgid "Extended Module to Add CalDav feature on Meeting"
msgstr "扩展模块增加会议的Caldav功能"
#. module: crm_caldav
#: model:ir.module.module,description:crm_caldav.module_meta_information
msgid ""
"\n"
" New Features in Meeting:\n"
" * Share meeting with other calendar clients like sunbird\n"
msgstr ""
"\n"
" 会议的新功能\n"
" *通过连接Mozilla Sunbird与使用日程表的客户共享会议\n"
#. module: crm_caldav
#: model:ir.ui.menu,name:crm_caldav.menu_caldav_browse
msgid "Synchronyze this calendar"
msgstr "同步calendar"
+758
View File
@@ -0,0 +1,758 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-04-11 05:47+0000\n"
"Last-Translator: Black Jack <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: 2011-04-12 04:34+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: crm_claim
#: field:crm.claim.report,nbr:0
msgid "# of Cases"
msgstr "# 业务"
#. module: crm_claim
#: view:crm.claim:0
#: view:crm.claim.report:0
msgid "Group By..."
msgstr "分组..."
#. module: crm_claim
#: view:crm.claim:0
msgid "Responsibilities"
msgstr "责任人"
#. module: crm_claim
#: field:crm.claim,date_action_next:0
msgid "Next Action Date"
msgstr "下一动作日期"
#. module: crm_claim
#: field:crm.claim.report,probability:0
msgid "Probability"
msgstr "概率"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "March"
msgstr "3月"
#. module: crm_claim
#: field:crm.claim.report,delay_close:0
msgid "Delay to close"
msgstr "延迟关闭"
#. module: crm_claim
#: field:crm.claim,resolution:0
msgid "Resolution"
msgstr "解决方案"
#. module: crm_claim
#: field:crm.claim,company_id:0
#: view:crm.claim.report:0
#: field:crm.claim.report,company_id:0
msgid "Company"
msgstr "公司"
#. module: crm_claim
#: field:crm.claim,email_cc:0
msgid "Watchers Emails"
msgstr "关注者的电子邮件"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "#Claim"
msgstr "#索赔"
#. module: crm_claim
#: model:ir.actions.act_window,help:crm_claim.crm_claim_stage_act
msgid ""
"You can create claim stages to categorize the status of every claim entered "
"in the system. The stages define all the steps required for the resolution "
"of a claim."
msgstr "你能创建索赔阶段的类型把每个索赔的状况输入到系统。阶段定义所有索赔请求的解决步骤。"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "Highest"
msgstr "最高"
#. module: crm_claim
#: view:crm.claim.report:0
#: field:crm.claim.report,day:0
msgid "Day"
msgstr "日"
#. module: crm_claim
#: view:crm.claim:0
msgid "Add Internal Note"
msgstr "添加内部备注"
#. module: crm_claim
#: help:crm.claim,section_id:0
msgid ""
"Sales team to which Case belongs to.Define Responsible user and Email "
"account for mail gateway."
msgstr "业务的销售团队定义负责用户和邮件网关的邮件地址。"
#. module: crm_claim
#: view:crm.claim:0
msgid "Claim Description"
msgstr "索陪说明"
#. module: crm_claim
#: field:crm.claim,message_ids:0
msgid "Messages"
msgstr "消息"
#. module: crm_claim
#: model:crm.case.categ,name:crm_claim.categ_claim1
msgid "Factual Claims"
msgstr "实际索赔"
#. module: crm_claim
#: selection:crm.claim,state:0
#: selection:crm.claim.report,state:0
msgid "Cancelled"
msgstr "已取消"
#. module: crm_claim
#: model:crm.case.resource.type,name:crm_claim.type_claim2
msgid "Preventive"
msgstr "预防"
#. module: crm_claim
#: model:crm.case.stage,name:crm_claim.stage_claim2
msgid "Fixed"
msgstr "固定的"
#. module: crm_claim
#: field:crm.claim,partner_address_id:0
msgid "Partner Contact"
msgstr "业务伙伴联系方式"
#. module: crm_claim
#: field:crm.claim.report,date_closed:0
msgid "Close Date"
msgstr "结束日期"
#. module: crm_claim
#: view:crm.claim.report:0
msgid " Month "
msgstr " 月 "
#. module: crm_claim
#: field:crm.claim,ref:0
msgid "Reference"
msgstr "参考"
#. module: crm_claim
#: field:crm.claim,action_next:0
msgid "Next Action"
msgstr "下一动作"
#. module: crm_claim
#: view:crm.claim:0
msgid "Reset to Draft"
msgstr "重置为草稿"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,date_deadline:0
#: field:crm.claim.report,date_deadline:0
msgid "Deadline"
msgstr "截止日期"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,partner_id:0
#: view:crm.claim.report:0
#: field:crm.claim.report,partner_id:0
msgid "Partner"
msgstr "业务伙伴"
#. module: crm_claim
#: selection:crm.claim,type_action:0
#: selection:crm.claim.report,type_action:0
msgid "Preventive Action"
msgstr "预防性动作"
#. module: crm_claim
#: field:crm.claim.report,section_id:0
msgid "Section"
msgstr "分类"
#. module: crm_claim
#: view:crm.claim:0
msgid "Root Causes"
msgstr "根本原因"
#. module: crm_claim
#: field:crm.claim,user_fault:0
msgid "Trouble Responsible"
msgstr "故障责任"
#. module: crm_claim
#: field:crm.claim,priority:0
#: view:crm.claim.report:0
#: field:crm.claim.report,priority:0
msgid "Priority"
msgstr "优先级"
#. module: crm_claim
#: view:crm.claim:0
msgid "Send New Email"
msgstr "发送新的电子邮件"
#. module: crm_claim
#: field:crm.claim.report,delay_expected:0
msgid "Overpassed Deadline"
msgstr "超越截止日期"
#. module: crm_claim
#: view:crm.claim:0
#: view:crm.claim.report:0
msgid "Type"
msgstr "类型:"
#. module: crm_claim
#: field:crm.claim,email_from:0
msgid "Email"
msgstr "电子邮件"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "Lowest"
msgstr "最低"
#. module: crm_claim
#: field:crm.claim,create_date:0
msgid "Creation Date"
msgstr "创建日期"
#. module: crm_claim
#: field:crm.claim,name:0
msgid "Claim Subject"
msgstr "索赔主题"
#. module: crm_claim
#: model:ir.actions.act_window,help:crm_claim.action_report_crm_claim
msgid ""
"Have a general overview of all claims processed in the system by sorting "
"them with specific criteria."
msgstr "所有索赔都有一个一般描述在系统里还对它们按具体的标准分类。"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "July"
msgstr "7月"
#. module: crm_claim
#: model:ir.actions.act_window,name:crm_claim.crm_claim_stage_act
msgid "Claim Stages"
msgstr "索赔阶段"
#. module: crm_claim
#: model:ir.ui.menu,name:crm_claim.menu_crm_case_claim-act
msgid "Categories"
msgstr "类型"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,stage_id:0
#: view:crm.claim.report:0
#: field:crm.claim.report,stage_id:0
msgid "Stage"
msgstr "阶段"
#. module: crm_claim
#: view:crm.claim:0
msgid "History Information"
msgstr "日志信息"
#. module: crm_claim
#: view:crm.claim:0
msgid "Dates"
msgstr "日期"
#. module: crm_claim
#: view:crm.claim.report:0
msgid " Month-1 "
msgstr " 上月 "
#. module: crm_claim
#: view:crm.claim:0
msgid "Contact"
msgstr "联系方式"
#. module: crm_claim
#: model:ir.ui.menu,name:crm_claim.menu_crm_claim_stage_act
msgid "Stages"
msgstr "阶段"
#. module: crm_claim
#: model:ir.ui.menu,name:crm_claim.menu_report_crm_claim_tree
msgid "Claims Analysis"
msgstr "索赔分析"
#. module: crm_claim
#: help:crm.claim.report,delay_close:0
msgid "Number of Days to close the case"
msgstr "到期天数"
#. module: crm_claim
#: model:ir.model,name:crm_claim.model_crm_claim_report
msgid "CRM Claim Report"
msgstr "客户关系管理索赔报表"
#. module: crm_claim
#: model:crm.case.stage,name:crm_claim.stage_claim1
msgid "Accepted as Claim"
msgstr "作为索赔接受"
#. module: crm_claim
#: model:crm.case.resource.type,name:crm_claim.type_claim1
msgid "Corrective"
msgstr "纠正"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "September"
msgstr "9月"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "December"
msgstr "12月"
#. module: crm_claim
#: view:crm.claim.report:0
#: field:crm.claim.report,month:0
msgid "Month"
msgstr "月"
#. module: crm_claim
#: field:crm.claim,type_action:0
#: field:crm.claim.report,type_action:0
msgid "Action Type"
msgstr "动作类型"
#. module: crm_claim
#: field:crm.claim,write_date:0
msgid "Update Date"
msgstr "更新日期"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Salesman"
msgstr "业务员"
#. module: crm_claim
#: field:crm.claim,categ_id:0
#: view:crm.claim.report:0
#: field:crm.claim.report,categ_id:0
msgid "Category"
msgstr "类型"
#. module: crm_claim
#: model:crm.case.categ,name:crm_claim.categ_claim2
msgid "Value Claims"
msgstr "索赔金额"
#. module: crm_claim
#: view:crm.claim.report:0
msgid " Year "
msgstr " 年 "
#. module: crm_claim
#: help:crm.claim,email_cc:0
msgid ""
"These email addresses will be added to the CC field of all inbound and "
"outbound emails for this record before being sent. Separate multiple email "
"addresses with a comma"
msgstr "这些邮件地址将添加到之前发送记录的发送和接收邮件的抄送字段,分隔多个邮件地址有逗号。"
#. module: crm_claim
#: selection:crm.claim,state:0
#: view:crm.claim.report:0
#: selection:crm.claim.report,state:0
msgid "Draft"
msgstr "草稿"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "Low"
msgstr "低"
#. module: crm_claim
#: field:crm.claim,date_closed:0
#: selection:crm.claim,state:0
#: selection:crm.claim.report,state:0
msgid "Closed"
msgstr "已结束"
#. module: crm_claim
#: view:crm.claim:0
#: selection:crm.claim,state:0
#: view:crm.claim.report:0
#: selection:crm.claim.report,state:0
msgid "Pending"
msgstr "待定中"
#. module: crm_claim
#: view:crm.claim:0
msgid "Communication & History"
msgstr "沟通&日志"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "August"
msgstr "8月"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "Normal"
msgstr "普通"
#. module: crm_claim
#: view:crm.claim:0
msgid "Global CC"
msgstr "完整抄送"
#. module: crm_claim
#: model:ir.module.module,shortdesc:crm_claim.module_meta_information
msgid "Customer & Supplier Relationship Management"
msgstr "客户&供应商关系管理"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "June"
msgstr "6月"
#. module: crm_claim
#: field:crm.claim,partner_phone:0
msgid "Phone"
msgstr "电话"
#. module: crm_claim
#: field:crm.claim.report,user_id:0
msgid "User"
msgstr "用户"
#. module: crm_claim
#: model:crm.case.stage,name:crm_claim.stage_claim5
msgid "Awaiting Response"
msgstr "等待回复"
#. module: crm_claim
#: model:ir.actions.act_window,name:crm_claim.crm_claim_categ_action
msgid "Claim Categories"
msgstr "索赔类型"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "November"
msgstr "11月"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Extended Filters..."
msgstr "扩展过滤..."
#. module: crm_claim
#: view:crm.claim:0
msgid "Closure"
msgstr "关闭"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Search"
msgstr "查找"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "October"
msgstr "10月"
#. module: crm_claim
#: model:ir.module.module,description:crm_claim.module_meta_information
msgid ""
"\n"
"This modules allows you to track your customers/suppliers claims and "
"flames.\n"
"It is fully integrated with the email gateway so that you can create\n"
"automatically new claims based on incoming emails.\n"
" "
msgstr ""
"\n"
"这模块能跟踪你客户和供应商索赔和不满,它是全面整合在电子邮件的网关中,所以你能基于收到的邮件自动创建新的索赔\n"
" "
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "January"
msgstr "1月"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,date:0
msgid "Claim Date"
msgstr "索赔日期"
#. module: crm_claim
#: help:crm.claim,email_from:0
msgid "These people will receive email."
msgstr "这些人将收到电子邮件。"
#. module: crm_claim
#: view:crm.claim:0
#: view:crm.claim.report:0
#: model:ir.actions.act_window,name:crm_claim.action_report_crm_claim
#: model:ir.actions.act_window,name:crm_claim.crm_case_categ_claim0
#: model:ir.ui.menu,name:crm_claim.menu_crm_case_claims
msgid "Claims"
msgstr "索赔"
#. module: crm_claim
#: selection:crm.claim,type_action:0
#: selection:crm.claim.report,type_action:0
msgid "Corrective Action"
msgstr "纠正的动作"
#. module: crm_claim
#: model:crm.case.categ,name:crm_claim.categ_claim3
msgid "Policy Claims"
msgstr "保险单索赔"
#. module: crm_claim
#: view:crm.claim:0
msgid "History"
msgstr "日志"
#. module: crm_claim
#: model:ir.model,name:crm_claim.model_crm_claim
#: model:ir.ui.menu,name:crm_claim.menu_config_claim
msgid "Claim"
msgstr "索赔"
#. module: crm_claim
#: view:crm.claim:0
msgid "Attachments"
msgstr "附件"
#. module: crm_claim
#: model:ir.model,name:crm_claim.model_crm_case_stage
msgid "Stage of case"
msgstr "业务阶段"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,state:0
#: view:crm.claim.report:0
#: field:crm.claim.report,state:0
msgid "State"
msgstr "州/省"
#. module: crm_claim
#: view:crm.claim:0
#: view:crm.claim.report:0
msgid "Done"
msgstr "完成"
#. module: crm_claim
#: view:crm.claim:0
msgid "Claim Reporter"
msgstr "索赔记者"
#. module: crm_claim
#: view:crm.claim:0
#: view:crm.claim.report:0
msgid "Cancel"
msgstr "取消"
#. module: crm_claim
#: view:crm.claim:0
msgid "Close"
msgstr "结束"
#. module: crm_claim
#: view:crm.claim:0
#: selection:crm.claim,state:0
#: view:crm.claim.report:0
#: selection:crm.claim.report,state:0
msgid "Open"
msgstr "开启"
#. module: crm_claim
#: view:crm.claim:0
msgid "In Progress"
msgstr "进行中"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,user_id:0
msgid "Responsible"
msgstr "负责人"
#. module: crm_claim
#: view:crm.claim:0
msgid "Current"
msgstr "当前的"
#. module: crm_claim
#: view:crm.claim:0
msgid "Details"
msgstr "明细行"
#. module: crm_claim
#: view:crm.claim:0
msgid "Reply"
msgstr "回复"
#. module: crm_claim
#: field:crm.claim,cause:0
msgid "Root Cause"
msgstr "根本原因"
#. module: crm_claim
#: view:crm.claim:0
msgid "Claim/Action Description"
msgstr "索赔/动作说明"
#. module: crm_claim
#: field:crm.claim,description:0
msgid "Description"
msgstr "说明"
#. module: crm_claim
#: view:crm.claim:0
msgid "Search Claims"
msgstr "查找索赔"
#. module: crm_claim
#: field:crm.claim,section_id:0
#: view:crm.claim.report:0
msgid "Sales Team"
msgstr "销售团队"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "May"
msgstr "5月"
#. module: crm_claim
#: view:crm.claim:0
msgid "Resolution Actions"
msgstr "决定采取的行动"
#. module: crm_claim
#: model:ir.actions.act_window,name:crm_claim.act_claim_partner
#: model:ir.actions.act_window,name:crm_claim.act_claim_partner_address
msgid "Report a Claim"
msgstr "报告一个索赔"
#. module: crm_claim
#: model:ir.actions.act_window,help:crm_claim.crm_case_categ_claim0
msgid ""
"Record and track your customers' claims. Claims may be linked to a sales "
"order or a lot. You can send emails with attachments and keep the full "
"history for a claim (emails sent, intervention type and so on). Claims may "
"automatically be linked to an email address using the mail gateway module."
msgstr ""
"记录和跟踪你客户的索赔,索赔可以链接到一个或很多销售订单中。你可以发送带附件的邮件和保留一个索赔的所有日志(邮件发送,介入类型等)。索赔可以自动链接到电子"
"邮件使用的网关。"
#. module: crm_claim
#: field:crm.claim.report,email:0
msgid "# Emails"
msgstr "电子邮件"
#. module: crm_claim
#: view:crm.claim:0
msgid "Follow Up"
msgstr "跟进"
#. module: crm_claim
#: help:crm.claim,state:0
msgid ""
"The state is set to 'Draft', when a case is created. "
" \n"
"If the case is in progress the state is set to 'Open'. "
" \n"
"When the case is over, the state is set to 'Done'. "
" \n"
"If the case needs to be reviewed then the state is set to 'Pending'."
msgstr ""
"当一个业务创建时状态设为'草稿'\n"
"如果业务正在处理状态设为'开启'\n"
"当业务结束状态设为'完成'\n"
"如果业务需要审查状态设为'待定'"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "February"
msgstr "2月"
#. module: crm_claim
#: model:crm.case.stage,name:crm_claim.stage_claim3
msgid "Won't fix"
msgstr "不修正"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "April"
msgstr "4月"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "My Case(s)"
msgstr "我的业务"
#. module: crm_claim
#: field:crm.claim,id:0
msgid "ID"
msgstr ""
#. module: crm_claim
#: view:crm.claim:0
msgid "Actions"
msgstr "动作"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "High"
msgstr "高"
#. module: crm_claim
#: model:ir.actions.act_window,help:crm_claim.crm_claim_categ_action
msgid ""
"Create claim categories to better manage and classify your claims. Some "
"example of claims can be: preventive action, corrective action."
msgstr "创建索赔的类型以更好管理和分类你的索赔。如:索赔可以是预防措施、纠正措施。"
#. module: crm_claim
#: field:crm.claim.report,create_date:0
msgid "Create Date"
msgstr "创建日期"
#. module: crm_claim
#: view:crm.claim.report:0
#: field:crm.claim.report,name:0
msgid "Year"
msgstr "年"
+768
View File
@@ -0,0 +1,768 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-04-11 07:40+0000\n"
"Last-Translator: Black Jack <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: 2011-04-12 04:34+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: crm_fundraising
#: field:crm.fundraising,planned_revenue:0
msgid "Planned Revenue"
msgstr "计划收入"
#. module: crm_fundraising
#: field:crm.fundraising.report,nbr:0
msgid "# of Cases"
msgstr "# 业务"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "Group By..."
msgstr "分组..."
#. module: crm_fundraising
#: field:crm.fundraising.report,probability:0
msgid "Avg. Probability"
msgstr "平均概率"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "March"
msgstr "3月"
#. module: crm_fundraising
#: field:crm.fundraising.report,delay_close:0
msgid "Delay to close"
msgstr "延迟关闭"
#. module: crm_fundraising
#: field:crm.fundraising,company_id:0
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,company_id:0
msgid "Company"
msgstr "公司"
#. module: crm_fundraising
#: model:ir.actions.act_window,name:crm_fundraising.crm_fund_categ_action
msgid "Fundraising Categories"
msgstr "集资类型"
#. module: crm_fundraising
#: field:crm.fundraising,email_cc:0
msgid "Watchers Emails"
msgstr "关注者的电子邮件"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Cases"
msgstr "业务"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "Highest"
msgstr "最高"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,day:0
msgid "Day"
msgstr "日"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Add Internal Note"
msgstr "添加内部备注"
#. module: crm_fundraising
#: field:crm.fundraising,partner_mobile:0
msgid "Mobile"
msgstr "手机"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Notes"
msgstr "备注"
#. module: crm_fundraising
#: field:crm.fundraising,message_ids:0
msgid "Messages"
msgstr "消息"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Amount"
msgstr "金额"
#. module: crm_fundraising
#: model:crm.case.categ,name:crm_fundraising.categ_fund4
msgid "Arts And Culture"
msgstr "艺术文化"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,amount_revenue:0
msgid "Est.Revenue"
msgstr "预计收入"
#. module: crm_fundraising
#: field:crm.fundraising,partner_address_id:0
msgid "Partner Contact"
msgstr "业务伙伴联系方式"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid " Month "
msgstr " 月 "
#. module: crm_fundraising
#: field:crm.fundraising,type_id:0
msgid "Campaign"
msgstr "营销活动"
#. module: crm_fundraising
#: field:crm.fundraising,date_action_next:0
msgid "Next Action"
msgstr "下一动作"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Reset to Draft"
msgstr "重置为草稿"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Extra Info"
msgstr "额外信息"
#. module: crm_fundraising
#: model:ir.model,name:crm_fundraising.model_crm_fundraising
#: model:ir.ui.menu,name:crm_fundraising.menu_config_fundrising
#: model:ir.ui.menu,name:crm_fundraising.menu_crm_case_fund_raise
msgid "Fund Raising"
msgstr "资金募集"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,partner_id:0
#: field:crm.fundraising.report,partner_id:0
msgid "Partner"
msgstr "业务伙伴"
#. module: crm_fundraising
#: model:ir.ui.menu,name:crm_fundraising.menu_report_crm_fundraising_tree
msgid "Fundraising Analysis"
msgstr "资金募集分析"
#. module: crm_fundraising
#: model:ir.module.module,shortdesc:crm_fundraising.module_meta_information
msgid "CRM Fundraising"
msgstr "客户关系管理 资金募集"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Misc"
msgstr "杂项"
#. module: crm_fundraising
#: field:crm.fundraising.report,section_id:0
msgid "Section"
msgstr "分类"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,priority:0
msgid "Priority"
msgstr "优先级"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Send New Email"
msgstr "发送新的电子邮件"
#. module: crm_fundraising
#: model:crm.case.categ,name:crm_fundraising.categ_fund1
msgid "Social Rehabilitation And Rural Upliftment"
msgstr "社会康复和农场振兴"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "Payment Mode"
msgstr "支付方式"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Reply"
msgstr "回复"
#. module: crm_fundraising
#: field:crm.fundraising,email_from:0
msgid "Email"
msgstr "电子邮件"
#. module: crm_fundraising
#: field:crm.fundraising,canal_id:0
msgid "Channel"
msgstr "途径"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "Lowest"
msgstr "最低"
#. module: crm_fundraising
#: field:crm.fundraising,create_date:0
msgid "Creation Date"
msgstr "创建日期"
#. module: crm_fundraising
#: field:crm.fundraising,date_deadline:0
msgid "Deadline"
msgstr "截止日期"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "July"
msgstr "7月"
#. module: crm_fundraising
#: model:ir.ui.menu,name:crm_fundraising.menu_crm_case_fundraising-act
msgid "Categories"
msgstr "类型"
#. module: crm_fundraising
#: field:crm.fundraising,stage_id:0
msgid "Stage"
msgstr "阶段"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "History Information"
msgstr "日志信息"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Dates"
msgstr "日期"
#. module: crm_fundraising
#: field:crm.fundraising,partner_name2:0
msgid "Employee Email"
msgstr "员工邮箱"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid " Month-1 "
msgstr " 上月 "
#. module: crm_fundraising
#: selection:crm.fundraising,state:0
#: selection:crm.fundraising.report,state:0
msgid "Cancelled"
msgstr "已取消"
#. module: crm_fundraising
#: model:crm.case.categ,name:crm_fundraising.categ_fund2
msgid "Learning And Education"
msgstr "学习和教育"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Contact"
msgstr "联系方式"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Funds Form"
msgstr "资金类型"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Fund Description"
msgstr "资金说明"
#. module: crm_fundraising
#: help:crm.fundraising.report,delay_close:0
msgid "Number of Days to close the case"
msgstr "到期天数"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "References"
msgstr "参考"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: model:ir.actions.act_window,name:crm_fundraising.action_report_crm_fundraising
#: model:ir.module.module,description:crm_fundraising.module_meta_information
msgid "Fundraising"
msgstr "资金募集"
#. module: crm_fundraising
#: model:ir.actions.act_window,help:crm_fundraising.action_report_crm_fundraising
msgid ""
"Have a general overview of all fund raising activities by sorting them with "
"specific criteria such as the estimated revenue, average success probability "
"and delay to close."
msgstr "所有的资金募集活动都有一个一般概述并按具体的标准分类。如预计收入,平均成功的概率和延迟关闭等。"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "September"
msgstr "9月"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Communication"
msgstr "沟通"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Funds Tree"
msgstr "资金树"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,month:0
msgid "Month"
msgstr "月"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Escalate"
msgstr "提升"
#. module: crm_fundraising
#: field:crm.fundraising,write_date:0
msgid "Update Date"
msgstr "更新日期"
#. module: crm_fundraising
#: model:crm.case.resource.type,name:crm_fundraising.type_fund3
msgid "Credit Card"
msgstr "信用卡"
#. module: crm_fundraising
#: model:ir.actions.act_window,name:crm_fundraising.crm_fundraising_stage_act
msgid "Fundraising Stages"
msgstr "资金募集阶段"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Salesman"
msgstr "业务员"
#. module: crm_fundraising
#: field:crm.fundraising,ref:0
msgid "Reference"
msgstr "参考"
#. module: crm_fundraising
#: field:crm.fundraising,ref2:0
msgid "Reference 2"
msgstr "参考2"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,categ_id:0
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,categ_id:0
msgid "Category"
msgstr "类型"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid " Year "
msgstr " 年 "
#. module: crm_fundraising
#: field:crm.fundraising,planned_cost:0
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,planned_cost:0
msgid "Planned Costs"
msgstr "计划成本"
#. module: crm_fundraising
#: help:crm.fundraising,email_cc:0
msgid ""
"These email addresses will be added to the CC field of all inbound and "
"outbound emails for this record before being sent. Separate multiple email "
"addresses with a comma"
msgstr "这些邮件地址将添加到之前发送记录的发送和接收邮件的抄送字段,分隔多个邮件地址有逗号。"
#. module: crm_fundraising
#: selection:crm.fundraising,state:0
#: view:crm.fundraising.report:0
#: selection:crm.fundraising.report,state:0
msgid "Draft"
msgstr "草稿"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "Low"
msgstr "低"
#. module: crm_fundraising
#: field:crm.fundraising,date_closed:0
#: selection:crm.fundraising,state:0
#: selection:crm.fundraising.report,state:0
msgid "Closed"
msgstr "已关闭"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: selection:crm.fundraising,state:0
#: view:crm.fundraising.report:0
#: selection:crm.fundraising.report,state:0
msgid "Pending"
msgstr "待定中"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Communication & History"
msgstr "沟通&日志"
#. module: crm_fundraising
#: model:ir.ui.menu,name:crm_fundraising.menu_crm_fundraising_stage_act
msgid "Stages"
msgstr "阶段"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "August"
msgstr "8月"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "Normal"
msgstr "普通"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Global CC"
msgstr "完整抄送"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: model:ir.actions.act_window,name:crm_fundraising.crm_case_category_act_fund_all1
msgid "Funds"
msgstr "资金"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "June"
msgstr "6月"
#. module: crm_fundraising
#: field:crm.fundraising,partner_phone:0
msgid "Phone"
msgstr "电话"
#. module: crm_fundraising
#: field:crm.fundraising.report,user_id:0
msgid "User"
msgstr "用户"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "#Fundraising"
msgstr "#资金募集"
#. module: crm_fundraising
#: field:crm.fundraising,active:0
msgid "Active"
msgstr "生效"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "November"
msgstr "11月"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Extended Filters..."
msgstr "扩展过滤..."
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "Search"
msgstr "查找"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "October"
msgstr "10月"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "January"
msgstr "1月"
#. module: crm_fundraising
#: model:crm.case.resource.type,name:crm_fundraising.type_fund2
msgid "Cheque"
msgstr "支票"
#. module: crm_fundraising
#: model:ir.actions.act_window,help:crm_fundraising.crm_fund_categ_action
msgid ""
"Manage and define the fund raising categories you want to be maintained in "
"the system."
msgstr "在你的系统中管理和定义资金募集的类型"
#. module: crm_fundraising
#: help:crm.fundraising,email_from:0
msgid "These people will receive email."
msgstr "这些人将收到电子邮件。"
#. module: crm_fundraising
#: field:crm.fundraising,date:0
msgid "Date"
msgstr "日期"
#. module: crm_fundraising
#: model:crm.case.categ,name:crm_fundraising.categ_fund3
msgid "Healthcare"
msgstr "卫生保健"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "History"
msgstr "日志"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Attachments"
msgstr "附件"
#. module: crm_fundraising
#: model:ir.model,name:crm_fundraising.model_crm_case_stage
msgid "Stage of case"
msgstr "业务阶段"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Estimates"
msgstr "估计"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,state:0
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,state:0
msgid "State"
msgstr "州/省"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "Done"
msgstr "完成"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "December"
msgstr "12月"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "Cancel"
msgstr "取消"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: selection:crm.fundraising,state:0
#: view:crm.fundraising.report:0
#: selection:crm.fundraising.report,state:0
msgid "Open"
msgstr "开启"
#. module: crm_fundraising
#: model:ir.actions.act_window,help:crm_fundraising.crm_case_category_act_fund_all1
msgid ""
"If you need to collect money for your organization or a campaign, Fund "
"Raising allows you to track all your fund raising activities. In the search "
"list, filter by funds description, email, history and probability of success."
msgstr "如果你需要为你的组织或公司筹集经费,资金募集可以使你跟踪你的资金募集活动。在搜索列表按资金说明、邮件、日志和成功的可能性筛选。"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,user_id:0
msgid "Responsible"
msgstr "负责人"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Current"
msgstr "当前的"
#. module: crm_fundraising
#: help:crm.fundraising,section_id:0
msgid ""
"Sales team to which Case belongs to. Define Responsible user and Email "
"account for mail gateway."
msgstr "业务的销售团队,定义责任人和邮件的网关。"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Details"
msgstr "明细行"
#. module: crm_fundraising
#: model:ir.model,name:crm_fundraising.model_crm_fundraising_report
msgid "CRM Fundraising Report"
msgstr "客户关系管理 资金募集报表"
#. module: crm_fundraising
#: field:crm.fundraising.report,type_id:0
msgid "Fundraising Type"
msgstr "资金募集类型"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,amount_revenue_prob:0
msgid "Est. Rev*Prob."
msgstr "估计收入 × 概率"
#. module: crm_fundraising
#: model:ir.actions.act_window,help:crm_fundraising.crm_fundraising_stage_act
msgid ""
"Create and manage fund raising activity categories you want to be maintained "
"in the system."
msgstr "在你的系统中创建和管理资金募集活动的类型"
#. module: crm_fundraising
#: field:crm.fundraising,description:0
msgid "Description"
msgstr "说明"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "May"
msgstr "5月"
#. module: crm_fundraising
#: field:crm.fundraising,probability:0
msgid "Probability (%)"
msgstr "概率(%)"
#. module: crm_fundraising
#: field:crm.fundraising,partner_name:0
msgid "Employee's Name"
msgstr "员工姓名"
#. module: crm_fundraising
#: help:crm.fundraising,canal_id:0
msgid ""
"The channels represent the different communication modes available with the "
"customer."
msgstr "途径代表与客户沟通的不同方式"
#. module: crm_fundraising
#: help:crm.fundraising,state:0
msgid ""
"The state is set to 'Draft', when a case is created. "
" \n"
"If the case is in progress the state is set to 'Open'. "
" \n"
"When the case is over, the state is set to 'Done'. "
" \n"
"If the case needs to be reviewed then the state is set to 'Pending'."
msgstr ""
"当一个业务创建时状态设为'草稿'\n"
"如果业务正在处理状态设为'开启'\n"
"当业务结束状态设为'完成'\n"
"如果业务需要审查状态设为'待定'"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "February"
msgstr "2月"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,name:0
msgid "Name"
msgstr "名称"
#. module: crm_fundraising
#: model:crm.case.resource.type,name:crm_fundraising.type_fund1
msgid "Cash"
msgstr "现金"
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Funds by Categories"
msgstr "资金类型"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
msgid "April"
msgstr "4月"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
msgid "My Case(s)"
msgstr "我的业务"
#. module: crm_fundraising
#: model:crm.case.resource.type,name:crm_fundraising.type_fund4
msgid "Demand Draft"
msgstr "汇票"
#. module: crm_fundraising
#: field:crm.fundraising,id:0
msgid "ID"
msgstr ""
#. module: crm_fundraising
#: view:crm.fundraising:0
msgid "Search Funds"
msgstr "查找资金"
#. module: crm_fundraising
#: selection:crm.fundraising,priority:0
msgid "High"
msgstr "高"
#. module: crm_fundraising
#: view:crm.fundraising:0
#: field:crm.fundraising,section_id:0
#: view:crm.fundraising.report:0
msgid "Sales Team"
msgstr "销售团队"
#. module: crm_fundraising
#: field:crm.fundraising.report,create_date:0
msgid "Create Date"
msgstr "创建日期"
#. module: crm_fundraising
#: field:crm.fundraising,date_action_last:0
msgid "Last Action"
msgstr "最近动作"
#. module: crm_fundraising
#: view:crm.fundraising.report:0
#: field:crm.fundraising.report,name:0
msgid "Year"
msgstr "年"
#. module: crm_fundraising
#: field:crm.fundraising,duration:0
msgid "Duration"
msgstr "持续时间"
+697
View File
@@ -0,0 +1,697 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-04-10 17:19+0000\n"
"Last-Translator: Black Jack <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: 2011-04-11 04:54+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: crm_helpdesk
#: field:crm.helpdesk.report,delay_close:0
msgid "Delay to Close"
msgstr "延迟关闭"
#. module: crm_helpdesk
#: field:crm.helpdesk.report,nbr:0
msgid "# of Cases"
msgstr "# 业务"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: view:crm.helpdesk.report:0
msgid "Group By..."
msgstr "分组..."
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Today"
msgstr "今日"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "March"
msgstr "3月"
#. module: crm_helpdesk
#: field:crm.helpdesk,company_id:0
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,company_id:0
msgid "Company"
msgstr "公司"
#. module: crm_helpdesk
#: field:crm.helpdesk,email_cc:0
msgid "Watchers Emails"
msgstr "关注者的电子邮件"
#. module: crm_helpdesk
#: selection:crm.helpdesk,priority:0
#: selection:crm.helpdesk.report,priority:0
msgid "Highest"
msgstr "最高"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,day:0
msgid "Day"
msgstr "日"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Add Internal Note"
msgstr "添加内部备注"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Notes"
msgstr "备注"
#. module: crm_helpdesk
#: field:crm.helpdesk,message_ids:0
msgid "Messages"
msgstr "消息"
#. module: crm_helpdesk
#: selection:crm.helpdesk,state:0
#: selection:crm.helpdesk.report,state:0
msgid "Cancelled"
msgstr "已取消"
#. module: crm_helpdesk
#: field:crm.helpdesk,partner_address_id:0
msgid "Partner Contact"
msgstr "业务伙伴联系方式"
#. module: crm_helpdesk
#: model:ir.ui.menu,name:crm_helpdesk.menu_report_crm_helpdesks_tree
msgid "Helpdesk Analysis"
msgstr "服务台分析"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,date_closed:0
msgid "Close Date"
msgstr "结束日期"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid " Month "
msgstr " 月 "
#. module: crm_helpdesk
#: field:crm.helpdesk,ref:0
msgid "Reference"
msgstr "参考"
#. module: crm_helpdesk
#: field:crm.helpdesk,date_action_next:0
msgid "Next Action"
msgstr "下一动作"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Helpdesk Supports"
msgstr "服务台支持"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Extra Info"
msgstr "额外信息"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: field:crm.helpdesk,partner_id:0
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,partner_id:0
msgid "Partner"
msgstr "业务伙伴"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Estimates"
msgstr "估计"
#. module: crm_helpdesk
#: field:crm.helpdesk.report,section_id:0
msgid "Section"
msgstr "分类"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: field:crm.helpdesk,priority:0
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,priority:0
msgid "Priority"
msgstr "优先级"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Send New Email"
msgstr "发送新的电子邮件"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "Won"
msgstr "获得"
#. module: crm_helpdesk
#: field:crm.helpdesk.report,delay_expected:0
msgid "Overpassed Deadline"
msgstr "超越截止日期"
#. module: crm_helpdesk
#: model:ir.model,name:crm_helpdesk.model_crm_helpdesk_report
msgid "Helpdesk report after Sales Services"
msgstr "售后服务服务台报表"
#. module: crm_helpdesk
#: field:crm.helpdesk,email_from:0
msgid "Email"
msgstr "电子邮件"
#. module: crm_helpdesk
#: field:crm.helpdesk,canal_id:0
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,canal_id:0
msgid "Channel"
msgstr "途径"
#. module: crm_helpdesk
#: selection:crm.helpdesk,priority:0
#: selection:crm.helpdesk.report,priority:0
msgid "Lowest"
msgstr "最低"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "# Mails"
msgstr "邮件"
#. module: crm_helpdesk
#: field:crm.helpdesk,create_date:0
#: field:crm.helpdesk.report,create_date:0
msgid "Creation Date"
msgstr "创建日期"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Reset to Draft"
msgstr "重置为草稿"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: selection:crm.helpdesk,state:0
#: selection:crm.helpdesk.report,state:0
msgid "Pending"
msgstr "待处理"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: field:crm.helpdesk,date_deadline:0
#: field:crm.helpdesk.report,date_deadline:0
msgid "Deadline"
msgstr "截止日期"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "July"
msgstr "7月"
#. module: crm_helpdesk
#: model:ir.actions.act_window,name:crm_helpdesk.crm_helpdesk_categ_action
msgid "Helpdesk Categories"
msgstr "服务台类型"
#. module: crm_helpdesk
#: model:ir.ui.menu,name:crm_helpdesk.menu_crm_case_helpdesk-act
msgid "Categories"
msgstr "类型"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "History Information"
msgstr "日志信息"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Dates"
msgstr "日期"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid " Month-1 "
msgstr " 上月 "
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "#Helpdesk"
msgstr "服务台"
#. module: crm_helpdesk
#: help:crm.helpdesk,email_cc:0
msgid ""
"These email addresses will be added to the CC field of all inbound and "
"outbound emails for this record before being sent. Separate multiple email "
"addresses with a comma"
msgstr "这些邮件地址将添加到之前发送记录的发送和接收邮件的抄送字段,分隔多个邮件地址有逗号。"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "References"
msgstr "参考"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "September"
msgstr "9月"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Communication"
msgstr "沟通"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,month:0
msgid "Month"
msgstr "月份"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Escalate"
msgstr "提升"
#. module: crm_helpdesk
#: field:crm.helpdesk,write_date:0
msgid "Update Date"
msgstr "更新日期"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Query"
msgstr "查询"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "Salesman"
msgstr "业务员"
#. module: crm_helpdesk
#: field:crm.helpdesk,ref2:0
msgid "Reference 2"
msgstr "参考2"
#. module: crm_helpdesk
#: field:crm.helpdesk,categ_id:0
#: field:crm.helpdesk.report,categ_id:0
msgid "Category"
msgstr "类型"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid " Year "
msgstr " 年 "
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Helpdesk Support"
msgstr ""
#. module: crm_helpdesk
#: field:crm.helpdesk,planned_cost:0
#: field:crm.helpdesk.report,planned_cost:0
msgid "Planned Costs"
msgstr "计划成本"
#. module: crm_helpdesk
#: model:ir.module.module,description:crm_helpdesk.module_meta_information
msgid "Helpdesk Management"
msgstr "服务台管理"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Search Helpdesk"
msgstr "查询服务台"
#. module: crm_helpdesk
#: selection:crm.helpdesk,state:0
#: selection:crm.helpdesk.report,state:0
msgid "Draft"
msgstr "草稿"
#. module: crm_helpdesk
#: selection:crm.helpdesk,priority:0
#: selection:crm.helpdesk.report,priority:0
msgid "Low"
msgstr "低"
#. module: crm_helpdesk
#: field:crm.helpdesk,date_closed:0
#: selection:crm.helpdesk,state:0
#: selection:crm.helpdesk.report,state:0
msgid "Closed"
msgstr "已结束"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "7 Days"
msgstr "7天"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Communication & History"
msgstr "沟通&日志"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "August"
msgstr "8月"
#. module: crm_helpdesk
#: selection:crm.helpdesk,priority:0
#: selection:crm.helpdesk.report,priority:0
msgid "Normal"
msgstr "普通"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Global CC"
msgstr "完整抄送"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "June"
msgstr "6月"
#. module: crm_helpdesk
#: field:crm.helpdesk,planned_revenue:0
msgid "Planned Revenue"
msgstr "计划收入"
#. module: crm_helpdesk
#: field:crm.helpdesk.report,user_id:0
msgid "User"
msgstr "用户"
#. module: crm_helpdesk
#: field:crm.helpdesk,active:0
msgid "Active"
msgstr "有效"
#. module: crm_helpdesk
#: model:ir.module.module,shortdesc:crm_helpdesk.module_meta_information
msgid "CRM Helpdesk"
msgstr "客户关系管理 服务台"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "Extended Filters..."
msgstr "扩展过滤..."
#. module: crm_helpdesk
#: model:ir.actions.act_window,name:crm_helpdesk.crm_case_helpdesk_act111
msgid "Helpdesk Requests"
msgstr "服务台请求"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "Search"
msgstr "查找"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "October"
msgstr "10月"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "January"
msgstr "1月"
#. module: crm_helpdesk
#: help:crm.helpdesk,email_from:0
msgid "These people will receive email."
msgstr "这些人将收到电子邮件。"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: field:crm.helpdesk,date:0
msgid "Date"
msgstr "日期"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "November"
msgstr "11月"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "History"
msgstr "日志"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Attachments"
msgstr "附件"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Misc"
msgstr "杂项"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: field:crm.helpdesk,state:0
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,state:0
msgid "State"
msgstr "州/省"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "General"
msgstr "通用"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Send Reminder"
msgstr "发送提醒"
#. module: crm_helpdesk
#: help:crm.helpdesk,section_id:0
msgid ""
"Sales team to which Case belongs to. Define "
"Responsible user and Email account for mail gateway."
msgstr "销售团队属于这业务.定义负责用户和电子邮件帐户和网关"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Done"
msgstr "完成"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "December"
msgstr "12月"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Cancel"
msgstr "取消"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Close"
msgstr "结束"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: selection:crm.helpdesk,state:0
#: selection:crm.helpdesk.report,state:0
msgid "Open"
msgstr "开启"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Helpdesk Support Tree"
msgstr "服务台支持树"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Categorization"
msgstr "归类"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
#: model:ir.actions.act_window,name:crm_helpdesk.action_report_crm_helpdesk
#: model:ir.model,name:crm_helpdesk.model_crm_helpdesk
#: model:ir.ui.menu,name:crm_helpdesk.menu_config_helpdesk
msgid "Helpdesk"
msgstr "服务台"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: field:crm.helpdesk,user_id:0
msgid "Responsible"
msgstr "负责人"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "Current"
msgstr "当前的"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Details"
msgstr "明细行"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
msgid "Reply"
msgstr "回复"
#. module: crm_helpdesk
#: field:crm.helpdesk,description:0
msgid "Description"
msgstr "说明"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "May"
msgstr "5月"
#. module: crm_helpdesk
#: field:crm.helpdesk,probability:0
msgid "Probability (%)"
msgstr "概率(%)"
#. module: crm_helpdesk
#: field:crm.helpdesk.report,email:0
msgid "# Emails"
msgstr "电子邮件"
#. module: crm_helpdesk
#: model:ir.actions.act_window,help:crm_helpdesk.action_report_crm_helpdesk
msgid ""
"Have a general overview of all support requests by sorting them with "
"specific criteria such as the processing time, number of requests answered, "
"emails sent and costs."
msgstr "所有的支持请求都有分类,具体标准都有大致的描述如: 处理时间,请求回复的次数,邮件的发送成本."
#. module: crm_helpdesk
#: help:crm.helpdesk,canal_id:0
msgid ""
"The channels represent the different communication modes available with the "
"customer."
msgstr "途径代表与客户沟通的不同方式"
#. module: crm_helpdesk
#: help:crm.helpdesk,state:0
msgid ""
"The state is set to 'Draft', when a case is created. "
" \n"
"If the case is in progress the state is set to 'Open'. "
" \n"
"When the case is over, the state is set to 'Done'. "
" \n"
"If the case needs to be reviewed then the state is set to 'Pending'."
msgstr ""
"当一个业务创建时状态设为'草稿'\n"
"如果业务正在处理状态设为'开启'\n"
"当业务结束状态设为'完成'\n"
"如果业务需要审查状态设为'待定'"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "February"
msgstr "2月"
#. module: crm_helpdesk
#: field:crm.helpdesk,name:0
msgid "Name"
msgstr "名称"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "Lost"
msgstr "丢失"
#. module: crm_helpdesk
#: model:ir.ui.menu,name:crm_helpdesk.menu_help_support_main
msgid "Helpdesk and Support"
msgstr "服务台和支持"
#. module: crm_helpdesk
#: selection:crm.helpdesk.report,month:0
msgid "April"
msgstr "4月"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
msgid "My Case(s)"
msgstr "我的业务"
#. module: crm_helpdesk
#: field:crm.helpdesk,id:0
msgid "ID"
msgstr ""
#. module: crm_helpdesk
#: model:ir.actions.act_window,help:crm_helpdesk.crm_helpdesk_categ_action
msgid ""
"Create and manage helpdesk categories to better manage and classify your "
"support requests."
msgstr "创建和管理服务台类型去更好管理和分类你的支持的请求"
#. module: crm_helpdesk
#: selection:crm.helpdesk,priority:0
#: selection:crm.helpdesk.report,priority:0
msgid "High"
msgstr "高"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
#: field:crm.helpdesk,section_id:0
#: view:crm.helpdesk.report:0
msgid "Sales Team"
msgstr "销售团队"
#. module: crm_helpdesk
#: field:crm.helpdesk,date_action_last:0
msgid "Last Action"
msgstr "最近动作"
#. module: crm_helpdesk
#: model:ir.actions.act_window,help:crm_helpdesk.crm_case_helpdesk_act111
msgid ""
"Helpdesk and Support allow you to track your interventions. Select a "
"customer, add notes and categorize interventions with partners if necessary. "
"You can also assign a priority level. Use the OpenERP Issues system to "
"manage your support activities. Issues can be connected to the email "
"gateway: new emails may create issues, each of them automatically gets the "
"history of the conversation with the customer."
msgstr ""
"服务台和支持使你可以去跟踪你的介入.如果需要选择一个客户增加备注和类型介入这业务伙伴.你可以分配一优先级用系统问题模块来管理的的支持活动.问题能链接邮件网"
"关.新的邮件可能创建新的问题,它们能自动写入与客户沟通的日志."
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0
#: field:crm.helpdesk.report,name:0
msgid "Year"
msgstr "年"
#. module: crm_helpdesk
#: field:crm.helpdesk,duration:0
msgid "Duration"
msgstr "持续时间"
+1
View File
@@ -43,6 +43,7 @@ You can also use the geolocalization without using the GPS coordinates.
'wizard/crm_forward_to_partner_view.xml',
'crm_lead_view.xml',
'report/crm_lead_report_view.xml',
'report/crm_partner_report_view.xml',
],
'test': ['test/test_crm_partner_assign.yml'],
'installable': True,
+713
View File
@@ -0,0 +1,713 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-04-11 08:43+0000\n"
"Last-Translator: Black Jack <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: 2011-04-12 04:34+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,name:0
msgid "Send to"
msgstr "发送到"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,delay_close:0
msgid "Delay to Close"
msgstr "延迟关闭"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,planned_revenue:0
msgid "Planned Revenue"
msgstr "计划收入"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,nbr:0
msgid "# of Cases"
msgstr "# 业务"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Group By..."
msgstr "分组..."
#. module: crm_partner_assign
#: view:crm.lead:0
#: view:crm.lead.forward.to.partner:0
msgid "Forward"
msgstr "下一页"
#. module: crm_partner_assign
#: help:crm.lead.forward.to.partner,reply_to:0
msgid "Reply-to of the Sales team defined on this case"
msgstr "在这业务销售团队定义的“回复到”"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Geo Localize"
msgstr "geolocalization定位"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "March"
msgstr "3月"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,type:0
msgid "Lead"
msgstr "线索"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Delay to close"
msgstr "延迟关闭"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,history:0
msgid "Whole Story"
msgstr "完整的情况"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,company_id:0
msgid "Company"
msgstr "公司"
#. module: crm_partner_assign
#: code:addons/crm_partner_assign/partner_geo_assign.py:41
#, python-format
msgid ""
"Could not contact geolocation servers, please make sure you have a working "
"internet connection (%s)"
msgstr "无法连接到服务器,请确保你的连接 (%s) 正常。"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,partner_date:0
msgid "Partner Date"
msgstr "业务伙伴日期"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,priority:0
msgid "Highest"
msgstr "最高"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,day:0
msgid "Day"
msgstr "日"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,history:0
msgid "Latest email"
msgstr "最近的邮件"
#. module: crm_partner_assign
#: field:crm.lead,partner_latitude:0
#: field:res.partner,partner_latitude:0
msgid "Geo Latitude"
msgstr "geolocalization纬度"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,state:0
#: selection:crm.lead.report.assign,state:0
msgid "Cancelled"
msgstr "已取消"
#. module: crm_partner_assign
#: view:crm.lead:0
msgid "Geo Assignation"
msgstr "geolocalization指派"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,date_closed:0
msgid "Close Date"
msgstr "结束日期"
#. module: crm_partner_assign
#: help:res.partner,partner_weight:0
msgid ""
"Gives the probability to assign a lead to this partner. (0 means no "
"assignation.)"
msgstr "为线索指派一个业务伙伴的概率(0表示没指派)"
#. module: crm_partner_assign
#: model:ir.module.module,description:crm_partner_assign.module_meta_information
msgid ""
"\n"
"This is the module used by OpenERP SA to redirect customers to his "
"partners,\n"
"based on geolocalization.\n"
" "
msgstr ""
"\n"
"这模块用于系统给业务伙伴定位的地理信息,其基于google的geolocalization服务\n"
" "
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,state:0
#: selection:crm.lead.report.assign,state:0
msgid "Pending"
msgstr "待定中"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,name:0
#: field:crm.lead.forward.to.partner,partner_id:0
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,partner_assigned_id:0
#: model:ir.model,name:crm_partner_assign.model_res_partner
msgid "Partner"
msgstr "业务伙伴"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,probability:0
msgid "Avg Probability"
msgstr "平均概率"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Previous"
msgstr "前一个"
#. module: crm_partner_assign
#: code:addons/crm_partner_assign/partner_geo_assign.py:40
#, python-format
msgid "Network error"
msgstr "网络错误"
#. module: crm_partner_assign
#: help:crm.lead.forward.to.partner,email_cc:0
msgid ""
"These addresses will receive a copy of this email. To modify the permanent "
"CC list, edit the global CC field of this case"
msgstr "这些地址将收到这邮件的副本。要永久修改这抄送地址列表,请编辑这业务的默认抄送字段。"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,email_from:0
msgid "From"
msgstr "来自"
#. module: crm_partner_assign
#: model:ir.actions.act_window,name:crm_partner_assign.res_partner_grade_action
#: model:ir.ui.menu,name:crm_partner_assign.menu_res_partner_grade_action
#: field:res.partner,grade_id:0
#: view:res.partner.grade:0
msgid "Partner Grade"
msgstr "业务伙伴级别"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Section"
msgstr "分类"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Next"
msgstr "下一个"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,priority:0
msgid "Priority"
msgstr "优先级"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,state:0
msgid "State"
msgstr "州/省"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,delay_expected:0
msgid "Overpassed Deadline"
msgstr "超越截止日期"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,html:0
msgid "HTML formatting?"
msgstr "HTML格式?"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,type:0
msgid "Type"
msgstr "类型:"
#. module: crm_partner_assign
#: help:crm.lead,partner_assigned_id:0
msgid "Partner this case has been forwarded/assigned to."
msgstr "这业务的业务伙伴已转发/已分配"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,priority:0
msgid "Lowest"
msgstr "最低"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Leads Analysis"
msgstr "线索分析"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,creation_date:0
msgid "Creation Date"
msgstr "创建日期"
#. module: crm_partner_assign
#: help:crm.lead.forward.to.partner,html:0
msgid "Select this if you want to send email with HTML formatting."
msgstr "如果你想发送HTML格式的邮件,选此"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "7 Days"
msgstr "7天"
#. module: crm_partner_assign
#: view:crm.lead:0
msgid "Partner Assignation"
msgstr ""
#. module: crm_partner_assign
#: help:crm.lead.report.assign,type:0
msgid "Type is used to separate Leads and Opportunities"
msgstr "类型用于区分线索和商机"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "July"
msgstr "7月"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,stage_id:0
msgid "Stage"
msgstr "阶段"
#. module: crm_partner_assign
#: code:addons/crm_partner_assign/wizard/crm_forward_to_partner.py:271
#, python-format
msgid "Fwd"
msgstr "转发"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Geo Localization"
msgstr "geolocalization定位"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Opportunities Assignment Analysis"
msgstr "商机指派分析"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Cancel"
msgstr "取消"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,history:0
msgid "Send history"
msgstr "发送日志"
#. module: crm_partner_assign
#: view:crm.lead.forward.to.partner:0
msgid "Contact"
msgstr "联系方式"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Close"
msgstr "结束"
#. module: crm_partner_assign
#: model:ir.actions.act_window,name:crm_partner_assign.action_report_crm_opportunity_assign
#: model:ir.ui.menu,name:crm_partner_assign.menu_report_crm_opportunities_assign_tree
msgid "Opp. Assignment Analysis"
msgstr "商机指派分析"
#. module: crm_partner_assign
#: help:crm.lead.report.assign,delay_close:0
msgid "Number of Days to close the case"
msgstr "到期天数"
#. module: crm_partner_assign
#: field:res.partner,partner_weight:0
msgid "Weight"
msgstr "重量"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Delay to open"
msgstr "延迟开启"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,grade_id:0
msgid "Grade"
msgstr "级别"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "December"
msgstr "12月"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,month:0
msgid "Month"
msgstr "月"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,opening_date:0
msgid "Opening Date"
msgstr "开启日期"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,subject:0
msgid "Subject"
msgstr "主题"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Salesman"
msgstr "业务员"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,reply_to:0
msgid "Reply To"
msgstr "回复"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,categ_id:0
msgid "Category"
msgstr "类型"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "#Opportunities"
msgstr "#商机"
#. module: crm_partner_assign
#: model:ir.module.module,shortdesc:crm_partner_assign.module_meta_information
msgid "Partner Geo-Localisation"
msgstr "业务伙伴geolocalization定位"
#. module: crm_partner_assign
#: constraint:res.partner:0
msgid "Error ! You can not create recursive associated members."
msgstr "错误!您不能创建递归的相关成员。"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,state:0
#: selection:crm.lead.report.assign,state:0
msgid "Draft"
msgstr "草稿"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,priority:0
msgid "Low"
msgstr "低"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,state:0
#: view:crm.lead.report.assign:0
#: selection:crm.lead.report.assign,state:0
msgid "Closed"
msgstr "已结束"
#. module: crm_partner_assign
#: view:res.partner:0
#: field:res.partner,opportunity_assigned_ids:0
msgid "Assigned Opportunities"
msgstr "分配商机"
#. module: crm_partner_assign
#: field:crm.lead,date_assign:0
msgid "Assignation Date"
msgstr "分配日期"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,probability_max:0
msgid "Max Probability"
msgstr "最大可能"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "August"
msgstr "8月"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,priority:0
msgid "Normal"
msgstr "普通"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Escalate"
msgstr "提升"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,attachment_ids:0
msgid "unknown"
msgstr "未知"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "June"
msgstr "6月"
#. module: crm_partner_assign
#: help:crm.lead.report.assign,delay_open:0
msgid "Number of Days to open the case"
msgstr "业务开启的天数"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,delay_open:0
msgid "Delay to Open"
msgstr "延迟开启"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,name:0
#: field:crm.lead.forward.to.partner,user_id:0
#: field:crm.lead.report.assign,user_id:0
msgid "User"
msgstr "用户"
#. module: crm_partner_assign
#: field:res.partner.grade,active:0
msgid "Active"
msgstr "生效"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "November"
msgstr "11月"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Extended Filters..."
msgstr "扩展过滤..."
#. module: crm_partner_assign
#: field:crm.lead,partner_longitude:0
#: field:res.partner,partner_longitude:0
msgid "Geo Longitude"
msgstr "geolocalization经度"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Lead Assign"
msgstr "线索指派"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "October"
msgstr "10月"
#. module: crm_partner_assign
#: view:crm.lead:0
msgid "Assignation"
msgstr "指派"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,email_cc:0
msgid "CC"
msgstr "抄送"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "January"
msgstr "1月"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Planned Revenues"
msgstr "计划收入"
#. module: crm_partner_assign
#: model:ir.model,name:crm_partner_assign.model_res_partner_grade
msgid "res.partner.grade"
msgstr ""
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,state:0
msgid "Unchanged"
msgstr "未更改"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "September"
msgstr "9月"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Last 30 Days"
msgstr "最后30天"
#. module: crm_partner_assign
#: field:res.partner.grade,name:0
msgid "Grade Name"
msgstr "级别名称"
#. module: crm_partner_assign
#: help:crm.lead,date_assign:0
msgid "Last date this case was forwarded/assigned to a partner"
msgstr "为这业务指派/跟进的业务伙伴的最后期限"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,state:0
#: selection:crm.lead.report.assign,state:0
#: view:res.partner:0
msgid "Open"
msgstr "开启"
#. module: crm_partner_assign
#: field:res.partner,date_localization:0
msgid "Geo Localization Date"
msgstr "geolocalization定位的日期"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Current"
msgstr "当前的"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,email_to:0
msgid "To"
msgstr "到"
#. module: crm_partner_assign
#: model:ir.model,name:crm_partner_assign.model_crm_lead_forward_to_partner
msgid "Send new email"
msgstr "发送新的邮件"
#. module: crm_partner_assign
#: view:crm.lead.forward.to.partner:0
#: model:ir.actions.act_window,name:crm_partner_assign.crm_lead_forward_to_partner_act
msgid "Forward to Partner"
msgstr "跟进的业务伙伴"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "May"
msgstr "5月"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,probable_revenue:0
msgid "Probable Revenue"
msgstr "可能收入"
#. module: crm_partner_assign
#: field:crm.lead,partner_assigned_id:0
msgid "Assigned Partner"
msgstr "指派的业务伙伴"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,address_id:0
msgid "Address"
msgstr "地址"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,type:0
msgid "Opportunity"
msgstr "商机"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,partner_id:0
msgid "Customer"
msgstr "客户"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "February"
msgstr "2月"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,name:0
msgid "Email Address"
msgstr "电子邮件地址"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,country_id:0
msgid "Country"
msgstr "国家"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Convert to Opportunity"
msgstr "转换为商机"
#. module: crm_partner_assign
#: view:crm.lead:0
msgid "Geo Assign"
msgstr "指定geolocalization"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
msgid "April"
msgstr "4月"
#. module: crm_partner_assign
#: model:ir.model,name:crm_partner_assign.model_crm_lead
msgid "crm.lead"
msgstr ""
#. module: crm_partner_assign
#: model:ir.model,name:crm_partner_assign.model_crm_lead_report_assign
msgid "CRM Lead Report"
msgstr "客户关系管理线索报表"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,history:0
msgid "Case Information"
msgstr ""
#. module: crm_partner_assign
#: field:res.partner.grade,sequence:0
msgid "Sequence"
msgstr "序列"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,body:0
msgid "Message Body"
msgstr "消息正文"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,priority:0
msgid "High"
msgstr "高"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,section_id:0
msgid "Sales Team"
msgstr "销售团队"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,create_date:0
msgid "Create Date"
msgstr "创建日期"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,state:0
msgid "Set New State To"
msgstr "设定新状态"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
#: field:crm.lead.report.assign,name:0
msgid "Year"
msgstr "年"
@@ -142,21 +142,6 @@ class crm_lead(osv.osv):
('country', '=', part.country_id.id),
], context=context)
# 3. third way: other countries, small area
if not part_ids:
part_ids = self.pool.get('res.partner').search(cr, uid, [
('partner_weight','>',0),
('partner_latitude','>',result[0]-2), ('partner_latitude','<',result[0]+2),
('partner_longitude','>',result[1]-1.5), ('partner_longitude','<',result[1]+1.5)
], context=context)
# 4. fourth way: other countries, big area
if not part_ids:
part_ids = self.pool.get('res.partner').search(cr, uid, [
('partner_weight','>',0),
('partner_latitude','>',result[0]-4), ('partner_latitude','<',result[0]+4),
('partner_longitude','>',result[1]-3), ('partner_longitude','<',result[1]+3)
], context=context)
# 5. fifth way: anywhere in same country
if not part_ids:
+3 -2
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,9 +15,10 @@
# 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/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import crm_lead_report
import crm_partner_report
@@ -37,7 +37,7 @@ class crm_lead_report_assign(osv.osv):
_auto = False
_description = "CRM Lead Report"
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
'year': fields.char('Year', size=64, required=False, readonly=True),
'partner_assigned_id':fields.many2one('res.partner', 'Partner', readonly=True),
'grade_id':fields.many2one('res.partner.grade', 'Grade', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
@@ -51,7 +51,7 @@ class crm_lead_report_assign(osv.osv):
('09', 'September'), ('10', 'October'),\
('11', 'November'), ('12', 'December')], 'Month', readonly=True),
'company_id': fields.many2one('res.company', 'Company', readonly=True),
'partner_date': fields.date('Partner Date', readonly=True),
'date_assign': fields.date('Partner Date', readonly=True),
'create_date': fields.datetime('Create Date', readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'delay_open': fields.float('Delay to Open',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"),
@@ -82,18 +82,20 @@ class crm_lead_report_assign(osv.osv):
CRM Lead Report
@param cr: the current row, from the database cursor
"""
print "WHATTT "
tools.drop_view_if_exists(cr, 'crm_lead_report_assign')
cr.execute("""
CREATE OR REPLACE VIEW crm_lead_report_assign AS (
SELECT
c.id,
to_char(c.create_date, 'YYYY') as name,
to_char(c.create_date, 'MM') as month,
to_char(c.create_date, 'YYYY-MM-DD') as day,
to_char(c.date_assign, 'YYYY') as year,
to_char(c.date_assign, 'MM') as month,
to_char(c.date_assign, 'YYYY-MM-DD') as day,
to_char(c.create_date, 'YYYY-MM-DD') as creation_date,
to_char(c.date_open, 'YYYY-MM-DD') as opening_date,
to_char(c.date_closed, 'YYYY-mm-dd') as date_closed,
c.state,
c.date_assign,
c.user_id,
c.probability,
c.probability as probability_max,
@@ -69,17 +69,17 @@
domain="[]"
context="{'group_by':'company_id'}" />
<separator orientation="vertical" />
<filter string="Partner Date" icon="terp-go-today"
<filter string="Assign Date" icon="terp-go-today"
domain="[]"
name="group_partner_date"
context="{'group_by':'partner_date'}"/>
context="{'group_by':'date_assign'}"/>
<separator orientation="vertical"/>
<filter string="Day" icon="terp-go-today"
domain="[]" context="{'group_by':'day'}"/>
<filter string="Month" icon="terp-go-month"
domain="[]" context="{'group_by':'month'}" />
<filter string="Year" icon="terp-go-year"
domain="[]" context="{'group_by':'name'}" />
domain="[]" context="{'group_by':'year'}" />
</group>
</search>
@@ -107,9 +107,9 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Opportunities Assignment Analysis">
<field name="name" invisible="1"/>
<field name="year" invisible="1"/>
<field name="month" invisible="1"/>
<field name="partner_date" invisible="1"/>
<field name="date_assign" invisible="1"/>
<field name="section_id" invisible="1" groups="base.group_extended"/>
<field name="user_id" invisible="1"/>
<field name="grade_id" invisible="1" widget="selection"/>
@@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import fields,osv
import tools
class crm_partner_report_assign(osv.osv):
""" CRM Lead Report """
_name = "crm.partner.report.assign"
_auto = False
_description = "CRM Partner Report"
_columns = {
'name': fields.char('Partner name', size=64, required=False, readonly=True),
'grade_id':fields.many2one('res.partner.grade', 'Grade', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'country_id':fields.many2one('res.country', 'Country', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Sales Team', readonly=True),
'nbr': fields.integer('# of Partner', readonly=True),
'opp': fields.integer('# of Opportunity', readonly=True),
}
def init(self, cr):
"""
CRM Lead Report
@param cr: the current row, from the database cursor
"""
tools.drop_view_if_exists(cr, 'crm_partner_report_assign')
cr.execute("""
CREATE OR REPLACE VIEW crm_partner_report_assign AS (
SELECT
p.id,
p.name,
(SELECT country_id FROM res_partner_address a WHERE a.partner_id=p.id AND country_id is not null limit 1) as country_id,
p.grade_id,
p.user_id,
p.section_id,
1 as nbr,
(SELECT count(id) FROM crm_lead WHERE partner_assigned_id=p.id) AS opp
FROM
res_partner p
)""")
crm_partner_report_assign()
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Opportunity tree view -->
<record id="view_report_crm_partner_assign_filter" model="ir.ui.view">
<field name="name">crm.partner.report.assign.select</field>
<field name="model">crm.partner.report.assign</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Partner assigned Analysis">
<group col="20" colspan="8">
<field name="country_id" />
<field name="grade_id"/>
<field name="user_id"/>
<field name="section_id"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<filter string="Salesman" name="user" icon="terp-personal"
domain="[]" context="{'group_by':'user_id'}" />
<filter string="Country" icon="terp-go-home" name="group_country" context="{'group_by':'country_id'}" />
<separator orientation="vertical" />
<filter string="Section" icon="terp-personal+"
domain="[]"
context="{'group_by':'section_id'}" />
<filter string="Grade" name="group_grade" icon="terp-stock_symbol-selection"
domain="[]" context="{'group_by':'grade_id'}" />
<filter string="Name" name="" icon="terp-stock_symbol-selection"
domain="[]" context="{'group_by':'name'}" />
<separator orientation="vertical" />
</group>
</search>
</field>
</record>
<!-- Crm Lead Assign report Graph View -->
<record id="view_report_crm_partner_assign_tree" model="ir.ui.view">
<field name="name">crm.partner.assign.report.tree</field>
<field name="model">crm.partner.report.assign</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Opportunities Assignment Analysis">
<field name="name" invisible="1"/>
<field name="country_id" invisible="1"/>
<field name="grade_id" invisible="1"/>
<field name="section_id" invisible="1" groups="base.group_extended"/>
<field name="user_id" invisible="1"/>
<field name="nbr" string="#Partner" sum="#Partner"/>
<field name="opp"/>
</tree>
</field>
</record>
<!-- Leads by user and section Action -->
<record id="action_report_crm_partner_assign" model="ir.actions.act_window">
<field name="name">Partnership Analysis</field>
<field name="res_model">crm.partner.report.assign</field>
<field name="context">{'search_default_group_country': 1, 'search_default_group_grade': 1, 'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_mode">tree</field>
<field name="domain">[('grade_id', '!=', False)]</field>
</record>
<menuitem id="menu_report_crm_partner_assign_tree"
groups="base.group_extended"
parent="base.next_id_64" action="action_report_crm_partner_assign" sequence="5"/>
</data>
</openerp>
@@ -1,5 +1,6 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_ crm_lead_report_assign"," crm.lead.report.assign","model_crm_lead_report_assign","base.group_sale_salesman",1,1,1,0
"access_ crm_lead_report_assign","crm.lead.report.assign","model_crm_lead_report_assign","base.group_sale_salesman",1,1,1,0
"access_ crm_lead_report_assign_all","crm.lead.report.assign.all","model_crm_lead_report_assign","base.group_user",1,0,0,0
"access_crm_partner_report","crm.partner.report.assign.all","model_crm_partner_report_assign","base.group_sale_salesman",1,0,0,0
"access_res_partner_grade","res.partner.grade","model_res_partner_grade","base.group_sale_salesman",1,1,1,0
"access_res_partner_grade_manager","res.partner.grade.manager","model_res_partner_grade","base.group_sale_manager",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_ crm_lead_report_assign crm.lead.report.assign crm.lead.report.assign model_crm_lead_report_assign base.group_sale_salesman 1 1 1 0
3 access_ crm_lead_report_assign_all crm.lead.report.assign.all model_crm_lead_report_assign base.group_user 1 0 0 0
4 access_crm_partner_report crm.partner.report.assign.all model_crm_partner_report_assign base.group_sale_salesman 1 0 0 0
5 access_res_partner_grade res.partner.grade model_res_partner_grade base.group_sale_salesman 1 1 1 0
6 access_res_partner_grade_manager res.partner.grade.manager model_res_partner_grade base.group_sale_manager 1 1 1 1
@@ -42,9 +42,10 @@ class crm_lead_forward_to_partner(osv.osv_memory):
_defaults = {
'name' : 'email',
'history': 'latest',
'email_from': lambda self, cr, uid, *a: self.pool.get('res.users')._get_email_from(cr, uid, uid)[uid]
'email_from': lambda self, cr, uid, *a: self.pool.get('res.users')._get_email_from(cr, uid, uid)[uid],
}
def get_whole_history(self, cr, uid, ids, context=None):
"""This function gets whole communication history and returns as top posting style
@param self: The object pointer
@@ -85,7 +86,7 @@ class crm_lead_forward_to_partner(osv.osv_memory):
@param uid: the current user’s ID for security checks,
@param ids: List of Mail’s IDs
@param user: Changed User id
@param partner: Changed Partner id
@param partner: Changed Partner id
"""
if not user:
return {'value': {'email_to': False}}
@@ -144,7 +145,7 @@ class crm_lead_forward_to_partner(osv.osv_memory):
@param uid: the current user’s ID for security checks,
@param ids: List of Mail’s IDs
@param user: Changed User id
@param partner: Changed Partner id
@param partner: Changed Partner id
"""
if not partner_id:
return {'value' : {'email_to' : False, 'address_id': False}}
@@ -153,13 +154,13 @@ class crm_lead_forward_to_partner(osv.osv_memory):
addr = partner_obj.address_get(cr, uid, [partner_id], ['contact'])
data = {'address_id': addr['contact']}
data.update(self.on_change_address(cr, uid, ids, addr['contact'])['value'])
partner = partner_obj.browse(cr, uid, [partner_id])
user_id = partner and partner[0].user_id or False
email = user_id and user_id.user_email or ''
data.update({'email_cc' : email})
return {
'value' : data,
'value' : data,
'domain' : {'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]"}
}
@@ -234,23 +235,23 @@ class crm_lead_forward_to_partner(osv.osv_memory):
body.append("%s: %s" % (field_definition.string, value or ''))
elif lead.type == 'opportunity':
pa = lead.partner_address_id
body = [
"Partner: %s" % (lead.partner_id and lead.partner_id.name_get()[0][1]),
"Contact: %s" % (pa.name or ''),
"Title: %s" % (pa.title or ''),
"Function: %s" % (pa.function or ''),
"Street: %s" % (pa.street or ''),
"Street2: %s" % (pa.street2 or ''),
"Zip: %s" % (pa.zip or ''),
"City: %s" % (pa.city or ''),
"Country: %s" % (pa.country_id and pa.country_id.name_get()[0][1] or ''),
"State: %s" % (pa.state_id and pa.state_id.name_get()[0][1] or ''),
"Email: %s" % (pa.email or ''),
"Phone: %s" % (pa.phone or ''),
"Fax: %s" % (pa.fax or ''),
"Mobile: %s" % (pa.mobile or ''),
"Lead Category: %s" % (lead.categ_id and lead.categ_id.name or ''),
"Details: %s" % (lead.description or ''),
body += [
"Partner: %s" % (lead.partner_id and lead.partner_id.name_get()[0][1]),
"Contact: %s" % (pa.name or ''),
"Title: %s" % (pa.title or ''),
"Function: %s" % (pa.function or ''),
"Street: %s" % (pa.street or ''),
"Street2: %s" % (pa.street2 or ''),
"Zip: %s" % (pa.zip or ''),
"City: %s" % (pa.city or ''),
"Country: %s" % (pa.country_id and pa.country_id.name_get()[0][1] or ''),
"State: %s" % (pa.state_id and pa.state_id.name_get()[0][1] or ''),
"Email: %s" % (pa.email or ''),
"Phone: %s" % (pa.phone or ''),
"Fax: %s" % (pa.fax or ''),
"Mobile: %s" % (pa.mobile or ''),
"Lead Category: %s" % (lead.categ_id and lead.categ_id.name or ''),
"Details: %s" % (lead.description or ''),
]
return "\n".join(body + ['---'])
@@ -258,26 +259,66 @@ class crm_lead_forward_to_partner(osv.osv_memory):
"""
This function gets default values
"""
if context is None:
context = {}
defaults = super(crm_lead_forward_to_partner, self).default_get(cr, uid, fields, context=context)
active_id = context.get('active_id')
if not active_id:
return defaults
lead_proxy = self.pool.get('crm.lead')
partner_obj = self.pool.get('res.partner')
lead = lead_proxy.browse(cr, uid, active_id, context=context)
email_cc = ''
email = ''
if lead.partner_assigned_id:
partner = partner_obj.browse(cr, uid, [lead.partner_assigned_id.id])
user_id = partner and partner[0].user_id or False
email_cc = user_id and user_id.user_email or ''
addr = partner_obj.address_get(cr, uid, [partner[0].id], ['contact'])
email = self.pool.get('res.partner.address').browse(cr, uid, addr['contact']).email
body = self._get_case_history(cr, uid, defaults.get('history', 'latest'), lead.id, context=context)
defaults.update({
'subject' : '%s: %s' % (_('Fwd'), lead.name),
'subject' : '%s: %s - %s' % (_('Fwd'), 'Openerp lead forward', lead.name),
'body' : body,
'email_cc' : ''
'email_cc' : email_cc,
'email_to' : email or 'dummy@dummy.ly'
})
return defaults
crm_lead_forward_to_partner()
class crm_lead_mass_forward_to_partner(osv.osv_memory):
_name = 'crm.lead.mass.forward.to.partner'
_inherit = 'crm.lead.forward.to.partner'
def action_mass_forward(self, cr, uid, ids, context=None):
if not context:
context = {}
active_ids = context.get('active_ids')
case_obj = self.pool.get('crm.lead')
for case in case_obj.browse(cr, uid, active_ids, context=context):
if not case.partner_assigned_id:
case_obj.assign_partner(cr,uid, [case.id], context=context)
case = case_obj.browse(cr, uid, case.id, context=context)
if not case.partner_assigned_id:
continue
context.update({'active_id' : case.id})
value = self.default_get(cr, uid, ['body', 'email_to', 'email_cc', 'subject', 'history'], context=context)
self.write(cr, uid, ids, value, context=context)
self.action_forward(cr,uid, ids, context=context)
return {'type': 'ir.actions.act_window_close'}
crm_lead_mass_forward_to_partner()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -38,14 +38,70 @@
</button>
</field>
</record>
<record model="ir.actions.act_window" id="crm_lead_forward_to_partner_act">
<field name="name">Forward to Partner</field>
<field name="res_model">crm.lead.forward.to.partner</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_lead_forward_to_partner_form1"/>
<field name="view_id" ref="crm_lead_forward_to_partner_form"/>
<field name="target">new</field>
</record>
<record model="ir.ui.view" id="crm_forward_mass_mail_view">
<field name="name">crm.new.mass.forward.mail.form</field>
<field name="model">crm.lead.mass.forward.to.partner</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Send Mail" col="4">
<group colspan="4" col="2">
<separator string="Forward to Partner" colspan="4" />
<field name="history" colspan="2" on_change="on_change_history(history, context)" invisible="1"/>
<field name="email_from"/>
<field name="reply_to"/>
<field name="email_to" invisible="1" />
<field name="email_cc" invisible="1" />
<field name="subject" invisible="1" />
<field name="html"/>
</group>
<notebook colspan="6" >
<page string="Message" >
<field name="body" nolabel="1" colspan="4" default_focus="1" readonly="1"/>
</page>
<page string="Attachments" >
<field name="attachment_ids" colspan="4" nolabel="1">
<form string="Attachment">
<field name="binary" filename="name" />
<field name="name" />
</form>
<tree string="Attachments">
<field name="name" />
</tree>
</field>
</page>
</notebook>
<separator string="" colspan="6"/>
<group colspan="6" col="4" >
<field name="state" />
<button string="_Cancel" icon="gtk-cancel" special="cancel" />
<button name="action_mass_forward" type="object" string="_Mass forward" icon="gtk-go-forward" />
</group>
</form>
</field>
</record>
<act_window id="action_crm_send_mass_forward"
multi="True"
key2="client_action_multi" name="Mass forward to partner"
res_model="crm.lead.mass.forward.to.partner" src_model="crm.lead"
view_mode="form" target="new" view_type="form"
context="{'mass_forward' : True}"
view_id="crm_forward_mass_mail_view"
/>
</data>
</openerp>
+32 -23
View File
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-08-03 03:23+0000\n"
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
"PO-Revision-Date: 2011-04-10 18:32+0000\n"
"Last-Translator: Black Jack <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: 2011-01-15 05:42+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-04-11 04:53+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: crm_profiling
#: view:crm_profiling.questionnaire:0
msgid "Questions List"
msgstr ""
msgstr "问题列表"
#. module: crm_profiling
#: model:ir.module.module,description:crm_profiling.module_meta_information
@@ -41,6 +41,15 @@ msgid ""
"since it's the same which has been renamed.\n"
" "
msgstr ""
"\n"
" 这模块允许用户去细分业务伙伴。\n"
"它使用先前和修改好的细分模块的客户概括标准,以问卷调查的方式,你能组合新的问卷调查给业务伙伴。\n"
"\n"
"它已经合并到客户关系管理中\n"
"菜单在客户关系管理\\设置\\细分\n"
"\n"
"* 备注:这模块不兼容细分模块因为它们是同名的。\n"
" "
#. module: crm_profiling
#: model:ir.actions.act_window,help:crm_profiling.open_questionnaires
@@ -49,7 +58,7 @@ msgid ""
"in the sales cycle by helping them to ask the right questions. The "
"segmentation tool allows you to automatically assign a partner to a category "
"according to his answers to the different questionnaires."
msgstr ""
msgstr "你能创建特定主题的问卷调查去指导你的团队在销售周期向客户询问合适的问题。这细分工具能根据不同问题的答案自动划分业务伙伴到不同的类型。"
#. module: crm_profiling
#: field:crm_profiling.answer,question_id:0
@@ -61,12 +70,12 @@ msgstr "问题"
#. module: crm_profiling
#: wizard_button:open_questionnaire,init,open:0
msgid "Open Questionnaire"
msgstr "待处理调查问卷"
msgstr "开启的问卷调查"
#. module: crm_profiling
#: constraint:res.partner:0
msgid "Error ! You can not create recursive associated members."
msgstr ""
msgstr "错误!您不能创建递归的相关成员。"
#. module: crm_profiling
#: view:crm.segmentation:0
@@ -82,17 +91,17 @@ msgstr "答案"
#. module: crm_profiling
#: model:ir.model,name:crm_profiling.model_crm_segmentation
msgid "Partner Segmentation"
msgstr ""
msgstr "业务伙伴细分"
#. module: crm_profiling
#: view:res.partner:0
msgid "Profiling"
msgstr "配置中"
msgstr "概况"
#. module: crm_profiling
#: model:ir.module.module,shortdesc:crm_profiling.module_meta_information
msgid "Crm Profiling management - To Perform Segmentation within Partners"
msgstr ""
msgstr "客户关系管理 客户概况管理 - 进行业务伙伴的细分"
#. module: crm_profiling
#: view:crm_profiling.questionnaire:0
@@ -115,19 +124,19 @@ msgstr "答案"
#. module: crm_profiling
#: wizard_field:open_questionnaire,init,questionnaire_name:0
msgid "Questionnaire name"
msgstr "调查问卷名称"
msgstr "问卷调查名称"
#. module: crm_profiling
#: view:res.partner:0
msgid "Use a questionnaire"
msgstr "使用的调查问卷"
msgstr "使用一问卷调查"
#. module: crm_profiling
#: view:crm_profiling.questionnaire:0
#: model:ir.actions.act_window,name:crm_profiling.open_questionnaires
#: model:ir.ui.menu,name:crm_profiling.menu_segm_questionnaire
msgid "Questionnaires"
msgstr "调查问卷"
msgstr "问卷调查"
#. module: crm_profiling
#: help:crm.segmentation,profiling_active:0
@@ -135,17 +144,17 @@ msgid ""
"Check this box if you want to use this tab as "
"part of the segmentation rule. If not checked, "
"the criteria beneath will be ignored"
msgstr ""
msgstr "选中这选项,如果你想使用这标签作为细分规则的一部分。如果不选中,这规则将被忽略"
#. module: crm_profiling
#: constraint:crm.segmentation:0
msgid "Error ! You can not create recursive profiles."
msgstr "错误! 你不能创建递归的配置"
msgstr "错误! 你不能创建递归的客户概况。"
#. module: crm_profiling
#: field:crm.segmentation,profiling_active:0
msgid "Use The Profiling Rules"
msgstr "使用这配置规则"
msgstr "使用这客户概况规则"
#. module: crm_profiling
#: view:crm_profiling.question:0
@@ -156,12 +165,12 @@ msgstr "可用答案"
#. module: crm_profiling
#: field:crm.segmentation,answer_yes:0
msgid "Included Answers"
msgstr "包括答案"
msgstr "包括的答案"
#. module: crm_profiling
#: field:crm.segmentation,child_ids:0
msgid "Child Profiles"
msgstr "子配置"
msgstr "子客户概况"
#. module: crm_profiling
#: view:crm_profiling.question:0
@@ -174,7 +183,7 @@ msgstr "问题"
#. module: crm_profiling
#: field:crm.segmentation,parent_id:0
msgid "Parent Profile"
msgstr "上级配置"
msgstr "上级客户概况"
#. module: crm_profiling
#: wizard_button:open_questionnaire,init,end:0
@@ -185,7 +194,7 @@ msgstr "取消"
#. module: crm_profiling
#: model:ir.model,name:crm_profiling.model_res_partner
msgid "Partner"
msgstr ""
msgstr "业务伙伴"
#. module: crm_profiling
#: code:addons/crm_profiling/crm_profiling.py:178
@@ -194,12 +203,12 @@ msgstr ""
#: wizard_view:open_questionnaire,init:0
#, python-format
msgid "Questionnaire"
msgstr "调查问卷"
msgstr "问卷调查"
#. module: crm_profiling
#: model:ir.actions.wizard,name:crm_profiling.wizard_open_questionnaire
msgid "Using a questionnaire"
msgstr "使用一调查问卷"
msgstr "使用一问卷调查"
#. module: crm_profiling
#: wizard_button:open_questionnaire,open,compute:0
+16 -4
View File
@@ -279,10 +279,22 @@ class document_file(osv.osv):
else:
if vals.get('file_size'):
del vals['file_size']
if not self._check_duplication(cr, uid, vals):
raise osv.except_osv(_('ValidateError'), _('File name must be unique!'))
result = super(document_file, self).create(cr, uid, vals, context)
cr.commit() # ?
result = self._check_duplication(cr, uid, vals)
if not result:
domain = [
('res_id', '=', vals['res_id']),
('res_model', '=', vals['res_model']),
('datas_fname', '=', vals['datas_fname']),
]
attach_ids = self.search(cr, uid, domain, context=context)
super(document_file, self).write(cr, uid, attach_ids,
{'datas' : vals['datas']},
context=context)
result = attach_ids[0]
else:
#raise osv.except_osv(_('ValidateError'), _('File name must be unique!'))
result = super(document_file, self).create(cr, uid, vals, context)
cr.commit() # ?
return result
def __get_partner_id(self, cr, uid, res_model, res_id, context=None):
+206
View File
@@ -0,0 +1,206 @@
# Catalan translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-04-10 16:26+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan <ca@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: 2011-04-11 04:53+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
#: field:document.webdav.file.property,create_date:0
msgid "Date Created"
msgstr ""
#. module: document_webdav
#: constraint:document.directory:0
msgid "Error! You can not create recursive Directories."
msgstr ""
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Search Document properties"
msgstr ""
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: field:document.webdav.dir.property,namespace:0
#: view:document.webdav.file.property:0
#: field:document.webdav.file.property,namespace:0
msgid "Namespace"
msgstr ""
#. module: document_webdav
#: field:document.directory,dav_prop_ids:0
msgid "DAV properties"
msgstr ""
#. module: document_webdav
#: model:ir.model,name:document_webdav.model_document_webdav_file_property
msgid "document.webdav.file.property"
msgstr ""
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Group By..."
msgstr ""
#. module: document_webdav
#: view:document.directory:0
msgid "These properties will be added to WebDAV requests"
msgstr ""
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_file_props
msgid "DAV properties for documents"
msgstr ""
#. module: document_webdav
#: code:addons/document_webdav/webdav.py:37
#, python-format
msgid "PyWebDAV Import Error!"
msgstr ""
#. module: document_webdav
#: view:document.webdav.file.property:0
#: field:document.webdav.file.property,file_id:0
msgid "Document"
msgstr ""
#. module: document_webdav
#: model:ir.module.module,description:document_webdav.module_meta_information
msgid ""
" With this module, the WebDAV server for the documents is activated.\n"
" You can then use any compatible browser to remotely see the "
"attachments of OpenObject.\n"
"\n"
" After installation, the webDAV server can be controlled by a "
"[webdav] section in the server's config.\n"
" Server Configuration Parameter:\n"
" [webdav]\n"
" ; enable = True ; Serve webdav over the http(s) servers\n"
" ; vdir = webdav ; the directory that webdav will be served at\n"
" ; this default val means that webdav will be\n"
" ; on \"http://localhost:8069/webdav/\n"
" ; verbose = True ; Turn on the verbose messages of webdav\n"
" ; debug = True ; Turn on the debugging messages of webdav\n"
" ; since the messages are routed to the python logging, with\n"
" ; levels \"debug\" and \"debug_rpc\" respectively, you can leave\n"
" ; these options on\n"
msgstr ""
#. module: document_webdav
#: sql_constraint:document.directory:0
msgid "Directory cannot be parent of itself!"
msgstr ""
#. module: document_webdav
#: view:document.directory:0
msgid "Dynamic context"
msgstr ""
#. module: document_webdav
#: view:document.directory:0
msgid "WebDAV properties"
msgstr ""
#. module: document_webdav
#: sql_constraint:document.directory:0
msgid "The directory name must be unique !"
msgstr ""
#. module: document_webdav
#: code:addons/document_webdav/webdav.py:37
#, python-format
msgid ""
"Please install PyWebDAV from "
"http://code.google.com/p/pywebdav/downloads/detail?name=PyWebDAV-"
"0.9.4.tar.gz&can=2&q=/"
msgstr ""
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_dir_props
msgid "DAV properties for folders"
msgstr ""
#. module: document_webdav
#: view:document.directory:0
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Properties"
msgstr ""
#. module: document_webdav
#: field:document.webdav.dir.property,name:0
#: field:document.webdav.file.property,name:0
msgid "Name"
msgstr ""
#. module: document_webdav
#: model:ir.model,name:document_webdav.model_document_webdav_dir_property
msgid "document.webdav.dir.property"
msgstr ""
#. module: document_webdav
#: field:document.webdav.dir.property,value:0
#: field:document.webdav.file.property,value:0
msgid "Value"
msgstr ""
#. module: document_webdav
#: field:document.webdav.dir.property,dir_id:0
#: model:ir.model,name:document_webdav.model_document_directory
msgid "Directory"
msgstr ""
#. module: document_webdav
#: field:document.webdav.dir.property,write_uid:0
#: field:document.webdav.file.property,write_uid:0
msgid "Last Modification User"
msgstr ""
#. module: document_webdav
#: view:document.webdav.dir.property:0
msgid "Dir"
msgstr ""
#. module: document_webdav
#: field:document.webdav.dir.property,write_date:0
#: field:document.webdav.file.property,write_date:0
msgid "Date Modified"
msgstr ""
#. module: document_webdav
#: field:document.webdav.dir.property,create_uid:0
#: field:document.webdav.file.property,create_uid:0
msgid "Creator"
msgstr ""
#. module: document_webdav
#: model:ir.module.module,shortdesc:document_webdav.module_meta_information
msgid "WebDAV server for Document Management"
msgstr ""
#. module: document_webdav
#: sql_constraint:document.directory:0
msgid "Directory must have a parent or a storage"
msgstr ""
#. module: document_webdav
#: field:document.webdav.dir.property,do_subst:0
#: field:document.webdav.file.property,do_subst:0
msgid "Substitute"
msgstr ""
@@ -92,6 +92,7 @@ class email_template_mailbox(osv.osv):
self.unlink(cr, uid, [id], context=context)
# Remove attachments for this mail
attachment_pool.unlink(cr, uid, values['attachments_ids'], context=context)
return result
else:
self.write(cr, uid, id, {'folder':'sent', 'state':'na', 'date_mail':time.strftime("%Y-%m-%d %H:%M:%S")}, context)
self.historise(cr, uid, [id], "Email sent successfully", context)
@@ -201,7 +201,7 @@
</record>
<menuitem name="Email Templates" id="menu_email_template_all"
parent="menu_email_template_configuration" action="action_email_template_tree_all" />
parent="menu_email_template" action="action_email_template_tree_all" />
<!-- Email Template menu in Tools -->
<menuitem name="Email Templates" id="menu_email_template_all_tools"
+317
View File
@@ -0,0 +1,317 @@
# Catalan translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-04-10 14:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan <ca@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: 2011-04-11 04:54+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: fetchmail
#: constraint:email.server:0
msgid ""
"Warning! Record for selected Model can not be created\n"
"Please choose valid Model"
msgstr ""
"Atenció! No es poden crear registres per al model seleccionat\n"
"Seleccioneu un model vàlid"
#. module: fetchmail
#: selection:email.server,state:0
msgid "Confirmed"
msgstr "Confirmat"
#. module: fetchmail
#: view:email.server:0
msgid "Confirm"
msgstr "Confirma"
#. module: fetchmail
#: view:email.server:0
msgid "Group By..."
msgstr "Agrupa per..."
#. module: fetchmail
#: view:email.server:0
#: field:email.server,state:0
msgid "State"
msgstr "Estat"
#. module: fetchmail
#: view:email.server:0
msgid "POP"
msgstr "POP"
#. module: fetchmail
#: selection:email.server,state:0
msgid "Not Confirmed"
msgstr "No confirmat"
#. module: fetchmail
#: field:email.server,user:0
msgid "User Name"
msgstr "Nom de l'usuari"
#. module: fetchmail
#: view:email.server:0
msgid "Type"
msgstr "Tipus"
#. module: fetchmail
#: view:email.server:0
msgid "POP/IMAP Servers"
msgstr "Servidores POP/IMAP"
#. module: fetchmail
#: model:ir.module.module,shortdesc:fetchmail.module_meta_information
msgid "Fetchmail Server"
msgstr "Servidor Fetchmail"
#. module: fetchmail
#: view:email.server:0
#: field:email.server,note:0
msgid "Description"
msgstr "Descripció"
#. module: fetchmail
#: help:email.server,object_id:0
msgid ""
"OpenObject Model. Generates a record of this model.\n"
"Select Object with message_new attrbutes."
msgstr ""
"Model OpenObject. Genera un registre d'aquest model.\n"
"Seleccioneu un objecte amb atributs message_new (nou missatge)."
#. module: fetchmail
#: field:email.server,attach:0
msgid "Add Attachments ?"
msgstr "Afegeix adjunts?"
#. module: fetchmail
#: view:email.server:0
msgid "# of emails"
msgstr "nombre d'emails"
#. module: fetchmail
#: model:ir.actions.act_window,name:fetchmail.act_server_history
msgid "Email History"
msgstr "Historial d'emails"
#. module: fetchmail
#: field:email.server,user_id:0
msgid "User"
msgstr "Usuari"
#. module: fetchmail
#: field:email.server,date:0
msgid "Date"
msgstr "Data"
#. module: fetchmail
#: selection:email.server,state:0
msgid "Waiting for Verification"
msgstr "Esperant verificació"
#. module: fetchmail
#: field:email.server,password:0
msgid "Password"
msgstr "Contrasenya"
#. module: fetchmail
#: view:mailgate.message:0
msgid "Emails"
msgstr "Emails"
#. module: fetchmail
#: view:email.server:0
msgid "Search Email Servers"
msgstr "Buscar servidores de correo"
#. module: fetchmail
#: view:email.server:0
msgid "Server & Login"
msgstr "Servidor i connexió"
#. module: fetchmail
#: view:email.server:0
msgid "Auto Reply?"
msgstr "¿Auto responder?"
#. module: fetchmail
#: field:email.server,name:0
msgid "Name"
msgstr "Nom"
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_mailgate_message
msgid "Mailgateway Message"
msgstr "Missatge passarel·la de correu"
#. module: fetchmail
#: model:ir.actions.act_window,name:fetchmail.action_email_server_tree
msgid "POP Servers"
msgstr "Servidores POP"
#. module: fetchmail
#: view:email.server:0
msgid "Set to Draft"
msgstr "Canvia a esborrany"
#. module: fetchmail
#: field:email.server,message_ids:0
#: model:ir.actions.act_window,name:fetchmail.action_view_mail_message_emails
msgid "Messages"
msgstr "Missatges"
#. module: fetchmail
#: model:ir.ui.menu,name:fetchmail.menu_action_fetchmail_server_tree
msgid "Fetchmail Services"
msgstr "Servicios Fetchmail"
#. module: fetchmail
#: field:email.server,server:0
msgid "Server"
msgstr "Servidor"
#. module: fetchmail
#: field:email.server,active:0
msgid "Active"
msgstr "Actiu"
#. module: fetchmail
#: view:email.server:0
msgid "Process Parameter"
msgstr "Paràmetre procés"
#. module: fetchmail
#: field:email.server,is_ssl:0
msgid "SSL ?"
msgstr "SSL"
#. module: fetchmail
#: selection:email.server,type:0
#: selection:mailgate.message,server_type:0
msgid "IMAP Server"
msgstr "Servidor IMAP"
#. module: fetchmail
#: field:email.server,object_id:0
msgid "Model"
msgstr "Model"
#. module: fetchmail
#: view:email.server:0
msgid "IMAP"
msgstr "IMAP"
#. module: fetchmail
#: view:email.server:0
#: model:ir.model,name:fetchmail.model_email_server
msgid "POP/IMAP Server"
msgstr "Servidor POP/IMAP"
#. module: fetchmail
#: constraint:email.server:0
msgid "Warning! Can't have duplicate server configuration!"
msgstr "¡Aviso! No puede tener la configuración del servidor duplicada."
#. module: fetchmail
#: field:email.server,type:0
#: field:mailgate.message,server_type:0
msgid "Server Type"
msgstr "Tipus de servidor"
#. module: fetchmail
#: view:email.server:0
msgid "Login Information"
msgstr "Informació de connexió"
#. module: fetchmail
#: view:email.server:0
msgid "Server Information"
msgstr "Informació del servidor"
#. module: fetchmail
#: help:email.server,attach:0
msgid "Fetches mail with attachments if true."
msgstr "Si está marcado, obtiene correo con documentos adjuntos."
#. module: fetchmail
#: selection:email.server,type:0
#: selection:mailgate.message,server_type:0
msgid "POP Server"
msgstr "Servidor POP"
#. module: fetchmail
#: field:email.server,port:0
msgid "Port"
msgstr "Port"
#. module: fetchmail
#: model:ir.module.module,description:fetchmail.module_meta_information
msgid ""
"Fetchmail: \n"
" * Fetch email from Pop / IMAP server\n"
" * Support SSL\n"
" * Integrated with all Modules\n"
" * Automatic Email Receive\n"
" * Email based Records (Add, Update)\n"
" "
msgstr ""
"Fetchmail: \n"
" * Recuperar email des de servidor POP / IMAP\n"
" * Compatibilitat amb SSL\n"
" * Integració amb tots els mòduls\n"
" * Recepció automàtica d'emails\n"
" * Registres basats en email (afegir, actualitzar)\n"
" "
#. module: fetchmail
#: view:email.server:0
msgid "SSL"
msgstr "SSL"
#. module: fetchmail
#: help:email.server,action_id:0
msgid ""
"An Email Server Action. It will be run whenever an e-mail is fetched from "
"server."
msgstr ""
"Una acció de servidor de correu. S'executarà sempre que s'obtingui un email "
"des del servidor."
#. module: fetchmail
#: help:email.server,priority:0
msgid "Priority between 0 to 10, select define the order of Processing"
msgstr "Prioritat entre 0 i 10, defineix l'ordre de procés."
#. module: fetchmail
#: field:email.server,action_id:0
msgid "Email Server Action"
msgstr "Acción d'email del servidor"
#. module: fetchmail
#: field:email.server,priority:0
msgid "Server Priority"
msgstr "Prioridad servidor"
#. module: fetchmail
#: view:mailgate.message:0
#: field:mailgate.message,server_id:0
msgid "Mail Server"
msgstr "Servidor de correu"
#. module: fetchmail
#: view:email.server:0
msgid "Fetch Emails"
msgstr "Recupera emails"
+2 -2
View File
@@ -151,7 +151,7 @@ class hr_employee(osv.osv):
'work_email': fields.char('Work E-mail', size=240),
'work_location': fields.char('Office Location', size=32),
'notes': fields.text('Notes'),
'parent_id': fields.many2one('hr.employee', 'Manager'),
'parent_id': fields.many2one('hr.employee', 'Manager'),
'category_ids': fields.many2many('hr.employee.category', 'employee_category_rel', 'emp_id', 'category_id', 'Category'),
'child_ids': fields.one2many('hr.employee', 'parent_id', 'Subordinates'),
'resource_id': fields.many2one('resource.resource', 'Resource', ondelete='cascade', required=True),
@@ -240,7 +240,7 @@ class res_users(osv.osv):
except:
# Tolerate a missing shortcut. See product/product.py for similar code.
logging.getLogger('orm').debug('Skipped meetings shortcut for user "%s"', data.get('name','<new'))
return user_id
res_users()
+56
View File
@@ -0,0 +1,56 @@
# Spanish (Ecuador) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-07 06:01+0000\n"
"PO-Revision-Date: 2011-04-11 18:21+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Spanish (Ecuador) <es_EC@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: 2011-04-12 04:34+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: l10n_ec
#: model:ir.module.module,shortdesc:l10n_ec.module_meta_information
msgid "Ecuador - Accounting Chart"
msgstr "Ecuador - Plan Contable"
#. module: l10n_ec
#: model:ir.module.module,description:l10n_ec.module_meta_information
msgid ""
"\n"
" This is the base module to manage the accounting chart for Ecuador in "
"OpenERP.\n"
" "
msgstr ""
"\n"
" Este es el módulo base para gestionar el plan contable para Ecuador en "
"OpenERP.\n"
" "
#. module: l10n_ec
#: model:ir.actions.todo,note:l10n_ec.config_call_account_template_ec
msgid ""
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
"the name of the company, the chart template to follow, the no. of digits to "
"generate the code for your accounts and Bank account, currency to create "
"Journals. Thus,the pure copy of chart Template is generated.\n"
"\tThis is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Generar el plan contable a partir de una plantilla de plan contable. Se le "
"pedirá el nombre de la compañía, la plantilla de plan contable a utilizar, "
"el número de dígitos para generar el código de las cuentas y de la cuenta "
"bancaria, la moneda para crear los diarios. Así pues, se genere una copia "
"exacta de la plantilla de plan contable.\n"
"\tEste es el mismo asistente que se ejecuta desde Contabilidad y finanzas / "
"Configuración / Contabilidad financiera / Cuentas financieras / Generar el "
"plan contable a partir de una plantilla de plan contable."
+1 -1
View File
@@ -251,7 +251,7 @@ class mailgate_message(osv.osv):
for message in self.browse(cr, uid, ids, context=context):
msg_txt = ''
if message.history:
msg_txt += _('%s wrote on %s:\n\t') % (message.email_from or '/', format_date_tz(message.date, tz))
msg_txt += _('%s wrote on %s: \n Subject: %s \n\t') % (message.email_from or '/', format_date_tz(message.date, tz), message.name)
if message.description:
msg_txt += self.truncate_data(cr, uid, message.description, context=context)
else:
+75 -21
View File
@@ -21,6 +21,7 @@
import time
import base64
import itertools
from datetime import datetime
from dateutil.relativedelta import relativedelta
from operator import itemgetter
@@ -92,7 +93,17 @@ class marketing_campaign(osv.osv):
this campaign to be run"),
'partner_field_id': fields.many2one('ir.model.fields', 'Partner Field',
domain="[('model_id', '=', object_id), ('ttype', '=', 'many2one'), ('relation', '=', 'res.partner')]",
help="The generated workitems will be linked to the partner related to the record. If the record is the partner itself leave this field empty."),
help="The generated workitems will be linked to the partner related to the record. "\
"If the record is the partner itself leave this field empty. "\
"This is useful for reporting purposes, via the Campaign Analysis or Campaign Follow-up views."),
'unique_field_id': fields.many2one('ir.model.fields', 'Unique Field',
domain="[('model_id', '=', object_id), ('ttype', 'in', ['char','int','many2one','text','selection'])]",
help='If set, this field will help segments that work in "no duplicates" mode to avoid '\
'selecting similar records twice. Similar records are records that have the same value for '\
'this unique field. For example by choosing the "email_from" field for CRM Leads you would prevent '\
'sending the same campaign to the same email address again. If not set, the "no duplicates" segments '\
"will only avoid selecting the same record again if it entered the campaign previously. "\
"Only easily comparable fields like textfields, integers, selections or single relationships may be used."),
'mode': fields.selection([('test', 'Test Directly'),
('test_realtime', 'Test in Realtime'),
('manual', 'With Manual Confirmation'),
@@ -208,11 +219,36 @@ Normal - the campaign runs normally and automatically sends all emails and repor
def copy(self, cr, uid, id, default=None, context=None):
raise osv.except_osv(_("Operation not supported"), _("Sorry, campaign duplication is not supported at the moment."))
def _find_duplicate_workitems(self, cr, uid, record, campaign_rec, context=None):
"""Finds possible duplicates workitems for a record in this campaign, based on a uniqueness
field.
:param record: browse_record to find duplicates workitems for.
:param campaign_rec: browse_record of campaign
"""
Workitems = self.pool.get('marketing.campaign.workitem')
duplicate_workitem_domain = [('res_id','=', record.id),
('campaign_id','=', campaign_rec.id)]
unique_field = campaign_rec.unique_field_id
if unique_field:
unique_value = getattr(record, unique_field.name, None)
if unique_value:
if unique_field.ttype == 'many2one':
unique_value = unique_value.id
similar_res_ids = self.pool.get(campaign_rec.object_id.model).search(cr, uid,
[(unique_field.name, '=', unique_value)], context=context)
if similar_res_ids:
duplicate_workitem_domain = [('res_id','in', similar_res_ids),
('campaign_id','=', campaign_rec.id)]
return Workitems.search(cr, uid, duplicate_workitem_domain, context=context)
marketing_campaign()
class marketing_campaign_segment(osv.osv):
_name = "marketing.campaign.segment"
_description = "Campaign Segment"
_order = "name"
def _get_next_sync(self, cr, uid, ids, fn, args, context=None):
# next auto sync date is same for all segments
@@ -225,13 +261,19 @@ class marketing_campaign_segment(osv.osv):
'campaign_id': fields.many2one('marketing.campaign', 'Campaign', required=True, select=1, ondelete="cascade"),
'object_id': fields.related('campaign_id','object_id', type='many2one', relation='ir.model', string='Resource'),
'ir_filter_id': fields.many2one('ir.filters', 'Filter', ondelete="restrict",
help="Filter to select the matching resource records that belong to this segment. New filters can be created and saved using the advanced search on the list view of the Resource. If no filter is set, all records are selected without filtering. The synchronization mode may also add a criterion to the filter."),
help="Filter to select the matching resource records that belong to this segment. "\
"New filters can be created and saved using the advanced search on the list view of the Resource. "\
"If no filter is set, all records are selected without filtering. "\
"The synchronization mode may also add a criterion to the filter."),
'sync_last_date': fields.datetime('Last Synchronization', help="Date on which this segment was synchronized last time (automatically or manually)"),
'sync_mode': fields.selection([('create_date', 'Only records created after last sync'),
('write_date', 'Only records modified after last sync (no duplicates)'),
('all', 'All records (no duplicates)')],
'Synchronization mode',
help="Determines an additional criterion to add to the filter when selecting new records to inject in the campaign."),
help="Determines an additional criterion to add to the filter when selecting new records to inject in the campaign. "\
'"No duplicates" prevents selecting records which have already entered the campaign previously.'\
'If the campaign has a "unique field" set, "no duplicates" will also prevent selecting records which have '\
'the same value for the unique field as other records that already entered the campaign.'),
'state': fields.selection([('draft', 'Draft'),
('running', 'Running'),
('done', 'Done'),
@@ -300,6 +342,7 @@ class marketing_campaign_segment(osv.osv):
def process_segment(self, cr, uid, segment_ids=None, context=None):
Workitems = self.pool.get('marketing.campaign.workitem')
Campaigns = self.pool.get('marketing.campaign')
if not segment_ids:
segment_ids = self.search(cr, uid, [('state', '=', 'running')], context=context)
@@ -322,21 +365,20 @@ class marketing_campaign_segment(osv.osv):
object_ids = model_obj.search(cr, uid, criteria, context=context)
# XXX TODO: rewrite this loop more efficiently without doing 1 search per record!
for o_ids in model_obj.browse(cr, uid, object_ids, context=context):
# avoid duplicated workitem for the same resource
for record in model_obj.browse(cr, uid, object_ids, context=context):
# avoid duplicate workitem for the same resource
if segment.sync_mode in ('write_date','all'):
wi_ids = Workitems.search(cr, uid, [('res_id','=',o_ids.id),('segment_id','=',segment.id)], context=context)
if wi_ids:
if Campaigns._find_duplicate_workitems(cr, uid, record, segment.campaign_id, context=context):
continue
wi_vals = {
'segment_id': segment.id,
'date': action_date,
'state': 'todo',
'res_id': o_ids.id
'res_id': record.id
}
partner = self.pool.get('marketing.campaign')._get_partner_for(segment.campaign_id, o_ids)
partner = self.pool.get('marketing.campaign')._get_partner_for(segment.campaign_id, record)
if partner:
wi_vals['partner_id'] = partner.id
@@ -352,6 +394,7 @@ marketing_campaign_segment()
class marketing_campaign_activity(osv.osv):
_name = "marketing.campaign.activity"
_order = "name"
_description = "Campaign Activity"
_action_types = [
@@ -453,10 +496,11 @@ class marketing_campaign_activity(osv.osv):
action_context = dict(context,
active_id=workitem.res_id,
active_ids=[workitem.res_id],
active_model=workitem.object_id.model)
active_model=workitem.object_id.model,
workitem=workitem)
res = server_obj.run(cr, uid, [activity.server_action_id.id],
context=action_context)
# server action return False if the action is perfomed
# server action return False if the action is performed
# except client_action, other and python code
return res == False and True or res
@@ -556,6 +600,8 @@ class marketing_campaign_workitem(osv.osv):
continue
proxy = self.pool.get(wi.object_id.model)
if not proxy.exists(cr, uid, [wi.res_id]):
continue
ng = proxy.name_get(cr, uid, [wi.res_id], context=context)
if ng:
res[wi.id] = ng[0][1]
@@ -566,8 +612,14 @@ class marketing_campaign_workitem(osv.osv):
if not len(args):
return []
condition = []
final_ids = []
condition_name = None
for domain_item in args:
# we only use the first domain criterion and ignore all the rest including operators
if isinstance(domain_item, (list,tuple)) and len(domain_item) == 3 and domain_item[0] == 'res_name':
condition_name = [None, domain_item[1], domain_item[2]]
break
assert condition_name, "Invalid search domain for marketing_campaign_workitem.res_name. It should use 'res_name'"
cr.execute("""select w.id, w.res_id, m.model \
from marketing_campaign_workitem w \
@@ -576,15 +628,17 @@ class marketing_campaign_workitem(osv.osv):
left join ir_model m on (m.id=c.object_id)
""")
res = cr.fetchall()
workitem_map = {}
matching_workitems = []
for id, res_id, model in res:
workitem_map.setdefault(model,{}).setdefault(res_id,set()).add(id)
for model, id_map in workitem_map.iteritems():
model_pool = self.pool.get(model)
for arg in args:
if arg[1] == 'ilike':
condition.append((model_pool._rec_name, 'ilike', arg[2]))
res_ids = model_pool.search(cr, uid, condition, context=context)
if res_id in res_ids:
final_ids.append(id)
return [('id', 'in', final_ids)]
condition_name[0] = model_pool._rec_name
condition = [('id', 'in', id_map.keys()), condition_name]
for res_id in model_pool.search(cr, uid, condition, context=context):
matching_workitems.extend(id_map[res_id])
return [('id', 'in', list(set(matching_workitems)))]
_columns = {
'segment_id': fields.many2one('marketing.campaign.segment', 'Segment', readonly=True),
@@ -722,7 +776,7 @@ class marketing_campaign_workitem(osv.osv):
# manual states are not processed automatically
continue
while True:
domain = [('state', '=', 'todo'), ('date', '!=', False)]
domain = [('campaign_id', '=', camp.id), ('state', '=', 'todo'), ('date', '!=', False)]
if camp.mode in ('test_realtime', 'active'):
domain += [('date','<=', time.strftime('%Y-%m-%d %H:%M:%S'))]
@@ -26,6 +26,7 @@
<separator string="Resource" colspan="2" />
<field name="object_id"/>
<field name="partner_field_id"/>
<field name="unique_field_id"/>
</group>
<group colspan="2" col="2">
<separator string="Cost" colspan="2" />
+929
View File
@@ -0,0 +1,929 @@
# Spanish (Ecuador) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-04-11 18:23+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Spanish (Ecuador) <es_EC@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: 2011-04-12 04:34+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: procurement
#: view:make.procurement:0
msgid "Ask New Products"
msgstr "Solicitar nuevos productos"
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_sched
msgid "Schedulers"
msgstr "Planificaciones"
#. module: procurement
#: model:ir.model,name:procurement.model_make_procurement
msgid "Make Procurements"
msgstr "Realizar abastecimientos"
#. module: procurement
#: help:procurement.order.compute.all,automatic:0
msgid ""
"Triggers an automatic procurement for all products that have a virtual stock "
"under 0. You should probably not use this option, we suggest using a MTO "
"configuration on products."
msgstr ""
"Dispara un abastecimiento automático para todos los productos que tienen un "
"stock virtual menor que 0. Probablemente no debería utilizar esta opción, "
"sugerimos utilizar una configuración de MTO en productos."
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Group By..."
msgstr "Agrupado por..."
#. module: procurement
#: help:stock.warehouse.orderpoint,procurement_draft_ids:0
msgid "Draft procurement of the product and location of that orderpoint"
msgstr ""
"Abastecimiento borrador del producto y ubicación para esta regla de stock "
"mínimo."
#. module: procurement
#: code:addons/procurement/procurement.py:288
#, python-format
msgid "No supplier defined for this product !"
msgstr "¡No se ha definido un proveedor para este producto!"
#. module: procurement
#: field:make.procurement,uom_id:0
msgid "Unit of Measure"
msgstr "Unidad de Medida"
#. module: procurement
#: field:procurement.order,procure_method:0
msgid "Procurement Method"
msgstr "Método de abastecimiento"
#. module: procurement
#: code:addons/procurement/procurement.py:298
#, python-format
msgid "No address defined for the supplier"
msgstr "No se ha definido dirección para el proveedor"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.action_procurement_compute
msgid "Compute Stock Minimum Rules Only"
msgstr "Calcular sólo reglas de stock mínimo"
#. module: procurement
#: field:procurement.order,company_id:0
#: field:stock.warehouse.orderpoint,company_id:0
msgid "Company"
msgstr "Compañia"
#. module: procurement
#: field:procurement.order,product_uos_qty:0
msgid "UoS Quantity"
msgstr "Cantidad UdV"
#. module: procurement
#: view:procurement.order:0
#: field:procurement.order,name:0
msgid "Reason"
msgstr "Razón"
#. module: procurement
#: view:procurement.order.compute:0
msgid "Compute Procurements"
msgstr "Calcular abastecimientos"
#. module: procurement
#: field:procurement.order,message:0
msgid "Latest error"
msgstr "Último error"
#. module: procurement
#: help:mrp.property,composition:0
msgid "Not used in computations, for information purpose only."
msgstr "No utilizado en cálculos, sólo con la finalidad de informar."
#. module: procurement
#: field:stock.warehouse.orderpoint,procurement_id:0
msgid "Latest procurement"
msgstr "Último abastecimiento"
#. module: procurement
#: view:procurement.order:0
msgid "Notes"
msgstr "Notas"
#. module: procurement
#: selection:procurement.order,procure_method:0
msgid "on order"
msgstr "bajo pedido"
#. module: procurement
#: help:procurement.order,message:0
msgid "Exception occurred while computing procurement orders."
msgstr ""
"Ha ocurrido una excepción mientras se calculaban órdenes de abastecimiento."
#. module: procurement
#: help:procurement.order,state:0
msgid ""
"When a procurement is created the state is set to 'Draft'.\n"
" If the procurement is confirmed, the state is set to 'Confirmed'. "
" \n"
"After confirming the state is set to 'Running'.\n"
" If any exception arises in the order then the state is set to 'Exception'.\n"
" Once the exception is removed the state becomes 'Ready'.\n"
" It is in 'Waiting'. state when the procurement is waiting for another one "
"to finish."
msgstr ""
"Cuando se crea una orden de abastecimiento, su estado es 'Borrador'. \n"
"Si el abastecimiento se confirma, el estado cambia a 'Confirmada'. "
" \n"
"Después de confirmar el estado se establece como 'En curso'.\n"
"Si surge cualquier excepción con la orden, el estado pasa a 'Excepción'.\n"
"Una vez la excepción es solucionada, el estado cambia a 'Preparada'.\n"
"Está en estado 'En espera' cuando está esperando a que acabe otro "
"abastecimiento."
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Minimum Stock Rules Search"
msgstr "Buscar reglas de stock mínimo"
#. module: procurement
#: help:stock.warehouse.orderpoint,product_min_qty:0
msgid ""
"When the virtual stock goes belong the Min Quantity, OpenERP generates a "
"procurement to bring the virtual stock to the Max Quantity."
msgstr ""
"Cuando el stock virtual está por debajo de la cantidad mínima, OpenERP "
"genera un abastecimiento para aumentar el stock virtual a la cantidad máxima."
#. module: procurement
#: view:procurement.order.compute.all:0
msgid "Scheduler Parameters"
msgstr "Parámetros del planificador"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_move
msgid "Stock Move"
msgstr "Movimiento de stock"
#. module: procurement
#: view:procurement.order:0
msgid "Planification"
msgstr "Planificación"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Ready"
msgstr "Preparado"
#. module: procurement
#: field:procurement.order.compute.all,automatic:0
msgid "Automatic orderpoint"
msgstr "Generación de orden automática"
#. module: procurement
#: field:mrp.property,composition:0
msgid "Properties composition"
msgstr "Composición de propiedades"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Confirmed"
msgstr "Confirmado"
#. module: procurement
#: view:procurement.order:0
msgid "Retry"
msgstr "Reintentar"
#. module: procurement
#: view:procurement.order.compute:0
#: view:procurement.orderpoint.compute:0
msgid "Parameters"
msgstr "Parámetros"
#. module: procurement
#: view:procurement.order:0
msgid "Confirm"
msgstr "Confirmar"
#. module: procurement
#: help:procurement.order,origin:0
msgid ""
"Reference of the document that created this Procurement.\n"
"This is automatically completed by OpenERP."
msgstr ""
"Referencia del documento que ha creado este abastecimiento.\n"
"OpenERP lo completa automáticamente."
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Procurement Orders to Process"
msgstr "Órdenes de abastecimiento a procesar"
#. module: procurement
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "¡Error! No puede crear compañías recursivas."
#. module: procurement
#: field:procurement.order,priority:0
msgid "Priority"
msgstr "Prioridad"
#. module: procurement
#: view:procurement.order:0
#: field:procurement.order,state:0
msgid "State"
msgstr "Estado"
#. module: procurement
#: field:procurement.order,location_id:0
#: view:stock.warehouse.orderpoint:0
#: field:stock.warehouse.orderpoint,location_id:0
msgid "Location"
msgstr "Ubicación"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_picking
msgid "Picking List"
msgstr "Lista Movimientos"
#. module: procurement
#: field:make.procurement,warehouse_id:0
#: view:stock.warehouse.orderpoint:0
#: field:stock.warehouse.orderpoint,warehouse_id:0
msgid "Warehouse"
msgstr "Inventario"
#. module: procurement
#: selection:stock.warehouse.orderpoint,logic:0
msgid "Best price (not yet active!)"
msgstr "Mejor precio (aún no activo!)"
#. module: procurement
#: view:procurement.order:0
msgid "Product & Location"
msgstr "Producto & Ubicación"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute
msgid "Compute Procurement"
msgstr "Calcular abastecimiento"
#. module: procurement
#: model:ir.module.module,shortdesc:procurement.module_meta_information
#: field:stock.move,procurements:0
msgid "Procurements"
msgstr "Abastecimientos"
#. module: procurement
#: field:res.company,schedule_range:0
msgid "Scheduler Range Days"
msgstr "Día rango planificador"
#. module: procurement
#: model:ir.actions.act_window,help:procurement.procurement_action
msgid ""
"A procurement order is used to record a need for a specific product at a "
"specific location. A procurement order is usually created automatically from "
"sales orders, a Pull Logistics rule or Minimum Stock Rules. When the "
"procurement order is confirmed, it automatically creates the necessary "
"operations to fullfil the need: purchase order proposition, manufacturing "
"order, etc."
msgstr ""
"Una orden de abastecimiento se utiliza para registrar una necesidad de un "
"producto específico en una ubicación específica. Una orden de abastecimiento "
"es generalmente creada automáticamente a partir de órdenes de venta, reglas "
"logísticas Pull o regals de stck mínimo. Cuando la orden de abastecimiento "
"es confirmada, crea automáticamente las operaciones necesarias para "
"satisafacer al necesidad: propuesta de orden de compra, orden de fabricaión, "
"etc."
#. module: procurement
#: field:make.procurement,date_planned:0
msgid "Planned Date"
msgstr "Fecha planificada"
#. module: procurement
#: view:procurement.order:0
msgid "Group By"
msgstr "Agrupar por"
#. module: procurement
#: field:make.procurement,qty:0
#: field:procurement.order,product_qty:0
msgid "Quantity"
msgstr "Cantidad"
#. module: procurement
#: code:addons/procurement/procurement.py:370
#, python-format
msgid "Not enough stock and no minimum orderpoint rule defined."
msgstr ""
"No hay suficiente stock y no se ha definido una regla de stock mínimo."
#. module: procurement
#: code:addons/procurement/procurement.py:137
#, python-format
msgid "Invalid action !"
msgstr "¡Acción inválida!"
#. module: procurement
#: view:procurement.order:0
msgid "References"
msgstr "Referencias"
#. module: procurement
#: view:res.company:0
msgid "Configuration"
msgstr "Configuración"
#. module: procurement
#: field:stock.warehouse.orderpoint,qty_multiple:0
msgid "Qty Multiple"
msgstr "Cant. Multiple"
#. module: procurement
#: help:procurement.order,procure_method:0
msgid ""
"If you encode manually a Procurement, you probably want to use a make to "
"order method."
msgstr ""
"Si codifica manualmente un abastecimiento, seguramente quiere usar un método "
"\"Obtener bajo pedido\"."
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_procurement
msgid "Automatic Procurements"
msgstr "Abastecimientos automáticos"
#. module: procurement
#: field:stock.warehouse.orderpoint,product_max_qty:0
msgid "Max Quantity"
msgstr "Cantidad máx"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order
#: model:process.process,name:procurement.process_process_procurementprocess0
#: view:procurement.order:0
msgid "Procurement"
msgstr "Abastecimiento"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.procurement_action
msgid "Procurement Orders"
msgstr "Órdenes de abastecimiento"
#. module: procurement
#: view:procurement.order:0
msgid "To Fix"
msgstr "Para corregir"
#. module: procurement
#: view:procurement.order:0
msgid "Exceptions"
msgstr "Excepciones"
#. module: procurement
#: model:process.node,note:procurement.process_node_serviceonorder0
msgid "Assignment from Production or Purchase Order."
msgstr "Asignación desde producción o pedido de compra."
#. module: procurement
#: model:ir.model,name:procurement.model_mrp_property
msgid "Property"
msgstr "Propiedad"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.act_make_procurement
#: view:make.procurement:0
msgid "Procurement Request"
msgstr "Solicitud de abastecimiento"
#. module: procurement
#: view:procurement.orderpoint.compute:0
msgid "Compute Stock"
msgstr "Calcular stock"
#. module: procurement
#: view:procurement.order:0
msgid "Late"
msgstr "Retrasada"
#. module: procurement
#: model:process.process,name:procurement.process_process_serviceproductprocess0
msgid "Service"
msgstr "Servicio"
#. module: procurement
#: model:ir.module.module,description:procurement.module_meta_information
msgid ""
"\n"
" This is the module for computing Procurements.\n"
" "
msgstr ""
"\n"
" Este es el módulo para calcular abastecimientos.\n"
" "
#. module: procurement
#: field:stock.warehouse.orderpoint,procurement_draft_ids:0
msgid "Related Procurement Orders"
msgstr "Órdenes de abastecimiento relacionadas"
#. module: procurement
#: view:procurement.orderpoint.compute:0
msgid ""
"Wizard checks all the stock minimum rules and generate procurement order."
msgstr ""
"El asistente comprobará todas las reglas de stock mínimo y generará orden de "
"abastecimiento."
#. module: procurement
#: field:stock.warehouse.orderpoint,product_min_qty:0
msgid "Min Quantity"
msgstr "Cantidad mín"
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Urgent"
msgstr "Urgente"
#. module: procurement
#: selection:mrp.property,composition:0
msgid "plus"
msgstr "más"
#. module: procurement
#: code:addons/procurement/procurement.py:319
#, python-format
msgid ""
"Please check the Quantity in Procurement Order(s), it should not be less "
"than 1!"
msgstr ""
"¡Compruebe la cantidad en la(s) orden(es) de abastecimiento, no debería ser "
"inferior a 1!"
#. module: procurement
#: help:stock.warehouse.orderpoint,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the "
"orderpoint without removing it."
msgstr ""
"Si el campo activo se desmarca, permite ocultar la regla de stock mínimo sin "
"eliminarla."
#. module: procurement
#: help:stock.warehouse.orderpoint,product_max_qty:0
msgid ""
"When the virtual stock goes belong the Max Quantity, OpenERP generates a "
"procurement to bring the virtual stock to the Max Quantity."
msgstr ""
"Cuando el stock virtual se sitúa por debajo de la cantidad mínima, OpenERP "
"genera un abastecimiento para situar el stock virtual a la cantidad máxima."
#. module: procurement
#: help:procurement.orderpoint.compute,automatic:0
msgid "If the stock of a product is under 0, it will act like an orderpoint"
msgstr "Si el stock de un producto es menor que 0, actuará como una orden"
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Lines"
msgstr "Líneas de abastecimiento"
#. module: procurement
#: view:procurement.order.compute.all:0
msgid ""
"This wizard allows you to run all procurement, production and/or purchase "
"orders that should be processed based on their configuration. By default, "
"the scheduler is launched automatically every night by OpenERP. You can use "
"this menu to force it to be launched now. Note that it runs in the "
"background, you may have to wait for a few minutes until it has finished "
"computing."
msgstr ""
#. module: procurement
#: view:procurement.order:0
#: field:procurement.order,note:0
msgid "Note"
msgstr ""
#. module: procurement
#: selection:procurement.order,state:0
msgid "Draft"
msgstr ""
#. module: procurement
#: view:procurement.order.compute:0
msgid "This wizard will schedule procurements."
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Status"
msgstr ""
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Normal"
msgstr ""
#. module: procurement
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product"
msgstr ""
#. module: procurement
#: field:stock.warehouse.orderpoint,active:0
msgid "Active"
msgstr ""
#. module: procurement
#: model:process.node,name:procurement.process_node_procureproducts0
msgid "Procure Products"
msgstr ""
#. module: procurement
#: field:procurement.order,date_planned:0
msgid "Scheduled date"
msgstr ""
#. module: procurement
#: selection:procurement.order,state:0
msgid "Exception"
msgstr ""
#. module: procurement
#: code:addons/procurement/schedulers.py:179
#, python-format
msgid "Automatic OP: %s"
msgstr ""
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_orderpoint_compute
msgid "Automatic Order Point"
msgstr ""
#. module: procurement
#: model:ir.model,name:procurement.model_stock_warehouse_orderpoint
msgid "Minimum Inventory Rule"
msgstr ""
#. module: procurement
#: model:ir.model,name:procurement.model_res_company
msgid "Companies"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Extra Information"
msgstr ""
#. module: procurement
#: help:procurement.order,name:0
msgid "Procurement name."
msgstr ""
#. module: procurement
#: constraint:stock.move:0
msgid "You must assign a production lot for this product"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Reason"
msgstr ""
#. module: procurement
#: sql_constraint:stock.warehouse.orderpoint:0
msgid "Qty Multiple must be greater than zero."
msgstr ""
#. module: procurement
#: selection:stock.warehouse.orderpoint,logic:0
msgid "Order to Max"
msgstr ""
#. module: procurement
#: field:procurement.order,date_close:0
msgid "Date Closed"
msgstr ""
#. module: procurement
#: code:addons/procurement/procurement.py:372
#, python-format
msgid "Procurement '%s' is in exception: not enough stock."
msgstr ""
#. module: procurement
#: code:addons/procurement/procurement.py:138
#, python-format
msgid "Cannot delete Procurement Order(s) which are in %s State!"
msgstr ""
#. module: procurement
#: code:addons/procurement/procurement.py:318
#, python-format
msgid "Data Insufficient !"
msgstr ""
#. module: procurement
#: model:ir.model,name:procurement.model_mrp_property_group
#: field:mrp.property,group_id:0
#: field:mrp.property.group,name:0
msgid "Property Group"
msgstr ""
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Misc"
msgstr ""
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Locations"
msgstr ""
#. module: procurement
#: selection:procurement.order,procure_method:0
msgid "from stock"
msgstr ""
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "General Information"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Run Procurement"
msgstr ""
#. module: procurement
#: selection:procurement.order,state:0
msgid "Done"
msgstr ""
#. module: procurement
#: help:stock.warehouse.orderpoint,qty_multiple:0
msgid "The procurement quantity will by rounded up to this multiple."
msgstr ""
#. module: procurement
#: view:make.procurement:0
#: view:procurement.order:0
#: selection:procurement.order,state:0
#: view:procurement.order.compute:0
#: view:procurement.order.compute.all:0
#: view:procurement.orderpoint.compute:0
msgid "Cancel"
msgstr ""
#. module: procurement
#: field:stock.warehouse.orderpoint,logic:0
msgid "Reordering Mode"
msgstr ""
#. module: procurement
#: field:procurement.order,origin:0
msgid "Source Document"
msgstr ""
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Not urgent"
msgstr ""
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute_all
msgid "Compute all schedulers"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Current"
msgstr ""
#. module: procurement
#: view:board.board:0
msgid "Procurements in Exception"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Details"
msgstr ""
#. module: procurement
#: model:ir.actions.act_window,name:procurement.procurement_action5
#: model:ir.actions.act_window,name:procurement.procurement_action_board
#: model:ir.actions.act_window,name:procurement.procurement_exceptions
#: model:ir.ui.menu,name:procurement.menu_stock_procurement_action
msgid "Procurement Exceptions"
msgstr ""
#. module: procurement
#: model:ir.actions.act_window,name:procurement.act_procurement_2_stock_warehouse_orderpoint
#: model:ir.actions.act_window,name:procurement.act_product_product_2_stock_warehouse_orderpoint
#: model:ir.actions.act_window,name:procurement.act_stock_warehouse_2_stock_warehouse_orderpoint
#: model:ir.actions.act_window,name:procurement.action_orderpoint_form
#: model:ir.ui.menu,name:procurement.menu_stock_order_points
#: view:stock.warehouse.orderpoint:0
msgid "Minimum Stock Rules"
msgstr ""
#. module: procurement
#: field:procurement.order,close_move:0
msgid "Close Move at end"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Scheduled Date"
msgstr ""
#. module: procurement
#: field:make.procurement,product_id:0
#: view:procurement.order:0
#: field:procurement.order,product_id:0
#: field:stock.warehouse.orderpoint,product_id:0
msgid "Product"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Temporary"
msgstr ""
#. module: procurement
#: field:mrp.property,description:0
#: field:mrp.property.group,description:0
msgid "Description"
msgstr ""
#. module: procurement
#: selection:mrp.property,composition:0
msgid "min"
msgstr ""
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Quantity Rules"
msgstr ""
#. module: procurement
#: selection:procurement.order,state:0
msgid "Running"
msgstr ""
#. module: procurement
#: field:stock.warehouse.orderpoint,product_uom:0
msgid "Product UOM"
msgstr ""
#. module: procurement
#: model:process.node,name:procurement.process_node_serviceonorder0
msgid "Make to Order"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "UOM"
msgstr ""
#. module: procurement
#: selection:procurement.order,state:0
msgid "Waiting"
msgstr ""
#. module: procurement
#: model:ir.actions.act_window,help:procurement.action_orderpoint_form
msgid ""
"You can define your minimum stock rules, so that OpenERP will automatically "
"create draft manufacturing orders or purchase quotations according to the "
"stock level. Once the virtual stock of a product (= stock on hand minus all "
"confirmed orders and reservations) is below the minimum quantity, OpenERP "
"will generate a procurement request to increase the stock up to the maximum "
"quantity."
msgstr ""
#. module: procurement
#: field:procurement.order,move_id:0
msgid "Reservation"
msgstr ""
#. module: procurement
#: model:process.node,note:procurement.process_node_procureproducts0
msgid "The way to procurement depends on the product type."
msgstr ""
#. module: procurement
#: view:make.procurement:0
msgid ""
"This wizard will plan the procurement for this product. This procurement may "
"generate task, production orders or purchase orders."
msgstr ""
#. module: procurement
#: view:res.company:0
msgid "MRP & Logistics Scheduler"
msgstr ""
#. module: procurement
#: field:mrp.property,name:0
#: field:stock.warehouse.orderpoint,name:0
msgid "Name"
msgstr ""
#. module: procurement
#: selection:mrp.property,composition:0
msgid "max"
msgstr ""
#. module: procurement
#: field:procurement.order,product_uos:0
msgid "Product UoS"
msgstr ""
#. module: procurement
#: code:addons/procurement/procurement.py:347
#, python-format
msgid "from stock: products assigned."
msgstr ""
#. module: procurement
#: model:ir.actions.act_window,name:procurement.action_compute_schedulers
#: model:ir.ui.menu,name:procurement.menu_stock_proc_schedulers
#: view:procurement.order.compute.all:0
msgid "Compute Schedulers"
msgstr ""
#. module: procurement
#: model:ir.actions.act_window,help:procurement.procurement_exceptions
msgid ""
"Procurement Orders represent the need for a certain quantity of products, at "
"a given time, in a given location. Sales Orders are one typical source of "
"Procurement Orders (but these are distinct documents). Depending on the "
"procurement parameters and the product configuration, the procurement engine "
"will attempt to satisfy the need by reserving products from stock, ordering "
"products from a supplier, or passing a manufacturing order, etc. A "
"Procurement Exception occurs when the system cannot find a way to fulfill a "
"procurement. Some exceptions will resolve themselves automatically, but "
"others require manual intervention (those are identified by a specific error "
"message)."
msgstr ""
#. module: procurement
#: field:procurement.order,product_uom:0
msgid "Product UoM"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Search Procurement"
msgstr ""
#. module: procurement
#: help:res.company,schedule_range:0
msgid ""
"This is the time frame analysed by the scheduler when computing "
"procurements. All procurements that are not between today and today+range "
"are skipped for future computation."
msgstr ""
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Very Urgent"
msgstr ""
#. module: procurement
#: field:procurement.orderpoint.compute,automatic:0
msgid "Automatic Orderpoint"
msgstr ""
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Details"
msgstr ""
#. module: procurement
#: code:addons/procurement/schedulers.py:180
#, python-format
msgid "SCHEDULER"
msgstr ""
+5
View File
@@ -26,6 +26,10 @@ from datetime import datetime, date
from tools.translate import _
from osv import fields, osv
class project_project(osv.osv):
_name = 'project.project'
project_project()
class project_task_type(osv.osv):
_name = 'project.task.type'
@@ -35,6 +39,7 @@ class project_task_type(osv.osv):
'name': fields.char('Stage Name', required=True, size=64, translate=True),
'description': fields.text('Description'),
'sequence': fields.integer('Sequence'),
'project_ids': fields.many2many('project.project', 'project_task_type_rel', 'type_id', 'project_id', 'Projects'),
}
_defaults = {
+26 -13
View File
@@ -43,9 +43,9 @@ project_issue_version()
class project_issue(crm.crm_case, osv.osv):
_name = "project.issue"
_description = "Project Issue"
_order = "priority, id desc"
_order = "priority, create_date desc"
_inherit = ['mailgate.thread']
def case_open(self, cr, uid, ids, *args):
"""
@param self: The object pointer
@@ -56,7 +56,7 @@ class project_issue(crm.crm_case, osv.osv):
"""
res = super(project_issue, self).case_open(cr, uid, ids, *args)
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')})
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S'), 'assigned_to' : uid})
for (id, name) in self.name_get(cr, uid, ids):
message = _("Issue '%s' has been opened.") % name
self.log(cr, uid, id, message)
@@ -175,7 +175,7 @@ class project_issue(crm.crm_case, osv.osv):
'section_id': fields.many2one('crm.case.section', 'Sales Team', \
select=True, help='Sales team to which Case belongs to.\
Define Responsible user and Email account for mail gateway.'),
'user_id': fields.many2one('res.users', 'Responsible'),
'user_id': fields.related('project_id', 'user_id', type='many2one', relation='res.users', store=True, select=1, string='Responsible'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
domain="[('partner_id','=',partner_id)]"),
@@ -200,19 +200,19 @@ class project_issue(crm.crm_case, osv.osv):
'partner_name': fields.char("Employee's Name", size=64),
'partner_mobile': fields.char('Mobile', size=32),
'partner_phone': fields.char('Phone', size=32),
'type_id': fields.many2one ('project.task.type', 'Resolution'),
'type_id': fields.many2one ('project.task.type', 'Resolution', domain="[('project_ids', '=', project_id)]"),
'project_id':fields.many2one('project.project', 'Project'),
'duration': fields.float('Duration'),
'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]"),
'day_open': fields.function(_compute_day, string='Days to Open', \
method=True, multi='day_open', type="float", store=True),
method=True, multi='compute_day', type="float", store=True),
'day_close': fields.function(_compute_day, string='Days to Close', \
method=True, multi='day_close', type="float", store=True),
'assigned_to': fields.related('task_id', 'user_id', string = 'Assigned to', type="many2one", relation="res.users", store=True, help='This is the current user to whom the related task have been assigned'),
method=True, multi='compute_day', type="float", store=True),
'assigned_to': fields.many2one('res.users', 'Assigned to', required=False, select=1),
'working_hours_open': fields.function(_compute_day, string='Working Hours to Open the Issue', \
method=True, multi='working_days_open', type="float", store=True),
method=True, multi='compute_day', type="float", store=True),
'working_hours_close': fields.function(_compute_day, string='Working Hours to Close the Issue', \
method=True, multi='working_days_close', type="float", store=True),
method=True, multi='compute_day', type="float", store=True),
'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
'date_action_last': fields.datetime('Last Action', readonly=1),
'date_action_next': fields.datetime('Next Action', readonly=1),
@@ -230,17 +230,30 @@ class project_issue(crm.crm_case, osv.osv):
return user.context_project_id.id
return False
def on_change_project(self, cr, uid, ids, project_id, context=None):
result = {}
if project_id:
project = self.pool.get('project.project').browse(cr, uid, project_id, context=context)
if project.user_id:
result['value'] = {'user_id' : project.user_id.id}
return result
_defaults = {
'active': 1,
'user_id': crm.crm_case._get_default_user,
#'user_id': crm.crm_case._get_default_user,
'partner_id': crm.crm_case._get_default_partner,
'partner_address_id': crm.crm_case._get_default_partner_address,
'email_from': crm.crm_case. _get_default_email,
'email_from': crm.crm_case._get_default_email,
'state': 'draft',
'section_id': crm.crm_case. _get_section,
'section_id': crm.crm_case._get_section,
'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],
'project_id':_get_project,
'categ_id' : lambda *a: False,
#'assigned_to' : lambda obj, cr, uid, context: uid,
}
def convert_issue_task(self, cr, uid, ids, context=None):
+18 -19
View File
@@ -52,13 +52,14 @@
<field name="arch" type="xml">
<form string="Issue Tracker Form">
<group colspan="4" col="6">
<field name="name"/>
<field name="project_id" required="True"/>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'project.issue')]"/>
<field name="user_id"/>
<field name="assigned_to" />
<field name="name"/>
<field name="project_id" required="True" on_change="on_change_project(project_id)"/>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'project.issue')]"/>
<field name="user_id" invisible="1" />
<field name="assigned_to"/>
<field name="version_id" colspan="2" widget="selection"/>
<group colspan="2" col="4">
<field name="type_id" readonly="1"/>
<field name="type_id" string="Resolution" />
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
</group>
@@ -73,7 +74,6 @@
</group>
<group col="3" colspan="2">
<separator colspan="3" string="Status"/>
<field name="version_id" colspan="3" widget="selection"/>
<field name="priority" colspan="3"/>
<field name="task_id" on_change="onchange_task_id(task_id)"/>
<button string="Convert To Task" name="convert_issue_task" icon="gtk-index" type="object"
@@ -184,12 +184,11 @@
<field name="partner_id" groups="base.group_extended"/>
<field name="project_id" />
<field name="priority" string="Priority"/>
<field name="type_id" widget="selection" readonly="1"/>
<field name="type_id" widget="selection" readonly="1" string="Resolution" />
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
<field name="version_id" widget="selection"/>
<field name="user_id"/>
<field name="assigned_to" attrs="{'readonly':[('task_id','=',False)]}"/>
<field name="assigned_to"/>
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
<field name="state"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
@@ -218,8 +217,8 @@
<separator orientation="vertical"/>
<field name="name"/>
<field name="partner_id" groups="base.group_extended"/>
<field name="user_id">
<filter domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-" separator="1"/>
<field name="assigned_to">
<filter domain="[('assigned_to','=',False)]" help="Unassigned Issues" icon="terp-personal-" separator="1"/>
</field>
<field name="project_id"/>
</group>
@@ -233,7 +232,7 @@
<newline/>
<group expand="0" string="Group By..." groups="base.group_extended">
<filter string="Responsible" icon="terp-personal"
domain="[]" context="{'group_by':'user_id'}" />
domain="[]" context="{'group_by':'assigned_to'}" />
<filter string="Partner" icon="terp-partner" domain="[]"
context="{'group_by':'partner_id'}" />
<separator orientation="vertical"/>
@@ -264,7 +263,7 @@
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Issues" date_start="date" color="user_id" date_delay="duration">
<calendar string="Issues" date_start="date" color="assigned_to" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
</calendar>
@@ -285,11 +284,11 @@
<field name="name" string="Feature description"/>
<field name="partner_id" groups="base.group_extended"/>
<field name="priority" string="Priority"/>
<field name="type_id" widget="selection" readonly="1"/>
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
<field name="type_id" widget="selection" readonly="1"/>
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
<field name="version_id"/>
<field name="user_id"/>
<field name="assigned_to"/>
<field name="state"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
@@ -312,7 +311,7 @@
<separator orientation="vertical"/>
<group>
<field name="name" select='1' string="Feature description"/>
<field name="user_id" select="1"/>
<field name="assigned_to" select="1"/>
<field name="state" select="1">
<filter icon="terp-check" domain="[('state','in',('open','draft'))]" help="Current Features" name="current_feature"/>
<filter icon="terp-camera_test" domain="[('state','=','open')]" help="Open Features"/>
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -16,7 +16,7 @@
# 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/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -101,10 +101,11 @@ class project_issue_report(osv.osv):
c.task_id,
date_trunc('day',c.create_date) as create_date,
extract('epoch' from (c.date_open-c.create_date))/(3600*24) as delay_open,
extract('epoch' from (c.date_closed-c.create_date))/(3600*24) as delay_close,
extract('epoch' from (c.date_closed-c.date_open))/(3600*24) as delay_close,
(SELECT count(id) FROM mailgate_message WHERE model='project.issue' AND res_id=c.id) AS email
FROM
project_issue c
WHERE c.categ_id IN (select id from crm_case_categ where object_id in (select id from ir_model where model = 'project.issue'))
)""")
project_issue_report()
@@ -28,8 +28,8 @@
<field name="nbr" string="#Project Issues" sum='#Number of Project Issues'/>
<field name="delay_open" avg='Avg Opening Delay'/>
<field name="delay_close" avg='Avg Closing Delay'/>
<field name="working_hours_open" sum='Open Working Hours'/>
<field name="working_hours_close" sum='Close Working hours'/>
<field name="working_hours_open" avg='Open Working Hours'/>
<field name="working_hours_close" avg='Close Working hours'/>
<field name="email" sum='# Emails'/>
</tree>
</field>
@@ -27,8 +27,36 @@ class project_issue(osv.osv):
_description = 'project issue'
_columns = {
'timesheet_ids': fields.one2many('hr.analytic.timesheet', 'issue_id', 'Timesheets'),
'analytic_account_id': fields.related('project_id', 'analytic_account_id', type='many2one', relation='account.analytic.account',string='Analytic Account')
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
}
def on_change_project(self, cr, uid, ids, project_id, context=None):
if not project_id:
return {}
result = super(project_issue, self).on_change_project(cr, uid, ids, project_id, context=context)
project = self.pool.get('project.project').browse(cr, uid, project_id, context=context)
if 'value' not in result:
result['value'] = {}
account = project.analytic_account_id
if account:
result['value']['analytic_account_id'] = account.id
return result
def on_change_account_id(self, cr, uid, ids, account_id, context=None):
if not account_id:
return {}
account = self.pool.get('account.analytic.account').browse(cr, uid, account_id, context=context)
result = {}
if account and account.state == 'pending':
result = {'warning' : {'title' : _('Analytic Account'), 'message' : _('The Analytic Account is in pending !')}}
return result
project_issue()
@@ -7,14 +7,22 @@
<field name="inherit_id" ref="project_issue.project_issue_form_view" />
<field name="type">form</field>
<field name="arch" type="xml">
<field name="project_id" position="attributes">
<attribute name="on_change">on_change_project(project_id)</attribute>
</field>
<xpath expr="/form/notebook" position="before">
<field name="analytic_account_id"
domain="[('parent_id','!=',False),('partner_id', '=', partner_id),('type', '!=', 'view')]"
on_change='on_change_account_id(analytic_account_id)'
groups="base.group_extended" />
</xpath>
<notebook colspan="4">
<page string="Worklogs">
<field name="analytic_account_id" invisible="1" domain="[('parent_id','!=',False)]" groups="base.group_extended"/>
<field name="timesheet_ids" colspan="4" nolabel="1" context="{'default_user_id' : user_id, 'default_account_id' : analytic_account_id}">
<field name="timesheet_ids" colspan="4" nolabel="1" context="{'default_user_id' : assigned_to, 'default_account_id' : analytic_account_id}">
<tree editable="top" string="Timesheet">
<field name="name"/>
<field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" widget="float_time"/>
<field name="account_id" invisible="0" domain="[('partner_id', '=', parent.partner_id)]" on_change="on_change_account_id(account_id)"/>
<field name="name"/>
<field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" widget="float_time"/>
<field name="account_id" invisible="0" domain="[('partner_id', '=', parent.partner_id)]" on_change="on_change_account_id(account_id)"/>
<field name="date"/>
<field name="user_id"/>
<field invisible="1" name="journal_id"/>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+39
View File
@@ -0,0 +1,39 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
"PO-Revision-Date: 2011-04-08 07:20+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: 2011-04-09 05:00+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: web_livechat
#: sql_constraint:publisher_warranty.contract:0
msgid ""
"Your publisher warranty contract is already subscribed in the system !"
msgstr ""
#. module: web_livechat
#: model:ir.module.module,shortdesc:web_livechat.module_meta_information
msgid "Live Chat Support"
msgstr ""
#. module: web_livechat
#: model:ir.model,name:web_livechat.model_publisher_warranty_contract
msgid "publisher_warranty.contract"
msgstr ""
#. module: web_livechat
#: model:ir.module.module,description:web_livechat.module_meta_information
msgid "Enable live chat support for whom have a maintenance contract"
msgstr ""
+29
View File
@@ -0,0 +1,29 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-12 16:15+0000\n"
"PO-Revision-Date: 2011-04-08 07:13+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: 2011-04-09 05:00+0000\n"
"X-Generator: Launchpad (build 12735)\n"
#. module: web_uservoice
#: model:ir.module.module,shortdesc:web_uservoice.module_meta_information
msgid "Add uservoice button in header"
msgstr ""
#. module: web_uservoice
#: code:addons/web_uservoice/web/editors.py:72
#, python-format
msgid "feedback"
msgstr ""