【免费下载链接】craftplan
Self-hosted software for managing artisanal D2C micro-businesses
Craftplan 是一款可自托管的开源 ERP 系统,专为小型手工/食品生产类 D2C 微企业设计。它的库存管理(Inventory)模块覆盖了物料主数据、批次(Lot)追溯、出入库流水(Movements)、过敏原标记、营养成分追踪以及需求预测与补货规划。本指南用 6 个部分带你从零理解这套库存管理流程,即使没有 ERP 经验也能快速上手。
🎯 为什么小批量生产需要专门做库存管理?
手工烘焙、精酿饮品、手工皂这类小批量、按单生产(made-to-order)的业务有几个特殊需求:
- 批次追溯:某批原料出问题,要能立刻找到它进了哪些成品、发给了哪些客户
- 效期管理:原料有到期日,生产时要优先消耗快过期的批次(FIFO/FEFO)
- 过敏原合规:食品标签必须准确标注过敏原,漏标一个坚果就是事故
Craftplan 把这三件事做成了库存模块的一等公民,而不是通用 ERP 的附加功能。整个模块位于 lib/craftplan/inventory/ 目录,官方说明见 docs/src/pages/docs/inventory.md。
1️⃣ 物料(Materials):一切库存数据的地基
进入Manage → Inventory → Materials即可管理所有原料。每个物料(Material)记录包含以下字段:
| 字段 | 说明 |
|---|---|
| 名称 / SKU / 计量单位 | 物料基础信息 |
| Buy price(采购价) | 用于 BOM 成本自动计算 |
| 最小/最大库存 | 触发补货提醒的安全水位 |
| 过敏原标记 | 通过 BOM 自动汇总到成品 |
| 营养成分 | 按单位定义,自动算入产品营养标签 |
物料的定义逻辑在 lib/craftplan/inventory/material.ex 中,包括名称、SKU、单位、价格、最小/最大库存等属性。
自制半成品也算"物料"
如果你有多个产品共用的自制配料(比如面粉预拌粉、糖浆),Craftplan 支持"中间生产"(Intermediate Production):先把配方定义成可编辑的投入物料表,生产完成后实际产出进入库存,供多个成品消耗。
每个完成的半成品批次都会保存实际产出量、实际投料、批次成本与配方版本历史,详情见 docs/src/pages/docs/intermediates.md。
2️⃣ 批次(Lots):把库存精确到"哪一批货"
物料库存按**批次(Lot)**组织,这是追溯能力的核心。每个批次跟踪:
- 现存数量(
current_stock) - 供应商、供应商批次号(
supplier_lot_code)与采购单引用 - 到期日(
expiry_date)与收货日期 - 单价成本(
unit_cost) - 状态:
available(可用)、on hold(暂停)、rejected(拒收)
💡关键点:生产消耗时,Craftplan 只从
available状态的可用批次中扣减,并采用 FIFO/FEFO 自动选批;被"暂停"的批次会立刻被排除出自动选择,这正是召回场景的救命功能。
批次的完整定义见 lib/craftplan/inventory/lot.ex。
收货如何生成批次?
追溯链从采购收货开始(docs/src/pages/docs/purchasing.md):
- 打开采购单,选择Receive Stock
- 为每批货录入供应商批次号、数量、到期日;同一物料可拆分为多个批次
- Craftplan 自动生成内部批次号,同时保留包装上可见的供应商批次号
- 部分到货不会关闭采购单,剩余数量继续挂起等待后续收货
收货服务实现位于 lib/craftplan/inventory/receiving.ex,收货细节在收货那一刻被"冻结"(供应商、采购单、数量、效期),即使以后修改目录数据,历史链条依然完整。
3️⃣ 出入库流水(Movements):每一克物料的去向都留痕
任何库存变化都会生成一条**流水(Movement)**记录,包含数量、原因、发生时间,并关联到物料和具体批次:
| 流水类型 | 触发场景 |
|---|---|
| Receive(入库) | 采购单收货或手动入库调整 |
| Consume(消耗) | 生产批次完成时自动扣减原料 |
| Adjust(调整) | 人工更正,如损耗、盘点差异 |
手动调整库存走的是 lib/craftplan/inventory/movement.ex 中的adjust_stock动作,可填写原因(reason)便于日后审计。流水还能导出为 CSV(表头含 quantity、reason、occurred_at、material_name、lot_number),导出逻辑见 lib/craftplan/csv/exporters/movements.ex。
这样每个物料都拥有完整的审计轨迹:何时入库、多少量、进了哪批、被哪个生产批次消耗掉。
4️⃣ 过敏原与营养成分标记:从原料自动传递到成品
这是食品类业务最关心的合规功能:
- 过敏原:在物料上勾选过敏原(如麸质、乳制品、坚果),标记会沿 BOM(物料清单)自动向上传递,成品页面直接显示聚合后的过敏原信息,无需人工维护
- 营养成分:为每个物料按单位定义热量、蛋白质、脂肪、碳水等数值,BOM 引用该物料后,产品的营养成分按配料用量自动计算
过敏原的勾选保存表单组件在 lib/craftplan_web/live/manage/inventory_live/form_component_allergens.ex,生产完成后打印的批次标签(batch label)也会冻结当时的过敏原与营养数据,保证标签与实际生产一致。
5️⃣ 需求预测与补货规划:提前发现缺料
库存模块不止管"现有多少",还能算"未来还够不够":
- 扫描已确认订单及其交付日期
- 按产品 BOM 计算所需物料数量
- 与当前库存对比,高亮短缺项,让你在断料前就创建采购单
- 已在途的采购单会计入可用量,避免重复下单
预测引擎位于 lib/craftplan/inventory_forecasting.ex;配套的补货计划器(Reorder Planner)还能调整服务水平(90%~99%)与预测周期(7/14/28 天)来查看安全库存与补货点,界面实现见 lib/craftplan_web/live/manage/inventory_live/reorder.ex。
6️⃣ 追溯与召回:一次点击理清来龙去脉
进入Manage → Production → Traceability(Trace Center),三种追溯方向覆盖绝大多数场景:
| 方向 | 起点 | 回答的问题 |
|---|---|---|
| 正向(Forward) | 供应商/内部批次号 | 这批料进了哪些成品,发给了哪些客户? |
| 反向(Backward) | 成品批次号 | 这个批次用到了哪些原料批、哪家供应商? |
| 召回(Recall) | 任一可疑批次 | 影响了哪些库存、订单、客户,下一步该做什么? |
召回模式下,一键Place lot on hold即可把问题批次暂停(自动选批立即排除它),再按清单隔离剩余库存、联系受影响客户、导出 CSV 留档。完整工作流见 docs/src/pages/docs/traceability.md。
📌 小结
Craftplan 的库存管理围绕一条主线展开:物料定义 → 收货生成批次 → 生产消耗扣减 → 流水全程留痕 → 预测补货兜底 → 追溯召回兜底。
- 想快速建物料:Manage → Inventory → Materials
- 想追一笔料去哪了:Manage → Production → Traceability
- 想了解源码结构:核心域在 lib/craftplan/inventory/,页面交互在 lib/craftplan_web/live/manage/inventory_live/
- 官方完整文档:docs/src/pages/docs/inventory.md
对按单生产的小型手作企业来说,这套"批次 + 流水 + 过敏原"的组合拳,用最低的管理成本换来了合规所需的全链路可追溯能力。
【免费下载链接】craftplan
Self-hosted software for managing artisanal D2C micro-businesses
相关推荐
Craftplan生产批次如何自动消耗物料:FIFO与成本快照的完整工作流
Craftplan生产批次如何自动消耗物料:FIFO与成本快照的完整工作流 Craftplan 是一款自托管的面向手工业 D2C 微企业的生产管理软件。在 Cr
Craftplan 采购工作流:从供应商管理到采购单收货与批次录入
Craftplan 采购工作流:从供应商管理到采购单收货与批次录入 Craftplan 是一款面向手工艺 D2C 小微业务的自托管管理软件,其 Purchasi
Prometheus Operator监控物流仓库:库存水平与订单处理
Prometheus Operator监控物流仓库:库存水平与订单处理 你是否还在为物流仓库的库存积压与订单延迟问题烦恼?本文将带你通过Prometheus O
云原生可观测性
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考