当前位置: 首页 > backend >正文

ERP知识手册【第三弹:INV(库存管理)】

“库存管理”简称为“INV”,主要源自英文单词 Inventory 的缩写。

  • Inventory 是英文中“库存”、“存货”的意思,指企业持有的用于生产、销售或消耗的物料、商品等。
  • 在企业管理系统(ERP、WMS等)中,涉及库存管理的模块或表通常会用“INV”作为前缀或简称,方便识别和区分。
  • 例如:
    • INV_ITEM 表示库存物料表
    • INV_STOCK 表示库存数量表
    • INV_TRANSACTION 表示库存交易流水表

一、库存组织架构详解(从宏观到微观)

1.1 核心概念

  • 组织:企业的业务单元(案例:某手机制造公司)

    • 总公司(北京)→ 华东工厂 → 上海仓库 → 质检部

  • 子库存:同一组织内的逻辑/物理分区(案例:上海仓库内部)

    • 原材料仓 | 成品仓 | 不良品区 | 京东虚拟仓(电商专用)

  • 货位:子库存内的具体存储位置(案例:原材料仓内)

    • A区-3排-5货架-2层(可存放1000个手机屏幕)

1.2 库存组织架构

系统
│
├── 组织A
│   ├── 子库A1
│   │   ├── 货位A1-1
│   │   ├── 货位A1-2
│   │   └── 货位A1-n
│   ├── 子库A2
│   │   ├── 货位A2-1
│   │   └── 货位A2-m
│   └── 子库A3
│       └── 货位A3-1
│
├── 组织B
│   ├── 子库B1
│   │   ├── 货位B1-1
│   │   └── 货位B1-2
│   └── 子库B2
│       └── 货位B2-1
│
└── 组织C└── 子库C1├── 货位C1-1├── 货位C1-2└── 货位C1-3
  •         系统内允许有多个组织
  •         每个组织允许有多个子库
  •         每个子库允许有多个货位

1.3 架构示意图 ——案例

组织树
├─ 总公司(北京)
│  └─ 华东工厂
│     ├─ 生产车间
│     ├─ 上海仓库(组织)
│     │  ├─ 原材料仓(子库存)
│     │  │  ├─ A区货架(货位)
│     │  │  └─ B区货架
│     │  └─ 成品仓(子库存)
│     └─ 苏州分仓

二、库存项目核心要点

       对应于实际中的物料在各个部门应用到的控制信息,系统中的库存项目使用项目属性来进行控制。每一种属性都是各功能模块的控制信息,都确定项目在相应的模块方面的功能属性。

  •         定义计量单位以用于项目定义、存放、订单、计划、交易、发运和计算
  •         在Oracle库存中定义的任何项目必须有一个主计量单位,执行任何库存事务的交易数量必须有单位
  •         Oracle库存使用基本计量单位来执行同一单位类别的单位之间的换算和不同类别之间的单位换算 

2.1 计量单位

  • 主计量单位:每个物料的必填属性(案例:手机电池)

    • 主单位:个 → 采购单位:箱(1箱=100个) → 换算自动完成

  • 单位换算:系统自动处理(案例:芯片采购)

    • 采购订单:盒(每盒50片) → 入库自动转为"片"存储

2.2 项目属性控制

# 示例:手机屏幕的项目属性设置

