借款×报销冲抵对账:谁该退钱、谁该还钱、谁根本没借过款,一张表

2026-10-09 · 喵窝资源铺

钱账系列的借款侧:员工备用金借出去容易,冲回来全靠月底对账。最容易出的错不是「对不上数」,而是方向搞反——报销 4200 借款 3000,多出的 1200 是公司该退给员工的,拿去当「未还借款」催款就闹笑话了。这版脚本把报销单逐条冲抵借款,代码实跑验证,真实输出贴在下面。

输出长什么样

测试数据:8 名员工 8 笔借款 + 9 张报销单,故意埋 7 处陷阱——王强报 4200 借 3000(退个人 1200);赵敏借 5000 只报 3000 且摘要「展会费用」(白名单外,剩余 5000 超 90 天催款);陈晨、郑飞没借过款直接报销 8000/3000;孙悦报 2600 借 2000(退个人 600);刘洋正常冲平(对照组);周洁名字带尾随空格(归一后命中);吴昊借 2300 报 1000 且未还(未清)。跑完:

BX-101 李涛 → 冲抵2000
BX-102 王强 → 冲抵3000,退个人1200
BX-103 赵敏 → 摘要「展会费用」非(差旅/备用金)类,不自动冲抵借款
BX-104 陈晨 → 摘要「设备采购」找不到本人任何借款记录
BX-105 孙悦 → 冲抵2000,退个人600
BX-106 刘洋 → 冲抵4000
BX-107 周洁 → 冲抵2500(尾随空格归一后命中)
BX-108 吴昊 → 冲抵1000
BX-109 郑飞 → 摘要「招待费」找不到本人任何借款记录
借款余额:赵敏 5000 未清·超期(100天)催款;吴昊 1300 未清(86天)
核对完成: 报销 9 单 / 借款 8 笔, 异常 7 条

逐项验收:超借退个人、白名单拦截、无借款报销、超期催款、空格归一、多笔借款顺序冲抵全对出;对照刘洋零误报。边界:报销表缺列明确报错(列出缺哪些)、借款日期 datetime/字符串都能解析、坏日期字符串明确报错不静默;幂等:同输入连跑两次输出内容级一致。

判定规则

场景处理
报销 ≤ 借款按借款日期先后逐笔冲抵,先冲早借的
报销 > 借款多出部分标「个人垫付待退」——方向是公司给钱,不是催款
摘要不在白名单(差旅/备用金)不自动冲抵,标疑让人确认性质——招待费拿备用金冲是合规事故
找不到本人借款标「无借款直接报销」,确认是否垫付报销
借款剩余未冲抵超 90 天标「超期催款」,未超只标「未清」
姓名匹配去首尾+内部空格后归一,防「周洁 」这类 Excel 尾随空格

用法

先 pip install openpyxl。借款表列:姓名/借款日期/借款金额/用途;报销表列:单号/姓名/报销金额/摘要。运行:

python loan_bx_offset.py 借款表.xlsx 报销表.xlsx 核对结果.xlsx

不想自己摆表的格式?免费下载借款报销冲抵 xlsx 模板(借款表 / 报销表 + 一页说明),照着列名填就能跑。想要定制逻辑或对接你的系统格式?找我们定制交付。

输出 xlsx 三张表:报销冲抵明细 / 借款余额(含借款天数)/ 异常清单,直接可读。

一个真坑(这轮实跑撞出来的)

坑:冲抵方向搞反,「退个人的钱」会被当成「没还的钱」去催

第一版只输出「借款剩余未冲抵」,结果王强报销 4200 借 3000 这类正常垫付被记成欠款。真正的坑是:报销先冲借款、冲不完的余额才是待退个人,两个方向必须分开列——「个人垫付待退」是公司欠员工,「借款未清」才是员工欠公司,混在一张表里财务照着催款会把人得罪光。另外摘要必须过白名单:拿「招待费」直接冲「差旅备用金」,钱数是对的、性质是错的,这种只能标疑给人判断,脚本不能替财务拍板。

相关阅读

钱账系列:个税专项附加扣除×工资表一致性核对、社保申报基数×工资表合规核对、加班表×工资表工时对账、排班系列:换班申请链核对、合同回款×银行流水催收对账、报销单×银行流水对账。

不想自己跑?把借款表和报销单发给我们,AI 跑脚本 + 人工核验,出一份逐人冲抵+异常清单。看全部自动化服务(9.9 元起)。虚拟物品交付后不退款,未达承诺免费重做。

← 喵窝资源铺