# FSD M12 · 仓库发运

LLMS 索引： [llms.txt](/llms.txt)

---

> [← 总则](/poms/fsd/00-%E6%80%BB%E5%88%99/) ｜ [附录 →](/poms/fsd/99-%E9%99%84%E5%BD%95/) ｜ 上游：[主 PRD](/poms/%E5%8D%B0%E5%88%B7%E8%A1%8C%E4%B8%9A%E5%B7%A5%E5%8D%95%E7%B3%BB%E7%BB%9F%E4%BA%A7%E5%93%81%E4%B8%8E%E4%BA%A4%E4%BA%92%E8%AE%BE%E8%AE%A1/)（6.9 / 7.8 发货页 / 页面树 10）｜ 交互稿：[prd/design/shipping/](/poms/design/shipping/readme/)（已确认）
>
> 册边界：质检放行前置归 m09（Q33 链：放行→入库→可发）；收货地址变更审批归 m05 F05.03（本域地址只读）；签收量对账归 m13（Q35 口径）；外协发料归 m11 不进本册；直发/合并装车/补发/换箱 MVP 不做（Q33 裁决边界，异常线下留痕补录）。

### M12 仓库发运

#### F12.01 发货建议

**对应 PRD**：6.9 主流程「订单生成发货建议」+ 规则「发货先核四者一致」（`prd/印刷行业工单系统产品与交互设计.md:266`）+ 决策 Q33｜ **交互稿**：[prd/design/shipping/](/poms/design/shipping/readme/)（已确认，发货建议屏）｜ **实现落点**：待回填 ｜ **操作入口**：`/shipping/advices` ｜ **状态**：未实现

##### 1 功能定义

按订单生成发货建议：**四账一致卡**（订单需求/合格可用/已发/可发）；**Q33 链**（质检放行→成品入库→可发量，未放行不出现在可发量）；分批发货批次建议；待建议队列；短少处置提示（少发需客户让步确认留档——假设 Q30 口径）。

##### 2 触发条件与前置状态

- 触发：工单完工入库（m07/m09 放行链）；定时刷新待建议队列。
- 前置状态：订单 `已确认`；批次质检放行且入库（Q33）。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 订单需求量 | 自动 | 与订单明细一致 | — |
| 合格可用量 | 自动 | 放行+入库批次合计（Q33） | 未放行不计入 |
| 已发量 | 自动 | 累计发货记录 | — |
| 可发量 | 自动 | =合格可用−已发 | 负值提示 |
| 分批建议 | 自动/可调 | 累计不超可发 | 超量阻断 |

##### 4 处理流程

```mermaid
flowchart TD
    A[订单/批次数据] --> B[四账一致卡]
    B --> C{放行且入库? Q33}
    C -- 否 --> X[不入可发量]
    C -- 是 --> D[可发量计算]
    D --> E[分批发货建议]
    E --> F[生成发货单 → F12.02]
```

##### 5 输出与结果状态

发货建议（四账核对通过）+ 发货单草稿；未放行批次隔离展示。

##### 6 状态流转

建议无独立状态；生成的发货单沿发货单状态机（shipping README：待备货→…→关闭）。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 可发量不足 | 建议按可发量拆分；短少走客户确认（Q30 口径） | — |
| 直发/合并装车/补发/换箱 | MVP 不做，异常线下留痕补录（Q33 边界） | — |
| 地址缺失/错误 | 提示走 m05 F05.03 变更 | — |

##### 8 权限与数据规则

- 仓库备货复核；销售只读本客户建议；四账数据跨域只读聚合（m04/m07/m09/m12）。

#### F12.02 发货单与出库

**对应 PRD**：6.9 主流程备货发运段 + 规则「多箱须可逐箱查看」「地址变更需销售/订单审批」（`prd/印刷行业工单系统产品与交互设计.md:266,268`）+ 调研 R-004（成套执行侧）｜ **交互稿**：[prd/design/shipping/](/poms/design/shipping/readme/)（已确认，发货单屏）｜ **实现落点**：待回填 ｜ **操作入口**：`/shipping/shipments/{shipmentId}` ｜ **状态**：未实现

##### 1 功能定义

发货单执行：备货→复核→**装箱扫码**（重复箱/错货/超量即时拦截）→创建发运；**红字确认**（累计发运 vs 承诺量：7.8「累计发运达 X 是否超承诺 Y」）；**复核清单（未验不发货）**；承运与交接；批次/箱条码（Q14）；**成套按成品 BOM 齐套放行**（R-004 执行侧——缺件/版次不匹配拦截）；地址只读（变更走 m05 F05.03 申请入口）。

##### 2 触发条件与前置状态

- 触发：发货建议生成发货单（F12.01）。
- 前置状态：批次已放行入库（Q33）；复核清单就绪。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 装箱扫码（箱/批次） | 是 | 重复箱/错货/超量即时拦截（Q14 批次校验） | 拦截+原因提示 |
| 复核清单 | 发运前必过 | 未验不发货（6.9） | 未复核禁发运 |
| 红字确认 | 超承诺时必确认 | 累计 vs 承诺对比 | 未确认阻断发运 |
| 成套齐套 | 成套订单必校验 | 按 BOM 缺件/版次检查（R-004） | 缺件阻断放行 |
| 承运/交接信息 | 发运必填 | 齐备 | 阻断 |

##### 4 处理流程

```mermaid
flowchart TD
    A[发货单-待备货] --> B[备货: 批次拣选]
    B --> C[装箱扫码: 重复/错货/超量拦截]
    C --> D[复核清单通过]
    D --> E{累计超承诺?}
    E -- 是 --> F[红字确认 7.8]
    E -- 否 --> G[创建发运: 交接承运]
    F --> G
    G --> H[在途 → F12.03 签收]
```

