作者:人月神话,新浪博客同名
简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践
今天简单整理下原来整理过的ERP核心业务流程和Oracle-ERP核心业务功能和数据对象分析。在介绍Oracle-ERP核心模块前先分析下我们经常谈到的主生产计划和物料需求计划。
主生产计划
对于大部分企业,与其说一个系统是否称的上是ERP系统还不如说该系统能否真正算的上一个MRPII系统。MRPII的核心数据基于ITEM和BOM,以此实现物流,信息流和资金流的完全整合。
所以一个MRPII系统至少应该有基于BOM分解的MRP运算功能,同时考虑资源约束形成闭环的MRP,但MRP关注的是很细节的原材料需求计划,所以关注点在细节和近期。
而MPS主生产计划则是一个较粗的关注产品或可配置的半成品在各个时段的具体需求的计划,因此MPS有效的衔接了销售模块和MRP,通过运行MPS才能够实现由计划驱动的一体化控制模式。因此有无MPS主生产计划功能已经是否考虑资源约束是ERP系统另一个重要特征,只有MPS主生产计划可行的情况下,才应该进入计划的细化,运行近期的MRP物料需求计划和能力需求计划。
为什么要先有主生产计划,再根据主生产计划制订物料需求计划?是否可以直接根据销售预测和客户订单来制订物料需求计划?
概括地说:MRP的计划方式就是追踪需求。
如果直接根据预测和客户订单的需求来运行MRP,那么得到的计划将在数量和时间上与预测和客户订单需求完成匹配。但是 ,预测和客户订单是不稳定、不均衡的,直接用来安排生产将会出现时而加班加点也不能完成任务,时而设备闲置很多人没有活干的现象,这将给企业带来灾难性的后果,而且企业的生 产能力和其他资源是有限的,这样的安排也不是总能做得到的。加上主生产计划这一层次,通过人工干预,均衡安排,使得在一段时间内主生产计划量和预测及客户订单在总量上相匹配,而不追求在每个具体时刻上均与需求相匹配,从而得到一份稳定、均衡的计划。
由于在产品或最终项目(独立需求项目)这一级上的计划(即主生产计划)是稳定和均衡的,据此所得到的关于非独立需求项目的物料需求计划也将是稳定和匀称的。因此制订主生产计划是为了得到一份稳定、均衡的生产计划。
对于MRP一般会每周运算,每天可能还会跑一个增量的MRP。而对于MPS一般会制定6个月甚至更长时间的计划,整个时间区间首先分为短期,中期和远期三个时区,每个时区还会分为多个时段。MPS的输入一般既有实际的订单,又有预测信息,因此在短期一般以订单作为需求基准,中期取订单和预测的最大值,而远期一般只有预测值可取。在不能完全实现类似Dell的完全按单生产的Pull模式的时候,很多企业都属于这种混合计划模式。
根据定义,MPS是详细陈述在何时要生产出多少物品的计划。
因此,任何一家公司的MPS总是计划内物品与每一计划内物品所覆盖的时间期间所构成的一个矩阵。所使用的时间期间往往是一周,虽然对大而复杂的产品如发电设备与船舶有时用两周或一个月。对于这里提及到的物品对于MTO(Make to Order)计划模式的时候一般就是最顶层的产品,而对于ATO(Assembly to Order)方式时候,由于根据不同的半成品可以配置出成千上万的产品,因此MPS计划仍然会依据计划Bom进行分解,最后得出的是各个装配件的各时段的需求数量。
MPS中一个重要概念就是提前期,一个产品客户三个月以后要,可能现在就要开始进行原材料的采购,并准备相关的生产。因此采购周期,加工周期,装配周期和发运周期共同构成了某个产品的提前期。其中加工周期又涉及到了排队时间,准备时间,加工时间,等待时间,传送时间等多个时间。当一个产品的Bom层次很深的时候,既要考虑各层的这些加工和装配时间,又要考虑能力资源的约束,因此加工提前期的计算并不是固定一层不变的。
在MPS计划编制中需要压制其可行性,在这里一般通过RCCP(粗能力计划)进行校验。TOC约束理论在ERP中有特别重要的作用和地位,特别是在后期APS(Advanced Plan System)如I2的APS中更是得到充分的体现。
一个MPS计划必须考虑各个资源的约束,这里面的原材料,生产设备,生产人员,提前期,加工装配工序等都是重要的约束条件。在资源约束无法满足需求的时候,还可以考虑可替代BOM,可替代物料和供应商,可替代工艺路线等多种替代资源。充分考虑了这些约束的RCCP将是很复杂的。
进行主生产计划编制的步骤是首先是输入各个时段的预测信息和订单信息,根据这些信息得到毛需求,同时根据计划批量预估每个时段的计划产出量。根据毛需求和计划产出量信息得出各个时段的预计可用库存。然后根据毛需求,预计可用库存,再考虑产品的安全库存的需要得出净需求。最后根据净需求,提前期得出计划投入量和可供销售量。
MPS驱动一体化的计划控制系统,它把较高层次的生产计划与日常的日程计划连锁在一起。这就确保后者支持前者,而且在二者不可能保持同一步伐之前会生成早期警告信号。MPS运算结果可行后直接指导MRP运算和能力需求计划,同时根据MPS计算结果得出合同履行承诺(比如客户在三个月后要某个产品5000台,根据现在情况是否能够满足该合同的履行。
从主生产计划到物料需求计划
物料需求计划(Material Requirement Planning 简称MRP)是当代国际上一种成功的企业管理理论和方法。其基本思想就是通过运用科学的管理方法和现代化的工具──电脑,规范企业各项管理,根据市场需求的变化,对企业的各种制造资源和整个生产、经营过程,实行有效组织、协调、控制,在确保企业正常进行生产的基础上,最大限度地降低库存量,缩短生产周期,减少资金占用,降低生产成本,提高企业的投入产出率等,从而提高企业的经济效益和市场竞争能力。
对于MRPII而言,重点在于以下三点改进,一是增加了MPS主生产计划实现计划控制过程一体化,一是充分考虑了能力和资源约束,最后是高度实现了信息流,数据流和资金流的整合。MRPII中的销售,计划,采购,生产,库存,检验,应收,应付,总帐等核心模块完全实现数据流的高度整合,基本是牵一发而动全身。
MRP运算有很多最基本的重要输入,在没有MPS的时候可以直接输入订单和预测。在有MPS的时候输入为MPS的输出结果。另外重要的输入是就BOM和库存信息。MRP需要按照BOM层次结构逐层展开分解,同时在每一层都需要考虑相应的提前期和半成品库存。
MRP的输出回答现在需要采购什么和现在需要制造什么两个问题,因此输出为采购计划和生产计划,采购计划是形成采购订单的基础,而生产计划是形成加工单的基础。
对于多层BOM的时候,运行MRP第一步就是首先要得到原材料级的各个时间点的需求信息。在这里对多层BOM的分解可以通过递归的方式一直分解到最底层,具体递归方式为
- 将当前父项根据BOM分解为子项的需求
- 该子项如果已经是原材料直接扣减库存后形成需求返回
- 该子项是半成品时候
- a如果半成品库存满足需求,直接扣减半成品库存返回
- b如果不满足,得出扣减后需求进行递归分解
在分解得出了原材料层级的各时间点需求计划后,需要根据时区或时段的改进进行汇总。汇总后考虑原材料的库存情况,采购提前期,采购订单在途情况,考虑安全库存的情况,得出实际的需求情况。实际的需求情况还需要考虑最小订购量和最小包装以转换为直接的给供应商的采购订单。
可以看到MRP分解并无想象的复杂。但当考虑产品BOM的加工装配提前期,考虑能力资源约束的时候整个运算和平衡将很复杂。
有些ERP系统可以完全追踪到销售合同和采购订单的一一对应关系,而销售订单经常是变化的,中间还有预测信息,因此从整个供应链优化角度来讲这种一一对应并无太大的益处,只有对关键销售合同需要对关键资源进行锁定的时候已经需要后期进行成本绩效单独核算时可以起一定的作用。基础数据和BOM是MRP运算最重要的静态基础数据,库存和在途,在制是最重要的基础动态数据,如果这些基础数据不准确将直接导致MRP输出结果的不准确。
MRP一般每周运行一到两次,同时每天都可能跑增量的MRP(只处理订单和预测的变更情况)。在准备下生产工单之前,一般会进行相关的产品齐套分析,确认生产产品的原材料是否都齐备,是否存在缺料的情况,当齐套分析满足后即可下达相关的生产工单。
以下简单描述由MRP驱动的重要的数据流情况:
- 采购订单生效后形成采购在途,下次MRP运算需要扣减采购在途
- 检验通过入库后,验收合格数量将累计到原材料库存
- 检验通过入库后,验收合格数量将扣减采购订单
- 加工单需要按BOM进行领料,要扣减库存,形成半成品在制
- 多层BOM分解时候要考虑半成品在制
- 加工完成入库增加半成品后产品库存
- 销售发货后扣减成品库存
- 销售发货后扣减销售订单
Oracle-ERP供应商
供应商的三层表结构
- 供应商头:PO_VENDORS(编码,名称,别名,父供应商ID,供应商类型,税务标识和登记号,有效性)
- 供应商地点:PO_VENROD_SITES(用于采购,用于付款,国家,OU,地址行多个,银行账户信息,地点)
- 联系人目录:PO_VENDOR_CONTACTS(联系人姓名,部门,电话,邮件)
一个供应商可以有多个地点,有些地点是用于采购,而有些地点用于付款,也可以是既用于采购也用于付款。采购相关关键属性为收货地点和收单地点,即供应商送货地点和供应商发票寄送地点。同时在供应商-》采购还需要维护发运方式等信息。
当地点用于付款的时候,需要填写银行账户信息,付款条件信息等。在供应商-》会计维护负债账户组合,预付款账户组合,远期付款账户组合等。
供应商地点需要关联付款条件,付款条件对应AP_TERM_TL和AP_TERM_LINES分别为付款条件头和付款条件行信息。付款方法取自快速编码表AP_LOOKUP_CODES,类型为PAYMENT METHOD。另外供应商付款所涉及到得税码和具体的税率分别对应到AP_TAX_CODES_ALL和AP_AWT_TAX_RATES_ALL两个表。
虽然供应商信息这涉及三个表,但是供应商本身信息分多个维度和区域。包括供应商基本信息,供应商会计区域属性,供应商采购区域属性,接收区域属性,供应商付款和银行账户区域属性。
供应商地址薄维护分两步进行,首先是地址信息,然后是地点信息,对应地址层不分OU,在为地址层创建地点的时候将地点对应到具体的OU。对应到PO_VENROD_SITES表的ORD_ID字段。
在供应商地点表会维护FOB信息。FOB是FREE ON BOARD三个单词第一个字母的大写,中文意思为装运港船上交货,指定具体装运港名。适用运输方式:海运和内河运输。关键点:风险划分点,交货点,费用划分点均在装运港买方指定的轮船舷(实际操作中为装到船舱内)。
- 接收:在目标组织收到货物之前,货物所有权属于发运组织。
- 发运:在起始组织发运货物(以及货物还在途中)时,货物所有权属于目标组织
供应商地点可以管理支付编码信息。根据说明,支付组应该就是在做付款批的时候使用的,跟优先级一个道理。做应付发票的时候,选择支付组,付款批的时候可以用支付组这个参数来只给所选择的支付组进行付款。
比如,一个发票批里有A,B两张发票,A发票是“员工支付组”,B发票是“供应商支付组”付款批的时候,选择相应的发票批,然后支付组选择“员工支付组”那么该付款批就只能选择到A这张发票了。如果去掉这个参数的话,A,B的发票是都可以选择到的。
在供应商维护,控制里面可以维护发票匹配选型,具体的匹配规则。也可以选择暂挂不匹配发票。
Oracle-ERP物料
核心表:inv.mtl_system_items
物料第一次定义都是定义主组织物料,其它库存组织要使用必须进行库存组织分配,可以看到在表里面segment1编码字段由于organization_id不同会存在多条记录,每进行一次库存组织分配会增加一条记录。在进行物料定义的时候首先是基础信息,包括:
- 编码:segment1
- 描述:description
- 单位:unit_of_issue 字典表在inv.mtl_units_of_measure
- 状态:有效和无效两种状态
- 物料类型:item_type
- 项目类型(item type)
在这里需要先解释item类型和item模板。item类型是具有相同基本初始属性定义的一类item的总称。它是对公司众多item进行分类管理的一种方法。item模板是item定义时的一个参照体,我们可以使用item模板对同一item类型的item快速定义其相关初始属性。也就是说定义物料的时候可以选择物料的类型,类型会对应到相应的模板自动初始化物料定义相关属性。
物料主要信息定义完成后可以对物料进行组织分配,分配到各个库存组织上,必须进行组织分配后在相关的库存组织才能够使用该物料。分配后的组织属性可以看到有些主组织属性是不能修改的,有些属性可以进行修改。物料维护界面除了物料主要属性定义外,还包括了库存,物料清单BOM,资产管理,成本计算,采购,接收,物理属性,总计划,MPS/MRP计划,提前期,WIP,订单多个维度的属性信息。
分类集和分类
Category sets may be used as a means to develop custom lists of items on which to report and sort. You can also create other category sets such as John's Priority or Jane's Priority, with categories like high, medium, and low。分类集是按不同用途分的大类,例如有按财务管理的类,有按产品属性分的类,等等。而分类是在分类集下的分类,例如财务管理的类型可分几类:制成品,购买品;产品属性的类型又可分几类:金属件,塑料件,晶体件,等等。一个item可以分配给多个分类集。
提前期
系统中的物料有“采购件”、“制造件”两种类型,制造件的提前期相对复杂。在系统的BOM模块中可以计算制造件的提前期。而采购件的提前期只有手工录入。即使有工艺路线,也不会计算提前期。任何何采购件的提前期都会考虑工作日历。只在工作日考虑采购提前期,及假设休息日没有任何采购相关的业务。
采购件的提前期计算逻辑如下(1+2+3):
1.过账提前期/后加工提前期/Postprocessing Leadtime(从接收到入库的时间)
2.处理时间/加工中提前期/Processing Leadtime (供应商处理订单到交货给你的时间)
3.预提前期/预加工提前期/Preprocessing Leadtime (采购订单完成前需要的时间)
总计划(general planning)
库存计划方法就是通过设置上下限存货量来控制库存的一种库存管理方法,即当库存低于下限(最小值)时,下达采购计划,补充到库存上限(最大值)。
- Inventory Planning Method: Min-Max
- Min-Max Quantity: Mininum(最小值)Maxinum(最大值)
- Order Quantity(订单量): Mininum(最小值)Maxinum(最大值)
- Fixed lot Multiplier(固定批量)
- Make Or Buy(制造件或采购件):若为采购件选择Buy,若为制造件选择Make
- Source(来源,一般指补货来源)
- Source Type(补货来源):若为采购件,此处选择Suppplier(供应商)
物料表详细字段说明参考
- ORGANIZATION_ID NUMBER 组织代码
- INVENTORY_ITEM_ID NUMBER 项目内码
- SEGMENT1 VARCHAR2(40) 项目编码(外码)
- UNIT_OF_ISSUE 单位
- DESCRIPTION 项目说明
- ALLOWED_UNITS_LOOKUP_CODE 可否单位换算
- INVENTORY_ITEM_STATUS_CODE 项目状态
- ITEM_TYPE 项目类型
- PRIMARY_UNIT_OF_MEASURE 基本度量单位
- BASE_ITEM_ID 基础代码
- BOM_ENABLED_FLAG BOM使能标志(项目能否有清单)(Y/N)
- BOM_ITEM_TYPE BOM项目类型
- ENGINEERING_ECN_CODE 工程更改号
- ENGINEERING_ITEM_ID 工程项目代码
- ENG_ITEM_FLAG 是否是工程项目
- COSTING_ENABLED_FLAG 成本始能标志(有无成本)
- COST_OF_SALES_ACCOUNT 货物销售帐目
- DEFAULT_INCLUDE_IN_ROLLUP_FLAG 是否可为缺省
- INVENTORY_ASSET_FLAG 是否是库存资产
- STD_LOT_SIZE 标准批量规格
- ALLOW_ITEM_DESC_UPDATE_FLAG 是否可更新项目说明
- ASSET_CATEGORY_ID 资产类别
- BUYER_ID 采购员代码
- ENCUMBRANCE_ACCOUNT 无效账目
- EXPENSE_ACCOUNT 费用账户
- HAZARD_CLASS_ID 风险类代码
- LIST_PRICE_PER_UNIT 单位定价
- MARKET_PRICE 市价
- OUTSIDE_OPERATION_FLAG 外部操作项目
- OUTSIDE_OPERATION_UOM_TYPE 外部操作单位类型
- PRICE_TOLERANCE_PERCENT 允许价格偏差百分比
- PURCHASING_ENABLED_FLAG 是否可采购
- PURCHASING_ITEM_FLAG 采购项目
- ROUNDING_FACTOR A 取舍因子
- TAXABLE_FLAG 税收项目
- UNIT_OF_ISSUE 单位
- ALLOW_EXPRESS_DELIVERY_FLAG A 可以快递项目
- ALLOW_SUBSTITUTE_RECEIPTS_FLAG 收据是否可以替换
- DAYS_EARLY_RECEIPT_ALLOWED 可以提前天数
- DAYS_LATE_RECEIPT_ALLOWED 可以推迟天数
- ENFORCE_SHIP_TO_LOCATION_CODE 目的地
- INVOICE_CLOSE_TOLERANCE 发票结束偏差
- QTY_RCV_EXCEPTION_CODE 例外接收数量代码
- QTY_RCV_TOLERANCE 例外接收允许量
- RECEIPT_REQUIRED_FLAG A 是否必须收据
- RECEIVE_CLOSE_TOLERANCE A 接收结束允许天数
- RECEIVING_ROUTING_ID 接收行程安排编码
- AUTO_SERIAL_ALPHA_PREFIX Starting Serial Prefix
- CYCLE_COUNT_ENABLED_FLAG 能否循环计算
- INVENTORY_ITEM_FLAG 是否为库存项目
- LOCATION_CONTROL_CODE 采购点控制代码
- LOT_CONTROL_CODE 是否有批量控制
- MTL_TRANSACTIONS_ENABLED_FLAG 可否交易
- POSITIVE_MEASUREMENT_ERROR Pos Measurement Error
- RESERVABLE_TYPE 是否要预留
- RESTRICT_LOCATORS_CODE 是否限制定位
- REVISION_QTY_CONTROL_CODE 是否受修订版本控制
- SERIAL_NUMBER_CONTROL_CODE 是否受系列号控制
- SHELF_LIFE_CODE 有无存储期限控制
- SHELF_LIFE_DAYS 存储期天数
- START_AUTO_LOT_NUMBER 开始批量
- START_AUTO_SERIAL_NUMBER 开始系列号
- STOCK_ENABLED_FLAG 能否库存
- UNIT_VOLUME 体积
- UNIT_WEIGHT 重量
- VOLUME_UOM_CODE 体积度量单位
- WEIGHT_UOM_CODE 重量度量单位
- CARRYING_COST 运输费用百分比
- FIXED_DAYS_SUPPLY 固定提前期
- FIXED_LOT_MULTIPLIER 固定批量大小
- FIXED_ORDER_QUANTITY 固定订单数
- INVENTORY_PLANNING_CODE 库存计划方法
- MAXIMUM_ORDER_QUANTITY 最大定单数
- MAX_MINMAX_QUANTITY Min-Max Maximum Quantity
- MINIMUM_ORDER_QUANTITY 最小定单数
- MIN_MINMAX_QUANTITY Min-Max Minimum Quantity
- MRP_SAFETY_STOCK_CODE 安全库存
- MRP_SAFETY_STOCK_PERCENT 安全库存百分比
- ORDER_COST 订单费用
- PLANNER_CODE 计划员属性
- SAFETY_STOCK_BUCKET_DAYS 安全库存天数
- SOURCE_ORGANIZATION_ID 来源组织代码
- SOURCE_SUBINVENTORY 来源子库存
- SOURCE_TYPE 补充来源类型
- ACCEPTABLE_EARLY_DAYS 接收提前天数
- AUTO_REDUCE_MPS 自动冲减MPS
- DEMAND_TIME_FENCE_CODE 需求时间栏
- DEMAND_TIME_FENCE_DAYS 需求时间栏天数
- MRP_CALCULATE_ATP_FLAG 是否有ATP
- MRP_PLANNING_CODE 计划方法
- OVERRUN_PERCENTAGE 超差百分比
- PLANNING_MAKE_BUY_CODE 制造或购买
- PLANNING_TIME_FENCE_CODE 计划时间栏
- PLANNING_TIME_FENCE_DAYS 计划时间栏天数
- REPETITIVE_PLANNING_FLAG 是否是重复计划
- SHRINKAGE_RATE 收缩比率
- CUMULATIVE_TOTAL_LEAD_TIME 累积总体提前期
- CUM_MANUFACTURING_LEAD_TIME 制造提前期
- FULL_LEAD_TIME 处理提前期
- LEAD_TIME_LOT_SIZE 批量提前期
- PREPROCESSING_LEAD_TIME 预处理提前期
- VARIABLE_LEAD_TIME 不定的提前期
- BUILD_IN_WIP_FLAG 是否在制
- WIP_SUPPLY_LOCATOR_ID 离散作业库存地点
- WIP_SUPPLY_TYPE 离散作业供货类型
- ATP_COMPONENTS_FLAG 是否有ATP组成部件
- ATP_FLAG 是否为ATP项目
- ATP_RULE_ID ATP规则
- COLLATERAL_FLAG 是否为附属项目
- CUSTOMER_ORDER_FLAG 是否为定单项目
- DEFAULT_SHIPPING_ORG 运输组织代码
- INTERNAL_ORDER_ENABLED_FLAG 是否可以是内部定单
- INTERNAL_ORDER_FLAG 是否为内部定单
- PICKING_RULE_ID 库存规则
- PICK_COMPONENTS_FLAG 是否为可选部件
- REPLENISH_TO_ORDER_FLAG 是否为定单装配
- RETURNABLE_FLAG 是否可退回
- RETURN_INSPECTION_REQUIREMENT RMA Inspection Status
- SHIPPABLE_ITEM_FLAG 是否为运输项目
- SHIP_MODEL_COMPLETE_FLAG 运送是否完成
- SO_TRANSACTIONS_FLAG 是否可交易
- ACCOUNTING_RULE_ID 会计规则
- INVOICEABLE_ITEM_FLAG 是否为需发票项目
- INVOICE_ENABLED_FLAG 是否具有发票
- INVOICING_RULE_ID 发票规则
- PAYMENT_TERMS_ID 付款期限
- SALES_ACCOUNT 销售帐目
- TAX_CODE 税收代码
- ATO_FORECAST_CONTROL 预测控制
- MUST_USE_APPROVED_VENDOR_FLAG 是否必须授权供应商
- UN_NUMBER_ID 货期
- ALLOW_UNORDERED_RECEIPTS_FLAG 是否为非定单收据
- INSPECTION_REQUIRED_FLAG 是否需检查
- RECEIPT_DAYS_EXCEPTION_CODE 接收天数例外代码
- RESTRICT_SUBINVENTORIES_CODE 的库存限制
- ACCEPTABLE_RATE_DECREASE 可接受减少率
- END_ASSEMBLY_PEGGING_FLAG 是否是最终装配
- PLANNING_EXCEPTION_SET 计划例外设置
- ROUNDING_CONTROL_TYPE 四舍五入控制
- FIXED_LEAD_TIME 固定提前期
- POSTPROCESSING_LEAD_TIME 后处理提前期
- WIP_SUPPLY_SUBINVENTORY 离散作业的库存
- CUSTOMER_ORDER_ENABLED_FLAG 是否是销售定单
- ACCEPTABLE_RATE_INCREASE 可接受的增加率
Oracle-ERP采购管理
采购管理核心流程
采购核心流程包括采购请购,采购订单,采购接收。而实际上企业的采购业务涉及到更多的流程,包括物料,供应商的认证和维护,采购寻源,招投标等一系列流程。
对于采购需要用到的供应商信息维护,物料信息的维护在前面已经有说明。物料和供应商是采购管理的基础数据,在物料和供应商都维护后,还可以进一步维护供应商和物料的对应关系信息,在ERP里面叫供应来源维护。供应来源维护包括物料批准的供应商列表,批准供应商列表会讲物料,供应商,供应商发运组织和地点等建立对应关系。
一个物料可以有多个合格供应商,那么可以进一步维护每个供应商的供货比例信息。那么在定义了供应来源规则和每个供应商的供货比例后,可以根据事先定义的百分比把计划订单采购分到不同供应商。这种场景一般在根据采购申请或MRP计划需求信息,自动生成采购订单的时候使用。从一个长周期时间段来看,每个供应商的供货量应该符合供货比例分配设置。
采购请购流程
请购单核心对象表
- 请购单头:po.po_requisition_headers_all
- 请购单明细:po.po_requisition_lines_all
- 请购单分配:po.po_req_distributions_all
请购单头没有太多重要信息,主要是请购单号,请购单类型,包括请购人,主要请购人和hr_employees表的员工进行关联。请购单明细则需要给出请购物料和版本,物料说明,请购的数量,需求日期,目标类型和组织,交货地点,建议的供应商等信息。请购单明细需要和物料表进行关联。请购单分配主要是拆分到具体的账户,还需要进一步了解。
采购请购完成后,对应到具体的采购实施策略,包括是公开招投标,邀标,独家指定等各种采购实施策略。在Oracle ERP系统里面采购请购完成后对应到询价,供应商报价,报价后洽谈最终确定供应商和物料。在进行正式采购前必须有在一系列线下流程完成供应商和物料基础数据的录入。
采购订单核心表
- 采购订单头:po.po_headers_all
- 采购订单明细:po.po_lines_all
- 采购订单发运行:po.po_line_locations_all
- 采购订单分配行:po_distributions_all
采购订单头主要包括采购订单号,采购类型,供应商,地点,采购员,订单描述等基础信息。将采购订单行拆分,在行拆分上可以确定具体向供应商采购的物料,物料的数量,单价,币种,汇率,交期等一系列信息。采购订单发运行拆分核心目的是同一张采购订单的同一种物料存在多个交货地点,不同交货地点在不同的日期交付的数量。而采购订单分配行是到不同项目的进一步拆分,使采购的实际物料信息和项目需求挂接上。
在采购订单发运行维护的时候,还需要维护后续发票匹配方式和规则,具体包括两单匹配,三单匹配等。通常的三单匹配则是采购订单,应付发票和采购接收的匹配。如果接收后不直接入库还需要送检,则可能涉及到四单匹配。
标准采购订单和一揽子采购协议
采购管理系统提供以下四种采购订单类型,常用的订单类型是标准采购订单与一揽子采购协议
标准采购订单:在创建采购订单时要求明确具体的物料或服务的详细资料(如价格、数量、交货日期和会计分配)用于进行一次性采购的订单类型。
计划采购订单:是一种长期协议,必须指定一个暂定交货计划以及要采购货物或服务的所有详细资料,根据需求进行发放计划采购订单以实际订购货物。
一揽子采购协议:是一种长期采购协议,已知这些物料或服务的详细资料但尚未明确具体的交货计划,在实际采购物料之前,用一揽子采购协议价格来指定物料的采购价格。
合同采购协议:与供应商就特定条款和条件达成一致但暂不指明要采购的物料和服务。在以后发放标准采购订单时再引用此合同。
一揽子采购协议有时候也叫框架协议,框架协议重点是仅确定物料和招标洽谈后的单价,而实际的交货计划则再后续确定,如果对应VMI供方库管理模式,可能方式还可能是已经建立了一揽子采购协议,并对物料建立了相应的供应商列表。对代管的物料进行补货,根据补货通知,在ERP系统建立标准的采购订单。
采购订单订单相关控制规则(待细化)
- 删除未批准单据或添加给先前已批单据的未批准行、发运和分配
- 通过完全或部分取消单据,终止与供应商的现有购货承约
- 通过最终关闭已完成的订单,指明不能或不允许对已完成的订单执行其它内部活动
- 冻结或撤销冻结单据,以控制是否允许修改单据
- 暂挂单据,以防止打印、接收、开票和审批单据,直至解除暂挂
- 固定采购订单,以防止 MRP在按固定日期创建的时间栏内建议重新计划提前、取消或新建计划采购订单
- 控制采购管理系统如何自动关闭单据以进行接收和开票活动
采购订单状态
在采购订单控制中,具体涉及到取消,最终关闭,冻结,取消冻结,固定,暂挂,接收以关闭,开票以关闭,关闭,删除各种采购订单状态。具体如下:
删除:对于未提交审批的单据,可以以在单据创建窗口直接删除整个单据、单据行、发运。对于已提交审批的单据,可以删除其中后来添加的未批准的行、发运和分配。删除后,订单所关联的申请会自动返回申请集,可以使用"自动创建单据"窗口,把这些未执行的申请重新分配给其它采购订单或发放。删除操作执行后,单据数据直接从系统中删除,无法再从相应界面与数据表中杳到。
取消:单据创建人可以通过完全或部分取消单据头、行、发运、分配,来终止或部分终止与供应商的现有合约关系。如果取消了采购订单实体,则不能接收或支付被取消的物料和服务,但可以支付取消前已接收的订单。另外,不能修改被取消的实体或其组件。如果某申请行已有关联的采购订单,则此行不能被取消。取消操作属不可撤消的操作,只有确保所有需要的活动均完成之后,才可以取消单据或其组件。单据被取消后,在单据汇总界面仍然显示相应数据,但单据不可访问。通过系统设置,采购员可以在取消订单的同时,选择是否同时取消采购申请,否则,申请会自动返回申请集。
例如:与某供应商订购了某物料A与B,随后因设计变更,不再需要物料B,这时可取消包含物料B的订单行。如果物料A订购数量为30件,而生产只需要0件,在接收0件并完成后续事务处理后,可以取消订单行,则剩下的0件就会取消,而已接收的0件仍然有效。
最终关闭:可以以通过最终关闭已完成的单据、行和发运,防止对单据的修改或执行活动。单据最终关闭后,无法在相应的录入表单窗口访问该单据,也不能对最终关闭的实体执行以下活动:接收、转移、检验、交货、更正接收数量、开票、向供应商退货或退回至接收。可以审批包括最终关闭实体的单据,但不能审批在题头层最终关闭的单据。可以打印最终关闭的单据。单据关闭后,与订单关联的申请不会自动返回申请集。单据最终关闭是Orace Purchasing系统的内部控制活动,不会影响与供应商的合同关系,即与供应商的合同关系依然有效。
最终关闭是不可撤消的活动,只有在确保所有需要的活动均已完成时,刁一能最终关闭单据或其组件,一般不建议执行此活动。
暂挂与发放暂挂:只有状态为"处理中"的单据可执行暂挂,单据暂挂可以在撤销审批单据的同时防止打印、接收、开票和进一步审批,直至解除暂挂。例如:在采购订单提交审批后,发现合同条款存在一定问题,在同供应商协商期间,可以先"暂挂"单据,直至问题解决后再执行"发放暂挂"。
冻结和未冻结:如果要防止再对采购订单进行任何修改或其它活动,可以冻结采购订单,冻结操作只能在题头和发放层执行。在冻结采购订单后,仍可以接收和支付已订购的货物。如果要防止接收或将发票与此采购订单匹配,则应取消或最终关闭采购订单。冻结操作属可逆操作,在控制单据界面执行"未冻结",可以撤消冻结单据。冻结订单不能在录入表单中被访问。
关闭、接收关闭、发票关闭:Oracle Purchasing可以根据系统中"采购选项"窗口中指定的控制选项(接收关闭允差、接收关闭点和开票结算允差),自动关闭接收及开票。一旦关闭指定行的所有发运,Oracle Purchasing将自动关闭该行;一旦关闭指定题头的所有行,Orace Purchasing将自动关闭单据。除系统的自动关闭外,还可以在单据控制界面手工将接收关闭或发票关闭,以控制在某期间内的订单接收及开票。例如:系统设置关闭允差为95%,如果订购了某物料00件,已接收了96件,则系统自动关闭此行的接收。如果供应商一批送来94件,采购员认为剩余的6件可以不再需要,可以人工在单据控制界面关闭接收,则此行不可再接收。进行"关闭"后,在单据控制界面可重新"打开"单据。
Oracle-ERP库存管理
库存核心业务
库存管理的核心是对货物本身的管理,是对货物的数量与相关属性的管理,目的是为销售与采购服务,确保合理的库存保有量,处理库存分类帐目与进出流水帐,以单据的形式基本涵盖仓库的各种进出库业务。
库存组织结构
组织是一种业务单位,例如:公司、工厂、仓库、分部和部门等,组织可以根据实际业务不同分成多种层次。
例如:法人实体,经营单位,库存组织等。库存组织是 建立在经营单位之下的,可以细分为不同的子库存。特别的是项目主组织,是专门为了统一定义库存物品而设立的,可以是一个虚拟的并不存在的组织,对应实际仓库。
子库存是从物料库存中分离出来的独特的物理或逻辑库存,如原材料、成品或不良品的独自存货位置,客户虚拟仓等,货位是存储物料的子库存内的实际区域, 例如:行、通道、存料箱或货架。组织中的所有物料均保留在子库存中,因此必须至少定义一个子库存。一个OU下可以有多个IO,一个IO下可以设置多个子 库,每个子库下可以设置多个货位。
ORACLE产品按照不同的组织层次分别进行安全性的控制。总帐按照帐套进行数据屏蔽,而销售/应收/采购/应付是典型的按照经营单位进行管理,库存/物料清单/车间则是按照库存组织分别管理。
库存组织用来屏蔽各类制造数据,Item/BOM/Routing等定义在库存组织上,WIP/MRP等跑在库存组织上;而库存事务处理则以子库存为中心,要么从某个子库存出,要么从某个子库存入;每个子库存可以启用货位,也可以不启用;如果启用了,则事务处理时必须选择货位。
在不同的库存内,子库代码可以重复;在不同的子库内,货位代码也可以重复。
也就是说,oracle仅仅是提供了这样的模型,至于如何和实际业务对用,就非常灵活了。比如:库存是个组织的概念,其比较“虚”,可指一个工厂或者独立的办事处、分公司这样的实体;而子库则通常代表一个真正的物理仓库,也可指仓库或者车间的一块区域,还可以是虚拟的;货位可用来代表仓库的某一处空间或者货架,也可指车间的一个块区域。
为了维护整个系item码和信息的统一,在库存组织中有个物料主组织的概念,该组织定义item的属性,并分配给以他为主组织的库存组织使用,相应的item的属性也分为主层控制和组织层控制,主层控制的属性只能在主组织改,组织层控制的属性可以在各个库存组织维护。Oracle强烈建议一个帐套下只有只有一个库存主组织,并且不要在库存主组织作任何事务处理。
库存事务处理
库存事务处理是库存业务的核心,是ERP库存模块数据和相关模块数据处理的源头,包括采购订单接收与返回,WIP发退料与完工入库,子库间转移,杂项事务,销售发货与RMA等。
- 事务处理是物品进、出库存或在仓库内或者组织间移动,即仓库的日常收发业务处理
- 事务处理会引起物品数量,位置或成本的变化
- 库存事务有多种,有系统提供的,也可由客户根据实际情况需要定义
- 每一种物品交易时系统会产生对应的财务记录
- 可以通过版本号、批号、系列号,货位来对有关项目进行跟踪/控制
- 物品的事务处理可以与相关的项目(Project)进行关联
事务处理反映业务信息,事务处理分配反映会计信息。事务处理分配以库存组织、过账批次为单位,以会计科目为核心汇总所有事务处理类型的会计信息,将借贷发生额导入总帐系统。成本模块的事务处理主要有接收、库存、WIP三大类,系统日记帐报表中的类型反映事务处理的大类。物料事务处理分配和WIP事务处理分配分别反映库存类和WIP类的会计信息,并按类别来源导入总帐系统。
事务处理类型,来源和对应的会计科目如下,其中事务类型=事务来源+事务动作。
采购接收
采购接收是库存与采购连接的一座桥梁,也是应付发票与采购单、库存接收匹配的一根纽带。
采购接收一般有三种方式,一种是供应商送货来直接入库;一种是供应商送货来先接收,接收后再安排入库;还有即是先接收,然后送检,质量检查通过后再入库。采购接收的来源主要包括采购订单接收,组织间转移的接收,销售退货的接收。
采购接收和库存事务处理相关表
- 采购接收头表:rcv_shipment_headers (接收单号,供应商,订单号)
- 采购接收行表:rcv_shipment_lines(物料信息,接收组织信息,接收子库,接收数量)
- 采购接收事务表:rcv_transactions(事务类型,订单分配行相关信息)
- 物料事务处理:inv.mtl_material_transactions(子库,事务类型,数量,事务处理时间)
- 库存现有量:inv.mtl_onhand_quantities
- 库存事务接口表:MTL_TRANSACTIONS_INTERFACE
- 采购接收接口表:rcv_transactions_interface
子库间转移
在子库存之间或同一子库存内的两个货位之间转移当前组织中的物料。可以将物料从资产子库存转移至费用子库存,或者将其从已跟踪子库存转移至未跟踪子库存。如果项目具有子库存限制列表,则物料只能在此列表中列出的子库存之间进行转移。
杂项事务
主要指非采购的接收、退回、非生产的领料、退料、非销售的发货、退货的其它直接从帐户上接收或发到账户上的库存收发事务。以下是系统中使用杂项处理的事务:实施库存系统时作为项目现有库存量的初始装入,部门领用,退料,调拨,盘点等。
帐户别名是为了便于库存管理人员准确处理杂项事务而定义的总帐帐户通俗的名称,帐户别名是一个键弹性域,每一个帐户别名都唯一对应了一个总帐帐户。
库存控制
库存控制包括货位控制,批次控制,序列号控制,版本控制。
货位控制可以使用货位来标识存储库存项目的实际区域。项目数量可以通过货位跟踪。项目也可以限制在特定货位范围内。实行货位控制便于控制储货位置和存储能力。可以为库存中的特定项目启用批次控制,批次号特别适用于有保质期控制的物料。对于批次控制下的项目,可以对转入库存的每次收货指定批号,此后在每次执行物料事务处理时您均可以参考相同的批次。版本控制则实际控制会喜欢到物料版本,以版本号来区分,通过查询可了解各版本的部品材料和半成品的数量,且必须输入版本号才能进行事务处理。
库存盘点
在ERP系统中,仓库数据的准确性直接影响到整个系统计划的运行。库存盘点是保证库存记录准确的必要手段,通过盘点可以查找出错的原因,调整系统与实际库存量的差异,及时维护库存数据的准确性。库存盘点包括实际盘点和周期性盘点,如每个月末进行库存盘点。
ABC分类是周期盘点的前提条件,将库存物料按一定的标准分成相应的等级,用于决定不同的物料在周期盘点时的盘点频率,可以根据库存价值,库存数量,使用频率等作为划分的标准。
周期盘点与实际盘点的区别在于周期盘点有计划性,其根据ABC分类结果,设定的周期盘点频率定期对物料进行盘点对库存控制和准确性要求更高。
Oracle-ERP财务管理
总账的账套包括会计期间,会计科目和本位币的定义。
会计期间(Accounting Period/Fiscal Period)又称会计分期,是指将企业川流不息的经营活动划分为若干个相等的区间,在连续反映的基础上,分期进行会计核算和编制会计报表,定期反映企业某一期间的经营活动和成果.会计期间一般有年度,半年度,季度,月度。会计科目是按照经济业务的内容和经济管理的要求,对会计要素的具体内容进行分类核算的科目,称为会计科目。
会计六大要素,资产,负债,所有者权益,收入,费用,利润。前三者反映反映财务状态,对应静态的资产负债表。后三者反映经营成果,如利润表和现金流表。
会计凭证:是记录经济业务、明确经济责任、按一定格式编制的据以登记会计账簿的书面证明。用来记载经济业务的发生,明确经济责任,作为记账根据的书面证明。有原始凭证和记账凭证。前者是在经济业务最初发生之时即行填制的原始书面证明,如销货发票、款项收据等。后者是以原始凭证为依据,作为记入账簿内各个分类帐户的书面证明,如收款凭证、付款凭证、转账凭证等。
记帐凭证的基础是借贷平衡。有借就有贷,而且必须平衡。销售商品来说,是销售收入->现金,因此借方是现金,贷方是销售收入。但是这个变化可能可能分为两步,即客户不是在销售完成后马上现金付款。因此产生了应收,即传递过程变化为了:销售收入->应收账款->现金。
- 第一阶段: 借方:应收账款 贷方:销售收入
- 第二阶段: 借方:现金 贷方:应收账款
第二阶段冲销第一阶段的结果即和销售完成后直接现金付款是一样的。对于采购来说过程刚好相反,是现金->采购成本,因此借方是采购,贷方是现金。如果考虑采购后不是直接付现金,则变化为两个阶段:
- 第一阶段: 借方:物资采购 贷方:应付货款
- 第二阶段: 借方:应付货款 贷方:现金
记账凭证按其适用的经济业务,分为专用记账凭证和通用记账凭证两类。专用记账凭证,是用来专门记录某一类经济业务的记账凭证。专用凭证按其所记录的经济业务是否与现金和银行存款的收付有无关系,又分为收款凭证、付款凭证和转账凭证三种。
收款凭证和付款凭证是用来记录货币收付业务的凭证既是登记现金日记账、 银行存款日记账、明细分类账及总分类账等账簿的依据,也是出纳人员收、付款项的依据。出纳人员不能依据现金、银行存款收付业务的原始凭证收付款项,必须根 据会计主管人员或指定人员审核批准的收款凭证和付款凭证收付款项,以加强对货币资金的管理,有效地监督货币资金的使用。
整个凭证流转过程和步骤可以描述为如下:
- 根据原始凭证或原始凭证汇总表填制记账凭证。
- 根据收付记账凭证登记现金日记账和银行存款日记账。
- 根据记账凭证登记明细分类账。
- 根据记账凭证汇总、编制科目汇总表
- 根据科目汇总表登记总账。
- 期末,根据总账和明细分类账编制资产负债表和利润表。
现金日记账(Cash Journal)是用来逐日反映库存现金的收入、付出及结余情况的特种日记账。它是由单位出纳人员根据审核无误的现金收、付款凭证和从银行提现的银付凭证逐笔进行登记的。为了确保账簿的安全、完整,现金日记账必须采用订本式账簿。
银行存款日记账专门用来记录银行存款收支业务的一种特种日记账。银行存款日记账必须采用订本式账簿,其账页格式一般采用“收入”(借方)、“支出”(贷方)和“余额”三 栏式。银行存款收入数额应根据有关的现金付款凭证登记。每日业务终了时,应计算、登记当日的银行存款收入合计数、银行存款支出合计数,能及账面结余额,以 便检查监督各项收入和支出款项,避免坐支现金的出现,并便于定期同银行送来的对账单核对。
注:银行日记账,银行存款日记账就是银行日记账,日记账分现金日记账和银行日记账。
ERP中的总账模块的凭证管理包括凭证录入,Oracle里面的GL就是录入日记账,凭证审核和凭证过账。这里录入的日记帐应该是记帐凭证?凭证过账就是系统将已录入的记账凭证根据其会计科目登记到相关的明细账薄中的过程。
经过过账的凭证以后将不再允许修改,只能采取补充凭证或红字冲销凭证的方式进行更正。凭证过账后可以将总账账簿里面的总账和明细分类帐就形成了。(应付,应收凭证过账形成了明细分类账,直接进行的现金日记账是否也要过账形成明细分类账?)。
再次解释日记账,分类账,过账关系如下:
日记账指按照经济业务发生时间的先后顺序作出分录并进行登记的账簿。在日记账里,每项经济业务一般都记一笔会计分录,这些分录的涉及的账户均在两个或两个 以上,其中有些账户的使用比较频繁,有的则记入次数不多。这样,要了解各会计要素具体内容的本期发生额和余额,要了解某一会计主体的 财务状况和经营成果,从日记账里所得到的资料就显得太分散了。于是就需要设置和使用分类账。分类账是对各项经济业务按照它所涉及的户进行分类登记的账簿, 每个账户一般在分类账里都设有独立的账页。分类账是根据日记账逐笔登记的,也就是说,在日记账中所登记的会计分录都必须按其应借、应贷的账户、金额和日期,分别转记到分类账的有关账户中去,这一转记工作便是过账。
Oracle 总帐模块和其他模块的关系是一种总帐和分类帐的关系,总帐记录并保存财务业务的会计余额信息,子模块记录并保存财务业务的明细信息。
他们的关系图如下:
以应付(Oracle Payables)模块和总帐模块关系为例:
公司可以利用应付模块记录保存和供应商往来的明细业务,当在应付模块中接收并录入一张供应商发票时,应付模块除了记录这张发票对应的供应商、发票日期、金额、编号和说明信息外,通过标准的转帐程序,应付模块将在总帐中产生以下的会计分录:
- 借:采购成本
- 贷:应付货款
同样地,录入一笔付款时,应付模块除了记录此付款地日期、银行帐户、付款供应商、核销地发票等信息外,还将在总帐中产生付款业务的会计信息:
- 借:应付款
- 贷:现金/银行
注意ERP里面的凭证分类如下:
可以看到采购发票应该是应付凭证,而付款单则是付款凭证。
采购来说整个过程可能是这样的,财务材料会计收到供应商开具的采购发票后录入到采购模块,采购模块可以将采购发票通过凭证传递的方式传递到AP应付模块,财务将传递过来的采购发票和真实发票进行核对,核对无误后形成应付凭证,凭证内容前面已讲过。在这个时候应付凭证已经完成。其次是供应商催款的时候,公司根据付款申请和付款计划安排对供应商进行付款,财务在AP模块录入付款单,即付款凭证,通过付款凭证核销原有的应付凭证。付款单录入完成后到出纳,出纳根据付款单进行付款,同时登记现金日记账和银行日记账。
对于采购付款来说,有个重要概念即三单匹配,即采购订单,采购接收单和采购发票的匹配。
匹配图如下,在这里是否可以理解为物料接收凭证为原始凭证,采购发票为应付凭证,付款单为付款凭证。对于所有和财务相关的业务操作,如库存事务处理,应付,应收,资产业务操作,都应该有凭证,这些凭证都需要导入到总账模块中形成日记账?
对于Oracle ERP来讲。总帐接口表用于存储从其他子模块或非 Oracle 系统中引入的凭证。例如,当从应收、应付等子模块向总帐传送凭证时,可以选择是否产生日记帐(即是否过帐)。如果选择否,系统先将凭证传送到总帐接口表,然后直接进行过帐。否则,只将凭证传送到总帐接口表。当在总帐中进行过帐操作时,会将所有停留在接口表中,而且还未过帐的凭证进行过帐。
欢迎关注@人月聊IT 分享SOA,微服务,DevOps平台规划和建设。