约定返利测算

规则型 医疗器械家电快消

经销商完成了合同任务才有返利,完成得越多档位越高,比去年同期增长得多还有加成。规则本身不复杂,难在口径:特价提货算不算、用返利账户付的那部分要不要扣、作废单据怎么处理、完成率差 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。

一笔返利是怎么算出来的

示例:D006 东北瑞祥贸易有限公司(2026 Q2)鼠标移上去可暂停
  1. 统计期内提货金额已剔除作废单据2,500,000.02
  2. 减去用返利账户支付的部分这部分不算新的业绩− 100,000.02
  3. 得到实际达成额= 2,400,000.00
  4. 除以合同任务 2,000,000,得到完成率落在 120% 以上档,返利系数 2%120.00%
  5. 与去年同期 1,500,000 相比,得到增长率落在 20% 以上档,增长系数 1.2+60.00%
  6. 从达成额里扣掉特价提货 600,000,得到返利基数特价计入完成率,但不计入基数= 1,800,000.00
  7. 返利基数 × 返利系数 2% × 增长系数 1.2= 43,200.00 元
这七步正是工作流里的计算顺序;示例数据包里 12 家经销商各自对应一种情况。

工作流步骤

节点按 iModel 中文名给出,示例数据已放在工作流内,导入后直接执行即可。

读取数据处理门槛判定关键计算输出
  1. 读取提货、任务、档位CSV 读取器 ×3
  2. 剔除作废单据基于规则的行过滤器
  3. 打上本期、同期、特价标记规则引擎 ×3
  4. 按经销商汇总五项金额分组聚合
  5. 算达成额、完成率、基数、增长率数学公式 ×5
  6. 匹配完成率与增长率档位交叉连接器 + 规则过滤
  7. 算出返利金额并输出数学公式 + CSV 写入器
  1. 读取三张表CSV 读取器 ×3

    提货明细、合同任务、返利档位。经销商编码、单据号设为文本。

  2. 剔除作废单据基于规则的行过滤器

    NOT ($单据状态$ = "已作废") => TRUE

  3. 打标记规则引擎 ×3

    按提货日期落在统计期还是去年同期,分别标记为 1 或 0;特价单据另打一个标记。用标记做乘法,就能在一次汇总里同时算出两个期间的金额。

  4. 拆出五个金额列数学公式 ×5

    本期提货额、本期返利额、本期特价额、同期提货额、同期返利额,都是原金额乘以对应标记。

  5. 按经销商汇总分组聚合

    按经销商编码分组,对五个金额列求和。没有同期数据的经销商自然得到 0,不会产生空值。

  6. 关联合同任务表关联

    按经销商编码内连接,带出合同任务金额与合作起始日期。

  7. 计算各项指标数学公式 ×5

    实际达成额、同期达成额、任务完成率、返利基数,以及增长率:
    if($同期达成额$ > 0, roundHalfUp($实际达成额$ / $同期达成额$ - 1, 4), 0)

  8. 匹配两类档位交叉连接器 ×2基于规则的行过滤器 ×2

    档位表先按类型拆成两张;与主表交叉后用 $下限$ <= $任务完成率$ AND $任务完成率$ < $上限$ 留下命中的那一档。完成率不足 100% 的经销商在这里被自然过滤掉。

  9. 算出返利并输出数学公式排序器CSV 写入器

    基数乘两个系数,按金额从大到小排序后写出结果。

参数

参数默认值作用怎么调
统计期2026-04-01 至 2026-06-30本期范围年返改为整年;第 3 步的规则里改日期
同期2025-04-01 至 2025-06-30计算增长率的基准期季返对应去年同季度,年返对应去年全年
档位表rebate_tiers.csv两类档位的区间与系数直接改表,不动工作流;政策调整只改这里
作废状态值已作废第 2 步排除的状态按你们系统的实际取值填写

用示例数据验证

134提货单据
12经销商
10应得返利
173,880返利合计(元)

运行后结果应与示例数据包里的 expected_result.csv 完全一致。示例数据里每家经销商都对应一种情况:完成率正好 100%、正好 110%、正好 120%,增长率正好 10%、正好 20%,以及新客户、无同期数据、负增长、含作废单、特价占比大、差 0.1% 未达成。

经销商名称实际达成额完成率返利系数增长率增长系数返利基数返利金额
D006东北瑞祥贸易有限公司2,400,000.00120.00%2.0%60.00%1.21,800,000.0043,200.00
D008华东智达贸易有限公司1,320,000.00120.00%2.0%20.00%1.21,320,000.0031,680.00
D003西南利丰商贸有限公司960,000.00120.00%2.0%—1.0960,000.0019,200.00
D001华东盛通商贸有限公司1,100,000.04110.00%1.5%10.00%1.11,100,000.0418,150.00
D005华中广元商贸有限公司874,999.98125.00%2.0%—1.0874,999.9817,500.00
D010华中泰达贸易有限公司900,000.00105.88%1.0%20.00%1.2900,000.0010,800.00
D009华南捷运商贸有限公司1,000,000.02105.26%1.0%5.26%1.01,000,000.0210,000.00
D004华北恒远经贸有限公司945,000.00105.00%1.0%-21.25%1.0945,000.009,450.00
D012华北金桥贸易有限公司789,999.96105.33%1.0%-1.25%1.0789,999.967,900.00
D007西北鑫海商贸有限公司600,000.00100.00%1.0%0.00%1.0600,000.006,000.00

另有两家不应出现在结果里:一家完成率 99.90%,差一点未达成;一家完成率 85.01%,明显未达成。

适用边界

  • 这是约定返利一种模型,不是全部返利。台返、终端返、样机返、平台推广返利各有各的算法,需要各自的模型。
  • 口径需要按贵司政策核对。特价是否计入完成率、返利支付部分是否从达成额中扣除、合作满多久才算老客户,各家政策不同,示例采用的是较常见的一种。
  • 不处理商品维度分摊。返利金额分摊到具体商品是核销环节的事,这个模型只算到经销商。
  • 不含审批与上账。模型输出的是测算结果,政策审批、核销单、充值上账仍在业务系统中完成。

常见问题

档位调整了怎么办?

改档位表里的行即可,工作流不用动。建议调整前先用上个季度的真实数据跑一遍,比较返利总额的变化再定。

怎么做年返?

把第 3 步里的两个日期区间改成本年度与去年同期,其余不变。若年返的档位与季返不同,另备一张档位表。

新客户没有去年同期数据,会不会算错?

不会。同期数据为 0 时增长率记为 0,落在系数为 1.0 的档位,相当于不加成也不惩罚。

数据在中台或 BI 里,不是 CSV,怎么接?

把第 1 步换成数据库读取节点,查询出上表字段即可,后面的步骤不用改。

能不能直接作为核销依据?

测算结果需经业务与财务复核。模型保证的是同样的数据与档位必然得到同样的金额,以及每一步都可追溯。

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

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

手机与邮箱至少填一项

4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码