🚀 第35天:用多维表格“手搓”一个简易ERP(库存模块·批次现存量篇)
✨ 系列第35篇|从零开始搭建标准ERP架构
👣 接续第34天“现存量计算”,今天我们深入仓库细节——实现批次级库存管理
🔧 目标:在入库明细表中,按物料分组,实时显示每个批次的剩余库存
🔁 回顾:我们已经实现了什么?
在前几期中,我们逐步构建了:
BOM模块 → 定义产品结构
销售→计划→采购 → 业务流程闭环
入库模块 → 采购收货自动登记
出库模块 → 生产领料分批出库
库存模块 → 实现“总库存 = 入库 – 出库”
但这些只是汇总层面的库存。
现实中的仓库,尤其是对保质期、先进先出(FIFO)、批次追溯有要求的企业,必须能查看到:
✅ 每一批次的入库时间
✅ 每一批次的实收数量
✅ 每一批次的已出库数量
✅ 每一批次的当前剩余量
今天,我们就来实现这个功能!
✅ 步骤一:切换至【入库明细表】,创建新视图 —— “按代码”
💡 设计思路:
利用“分组视图”将相同物料编码的数据归类,便于后续统计与分析

✅ 操作路径:
进入【5.1 入库】→ 【入库明细表】
新建视图:按代码
设置分组条件:
A 物料编码→ 分组依据- 排序方式:
A -> Z
✅ 效果:
所有同编码物料自动归为一组
每组内按编号排序(即按入库先后顺序)
为“累计入库”提供基础
✅ 步骤二:添加统计字段 —— “累计入库”

A 物料编码 = 当前行物料编码
编号 ≤ 当前行编号 |
✅ 解读:
对同一物料编码下的记录,按编号从小到大累加
比如:A3-2 第一次入库100 → 累计100;第二次400 → 累计500;第三次200 → 累计700
实现“逐笔累计”的效果
⚠️ 注意:
必须使用“编号”作为排序依据,否则无法正确累计
若无编号字段,可改用“入库日期”或“创建时间”
✅ 步骤三:添加统计字段 —— “出库数量”

✅ 解读:
统计该物料总共出库了多少
不是按批次累计,而是全局汇总
用于计算“该批次还能剩多少”
❗ 重点提示:
这个字段不是“累计出库”,而是“总出库”
后续会通过公式判断“是否超发”
✅ 步骤四:添加公式字段 —— “现存量”

第1步:计算“到目前为止,该物料整体还剩多少”:[@累计入库] – [@出库数量]
但如果出库 > 入库(比如数据错误或超发),结果会是负数。→ 所以需要用 MAX(0, ...) 防止负数:
第2步:确保剩余量不为负:MAX(0, [@累计入库] – [@出库数量])
如果结果是 -50 → 变成 0;如果结果是 100 → 保持 100
✅ 得到:该物料当前真实可用总量(≥0)
第3步:判断本批次最多还能剩多少:MIN([@实收数量], 上一步结果)
因为 FIFO 原则:早入库的批次先被消耗完;
所以:
- 如果“整体还剩 100”,而本批次有 200 → 说明本批次只被消耗了一部分,最多剩 100
- 如果“整体还剩 300”,而本批次只有 200 → 说明本批次根本没动,剩 200
✅ MIN 的作用就是:本批次剩余量 = min(本批数量, 整体剩余量)
✅ 步骤五:创建新视图 —— “批次现存量明细表”
✅ 操作路径:
在【入库明细表】中新建视图:批次现存量明细表
设置筛选条件:
现存量 > 0
设置分组条件:
A 物料编码→ 分组- 排序:
A -> Z
✅ 效果:
只显示还有库存的批次
按物料分类展示
方便仓管员快速查找可用批次

🧩 最终效果演示

✅ 说明:
总出库600,累计入库600 → 全部出完
所有批次现存量均为0
✅ 另一案例:
总出库500,累计入库600 → 剩余100
第一笔400 → 全部出完 → 剩余0
第二笔200 → 剩余100 → 显示100
🌐 设计总结:如何做到“批次级库存”?
| 功能 | 实现方式 | 价值 |
| 分批入库 | 每条记录独立记录 | 支持批次追溯 |
| 累计入库 | 统计字段 + 编号排序 | 实现逐笔累计 |
| 总出库 | 统计字段 + 全局汇总 | 获取整体消耗 |
| 批次现存量 | 公式字段 + min/max判断 | 实现FIFO逻辑 |
| 视图展示 | 分组 + 筛选 | 快速查看可用批次 |
✅ 核心思想:
让每一批次都有“生命轨迹”
