该模块是之前帮一群友在odoo10环境下开发的,因为现在需要升级到odoo12,但odoo12版本的js模块变化比较大,基本上相当于重写了,为了升级此功能,花时间大概看了一个odoo12的js源码,经过三日的连续苦战,基本把框架的逻辑理顺,对该模块进行了升级,主要增强的功能有三个。
- 一是如果某个字段有onchange设置,可以在xml定义中设置定时执行间隔,这样不需要用户变动该字段就可以自动执行后台py代码,这个场景个人认为比较适用于POS电子称的重量获取,操作人员不需要修改数量来触发后台py代码,由该模块自动获取onchange对应的py传回数据。
- 二是增加回车事件,在form界面任意字段按回车,自动触发保存事件。
- 三是在form定义中增加savenew参数,设置该参数的form保存后自动触发新增事件。
第二、三点的功能结合起来,可以实现特定业务的连续新增,自动保存。
该模块需要的xml修改参数实例如下,interval参数定义自动执行间隔(毫秒):
<xpath expr="//field[@name='vat']" position="after">
<field name="vn_time" interval="1500"/>
</xpath>
自动新增的xml修改实例如下,在form元素上增加savenew属性值为"1":
<record id="product_uom_form_view" model="ir.ui.view">
<field name="name">uom.uom.form</field>
<field name="model">uom.uom</field>
<field name="arch" type="xml">
<form string="Units of Measure" savenew="1">
<group>
......
</group>
</form>
</field>
</record>
模块的下载位置为:我上传的资源
最后还要吐槽一下Odoo12的JS框架,变化比较大,按照MVC的方式将前端分成了不同的js模块,找东西真是难找,而且从odoo10开始都变成了异步调用,想知道各函数的调用关系,或者想在哪里下断点调试,都是难上加难。等有机会要好好理一理这个磨人的小妖精。。。。