schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
| schema |
ticket |
title |
consumer |
author |
change_type |
backend_status |
gateway_status |
frontend_status |
frontend_owner |
frontend_ref |
target_release |
verified_at |
status_note |
updated_at |
base |
| hl-changelog/v2 |
7428 |
预付款功能:后端全链路已就绪,前端需补「预付款」菜单与页面 |
admin |
yst(GIT) |
新增接口 |
deployed |
verified |
verified |
mmg |
30bb7ebb53b90d5290a9d6af3a81e516ad35f3ae |
|
2026-09-15 |
预付款域(#7428)后端全链路接口已就绪并部署:申请/编辑/删除/提交/批准/驳回/分页/详情 + 出纳付款(cashier/pay bizType=PREPAY) + 冲抵余额(available_amount)。但真实管理后台尚未提供「付款管理 / 预付款」菜单与页面(前端 finance 模块下无 prepay 视图),功能当前不可用。请前端补菜单 + 页面并对接本文接口清单;出纳「应付款支付」页需支持 payType=PREPAY 队列与付款。 前端已交付(e268e348):api/finance/prepay.js 8 端点+五态字典;新增「付款管理/预付款」管理页 finance/payable/prepay(状态/供应商弹窗筛选/关键字,申请/编辑弹窗对齐原型 pay-adv,保存并提交审核两段,批准录意见/驳回录原因,状态门显隐,详情抽屉;冲抵记录 Tab 无接口本期不做);出纳侧 CashierQueuePage payType 加 PREPAY(外部单位线含手续费,继承 #7713 金额锁死与 #7695 账户过滤)+薄壳 finance/pay/prepay。菜单行(付款管理/预付款 component=finance/payable/prepay、支付管理/预付款支付 component=finance/pay/prepay)需后端 yst 在 sys_menu 配置,动态路由落位即解析。spec 22/22,checkpoint 13 项全绿。 菜单路径纠错(30bb7ebb):后端 sys_menu 实配 component=finance/payable/advance(与原预估 prepay 不符),前端 git mv finance/payable/prepay→advance、finance/pay/prepay→advance 对齐,storage key 改 finance-payable-advance;api/finance/prepay.js 不动(API 契约 /admin/finance/prepays/* 不变)。「支付管理/预付款支付」菜单行 sys_menu 尚未配置,待后端补配。spec 22/22 复跑全绿。 |
2026-09-15 |
dev-v3 |
预付款功能:后端全链路已就绪,前端需补「预付款」菜单与页面(新增接口)
服务: hl-order-service-v3(hl-finance 模块)
Issue: #7428(预付款域)
日期: 2026-09-15(后端已部署测试服)
影响范围: 新增「预付款」整域接口;前端需新增菜单 + 页面,并在「应付款支付」页支持预付款付款
⚠️ 一句话结论
预付款后端接口已全部做好并部署,但真实管理后台没有预付款菜单和页面(src/views/finance/ 下无 prepay 目录),功能当前在前端用不了。请前端新增「付款管理 / 预付款」菜单 + 页面,按本文接口清单对接。
一、背景与业务链路
预付款 = 先付给供应商一笔钱挂着,后续给该供应商付应付款时用这笔预付余额冲抵(少付现金)。
- 预付款与应付款是两个独立单据类型(出纳付款
bizType 分别为 PREPAY / PAYMENT),不混表。
- 预付款付款后产生
available_amount(可冲抵金额),随冲抵递减。
二、变更清单(前端待办)
| 项 |
说明 |
| 新增菜单 |
「付款管理 / 预付款」(原型 pay-adv 页,页内子 Tab:预付款 / 冲抵记录) |
| 预付款列表页 |
分页 + 状态/供应商筛选 + 单号/供应商名关键字 |
| 申请/编辑弹窗 |
新建 PENDING 草稿、编辑草稿(仅 PENDING) |
| 审批操作 |
提交 / 批准(可录审批意见)/ 驳回(录驳回原因) |
| 删除草稿 |
仅 PENDING,软删 |
| 详情 |
全字段只读 |
| 应付款支付页 |
出纳队列/付款需支持 payType=PREPAY(与既有 PAYMENT 并列) |
三、接口清单(全部已就绪,base 前缀 /admin/finance)
| 操作 |
方法/路径 |
说明 |
| 分页 |
GET /admin/finance/prepays/page |
状态/供应商筛选 + 关键字 |
| 申请 |
POST /admin/finance/prepays |
落 PENDING 草稿 |
| 详情 |
GET /admin/finance/prepays/{id} |
全字段 |
| 编辑 |
PUT /admin/finance/prepays/{id} |
仅 PENDING |
| 删除 |
DELETE /admin/finance/prepays/{id} |
仅 PENDING,软删 |
| 提交 |
PUT /admin/finance/prepays/{id}/submit |
PENDING → SUBMITTED |
| 批准 |
PUT /admin/finance/prepays/{id}/approve |
SUBMITTED → APPROVED,可录意见 |
| 驳回 |
PUT /admin/finance/prepays/{id}/reject |
SUBMITTED → REJECTED,录原因 |
| 出纳队列 |
GET /admin/finance/cashier/queue?payType=PREPAY |
待付款预付款单 |
| 出纳付款 |
POST /admin/finance/cashier/pay(bizType=PREPAY) |
APPROVED → PAID,记流水 |
四、入参
4.1 申请预付款 POST /admin/finance/prepays
| 字段 |
类型 |
必填 |
说明 |
supplierId |
long |
✅ |
付款单位供应商ID |
offsetSupplierId |
long |
否 |
冲抵单位供应商ID,默认=supplierId |
amount |
number |
✅ |
预付金额(>0) |
availableAmount |
number |
否 |
可冲抵金额,默认=预付金额;须 0 ≤ x ≤ 预付金额 |
payDate |
string |
✅ |
付款日期 yyyy-MM-dd |
remark |
string |
否 |
备注 |
4.3 驳回 PUT /{id}/reject:{ "reason": "驳回原因" }
五、出参(列表行 / 详情共有字段)
| 字段 |
类型 |
说明 |
id |
string |
预付款ID(Long 序列化 string) |
prepayNo |
string |
预付单号(YF- 前缀) |
supplierId / supplierName |
long/string |
付款单位供应商 |
offsetSupplierId / offsetSupplierName |
long/string |
冲抵单位供应商 |
amount |
number |
预付金额 |
availableAmount |
number |
可冲抵金额(随冲抵递减) |
payDate |
string |
付款日期 |
status |
string |
状态码(见六) |
operatorName |
string |
经办人 |
createTime |
string |
创建时间 |
六、状态机(status 码值)
| 值 |
含义 |
可执行操作 |
PENDING |
草稿 |
编辑 / 删除 / 提交 |
SUBMITTED |
审批中 |
批准 / 驳回 |
APPROVED |
已批准(待付款,入出纳队列) |
出纳付款 |
REJECTED |
已驳回 |
—(终态) |
PAID |
已付讫(出纳已打款,产生可冲抵余额) |
后续被应付款冲抵 |
七、错误码
| 码 |
含义 |
触发 |
| 598610 |
付款金额与单据应付金额不一致 |
出纳付款 amount ≠ 审批预付金额 amount(#7713 金额锁死) |
| 598609 |
收付账户与收付方式不匹配 |
出纳付款账户类型与方式不符(#7698) |
| PrepayErrorCode 段 |
状态非法/单据不存在/金额校验 |
如对非 PENDING 编辑、可冲抵金额超预付金额 等 |
八、示例
8.1 申请预付款
→ { "code":200, "data":{ "id": "..." }, "success":true }(落 PENDING)
8.2 走完整审批链
8.3 出纳付款(应付款支付页,payType=PREPAY)
⚠️ amount 必须 = 审批预付金额(本例 5000),否则 598610(#7713 锁死)。成功 → PAID,记资金流水。
九、业务边界
- 预付款批准后进出纳队列(
payType=PREPAY),由出纳真正打款;审批本身不动钱。
- 出纳打款后钱挂到
available_amount,付应付款时冲抵(冲抵能力属应付款域,本次不含)。
- 企微审批未接通,批准/驳回本期为手工置状态(同应付款/报销口径)。
- 预付款自身不关联订单/团,是纯供应商维度的预付。
十、影响评估 / 回滚
- 纯新增功能,不动既有接口契约,无破坏性。
- 前端未接前功能不可用,无存量影响;接入后即可用。
十一、注意事项
- Long 入参(supplierId/bizId/payAccountId)JSON 传 number;出参 Long 已序列化 string。
- 出纳「应付款支付」页务必加
payType=PREPAY 的队列查询与付款入口(与 PAYMENT 并列),否则预付款批了也没法打款。
- 付款金额只读展示审批预付金额(#7713 锁死口径)。
十二、关联 / 联系人
- Issue: #7428(预付款域后端)
- 相关: #7713(付款金额锁死 598610)、#7698(方式↔账户校验 598609)
- 负责人: 腰苏图(yst)