生产源库位和目的库位动态过滤

  实施过程中,碰到一个问题,希望生产计划人员不能看到除生产以外的其他内部库位,但缺又不能影响生产人员在仓库的正常接收货。

  首先想到的是用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

  实现的效果如下:

  

时间: 2024-10-04 23:25:19

生产源库位和目的库位动态过滤的相关文章

Xcode5.1 64位添加第三方库真机测试时出现 Apple Mach -O Linker Error

今天添加微信分享的时候添加微信的静态文件和我以前添加的Core-Plot第三方库发生了冲突, 出现一大堆的 "Apple  Mach  -O Linker Error" , 错误分析: 这次出现错误的原因是 Architectures不统一造成的,微信的APi要求用32位编译,而第三方库是包含了64位. 解决方法: 解决的原理很简单 ,就是把Architectures 统一,把项目的Architectures和所引用的第三反库的(如果还有pod进来的pod内的targets的内容也要修

Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法

原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win7的64位系统 调试原来的工程,由于在其中引用了"SQLite"的32位的dll,导致在64为位下程序无法运行(但是编译可以通过) 后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题 打开引用了SQLite的工程(例如叫做info)的工程文件(info.csproj),找到对SQLite引用的语句,类似如下的代码 代码如下: <Reference Include="Syst

使用VS2015 编译 64位的boost库

别人写的编译参考: 目标:使用VS2015 编译 64位的boost库. 一直以来都是在Win32环境下Build和使用boost,但现在基本上每天都在64位Win7下工作,所以很有必要把这几天的经验总结下来. 1. 下载并解压boost 1.61.0 压缩包 2. 解压并运行批处理文件bootstrap.bat,目录下会生成两个可执行文件 3. 和32位环境不同,x64环境下编译得先从开始菜单启动Visual Studio的VS2015 x64 Native Tools Command Pro

Caffe源码中各种依赖库的作用及简单使用

1.      Boost库:它是一个可移植.跨平台,提供源代码的C++库,作为标准库的后备. 在Caffe中用到的Boost头文件包括: (1).shared_ptr.hpp:智能指针,使用它可以不需要考虑内存释放的问题: (2).date_time/posix_time/posix_time.hpp:时间操作函数: (3).python.hpp:C++/Python互操作: (4).make_shared.hpp:make_shared工厂函数代替new操作符: (5).python/raw

源码方式安装 lrzsz库

源码方式安装 lrzsz库:https://www.cnblogs.com/cocoajin/p/11731787.html 我们都知道安装了lrzsz工具的linux系统环境,在shell里可以非常方便的上传和下载linux里面的文件;xsehll中直接使用sz/rz命令即可在传输文件. 通常的安装方式: yum install lrzsz sudo apt-get install lrzsz 那么当无法用软件包方式安装时:可以直接使用源码方式安装: 1. 下载tar.gz的源码包:https

32位程序下调用64位函数——进程32位模式与64位模式切换

之前学习的32位进程中调用64位进程函数的知识整理一下,也就是32位模式与64位模式之间的切换. 相关博客:http://www.cnblogs.com/lanrenxinxin/p/4821152.html 这个博客中提到了github上的开源库,我在另一份开源项目中也看到了个库,可以切换32位至64位. 如果对这个功能具体实现比较感兴趣的朋友可以看看下面的内容. 我阅读了源码并进行了注释,算是对这个具体方法的分析和学习. 关键: 1.在x64下的进程,不管是32位或者是64位,实际上都映射了

64位ubuntu下装32位软件

本帖最后由 wuy069 于 2013-10-25 12:28 编辑很多软件只有32位的,有的依赖32位库还挺严重的:从ubuntu 13.10已经废弃了ia32-libs,但可以使用多架构,安装软件或包apt-get install program:i386.有的还是觉得烦,想一步到位安装所有的以前的ia32-libs,可以使用以下方法: sudo -i cd /etc/apt/sources.list.d echo "deb http://archive.ubuntu.com/ubuntu/

实战iOS应用从32位升级到64位

苹果官方会在2015年2月1日不允许不支持arm64的应用的提交,这对我们这种开发移动应用产品的人来说是一把达摩克利斯之剑.我前面写过一篇文章<iOS上应用如何兼容32位系统和64位系统>,但那还是纸上谈兵阶段,没有进入实战.到2015年1月份,我终于在应用提交了一次新的稳定版本后,开始进行应用的arm64升级. 1. 准备 我们的应用是多媒体的播放器,牵涉到了ffmpeg/SDL等著名的开源第三方.因为项目中并非把这些项目的源码直接引入,而是通过打库链接到项目的方式来使用,那么所有的第三方的

C++标准库和标准模板库

C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义. 在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再花费时间.人力重新开发呢: (2)质量:标准库的都是经过严格测试的,正确性有保证: (3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平: (4)良好的编程风格:采用行业中普遍的做法进行开发. 一.C++标准库 C++标准库的内容分为10类, 分别是:C1.语