def _get_send_amount(self,cr,uid,ids,name,args,context=None):
res={}
MRP={}
lines = self.browse(cr,uid,ids)
#odd code:here the code will execute towice,first time execute by line id asc
#but second time it will execute by line id desc
#so,I have to sort it before the loop.
lines.sort(key=lambda x:x.id)
for line in lines:
result=self._get_send_data(cr,uid,line.id,name,args,context=context)
if result["amount"] > line.amount:
if not MRP.has_key(line.product_id.id):
MRP[line.product_id.id]=result["amount"]-line.amount
res[line.id]=line.amount
elif MRP[line.product_id.id]-line.amount>0:
res[line.id]=line.amount
MRP[line.product_id.id] -=line.amount
else:
res[line.id]=MRP[line.product_id.id]
MRP[line.product_id.id]=0
else:
res[line.id]=result["amount"] for line2 in lines:
#产品是否是组合产品
mrp = self.pool.get('mrp.bom').search(cr,uid,[('product_id','=',line2.product_id.id),('bom_id','=',False)],context=context)
if len(mrp)>0:
min_count = 0
bom = self.pool.get('mrp.bom').browse(cr,uid,mrp[0],context=context)
res_count=[]
#res_orders=[]
i=1
for bom_line in bom.bom_lines:
res_count.append(int(res[line2.id+i] / bom_line.product_qty))
i+=1
if len(res_count)>0:
amount =min(res_count)
else:
amount =0
res[line2.id]=amount
return res

我在迭代循环中发现,自定义方法_get_send_amount会执行两次,而且第一次执行的顺序是正序,第二次执行的顺序是倒序。

不知到是为什么。。

OpenERP 疑问之一的更多相关文章

  1. openerp经典收藏 OpenERP库存管理的若干概念讲解(新增库存价值)(转载)

    OpenERP库存管理的若干概念讲解(新增库存价值) 原文:http://shine-it.net/index.php/topic,2425.0/topicseen.html 一.复式库存(Doubl ...

  2. openerp 6.0.2库存业务

    一.复式库存(Double-Entry Stock Management)和库存移动(Stock Move) OpenERP的库存管理采取了独特的复式库存(Double-Entry Stock Man ...

  3. 阶段一:用Handler和Message实现计时效果及其中一些疑问

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 本来是打算继续做天气预报的优化的,但因为某些原因,我要先把之前做的小应用优化一下.所以今天就插播一下用Handle ...

  4. sys.dm_os_waiting_tasks 引发的疑问(中)

    上一篇我们说了一下sys.dm_exec_requests 和 sys.dm_os_waiting_tasks 在获取并行等待的时候得不同结果,这一篇我们谈论下我的第二个疑问:为什么一个并行计划(4线 ...

  5. sys.dm_os_waiting_tasks 引发的疑问(上)

    很多人在查看SQL语句等待的时候都是通过sys.dm_exec_requests查看,等待类型也是通过wait_type得出,sys.dm_os_waiting_tasks也可以看到session的等 ...

  6. 关于C#调用非托管动态库方式的性能疑问

    最近的项目中,因为一些原因,需要C#调用非托管(这里为C++)的动态库.网上喜闻乐见的方式是采用静态(DllImport)方式进行调用.偶然在园子里看到可以用动态(LoadLibrary,GetPro ...

  7. Ubuntu 安装OpenERP

    网上的都TM不靠谱.... 1.用root登录,修改/etc/apt/sources.list 文件 sudo /etc/apt/sources.list u root 注意一定要加U root否则没 ...

  8. OpenERP ORM 对象方法列表

    OpenERP对象支持的字段类型有,基础类型:char, text, boolean, integer, float, date, time, datetime, binary:复杂类型:select ...

  9. OpenERP 使用与开发笔记(一)

    一直关注OpenERP,但一直未真正使用.最近一些数据想规范管理,免得使和EXCEL与WORD等到处找,所以想到OpenERP的自定义功能比较好,就再次找来相关资料重新拾掇起来.在这过程中,发现了许多 ...

随机推荐

  1. 前端福利之盘飞那个 "阿里矢量图" (转)

    一.准备工作 1.首先,进入阿里的矢量图标库,在这个图标库里面可以找到很多图片资源,当然了需要登录才能下载或者使用,用GitHub账号或者新浪微博账号登录都可以 2.登录以后,可以搜索自己需要的资源, ...

  2. jQuery框架-3.jQuery自定义封装插件和第三方插件

    一.jQuery的封装扩展 1.jQuery中extend方法使用 (挂在到jQuery和jQuery.fn两对象身上的使用) 1.1.官方文档定义: jQuery.extend   Merge th ...

  3. [label][git-commands] Several Git Commands

    The process of Git commands Operation 1. git commit -m 'fist post' Windows PowerShellCopyright (C) 2 ...

  4. Oracle E-Business Suite并发处理机制(Current Processing)

    2012年写过一篇关于Oracle E-Business Suite并发管理器的文章,回头看之前总结的内容还是比较单薄,很多点没说到,最近在看这块的内容,索性再写一篇稍微完整的文章来. Oracle ...

  5. Radius 认证协议介绍-兼rfc导读

    老规矩, 先看维基: 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时兼顾验证(authent ...

  6. Replication--备份初始化需要还原备份么?

    测试场景:发布服务器:SQLVM6\SQL2订阅服务器:SQLVM5\SQL2分发服务器:SQLVM3\SQL2发布数据库:RepDB2订阅数据库:RepDB2发布:RepDB2_TB1 测试步骤:1 ...

  7. Linux 连接数过多排查思路

    ## 在连接数报警的机器上,查看某个端口tcp连接来源,并排序 netstat -natl |grep ^tcp |grep ":2181" |awk '{print $5}'|a ...

  8. Sql Server中使用存储过程来实现一些时间差的改变

    Sql Server中的时间差是使用DATEDIFF来是现的 语法如下:DATEDIFF(要显示时间格式,开始时间,结束时间) 比如:DATEDIFF(minute,'2019-2-28 8:30', ...

  9. Javascript 535种方式!!!实现页面重载

    原文地址: http://www.phpied.com/files/location-location/location-location.html 完全出于好玩,竟然有人整理了500多种方法来实现刷 ...

  10. trace sql log

    C:\Windows\system32>cd /d  d:\PSSDIAG\pssd_2k12_x64 d:\PSSDIAG\pssd_2k12_x64>pssdiag.cmd 2014/ ...