feat(changelog): 报账款支持部分收款(组合还款分多次,PARTIAL_RECEIVED 中间态)(#7838 / PR #7840)
changelog-filename-gate / validate (push) Failing after 2s

这个提交包含在:
yaosutu
2026-09-16 23:48:14 +08:00
父节点 9676e6452b
当前提交 0f9e87db01
@@ -0,0 +1,144 @@
---
schema: "hl-changelog/v2"
ticket: "finance-reimburse-partial-receive"
title: "报账款支持部分收款(司导组合还款分多次,新增 PARTIAL_RECEIVED 状态)"
consumer: "admin"
author: "yst(GIT)"
change_type: "修改接口"
backend_status: "merged"
gateway_status: "verified"
frontend_status: "pending"
frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: "2026-09-16"
status_note: "报账款收款确认入账 confirm-in 支持部分收款(司导组合还款分多次:如 600 银行卡+300 现金+100 微信)。①confirm-in 入参加必填 amount(本次收款额,此前无金额字段默认全额);②状态机新增 PARTIAL_RECEIVED 部分收讫中间态(没付齐保持未完结,收齐翻 RECEIVED);③报账详情/队列出参补 receivedAmount/remainingAmount/receivedAt;④资金流水接口加 bizId 过滤(按单据捞收款明细);⑤超额硬拦新错误码 598611。付款侧 pay 不动。已合并 dev-v3(PR #7840),657 测试全绿。"
updated_at: "2026-09-16"
base: "dev-v3"
---
# 报账款支持部分收款(司导组合还款分多次)
> **服务**: hl-order-service-v3(hl-finance 模块)
> **类型**: ✏️ 修改接口(**入参加必填字段 + 出参加字段 + 状态枚举新增 + 新错误码**)
> **日期**: 2026-09-16
> **接口**: `POST /admin/finance/cashier/confirm-in`(收款确认入账)+ `GET /admin/finance/reimburses/{id}` + `GET /admin/finance/cashier/queue` + `GET /admin/finance/fund-flows/page`
> **关联**: Issue #7838 / PR #7840
---
## 🔴 一句话给前端
司导还款(报账款 RECEIVABLE 方向)现在**支持分多次组合收款**:一笔应收可以拆成「600 银行卡 + 300 现金 + 100 微信」分次登记,没付齐单据保持「部分收款」未完结,收齐才完结。
**前端必改**:confirm-in 入参**新增必填 `amount`**(本次收款金额),不再默认全额。
---
## 一、收款确认入账 confirm-in 入参变化
`POST /admin/finance/cashier/confirm-in`(bizType=REIMBURSE 时):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `amount` | number | **✅ 新增必填** | 本次收款金额(>0,≤ 剩余待收)。**此前无此字段(默认全额 settle_amount),现在必传** |
其余入参(bizType/bizId/payAccountId/payMethod/payChannel/voucherNo/voucherUrl/payDate)不变。
### 典型场景(组合还款分 3 次)
应收 1000(RECEIVABLE 单,settleAmount=1000):
| 次数 | 请求 amount | 方式 | 结果 |
|---|---|---|---|
| 第1次 | 600 | 银行卡 | 记流水 +600,已收 600,状态 **PARTIAL_RECEIVED** |
| 第2次 | 300 | 现金 | 记流水 +300,已收 900,状态 **PARTIAL_RECEIVED** |
| 第3次 | 100 | 微信 | 记流水 +100,已收 1000=应收,状态翻 **RECEIVED** 完结 |
每次收款一个账户一种方式,记一条独立资金流水;同一单可多次调 confirm-in 直到收齐。
## 二、新增状态 PARTIAL_RECEIVED
报账款单据状态枚举新增中间态:
| 状态 | 中文 | 说明 |
|---|---|---|
| `PARTIAL_RECEIVED` | **部分收款(新增)** | 已收一部分但未收齐,可继续收款,**非终态** |
| `RECEIVED` | 已回款 | 收齐终态(原有) |
状态流转:`APPROVED →(首次收款,未收齐)→ PARTIAL_RECEIVED →(续收至收齐)→ RECEIVED`;一次收全额则 `APPROVED → RECEIVED` 直达。
> ⚠️ PARTIAL_RECEIVED 资金已动(已记流水),**不可反审、不可反确认核单**(同 PAID/RECEIVED)。前端审核操作按钮对该态应禁用。
## 三、出参新增字段(报账详情 + 出纳队列行)
`GET /admin/finance/reimburses/{id}` 详情 + `GET /admin/finance/cashier/queue` 队列行,均新增:
| 字段 | 类型 | 说明 |
|---|---|---|
| `receivedAmount` | number | 累计已收金额(部分收款快照,未收过为 0) |
| `remainingAmount` | number | 剩余待收 = settleAmount − receivedAmount |
| `receivedAt` | string | 最后收款时间(yyyy-MM-dd HH:mm:ss,未收过为 null) |
前端可据此显示「已收 X / 剩余 Y」,并对 remainingAmount=0 的单隐藏「确认到账」入口。
## 四、资金流水接口加 bizId 过滤(查收款明细)
`GET /admin/finance/fund-flows/page` 入参新增:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `bizId` | number | 否 | 业务单据ID。配合 `bizType=REIMBURSE` 按单据捞该单全部收款流水(收款明细) |
**收款明细查询**:`GET /admin/finance/fund-flows/page?bizType=REIMBURSE&bizId={报账单ID}`,返回该单每次收款的流水(方式/账户/金额/凭证/时间,flowAt 倒序)。
## 五、新错误码
| 错误码 | 触发 | 说明 |
|---|---|---|
| `598611` | confirm-in 金额 > 剩余待收 | 「收款金额超过剩余待收」——本次收款 ≤ settleAmount − receivedAmount,多还走退款链路 |
| `598605` | amount 缺失/≤0 | 「收款金额非法」(复用既有码) |
## 六、示例(confirm-in 请求 + 响应)
**请求**(第 1 次收 600 银行卡):
```json
{
"bizType": "REIMBURSE",
"bizId": "2100084841021145090",
"payAccountId": "70001",
"payMethod": "BANK",
"amount": 600.00,
"payDate": "2026-09-16",
"voucherNo": "SK001"
}
```
**响应**(记流水成功,单据翻 PARTIAL_RECEIVED):
```json
{
"code": 0,
"data": {
"flowId": "66020",
"flowNo": "LS202609160020",
"balanceAfter": 10600.00,
"bizId": "2100084841021145090"
}
}
```
## 七、影响评估 / 回滚
- **入参变化(必看)**:confirm-in 新增必填 `amount`——前端**必须传**,否则 598605。原「不传=全额」改为「传全额=全额」(收全额时传 remainingAmount/settleAmount 即可)。
- **出参新增**:receivedAmount/remainingAmount/receivedAt/bizId 纯新增,老前端不读不影响。
- **状态枚举新增**:PARTIAL_RECEIVED 新值,前端状态映射表需补中文名「部分收款」。
- 付款侧 pay 不变。已合并 dev-v3,657 测试全绿。
## 八、关联 / 联系人
- Issue:[#7838](https://git.1814.love:8443/wx/HL/issues/7838)
- PR:[#7840](https://git.1814.love:8443/wx/HL/pulls/7840)
- 前置:[报账款模块接入指引](16_7721_报账款模块接入指引-新增接口-管理后台.md)
- 负责人:腰苏图(yst)| 反馈:财务域后端对接群 / 直接 @yst