Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

OpenERP的复式库存运算


  • 管理员

    半年前在介绍 [检测到链接无效,已移除] 时提到需要对OpenERP复式库存做交代后才能进一步深入介绍。

    本系列的介绍中,我们会涉及:
    什么是OpenERP的复式库存运算?
    什么是存货地点?
    存货地点如何设置?
    存货地点与仓库的联系
    存货地点的chain location有什么用途?
    Stock Move与库存管理,生产,需求运算的关系等

    ====================
    [b]OpenERP复式库存运算[/b]
    ====================

    OpenERP在计算库存数量时采用了与大多数库存管理软件不太一样的方法,其基本原理与财务管理的复式记账原理一致。即:“有借必有贷,借贷必相等”。OpenERP的复式库存运算中的一个核心对象就是所谓Stock Move。与财务对资金的流动的记录和分析相同,OpenERP就是通过Stock Move来对货品数量的流动进行记录和分析的。Stock Move对象上记录了货品从一个“存货地点”向另一个“存货地点”移动的数量,时间,和状态等。

    [b]存货地点(Stock Location)[/b]
    ==========================

    Stock Location在OpenERP的用户界面中往往被翻译成“库位”。这样的理解只有在Stock Location归属于仓库这个容器下才是正确的。事实上,Stock Location 在OpenERP中远远超出了“库位”的概念范畴。其与财务记账中的科目有相似的意义。而Stock Location的灵活配置可以解决库存运算中的很多复杂情况。与财务科目表类似,Stock Location 可以组织为树状结构。比如下面这样的结构:

    <br />公司A----仓库A<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  -----货位1<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  -----货位2<br />&nbsp; &nbsp; &nbsp; &nbsp; ----质检A<br />&nbsp; &nbsp; &nbsp; &nbsp; ----发货A<br />
    


    存货地点类型
    -------------

    [b]视图类型[/b]
    ''''''''

    Stock Location之所以能组织为树状结构是因为有“视图”(View)类型的Stock Location的存在,这类视图类型的Stock Location并不直接参与库存移动(Stock Move),但是因为它们的存在,我们可以归集其下子集的信息。比如:上图中:公司A(视图类型)可以归集“仓库A”,“质检A”,“发货A”的库存数据,而“仓库A”可以归集“货位1”,“货位2”的库存数据。

    [b]内部类型[/b]
    ''''''''

    内部(internal)类型又被称作“物理”(physical)类型,就是存在实际地点的Stock Location。这是最直观理解的存货地点类型,但是要强调的是这个实际存在的存货地点不一定是你仓库中的货位。

    [b]虚拟类型[/b]
    ''''''''

    这类Stock Location的存在是OpenERP实现复式库存运算的关键。因为OpenERP实现库存运算是通过Stock Move,而Stock Move涉及两个库存地点,一个移出库存地点,一个移入库存地点。为了保证货物的移动能用Stock Move来表述,我们必须引入一批虚拟库存类型的Stock Location使这样的库存移动匹配成对。比如从供应商进货: 我们就要从“供应商虚拟存货地点”移动到我们仓库的存货地点; 比如向客户发货:我们就要从仓库所辖的存货地点向”客户虚拟存货地点“移动;再比如:生产领料,就是从仓库所辖存货地点向"生产虚拟存货地点“的存货移动,而产成品入库,则是从”生产虚拟存货地点“向仓库所辖存货地点的移动。由此看来,复式库存运算听起来玄奥,其实就是通过这些虚拟存货地点的设置,使 所有 的库存变动在两个地点成对发生。

    这类的虚拟存货地点类型总共有以下几种:

    * 供应商类型(Supplier)
    * 客户类型 (Customer)
    * 生产类型 (Production)
    * 盘库类型 (Inventory)
    * 需求类型 (Procurement)
    * 中间类型 (Transit)

    需求类型(Procurement)的存货地点在"OpenERP的MRP运算的核心对象--Procurement Order" 一文中有提到,以后还会重点介绍。

    [b]Stock Move简介[/b]
    ==============

    Stock Move除了与上面介绍的Stock Location紧密关联以外,很显然还与产品,数量,计量单位,单价,时间等关联。这里只强调Stock Move上的一个非常重要的概念,他的状态。

    [b]Stock Move的状态[/b]
    ----------------

    Stock Move的状态一般上有以下几种:

    * 草稿(draft)
    * 取消(cancel)
    * 等待(waiting)
    * 已确认(confirmed)
    * 已分配(assigned)
    * 完成(done)

    草稿和取消一目了然,无需介绍。“等待”表示该Stock Move有一个与其连锁的上游Stock Move尚未完成,等待上游连锁Stock Move的处理结果。关于连锁Stock Move 以及连锁存货地点将在后续的介绍中讲解。“已确认“表示该Stock Move已被确认,但是源存货地点尚没有足够完成本次库存移动的产品库存,在界面上OpenERP显示为“等待可用”(Waiting Availability); "已分配“是指在该Stock Move的源库存地点已有足够本次库存移动的产品,这些产品已被预留,但本次移动尚未完成;“完成”当然表示本次库存移动已经完成。
    [b]
    库存计算的简单公式[/b]
    ==================

    OpenERP的Stock Move似乎都在描述一个动态的货品移动过程。那么具体到每一个存货地点的库存量到底如何计算呢?其实公式非常简单,如图:

    在图中,我们需要计算存货地点M的存货量。以I开头的Stock Move 比如I-A1M(done)表示流入M的Stock Move, 其状态为done, 而流出M的Stock Move则以O开头比如:O-MB2(confirmed)表示流出存货地点M的Stock Move其状态为“confirmed"

    [attachimg=1]

    计算库存的简单公式是:
    实际库存(on hand) = Σ(I-nM<done>)-Σ(O-Mm<done>)
    未来库存(virtual stock) = Σ(I-nM<not cancel>)-Σ(O-Mm<not cancel>)

    自己动手试试计算图中的实际库存和未来库存,以及在途收货库存,以及待发货库存数量等

    下回将介绍Stock Location与仓库的关系,以及库存管理与Stock Move的关系等,敬请期待!



  • 四个西格玛,超级牛力。



  • 校长的重磅文章清晰易懂

    就是等得太久了



  • 收藏...... 

    继续7呆后续...



  • 校长终于履行诺言了,不过依旧是调口味的作风哈,不知这篇大作要等多久才能完结,顺便问下未来某日的库存的计算公式怎么写?求指点!


Log in to reply