保证金与往来款 · 需求文档
| 项目 |
内容 |
| 所属模块 |
财务模块(保证金管理 / 付款管理 / 收款管理 / 财务待办) |
| 文档版本 |
V1.3 |
| 关联文档 |
保证金数据流转图.md、deposit.html、payment.html、receipt.html |
一、需求背景与目标
1.1 背景
企业的保证金、往来款分散在投标、租赁、采购、借款等多个业务环节,靠 Excel 手工登记,存在三类问题:
- 来源不清:一笔保证金是"我们付出去的"还是"对方付进来的"、从哪张审批单/应收单来的,查不到;
- 状态失真:审批通过 ≠ 已经付款,只有银行流水匹配上才算真正付了款,现状直接记为"冻结中",口径不准确;
- 退还失控:到期该退的不提醒、退了多少没记录、被扣款项说不清。
1.2 目标
- 统一管理不同类型的保证金与往来款,支持全生命周期(生成 → 冻结 → 退还/转履约/没收)追踪;
- 每种单据可反查生成来源链路(审批单 / 应收单+收款单 / 付款单);
- 状态与真实资金动作一致:审批通过 → 待支付 → 流水匹配 → 冻结中;
- 到期自动提醒、退还留痕、扣款可追溯。
1.3 名词定义
- 保证金:为保证履约由交易一方向另一方缴纳的款项(投标保证金、履约保证金、租赁押金、质保金等);
- 往来款:非购销经营性质的资金往来(备用金借出、保证金代垫、企业间往来款等);
- 待支付:审批已通过、尚未付款且未匹配到银行流水的状态(本次新增)。
二、业务对象与类型
2.1 保证金类型
| 类型 |
典型场景 |
资金方向 |
生成来源 |
应退触发 |
| 投标保证金 |
参加招投标缴纳给招标方 |
付款(我方付出) |
投标审批 → 付款单 |
中标转履约 / 落标退还 / 违约没收 |
| 履约保证金 |
工程/服务合同按约定缴纳 |
付款或收款 |
投标转履约 / 审批+付款 / 应收+收款 |
合同履约完毕退还 |
| 租赁押金 |
租入物业/场地缴纳或收取 |
收款(对方付出) |
应收单 + 收款单核销 / 独立登记入口 |
退租/到期,扣除欠费后退还 |
| 质保金 |
采购/服务合同按约定预留 |
收款 |
应收单 + 收款单核销 |
质保期满退还 |
| 代理保证金 |
代理公司收取的代理/履约保证金 |
收款(代理公司付出) |
独立登记入口 / 应收单+收款核销 |
代理合同终止 / 项目结清后退还 |
2.2 往来款
| 类型 |
典型场景 |
生成来源 |
| 备用金借出 |
员工借款、部门备用金 |
借款审批单 |
| 保证金代垫 |
投标保证金由个人/部门代垫 |
往来款审批单 |
| 企业往来款(关联拆借) |
集团内兄弟公司/合作方资金拆借 |
往来款审批单 |
| 分公司往来款 |
分公司向总公司划款、或总公司向分公司拨款 |
收方向:独立登记入口 / 支出方向:往来款审批单 |
三、生成来源(核心需求)
保证金与往来款不允许手工随意新增(保留手工补录兜底),必须能追溯到生成来源。共三条生成链路:
3.1 收款方向:应收单 + 收款单核销 → 自动生成
合同签订(押金条款) → 生成押金应收单(AR-xxx-DEP) → 收款单核销 → 自动生成保证金记录(冻结中)
| 项 |
说明 |
| 适用类型 |
租赁押金、履约保证金(收取)、质保金 |
| 触发条件 |
应收单与收款单核销完成 |
| 生成动作 |
系统自动生成保证金记录,状态=冻结中 |
| 链路字段 |
应收单号 arNo、收款单号 receiptNo |
| 前置条件 |
合同已生效;应收单金额与收款金额一致(允许部分核销→按实收生成) |
3.2 付款方向:投标审批 → 付款单 → 自动生成
投标/线索审批通过 → 生成付款单(待支付) → 付款完成(银行流水匹配) → 自动生成保证金记录(冻结中)
| 项 |
说明 |
| 适用类型 |
投标保证金、履约保证金(缴纳) |
| 触发条件 |
审批通过即生成"待支付"记录;流水匹配/确认付款后才变"冻结中" |
| 关键规则 |
审批通过 ≠ 已付款。只有导入银行流水并匹配上(或人工确认已付)才算付款完成 |
| 链路字段 |
投标审批号 approvalNo、付款单号 payNo / sourcePayId |
| 待支付态 |
审批已通过、付款单已生成、但未付款时,保证金记录处于"待支付" |
3.3 审批单:往来款
借款/往来款审批通过 → 自动生成往来款记录(冻结中)
| 项 |
说明 |
| 适用类型 |
备用金借出、保证金代垫、企业往来款(关联拆借)、分公司往来款(支出方向:总公司拨款给分公司) |
| 触发条件 |
业务审批单审批通过 |
| 链路字段 |
审批单号 approvalNo(界面显示"来源审批单") |
| 特殊点 |
不经过应收/收款核销,链路为"审批单 → 自动生成"两段 |
3.4 收款方向:独立登记入口(代理保证金收 / 分公司往来款收)
代理公司交来的保证金、分公司向总公司划款这类场景,不经过应收单+收款核销链路(没有前置合同或应收单),也不依赖银行流水识别(可能走的是现金、网银互转无备注),需要一个独立的"登记入口"直接生成记录。
财务/业务在"收代理保证金登记" / "收分公司往来款登记" 入口录入 → 直接生成保证金/往来款记录(冻结中)
| 项 |
说明 |
| 适用类型 |
代理保证金(收方向)、租赁押金(收方向·无应收核销场景)、分公司往来款(收方向:分公司划进来) |
| 触发方式 |
独立页面入口手动登记("收代理保证金登记" / "收分公司往来款登记") |
| 生成动作 |
直接生成记录,状态 = 冻结中(款已到账,登记即确认),不走审批、不经待支付 |
| 必填字段 |
对方单位/代理公司、金额、到账日期、到账账户、备注 |
| 选填字段 |
关联项目/代理合同、应退日期、流水号(若已匹配可回填) |
| 链路字段 |
来源标记 source='manual_register'、登记人、登记时间、matchFlowId(可选,若同时绑定流水) |
| 关键规则 |
登记即默认款已到账(冻结中)—— 这是与"审批→待支付"的根本区别。若登记时尚未到账,走"应收单+收款核销"链路 |
| 入口归属 |
财务模块侧边栏:收代理保证金登记、收分公司往来款登记 |
3.5 付款方向:独立保证金付款申请入口
当前付款方向绑定在"投标审批 → 付款单"链路上,但实际业务中存在独立发起的保证金付款需求——比如:
- 中标后另行缴纳履约保证金(不走投标审批自动流转)
- 租赁押金缴付给业主(非招投标场景)
- 代理公司缴纳代理履约保证金
这些场景没有前置的投标审批,需要一个独立的"保证金付款申请"入口,直接走 审批通过 → 待支付 → 流水匹配 → 冻结中 的标准链路。
发起保证金付款申请(独立入口)→ 审批通过 → 生成付款单 → 进入"待支付" → 流水匹配 → 冻结中
| 项 |
说明 |
| 适用类型 |
履约保证金(独立缴纳)、租赁押金(我方付出)、投标保证金(非招投标系统发起) |
| 与 3.2 的关系 |
3.2 是"投标审批自动触发"的付款链路;本小节是手动独立发起的付款链路——两条链路共用"审批→待支付→流水匹配→冻结中"这同一段状态流转 |
| 触发方式 |
独立页面入口手动发起申请("保证金付款申请") |
| 必填字段 |
保证金类型、收款方、金额、缴纳原因、关联项目/合同、应退日期 |
| 链路字段 |
审批单号 approvalNo、付款单号 payNo(审批通过后自动生成) |
| 入口归属 |
财务模块侧边栏:保证金付款申请 |
3.6 往来款收方向:分公司划款进来
分公司向总公司划款(资金集中管理、利润上缴、内部拆借归还等场景),属于往来款的收入方向。
| 场景 |
生成方式 |
| 分公司划款 + 银行流水备注命中"往来款/划款" |
走 3.8 流水识别生成(冻结中) |
| 分公司划款 + 流水无备注,或走现金/网银互转 |
走 3.4 独立登记入口(收分公司往来款登记 → 冻结中) |
| 分公司划款 + 已做审批 |
走 3.3 审批单链路(审批通过 → 冻结中)—— 少见,收方向一般不做审批 |
关键规则:往来款收方向不经待支付,无论是流水识别、独立登记还是审批,到账后直接冻结中。
3.7 生成规则汇总
| 生成方式 |
链路展示(详情弹窗"生成来源") |
判断依据 |
| 收款方向(应收核销) |
应收单 AR-xxx →(+)收款单 RC-xxx → 自动生成 |
有 arNo/receiptNo,无 payNo/approvalNo |
| 收款方向(独立登记) |
手动登记(财务:张三)→ 自动生成 |
source = 'manual_register',无 arNo/approvalNo |
| 付款方向(投标触发,已付) |
投标审批 BZJ-xxx →(→)付款单 PAY-xxx → 自动生成 |
有 payNo/sourcePayId + approvalNo 含 BZJ 前缀 |
| 付款方向(投标触发,待支付) |
投标审批 BZJ-xxx →(→)付款单「待付款」(橙) → 自动生成 |
有 approvalNo 含 BZJ 但无 payNo |
| 付款方向(独立申请,已付) |
保证金付款申请 XXX →(→)付款单 PAY-xxx → 自动生成 |
有 payNo + approvalNo 非 BZJ 前缀 |
| 付款方向(独立申请,待支付) |
保证金付款申请 XXX →(→)付款单「待付款」(橙) → 自动生成 |
有 approvalNo 非 BZJ 但无 payNo |
| 往来款(审批单) |
审批单 xxx → 自动生成(隐藏中间节点) |
type = 往来款 + 有 approvalNo |
| 往来款(独立登记·收方向) |
收分公司往来款登记 → 自动生成 |
type = 往来款 + source = 'manual_register' |
| 流水识别生成 |
银行流水(收入)备注命中关键词 → 直接生成(冻结中) |
方向=收入,备注含"保证金/往来款"关键词 |
3.8 流水导入识别生成(收入方向)
银行流水(收入/汇入/贷方/转入)+ 备注含"保证金/往来款"关键词 ──> 直接生成记录(冻结中)
| 项 |
说明 |
| 适用类型 |
保证金(收进)、往来款(收到) |
| 触发条件 |
导入银行流水,方向=收入,且备注/用途/摘要命中关键词(保证金、往来款等,可配置) |
| 生成动作 |
直接生成保证金/往来款记录,状态=冻结中(款已到账),无需审批、不经待支付 |
| 链路字段 |
匹配流水号 matchFlowId、对方户名、命中关键词 |
| 特殊点 |
收入方向直接冻结;支出方向才走"审批 → 待办 → 待支付 → 流水匹配" |
四、状态机
4.1 状态定义
| 状态 |
含义 |
标签色 |
| 待支付 |
审批通过、付款单已生成、尚未付款(流水未匹配) |
橙 |
| 冻结中 |
款项已付/已收(流水已匹配),保证金生效 |
蓝 |
| 待退还 |
到期/退租/落标,应退未退 |
琥珀 |
| 退还中 |
退款单已发起,退款处理中 |
琥珀 |
| 部分退还 |
已退部分,剩余未退(扣除欠费/违约扣款) |
紫 |
| 已退还 |
保证金全部退还完成 |
绿 |
| 已转履约 |
投标保证金转为履约保证金 |
紫 |
| 已没收 |
违约没收,不再退还 |
红 |
| 已逾期 |
应退日期已过仍未退还 |
红 |
4.2 状态流转
生成(付款/收款/审批) ──> 待支付 ──流水匹配──> 冻结中
│
┌─────────────┬──────────────┼────────────────┐
▼ ▼ ▼ ▼
到期/退租 转履约 没收 退租有扣款
│ │ │ │
待退还 已转履约 已没收 部分退还
│ │
发起退款 剩余退还
│ │
退还中 ──────── 退款完成 ──> 已退还 <───────────┘
│
已逾期(超应退日仍未退)
4.3 待支付状态说明(新增)
- 产生:付款方向保证金审批通过后生成(投标审批 BZJ-xxx 已建,付款单待生成或已生成未支付);
- 转冻结中:导入银行流水匹配成功 → 状态自动变更;原型提供"确认已付"按钮模拟(写操作日志);
- 期间:不计入"在保余额",单独以"待支付"统计卡展示,提醒财务及时付款;
- 不允许:待支付状态下不允许发起退还、转履约、没收;
- 适用边界:待支付是支出方向专属状态,仅用于我方要付出去的保证金(投标保证金、履约保证金缴纳);收入方向(租赁押金、质保金、往来款收到)不经过待支付——要么直接生成"冻结中"(流水识别/收款核销),要么挂在应收未收,不走"审批→待支付"链路。
五、流水导入与匹配(状态变更依据)
保证金/往来款的付款、退款、收款是否真实发生,以银行流水为准。以实际银行流水(建行 / 联合 / 工行)为例,不同银行字段名不同,导入后先做方向归一,再按两条核心规则处理。
5.1 流水字段识别(方向归一)
| 银行/账户 |
收入列(贷方) |
支出列(借方) |
摘要/备注列 |
| 建行-彭埠 |
贷方发生额(收入) |
借方发生额(支取) |
摘要 + 备注 |
| 联合-彭埠 |
汇入金额 |
汇出金额 |
摘要 + 用途 + 备注 |
| 工行-望京东路 |
转入金额 |
转出金额 |
摘要 / 附言 |
统一口径:收入 = 汇入 / 贷方 / 转入;支出 = 汇出 / 借方 / 转出。
5.2 两条核心规则
规则 A:收入方向 + 备注含关键词 → 直接生成记录(无需审批)
- 流水方向为收入(汇入 / 贷方 / 转入),且备注 / 用途 / 摘要命中关键词 "保证金" 或 "往来款"(关键词可配置,如"归还借款"可视为往来款);
- 直接生成一条保证金/往来款记录,状态 = 冻结中(款已到账),来源 = 银行流水导入,不走审批、不经待支付;
- 示例(真实流水):
- 建行"贷方发生额 200 万 + 备注「归还借款」" → 直接生成往来款记录;
- 联合"汇入金额 + 用途「投标保证金」" → 直接生成投标保证金记录;
- 建行"借方发生额(支取)+ 备注「投标保证金平湖新农都…工程监理」" → 属支出,走规则 B。
规则 B:支出方向 → 找「待支付」记录匹配(必须走审批)
- 所有支出(汇出 / 借方 / 转出)必须走审批流程:审批通过 → 生成财务待办 → 保证金/往来款进入 待支付 状态;
- 导入支出流水后,直接在待支付清单中匹配对应记录;匹配成功 → 待支付 → 冻结中;
- 匹配不到的支出流水 → 说明该笔支出未走审批,挂"待匹配"由财务核实补录。
5.3 匹配维度(规则 B:支出流水 → 待支付记录)
| 匹配维度 |
说明 |
匹配强度 |
| 业务单号 |
流水摘要/备注含付款单号(PAY-xxx)、审批号(BZJ-xxx)或保证金单号(DP-xxx) |
强(唯一命中) |
| 金额 |
流水支出金额与待支付记录金额一致(容差 ±0.01;支持多笔流水分批合计等于单据金额) |
强 |
| 对方户名 |
流水对方户名与待支付记录收款方(payee)一致(支持关键词) |
中 |
| 银行账号 |
我方账户或对方账号与单据记录一致 |
中 |
| 日期 |
流水日期与待支付记录创建日期相差在 ±3 个自然日内 |
辅助 |
| 摘要关键词 |
项目名、招标编号、审批单号关键词命中 |
辅助 |
5.4 匹配策略(优先级)
- 自动匹配(强命中):业务单号唯一命中;或"金额 + 对方户名 + 日期"三项全中 → 自动确认;
- 候选匹配:金额 + 日期命中、但户名/账号不一致 → 列出候选待支付记录,由财务人工确认;
- 未匹配:找不到对应待支付记录 → 进入"待匹配流水"清单,人工核实(是否漏走审批 / 补录单据)。
5.5 匹配结果与状态变更
| 流水方向 |
场景 |
匹配/识别结果 |
状态变更 |
| 收入 |
备注含"保证金/往来款"关键词 |
直接生成记录 |
生成新记录(冻结中) |
| 支出 |
匹配到待支付记录 |
匹配成功 |
待支付 → 冻结中 |
| 支出 |
未匹配 / 候选未确认 |
挂"待匹配" |
待支付保持,标记"待付款" |
| 支出 |
退款流水(退还中/待退还) |
匹配到退款单 |
退还中 → 已退还(全额)或 部分退还 |
5.6 记录与提示
- 直接生成(规则 A)与匹配成功(规则 B)均写入操作日志:流水号、识别/命中的维度、操作人、时间;
- 统计卡"待支付"随匹配实时变化;
- 未匹配支出流水在流水管理中保留"待匹配"标记,支持一键查看候选待支付记录。
六、功能需求
6.1 保证金管理(deposit.html)
页面布局:顶部统计卡区 → 类型 Tab 区 → 筛选/搜索栏 → 列表(含分页)→ 右侧详情弹窗 → 新增弹窗。
- 统计卡区:保证金余额(在保)、待支付、待退还、各类型在保金额,统计口径见第七章;
- 类型 Tab 筛选:全部 / 租赁押金 / 投标保证金 / 履约保证金 / 质保金 / 代理保证金 / 往来款,Tab 上显示对应笔数;
- 状态筛选:全部状态 / 待支付 / 冻结中 / 待退还 / 退还中 / 部分退还 / 已退还 / 已转履约 / 已没收 / 已逾期(多选);
- 搜索:按单号、关联项目、对方单位、来源单号(AR/RC/PAY/BZJ)关键词模糊搜索;
- 排序:默认按缴纳日期倒序;支持按金额、应退日期排序;
- 分页:每页 10/20/50 条可选,显示总条数;
- 列表字段:单号、类型、关联项目/招标、对方单位、保证金金额、已退金额、未退金额、缴纳日期、应退日期、状态、操作;
- 状态标签:配色符合 4.1;"已逾期"整行红色高亮;
- 操作列:按状态动态显示(确认已付 / 发起保证金退款 / 发起往来款退款 / 详情等,见 6.3);
- 到期自动提醒:到应退日期未退 → 状态变"待退还"并写日志;超过应退日 → "已逾期"。
6.2 详情弹窗
- 展示金额概要、基本信息、生成来源链路(按 3.7 动态渲染)、关联信息(应收单/收款单/付款单/合同/退款流水)、退还记录、操作日志;
- 待支付记录来源说明:"审批已通过,等待实际付款;导入银行流水并匹配成功后,状态自动变更为冻结中"。
- 独立登记来源(3.4)的记录说明:"由财务通过独立登记入口录入,款已到账"。
6.3 操作规则
| 操作 |
入口 |
前置条件 |
结果 |
| 确认已付 |
列表操作列(待支付) |
银行流水已匹配 |
待支付 → 冻结中,写日志 |
| 发起保证金退款 |
列表(待退还/已逾期)、详情(冻结中可退),按记录 type 自动弹出"退保证金表" |
状态=待退还/已逾期/冻结中,且 type ∈ 保证金类型(投标/履约/租赁押金/质保金/代理保证金) |
生成退款单 → 付款管理 → 退还中 → 已退还 |
| 发起往来款退款/归还 |
列表(待退还/已逾期)、详情(冻结中可退),按记录 type=往来款 自动弹出"退往来款表" |
状态=待退还/已逾期/冻结中,且 type=往来款 |
生成退款单 → 付款管理 → 退还中 → 已退还;往来款归还后可走审批关闭 |
| 部分退还 |
详情 |
存在扣款(水电欠费/违约扣款/违约没收) |
部分退还,记录扣除明细;代理保证金退还可扣代理费后退还 |
| 转履约 |
投标管理中标登记 |
状态=冻结中,type=投标保证金 |
冻结中 → 已转履约 |
| 没收 |
投标管理中标登记 / 代理合同违约登记 |
状态=冻结中 |
冻结中 → 已没收 |
| 手动补录 |
新增保证金弹窗 |
兜底场景(不建议) |
生成记录,默认冻结中,source='manual_fallback' |
说明:退款操作按记录的 type 字段自动分发表单——保证金类走"退保证金表",往来款类走"退往来款表"。两表均支持全额退还、部分退还(含扣款明细)、关联退款流水匹配,核心差异在于往来款退还后可走审批关闭而非仅靠流水确认。
6.4 页面职责与数据流
| 页面 |
职责 |
| 线索/投标管理 |
发起投标保证金审批;中标/落标登记触发退还/转履约/没收 |
| 合同管理 |
签订含押金条款的合同 → 生成押金应收单 |
| 应收账款 |
展示押金应收单,供核销 |
| 收款管理 |
收款核销 → 写入保证金记录(冻结中) |
| 财务待办 |
展示"保证金缴纳"待办(待付款) |
| 流水管理(flow.html) |
导入银行流水;按第五章匹配维度自动/候选匹配待支付、待退还单据并变更状态 |
| 付款管理 |
展示付款/退款单;付款完成 → 写入保证金记录(待支付→冻结中/退还中→已退还) |
| 保证金付款申请 |
独立发起保证金付款(非投标审批触发);审批通过→生成付款单→待支付 |
| 收代理保证金登记 |
独立登记代理公司缴入的保证金(款已到账,不经应收核销/审批) |
| 收分公司往来款登记 |
独立登记分公司划进总公司的往来款(款已到账,不经审批) |
| 保证金管理 |
统一展示 + 状态管理 + 生成来源追溯 + 发起退款(自动按 type 分发表单) |
数据流方向(单向):
线索/投标 ──> 财务待办 ──> 付款管理 ──> 保证金管理
保证金付款申请 ──> 财务待办 ──> 付款管理 ──> 保证金管理
合同管理 ──> 应收账款 ──> 收款管理 ──> 保证金管理
借款/往来款审批 ─────────────────────> 保证金管理
收代理保证金登记 ─────────────────────> 保证金管理(独立登记,直接冻结中)
收分公司往来款登记 ──────────────────> 保证金管理(独立登记,直接冻结中)
6.5 权限与角色
| 角色 |
可看 |
可操作 |
| 财务出纳 |
全部保证金/往来款 |
确认已付、发起保证金退款、发起往来款退款、匹配流水、登记收/付保证金、登记收往来款、导出 |
| 财务会计 |
全部 + 详情 + 日志 |
部分退还、手动补录、修改到期日/项目(留痕) |
| 财务经理 |
全部 + 统计 + 日志 |
全部操作 + 转履约/没收审批确认 + 异常流水处理 |
| 业务发起人(投标/借款) |
本人发起的记录 |
查看详情、催办 |
| 管理员 |
全部 |
类型/关键词/权限配置 |
权限规则:
- 新增/删除记录仅会计及以上;确认已付、发起退款(保证金/往来款)、登记收/付保证金、登记收往来款仅出纳及以上;
- 转履约、没收需财务经理确认(走审批留痕);
- 只读角色(老板/审计)可查看全部与日志,不可操作;
- 所有越权操作前端禁用 + 后端校验双保险。
6.6 提醒与通知
| 提醒 |
触发 |
方式 |
对象 |
| 待支付催办 |
审批通过进入待支付即提醒 |
财务待办 + 站内消息 |
出纳/会计 |
| 待支付超时 |
待支付超过 N 天未付款(默认 5 天,可配) |
财务待办标红 + 消息 |
财务经理 |
| 到期待退还 |
到应退日期未退 |
状态变"待退还" + 待办 |
会计/经理 |
| 已逾期 |
超过应退日仍未退 |
列表高亮 + 待办标红 |
会计/经理 |
| 流水匹配异常 |
支出流水未匹配到待支付 |
流水管理"待匹配"标记 |
出纳 |
| 退款完成 |
退款单付款完成 |
状态变更 + 消息 |
发起人 |
七、统计口径与仪表盘
7.1 统计口径定义(金额均取"未退金额" = 金额 - 已退)
| 指标 |
计算口径 |
说明 |
| 在保余额 |
Σ(冻结中 + 已转履约 + 部分退还的未退部分) |
实际仍在占用、尚未进入退还流程的保证金 |
| 待支付 |
Σ(待支付) |
审批已过未付款,不计入在保余额 |
| 待退还 |
Σ(待退还 + 已逾期) |
已应退但未退,不再计入在保 |
| 各类型在保 |
在保余额按 type 分组 |
租赁押金 / 投标 / 履约 / 质保金 / 往来款 |
| 已退还 / 退还中 / 已没收 |
单独展示,不计入在保与待退 |
终态或罚没,用于历史追溯 |
7.2 仪表盘(保证金管理页顶部统计卡)
| 统计卡 |
展示 |
点击行为 |
| 保证金余额 |
在保总额(元) |
跳转"全部"列表 |
| 待支付 |
金额 + 笔数 |
跳转"状态=待支付"筛选 |
| 待退还 |
金额 + 笔数 |
跳转"状态=待退还/已逾期"筛选 |
| 各类型在保(租赁/投标/履约/质保金) |
金额 + 笔数 |
跳转对应类型 Tab |
要求:统计卡实时计算(非写死),任何状态变更、新增、匹配后立即刷新;金额千分位显示。
八、数据需求
8.1 保证金记录字段(syncDeposits / deposit 记录)
| 字段 |
说明 |
必填 |
| id |
保证金单号(DP-xxx / WL-xxx) |
是 |
| type |
类型:投标保证金/履约保证金/租赁押金/质保金/代理保证金/往来款 |
是 |
| project / party |
关联项目(招标/代理合同)/ 对方单位(代理公司/分公司) |
是 |
| amount / refunded |
金额 / 已退金额 |
是 |
| date / dueDate |
缴纳日期 / 应退日期 |
是 |
| status |
状态(见 4.1) |
是 |
| source |
生成来源:ar_receipt(应收核销)/ manual_register(独立登记入口)/ pay_approval(投标/付款申请触发)/ loan_approval(往来款审批单)/ flow_match(流水识别)/ manual_fallback(兜底补录) |
是 |
| arNo |
来源应收单号(收款方向·应收核销链路) |
条件 |
| receiptNo |
来源收款单号(收款方向·应收核销链路) |
条件 |
| approvalNo |
来源审批号(投标审批/保证金付款申请/往来款审批单) |
条件 |
| payNo / sourcePayId |
来源付款单号(付款方向) |
条件 |
| registerBy / registerAt |
独立登记入口的登记人 / 登记时间(source=manual_register 时有值) |
条件 |
| refundNo |
退款单号 |
否 |
| matchFlowId |
匹配的银行流水号(导入流水匹配后回填) |
否 |
| matchedAt / matchedBy |
匹配时间 / 匹配操作人 |
否 |
| refunds |
退还记录数组(单号/金额/日期/方式/银行/扣款明细) |
否 |
| logs |
操作日志数组(时间/操作人/动作/前后值) |
否 |
| entity |
收款主体 |
否 |
8.2 日志要求
所有状态变更必须写操作日志(谁、什么时候、做了什么),用于审计追溯。
九、非功能需求
| 类别 |
要求 |
| 审计留痕 |
所有状态变更、匹配、退款、补录写入不可篡改操作日志(操作人/时间/前后值/流水号);支持按单据查询完整轨迹 |
| 数据一致性 |
状态变更后,统计卡、列表、详情三处实时一致;本地数据桥(syncDeposits)与页面数据合并去重(按 id) |
| 幂等性 |
流水重复导入、重复匹配不产生重复记录、不重复变更状态 |
| 权限安全 |
前端禁用 + 后端校验;越权操作记录并告警;金额字段防篡改(前端只读回显) |
| 性能 |
千条级流水导入秒级完成;列表 10 万条内分页无卡顿;统计实时计算 |
| 导出 |
列表支持导出 Excel(含当前筛选结果);详情支持导出单据轨迹 |
| 兼容 |
适配手机端(列表、详情、操作按钮可用);主流浏览器(Chrome / Edge / 微信内置) |
十、异常与边界
| 场景 |
处理 |
| 审批通过但长期未付款 |
保持"待支付",统计卡提醒;不允许跳过直接冻结 |
| 银行流水与付款单不匹配 |
不自动变更状态,人工核对后确认已付 |
| 应收单与收款金额不一致 |
按实收核销金额生成保证金记录 |
| 退租有欠费/违约扣款 |
支持部分退还,扣除明细写入退还记录 |
| 到期未退 |
状态自动转"待退还"→"已逾期",整行红色高亮 |
| 重复付款 |
付款管理侧拦截,不重复生成保证金记录 |
| 重复导入同一笔流水 |
匹配幂等:已匹配过的流水重复导入不重复变更状态、不重复写日志 |
| 一笔流水匹配到多张候选单 |
不自动确认,进入候选清单由财务人工选择 |
| 已转履约 |
原投标保证金记录关闭,生成/关联履约保证金记录 |
十一、验收标准
- 通过投标审批创建的保证金,初始状态为待支付,不进入在保余额;
- 待支付记录点"确认已付"后变冻结中,统计卡"待支付"金额实时减为 0;
- 详情"生成来源"按来源方向正确渲染四种链路(收款/付款已付/付款待支付/往来款);
- 租赁押金由"应收单+收款单核销"自动生成,反查得到 AR/RC 单号;
- 往来款由审批单生成,链路无中间节点;
- 到期自动转"待退还"、超期转"已逾期"并高亮;
- 部分退还/全额退还/转履约/没收状态流转正确,日志留痕;
- 所有状态变更后统计卡、列表、详情三处数据一致,console 无报错;
- 导入银行流水后,待支付记录按"金额 + 对方户名 + 日期"自动匹配成功 → 变"冻结中",写匹配日志;
- 流水中含付款单号(PAY-xxx)时按业务单号强命中,优先自动匹配;
- 金额或户名不一致的流水进入"候选/待匹配",状态保持不变,人工确认后才变更;
- 同一笔流水重复导入不重复匹配、不重复变更状态(幂等);
- 收入流水(汇入/贷方/转入)备注含"保证金"或"往来款"关键词 → 直接生成记录(冻结中),无需审批、不经待支付;
- 支出流水导入后直接在"待支付"清单匹配;匹配成功变"冻结中",匹配不到挂"待匹配";
- 建行(贷方/借方)、联合(汇入/汇出)、工行(转入/转出)字段方向归一正确;
- 统计口径正确:在保余额不含待支付、待退还;待支付、待退还卡金额随数据实时变化;
- 收入方向(租赁押金/质保金/往来款收入)不经过待支付,直接冻结中或挂应收;
- 独立登记入口(收代理保证金登记、收分公司往来款登记)登记后直接生成记录(冻结中),状态可追溯
source=manual_register、登记人、登记时间;
- 独立保证金付款申请入口发起的付款,走标准"审批→待支付→流水匹配→冻结中"链路;审批号非 BZJ 前缀,详情来源链路与投标触发可区分;
- 发起退款操作按记录 type 自动分发表单:保证金类(投标/履约/租赁押金/质保金/代理保证金)弹出"退保证金表",往来款类弹出"退往来款表";
- 没收操作支持两类触发:投标保证金走"投标管理中标登记·违约没收",代理保证金走"代理合同违约登记";
- 操作日志完整:每笔状态变更/匹配/退款可查询前后值与操作人;详情可导出单据轨迹(含独立登记来源)。