Item_Phone_Screen = {"采购属性": {"最小起订量": 500,"供应商": "京东方","采购单位": "片","采购周期": 15  # 天},"库存属性": {"批次控制": True,"保质期": "2年","库存单位": "片","库存状态": "可用"},"序列号控制": {"启用": True,"前缀": "PH-SCR-2023"},"版本控制": {"当前版本": "V2.1"},"服务属性": {"保修期": 365,  # 天"服务类型": "质保维修"},"订单分录属性": {"销售单位": "片","订单最小量": 100,"订单最大量": 10000},"车间属性": {"生产线": "屏幕组装线","工艺路线": "标准组装工艺","车间负责人": "李工"},"物料单属性": {"BOM版本": "V3.0","BOM状态": "有效","BOM类型": "组件"},"接收属性": {"接收地点": "深圳仓库收货区","检验要求": "入库前抽检","接收时间窗口": "工作日9:00-18:00"},"成本属性": {"标准成本": 120.00,  # 人民币"成本方法": "移动加权平均","成本中心": "电子制造成本中心"},"MRP/MPS": {"计划策略": "按库存补充","安全库存": 1000,"提前期": 20  # 天},"物理属性": {"重量": 0.05,  # 千克"体积": 0.0001,  # 立方米"包装规格": "每箱100片"},"计划属性": {"计划单位": "片","计划周期": 7,  # 天"计划类型": "周期计划"},"提前期编辑": {"采购提前期": 15,  # 天"生产提前期": 5,   # 天"运输提前期": 3    # 天},"发票属性": {"发票类型": "增值税专用发票","发票税率": 13,  # %"发票开具要求": "按月汇总开票"}
}

三、四大库存控制实战

3.1 货位控制(可视化案例)

| 货位编码  | 项目名称    | 当前库存 | 最大容量 |
|-----------|-------------|----------|----------|
| WH01-A1-2 | iPhone14后盖 | 950      | 1000     |
| WH02-B3-5 | 骁龙8 Gen2芯片 | 1200     | 1500     |

操作流程

  1. 入库时指定货位

  2. 出库时系统提示可用货位

  3. 超量时系统自动预警

特性:

  •         可以使用货位来表示存储库存项目的实际区域;
  •         项目数量可以通过货位追踪;
  •         项目也可以限制在特定货位范围内;
  •         实现货位控制便于控制储货位置和存储能力

3.2 批次控制(食品行业案例)

场景:牛奶生产日期管理

  • 批次号规则:YYYYMMDD-生产线号

  • 先进先出(FIFO)自动执行

  • 临期预警:到期前30天变黄提醒

特性:

  •         Oracle库存管理系统为库存事务处理提供了完整的批号支持;
  •         可以为库存中的特定项目启用批次控制,批次号特别适用于保质期控制的饮料;
  •         对于批次控制下的项目,可以对转入库存的每次收货指定批号,此后在每次执行物料事务处理时您均可以参考相同的批次;
  •         这可以对库存中的项目批次进行严格的控制。

3.3 序列号控制(汽车制造案例)

特斯拉电池管理

  1. 生产时生成唯一序列号:TSLA-BAT-230801-0001

  2. 全程追溯:

    • 生产工单 → 测试数据 → 安装车辆 → 售后维修记录

特性:

  •         Oracle库存管理系统为事务处理提供完整的序列号支持。
  •         可以为库存中特定项目启动序列号控制,序列号控制比批次号控制更加严格;
  •         对于在序列号控制下的项目,您可以将唯一序列号分配给每一个单位,然后再每次执行物料事务处理时参考相同的序列号;
  •         可以有效的控制库存中各个项目的每个单位,特别适用于控制大型设备。

3.4 版本控制(电子产品案例)

小米路由器迭代

版本追踪表
| 版本号 | 生产时间   | 变更内容          | 库存量 |
|--------|------------|-------------------|--------|
| V1.2   | 2023-01    | 新增USB接口       | 1500   |
| V1.3   | 2023-03    | 升级WiFi6协议     | 3200   |

特性:

  •         版本号是项目,物料清单和工序的一种特殊形式,可根据版本号跟踪项目数量;
  •         子库内同一规格,同一图号的部品材料和半成品中均造成有差异的可能有多批次,存放比较混乱,且难以区分其数量。
  •         以版本号来区分,通过查询可了解各版本的部品材料和半成品的数量,且必须输入版本号才能进行事务处理。
  •         Oracle库存管理系统与订单分录管理系统,采购管理系统和在制品管理系统一起为您提供了一整套维护库存控制的事务处理。
  •         允许控制从收到项目到向酷虎发运成品时的物料流。

四、库存事务处理全流程

4.1 采购订单接收与返回全流程(以汽车零部件为例)


案例:
某车企接收变速箱齿轮(物料号GC-2035)

  • 正常接收

    1. 输入PO号(PO采购模块)调取订单信息

    2. 扫描实物条码(批次:B230801)

    3. 分配货位:总装厂仓-A区-5排-3层

    4. 系统自动生成库存记录:GC-2035 | 数量500 | 批次B230801

  • 异常退货

    1. 发现20个齿轮有锈斑(质检单号QC-0821)

    2. 创建RMA退货单关联原PO

    3. 生成供应商扣款通知单(金额=20*单价+物流费)

4.2 WIP发退料全场景解析(手机制造案例)

在系统内车间发料的物料供应类型有两类,即推式物料和拉式物料,拉式物料又分为操作拉式和装配拉式两种,主要区别是在于工单发料是否为系统自动倒冲以及何时倒冲

  • 推式物料在进行工单发料时需要人工在系统内操作发料
  • 操作拉式物料在相应工步完成时由系统自动倒冲所需物料
  • 装配拉式物料在整个工单完成后由系统自动倒冲所需物料

三种发料模式对比:

控制类型适用场景系统操作示例倒冲时点
推式物料高价值核心部件摄像头模组人工扫码出库无自动倒冲
操作拉式产线消耗品手机螺丝工站完工时自动扣减每道工序完成时
装配拉式通用标准件包装盒在整机入库时统一扣除工单关闭时

实战场景:
某手机工厂生产订单MO-2308001(生产1000台旗舰机)

  1. 推式发料

    • 操作员在MES系统选择:

      • 物料:OLED屏幕(SN控制)

      • 数量:1000

      • 领用工序:SMT贴片

    • 系统记录每个序列号与工单绑定

  2. 拉式倒冲

    • 当组装线完成100台时:

      • 自动扣除:

        • 螺丝 400个(100台×4颗)

        • 胶水 200g(100台×2g)

4.3 子库间转移三大场景详解(含系统配置)

       在子库存之间或同一子库存内的两个货位之间转移当前组织中的物料。可以将物料从资产字库转移至费用子库存,或者将其从已跟踪子库存转移至未跟踪子库存,

        如果项目具有子库存限制列表,则物料只能在此列表中列出的子库存之间进行转移。

        主要子库存转移事务有以下几种:

  1. 原材料发放到外协厂家
  2. 内部部门之间的物料的领用
  3. 废品的转移
4.3.1 外协加工转移(带版本控制)

场景: 将铝合金外壳(版本V2.3)转移到外协厂电镀

(1)创建转移单TF-0821:

  • 来源:原材料仓-机加区

  • 目标:外协虚拟仓-鑫科电镀

  • 版本号:必须指定V2.3

(2).系统操作:

UPDATE 库存 SET 子库存 = '外协虚拟仓',状态 = '在途加工',所有权 = '代管物料'
WHERE 物料号 = 'AL-2023' AND 版本 = 'V2.3';
4.3.2 部门领用转移(费用化处理)

案例: 维修部领取5个轴承(物料号B-005)

创建杂项事务:

{“来源”:【MRO备件仓(资产类)】“目标”:【维修部子库(费用类)】“会计科目”:【借:维修费用 贷:库存资产】”系统影响“:【库存减少5个】}# 代码:
-- 将库存从“MRO备件仓(资产类)”转移到“维修部子库(费用类)”,并调整会计科目及库存数量
UPDATE 库存 SET子库存 = '维修部子库(费用类)',状态 = '在途加工',所有权 = '代管物料',数量 = 数量 - 5  -- 库存减少5个
WHERE子库存 = 'MRO备件仓(资产类)'AND 物料号 = 'AL-2023'AND 版本 = 'V2.3';

财务模块自动生成凭证

4.3.3  废品转移(质量冻结流程)

操作流程:

  1. 质量部门创建冻结批号QC-BLOCK-0821

  2. 转移路径:
    生产仓 → 不良品仓 → 报废仓

  3. 关键控制点:

    • 每个转移步骤需要质量审批

    • 进入报废仓后触发资产减值

1. 质量部门创建冻结批号

INSERT INTO 质量审批 (批号, 审批状态, 审批时间)
VALUES ('QC-BLOCK-0821', '待审批', NULL);

2. 生产仓 → 不良品仓(需质量审批通过)

-- 检查审批状态是否通过
DECLARE @approval_status VARCHAR(10);
SELECT @approval_status = 审批状态 FROM 质量审批 WHERE 批号 = 'QC-BLOCK-0821';IF @approval_status = '通过'
BEGINUPDATE 库存SET 仓库 = '不良品仓',状态 = '质量冻结'WHERE 批号 = 'QC-BLOCK-0821' AND 仓库 = '生产仓';
END
ELSE
BEGINRAISERROR('质量审批未通过,无法转移到不良品仓', 16, 1);
END

3. 不良品仓 → 报废仓(需质量审批通过,触发资产减值)

-- 再次检查审批状态
SELECT @approval_status = 审批状态 FROM 质量审批 WHERE 批号 = 'QC-BLOCK-0821';IF @approval_status = '通过'
BEGIN-- 转移库存UPDATE 库存SET 仓库 = '报废仓',状态 = '报废'WHERE 批号 = 'QC-BLOCK-0821' AND 仓库 = '不良品仓';-- 触发资产减值UPDATE 资产SET 资产状态 = '减值',资产价值 = 0WHERE 批号 = 'QC-BLOCK-0821';
END
ELSE
BEGINRAISERROR('质量审批未通过,无法转移到报废仓', 16, 1);
END

4.4 RMA逆向物流处理(含序列号追踪)

4.4.1 售后返品全流程(以服务器为例)

数据记录示例:

序列号原始状态当前状态维修记录
SRV-0821已售出维修中2023-08-21 更换主板
SRV-0821-RN/A已翻新2023-08-25 完成压力测试

4.5 特殊事务处理技巧

4.5.1 物料状态转换矩阵
原状态目标状态所需审批系统事务类型
正常库存质量冻结质量主管QA冻结事务
在途物料已接收仓库管理员采购接收更新
代管物料客户资产销售总监+财务总监所有权转移事务
4.5.2 库存事务黄金法则
  1. 三单匹配原则

    • 采购订单、送货单、入库单必须一致

  2. 双人操作原则

    • 关键事务需两人独立确认(如贵重物料转移)

  3. 追溯四要素

    • 物料号+批次号+序列号+版本号

4.6 杂项事务

本质:所有无法归类到采购/生产/销售的标准流程的库存异动
特点

  • 直接对接会计科目(不通过应收应付模块)

  • 需要人工指定异动原因

  • 通常需要附加审批流程

  • 直接影响库存估值

主要指非采购的接受,退回,非生产的领料,退料,非销售的发货,退货的,

其他直接从账户上接受或发到账户上的库存收发事务。

以下是系统中使用杂项处理的事务,还有案例讲解:

序号杂项事务名称事务解释案例说明
1初始库存装入在实施库存系统时,将项目现有的库存数量录入系统,作为库存的起始数据。新上线Oracle EBS库存模块时,将仓库中已有的1000个零件录入系统,确保系统库存与实际库存一致。
2部门领用非生产用途的物料从库存中领出,通常用于部门日常办公或维修等用途。维修部门领用10个螺丝用于设备维护,系统通过杂项事务减少库存数量。
3转类存储将库存物料从一种类别或仓库转移到另一种类别或仓库,调整库存结构。将仓库A中的50个原材料转移到仓库B,调整库存管理。
4退料将已领用或发出的物料退回库存,恢复库存数量。生产线多领了20个零件,退回仓库,库存数量相应增加。
5调换物料之间的交换或替换,通常涉及库存数量的调整。将仓库中不合格的零件调换为合格零件,库存数量做相应调整。
6盘点定期或不定期对库存进行实物清点,调整账面库存与实际库存的差异。月末盘点发现仓库实际库存比系统少5个,系统通过杂项事务调整库存数量。

五、库存盘点方法论

        在ERP系统中,仓库数据的准确性直接影响到整个系统计划的运行。

        库存盘点保证库存记录准确的必要手段,通过盘点可以查找出错的原因,调整系统与实际库存量的差异,及时维护库存数据的准确性。

Oracle库存管理系统提供多种盘点的方法:

  • 实际盘点
  • 周期盘点

5.1 ABC分类实战

  •         ABC分类是周期盘点的前提条件
  •         将库存物料按照一定的标准分成相应的等级,用于决定不同的物料在周期盘点时候的盘点频率。
  •         可以根据库存价值,库存数量,使用频率等作为划分的标准。

案例——格力空调零件分类

分类标准案例物料盘点频率
A类价值占比70%压缩机每周
B类价值占比20%铜管每月
C类价值占比10%螺丝每季度

5.2 周期盘点步骤

  •         周期盘点是一个计划的抽样盘点。
  •         周期盘点与实际盘点的区别在于周期盘点有计划性,其根据ABC分类结果,设定的周期盘点频率定期对物料进行盘点。
  •         对库存控制和准确性要求更高。

案例周期盘点表如下:

周期盘点计划表
| 日期     | 负责组 | 盘点区域   | 物料类型 | 使用工具       |
|----------|--------|------------|----------|----------------|
| 2023-08-05 | A组   | A区货架    | A类      | PDA扫码枪      |
| 2023-08-12 | B组   | 冷冻仓     | B类      | 电子温度记录仪 |

六、库存计划工具

  •         库存计划的目的是在保证生产的前提下,最大限度地降低库存水平。
  •         ERP系统中常用的库存计划工具有两种:最大-最小计划重订货点计划。
  •         两种方法都是再仓库存货处于各自定义的临界点时生成请购,保证库存水平。 

6.1 最大-最小计划(药品行业案例)

  • 最大库存(Max Stock):库存允许达到的最高数量,超过这个数量一般不再采购或生产,避免库存积压。
  • 最小库存(Min Stock):库存的安全下限,当库存低于这个值时,系统会触发补货预警或自动生成请购单,防止断货。
  • 当前库存(Current Stock):当前实际库存数量。

案例——参数设置

  • 最大库存:3000盒

  • 最小库存:500盒

  • 当前库存:480盒【低于最小库存】 → 系统自动生成请购单 2500 盒 =(自动请购量 = 最大库存 - 当前库存)

6.2 重订货点计划(超市案例)

可口可乐管理

  • 安全库存:200箱

  • 订货提前期:3天

  • 日均销量:50箱 → 重订货点=50×3+200=350箱


七、常见问题Q&A

Q1:如何选择批次控制还是序列号控制?

:参考决策树:

是否需要跟踪到单个物品? → 是 → 序列号控制(如服务器设备)→ 否 → 是否有保质期/批次特征? → 是 → 批次控制(如食品)→ 否 → 普通管理

Q2:盘点差异如何处理?

处理流程

  1. 差异分析(文档记录+现场拍照)

  2. 系统调整(需三级审批)

  3. 流程改进(修订SOP)


八、最佳实践Tips

  1. 条码设计规范:组织代码(2位)+子库代码(1位)+货位码(4位)+年月(4位)

    • 示例:BJ01A012308 → 北京1号仓A区01货架2023年8月入库

  2. 版本控制窍门:采用"主版本.次版本"格式

    • V2.3 → 2代表重大改进,3代表小优化

  3. 异常处理口诀

    • "三查三对":查货位、查批次、查版本;对数量、对单位、对状态


九、模拟练习(答案见末尾)

【情景】某笔记本工厂出现:

  • 原材料仓有1000个键盘(批次A2307)

  • 生产订单需要800个

  • 出库时发现批次A2307实际只有700个

请写出处理步骤:

答案:

  1. 冻结A2307批次库存

  2. 使用批次B2308补足100个缺口

  3. 启动盘点程序核查差异原因

  4. 更新系统数据并记录差异报告

  5. 修订库存预警阈值

http://www.xdnf.cn/news/6539.html

相关文章:

  • Windows软件插件-写mp3
  • 2021-10-25 C++三的倍数含五
  • 动态规划之数列
  • 前端缓存策略
  • 【数据结构】栈与队列
  • Redis6为什么引入了多线程?
  • 20、工业协议转换与数据采集中间件 (模拟) - /数据与物联网组件/protocol-converter-middleware
  • std::deque 底层实现结构
  • 老字号焕新案例:天猫代运营如何让传统品牌年轻化破圈
  • SEO双核驱动:关键词与长尾词优化
  • JAVA:多线程使用哈希表
  • Web前端入门:JavaScript 的应用领域
  • [数据结构]7. 堆-Heap
  • undefined reference to vtable for DeviceAllocator‘
  • 【补充笔记】修复“NameError: name ‘ZhNormalizer‘ is not defined”的直接方法
  • Python基础
  • 吴恩达机器学习笔记:特征与多项式回归
  • springboot AOP中,通过解析SpEL 表达式动态获取参数值
  • 第二十五天打卡
  • GUI图形化演示
  • 【测试】用例篇
  • 免疫浸润分析
  • 哲学物理:太极图和莫比乌斯环有什么关系?
  • 【QT 项目部署指南】使用 Inno Setup 打包 QT 程序为安装包(超详细图文教程)
  • Vue3的基础知识
  • 【skywalking】index“:“skywalking_metrics-all“},“status“:404}
  • Ansys Zemax | 在 MATLAB 或 Python 中使用 ZOS-API 进行光线追迹的批次处理
  • TASK02【Datawhale 组队学习】使用 LLM API 开发应用
  • javascript —— ! 和 !! 的区别与作用
  • 傻子学编程之——数据库如何性能优化