<record id="rule_605" model="ir.actions.server">
<field name="name">Example of action server item</field>
<field name="condition">True</field>
<field name="state">code</field>
<field name="sequence" eval="456"/>
<field name="code">True</field>
<field name="model_id" eval="Selling"/>
</record>
我对自定义模块中的上述代码片段感到困惑。?
正确的方法是什么?我知道有些领域可能是错误的!
如何设置model_id?
服务器操作是Open ERP最强大的功能之一(但我应该说文档很少(。我在这里尝试尽我所能解释开放式ERP中的服务器操作。
服务器操作用于在达到工作流的特定阶段时触发要在服务器端执行的一个或多个操作。
例如。
- 批准销售订单后,将其添加到客户历史记录中。
- 确认销售发票后,邮寄给客户。
- 关闭CRM案例后,在客户端弹出一个窗口,用于总结交互/反馈等。
要创建服务器操作,请转到:管理>>自定义>>操作>>服务器操作。
创建步骤:
步骤 1:服务器操作的定义
操作名称:与名称一样明显
对象:将从中触发服务器操作的对象/模型。例如。销售订单
操作类型:稍后将对此进行详细介绍,因为将处理每个案例。序列:当操作类型为多个操作时使用,其中一系列操作将按顺序顺序发生。
条件:单行 python 条件。 例如,如果您想在凭证超过 5000 时发送短信警报。
object.amount>5000
.如果没有条件,则必须为 True 执行。
操作类型特定选项卡:在这里,我将详细解释每种操作类型
假人:假人阶段什么都不做。(天知道为什么它在那里。
客户端操作:您可以选择要打开的窗体、要运行的向导或要启动的报表。从列表中选择报告。
迭代:基于 python 循环表达式,您可以迭代服务器操作,例如:当股票向内移动发生并确认它时,您希望每个行项目都被历史化......您可以循环表达式
object.move_lines
并创建另一个服务器操作,该操作被称为执行历史化工作。
Python 代码:可以执行多行 Python 代码,返回值是变量
action = {}
的值。仅当您要弹出特定于上下文的特定窗口(窗体(时,这才有意义。恕我直言,您不需要返回值。注意:代码是使用 python 的 exec 函数执行的,该函数在字典命名空间中运行,变量为:object
、time
、cr
、uid
、ids
触发器:可以使用此功能触发工作流的任何转换。您需要设置的选项是。工作流模型:要在其上触发工作流的目标对象。"触发开启"字段应具有目标模型记录的 ID。例如,如果您想触发发票更改,请具有发票的ID。"触发器名称"是您必须用来启动转换的信号。下拉列表列出了所有可能的触发器。注意:触发器名称列表还显示来自其他模型的所有可能转换,因此请确保选择正确的触发器。型号在括号中给出。
电子邮件:设置电子邮件地址、主题和消息。您需要为此配置Open ERP构建的smtpserver。强大的电子邮件,Open ERP的通用电子邮件架构可用于电子邮件,因为它提供了更多的功能和自动化的电子邮件(不需要弄乱服务器操作(。可在以下网址获得: http://launchpad.net/poweremail 和下载 http://launchpad.net/poweremail/+download
短信:选择手机号码,例如:
[[ object.shipping_address.mobile ]]
和主题。创建对象:这用于在触发服务器操作时在任何模型中创建新记录。所讨论的历史特征可以使用它来实现。字段映射用于为记录中的字段提供值
让我们看看这个例子
<record id="ir_actions_server_timsheet_sheet" model="ir.actions.server">
<field name="sequence" eval="5"/>
<field name="state">code</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_hr_timesheet_current_open"/>
<field name="code">action = pool.get('hr.timesheet.current.open').open_timesheet(cr, uid, None, context)</field>
<field name="condition">True</field>
<field name="name">My Timesheet</field>
</record>
这里model_hr_timesheet_current_open
是此操作为哪个对象着火的对象引用,对于您的情况<field name="model_id" eval="Selling"/>
model_id不是销售,而是对象参考,这是该对象,该对象为该对象着火操作。