# 4.6 采购

> **本文件是【采购 PUR】模块需求的编辑入口。**
> 主文件 [`../Continental-Retail-APP-PRD.md`](../Continental-Retail-APP-PRD.md) 第 4.6 节已于 2026-08 从本文件回灌（V1.1），此后的需求变更仍改本文件、再回灌。
> **两者不一致时以本文件为准。** 目录约定见 [`README.md`](./README.md)。

| 项 | 值 |
| --- | --- |
| 模块码 | PUR |
| V1.0 章节 | 4.6 |
| 描述粒度 | 14 维完整模板 |
| 需求依据 | 业务需求 + ROOS 截图 + 设计稿 |
| 现状承载系统 | ROOS（马牌）+ F6（非马牌） |
| 需求条数 | 18（待确认 12，完成度 33%） |
| 本次新增待确认 | 5（REQ-PUR-014 ~ 018） |
| 配图 | 9 张（设计稿 2 / 现状-ROOS 7） |

模块概要

---

**采购覆盖门店要买的全部商品**，包括马牌商品与耗材、辅料、其它品牌轮胎，一套浏览、加购、结算、收货、售后流程走到底，门店不需要按品牌切换页面。

数据来源上，马牌商品走 ROOS、其余商品走 F6。ROOS 本身就是马牌在 F6 后台之上自建的采购小程序 —— 品牌方要单独管理并统计各门店对自有品牌的采购情况，才有了这一层；对门店而言仍是同一个采购功能。

## 4.6.1 需求描述

