Odoo覆写需求计算方法问题
2014-11-27 11:47
204 查看
因公司业务需求,想在产生仓库物料调拨的时候,同时产生一笔快递单(因为公司不同的仓库不在同一个地方),调拨单是在计算物料需求时产生的,所以我就想覆写计算物料需求的方法,在执行完原来的业务逻辑以后,再根据内部需求处理后面的逻辑。
开始写的方法如下:
调用完父对象方法以后,马上执行search查询待处理的资料,但奇怪的是每次搜索到的内容都是为空。
后来跟踪调用发现此方法是系统另外进程来处理的,与当前操作的进程不一样,代码可参考addons\procurement\wizard\schedulers_all.py中的procure_calculation方法。
在另外的进程处理中,cr变量代表的数据库连接游标已经发生了变化,所以我在后面的search中,使用原来的cr变量,可能就找不到数据了。
参考其它方法的说明以后,重新修改代码如下:
经测试后,可以达到预期的处理效果。
开始写的方法如下:
class rhwl_order(osv.osv): _inherit = "procurement.order" def run_scheduler(self, cr, uid, use_new_cursor=False, company_id=False, context=None): super(rhwl_order,self).run_scheduler(cr,uid,use_new_cursor,company_id,context) move_obj = self.pool.get("stock.move") move_ids = move_obj.search(cr,uid,[('state','not in',['done','cancel']),('express_no','=',False)],context=context)
调用完父对象方法以后,马上执行search查询待处理的资料,但奇怪的是每次搜索到的内容都是为空。
后来跟踪调用发现此方法是系统另外进程来处理的,与当前操作的进程不一样,代码可参考addons\procurement\wizard\schedulers_all.py中的procure_calculation方法。
threaded_calculation = threading.Thread(target=self._procure_calculation_all, args=(cr, uid, ids, context)) threaded_calculation.start()
在另外的进程处理中,cr变量代表的数据库连接游标已经发生了变化,所以我在后面的search中,使用原来的cr变量,可能就找不到数据了。
参考其它方法的说明以后,重新修改代码如下:
class rhwl_order(osv.osv): _inherit = "procurement.order" def run_scheduler(self, cr, uid, use_new_cursor=False, company_id=False, context=None): super(rhwl_order,self).run_scheduler(cr,uid,use_new_cursor,company_id,context) try: if use_new_cursor: cr = openerp.registry(cr.dbname).cursor() move_obj = self.pool.get("stock.move")#('warehouse_id','=',1),('rule_id','>',0), move_ids = move_obj.search(cr,uid,[('state','not in',['done','cancel']),('express_no','=',False)],context=context) #内部业务逻辑处理 if use_new_cursor: cr.commit() finally: if use_new_cursor: try: cr.close() except Exception: pass return {}
经测试后,可以达到预期的处理效果。
相关文章推荐
- excel 复制公式计算结果问题的解决方法
- Oracle10g安装时检查网络配置需求未通过问题的解决方法
- java 金额计算,商业计算 double不精确问题 BigDecimal,Double保留两位小数方法
- 需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?
- 用户需求问题分析方法
- 关于无线数据传输中产生的流量的一些计算方法以及问题!
- 需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?
- vs中使用M_PI的问题及解决 角度转弧度&根据弧度计算圆周上点的坐标的方法
- Openstack 问题总结之:计算节点上网络访问慢的解决方法
- 需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?
- bs3000+ 百胜 计算生产的总数是否够市场的需求 计算方法
- 关于datepart计算weekday时多一天引起的问题及解决方法
- 关于datepart计算weekday时多一天引起的问题及解决方法
- 用蒙特卡罗方法计算五人传球问题
- 云计算之路-阿里云上:在SLB上部署https遇到的问题及解决方法
- 一些关于 c#的重载,覆写,虚方法和抽象方法的问题
- 用JS做计算的时候小数位不正常--Js中parseFloat()方法所产生的精度问题
- 合同计算问题的计算公式与计算方法
- 概论-组合最优化问题、计算复杂性和启发式算法概念(现代优化计算方法)
- 需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?