如何通过Odoo 18创建与配置服务器操作
如何通过Odoo 18创建与配置服务器操作
服务器操作是Odoo实现业务流程自动化的核心工具,允许你在服务器端执行自动化任务,通常由按钮点击或自动化工作流等事件触发。这些操作使用 Python 编写,能够执行复杂的业务逻辑,从而增强 Odoo 系统的功能。
本指南将详解服务器操作的创建流程,并通过实战案例演示字段同步功能的实现。
服务器操作功能概览
要查看 Odoo 中所有可用的服务器操作,首先要启用开发者(调试)模式。启用后,进入 “设置” 菜单,导航到 “技术” 部分,然后选择 “服务器操作”。
在这里,你可以查看环境中配置的所有服务器操作列表。
Odoo 18 中服务器操作的功能
服务器操作功能多样,可以自动化广泛的操作。其主要功能包括:
- 执行 Python 代码:使用 Python 脚本自动化自定义逻辑。
- 创建新记录:在任何 Odoo 模型中自动生成新记录。
- 更新现有记录:根据预定义的条件修改记录,以确保数据的准确性。
- 发送电子邮件和短信消息:在特定事件发生时向相关人员触发通知。
- 管理关注者:自动为重要记录分配关注者。
- 安排后续活动:自动创建跟进任务,以简化工作流程。
- 链接多个操作:通过链接多个服务器操作来构建复杂的工作流。
实战案例:联系人电话同步。
实现目标:将res.partner模型中电话字段值自动同步至手机字段。
步骤1:XML定义服务器操作
要创建此服务器操作,导航到 Odoo 18 自定义模块的 “data” 目录。打开 ir_action_data.xml 文件,并使用以下 XML 代码定义操作:
<record id="copy_phone_to_mobile" model="ir.actions.server">
<field name="name">电话同步手机号</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="binding_model_id" ref="base.model_res_partner"/>
<field name="binding_view_types">list</field>
<field name="state">code</field>
<field name="code">
action = records.action_copy_phone_to_mobile()
</field>
</record>
参数说明:
name: 服务器操作的描述性名称,会显示在服务器操作菜单中。
model_id:操作绑定的数据模型(在本例中为res.partner)。
binding_model_id:将操作绑定到该模型,因此只有在处理 res.partner 时该操作才可用。
binding_view_types:操作可见视图(列表/表单),“list” 表示它将在列表视图中可用。
state:指定操作的类型,“code” 表示它将执行 Python 脚本。
code:包含触发操作时将执行的 Python 脚本。
步骤2:Python方法实现
接下来,定义服务器操作将调用的 Python 函数。在res.partner模型扩展文件中添加:
def action_copy_phone_to_mobile(self):
for record in self:
if record.phone and not record.mobile:
record.write({'mobile': record.phone})
代码解释:
action_copy_phone_to_mobile:此函数检查 res.partner 记录是否有电话号码但没有手机号码。如果是,则将电话号码复制到手机号码字段。
完成上述操作后,你会发现新创建的服务器操作已经可用。
步骤3:操作执行与验证
服务器操作后,它将在联系人列表视图中可用。要测试它,请按照以下步骤操作:
1、进入 “客户” 模块。
2、选择几个 “电话” 字段有数据但 “手机” 字段没有数据的客户。
3、在 “操作” 菜单下,你应该会看到新创建的名为 “电话同步手机号” 的服务器操作。
4、点击该操作,Odoo 将把电话号码复制到相应的手机号码字段中。
高级配置技巧
1、触发条件扩展:
·添加domain过滤:
<field name="domain_force">[(′phone′,′!=′,False)]</field>[(′phone′,′!=′,False)]
</field>
·集成工作流引擎:作为审批节点动作。
2、多操作链式执行:
<field name="code">
actions = [
records.action_step1(),
records.action_step2(),
env.ref('module.action_external').run()
]
</field>
3、动态参数传递:
- 通过context获取环境变量。
- 使用eval处理动态表达式。
总结
通过实现这个服务器操作,你可以在 Odoo 中自动化数据处理任务,例如同步字段。这种小型但强大的自动化有助于确保数据的一致性,并节省日常任务的时间。
服务器操作为 Odoo 18 中的流程自动化和工作流优化提供了无限可能。通过探索和自定义服务器操作,你可以显著提高 ERP 系统的效率并减少手动干预。
通过灵活运用服务器操作,企业可实现:
- 业务流程标准化;
- 人工干预减少80%+;
- 数据一致性保障;
- 跨系统集成扩展;
- 运营效率显著提升。