第48天:用多维表格“手搓”一个简易ERP(欠料齐套计算篇)
古哥计划
优秀创作者
🚀 第48天:用多维表格“手搓”一个简易ERP(欠料齐套计算篇)
✨ 系列第48篇|从零开始搭建标准ERP架构
👣 接续第47天“欠料分析自动触发”,今天我们进入生产执行的核心环节——物料齐套性计算
🔧 目标:实现“按开工顺序累计扣减库存,精准识别欠料项”
🎯 关键点:排序 → 累计需求 → 库存引用 → 扣减逻辑 → 欠料判断
💡 核心价值:让每一笔物料需求都“按时间流”动态计算
👣 接续第47天“欠料分析自动触发”,今天我们进入生产执行的核心环节——物料齐套性计算
🔧 目标:实现“按开工顺序累计扣减库存,精准识别欠料项”
🎯 关键点:排序 → 累计需求 → 库存引用 → 扣减逻辑 → 欠料判断
💡 核心价值:让每一笔物料需求都“按时间流”动态计算
🔍 回顾:我们已经做了什么?
在前一篇中,我们完成了:
建立了“欠料控制”与“欠料分析”两个核心表
实现了“点击按钮 → 自动生成该版本所有用料明细”
完成了“计划版本号绑定 + 自动化拉取”
现在,我们拥有了:
✅ 每个计划版本下所有的生产任务
✅ 每个任务对应的BOM用料清单
✅ 一条条“未发数量”记录
但还缺最后一步:
如何根据“开工时间先后”进行库存扣减?
如何避免同一物料被重复扣减?
如何判断某一天是否真正“缺料”?
如何避免同一物料被重复扣减?
如何判断某一天是否真正“缺料”?
这就是本篇要解决的问题:建立“时间序列+累计扣减”的欠料计算模型。
✅ 步骤一:排序 —— 让数据按“时间流”排列
✅ 双条件排序配置:
主排序字段:A 子件编码 → 升序(A→Z)
次排序字段:开工时间 → 升序(早→晚)
✅ 目的:
先把相同子件归类在一起
再按开工时间排序,确保先生产的任务优先消耗库存
先把相同子件归类在一起
再按开工时间排序,确保先生产的任务优先消耗库存
✅ 示例效果:
表格
表格
✅ 这样才能保证:
第一次使用A1时,消耗100
第二次再消耗200
第三次继续累加……
不会因为乱序导致“提前扣完库存”
第一次使用A1时,消耗100
第二次再消耗200
第三次继续累加……
不会因为乱序导致“提前扣完库存”
✅ 步骤二:新增统计字段 —— 累计需求
✅ 字段名称:累计需求
类型:统计
统计来源:欠料分析 表
统计字段:123 未发数量
统计方式:求和
统计条件:
A 子件编码 = 当前行
123 序号 ≤ 当前行
✅ 效果:
对每个子件,按开工时间顺序累计其“未发数量”
实现“逐批消耗”逻辑
对每个子件,按开工时间顺序累计其“未发数量”
实现“逐批消耗”逻辑
✅ 步骤三:引用库存数据 —— 实时获取可用量
✅ 新增统计字段:现存量
类型:统计
来源表:现存量明细表
统计字段:Σ 现存量
统计条件:
物料编码 = A 子件编码
✅ 注意:
必须是“实时引用”,不能手动填
否则无法反映真实库存变化
必须是“实时引用”,不能手动填
否则无法反映真实库存变化
✅ 步骤四:计算“累计未发” —— 动态扣减逻辑
✅ 新增公式字段:累计未发
✅ 解读:
用总库存减去已累计消耗的需求
得到当前剩余可支持的产量
若结果为负数,则表示“不够用了”
用总库存减去已累计消耗的需求
得到当前剩余可支持的产量
若结果为负数,则表示“不够用了”
⚠️ 注意:
“累计未发”是全局视角下的剩余能力
它决定了后续能否继续排产
“累计未发”是全局视角下的剩余能力
它决定了后续能否继续排产
✅ 步骤五:计算“单日欠料” —— 精准判断缺料
✅ 新增公式字段:单日欠料
✅ 分步解读:
条件 | 结果 |
累计未发 > 0 | 说明库存足够 → 返回 0(不欠料) |
否则(库存不足) | 判断缺口大小 |
如果 ` | 累计未发 |
否则 | 说明这个订单完全缺料 → 返回 -未发数量 |
✅ 重点:
“单日欠料”代表的是当前这一条记录是否缺料
负值表示“缺”,正值或0表示“不缺”
“单日欠料”代表的是当前这一条记录是否缺料
负值表示“缺”,正值或0表示“不缺”
✅ 步骤六:定义“欠料状态” —— 最终结论输出
✅ 新增公式字段:欠料定义
✅ 简洁明了:
小于0 → 缺料
大于等于0 → 齐套
小于0 → 缺料
大于等于0 → 齐套
📊 实际效果演示(以图为例)
✅ 解读:
前四条任务都能满足
第五条任务因库存不足,出现“欠料”
且系统能准确识别出“缺100个”
前四条任务都能满足
第五条任务因库存不足,出现“欠料”
且系统能准确识别出“缺100个”