在OpenERP中,我如何确定如何将购买的库存分配给哪些制造订单?

时间:2012-08-23 19:00:15

标签: openerp

摘要

在我即将收到一批不足以填满我的所有出货和生产订单的原材料的情况下,如何预测将分配这些原材料的出货和生产订单到?

详细

我有一个新的测试数据库,我在其上做了以下内容:

设置

  1. 创建一个产品make_to_stock,(比如'Cabinet')
  2. 创建要购买的产品,make_to_stock,(比如说'Wood')
  3. 将BOM添加到包含单个物料清单行的Cabinet产品中,一个“Wood”
  4. 向橱柜添加供应商
  5. 添加一个订单点以使Wood的VA保持为零(即永远保持库存)
  6. 过程

    1. 为Cabinet
    2. 创建采购申请
    3. 运行采购
    4. 采购为机柜创建了MO,找到了BOM,并为Cabinet和Wood创建了一些移动线,并为每个产品创建了采购
    5. 确认从MO for Wood采购,并观察它是否异常。
    6. 此时,系统中有四个库存移动:​​

      1. Cabinet Stock->Stock, from initial procurement, in state 'confirmed' (waiting on #2)
      2. Cabinet Production->Stock, from MO, in state 'waiting' (waiting on #3)
      3. Wood Stock->Production, to be consumed by MO, in state 'waiting' (waiting on #4)
      4. Wood Stock->Stock, procurement reservation from MO input, in state 'exception' (no stock found)
      

      现在,继续:

      1. 运行调度程序。这为Wood创造了一个新的采购,因为VA< 0,基于我们定义的订单点。它还确认并运行该采购,为Wood创建新的采购订单并设置草稿库存移动。
      2. 确认将分配库存的采购订单移动。
      3. 正是在这一点上,我们正在等待伍德交付。去收货,并确认库存移动。
      4. 此时,四个库存移动处于相同状态,Wood还有两个,一个来自Suppliers-> Stock,一个来自Stock-> Stock。在最后一步中,我们确认了进入Stock-> Stock。

        目前我们有1种木材库存,1种木材采购例外由于库存不足。

        我的问题是,我如何确定将来分配这种木材的位置?如果那是不可能的(似乎可能不是这样),那么在重试采购并看到它成功之后,我怎么能知道最初分配库存移动的位置?

        为了明确为什么需要这样做,我们将提供多种产品,我们希望将它们实际放置在库存中或直接放在需要它的机器前面。也就是说,我们希望能够直接跟踪交货库存移动到MO中指定的位置。

        对于额外的报复,这是在重新采购木材采购后库存变动的样子:

        #Initial Procurement
        37787: 1.0 Base Cabinet (copy) [Stock -> Stock] (confirmed waiting for 37788) (procured from 16580)
        #MO final product
        37788: 1.0 Base Cabinet (copy) [Production -> Stock] (waiting waiting for 37789) (finished product of MO 7433)
        #MO source product (has move history with 37790)
        37789: 1.0 1/2ChinFPly1s (copy) [Stock -> Production] (assigned waiting for 37790) (to be consumed by 7433)
        #Procurement for input, waiting for something in stock
        37790: 1.0 1/2ChinFPly1s (copy) [Stock -> Stock] (done) (procured from 16581)
        
        #------------------------------
        #------------------------------
        
        #Procurment from Orderpoint, putting something in stock (has move history with 37794)
        37791: 1.0 1/2ChinFPly1s (copy) [Stock -> Stock] (done waiting for 37794) (procured from 16582)
        37794: 1.0 1/2ChinFPly1s (copy) [Suppliers -> Stock] (done) (final move of PO line 3)
        

        似乎没有任何方法可以将前四个动作与后两个动作连接起来。

2 个答案:

答案 0 :(得分:1)

核心openerp中的

没有任何功能可以告诉您从哪个订单分配到哪个订单的库存。你必须在互联网上实现或搜索可以帮助你的fifo lifo模块。对于ref:http://www.youtube.com/watch?v=DfoxZLxagXQ

答案 1 :(得分:0)

看起来计划中较早出现的采购将获得您刚刚收到的任何货物的首选。您可以通过在MRP计划程序运行之前手动重新运行采购或通过调整采购的date_planned字段来覆盖它。

下次收到货件后MRP计划程序运行时,它将检查处于异常状态的所有采购并尝试重新启动它们。在the scheduler code中,您可以看到它按date_planned排序处理它们。

if not ids:
    ids = procurement_obj.search(cr, 
                                 uid, 
                                 [('state', '=', 'exception')], 
                                 order="date_planned")
for id in ids:
    wf_service.trg_validate(uid, 'procurement.order', id, 'button_restart', cr)