问题
核销处理连接哪些单据?自动分配、确认核销、反核销分别如何工作?
答案
核销是将已收款或已付款的资金单据,与对应的应收或应付单据建立金额关系,并同步更新两侧未核销余额。
- 应收核销:收款单核销应收单。
- 应付核销:付款单核销应付单。
- 付款申请、收款申请以及合同收付款计划不是核销直接操作的对象。相关业务单据需要先形成应付单或应收单,再参与核销。
业务流程
手工核销
- 选择账套和核销方向。
- 左侧选择待处理的收款单或付款单。页面查询当前账套下已收款/已付款且未核销余额大于零的资金单据。
- 点击“自动分配预览”后,系统查找同一账套、未核销余额大于零且往来单位匹配的应收单或应付单。
- 自动分配按到期日、单据日期、单据 ID 排序,逐笔分配;每笔分配金额不超过该单据未核销余额,分配总额不超过来源收款单或付款单的未核销余额。
- 用户确认后,后端重新校验账套、资金单据状态、往来单位和金额,并在事务中更新余额、状态和核销记录。
往来单位优先按客商 ID 和类型匹配;缺少 ID 时按往来单位名称匹配。来源资金单据必须处于已收款/已付款状态,且仍有未核销余额。
关联单据自动核销
收款单或付款单确认时,如果明细关联了应收单或应付单,系统会按该明细的关联单据 ID 和金额执行自动核销:
- 收款单明细关联应收单:按明细金额核销应收单。
- 付款单明细关联应付单:按明细金额核销应付单。
没有关联应收/应付单的收付款,不会据此自动确定被核销对象,需要再通过核销处理进行分配。
核销后的数据变化
每笔核销会同时更新资金单据和应收/应付单据:
- 已核销金额增加本次核销金额。
- 未核销金额减少本次核销金额。
- 根据总金额与剩余未核销金额更新核销状态。
- 写入核销记录,保存批次号、核销方向、来源资金单据、被核销单据、金额、往来单位和日期。
因此,核销记录是两类单据余额变化的业务依据,不是新增一张应付单或付款单。
反核销与尾差
反核销
按核销批次反核销时,系统读取该批次原始记录,对应收/应付单和收款/付款单的已核销、未核销金额做反向调整,并写入关联原记录的反核销记录。同一原始核销不能重复反核销。
尾差核销
当应收或应付单只剩小额未核销余额时,可使用尾差核销。允许金额由账套的尾差阈值控制;未配置时系统默认阈值为 1.00。尾差核销直接将该笔往来单的剩余金额核销完,并留存核销记录。
页面现状说明
核销页面的“勾选待核销单据”按钮当前实现为:读取当前账套下第一页最多 50 条未核销应收/应付单,并将这些记录及其剩余金额载入右侧分配列表;此处并未逐条弹出选择器。确认核销时后端仍会校验往来单位、单据余额和来源资金单据余额,不符合条件的分配会被拒绝。
涉及代码
- PC 页面:
ruoyi-office-vben/apps/web-antd/src/views/finance/arap/settle/index.vue - 核销服务:
ruoyi-office/yudao-module-finance/yudao-module-finance-server/src/main/java/cn/iocoder/yudao/module/finance/service/arap/FinanceSettleServiceImpl.java - 收款确认自动核销:
ruoyi-office/yudao-module-finance/yudao-module-finance-server/src/main/java/cn/iocoder/yudao/module/finance/service/arap/FinanceReceiptServiceImpl.java - 付款确认自动核销:
ruoyi-office/yudao-module-finance/yudao-module-finance-server/src/main/java/cn/iocoder/yudao/module/finance/service/payment/FinancePaymentServiceImpl.java
修订记录
| 日期 | 修改 |
|---|---|
| 2026-10-29 | 初版:记录核销单据关系、自动分配、余额更新、反核销及尾差规则。 |