讨论一套分配安排,大家往往先看比例。
分多少,谁多一点,谁少一点。比例商量好了,就开始做表、写规则、开发系统。
但有一个更基础的问题:这个百分比,乘的到底是哪个数?
同一句“按20%计算”,可以指本期交易金额的20%,也可以指某项收入的20%,还可以指已经划出的一笔预算的20%。这几种算法,得到的结果可能差很多。
我觉得,先把“按什么算”写清楚,后面的分配才有共同依据。否则,业务说的、财务核的、开发写进系统的,可能从一开始就不是同一件事。
一、每一个百分比,都要带着自己的基数
下面用一套专门编写的教学数字说明,不对应任何真实企业、项目或收益安排。比例只用于演算,不是分配建议。
假设某项协作奖励,已经明确本期符合条件的业务金额为1,000元。这里将它记作 B。
这个金额已经按本例约定的范围和统计期间核对,排除了不符合条件、已取消或已退款的部分。它只是本例的计算基数,不能据此认定企业有1,000元利润,或有1,000元可以拿来分配。
再假设规则提出,按B的20%计算本期拟安排的激励池,记作 P。
激励池 P=计算基数 B×提取比例 r
本例:1,000×20%=200元。
接下来,三类协作事项分别占激励池的50%、30%和20%。
注意,这三个比例乘的是 200元的激励池。
| 协作事项 | 占激励池的比例 | 计算 | 金额 |
|---|---|---|---|
| 甲类 | 50% | 200×50% | 100元 |
| 乙类 | 30% | 200×30% | 60元 |
| 丙类 | 20% | 200×20% | 40元 |
| 合计 | 100% | 100+60+40 | 200元 |
如果把这三个池内比例,直接乘前面的1,000元,就会变成500元、300元和200元,合计1,000元。
每一步乘法都可以算对,但它们已经用了错误的基数。原本拟安排200元,结果算出了1,000元,多了800元。
所以,光核对比例有没有加到100%,还不够。先看每个比例乘的是谁。
图一中的金额、比例和协作分类全部为教学虚构。图中展示计算关系,资金来源、可用预算和支付条件仍需分别确认。
二、两种写法可以等价,前提是换算清楚
前面的例子,也可以换一种写法:甲类占B的10%,乙类占B的6%,丙类占B的4%。
因为:
- 20%×50%=10%;
- 20%×30%=6%;
- 20%×20%=4%。
直接按B计算,还是100元、60元和40元,合计200元。
这说明,使用“大基数的比例”或“池内比例”,都可以形成清楚的规则。需要避免的是,标题用一种说法,表格用另一种说法,公式又换了基数。
如果把10%、6%和4%写在“占激励池比例”下面,读者就会按200元计算,最后只算出40元。
我建议,表头就写完整:“占本期有效业务金额的比例”,或者 “占本期激励池的比例”。公式里的字段、配置表和界面提示,也跟着同一个定义走。
省掉几个字,可能留下整套系统都要反复解释的问题。
三、算出200元,还要问这200元从哪里来
B乘以20%,得到的是一个计算结果。这个公式没有替组织准备好支付资金,也没有完成预算批准。
来源是什么,哪些资金可以用于这项安排,由谁确认,是否还有条件,都需要另外说清楚。
本例再作一个假设:组织已经为这项奖励确认了200元可用预算,并具备相应支付条件。这样,算出的200元才与本例的预算和支付安排对得上。
如果实际只确认了180元预算,计算仍然得到200元,就出现了一个需要处理的差额。
系统应当把这个差额显示出来,交回相应负责人核对。需要减少池子、补足预算,还是修改本期安排,要按既定权限和约定处理,不能让系统悄悄改比例,也不能默认下一期总会有钱补上。
计算基数、拟安排的池子、可用预算和实际支付金额,分别代表不同的事情。
把它们分开,才容易看见哪一层出了问题。
四、时间也要对齐:发生、确认、支付分别记
一笔业务发生了,不一定已经满足进入本期计算的条件。金额已经确认,也不一定马上进入支付。
假设一项业务在本月发生,下个月才完成约定的核对。它应该进入哪一期?后来出现退款,影响原期还是下期?已经支付的部分怎样处理?
这些问题,应当在规则里有对应安排。
我倾向于至少保留三个时间:
| 时间 | 回答什么 | 需要留下什么 |
|---|---|---|
| 业务发生时间 | 这件事什么时候发生 | 原始业务记录与唯一编号 |
| 计算确认时间 | 按什么条件、进入哪一期计算 | 适用规则版本、确认依据和计算期间 |
| 实际支付时间 | 什么时候、按什么条件支付 | 支付状态、金额与对应记录 |
这样做,后续才容易追到同一笔事项。
例如,本例原先纳入计算的1,000元里,有200元在确认前完成退款。按本例约定,这部分应当排除,那么新的B就是800元,P就是160元;再按50%、30%、20%计算,分别是80元、48元、32元。
这是在说明一个明确条件下的重算。
如果退款发生在确认后,甚至发生在支付后,就不能直接照搬这一步。需要找到原事件、原计算记录和适用规则,按约定复核是否需要调整、怎样调整。调整应当留下原因和差额记录,避免直接删除原记录,让后面的人不知道发生过什么。
五、让业务、财务和开发核对同一份定义
在我看来,一项分配规则进入系统之前,至少需要有一份大家都能看懂的定义。
业务负责人解释哪些事项符合条件;财务或相应负责人核对来源、预算和金额口径;开发按照确认后的字段、公式和状态处理。哪些人有权确认和批准,也要对应具体组织的分工。
这份定义不一定很长,但下面几项要能找到:
| 定义项 | 至少写清什么 |
|---|---|
| 来源与范围 | 资金来源、适用业务、参与对象、明确排除的事项 |
| 基数B | 金额含义、单位、期间、纳入条件、退款与取消怎样影响基数 |
| 激励池P | 按什么比例或办法形成,受什么预算和授权边界约束 |
| 池内比例 | 分别乘哪个数,是分完池子,还是允许按规则保留余额 |
| 确认与支付 | 进入计算、确认结果、执行支付分别需要什么条件 |
| 异常处理 | 重复记录、退款、撤销、超额、尾差怎样处理 |
| 规则版本 | 谁确认,何时生效,适用哪些事项,修改怎样通知和保留记录 |
这里还有一个小问题:池内比例没有合计到100%,不一定就是算错了。
如果规则明确允许预留一部分,就把预留的用途、保管和后续处理写清楚。如果规则要求分完池子,就应当核对分配合计与池子是否相等。
有余额时,把它列出来。不能默认少分的部分已经自动归了某个人,也不能为了凑满100%就随意增加分配。
六、先用正常和异常例子,把规则跑一遍
规则写得通,还需要看看具体数据进去以后,会出来什么结果。
下面仍沿用教学例子。各项测试分别针对自己的输入条件,不代表它们同时发生。
| 测试 | 输入或情境 | 应当看到的结果 |
|---|---|---|
| 正常计算 | B=1,000;提取20%;池内50%、30%、20% | P=200;分配100、60、40;合计200 |
| 基数误用 | 错把池内比例乘B | 得到500、300、200;合计1,000;识别出超出池子800,不能作为正常结果通过 |
| 池内超额 | 同一200元池子,比例改为50%、40%、20% | 得到100、80、40;合计220;显示超出池子20,退回核对 |
| 预算不足 | 计算P=200,可用预算仅180 | 显示差额20,暂不按原方案执行,交回有权负责人处理 |
| 确认前退款 | 原B=1,000,其中200按本例规则需排除 | B=800;P=160;分配80、48、32;保留退款关联依据 |
| 重复记录 | 同一符合条件的业务事件被再次提交 | 识别同一事件,避免重复计入基数或重复支付;保留处理结果 |
| 撤销或后续调整 | 原结果已确认,后来收到退款或取消信息 | 定位原事件与规则,按约定复核调整,保留原记录与调整记录 |
还有一项很容易忽略:金额的舍入。
例如,一个0.03元的池子,按50%、30%、20%计算,分别是0.015元、0.009元、0.006元。若各自按四舍五入保留两位,就会变成0.02元、0.01元、0.01元,合计0.04元。
这时,问题出在“每项怎样取整、尾差怎样处理”。需要事先明确金额精度、舍入顺序和尾差安排,让分项与总额能够核对。具体采用什么办法,由对应规则确定,不能临时把差额塞给某一项。
测试的作用,是把含糊的定义和容易漏掉的情况提前找出来。
图二是本次整理的工作建议。演算通过、预算可用、具备审批权限和满足支付条件,需要分别核对。
七、最后再从结果往回核一遍
正着算完以后,我建议再反着问:
这笔金额来自哪个池子?这个池子按哪个基数形成?基数来自哪些业务记录?采用哪一版规则?是否符合本期条件?预算和支付记录能不能对应上?
沿着这些问题往回找,应当能够回到具体数据和确认依据。
有人提出不同意见时,也先看分歧发生在哪一层。是业务范围不同,基数不同,池内比例不同,还是计算期间、退款状态和规则版本不同?
把分歧落到具体字段和记录上,才容易知道下一步找谁、核什么。
结语
分配规则可以很简洁,但每个比例对应什么基数、每笔金额对应什么来源,都要讲得明白。
先用一套小数字,把正常情况、异常情况和调整情况走通,再进入系统。以后增加角色、业务和规则,也有一个能够核对的基础。
我觉得,一套安排真正让人放心的地方,就在这些具体问题上:算得清,查得到,发现问题以后知道怎样改。