费用报销合规检查

超标准报销、连号发票、节假日报销、同一发票重复报销

规则型
输入数据
报销单、发票明细、差旅标准
核心方法
规则库 + 重复检测
输出物
违规报销清单

费用报销的问题大多藏在细节里:同一张发票报了两次、住宿超标准几十块、周末的招待费、连号的餐饮发票。这个模型用四条规则逐行检查报销明细,一行命中几条就输出几条。结果是需要复核的清单,不是违规认定。

适用场景

  • 财务共享中心复核:在人工审单之外,每周把已提交的报销明细全量跑一遍。
  • 内部审计专项:对差旅费、业务招待费做年度或半年度检查。
  • 制度修订参考:统计超标准最多的费用类型和城市,判断标准是否需要调整。

输入数据要求

两张表:报销明细和报销标准。报销明细每行为某员工某一天的一类费用。

字段是否必需类型说明
行号必需文本明细行唯一标识
报销单号必需文本一张报销单可以有多行
员工编号必需文本
职级必需文本示例数据中 M 开头为经理,其余为员工
费用类型必需文本住宿、餐饮、交通、招待
发生日期必需日期格式 yyyy-MM-dd
城市等级必需文本一线、其他
金额必需数值当天该类费用金额
发票号必需文本必须按文本读取
员工姓名、部门、城市、事由可选文本只带到结果里方便复核

报销标准表(示例):

费用类型职级组城市等级单日上限(元)
住宿员工一线500
住宿员工其他350
住宿经理一线800
住宿经理其他550
餐饮员工一线120
餐饮员工其他100
餐饮经理一线200
餐饮经理其他150

判定规则

规则条件风险说明
E1 重复报销同一发票号出现在两张及以上报销单高每张涉及的明细行都输出
E2 超标准住宿、餐饮金额大于对应标准的单日上限中等于上限不算超标;交通、招待没有上限,不判断
E3 周末餐饮招待餐饮或招待费发生在周六、周日低周末出差吃饭很常见,只作提示
E4 连号发票同一员工、同一费用类型,两张纯数字发票号相差 1中可能是拆开开票规避单张限额;输出发票号较大的那一行

四条规则相互独立,一行可以同时命中多条。

工作流步骤

节点按 KNIME 英文名给出,iModel 中文界面的节点名以你所用的版本为准。示例数据已放在工作流内,导入后直接执行即可。四条规则各走一个分支,最后合并。

读取数据处理门槛判定关键计算输出
  1. 读取报销明细与标准CSV Reader
  2. 转日期、取星期、判职级组Rule Engine
  3. E1 重复报销GroupBy + Joiner
  4. E2 超标准Joiner + Row Filter
  5. E3 周末餐饮招待Row Filter
  6. E4 连号发票Lag Column
  7. 合并四个分支Concatenate
  8. 输出命中清单CSV Writer
  1. 读取两张表CSV Reader

    读取 expense_claims.csv 与 expense_standards.csv;「发票号」「行号」「员工编号」设为文本。

  2. 准备公共列String to Date&TimeExtract Date&Time FieldsRule Engine

    「发生日期」转为日期并提取星期;新增「职级组」:$职级$ LIKE "M*" => "经理",TRUE => "员工"。

  3. E1 重复报销GroupByRow FilterJoiner

    按「发票号」分组,对「报销单号」做 Unique count;保留大于等于 2 的发票号,再与明细按「发票号」内连接取回全部行。

  4. E2 超标准JoinerRule-based Row Filter

    明细与标准表按「费用类型、职级组、城市等级」内连接(交通、招待没有标准,自然不参与);保留 $金额$ > $单日上限$ 的行。

  5. E3 周末餐饮招待Row Filter

    保留「费用类型」为餐饮或招待、且星期为周六或周日的行。

  6. E4 连号发票Row FilterString to NumberSorterLag ColumnRule-based Row Filter

    只保留发票号为纯数字的行(正则 [0-9]+)并转为数值;按员工编号、费用类型、发票号排序;用 Lag Column 取上一行的员工编号、费用类型、发票号;保留三者满足「员工、类型相同且发票号差 1」的行。

  7. 合并输出Constant Value ColumnConcatenateSorterCSV Writer

    每个分支加上「命中规则」「风险等级」两列后合并,按风险等级(高、中、低)、规则、行号排序,写出结果文件。

参数

参数默认值作用怎么调
报销标准表expense_standards.csvE2 的上限直接换成公司现行标准;新增费用类型时补行即可
E3 检查的费用类型餐饮、招待周末提示的范围不需要这条提示时整个分支停用
E4 连号间隔1发票号相差多少算连号手工开票场景可放宽到 2,误报会增加

用示例数据验证

250报销明细行
13命中记录
4E1 重复报销
4E2 超标准
3E3 周末提示
2E4 连号发票

运行后结果应与示例数据包里的 expected_result.csv 完全一致。

命中规则风险行号员工费用类型发生日期金额说明
E1 重复报销高81E005住宿2026-03-10420.00发票号出现在 2 张报销单
E1 重复报销高82E005住宿2026-03-10420.00发票号出现在 2 张报销单
E1 重复报销高186E008招待2026-05-141,680.00发票号出现在 2 张报销单
E1 重复报销高187E009招待2026-05-141,680.00发票号出现在 2 张报销单
E2 超标准中33E006住宿2026-02-03680.00上限 500,超出 180.00
E2 超标准中126E007餐饮2026-04-08156.00上限 100,超出 56.00
E2 超标准中147E010住宿2026-04-21352.00上限 350,超出 2.00
E2 超标准中221E001住宿2026-06-02960.00上限 800,超出 160.00
E4 连号发票中19E007餐饮2026-01-20105.00与发票号 22873354 连号
E4 连号发票中200E010住宿2026-05-20340.00与发票号 30229274 连号
E3 周末餐饮招待低43E004餐饮2026-02-0788.00发生在周六或周日
E3 周末餐饮招待低136E012招待2026-04-122,400.00发生在周六或周日
E3 周末餐饮招待低216E003餐饮2026-05-31140.00发生在周六或周日

另有五类不应被标出的数据:金额恰好等于上限的住宿、经理在一线城市 760 元的住宿(经理上限 800)、周末的交通费、两名不同员工的连号发票、背景数据中的正常报销。

适用边界

  • 发票真伪不在范围内。需要接入发票查验服务,模型只看报销系统里的数据。
  • 只按天判断上限。一张住宿发票覆盖多晚时,要先按晚数拆开或折算单日金额。
  • 节假日没有算进去。E3 只看周六周日,法定节假日和调休需要另外维护一张日历表关联。
  • E4 只适用于纯数字发票号。数电发票号码较长,连号在正常连续消费中也会出现,要结合金额与事由复核。

常见问题

E1 能发现跨员工的重复报销吗?

能。规则只看发票号是否出现在多张报销单,不管是不是同一个人,示例数据里就有两名员工报同一张招待发票的情况。

标准按部门、按项目不同怎么办?

在标准表里增加对应列,并在第 4 步的连接条件里加上这一列即可。

报销数据在费控系统里,怎么接?

把第 1 步换成数据库读取节点或读取系统导出文件,字段对齐后后面的步骤不用改。

命中了就算违规吗?

不算。超标准可能已经事先审批,周末招待可能是正常安排,结果用于复核。

iModel 专属客服
在线留言或电话联系
在线留言

留下您的问题和联系方式,我们会在一个工作日内回复。

手机与邮箱至少填一项

4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码