odoo16实用功能之创建/自定义服务器动作

本文介绍了Odoo中的服务器动作(ServerAction),如何编写执行Python函数,以及其在自动化业务流程、数据处理、邮件通知等场景中的应用,包括批量关机操作的实现和参数说明。

目录

1、什么是服务器动作(ir.actions.server)

2、编写需要执行的python函数

3、编写动作

效果图:

参数说明:


服务器动作的应用场景

在Odoo中,服务器动作(Server Action)是一种执行预定义操作的机制,通常在后端执行。它们可以在各种场景下用于自动化和扩展功能。以下是一些服务器动作的应用场景:

  1. 自动化业务流程

    • 创建销售订单时,自动触发服务器动作生成相关的发货单或发票。
    • 客户付款后,自动将订单状态更新为“已付款”。
  2. 批量处理数据

    • 执行定期的批量数据处理任务,如清理过期数据、计算统计信息等。
    • 执行数据导入后的一系列操作,确保数据的完整性和一致性。
  3. 邮件通知

    • 在特定条件下,如订单交付日期逼近或库存水平低于阈值,发送自动化的邮件通知。
    • 定期发送报表或摘要电子邮件。
  4. 集成外部系统

    • 与外部系统进行集成,例如通过调用外部API执行某些操作。
    • 实时同步数据,确保Odoo中的数据与外部系统保持一致。
  5. 自定义业务逻辑

    • 执行定制的业务逻辑,例如根据客户需求进行特定的计算。
    • 在特定条件下执行定制的数据处理步骤。
  6. 自动化报表生成

    • 根据特定的条件生成和分发报表,确保相关人员能够及时获得所需的信息。
  7. 自动化集成测试

    • 在系统更新后,执行自动化测试以确保新功能没有破坏现有功能。
    • 定期执行数据一致性和完整性检查。
  8. 触发客户端动作

    • 通过触发客户端动作,在前端进行用户界面的交互,例如显示通知或执行一些前端脚本。


1、什么是服务器动作(ir.actions.server)

        在Odoo中,服务器动作(Server Action)是一种用于执行后端(服务器端)逻辑的配置项。通过服务器动作,你可以定义一些操作,这些操作在特定的触发条件下会执行后端的Python代码或者其他动作。服务器动作通常与菜单、按钮、工作流等组件关联,用于在特定的事件发生时触发相应的逻辑。

        服务器动作允许你配置在后端执行的逻辑,这些逻辑可以在特定的条件下触发,为Odoo定制化和扩展提供了很大的灵活性。

2、编写需要执行的python函数

    # 批量关机
    def action_auto_stop(self):
        for i in self:
            i.qeum_stop() # 循环记录执行方法

3、编写动作

下面是一个简单的服务器动作示例,它在特定模型选中记录时执行关机函数

    <record id="model_cec_cc_action_stop" model="ir.actions.server">
        <field name="name">批量关机</field>
        <field name="model_id" ref="cec_cc.model_cec_cc"/>
        <field name="binding_model_id" ref="cec_cc.model_cec_cc"/>
        <field name="binding_view_types">form,list</field>
        <field name="state">code</field>
        <field name="code">action = records.action_auto_stop()</field>
    </record>

效果图:

参数说明:

<record>标签:定义一个记录(记录类型为ir.actions.server

id:该记录的唯一标识符

model:指定该记录的模型为ir.actions.server,即服务器动作模型。

name:服务器动作的名称,显示在Odoo用户界面上,此处为“批量关机”。

model_id:指定服务器动作关联的模型,即model_cec_cc

model_id-ref:引用模型的外部标识符,确保关联到正确的模型

binding_model_id:指定与此动作关联的模型。

binding_model_id-ref:引用关联的模型的外部标识符

binding_view_types:指定动作绑定到的视图类型,此处为“form”和“list”。

state:指定触发动作的条件,此处为code,表示在服务器端执行的代码中触发动作。

code:包含要执行的 Python 代码

action = records.action_auto_stop() :在记录(模型为model_cec_cc)上调用 action_auto_stop 方法

Odoo创建自定义服务器动作并控制其显示隐藏,你需要按照以下步骤操作: 1. **创建服务器动作**: - 登录到Odoo后台,打开你的模块(Module)管理。 - 打开“数据”菜单,选择“模型”(Models)。 - 找到你想要添加动作的模型,点击“模型编辑”(Model Editor)。 - 点击“添加字段”(Add Field),输入新的字段名(通常是字符串类型,如 `custom_button`),并设置它为`boolean`类型,用于标识按钮是否应显示。 2. **定义服务器方法**: - 添加一个新的Python方法到模型的`_compute`属性中,这个方法会根据特定条件返回布尔值,决定该按钮是否可见。 ```python class YourModel(models.Model): _name = 'your.module.name' custom_button = fields.Boolean(string='Custom Button', compute='_compute_custom_button') @api.depends('field1', 'field2') # 依赖于其他字段的值 def _compute_custom_button(self): return self.field1 == some_value and self.field2 != other_value ``` 3. **关联服务器动作**: - 在模型的视图文件(views.xml)里,找到`tree`, `form` 或者 `kanban`等视图模式,找到对应的按钮位置,使用`<button>`标签,并指定`type="ir.actions.server"`和`name="your_action_name"`。同时,为其添加`invisible`属性,引用你在Python中定义的条件字段: ```xml <button type="ir.actions.server" name="your_action_name" invisible="not custom_button"/> ``` 4. **测试和部署**: - 完成上述步骤后,保存并测试你的模块。在实践中,检查数据和状态变化是否正确影响按钮的显示隐藏。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dear.爬虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值