news 2026/10/15 19:23:58

Craftplan库存管理指南:物料、批次、出入库流水与过敏原标记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Craftplan库存管理指南:物料、批次、出入库流水与过敏原标记

【免费下载链接】craftplan

Self-hosted software for managing artisanal D2C micro-businesses

项目地址:https://gitcode.com/gh_mirrors/cr/craftplan
点击查看免费下载

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):

  1. 打开采购单,选择Receive Stock
  2. 为每批货录入供应商批次号、数量、到期日;同一物料可拆分为多个批次
  3. Craftplan 自动生成内部批次号,同时保留包装上可见的供应商批次号
  4. 部分到货不会关闭采购单,剩余数量继续挂起等待后续收货

收货服务实现位于 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

项目地址:https://gitcode.com/gh_mirrors/cr/craftplan
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 19:23:10

基于Qt的TCP/UDP网络调试助手:原理、架构与实战避坑

简介:Qt 网络调试助手是一份面向嵌入式与上位机开发者的完整源码包。在旧版基础上对全部代码重写,整合 TCP 服务端、TCP 客户端、UDP 服务端、UDP 客户端四种模式,并实现十六进制与 ASCII 收发、定时器自动发送、界面配置持久化、常用发送数据…

作者头像 李华
网站建设 2026/10/15 19:20:29

让角色突然「漫画化」的 16 条咒语

当你让 AI 生成视频,最怕的是什么?不是画面不够精致,而是角色太 “端着”—— 站在那儿,什么都不表达。 本文要介绍的,是一套来自《MiniMax H3 视频提示词工程手册》的 漫画式演出效果核心词库 16 条短提示词&#xff…

作者头像 李华
网站建设 2026/10/15 19:16:07

分销商城小程序打造高效社交分销与营销增长平台

随着移动电商和社交营销的快速发展,传统商城获客成本不断增加,越来越多的企业开始布局分销商城小程序,通过社交分享、会员裂变、营销活动等方式,拓展销售渠道,实现客户资源与商品销量的双重增长。分销商城小程序定制开…

作者头像 李华
网站建设 2026/10/15 19:15:29

多智能体+世界模型:构建实时共享的数字协作空间

1. 这不是又一个“AI聊天框”,而是一整座可进入的数字城市最近刷到 Odyssey 发布 Agora-2 的消息,不少朋友第一反应是:“哦,又一个大模型?”——这恰恰说明我们对“世界模型”这个词的理解还卡在表层。Agora-2 的核心突…

作者头像 李华
网站建设 2026/10/15 19:14:41

TSN 与 PROFINET、EtherCAT 是什么关系?从网络分层理解工业通信技术

在工业网络技术讨论中,经常会出现一个问题:既然 TSN 能够提供确定性通信能力,为什么还需要 PROFINET、EtherCAT 等工业以太网技术?理解这个问题,关键在于区分网络技术机制与工业通信协议。1. 先看技术定位技术核心定位…

作者头像 李华
网站建设 2026/10/15 19:14:21

力扣100题——1.两数之和

1.题目:两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意…

作者头像 李华