odoo8中在“更多”下拉菜单下实现简单的批量操作

Odoo批量取消补货单
本文介绍如何在Odoo中实现批量取消补货单的功能,通过修改视图和动作配置,使采购人员能够高效地处理大量补货单。

助顶:http://blog.youkuaiyun.com/vnsoft/article/details/50315941

在Odoo8中的仓库模块,根据每日最小安全库存数量,系统会自动生成一些补货单,而且是一个产品会生成一笔,如果产品比较多,这里生成的补货单也会很多。

如果这里的补货单没有即时处理,那相同产品后续不会再生成新的补货单。

所以采购人员要求不处理的补货单可以手动来取消,这样方便第二天能产生出新的补货单。

现在取消补货单的功能是放在form视图中,需要逐张单据点开,再去点取消按钮,不方便操作。采购人员希望是可以全选一次取消所选单据,根据之前的经验,我们可以在tree视图的“更多”按钮下加一个菜单项目,但这个取消比较单纯,我不想使用向导来弹出一个新窗口,这完全是一个多余的操作。经查询odoo的源码,在其它模块也有类似的需求,并且odoo也提供了一些动作类型来处理此类需求,主要xml配置如下:

  1. <record id="action_procurement_order_cancel" model="ir.actions.server">  
  2.     <field name="name">取消补货单</field>  
  3.     <field name="model_id" ref="procurement.model_procurement_order"/>  
  4.     <field name="state">code</field>  
  5.     <field name="code">  
  6.         if context.get('active_model') == 'procurement.order' and context.get('active_ids'):  
  7.             self.cancel(cr, uid, context['active_ids'], context=context)  
  8.     </field>  
  9. </record>  
  10.   
  11. <record id="ir_procurement_order_cancel" model="ir.values">  
  12.     <field eval="'client_action_multi'" name="key2"/>  
  13.     <field eval="'procurement.order'" name="model"/>  
  14.     <field name="name">取消补货单</field>  
  15.     <field eval="'ir.actions.server,%d'%action_procurement_order_cancel" name="value"/>  
  16. </record>  

这里使用到了ir.actions.server服务器动作,就是说点击菜单项目时,不弹出向导窗口,只是执行一个服务器动作,并且这里配置需要在服务器上执行的代码,就是调用self.cancel方法,所选择的数据id列表会通过上下文参数context中的active_ids带入。


类似的实现在需求异常中的“计算需求”也可以看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值