经销商完成了合同任务才有返利,完成得越多档位越高,比去年同期增长得多还有加成。规则本身不复杂,难在口径:特价提货算不算、用返利账户付的那部分要不要扣、作废单据怎么处理、完成率差 0.1% 算不算达成。这个模型把这些口径固化成可运行的工作流,每一笔返利都能追到原始单据。
适用场景
- 季度或年度返利核算:政策到期时批量算出每家经销商应得多少。
- 返利预提:季度中途按当前进度试算,供财务计提。
- 政策模拟:调整档位之前,用上个季度的真实数据跑一遍,看总返利会变多少。
- 核销复核:财务审核核销单时,逐项核对金额怎么来的。
输入数据要求
三张表:提货明细、合同任务、返利档位。字段名可以不同,在工作流第 1 步改成下表的名称即可。
| 表 | 字段 | 是否必需 | 说明 |
|---|---|---|---|
| 提货明细 | 单据号、提货日期、经销商编码 | 必需 | 日期格式 yyyy-MM-dd |
| 提货明细 | 金额、返利支付金额 | 必需 | 返利支付金额指该单中用返利账户支付的部分 |
| 提货明细 | 是否特价、单据状态 | 必需 | 取值为「是 / 否」与「已确认 / 已作废」 |
| 合同任务 | 经销商编码、年度、季度、合同任务金额 | 必需 | 一家经销商一个统计期一行 |
| 合同任务 | 合作起始日期 | 可选 | 用于判断是否为新客户 |
| 返利档位 | 档位类型、下限、上限、系数 | 必需 | 档位类型分「完成率」与「增长率」两类 |
计算方法
| 步骤 | 算法 |
|---|---|
| 有效单据 | 剔除「已作废」的单据 |
| 实际达成额 | 统计期内提货金额 − 返利支付金额 |
| 任务完成率 | 实际达成额 ÷ 合同任务金额,保留四位小数后再比较 |
| 返利系数 | 按完成率查档位表;完成率不足 100% 时查不到档位,不出返利 |
| 增长率 | 实际达成额 ÷ 去年同期实际达成额 − 1;同期无数据时记为 0 |
| 增长系数 | 按增长率查档位表 |
| 返利基数 | 实际达成额 − 特价提货金额 |
| 返利金额 | 返利基数 × 返利系数 × 增长系数,保留两位小数 |
档位一律按「下限含、上限不含」匹配。特价提货计入完成率,但不计入返利基数——这是返利政策里最常见的一条,也最容易算错。
示例档位(可在档位表里改):完成率 100% 到 110% 返 1%,110% 到 120% 返 1.5%,120% 以上返 2%;增长率 10% 到 20% 系数 1.1,20% 以上 1.2,其余为 1.0。
一笔返利是怎么算出来的
- 统计期内提货金额已剔除作废单据2,500,000.02
- 减去用返利账户支付的部分这部分不算新的业绩− 100,000.02
- 得到实际达成额= 2,400,000.00
- 除以合同任务 2,000,000,得到完成率落在 120% 以上档,返利系数 2%120.00%
- 与去年同期 1,500,000 相比,得到增长率落在 20% 以上档,增长系数 1.2+60.00%
- 从达成额里扣掉特价提货 600,000,得到返利基数特价计入完成率,但不计入基数= 1,800,000.00
- 返利基数 × 返利系数 2% × 增长系数 1.2= 43,200.00 元
工作流步骤
节点按 iModel 中文名给出,示例数据已放在工作流内,导入后直接执行即可。
- 读取提货、任务、档位CSV 读取器 ×3
- 剔除作废单据基于规则的行过滤器
- 打上本期、同期、特价标记规则引擎 ×3
- 按经销商汇总五项金额分组聚合
- 算达成额、完成率、基数、增长率数学公式 ×5
- 匹配完成率与增长率档位交叉连接器 + 规则过滤
- 算出返利金额并输出数学公式 + CSV 写入器
- 读取三张表CSV 读取器 ×3
提货明细、合同任务、返利档位。经销商编码、单据号设为文本。
- 剔除作废单据基于规则的行过滤器
NOT ($单据状态$ = "已作废") => TRUE - 打标记规则引擎 ×3
按提货日期落在统计期还是去年同期,分别标记为 1 或 0;特价单据另打一个标记。用标记做乘法,就能在一次汇总里同时算出两个期间的金额。
- 拆出五个金额列数学公式 ×5
本期提货额、本期返利额、本期特价额、同期提货额、同期返利额,都是原金额乘以对应标记。
- 按经销商汇总分组聚合
按经销商编码分组,对五个金额列求和。没有同期数据的经销商自然得到 0,不会产生空值。
- 关联合同任务表关联
按经销商编码内连接,带出合同任务金额与合作起始日期。
- 计算各项指标数学公式 ×5
实际达成额、同期达成额、任务完成率、返利基数,以及增长率:
if($同期达成额$ > 0, roundHalfUp($实际达成额$ / $同期达成额$ - 1, 4), 0) - 匹配两类档位交叉连接器 ×2基于规则的行过滤器 ×2
档位表先按类型拆成两张;与主表交叉后用
$下限$ <= $任务完成率$ AND $任务完成率$ < $上限$留下命中的那一档。完成率不足 100% 的经销商在这里被自然过滤掉。 - 算出返利并输出数学公式排序器CSV 写入器
基数乘两个系数,按金额从大到小排序后写出结果。
参数
| 参数 | 默认值 | 作用 | 怎么调 |
|---|---|---|---|
| 统计期 | 2026-04-01 至 2026-06-30 | 本期范围 | 年返改为整年;第 3 步的规则里改日期 |
| 同期 | 2025-04-01 至 2025-06-30 | 计算增长率的基准期 | 季返对应去年同季度,年返对应去年全年 |
| 档位表 | rebate_tiers.csv | 两类档位的区间与系数 | 直接改表,不动工作流;政策调整只改这里 |
| 作废状态值 | 已作废 | 第 2 步排除的状态 | 按你们系统的实际取值填写 |
用示例数据验证
运行后结果应与示例数据包里的 expected_result.csv 完全一致。示例数据里每家经销商都对应一种情况:完成率正好 100%、正好 110%、正好 120%,增长率正好 10%、正好 20%,以及新客户、无同期数据、负增长、含作废单、特价占比大、差 0.1% 未达成。
| 经销商 | 名称 | 实际达成额 | 完成率 | 返利系数 | 增长率 | 增长系数 | 返利基数 | 返利金额 |
|---|---|---|---|---|---|---|---|---|
| D006 | 东北瑞祥贸易有限公司 | 2,400,000.00 | 120.00% | 2.0% | 60.00% | 1.2 | 1,800,000.00 | 43,200.00 |
| D008 | 华东智达贸易有限公司 | 1,320,000.00 | 120.00% | 2.0% | 20.00% | 1.2 | 1,320,000.00 | 31,680.00 |
| D003 | 西南利丰商贸有限公司 | 960,000.00 | 120.00% | 2.0% | — | 1.0 | 960,000.00 | 19,200.00 |
| D001 | 华东盛通商贸有限公司 | 1,100,000.04 | 110.00% | 1.5% | 10.00% | 1.1 | 1,100,000.04 | 18,150.00 |
| D005 | 华中广元商贸有限公司 | 874,999.98 | 125.00% | 2.0% | — | 1.0 | 874,999.98 | 17,500.00 |
| D010 | 华中泰达贸易有限公司 | 900,000.00 | 105.88% | 1.0% | 20.00% | 1.2 | 900,000.00 | 10,800.00 |
| D009 | 华南捷运商贸有限公司 | 1,000,000.02 | 105.26% | 1.0% | 5.26% | 1.0 | 1,000,000.02 | 10,000.00 |
| D004 | 华北恒远经贸有限公司 | 945,000.00 | 105.00% | 1.0% | -21.25% | 1.0 | 945,000.00 | 9,450.00 |
| D012 | 华北金桥贸易有限公司 | 789,999.96 | 105.33% | 1.0% | -1.25% | 1.0 | 789,999.96 | 7,900.00 |
| D007 | 西北鑫海商贸有限公司 | 600,000.00 | 100.00% | 1.0% | 0.00% | 1.0 | 600,000.00 | 6,000.00 |
另有两家不应出现在结果里:一家完成率 99.90%,差一点未达成;一家完成率 85.01%,明显未达成。
适用边界
- 这是约定返利一种模型,不是全部返利。台返、终端返、样机返、平台推广返利各有各的算法,需要各自的模型。
- 口径需要按贵司政策核对。特价是否计入完成率、返利支付部分是否从达成额中扣除、合作满多久才算老客户,各家政策不同,示例采用的是较常见的一种。
- 不处理商品维度分摊。返利金额分摊到具体商品是核销环节的事,这个模型只算到经销商。
- 不含审批与上账。模型输出的是测算结果,政策审批、核销单、充值上账仍在业务系统中完成。
常见问题
档位调整了怎么办?
改档位表里的行即可,工作流不用动。建议调整前先用上个季度的真实数据跑一遍,比较返利总额的变化再定。
怎么做年返?
把第 3 步里的两个日期区间改成本年度与去年同期,其余不变。若年返的档位与季返不同,另备一张档位表。
新客户没有去年同期数据,会不会算错?
不会。同期数据为 0 时增长率记为 0,落在系数为 1.0 的档位,相当于不加成也不惩罚。
数据在中台或 BI 里,不是 CSV,怎么接?
把第 1 步换成数据库读取节点,查询出上表字段即可,后面的步骤不用改。
能不能直接作为核销依据?
测算结果需经业务与财务复核。模型保证的是同样的数据与档位必然得到同样的金额,以及每一步都可追溯。