1 项目背景与目标
背景
- 供应商发货与门店收货脱节,到货数量、破损情况无法实时追溯
- 门店间调拨依赖线下沟通,缺乏系统锁单机制,易发生超卖
- 库存状态不透明,采购在途、调拨在途、残次品数量无法实时查看
- 套装商品销售与库存管理脱钩,核销时需人工拆解计算
- 现场二次销售(现货补单)已有系统支持
目标
- 实物库存精准管控:门店维度下,实时掌握可用库存、待提货锁定、采购在途、调拨在途、调拨锁定、残次品库存
- 以销定采闭环:销售订单驱动采购需求,供应商分批发货,门店按批次签收,差异自动生成补发单,破损入残次品库统一返厂
- 调拨流程规范化:调入方发起申请,自动锁定调出方库存,在途流转清晰,损失归属明确
- 现场销售灵活支撑:现货补单已有系统支持,一期聚焦采购和调拨流程
- 售后与返厂管理:已有系统已支持,不纳入一期开发
2 一期范围边界
| 模块 | 是否包含 | 备注 |
| 期初库存录入 | ✅ | 待定 |
| 以销定采(采购需求、采购单、发货单) | ✅ | |
| 门店入库(签收、差异签收、分批收货、补发单) | ✅ | |
| 销售出库(自提核销、套装解耦、出库单) | ✅ | |
| 现货补单 | 已有系统 | 现有系统已支持,不纳入一期开发 |
| 门店调拨(申请、锁库、出库、入库) | ✅ | |
| 售后管理(仅退款、退货入库、售后单查询) | 已有系统 | 现有系统已支持,不纳入一期开发 |
| 返厂管理(返厂单、供应商收货、财务审核打款) | 已有系统 | 现有系统已支持,不纳入一期开发 |
| 后台管理(发货/库存/调拨/售后/补单) | ✅ | |
| 一件代发 | ❌ | 二期 |
| 盘点管理 | ❌ | 二期 |
| 进销存报表、货值报表 | ❌ | 二期 |
| 财务核算(成本价、对账) | ❌ | 二期 |
3 用户角色与权限
| 角色 | 职责 | 端 | 核心权限 |
| 门店店员 | 日常收货、核销、调拨执行 | 小程序 | 收货入库、订单核销、调拨、库存查询 |
| 门店店长 | 门店库存管理总责 | 小程序 | 同店员 + 期初库存导入 |
| 总部运营 | 采购、发货、调拨、售后监控 | PC后台 | 采购单、发货单、补发单、调拨单、库存 |
| 财务 | 返厂报销审核 | PC后台 | 返厂单财务审核(通过/驳回) |
| 供应商 | 发货、补发、返厂收货 | PC后台 | 查看采购单、创建发货批次、上传物流、确认返厂收货 |
| 系统管理员 | 基础数据维护 | PC后台 | 门店、供应商、SKU、员工权限管理 |
4 核心业务流程
4.1 以销定采总流程
flowchart LR
A[销售订单] --> B[生成采购需求]
B --> C[创建采购单]
C --> D[自动接单]
D --> E[供应商发货]
E --> F[门店签收]
F -->|正常| G[库存入库]
F -->|少发| H[生成补发单]
F -->|破损| I[残次品入库]
H --> E
I --> J[返厂报销]
4.2 调拨流程
flowchart LR
A[调入方发起申请] --> B[锁定调出方库存]
B --> C[调出方确认出库]
C --> D[在途运输]
D --> E[调入方确认入库]
E -->|有差异| F[差异计入调出门店损失]
4.3 售后退货流程 已有系统已支持,不纳入一期开发
flowchart LR
A[用户发起售后] --> B{售后类型}
B -->|仅退款| C[释放锁定库存]
B -->|退货退款| D[门店收货]
D --> E{商品状态}
E -->|良品| F[良品入库]
E -->|残次| G[残次品入库]
G --> H[返厂报销]
4.4 返厂报销流程 已有系统已支持,不纳入一期开发
flowchart LR
A[门店创建返厂单] --> B[打包发货]
B --> C[供应商确认收货]
C --> D[财务审核]
D -->|通过| E[打款]
D -->|驳回| F[退回修改]
5 泳道图 — 以销定采全流程
flowchart TD
subgraph 运营
A1[创建采购单] --> A2[分配供应商]
end
subgraph 系统
B1[自动接单] --> B2[生成待发货单]
end
subgraph 供应商
C1[查看采购单] --> C2[创建发货批次]
C2 --> C3[上传物流单号]
end
subgraph 门店
D1[收到发货通知] --> D2[按批次签收]
D2 --> D3{签收结果}
D3 -->|正常| D4[良品入库]
D3 -->|少发| D5[差异记录]
D3 -->|破损| D6[残次品入库]
end
subgraph 系统2[系统自动处理]
E1[差异生成补发单]
E2[残次品计入返厂池]
end
A2 --> B1
B2 --> C1
C3 --> D1
D5 --> E1
D6 --> E2
E1 --> C1
6 时序图 — 门店签收流程
sequenceDiagram
participant 供应商 as 供应商
participant 系统 as 系统
participant 门店 as 门店店员
供应商->>系统: 创建发货批次,上传物流
系统->>门店: 推送待收货通知
门店->>系统: 打开发货单详情
门店->>系统: 点击"去签收"
门店->>门店: 录入实收数量/破损数量
门店->>系统: 提交签收
alt 有差异
系统->>系统: 自动生成补发单
系统->>供应商: 推送补发通知
end
alt 有破损
系统->>系统: 破损入残次品库
end
系统-->>门店: 签收成功提示
时序图 — 调拨流程
sequenceDiagram
participant 调入方 as 调入门店
participant 系统 as 系统
participant 调出方 as 调出门店
调入方->>系统: 发起调拨申请
系统->>系统: 锁定调出方库存
系统-->>调出方: 推送待出库通知
调出方->>系统: 确认出库
系统->>系统: 状态变更为"在途"
系统-->>调入方: 推送待收货通知
调入方->>系统: 确认入库
alt 有差异
系统->>系统: 差异计入调出门店损失
end
系统-->>调入方: 入库成功
7 状态机
7.1 采购单状态
stateDiagram-v2
[*] --> 已接单: 创建采购单(自动接单)
已接单 --> 已接单: 供应商创建发货批次
已接单 --> [*]
7.2 发货单状态
stateDiagram-v2
[*] --> 待发货: 供应商创建发货批次
待发货 --> 已发货: 上传物流单号
已发货 --> 已完成: 门店全部签收
已发货 --> 部分收货: 门店部分签收
部分收货 --> 已完成: 门店完成签收
7.3 调拨单状态
stateDiagram-v2
[*] --> 待出库: 调入方发起申请
待出库 --> 已取消: 取消调拨
待出库 --> 在途: 调出方确认出库
在途 --> 待收货: 系统流转
待收货 --> 已完成: 调入方确认入库
7.4 售后单状态 已有系统已支持,不纳入一期开发
stateDiagram-v2
[*] --> 待处理: 用户发起售后
待处理 --> 已拒绝: 运营拒绝
待处理 --> 待退款: 审核通过(仅退款)
待处理 --> 待收货: 审核通过(退货退款)
待收货 --> 待退款: 门店确认收货
待退款 --> 已完成: 财务打款
已拒绝 --> [*]
已完成 --> [*]
7.5 返厂单状态 已有系统已支持,不纳入一期开发
stateDiagram-v2
[*] --> 待供应商收货: 门店创建返厂单
待供应商收货 --> 待财务审核: 供应商确认收货
待财务审核 --> 已审核: 财务通过
待财务审核 --> 已驳回: 财务驳回
已审核 --> 已打款: 执行打款
已驳回 --> 待供应商收货: 修改后重新提交
已打款 --> [*]
7.6 补单状态 已有系统已支持,不纳入一期开发
stateDiagram-v2
[*] --> 已完成: 门店提交现货补单
已完成 --> [*]
8 核心字段说明
8.1 术语定义
| 术语 | 定义 |
| SKU | 最小库存单位,系统底层核算的唯一粒度 |
| 套装 | 销售端虚拟组合,由多个子SKU构成,核销时自动解耦分别扣减库存 |
| 可用库存 | 门店已签收、可供销售或调拨的良品数量 |
| 待提货锁定 | 用户已支付但未到店提货所占用的库存 |
| 采购在途 | 供应商已发货但门店未签收的良品数量 |
| 调拨在途 | 调出门店已出库但调入门店未签收的数量 |
| 调拨锁定 | 调拨申请创建后,在调出门店被锁定不可售的数量 |
| 残次品库存 | 因破损、瑕疵等原因不可售的商品数量,独立管理,后续统一返厂 |
| 现货补单 | 已有系统支持,不纳入一期范围 |
| 补发单 | 因少发产生的补发凭证,供应商需再次发货 |
| 返厂单 | 门店将残次品退回供应商的凭证,含物流、运费信息,用于财务报销 |
8.2 采购单字段
| 字段 | 类型 | 必填 | 说明 |
| 单号 | 文本 | 系统生成 | 采购单号,格式 PO + 日期 + 序号 |
| 供应商 | 文本 | ✅ | 供应商ID |
| 门店 | 文本 | ✅ | 收货门店ID |
| 商品明细 | 数组 | ✅ | 商品明细 [{SKU编码, 商品名称, 数量}] |
| 状态 | 枚举 | 系统生成 | 已接单 |
| 创建人 | 文本 | 系统生成 | 创建人 |
| 创建时间 | 日期时间 | 系统生成 | 创建时间 |
| 备注 | 文本 | - | 备注 |
8.3 发货单字段
| 字段 | 类型 | 必填 | 说明 |
| 单号 | 文本 | 系统生成 | 发货单号,格式 SH + 日期 + 序号 |
| 供应商 | 文本 | ✅ | 供应商ID |
| 门店 | 文本 | ✅ | 收货门店ID |
| 总数 | 数值 | ✅ | 发货总数 |
| 良品数 | 数值 | 系统生成 | 已收良品数 |
| 差异数 | 数值 | 系统生成 | 差异总数 |
| 发货状态 | 枚举 | 系统生成 | 待发货 / 已发货 |
| 签收状态 | 枚举 | 系统生成 | 待收货 / 部分收货 / 已完成 |
| 物流包裹 | 数组 | - | 物流包裹 [{物流公司, 运单号, 物流状态, 商品列表}] |
| 发货时间 | 日期时间 | - | 发货时间 |
8.4 调拨单字段
| 字段 | 类型 | 必填 | 说明 |
| 单号 | 文本 | 系统生成 | 调拨单号,格式 DB + 日期 + 序号 |
| 调出门店 | 文本 | ✅ | 调出门店ID |
| 调入门店 | 文本 | ✅ | 调入门店ID |
| 商品明细 | 数组 | ✅ | 商品明细 [{SKU编码, 商品名称, 数量}] |
| 总数 | 数值 | 系统生成 | 调拨总数 |
| 实收数量 | 数值 | 系统生成 | 实际收货数 |
| 状态 | 枚举 | 系统生成 | 待出库 / 在途 / 待收货 / 已完成 / 已取消 |
| 创建人 | 文本 | 系统生成 | 创建人 |
8.5 售后单字段 已有系统已支持,不纳入一期开发
| 字段 | 类型 | 必填 | 说明 |
| 单号 | 文本 | 系统生成 | 售后单号,格式 AS + 日期 + 序号 |
| 原订单号 | 文本 | ✅ | 原订单号 |
| 售后类型 | 枚举 | ✅ | 仅退款 / 退货退款 |
| 门店 | 文本 | ✅ | 门店ID |
| 商品明细 | 数组 | ✅ | 商品明细 [{SKU编码, 商品名称, 数量, 单价}] |
| 状态 | 枚举 | 系统生成 | 待处理 / 待退款 / 已拒绝 / 已完成 |
| 用户名 | 文本 | ✅ | 用户名 |
| 联系电话 | 文本 | ✅ | 联系电话 |
| 退款原因 | 文本 | - | 退款原因 |
8.6 返厂单字段 已有系统已支持,不纳入一期开发
| 字段 | 类型 | 必填 | 说明 |
| 单号 | 文本 | 系统生成 | 返厂单号,格式 FN + 日期 + 序号 |
| 供应商 | 文本 | ✅ | 供应商ID |
| 门店 | 文本 | ✅ | 门店ID |
| 商品明细 | 数组 | ✅ | 残次品明细 [{SKU编码, 商品名称, 数量}] |
| 总数 | 数值 | 系统生成 | 返厂总数 |
| 运费 | 数值 | - | 运费 |
| 状态 | 枚举 | 系统生成 | 待供应商收货 / 待财务审核 / 已审核 / 已打款 / 已驳回 |
8.7 库存字段
| 字段 | 类型 | 说明 |
| 门店 | 文本 | 门店ID |
| SKU编码 | 文本 | SKU编码 |
| 可用库存 | 数值 | 可用库存(良品,可销售/调拨) |
| 待提货锁定 | 数值 | 待提货锁定(用户已支付未提货) |
| 采购在途 | 数值 | 采购在途(供应商已发货未签收) |
| 调拨在途 | 数值 | 调拨在途(调出已出库未入库) |
| 调入在途 | 数值 | 调入在途(别人调给我的在途) |
| 调拨锁定 | 数值 | 调拨锁定(被别人调拨锁定的数量) |
| 残次品库存 | 数值 | 残次品库存 |