生产源库位和目的库位动态过滤
动态 过滤 生产 目的
2023-09-27 14:25:29 时间
实施过程中,碰到一个问题,希望生产计划人员不能看到除生产以外的其他内部库位,但缺又不能影响生产人员在仓库的正常接收货。
首先想到的是用rule来控制对库位的访问,rule的对象不能是mrp.production只能是stock.location,否则对location_src_id 和location_dest_id的限制不起作用。
只能用stock.location的rule来限制,但这样的问题是,虽然生产看不到其他内部库位了,却不能从其他库位,接收,发送物料了。
于是,二开了跟权限组挂钩的库位控制模块,实现了在库位设置中可以指定管理权限组的设置,然后再在生产单的库位处,利用动态domain来实现对库位的动态过滤。
然后在生产重载fields_view_get方法,实现对库位的动态过滤:
1 if not context:context={} 2 res = super(qunar_mrp,self).fields_view_get(cr,uid,view_id,view_type,context=context,toolbar=toolbar,submenu=submenu) 3 doc = etree.XML(res['arch']) 4 nodes = doc.xpath("//field[@name='location_src_id']") 5 ids = self._get_default_location_ids(cr,uid,context) 6 for node in nodes: 7 node.set('domain',"[('usage','=','internal'),('id','in',"+str(ids)+")]") 8 9 dnodes = doc.xpath("//field[@name='location_dest_id']") 10 for node in dnodes: 11 node.set('domain',"[('usage','=','internal'),('id','in',"+str(ids)+")]") 12 13 res['arch'] = etree.tostring(doc) 14 return res
实现的效果如下:
相关文章
- [C#] 将NLog输出到RichTextBox,并在运行时动态修改日志级别过滤
- 【Wannafly挑战赛29F】最后之作(Trie树,动态规划,斜率优化)
- 【BZOJ4006】管道连接(动态规划,斯坦纳树)
- 【BZOJ1499】【NOI2005】瑰丽华尔兹(动态规划)
- 【Luogu1273】有线电视网(动态规划)
- 聊聊如何根据环境动态指定feign调用服务名
- AngularJS动态设置CSS
- Filter - 过滤敏感词汇(动态代理)
- C++中编译静态库与动态库
- 有趣的HTML实例(八) 一个很有趣的动态背景(css+js)
- 小知识随手记(十):多重重复解构对象、es6函数带默认参数时将生成声明作用域、一些注意点、动态设置getter/setter、mysql将字符串字段转为数字排序或比大小、pointer-events:none;属性
- LeetCode动态规划基础题-股票买卖
- C#-通过反射对可空类型动态赋值的问题
- c#实现动态加载Dll
- Java动态绑定和静态绑定(多态)