供应商结算管理 — 功能需求
1. 文档说明
| 项 |
说明 |
| 模块名称 |
供应商结算管理(交易市场平台) |
| 目标 |
对交易订单完成支付后自动生成的结算单进行查询、完成结算付款(上传结算凭证)及凭证打印;完成结算为本模块及平台业务链的终点,与 交易订单管理 共同形成「交易 → 订单支付 → 结算付款」闭环 |
| 当前版本 |
1.1 |
| 依据 |
同目录 供应商结算管理-草稿.md、原型 Snipaste_2026-05-22_13-55-35.jpg |
| 关联 |
../交易订单管理/交易订单管理功能需求.md(订单支付触发本模块数据;费用快照在订单侧生成) |
| 范围 |
仅功能与业务规则;不含库表、接口、报文、技术栈 |
1.1 使用角色与入口
| 角色 |
场景 |
| 财务/结算人员 |
查询待结算单、完成结算、打印结算凭证 |
| 交易市场运营人员 |
查询结算进度、查看与订单的对照(不在本模块创建结算单) |
| 系统管理员 |
菜单与权限配置 |
默认进入 供应商结算单列表。
1.2 模块关系(业务视角)
供应商管理 ──────► 收费方式/费率(订单完成支付时快照至结算单)
交易订单管理 ────► 完成支付 → 自动生成一条结算单(待结算)
│
▼
供应商结算管理 ────► 待结算 → 完成结算(结算凭证)→ 已完成(**流程终点**,无后续必办)
| 关联模块 |
关系 |
约束 |
| 交易订单管理 |
唯一数据来源 |
结算单仅由订单「完成支付」成功时自动产生;一对一 |
| 供应商管理 |
展示供应商名称;费用依据生成时快照 |
结算单生成后不随供应商主数据改费率而重算 |
| 承销商管理 |
不直接出现在结算单主信息 |
承销商信息在关联订单中查看 |
| 市场进栏登记 |
无直接操作 |
订单完成支付后释放进栏耳标,与本模块无界面交互 |
职责边界: 订单侧负责「买方的支付凭证」;本模块负责「付给供应商的结算凭证」。两种凭证、两个业务阶段,不可混用。
2. 核心业务概念
2.1 一条供应商结算单
针对一笔已完成支付的交易订单,系统生成一条结算记录,用于向该订单供应商支付扣除服务费后的金额。
| 信息项 |
说明 |
| 结算单编号 |
系统生成,业务唯一;规则见 §3.1 |
| 关联订单编号 |
来源订单编号;用于业务追溯与列表筛选 |
| 供应商 |
与关联订单一致 |
| 交易总头数 |
生成时取自订单,单位「头」 |
| 交易总金额 |
生成时取自订单,单位「元」,保留 2 位小数展示 |
| 服务费金额 |
生成时按供应商收费规则计算并固化,单位「元」 |
| 实际应付结算金额 |
生成时计算并固化,单位「元」 |
| 结算状态 |
待结算 / 已完成 |
| 结算凭证 |
本模块「完成结算」时上传;此前为空 |
| 结算创建时间 |
结算单生成时刻(= 订单完成支付成功时刻) |
| 结算完成时间 |
「完成结算」成功时写入;此前为空 |
2.2 状态与流转
| 状态 |
含义 |
允许操作(见 §8.2) |
| 待结算 |
订单已支付,尚未上传结算付款凭证 |
完成结算、查看 |
| 已完成 |
已上传结算凭证并完成付款登记 |
查看、打印凭证 |
- 流转:仅 待结算 → 已完成,不可逆。
- 已完成不可再次「完成结算」、不可修改金额类字段、不可删除结算单(本期无作废)。
(无)──订单完成支付──► 待结算 ──完成结算+凭证──► 已完成
2.3 数据生命周期
| 阶段 |
说明 |
| 产生 |
仅交易订单「完成支付」成功时自动插入一条,初始为待结算 |
| 维护 |
用户在本模块完成结算、查询、打印 |
| 删除 |
本期不提供用户删除;订单已完成后亦不可通过删订单消除结算单 |
3. 字段与展示规则
3.1 结算单编号
- 用户不可录入;生成时系统分配;全生命周期不可改。
- 规则:
JSD + YYYYMMDD + 3 位当日序号(001~999,左补零),如 JSD20260520001。
- 与订单编号相互独立;业务关联靠 关联订单编号。
- 当日序号用尽(超过 999)时,订单侧完成支付若无法生成结算单应失败(由订单模块事务保证,本模块不出现无编号记录)。
3.2 关联订单编号
- 只读;生成时写入,与订单主表编号一致。
- 列表支持按该字段模糊筛选。
- 详情中仅展示关联订单编号(只读);本期不提供跳转、链接至交易订单详情或新开订单页(用户若需核对订单,自行至 交易订单管理 查询)。
3.3 供应商
- 只读;与关联订单供应商一致。
- 展示供应商名称(来自主数据);生成时固化
supplier 业务主键,用户不可改。
3.4 交易总头数、交易总金额
- 只读;生成时与订单
交易总头数、交易总金额 完全一致。
- 订单完成后即使主单展示值被误改(实施应禁止),结算单仍以生成时刻快照为准。
3.5 服务费金额(快照)
生成时按关联订单供应商在 供应商管理 中的收费配置计算,写入后不再自动重算。
| 收费方式(生成时) |
服务费金额(元) |
| 按户计费 |
0 |
| 按头计费 |
交易总头数 × 收费标准(元/头) |
| 按额计费 |
交易总金额 ×(交易费率 + 管理费率)÷ 100 |
精度:保留 2 位小数;四舍五入至分。按额计费时先合计费率(%)再乘以交易总金额。
详情/列表须能展示当时采用的收费方式及费率快照(便于财务核对),展示形式与原型一致(可为只读标签或字段组)。
3.6 实际应付结算金额(快照)
- 只读;生成时计算:实际应付结算金额 = 交易总金额 − 服务费金额。
- 与 §3.5 同一时刻固化,保留 2 位小数、四舍五入。
- 用户不可手工改价、不可改服务费后自动联动(无「改单」能力)。
3.7 结算凭证
| 阶段 |
规则 |
| 待结算 |
无 |
| 完成结算 |
必填;单张图片;后缀 jpg / jpeg / png;≤ 10MB(与交易订单支付凭证 §3.6 一致) |
| 已完成 |
列表/详情可查看、打印凭证须能展示 |
结算凭证表示向供应商付款的凭据,不是订单的支付凭证。
3.8 时间字段
| 字段 |
写入时机 |
规则 |
| 结算创建时间 |
结算单生成成功 |
系统当前时间;用户不可改 |
| 结算完成时间 |
完成结算成功 |
系统当前时间;此前为空 |
4. 结算单来源(本模块不可新建)
4.1 唯一来源
| 规则 |
说明 |
| 触发点 |
交易订单管理 → 待支付订单 → 完成支付成功 |
| 数量 |
一笔订单 → 一条结算单 |
| 禁止手工建单 |
本模块无「新增结算单」 |
| 禁止合并 |
不可选择多笔订单生成一张结算单 |
| 禁止选订单 |
用户不能在本模块挑选订单再生成结算 |
4.2 生成失败时的协同
若订单完成支付过程中结算单生成失败(含编号冲突、事务中断等),按 交易订单管理 §6.3:订单保持待支付,无结算单;用户修正后可重试完成支付。本模块列表不出现半成品记录。
4.3 生成成功后的可见性
- 生成后立即可在本模块列表查到,状态为待结算。
- 列表默认按 结算创建时间 降序。
5. 列表查询
5.1 筛选项
| 筛选项 |
匹配方式 |
| 结算单编号 |
模糊 |
| 关联订单编号 |
模糊 |
| 组合 |
条件同时生效(AND) |
- 仅展示有效结算记录(与项目逻辑删除惯例一致;本期无回收站)。
- 默认每页 20 条。
- 工具栏:搜索、重置(无「新增」)。
5.2 列表列
| 列名 |
说明 |
| 结算单编号 |
— |
| 结算创建时间 |
— |
| 关联订单编号 |
— |
| 供应商 |
名称展示 |
| 交易总头数 |
单位「头」 |
| 交易总金额 |
单位「元」 |
| 服务费金额 |
单位「元」 |
| 实际应付结算金额 |
单位「元」 |
| 结算状态 |
待结算 / 已完成 |
| 结算凭证 |
已完成可查看入口;待结算为空 |
| 结算完成时间 |
已完成有值;待结算为空 |
| 操作 |
见 §8.2 |
6. 完成结算(本模块业务闭环终点)
本模块业务闭环为:待结算 → 上传结算凭证 → 已完成。完成结算成功后,该结算单在本模块内无后续必办步骤(可查询、打印凭证);不引导、不依赖跳转订单模块。
6.1 入口
仅 待结算 记录显示「完成结算」→ 弹窗 「完成结算支付」(与原型文案一致)。
6.2 弹窗
- 结算凭证:必填,§3.7。
- 确定 / 取消(取消不改变结算单)。
6.3 确定后(须同一业务事务,全部成功或全部回滚)
| 序号 |
动作 |
| 1 |
结算状态 → 已完成 |
| 2 |
写入 结算完成时间 |
| 3 |
保存 结算凭证 |
任一步失败:结算单保持 待结算,提示原因;不得出现「已完成但无凭证」。
6.4 前置校验
除结算凭证外,须满足:
- 结算单仍为 待结算;
- 关联订单仍为 已完成 且有效(未被逻辑删除);
- 不得已存在结算完成时间或已完成状态(防重复提交)。
6.5 重试与幂等
| 情况 |
处理 |
| 待结算下再次点击「完成结算」 |
允许重新上传凭证后确定 |
| 已完成 |
不显示完成结算 |
| 并发重复提交 |
以首次成功为准;后续应提示已完成或操作无效 |
6.6 对关联订单的影响
- 完成结算不回写订单状态(订单保持已完成)。
- 不可因结算完成而撤销或修改订单支付凭证。
- 不在本模块内打开或跳转订单界面;闭环在结算单状态变为已完成时结束。
7. 查看
- 所有状态均可「查看」。
- 详情为只读:§3 全部展示项 + 收费快照明细 + 结算凭证预览 + 审计信息(创建人/时间等,与项目惯例一致)。
- 不可在详情页修改金额或状态(无编辑入口)。
- 详情页无「查看订单」「跳转订单」等按钮或链接。
8. 功能清单
8.1 本期不提供
| 能力 |
说明 |
| 新增结算单 |
仅订单完成支付自动生成 |
| 修改结算单 |
金额、供应商、关联订单均不可改 |
| 删除 / 作废结算单 |
— |
| 部分结算 / 分期付款 |
— |
| 批量导入导出 |
— |
| 在本模块完成订单支付 |
属交易订单管理 |
| 替换或上传订单支付凭证 |
属交易订单管理 |
8.2 按状态操作矩阵
| 状态 |
操作 |
| 待结算 |
完成结算、查看 |
| 已完成 |
打印凭证、查看 |
无权限则不显示对应按钮。
8.3 打印凭证
| 项 |
规则 |
| 范围 |
仅已完成 |
| 内容 |
结算单编号、关联订单编号、供应商、交易总头数、交易总金额、服务费、实际应付、结算状态、结算创建/完成时间、结算凭证图像 |
| 不含 |
订单支付凭证、采购明细耳标(若需耳标级明细,在订单模块打印订单凭证) |
待结算不提供「打印凭证」;已完成不提供「完成结算」。
9. 业务流程图
9.1 结算主流程(本模块)
flowchart TD
L[结算单列表] --> F{筛选?}
F --> L
L --> V[查看详情]
L --> P{待结算?}
P -->|是| Pay[完成结算+结算凭证]
Pay --> OK{成功?}
OK -->|否| L
OK -->|是| Done[已完成]
Done --> Pr[打印凭证]
P -->|否| Pr2[打印凭证]
Pr2 --> L
Pr --> L
9.2 与交易订单端到端
sequenceDiagram
participant ME as 市场进栏
participant O as 交易订单
participant S as 供应商结算
participant SUP as 供应商管理
ME->>O: 建单待支付
O->>O: 完成支付(订单支付凭证)
O->>SUP: 读取收费配置
O->>S: 生成结算单(待结算,金额快照)
O->>ME: 删除已成交进栏耳标
S->>S: 完成结算(结算凭证)
Note over O,S: 订单保持已完成
9.3 状态对照(订单 × 结算)
stateDiagram-v2
[*] --> 订单待支付: 保存订单
订单待支付 --> 订单已完成: 完成支付
订单已完成 --> 结算待结算: 自动生成
结算待结算 --> 结算已完成: 完成结算
note right of 订单待支付: 无结算单
note right of 结算已完成: 订单仍为已完成
10. 关联需求分析(交易订单管理)
详细规则以 ../交易订单管理/交易订单管理功能需求.md 为准;本节保证两模块可联调、无歧义。
10.1 职责对照
| 能力 |
交易订单管理 |
供应商结算管理(本模块) |
| 采购明细、耳标 |
✓ |
— |
| 订单支付凭证 |
✓ |
— |
| 触发创建结算单 |
✓(完成支付事务内) |
被动接收 |
| 服务费 / 实际应付计算 |
✓(生成时计算并快照) |
只读展示 |
| 结算凭证、结算完成 |
— |
✓ |
| 按结算单号 / 订单号查询 |
— |
✓ |
| 打印订单小票/凭证 |
✓ |
— |
| 打印结算凭证 |
— |
✓ |
10.2 关键字段一致性(生成时刻)
| 概念 |
订单侧 |
结算侧 |
一致性要求 |
| 业务关联键 |
订单编号 |
关联订单编号 |
相等 |
| 供应商 |
订单供应商 |
结算供应商 |
相等 |
| 交易总头数 |
头 |
头 |
相等 |
| 交易总金额 |
元 |
元 |
相等 |
| 服务费 |
— |
元 |
按 §3.5 公式,生成时一次计算 |
| 实际应付 |
— |
元 |
总金额 − 服务费 |
| 编号体系 |
YYYYMMDD+3 位 |
JSD+日期+3 位 |
独立编号,勿混用 |
10.3 时间与状态协同
| 订单状态 |
结算单 |
说明 |
| 待支付 |
不存在 |
完成支付前本模块无数据 |
| 已完成 |
必有待结算或已完成 |
完成支付成功即生成待结算 |
| 已完成(不变) |
已完成 |
结算完成后订单不回退 |
| 时间字段 |
订单 |
结算 |
| 业务起始 |
订单创建时间 |
结算创建时间(≈ 订单完成时间) |
| 业务结束 |
订单完成时间 |
结算完成时间 |
10.4 费用快照协同
- 订单「完成支付」时,若供应商收费方式未配置,订单应拒绝支付,不生成结算单(见订单 §6.5、§11)。
- 结算单保存的费率、收费标准为生成瞬间供应商主数据快照;事后修改 供应商管理 中的费率,已生成结算单金额不变。
- 财务以结算单金额为准进行付款,不以最新主数据重算。
10.5 凭证双轨
| 凭证 |
所属阶段 |
上传模块 |
用途 |
| 支付凭证 |
买方支付订单 |
交易订单管理 |
证明承销商/买方已付款 |
| 结算凭证 |
向供应商付款 |
供应商结算管理 |
证明平台已向供应商结算 |
两种凭证不可互替;打印、查看各自在对应模块完成。
10.6 异常与边界(联调清单)
| 场景 |
处理原则 |
| 订单完成支付失败 |
无结算单;本模块无记录 |
| 订单完成支付成功 |
必有且仅有 1 条待结算单 |
| 订单待支付被逻辑删除 |
不应存在对应结算单 |
| 订单已完成 |
不可删订单;结算单保持 |
| 结算待支付重复「完成结算」失败 |
保持待结算,可重试 |
| 结算已完成 |
不可再次完成结算;订单仍已完成 |
| 供应商主数据后续变更 |
不影响已生成结算单金额 |
| 进栏耳标在支付后删除 |
订单/结算历史数据不变;仅影响后续新订单耳标池 |
10.7 端到端业务链(平台视角)
市场进栏登记 → 交易订单(待支付) → 完成支付(订单凭证+生成结算单+释放耳标)
→ 供应商结算(待结算) → 完成结算(结算凭证) → 闭环
11. 权限(业务层)
查询列表、查看详情、完成结算、打印凭证 — 由实施按角色配置,本文不列权限编码。
建议分工示例:
| 角色 |
建议能力 |
| 财务/结算 |
列表、查看、完成结算、打印凭证 |
| 运营 |
列表、查看(可选) |
| 管理员 |
全部 + 菜单配置 |
12. 提示语(示例)
| 情况 |
示例 |
| 缺结算凭证 |
请上传结算凭证 |
| 凭证格式/大小 |
文件格式或大小不符合要求 |
| 非待结算操作 |
仅待结算状态可完成结算 |
| 已完成重复操作 |
结算单已完成,无需重复操作 |
| 完成结算失败 |
完成结算失败:{原因} |
| 打印 |
仅已完成结算单可打印凭证 |
13. 非功能建议
| 项 |
建议 |
| 权限 |
完成结算与查询分权 |
| 审计 |
完成结算留痕 |
| 事务 |
完成结算与状态、凭证、时间同一事务 |
| 易用性 |
完成结算二次确认(宜展示结算单号、供应商、实际应付) |
14. 已确认业务决策(评审纪要)
| 序号 |
决策 |
| 1 |
结算单仅由交易订单完成支付自动生成,本模块不可新增 |
| 2 |
一笔订单对应一条结算单,不可合并多订单 |
| 3 |
服务费、实际应付以生成时快照为准,不随供应商主数据变更重算 |
| 4 |
金额 2 位小数、四舍五入 |
| 5 |
结算凭证规则与订单支付凭证一致(图片、10MB、jpg/jpeg/png) |
| 6 |
结算完成后不回写订单状态 |
| 7 |
待结算可完成结算;已完成可打印凭证、查看 |
| 8 |
列表按结算单编号、关联订单编号模糊筛选 |
| 9 |
完成结算即本模块业务闭环终点;详情/列表不跳转交易订单 |
| 10 |
关联订单编号仅作展示与筛选,跨模块查订单由用户自行进入订单模块 |
15. 草稿对照
| 草稿条目 |
章节 |
| 列表查询 1~2 |
§5 |
| 服务费、实际应付 3~4 |
§3.5、§3.6 |
| 编号 5 |
§3.1 |
| 订单生成 6 |
§4 |
| 状态 7 |
§2.2 |
| 完成结算 8 |
§6 |
| 查看 9 |
§7 |
| 操作 10~11 |
§8.2 |
| 异常格式、技术栈 12~13 |
不纳入本文 |
16. 修订记录
| 版本 |
说明 |
| 1.0 |
初稿:对齐交易订单 v1.2;结算来源/状态/完成结算/打印;关联分析 §10;不含库表接口 |
| 1.1 |
拍板:完成结算为模块闭环终点;不提供跳转/链接至交易订单(§3.2、§6、§7、§14) |