物料资源计划

出自Opentaps Wiki

跳转到: 导航, 搜索

物料资源计划(Material Resources Planning (MRP)) 是帮助你计划采购和生产来满足客户需求的时间分析工具. 它将结合你的当前库存信息联合销售,采购,销售订单 , 来决定所需库存的数量和时间. 可以通过建立 Requirements 来帮助你满足订单或生产更多的产品来满足需求.

配置 MRP

为了使用 MRP, 你必须首先设置如下的信息:

  • 给你销售的产品建立 Bill Of Material. 如果你已经到入产品, 你可以运行 initLowLevelCode 服务来建立你的产品 和检查 Product.billOfMaterialLevel 来确认设置.
  • 给你购买的产品,配置 Product Suppliers. 你应该指定一个 主供应商("Main Supplier" ) 给你的产品.
  • 配置 Inventory Stock Levels 给你所有的产品, 通过 warehouse.
  • 你的产品必须有一个 "low level code" 配置. 如果它们是在 opentaps中建立的, 他们可以自动建立. 另外, 如果你导入你的产品, 你的系统管理员必须运行一个 "initLowLevelCode"服务.

这样你可以使用 Run MRP Screen 来对你的仓库来运行物料资源计划. MRP 运行后, 你可以使用 View MRP Screen 来查看结果. 你也可以使用 Open Requirements Screen 来批准或取消MRP 建立的需求,然后开始购买和生产过程.


MRP 如何工作

想像在纸上画一个水平线. 现在再把它想象成时间线, 当你从左向右移动时, 你将移动到未来. 拿一个产品来说. 对你的每个订单, 把它们的装运日期和数量标记在时间线上. 同时也把即将从供应商那里到来的接收货物或在你的公司的生产作业也标记上. 现在你有了一个所有对你的生产"inventory events"的时间线. 你可以把你的生产的开始进货时间, 从左到右移动到将来, 然后计算在将来不同时间点的存货数量. 接下来, 当库存数量降低到最小存货量时, 记下一个需求 ("requirement") 来获得额外的需求. 如果这个产品从供应商处购买, 这意味着你需要购买和接收. 如果产品是生产出来的需求意味着你需要生产它.

对于你的产品,你仅仅手动执行了MRP. 一个实时的 MRP 系统是很复杂而且必须考虑交付提前时间和所有的你的产品的物料清单, 但概念上和上面讲的流程类似。

The opentaps 中MRP 系统的开始是根据仓库中定义的最小库存量建立每个产品的the 库存事件的(inventory events) 时间轴(timeline). 这将建立一个负的inventory event 当对于一个产品订单需要生产时 or 当产品的原料运行而且从采购清单接收建立一个正 inventory event 或当生产产品运行. 当有等待的产品运行时, 对于一个产品的独立部件,可以通过一个产品的 Bill Of Material 来建立 inventory events .

将从物料清单的顶部的产品开始,运行所有的 inventory events. 如果一个产品没有 inventory events, MRP 将比较它的当前数量,在“手边”的inventory 与仓库的最小库存数量. 如果任何时候 inventory events 引起物料清单 “BOM” 下降到最小库存量以下, 而且 product 没有定义类型为 "WIP", 系统将尝试补充 the inventory 存货,通过如下步骤:

  1. 可以查询当前仓库的 Backup Warehouses ,看一下这些仓库是否需要请求一个”移库”操作.
  2. 如果不需要, 可以建立一个采购需求或生产这个产品. 为了决定这个产品是否生产或采购, 系统将考虑是否有产品有一个自己的 Bill Of Material 并且是否定义了要采购的供应产品. 默认, 一个零件有子节点而且他没有不过期的 SupplierProducts 定义,那么会自己生产. 要采购的产品默认会和 "Main Supplier"相关联.
  3. 可以建立一个连接在需求和显著的“打开”的销售订单,提示需求将被建立. 需求将会按照它们保留的顺序分配给订单.

在完成在 BOM 层的所有产品后, 可以到下 BOM 的下一个层次,重复这个过程(process), 知道遍历了所有的 BOM 层 或遍历了三层没有发现任何需要购买或生产的. 产品类型为 "WIP" 的可能没有需求建立因为系统会给产品的零件建立需求.

如果没有一个产品的 inventory events, MRP 将比较当前的inventory 层次的 “在手边数量” (quantity on hand (QOH)) 和 最小库存级别,如果低于库存量,将会建立一个新的需求.

如果数量很小, MRP 默认会保留两位小数.

由于 MRP 是以 产品inventory 事件的时间线为基准, 对于 inventory events的时间的估计是很敏感的. 例如, 让我们猜测一个销售订单可能在 12 PM (noon) 今天中午被装运, 而且你有一个采购订单在 12:01 PM进来. MRP 假设你可以等到12:01分来装运订单, 或者需要需要订另外的Invetory,这样 12 PM 可以下订单? The "common sense" 对这个问题的回答是MRP 需要模拟. The opentaps MRP 做如下的假设,关于时间事件:

  • 它将对inventory events使用定期的(stated) 装运或生产时间. 如果那些不可用, 它将假设当前时间, 除了如下情况:
    • 对于销售订单的装运, 如果现在没有指定装运时间, 将使用 默认的("default years offset" )参数来移动销售订单的装运 X years 到将来. 默认, 这个参数设置为 1 年, 所以 MRP 假设没有装运日期的任何销售订单将需要在今后的1 年装运.
    • 当销售订单装运需要时,它会用 ProductFacility.daysToShip 来设置时间. 例如, 如果一个销售订单被调度到Oct 15, 2007装运,并且产品的 daysToShip 是 10 天, 它将假设产品在订货中,将会在 Oct 5, 2007 时在仓库中.
  • 没有事件会被设置为过去: 如果任何 inventory event 在当前的date/time以前, MRP 将调整它到当前的date/time 并且标记为 "late."

注意在这时, the opentaps MRP 是完全决定了: 在计算inventory events时,它不使用任何推测 或潜在的需求.

MRP 完成后, 你可以使用 view mrp results 或进入Open Requirements Screen 来查看建立的需求.

定制和扩展MRP

The opentaps MRP 在Run MRP Screen中对于开发人员提供了一些其它的功能:

  • 可以通过配置你的 MRP to 来近似到不同的小数位 而且可以配置暂时和最终的近似, 这样你可以让MRP自然增加( "accrue") 分数, 带领它们迅速地向前, 而且在正常的近似的时候末尾使用 0 , RoudningMode.DOWN 是为了暂时的需求, RoundingMode.HALF_UP 是为了最终的需求.
  • 你可以运行 opentaps MRP 作为一个 "black box" 对于其它的 ERP 或 仓库管理系统(inventory management systems), 无需使用opentaps 销售,库存,和采购模块(sales, inventory, and purchasing models), 可以关闭 reInitializeInventoryEvents 字段 和引入 InventoryEventPlanned 记录.
  • 现在还有一个 MrpConfiguration 抽象类,你可以实现它并传递给 opentaps.runMrpForFacility. 这是一个新的功能还没有完全开发, 但这个概念允许你定制配置 MRP的不同结果, 例如给生产或 采购转变时间.


© 2008-2010 Open Source Strategies, Inc. Development of this documentation site is sponsored by Open Source Strategies, Inc.
Help support opentaps with a subscription to this documentation site.