关于OE里, 产品库存的计算, 是怎么计算的, 有没有人帮我解释一下以下代码
-
如题, 我在product.py找到如下代码, 但是没有找到具体如何算的方法,大侠们帮帮!
def _get_product_available_func(states, what):
def _product_available(self, cr, uid, ids, name, arg, context=None):
return {}.fromkeys(ids, 0.0)
return _product_available
_product_qty_available = _get_product_available_func(('done',), ('in', 'out'))
_product_virtual_available = _get_product_available_func(('confirmed','waiting','assigned','done'), ('in', 'out'))
_product_outgoing_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('out',))
_product_incoming_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('in',)) -
OpenERP中的库存计算是通过对stock.move的统计运算来完成的。
在OpenERP中实际有两种库存:实际库存, 未来库存(虚拟库存,账面库存)
比如对某个库存地点(Stock Location)的[b]实际库存[/b]:就是对所有已完成的(状态为done)进入(in)该库存地点库存移动(stock.move)- 所有已完成的移出该库存地点的库存移动
翻译成代码就是:_product_qty_available = _get_product_available_func(('done',), ('in', 'out'))
而对于某库存地点的[b]未来库存[/b],就要考虑尚未完成的库存移动,或者说是在途的库存移动,这些状态为:confirmed(确认了但库存移动的起始地点尚没有货物),waiting(比如在连锁库位的情况下,之前的库存尚未完成,因此该库存移动的起始地点尚还没有货物),assigned(库存移动的其实地点已有货物,但移动尚未完成),翻译成代码就是:_product_virtual_available = _get_product_available_func(('confirmed','waiting','assigned','done'), ('in', 'out'))
理解了以上两行代码,下面的代码就应该不言而喻了。 -
首先先谢谢digitalsatori,
意思大概清楚了,但是:def _get_product_available_func(states, what):<br /> def _product_available(self, cr, uid, ids, name, arg, context=None):<br /> return {}.fromkeys(ids, 0.0)<br /> return _product_available<br /><br /> _product_qty_available = _get_product_available_func(('done',), ('in', 'out'))<br /> _product_virtual_available = _get_product_available_func(('confirmed','waiting','assigned','done'), ('in', 'out'))<br /> _product_outgoing_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('out',))<br /> _product_incoming_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('in',))<br />
对于def _get_product_available_func(states, what):
def _product_available(self, cr, uid, ids, name, arg, context=None):
return {}.fromkeys(ids, 0.0)
return _product_available
如何取数据库数据不明白, return {}.fromkeys(ids, 0.0)实际上是初始化, 比如product id = 1 {}.fromkeys(ids,0) = {1:0.0}, 在这里没有看到执行汇总, 或查询记录, 所以另人费解 -
在stock 模块中product这些函数字段都被override 了,看一下stock/product.py