Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

引言

今天正巧,有个广东的橡胶制造业客户,他们大约在2018年从我们开源智造签约了实施服务,已经成功上线了CRM、销售、采购、库存、制造、财务等功能模块,以往他们主要以管理普通下游客户为主(产品分销商或二级代理商)。由于今年疫情所影响,分销流通渠道已经非常艰难,公司决定战略转型,以直供大客户为主要销售模式。

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

正因为这样的思路,从以往客户档案都是企业档案为主,转为大客户负责人的个人档案为主,曾经实施当中没思考到的地方就发生了。即问题是:如何让有关负责人信息时选择对应的大客户单位,能将大客户的企业信息公共内容映射到个人档案中,减少信息的反复录入同时降低录入数据的错误率。并且要求只是引入,系统要支持修改。

我们公司的工程师起初想法,通过需求意见收集,将客户的所有需要的引入字段信息一次性收集好,通过Odoo二次开发的On Change技术特性用于解决。这样固然能解决问题,但不利于后期的维护和修改,我们知道客户档案的字段描述会随着业务的变化而变化。实际上线后变更可能性极大,甲乙双方成本都会很高。最后结论是:我个人否掉了原有工程师的想法,采用了Odoo实施平台的Automated Actions工具来实现客户这样的需求。

技术实践

首先我们打开一下Odoo个人类型的客户档案与企业类型的客户档案的字段描述情况:

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

Odoo个人类型的客户档案

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

Odoo企业类型的客户档案

总结:这里的差距就在个人类型的客户档案多了Company字段,这个字段其实是M2O,这样说可能大家不容易理解,用标题的话讲就是作为关联引入的另外张表的信息。如下图所示:

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

Company字段属性特性

客户的需求是:当我填写大客户的相关负责人档案时,关联企业信息后,能把企业的固定电话和网址数据自动引入到档案的对应字段当中。

先看下,在没通过Automated Actions工具实施前的效果,如下图所示:

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

关联的大客户Azure的企业档案信息

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

大客户Azure业务负责人Ring的个人档案信息

从上述图,我们可以看到并没有把Azure的固定电话和网址这两个需求的公共字段数据引入到Ring的个人档案。

下面我们看如何通过Automated Actions工具,终极解决这个棘手的问题。

技术解决配置思路如下:

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

Automated Actions的配置界面

Model:选择应用的功能模块的模型,这里是客户档案所以我们选择了res.panter

Trigger Condition: 触发条件这里我们选择了基于表单字段修改时触发

On Change Fields Trigger:这里我们选择以parent_id字段的变更为联动触发的开关

最后修改要触发的具体字段,触发的机制为Odoo Python框架机制的执行代码,具体Python的执行代码,全部设置好后,点击保存。

技术验证

基于上述的解决思路,我们看下最终结果是否实现客户的实际需求,如下图所示:

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享

改造后的个人类型的客户档案

最终完美实现了客户的需求,将公共字段的固定电话和企业网址都可以带入到个人类型的字段当中。至此我们已经从这个案例里掌握到如何去通过一个外部的数据表的数据对本表的数据字段信息的自动插入的技术思路。

Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享
Odoo中文网
31 五月, 2020
存档
MacOS软件安装报错解决方案
“提示文件已损坏,移动至废纸篓”的技术解决方案