**业务目标** —— 门店在 App 内完成**全部品类**的订货全流程（搜索 → 加购 → 结算 → 收货 → 售后），覆盖马牌与非马牌商品，并保留 ROOS 的额度、返利、优惠券结算能力，解决[痛点 2.3](../Continental-Retail-APP-PRD.md#23-进销存--erp-数据)

**目标角色** —— 店长：全部；技工：**需被授权**后功能同店长

**入口** —— 底部导航「采购」tab；首页快捷入口「采购」。全部商品同在此 tab 内，按分类 / 品牌逐级筛选

**前置条件** —— 已登录、已确定门店；采购马牌商品还需门店在 ROOS 有有效的经销商 / 信用账户

**页面内容** —— 商品搜索与筛选 → 商品列表 → 购物车 → 订单确认（费用构成与扣账方式）→ 我的订单（六状态）→ 订单详情 → 售后/退款；扫码收货

**主流程** —— 搜索商品 → 加入购物车 → 调整数量并勾选 → 结算 → 确认费用与扣账方式 → 提交订单 → 扫码收货。马牌与非马牌商品的流程完全一致，门店感知不到品牌差异

**异常流程**：

- 信用额度不足 → 提示并阻断提交（校验时机见 [REQ-PUR-017](#467-业务规则)）
- 商品无库存 → 加购按钮替换为「缺货登记」入口（[REQ-PUR-014](#467-业务规则)）
- 商品下架 → 列表不再返回该商品
- 扫码收货条码不匹配 → 提示并拒收

**业务规则** —— 见 [4.6.7](#467-业务规则)

**权限规则** —— 技工默认无采购权限，需店长/后台授权（[REQ-PUR-001](#467-业务规则)）

**访问链路** —— App → App Backend → ROOS（马牌商品）/ F6（非马牌商品）

**逻辑数据来源** —— **马牌商品：ROOS**；**非马牌商品：F6**。两者的底层服务同为 F6，ROOS 是马牌品牌侧的管理与统计层

**回写目标** —— 购物车、采购订单、扣账方式选择、收货确认、售后申请 → 对应来源系统

**状态变化** —— 采购订单：待支付 → 待发货 → 待收货 → 已收货；可取消 → 已取消（六状态，见 [REQ-PUR-006](#467-业务规则)）

**验收标准** —— 见 [4.6.9](#469-验收标准)

## 4.6.2 产品搜索与商品列表

用户通过顶部搜索框与筛选条件收窄范围，查询出搜索结果列表。**马牌商品的搜索接口来源于 ROOS，非马牌商品来源于 F6**，两类结果在同一列表内呈现，门店按品牌 / 分类筛选即可，不需要切换页面。

![设计稿-订单管理-商品列表](../app-design-images/订单管理-商品列表.png)

**页面内容** —— App 采购商品列表的目标形态：搜索框 + 购物车图标、一行规格筛选、「显示有货 / 显示促销」开关与品牌下拉，主体为单列商品卡（**4 张卡为同一份占位数据**，仅库存状态不同）。

**关键交互** —— ①点规格筛选任一项 → 展开该维度取值多选；②切换「显示有货 / 显示促销」→ 列表按开关过滤；③点「马牌 ▾」→ 切换品牌；④有货 / 库存紧张的卡点右下加购图标 → 加入购物车，购物车角标 +1；⑤**缺货卡的加购图标被替换为「去登记」按钮** → 进入缺货登记（[REQ-PUR-014](#467-业务规则)）；⑥点购物车图标 → 进入购物车页。

**可用角色** —— 店长 ✅ 全量；技工 ⚙️ 需店长或后台在[人员管理「可用系统」](./09-STM-门店管理.md#49-门店管理)中授予采购权限后方可进入（[REQ-PUR-001](#467-业务规则)）。

**需求关联** —— [REQ-PUR-007](#467-业务规则) 数据来源、[REQ-PUR-010](#467-业务规则) 商品域范围、[REQ-PUR-014](#467-业务规则) 缺货登记、[REQ-PUR-015](#467-业务规则) 商品卡字段

![现状-ROOS 商品选择](../mini-program-images/ROOS/商品选择.png)

**页面内容** —— ROOS 小程序的商品选择页，结构与上方设计稿高度一致，差别在于商品卡多出「可延保」与时效标、缺货商品直接在图上压「缺货」并给出「缺货登记」按钮，底部是 ROOS 自身的四 tab。

**关键交互** —— ①同上方设计稿的搜索与筛选；②点「缺货登记」→ 提交该商品的缺货登记；③点加购 → 加入 ROOS 购物车；④点底部 tabbar「购物车」→ 进入购物车页。**整合到 App 后 ROOS 自身的 tabbar 不再出现**，购物车入口收敛到列表页右上角（见上方设计稿）。

**可用角色** —— 同上方设计稿：店长 ✅、技工 ⚙️。

**需求关联** —— [REQ-PUR-007](#467-业务规则) 数据来源、[REQ-PUR-014](#467-业务规则) 缺货登记、[REQ-PUR-015](#467-业务规则) 商品卡字段

> **本节正文原描述与两张图不符，已按图修订**（不新增需求编号）：
>
> V1.0 原文写「左侧树形分类（按品牌 / 花纹 / 规格逐级收窄）+ 右侧商品卡」。**两张图都不是这个结构** —— 均为「顶部平铺筛选行 + 单列商品卡」，没有左侧分类树。[4.6.8](#468-业务数据列表) 中 `productCategory` 的备注「树形分类」也应据此复核：该字段可能只是后台的分类层级，并不对应一个前端树形控件。上方正文已改为「顶部搜索框与筛选条件」。

## 4.6.3 购物车与结算

**加入购物车**：用户点击商品卡的加购图标，将商品加入购物车。用户可以调整采购数量，选择商品条目前面的选择图标，点击「结算」按钮进入结算页。

![设计稿-订单管理-购物车](../app-design-images/订单管理-购物车.png)

**页面内容** —— App 购物车的目标形态，商品**按品牌分组**（「德国马牌」组已勾选、「维京轮胎」组未勾选），底部为「合计 / 已减 / 结算」结算条。

**关键交互** —— ①勾选 / 取消单行或整个品牌组 → 合计与已减金额实时重算；②数量步进器 `−` / `+` → 改变该行数量；③点「优惠明细 ^」→ 展开本单优惠构成；④点「结算」→ 进入订单确认页。

**可用角色** —— 店长 ✅；技工 ⚙️ 被授权后可加购与调整数量，**能否点「结算」并最终提交订单未定** `TODO(REQ-PUR-002)`，关闭前按不可提交实现。

**需求关联** —— [REQ-PUR-011](#467-业务规则) 购物车与订单是否合并、[REQ-PUR-002](#467-业务规则) 技工下单权限

> **本图不能作为 [REQ-PUR-011](#467-业务规则) 已解决的证据**：图中分组的「德国马牌」与「维京轮胎」**同属 ROOS 的品牌**，两者本来就在一个系统内。真正的分歧点是 ROOS 商品与 F6 非马牌商品能否共用一个购物车，本图未涉及。

![现状-ROOS 购物车](../mini-program-images/ROOS/购物车.png)

**页面内容** —— ROOS 现状购物车，**本图为单商品的轻量态**（无优惠行），商品归在「德国马牌」组下，行内比设计稿多出商品编码与时效标。

**关键交互** —— ①点「编辑」→ 进入批量管理态（可删除 / 移出）；②勾选与数量调整同设计稿；③点「结算」→ 进入订单确认页。

**可用角色** —— 同上方设计稿：店长 ✅、技工 ⚙️ + `TODO(REQ-PUR-002)`。

**需求关联** —— [REQ-PUR-015](#467-业务规则) 商品卡字段（商品编码、时效标）

> 时效标在三张图里出现了**三种写法** —— 设计稿购物车「最快45分钟」、ROOS 商品选择「⏱45分钟」、ROOS 购物车「⏱1小时」。该标是随商品与仓库动态计算的，App 侧需统一文案模板，一并归入 [REQ-PUR-015](#467-业务规则)。

**结算与提交订单**：用户在订单确认页核对费用构成后，点击「提交订单」，完成采购流程。

![现状-ROOS 订单确认](../mini-program-images/ROOS/订单确认.png)

**页面内容** —— ROOS 现状订单确认页，自上而下为收货地址、订单商品区、费用构成（立减 / 优惠券 / **运费待双方商定** / **返利请选择** / 备注）与底部支付条（**信用额度不可用**），**本图为测试数据**（收货人「测试」、地址为重复拼接的脏数据）。

**关键交互** —— ①点收货地址 → 切换 / 编辑地址；②点「优惠券」→ 选择可用券；③点「返利 请选择」→ 选择本单抵扣的返利额度（见[返利中心](./11-RBT-返利中心.md#411-返利中心)）；④填写备注；⑤点「提交订单」→ 提交（额度校验结果见下图）。

**可用角色** —— 店长 ✅；技工 ❓ `TODO(REQ-PUR-002)`。返利抵扣涉及门店资金账户，即便技工被授权采购，是否可动用返利额度需一并确认。

**需求关联** —— [REQ-PUR-004](#467-业务规则) 支付方式、[REQ-PUR-016](#467-业务规则) 订单确认页费用构成、[REQ-PUR-011](#467-业务规则) 购物车与订单是否合并

> **本图给出两条与 V1.0 正文冲突的事实**：
>
> 1. **页面上没有任何支付方式选择器。** V1.0 的 4.6.3 原文写「用户选择支付方式后，点击提交订单」，现状实际是「信用额度 + 返利 + 优惠券」三者构成扣账，没有微信/支付宝式的支付方式单选。整合后的形态归入 [REQ-PUR-016](#467-业务规则) 与 `TODO(REQ-PUR-004)`。
> 2. **订单标题为「订单1–德国马牌」并标「普通订单」** —— 说明 ROOS 现状**已经按品牌把一次结算拆成多张订单**。这对 [REQ-PUR-011](#467-业务规则) 是重要输入：连同属 ROOS 的两个品牌都要拆单，跨 ROOS / F6 合并成一张订单的可行性更低，更现实的形态是「一个购物车 → 按来源拆多张子订单 → 列表侧聚合展示」。

**信用额度校验**：额度不足时给出明确提示并阻断下单。

![现状-ROOS 订单确认-额度不足提示](../mini-program-images/ROOS/订单确认-额度不足提示.png)

**页面内容** —— 订单确认页上弹出的失败弹窗，标题「订单提交失败」，正文「账户额度不足，请联系经销商处理」，单按钮「我知道了」。

**关键交互** —— ①点「我知道了」→ 关闭弹窗回到订单确认页，订单未生成。**无重试、无跳转充值 / 联系经销商的入口**，门店只能自行线下联系。

**可用角色** —— 店长 ✅、技工 ❓ `TODO(REQ-PUR-002)`（能提交才会遇到本弹窗）。

**需求关联** —— [REQ-PUR-003](#467-业务规则) 额度校验、[REQ-PUR-017](#467-业务规则) 额度校验时机

> **本图与 [REQ-PUR-003](#467-业务规则)、[验收标准第 2 条](#469-验收标准)直接冲突**：现状是**点击提交之后**才由服务端返回「订单提交失败」，而 REQ-PUR-003 要求「提交订单前校验」、验收标准要求「『提交订单』不可点击，且提示包含可用额度与本单金额」。现状弹窗既不置灰按钮，也不告知可用额度与本单金额差额。已新增 [REQ-PUR-017](#467-业务规则) 明确校验时机与提示内容。

> 支付方式的可选集合、优先级与扣账逻辑由「[支付优先级设置](./08-MIN-我的.md#48-我的--个人中心)」决定。整合后支付方式与 CDMS 支付的关系 —— `TODO(REQ-PUR-004)`。

## 4.6.4 收货

用户扫描商品，完成收货流程。扫码为 **App 原生实现**（见 [REQ-INT-003](../Continental-Retail-APP-PRD.md#73-f6-集成边界)），非嵌入 H5。

> 收货扫码与[扫码入库](./07-INV-库存.md#47-库存)是否为同一动作、是否一次扫码同时完成收货与入库 —— `TODO(REQ-PUR-005)`。
>
> [附录 A.5](../Continental-Retail-APP-PRD.md#a5-采购) 第 5 条已经把这两件事写成同一个数据集「收货（扫码入库）」，倾向于合并；但正文与 REQ-PUR-005 仍按未定处理，需业务正式确认后统一两处口径。

本节无配图 —— **收货页面既无设计稿也无现状截图**，扫码后的收货确认页（是否逐条核对、是否支持部分收货、拒收如何记录）目前没有任何页面材料。

## 4.6.5 订单管理与售后

**采购订单列表**：tag 分为**全部、待支付、待发货、待收货、已收货、已取消**六个状态。

![现状-ROOS 我的订单-全部](../mini-program-images/ROOS/我的订单-全部.png)

**页面内容** —— ROOS「我的订单」列表，顶部为搜索框与「筛选」、其下六个状态 tab（全部 / 待支付 / 待发货 / 待收货 / 已收货 / 已取消，当前选中「全部」），**本截图为空态**（「您还没有相关的订单」），故订单行的字段与操作按钮无法从本图确认。

**关键交互** —— ①在搜索框输入订单号 / 商品名称 / 商品编码 → 检索订单；②点「筛选」→ 打开 tab 之外的附加筛选条件（**本图未展开，筛选维度无法确认**）；③点任一状态 tab → 切换列表；④点订单行 → 进入订单详情。

**可用角色** —— 店长 ✅ 全量；技工 ⚙️ 被授权后可查看订单（[附录 B](../Continental-Retail-APP-PRD.md#附录-b-权限矩阵)「搜索 / 加购 / 查看订单」为 ⚙️）。

**需求关联** —— [REQ-PUR-006](#467-业务规则) 订单状态机

> **状态集合按本图修订。** V1.0 原写五状态「全部 / 待支付 / 待发货 / **已发货** / 已取消」，现状实为六个 tab：把「已发货」叫作「**待收货**」，并且多出「**已收货**」这一独立状态 —— 后者正对应 REQ-PUR-006 原文里那个没有 tab 的「（收货）完成」。[REQ-PUR-006](#467-业务规则) 与[验收标准第 4 条](#469-验收标准)已同步改为六状态。
>
> 另：**现状 tab 上不带条数角标**，而验收标准第 4 条要求「tab 计数与列表条数一致」—— 该计数是 App 侧的新增要求，接口需支持按状态返回计数。

![现状-ROOS 我的订单-待支付](../mini-program-images/ROOS/我的订单-待支付.png)

**页面内容** —— 同一页面切到「待支付」tab，搜索、筛选与六个 tab 均不变，**同样是空态**。

**关键交互** —— 与上一张图一致；本图仅用于佐证 tab 切换后页面骨架不变、六状态集合稳定。

**可用角色** —— 同上：店长 ✅、技工 ⚙️。

**需求关联** —— [REQ-PUR-006](#467-业务规则) 订单状态机

**采购订单详情**：查看订单流转状态。**本节无订单详情配图**，详情页的字段、可执行操作（取消 / 再次购买 / 申请售后的入口位置）缺少页面材料。

**售后 / 退款**：进入订单详情页面，点击「售后/退款」，进入「售后/退款」流程。

![现状-ROOS 售后退款](../mini-program-images/ROOS/售后退款.png)

**页面内容** —— ROOS「售后/退款」列表页，顶部依次为橙色提示条「退货订单将不会退回抵扣券」、售后单号搜索框与日期区间，**本截图为空态**，故售后单行的字段与状态无法从本图确认。

**关键交互** —— ①输入售后单号或销售订单号 → 检索售后单；②点「开始时间」/「结束时间」→ 选择日期区间过滤；③点售后单行 → 进入售后详情。**本页只做查询，发起售后的入口在订单详情页内**。

**可用角色** —— 店长 ✅；技工 ⚙️（[附录 B](../Continental-Retail-APP-PRD.md#附录-b-权限矩阵)「售后 / 退款」为 ⚙️，需授权）。售后涉及退款去向，技工被授权后能否发起而非仅查看，随 `TODO(REQ-PUR-002)` 一并确认。

**需求关联** —— [REQ-PUR-018](#467-业务规则) 售后退款规则

> **本图暴露一条涉及资金、却完全未成文的规则**：「退货订单将不会退回抵扣券」—— 门店用抵扣券下单后退货，券不退回，实际损失由门店承担。V1.0 的 4.6.5 对售后只有一句「进入订单详情，点击售后/退款」，售后类型、可申请时限、退款去向（退回信用额度 / 返利 / 抵扣券）一概未定义。已新增 [REQ-PUR-018](#467-业务规则)。
>
> 另注意搜索框写的是「**销售订单号**」—— 这是 ROOS 站在**平台售货方**视角的措辞，而门店视角同一张单叫「采购订单」。整合进 App 后必须统一为门店视角，否则会与[销售模块](./03-SAL-销售.md#43-销售)的销售订单混淆。

> 采购订单的六状态（待支付 / 待发货 / 待收货 / 已收货 / 已取消 / 全部）与 O2O 销售订单的五状态（[4.3.5](./03-SAL-销售.md#435-线上订单管理)）**是两套完全不同的状态机**，UI 上必须明确区分，不可复用同一组件文案。

## 4.6.6 角色差异

| 角色 | 权限 |
| --- | --- |
| 店长 | 搜索、加购、结算、提交订单、收货、查看订单、发起售后 |
| 技工 | 默认不可见；被授权后功能同店长。是否允许技工提交订单（涉及资金）—— `TODO(REQ-PUR-002)` |

采购模块角色差异。资金相关动作（提交订单、选择返利抵扣、发起售后）在 `TODO(REQ-PUR-002)` 关闭前一律按技工不可执行实现。

## 4.6.7 业务规则

**REQ-PUR-001 采购授权** —— 技工需被显式授权才能进入采购模块；授权维度参见[人员管理「可用系统」](./09-STM-门店管理.md#49-门店管理)

**REQ-PUR-002 技工下单权限** —— 技工被授权后是否可提交订单待定 `TODO(REQ-PUR-002)`。该条同时覆盖「选择返利抵扣」与「发起售后」两个资金相关动作

**REQ-PUR-003 额度校验** —— 提交订单前校验信用额度；不足时阻断并提示。**校验时机与提示内容见 [REQ-PUR-017](#467-业务规则)**

**REQ-PUR-004 支付方式** —— 由支付优先级设置决定默认扣账方式；与 CDMS 支付的关系待定 `TODO(REQ-PUR-004)`

**REQ-PUR-005 收货与入库** —— 扫码收货与扫码入库是否合并为一次动作待定 `TODO(REQ-PUR-005)`

**REQ-PUR-006 订单状态机** —— 待支付 → 待发货 → 待收货 → 已收货；可取消 → 已取消。列表 tag 为「全部 / 待支付 / 待发货 / 待收货 / 已收货 / 已取消」六个，与销售订单状态机隔离

> 本条状态集合于 V1.1 按 [ROOS 我的订单截图](#465-订单管理与售后)修订：原写五状态、把「待收货」写作「已发货」且缺「已收货」。

**REQ-PUR-007 数据来源** —— 商品、价格、库存、订单、售后：马牌商品以 **ROOS** 为准，非马牌商品以 **F6** 为准；App 不落地二次计算的价格

**REQ-PUR-008 扫码实现** —— 收货扫码使用 App 原生扫码能力，不嵌入第三方 H5 扫码页

**REQ-PUR-009 车型字段来源** —— 商品的车型（`carModel`）是否取自 RMS 待确认 `TODO(REQ-PUR-009)`，见 [4.6.8](#468-业务数据列表)

**REQ-PUR-010 商品域范围** —— 采购覆盖门店需要的**全部商品**，含马牌商品与耗材、辅料、其它品牌轮胎。**只有一个采购入口**，门店在同一 tab 内按分类 / 品牌筛选，不因商品来源不同而切换页面。这是[痛点 2.1](../Continental-Retail-APP-PRD.md#21-多小程序分散)「多系统来回切换」在采购域的最后一块拼图

**REQ-PUR-011 购物车与订单是否合并** —— 马牌商品与非马牌商品能否放进同一个购物车、生成同一张订单待确认 `TODO(REQ-PUR-011)`。合并则需要跨来源的订单拆分与状态聚合；不合并则购物车与订单列表需按来源分列。**这是本模块最大的架构分歧点**

> V1.1 的实证输入：ROOS 订单确认页把一次结算按品牌拆成「订单1–德国马牌」等多张订单（见 [4.6.3](#463-购物车与结算)）。**连同属 ROOS 的两个品牌都要拆单**，因此「一个购物车 + 提交后按来源拆多张子订单 + 订单列表聚合展示」是比「真正合并成一张订单」更现实的落点，建议以此为决策起点。

**REQ-PUR-012 非马牌结算与账期** —— 非马牌采购的支付方式、信用额度与账期是否与马牌采购一致待确认 `TODO(REQ-PUR-012)`。马牌侧的信用额度与支付提醒来自 ROOS / CDMS，非马牌侧是否共用同一套额度未知

**REQ-PUR-013 接入路径** —— ROOS 建于 F6 后台之上，F6 侧本身具备采购服务能力。App Backend 是走「马牌经 ROOS、非马牌直连 F6」两条链路，还是统一经 ROOS 代理，待确认 `TODO(REQ-PUR-013)`。无论哪种，**马牌商品的采购记录必须仍然进入 ROOS** —— 品牌方按门店统计自有品牌采购情况正是 ROOS 存在的原因。这一条需优先于 [REQ-PUR-011](#467-业务规则) 确认

**REQ-PUR-014 缺货登记与到货通知** —— 商品列表中缺货商品**不置灰**，而是把加购按钮替换为「缺货登记 / 去登记」入口，门店可登记采购意向。登记后的到货通知形式（是否推送、是否自动加购、登记记录在哪里查看）未定 `TODO(REQ-PUR-014)`；缺货登记对非马牌商品是否同样可用，随 [REQ-PUR-013](#467-业务规则) 一并确认

> 本条修正了 [4.6.1](#461-需求描述) 原异常流程「商品下架/无库存 → 列表置灰」的写法：**无库存不是置灰，而是换成一个可点的登记入口**；下架商品则根本不在列表中返回。

**REQ-PUR-015 商品卡与购物车字段** —— 商品卡除[业务数据列表](#468-业务数据列表)已有字段外，还需承载：**发货仓**（截图为「浦东新仓」）、**销量**（「已售 3426」）、**库存状态标**（有货 / 库存紧张 / 库存不足 / 缺货）、**可延保标**、**配送时效标**、**商品编码**（购物车内展示）。这些字段当前均不在 4.6.8 的 10 个字段内，来源与取值集合待补 `TODO(REQ-PUR-015)`。配送时效标现状有「最快45分钟」「⏱45分钟」「⏱1小时」三种写法，App 侧须统一为一个文案模板

**REQ-PUR-016 订单确认页费用构成** —— 订单确认页按「立减 → 优惠券 → 返利抵扣 → 运费 → 信用额度」的顺序展示费用构成，并给出「优惠后订单金额」与「剩余应付合计」。其中：**运费现状为「待双方商定」**（线下协商，无金额），**返利为「请选择」**（门店主动选择本单抵扣额度）。整合后 App 内运费如何呈现与确认、返利抵扣的可选额度来源、以及是否存在独立的支付方式单选（现状**没有**）待确认 `TODO(REQ-PUR-016)`，与 [REQ-PUR-004](#467-业务规则) 一并决策

**REQ-PUR-017 额度校验时机** —— 信用额度校验必须**在提交前**完成：额度不足时「提交订单」置为不可点击，并在按钮上方直接给出**可用额度与本单金额的差额**。服务端在提交时仍需二次校验兜底，但该兜底不得成为门店感知到的唯一提示。现状为提交后弹「订单提交失败 / 账户额度不足，请联系经销商处理」，无差额、无置灰、无后续入口 —— 是否需要在提示中提供「联系经销商」的跳转或经销商联系方式待确认 `TODO(REQ-PUR-017)`

**REQ-PUR-018 售后退款规则** —— 售后单支持按售后单号 / 采购订单号检索与日期区间过滤。**已确认的资金规则：退货订单不退回抵扣券**，该规则须在门店发起售后前显式告知并留痕。售后类型（退货 / 退款 / 换货）、可申请时限、退款去向（原路退回信用额度 / 返利 / 抵扣券）、审核流程均未定义 `TODO(REQ-PUR-018)`。**页面文案须统一为门店视角**：现状 ROOS 用的是平台视角的「销售订单号」，App 内应称「采购订单号」，避免与[销售模块](./03-SAL-销售.md#43-销售)的销售订单混淆

## 4.6.8 业务数据列表

| # | 字段 | 字段名 | 数据来源 | 说明 |
| --- | --- | --- | --- | --- |
| 1 | 商品名称 | productName | ROOS | |
| 2 | 商品编码 | productCode | ROOS | 现状购物车行内直接展示 |
| 3 | 品牌标识 | brandTag | ROOS | |
| 4 | 品牌 | brand | ROOS | 马牌 / 维京 等 |
| 5 | 单价 | price | ROOS | 不在 App 侧二次计算 |
| 6 | 计价单位 | priceUnit | ROOS | |
| 7 | 尺寸 | tireSize | ROOS | |
| 8 | 车型 | carModel | RMS | 车型匹配 `TODO(REQ-PUR-009)` |
| 9 | 安装位置 | installPositon | ROOS | 现有字段名拼写为 `installPositon`，接口对齐时需确认是否应为 `installPosition` |
| 10 | 产品分类 | productCategory | ROOS | 分类层级；是否对应前端树形控件需复核，见 [4.6.2](#462-产品搜索与商品列表) |

采购业务数据表。上表按马牌商品（ROOS）列出；非马牌商品的同名字段以 F6 为准，字段能否一一对齐随 [REQ-PUR-013](#467-业务规则) 的接入路径一并确认。

**上表尚未覆盖**截图中实际出现的以下字段，随 `TODO(REQ-PUR-015)` 补齐：发货仓、销量、库存状态、可延保标、配送时效、以及订单确认页的立减 / 优惠券 / 运费 / 返利抵扣 / 信用额度五项金额字段。

## 4.6.9 验收标准

1. 技工未被授权时，采购 tab 不下发、深链跳转也被拦截；
2. 信用额度不足时「提交订单」不可点击，且提示包含可用额度与本单金额；提交接口在服务端仍做二次校验（[REQ-PUR-017](#467-业务规则)）；
3. 购物车勾选、数量修改在弱网下不丢失，恢复网络后与后端一致；
4. 采购订单**六**状态的 tab 计数与列表条数一致；
5. 扫码收货使用原生扫码，无 WebView 加载过程；
6. 采购 tab 内可同时检索到马牌与非马牌商品，两类商品的下单、支付、收货、售后在交互上完全一致，商品来源对门店可见但不改变操作路径；
7. 门店未接入 F6 时，非马牌商品不出现在采购 tab 内且不报错，见[门店能力开关](../Continental-Retail-APP-PRD.md#74-门店能力开关)；
8. 缺货商品的卡片给出「缺货登记」入口而非置灰，登记成功后有明确反馈（[REQ-PUR-014](#467-业务规则)）；
9. 发起退货前，「退货订单不退回抵扣券」的提示对门店可见（[REQ-PUR-018](#467-业务规则)）。

> 第 2、4 条按本次逐图核看结果修订，第 8、9 条为本次新增。

---

## 附：本模块归拢信息

> 以下内容从主文件的其它章节归拢而来，便于本模块独立评审。**回灌主文件时不处理本分界线以下的部分**——主文件的附录仍是全局视图。

### 附-1 业务数据字典（主文件附录 A.5）

| # | 数据集 | 来源 | 安全 | 备注 |
| --- | --- | --- | --- | --- |
| 1 | 商品信息（名称/规格/型号/价格/库存/详情/参数） | Mini Program Backend | HTTPS | ROOS |
| 2 | 当前用户购物车信息数据集 | Mini Program Backend | HTTPS | 保存至 ROOS |
| 3 | 促销日历数据集 | Mini Program Backend | HTTPS | 活动数据接口待确定 |
| 4 | 结算信息结果集 | App Backend | **证书令牌** | 需调用三方接口，银行接口可能需令牌或证书 |
| 5 | 收货（扫码入库） | **原生 `native_scan`** | — | ⚠️ 前期材料写「嵌入 F6 扫码入库页面」，已按 [REQ-INT-003](../Continental-Retail-APP-PRD.md#71-访问链路原则) 校正 |
| 6 | 采购订单列表 / 采购订单详情 | Mini Program Backend | HTTPS | |

采购模块数据集（摘自主文件[附录 A.5](../Continental-Retail-APP-PRD.md#a5-采购)）。字段级清单见上方 [4.6.8](#468-业务数据列表)。

两处需要注意的对不齐：

1. **第 3 条「促销日历数据集」在正文 4.6 中没有任何对应功能。** 商品列表有「显示促销」开关、购物车有「已减 / 优惠明细」、订单确认页有「优惠券」，但都不是「促销日历」。该数据集究竟服务于采购页的哪个位置，还是应归到[营销与会员](./13-MKT-营销与会员.md#413-营销与会员)，需在 `TODO(REQ-PUR-016)` 一并厘清。
2. **第 5 条已把「收货」与「扫码入库」并为同一数据集**，实际上给 `TODO(REQ-PUR-005)`（两者是否合并）预设了答案。正文仍按未定处理，两处口径需在该 TODO 关闭时统一。

### 附-2 权限矩阵（主文件附录 B 本模块分行）

**图例**：✅ 完整权限 · 🔸 受限 · ⚙️ 需店长/后台显式授权 · ✗ 无权限 · ❓ 待确认

| 功能 | 店长 | 技工 | 备注 / 待确认 |
| --- | --- | --- | --- |
| 搜索 / 加购 / 查看订单 | ✅ | ⚙️ | 技工需被授权 |
| **提交订单**（涉及资金） | ✅ | ❓ | `TODO(REQ-PUR-002)` |
| 收货 | ✅ | ⚙️ | |
| 售后 / 退款 | ✅ | ⚙️ | 能否**发起**（而非仅查看）随 `TODO(REQ-PUR-002)` 一并确认 |

采购模块权限矩阵（摘自主文件[附录 B](../Continental-Retail-APP-PRD.md#附录-b-权限矩阵)）

适用的全局权限实施规则：接口层强制（REQ-ACC-004）；⚙️ 类由店长或后台经[人员管理「可用系统」](./09-STM-门店管理.md#49-门店管理)授予（REQ-ACC-005）；**🔸 与 ❓ 项在待确认关闭前，一律按更严格的一侧实现**（REQ-ACC-006）；权限变更后用户下次进入 App 即生效（REQ-ACC-007）。

> 本次拆分发现矩阵**漏了一行**：订单确认页的「**选择返利抵扣**」同样是动用门店资金的动作，且与「提交订单」可分离（可以允许技工提交但不允许选返利）。回灌主文件附录 B 时建议单列一行，取值随 `TODO(REQ-PUR-002)`。

### 附-3 待确认项（主文件 10.2.6 + 本次新增）

| 编号 | 待确认内容 | 建议决策方 |
| --- | --- | --- |
| REQ-PUR-002 | 技工被授权后是否可提交订单（涉及资金） | 业务 |
| REQ-PUR-004 | 支付方式与 CDMS 支付的关系 | 财务 / 架构 |
| REQ-PUR-005 | 扫码收货与扫码入库是否合并为一次动作 | 业务 |
| REQ-PUR-009 | 车型字段（carModel）是否取自 RMS | 架构 |
| REQ-PUR-011 | **马牌与非马牌商品是否共用购物车与订单**（合并需跨来源拆单与状态聚合） | 架构 / 产品 |
| REQ-PUR-012 | 非马牌采购的支付方式、信用额度与账期是否与马牌一致 | 业务 / 财务 |
| REQ-PUR-013 | **非马牌商品是直连 F6 还是经 ROOS 代理**（需保证马牌采购记录仍进 ROOS） | 架构 / F6 |
| **REQ-PUR-014** | 缺货登记后的到货通知形式、登记记录的查看入口；非马牌商品是否同样支持 | 产品 / 业务 |
| **REQ-PUR-015** | 发货仓 / 销量 / 库存状态 / 可延保标 / 配送时效 / 商品编码的来源与取值集合；时效文案统一模板 | 业务 / 架构 |
| **REQ-PUR-016** | 运费「待双方商定」在 App 内如何呈现与确认；返利抵扣的可选额度来源；**是否存在独立的支付方式单选**（现状没有） | 财务 / 产品 |
| **REQ-PUR-017** | 额度不足的提示中是否提供「联系经销商」跳转或联系方式 | 业务 |
| **REQ-PUR-018** | 售后类型、可申请时限、退款去向（信用额度 / 返利 / 抵扣券）与审核流程 | 业务 / 财务 |

采购模块待确认项，共 12 条（主文件 [10.2.6](../Continental-Retail-APP-PRD.md#1026-采购pur) 原 7 条 + 本次新增 5 条）。**加粗编号为本次拆分新增**，回灌时需一并写入主文件 10.2.6，并同步[附录 D.2](../Continental-Retail-APP-PRD.md#d2-模块级追溯汇总) 的 PUR 行（13 / 7 / 46% → 18 / 12 / 33%）与第 10.2 节总数。

### 附-4 配图清单（主文件附录 C 4.6 节）

| 序 | 说明 | 文件 |
| --- | --- | --- |
| 1 | 设计稿-订单管理商品列表（规格 + 黑科技筛选、有货/促销开关、品牌下拉、4 张同款占位卡、缺货卡「去登记」） | `../app-design-images/订单管理-商品列表.png` |
| 2 | 现状-ROOS 商品选择（同构筛选、可延保 / 时效标、库存紧张 / 不足、缺货登记、ROOS 自身 tabbar） | `../mini-program-images/ROOS/商品选择.png` |
| 3 | 设计稿-订单管理购物车（按品牌分组、合计 / 已减 / 优惠明细 / 结算） | `../app-design-images/订单管理-购物车.png` |
| 4 | 现状-ROOS 购物车（共 1 件、编辑态入口、行内展示商品编码、⏱1小时） | `../mini-program-images/ROOS/购物车.png` |
| 5 | 现状-ROOS 订单确认（**测试地址数据**；订单按品牌拆为「订单1–德国马牌」；立减 / 优惠券 / 运费待双方商定 / 返利请选择 / 信用额度不可用；**无支付方式选择器**） | `../mini-program-images/ROOS/订单确认.png` |
| 6 | 现状-ROOS 订单确认额度不足（**提交后**弹「订单提交失败 / 账户额度不足，请联系经销商处理」，单按钮「我知道了」） | `../mini-program-images/ROOS/订单确认-额度不足提示.png` |
| 7 | 现状-ROOS 我的订单全部（**空态**；搜索 + 筛选；**六状态 tab**：全部/待支付/待发货/待收货/已收货/已取消） | `../mini-program-images/ROOS/我的订单-全部.png` |
| 8 | 现状-ROOS 我的订单待支付（**空态**；佐证 tab 切换后骨架不变） | `../mini-program-images/ROOS/我的订单-待支付.png` |
| 9 | 现状-ROOS 售后退款（**空态**；橙色提示条「退货订单将不会退回抵扣券」；按售后单号 / 销售订单号 + 日期区间检索） | `../mini-program-images/ROOS/售后退款.png` |

采购模块配图清单，9 张（设计稿 2 / 现状-ROOS 7）。说明较主文件[附录 C](../Continental-Retail-APP-PRD.md#附录-c-图表清单)已按实际截图内容补充，主文件附录 C 回灌时应一并更新。

**本模块配图的两处硬缺口**：

- **9 张图里有 3 张是空态**（第 7、8、9 张），1 张是重复占位数据（第 1 张），1 张是脏测试数据（第 5 张）。订单行、售后单行的实际字段与操作按钮**全部无法从现有材料确认**，建议向有真实订单的门店账号补采截图。
- **收货流程与订单详情页完全没有配图**（既无设计稿也无现状截图）。收货确认页是否逐条核对、能否部分收货、拒收如何记录，以及订单详情页的可执行操作，目前没有任何页面材料支撑 —— 这两处直接影响 `TODO(REQ-PUR-005)` 的决策，建议优先补稿。

### 附-5 本次拆分新增发现

逐张核看 9 张配图后，新增 **5 条编号需求**（REQ-PUR-014 ~ 018）、**修订 3 处既有内容**、另记 **3 条无编号观察**。

**新增需求**：

| 编号 | 名称 | 触发证据 |
| --- | --- | --- |
| REQ-PUR-014 | 缺货登记与到货通知 | 设计稿与 ROOS 商品列表的缺货卡都给「去登记 / 缺货登记」按钮，而非正文写的「置灰」 |
| REQ-PUR-015 | 商品卡与购物车字段 | 发货仓「浦东新仓」、销量「已售 3426」、可延保标、时效标、商品编码均不在 4.6.8 的 10 个字段内 |
| REQ-PUR-016 | 订单确认页费用构成 | 现状为「立减 / 优惠券 / 运费待双方商定 / 返利请选择 / 信用额度」，**没有支付方式选择器** |
| REQ-PUR-017 | 额度校验时机 | 现状是提交后弹失败框，与 REQ-PUR-003「提交前校验」及验收标准第 2 条冲突 |
| REQ-PUR-018 | 售后退款规则 | 「退货订单将不会退回抵扣券」是一条涉及资金、却完全未成文的规则 |

**修订的既有内容**：

1. **[REQ-PUR-006](#467-业务规则) 订单状态机由五状态改为六状态** —— 现状 tab 为「全部 / 待支付 / 待发货 / 待收货 / 已收货 / 已取消」；原文把「待收货」写作「已发货」，且漏掉了「已收货」。同步改了 [4.6.1](#461-需求描述) 的状态变化、[4.6.5](#465-订单管理与售后) 正文与[验收标准第 4 条](#469-验收标准)。
2. **[4.6.2](#462-产品搜索与商品列表) 的「左侧树形分类」描述被两张图否定** —— 实际是顶部平铺筛选 + 单列商品卡，无分类树。正文已改，`productCategory` 的「树形分类」备注也需复核。
3. **[4.6.1](#461-需求描述) 异常流程「商品下架/无库存 → 列表置灰」拆成两条** —— 无库存换成「缺货登记」入口，下架商品不在列表返回。

**无编号观察**（属现状材料或设计稿状态问题，不新增需求）：

1. **配送时效标有三种写法** —— 「最快45分钟」「⏱45分钟」「⏱1小时」，App 侧需统一文案模板，已并入 REQ-PUR-015。
2. **购物车设计稿的「德国马牌 / 维京轮胎」分组不能证明 [REQ-PUR-011](#467-业务规则) 已解决** —— 两者同属 ROOS，真正的分歧是 ROOS 与 F6 商品能否共用购物车，图中未涉及。但订单确认页「订单1–德国马牌」说明 ROOS 内部**已按品牌拆单**，这是决策的重要实证输入。
3. **售后页搜索框用的是平台视角的「销售订单号」** —— 门店视角同一张单叫「采购订单」，整合进 App 后须统一措辞，否则与[销售模块](./03-SAL-销售.md#43-销售)的销售订单混淆。已写入 REQ-PUR-018。

另有一条给主文件附录 B 的建议：**补一行「选择返利抵扣」** —— 该动作动用门店资金且可与「提交订单」分离授权，现有矩阵未覆盖，见[附-2](#附-2-权限矩阵主文件附录-b-本模块分行)。
