引言
近期服务一家浙江的外贸公司,这家客户对Odoo系统预设的订单审核确认过程非常满意,不过有一个方面需求是Odoo默认不支持的,即:批量订单审核、批量的审核后的订单邮件推送系统未有这样的处理机制感到遗憾。
为此客户对我们开源智造服务工程师提出批量订单审核与批量订单邮件推送的二次开发需求。服务工程师和我这边报告提出需求时,我给予服务工程师一种新的高级实施思路解决客户这样的需求问题,无需二开就能满足客户需求,为此整理该文,分享给到有同样困惑的实际使用Odoo甲方的用户,用于参考解惑!
问题复现
从以上该图可以看到Odoo销售订单的明细页是有确认的按钮的,这里确实可以对订单进行确认操作。带来的主要矛盾是,必须每个订单逐个手动打开并确认,耗时且复杂。而我们服务的浙江客户是需要通过销售订单列表页,在动作中批量点击销售订单确认。
那么我们顺着以上的不满足点,先完成批量订单确认的操作实现,之后根据同理实现邮件批量发送。
技术解决方案
启动开发者模式,在【技术】-【服务器动作】-【创建】
从Odoo11之后Odoo将大量的动作操作的模块动作,由原先封装到后台的Python代码,转由XML视图文件定义Server_Actions 标签的语法,所以这里即使通过二次开发也请尊重Odoo标准与用户交付体验按照这个规范来设计,这样也是为了方便用户有效交付实施并方便用户后期自主调试。
特别注意及说明
动作名称:动作按钮的对外显示名称
模型:具体应用在哪个模块的列表页当中
Python代码定义:
for sale in records:
sale.action_confirm()
这里代码我们做点着重的使用,records 是Odoo数据集合的概念,在Python records是可迭代的,为了完成数据集的每项数据都能用于动作触发,我们必须使用for 循环的方式逐个将数据内容变量赋值给到sale变量。其实sale变量就是我们具体的每张便利出来的订单,Odoo支持各数据集直接调用模型已定义的方法。action_confirm() 这个是Odoo定义的无参方法,就默认按照无参定义的方法执行,Odoo绝大多数的方法都是无参执行的,这个我们后面会在未来的开源智造Odoo开发技巧Vlog里重点讲述。
最后记得点击 创建上下文操作 按钮。这时我们可以看到订单列表页当中可以有批量订单处理的按钮功能。我们点击测试看下效果。
因为大家大致明白了之前的原理,这边我将直接将批量订单推送邮件的按钮配置结果图直接放出。其大致实现思路与上面一致。
编辑:开源智造(OSCG) - 源自欧洲,业界领先的免费开源ERP Odoo亚太金牌服务机构