• 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

关于OE里, 产品库存的计算, 是怎么计算的, 有没有人帮我解释一下以下代码

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
5 帖子 2 发布者 5263 浏览
    • 从旧到新
    • 从新到旧
    • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 随 离线
    随 离线
    随风
    写于 最后由 编辑
    #1

    如题, 我在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',))

    1 条回复 最后回复
    0
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    写于 最后由 编辑
    #2

    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'))
    



    理解了以上两行代码,下面的代码就应该不言而喻了。

    【上海先安科技】(tony AT openerp.cn)

    1 条回复 最后回复
    0
  • 随 离线
    随 离线
    随风
    写于 最后由 编辑
    #3

    首先先谢谢digitalsatori,
    意思大概清楚了,但是:

    def _get_product_available_func(states, what):<br />&nbsp; &nbsp; &nbsp; &nbsp; def _product_available(self, cr, uid, ids, name, arg, context=None):<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return {}.fromkeys(ids, 0.0)<br />&nbsp; &nbsp; &nbsp; &nbsp; return _product_available<br /><br />&nbsp; &nbsp; _product_qty_available = _get_product_available_func((&#039;done&#039;,), (&#039;in&#039;, &#039;out&#039;))<br />&nbsp; &nbsp; _product_virtual_available = _get_product_available_func((&#039;confirmed&#039;,&#039;waiting&#039;,&#039;assigned&#039;,&#039;done&#039;), (&#039;in&#039;, &#039;out&#039;))<br />&nbsp; &nbsp; _product_outgoing_qty = _get_product_available_func((&#039;confirmed&#039;,&#039;waiting&#039;,&#039;assigned&#039;), (&#039;out&#039;,))<br />&nbsp; &nbsp; _product_incoming_qty = _get_product_available_func((&#039;confirmed&#039;,&#039;waiting&#039;,&#039;assigned&#039;), (&#039;in&#039;,))<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}, 在这里没有看到执行汇总, 或查询记录, 所以另人费解

    1 条回复 最后回复
    0
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    写于 最后由 编辑
    #4

    在stock 模块中product这些函数字段都被override 了,看一下stock/product.py

    【上海先安科技】(tony AT openerp.cn)

    1 条回复 最后回复
    0

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。