##### 5 输出与结果状态

发货单状态推进（待备货→已备货→待复核→待发运→在途）；箱/批次条码档案；发运记录（承运交接）。

##### 6 状态流转

发货单状态机见 shipping README（待备货→已备货→待复核→待发运→在途→已签收/退回→关闭）。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 重复箱/错货/超量 | 扫码即时拦截（6.9 异常） | — |
| 数量短少 | 差异单流程（F12.03），不静默放行 | — |
| 成套缺件/版次不匹配 | 阻断放行（R-004） | 「成套不齐」 |
| 未验发货 | 阻断（复核清单） | — |
| 地址变更请求 | 跳 m05 F05.03 申请（本域只读） | — |

##### 8 权限与数据规则

- 仓库备货/复核/发运；销售只读；物流更新状态（6.9 权限）。
- 红字确认与拦截记录进审计（F15.03）。

#### F12.03 签收与差异单

**对应 PRD**：6.9 规则「差异单记录责任方待确认状态，不能直接扣减原发运」「客户签收不等于财务确认」（`prd/印刷行业工单系统产品与交互设计.md:268`）+ 决策 Q34/Q35｜ **交互稿**：[prd/design/shipping/](/poms/design/shipping/readme/)（已确认，签收-差异屏）｜ **实现落点**：待回填 ｜ **操作入口**：`/shipping/receipts` ｜ **状态**：未实现

##### 1 功能定义

签收登记与差异闭环：**逐批签收量登记**；证据照片+回单（MVP，电子签 P1+ **假设 Q34**）；**差异单**（责任方待确认；**不扣减原发运**；原始发运不可隐藏）；处置选项（补发/结算调整/关闭——结算调整联动 m13）；**客户签收≠财务确认**（系统不自动改应收——6.9；签收量作为对账口径入 m13 Q35）；在途超时提醒。

##### 2 触发条件与前置状态

- 触发：发货单 `在途`；客户反馈差异。
- 前置状态：发运记录存在（F12.02）。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 签收量（逐批） | 是 | ≤发运量 | 超量提示 |
| 证据照片/回单 | MVP 必附 | 上传留痕（Q34） | 缺失提示 |
| 差异描述/责任方 | 差异时必填 | 责任方=待确认起步 | — |
| 处置选项 | 差异闭环必选 | 补发/结算调整/关闭 | 结整调整联动 m13 |

##### 4 处理流程

```mermaid
flowchart TD
    A[在途发货单] --> B[逐批签收登记+证据 Q34]
    B --> C{差异?}
    C -- 否 --> D[已签收 → 关闭]
    C -- 是 --> E[差异单: 责任方待确认]
    E --> F[处置: 补发 / 结算调整 m13 / 关闭]
    F --> G[原发运不可隐藏]
```

##### 5 输出与结果状态

签收记录（逐批+证据）；差异单（独立留痕，不扣减原发运）；对账口径数据（签收量→m13 Q35）；在途超时提醒。

##### 6 状态流转

发货单 `在途 → 已签收 / 退回`；`已签收 → 关闭（差异处置完成）`、`退回 → 关闭（补发或结算调整后）`——shipping README 状态机。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 拒收/退回 | 差异单+退回流程（6.9 异常） | — |
| 签收超量 | 提示核对（签收≠应收，不自动入账） | — |
| 差异未处置 | 发货单停留非关闭态，提醒 | — |
| 结算调整 | 生成 m13 调整申请（R-013 留痕口径） | — |

##### 8 权限与数据规则

- 仓库登记签收；物流只读或更新状态；客户仅确认本人货物；销售只读（6.9 权限）。
- 差异单与签收证据只追加；审计（F15.03）。

## E2E 场景清单（m12 覆盖地图）

| 场景 ID | 场景名 | FSD 功能 ID | 前置种子 | 主干路径 | 关键断言 | 冒烟? | 可并行? | 现状 |
|---------|--------|-------------|----------|----------|----------|-------|---------|------|
| E12.01 | 放行入库可发链 | F12.01（+F09.02） | 终检批次（Q33） | 放行→入库→可发量 | 未放行不出现在可发量；四账一致 | ✓ | — | 未实现 |
| E12.02 | 装箱扫码拦截 | F12.02 | 发货单待备货 | 扫错货/超量 | 即时拦截+原因；正确扫码通过 | ✓ | ✓ | 未实现 |
| E12.03 | 红字确认发运 | F12.02 | 累计发运临界 | 超承诺→红字确认 | 未确认阻断；确认后发运（7.8） | ✓ | ✓ | 未实现 |
| E12.04 | 成套齐套放行 | F12.02 | 成套订单（R-004） | 装箱→齐套校验 | 缺件/版次不匹配阻断放行 | — | ✓ | 未实现 |
| E12.05 | 逐批签收主干 | F12.03 | 在途发货单 | 签收登记+证据 | 逐批可签；证据留档（Q34） | ✓ | — | 未实现 |
| E12.06 | 差异单不扣原发运 | F12.03 | 短少签收 | 差异单→结算调整 | 原发运记录不变可查；调整走 m13 | ✓ | ✓ | 未实现 |
| E12.07 | 签收≠应收确认 | F12.03（+F13.01） | 签收完成 | 查看应收 | 应收不变；签收量仅作对账口径（Q35） | — | ✓ | 未实现 |

---

反链：

- [印刷工单系统功能规格说明书（FSD）v1.0 · 总则](/poms/fsd/00-%E6%80%BB%E5%88%99/)
