【预算控制算法】-操作手册
预算控制简述
业务单据进行预算控制时,在单据提交或者审核时调用预算控制节点,预进行预算扣减处理,支持如下两种场景:
1、公司(或部门)编制公司(或部门)的预算,公司(或部门)做业务单据来控制及扣减预算业务。
2、管理中心公司编制预算,公司(或部门)不做预算,公司(或部门)填写业务单据,然后扣减管理中心的预算额度,公司与管理中心可以不是直接上下级的关系。
预算控制方式支持当期控制、累计控制和总量控制,这几种控制方式的原理对比如下面的示意图(以季度预算为例,第3季度为当期):
当期控制
1、当期控制简述
1)当期控制:发生的业务只能占用当期的可用预算。
2)适用场景:业务发生平稳、预算编制精确、剩余预算不需滚动到下期使用的项目。
3)优点:控制粒度精细、执行异常可尽早暴露。
4)缺点:需要可靠的历史数据做准确和细致的估算,否则可能需要频繁的调整预算。
2、预算扣减组织、当期期间、币别、预算数、实际数和可用预算余额说明
1)预算扣减组织:首先,根据控制策略中设置的预算组织和业务日期,获取业务单据上对应的组织和业务日期,结合预算科目设置的科目分类,获取归口设置中相同科目分类和业务组织编码,且业务日期所在日期区间内记录的记录。若不存在,根据空科目分类+业务单据上组织+业务日期获取归口组织,若存在,即为预算扣减组织;反之,预算扣减组织为控制策略中设置的组织。
2)当期期间:根据策略中“业务日期”寻找业务单据上对应的日期、并根据期间分类和期间类型寻找匹配的预算期间,即为当期期间。
3)当期预算数:根据控制策略设置得到维度组合,根据该维度组合,寻找符合要求的控制方式,根据控制方式设置,寻找预算扣减组织对应的预算数。
4)当期实际数:当期内发生的实际数之和。
5)可用预算余额计算
参数“MBG_C060 在途调减数参与可用余额计算” | 可用预算余额 |
否 | 当期预算数 * 弹性系数 - 当期实际数 |
是 | 当期预算数 * 弹性系数 - 当期实际数 – 在途调减数*弹性系数 |
3、当期控制逻辑说明
1)当预算数为空时
控制策略‘预算数为空’ | 预算控制逻辑 |
预算数为空都不允许通过 | 当可用余额 – 业务单据本次申请数 < 0时,不允许通过;反之,允许通过。 |
预算数为空都允许通过 | 不判断控制方式,预算扣减时均允许通过。 |
预算数为空且控制方式为空允许通过 | 1、若不存在控制方式,预算扣减时可以通过。 2、若存在控制方式,且控制策略和控制方式均允许超预算,则预算扣减时可以通过。 3、若存在控制方式,且控制策略和控制方式有任何一处设置为不可超预算,当可用余额 – 业务单据本次申请数 < 0时,不允许通过;反之,允许通过。 |
控制方式为空不允许通过 | 1、若未设置控制方式,预算数为空时不允许通过; 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
2)当预算数不为空时
控制策略‘预算数不为空’ | 预算控制逻辑 |
控制方式为空允许通过 | 1、若未设置控制方式,预算扣减时通过。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
控制方式为空等同“当期控制+不允许超额” | 1、若未设置控制方式,按照当期控制且不能超预算进行控制。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
控制方式为空不允许通过 | 1、若未设置控制方式,预算扣减时不允许通过。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
3)当预算数为0时,根据参数“MBG_C020 预算数为0视同为空”分情况处理:
3.1)若设置为“是”,与预算为空处理一致;
3.2)若设置为“否”,与预算数不为空处理一致。
累计控制
1、累计控制简述
1)累计控制:发生的业务可以占用当期可用预算和过去相关期间的可用预算。
2)适用场景:本期剩余预算需要自动滚动给未来期间使用、但本期不可占用未来期间预算的项目。累计控制和大多业务的要求最为贴切,也是最为普遍被采用的控制方式。
2、预算扣减组织、控制期间范围、累计预算数、累计实际数和可用预算余额说明
1)预算扣减组织:首先,根据控制策略中设置的预算组织和业务日期,获取业务单据上对应的组织和业务日期,结合预算科目设置的科目分类,获取归口设置中相同科目分类和业务组织编码,且业务日期所在日期区间内记录的记录。若不存在,根据空科目分类+业务单据上组织+业务日期获取归口组织,若存在,即为预算扣减组织;反之,预算扣减组织为控制策略中设置的组织。
2)控制期间范围:控制方案和预算模型上期间取交集,然后根据交集的开始日期、结束日期、策略中的期间分类和期间类型,得到控制期间的开始预算期间和结束预算期间。
控制方式 “控制期间范围” | 控制策略“控制期间类型” | 控制期间范围说明 |
预算模型期间 | 所有 | 参考‘控制期间范围’说明 |
按年控制 | 所有 | 控制期间范围内,当前预算期间所在年度内的所有期间 |
按半年控制 | 小于等于半年的所有期间 | 控制期间范围内,当前预算期间所在半年内的所有期间 |
大于半年的期间 | 当前预算期间 | |
按季控制 | 小于等于季的所有期间 | 控制期间范围内,当前预算期间所在季内的所有期间 |
大于季的期间 | 当前预算期间 | |
按月控制 | 小于等于月的所有期间 | 控制期间范围内,当前预算期间所在月内的所有期间 |
大于月的期间 | 当前预算期间 | |
所有 | 明细期间 | 根据控制方案和预算模型上期间取交集,然后根据交集的开始日期、结束日期、策略中的期间分类,获取当前期间所在自定义期间树内的所有明细预算期间,如果不存在,则获取根自定义期间 |
所有 | 非明细期间 | 根据控制方案和预算模型上期间取交集,然后根据交集的开始日期、结束日期、策略中的期间分类,获取当前期间所在自定义期间树的根期间 |
3)可用预算余额计算
场景 | 参数“MBG_C060 在途调减数参与可用余额计算” | 可用预算余额 |
控制期间范围内产生实际数的最后期间大于当前期间 | 否 | 控制期间范围内产生实际数的大于等于当前预算期间的每个期间的预算余额(即:对应期间的累计预算数之和 * 弹性系数 – 对应期间的累计实际数之和),多个预算期间的预算余额取最小数。 |
是 | 控制期间范围内产生实际数的大于等于当前预算期间的每个期间的预算余额(即:对应期间的累计预算数之和 * 弹性系数 – 对应期间的累计实际数之和 -对应期间的累计在途调减数之和 * 弹性系数),多个预算期间的预算余额取最小数。 | |
控制期间范围内产生实际数的最后期间小于等于当前预算期间 | 否 | 控制期间范围内当前预算期间的累计预算数之和 * 弹性系数 - 当前预算期间的累计实际数之和。 |
是 | 控制期间范围内当前预算期间的累计预算数之和 * 弹性系数 - 当前预算期间的累计实际数之和 - 当前预算期间累计在途调减数之和 * 弹性系数。 |
3、累计控制逻辑说明
判断业务发生额是否超过可用预算余额,处理方式分为以下几种情况:
1)当预算数为空时
控制策略‘预算数为空’ | 预算控制逻辑 |
预算数为空都不允许通过 | 当可用余额 – 业务单据本次申请数 < 0时,不允许通过;反之,允许通过。 |
预算数为空都允许通过 | 不判断控制方式,预算扣减时均允许通过。 |
预算数为空且控制方式为空允许通过 | 1、若不存在控制方式,预算扣减时可以通过。 2、若存在控制方式,且控制策略和控制方式均允许超预算,则预算扣减时可以通过。 3、若存在控制方式,且控制策略和控制方式有任何一处设置为不可超预算,当可用余额 – 业务单据本次申请数 < 0时,不允许通过;反之,允许通过。 |
控制方式为空不允许通过 | 1、若未设置控制方式,预算数为空时不允许通过; 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
2)当预算数不为空时
控制策略‘预算数不为空’ | 预算控制逻辑 |
控制方式为空允许通过 | 1、若未设置控制方式,预算扣减时通过。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
控制方式为空等同“当期控制+不允许超额” | 1、若未设置控制方式,按照当期控制且不能超预算进行控制。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
控制方式为空不允许通过 | 1、若未设置控制方式,预算扣减时不允许通过。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
3)当预算数为0时,根据参数“MBG_C020 预算数为0视同为空”分情况处理:
3.1)若设置为“是”,与预算为空处理一致;
3.2)若设置为“否”,与预算数不为空处理一致。
总量控制
1、总量控制简述
1)总量控制:发生的业务可以占用所有相关期间的可用预算。
2)适用场景:只关注宏观的预算总额控制,预算可以在各期间自动调剂共享。
3)优点:对不确定性大、季节差异大的业务适应能力强。
4)缺点:控制粒度不精细,预算执行异常集中暴露在后期。
2、预算扣减组织、控制期间范围、总量预算数、总量实际数和可用预算余额说明
1)预算扣减组织:首先,根据控制策略中设置的预算组织和业务日期,获取业务单据上对应的组织和业务日期,结合预算科目设置的科目分类,获取归口设置中相同科目分类和业务组织编码,且业务日期所在日期区间内记录的记录。若不存在,根据空科目分类+业务单据上组织+业务日期获取归口组织,若存在,即为预算扣减组织;反之,预算扣减组织为控制策略中设置的组织。
2)控制期间范围:控制方案和预算模型上期间取交集,然后根据交集的开始日期、结束日期、策略中期间分类和期间类型,得到控制期间的开始预算期间和结束预算期间。具体分为如下几种情况:
控制方式 “控制期间范围” | 控制策略“控制期间类型” | 控制期间范围说明 | 总量预算数 | 总量实际数 |
预算模型期间 | 所有 | 参考‘控制期间范围’说明 | 控制期间范围内,所有期间的预算数之和 | 控制期间范围内,所有期间的实际数之和 |
按年控制 | 所有 | 控制期间范围内,当前预算期间所在年度内的所有期间 | 当前期间所在年度内,所有期间的预算数之和 | 当前期间所在年度内,所有期间的实际数之和 |
按半年控制 | 小于等于半年的所有期间 | 控制期间范围内,当前预算期间所在半年内的所有期间 | 当前期间所在半年内,所有期间的预算数之和 | 当前期间所在半年内,所有期间的实际数之和 |
大于半年的期间 | 当前预算期间 | 当前预算期间的预算数 | 当前预算期间的实际数 | |
按季控制 | 小于等于季的所有期间 | 控制期间范围内,当前预算期间所在季内的所有期间 | 当前期间所在季度内,所有期间的预算数之和 | 当前期间所在季度内,所有期间的实际数之和 |
大于季的期间 | 当前预算期间 | 当前预算期间的预算数 | 当前预算期间的实际数 | |
按月控制 | 小于等于月的所有期间 | 控制期间范围内,当前预算期间所在月内的所有期间 | 当前期间所在月内,所有期间的预算数之和 | 当前期间所在月内,所有期间的实际数之和 |
大于月的期间 | 当前预算期间 | 当前预算期间的预算数 | 当前预算期间的实际数 | |
所有 | 明细期间 | 根据控制方案和预算模型上期间取交集,然后根据交集的开始日期、结束日期、策略中的期间分类,获取当前期间所在自定义期间树内的所有明细预算期间,如果不存在,则获取根自定义期间 | 当期期间所在控制期间范围内的预算数之和 | 当期期间所在控制期间范围内的实际数之和 |
所有 | 非明细期间 | 根据控制方案和预算模型上期间取交集,然后根据交集的开始日期、结束日期、策略中的期间分类,获取当前期间所在自定义期间树的根期间 | 当期期间的预算数 | 当期期间的实际数 |
3)可用预算余额计算
参数“MBG_C060 在途调减数参与可用余额计算” | 可用预算余额 |
否 | 总量预算数 * 弹性系数 – 总量实际数 |
是 | 总量预算数 * 弹性系数 – 总量实际数– 总量在途调减数*弹性系数 |
3、总量控制逻辑说明
判断业务发生额是否超过可用预算余额,处理方式分为以下几种情况:
1)当预算数为空时
控制策略‘预算数为空’ | 预算控制逻辑 |
预算数为空都不允许通过 | 当可用余额 – 业务单据本次申请数 < 0时,不允许通过;反之,允许通过。 |
预算数为空都允许通过 | 不判断控制方式,预算扣减时均允许通过。 |
预算数为空且控制方式为空允许通过 | 1、若不存在控制方式,预算扣减时可以通过。 2、若存在控制方式,且控制策略和控制方式均允许超预算,则预算扣减时可以通过。 3、若存在控制方式,且控制策略和控制方式有任何一处设置为不可超预算,当可用余额 – 业务单据本次申请数 < 0时,不允许通过;反之,允许通过。 |
控制方式为空不允许通过 | 1、若未设置控制方式,预算数为空时不允许通过; 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
2)当预算数不为空时
控制策略‘预算数不为空’ | 预算控制逻辑 |
控制方式为空允许通过 | 1、若未设置控制方式,预算扣减时通过。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
控制方式为空等同“当期控制+不允许超额” | 1、若未设置控制方式,按照当期控制且不能超预算进行控制。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
控制方式为空不允许通过 | 1、若未设置控制方式,预算扣减时不允许通过。 2、若设置了控制方式,当控制方式和控制策略均设置为可以超预算时,才允许通过。 |
3)当预算数为0时,根据参数“MBG_C020 预算数为0视同为空”分情况处理:
3.1)若设置为“是”,与预算为空处理一致;
3.2)若设置为“否”,与预算数不为空处理一致。
不控制
控制方式中没有维护的预算科目,系统视为不控制,业务单据是否能够通过,需结合控制策略组合判断。
分组控制
分组控制,相同控制方式的不同预算科目成员或者预算科目成员+相同的辅助维度组合或者预算科目成员+辅助维度成员设为同一个分组控制,计算可用余额按照同一个分组控制的预算科目成员或者预算科目成员+辅助维度成员的预算数合计和实际数合计进行计算。
例如:管理费用、营业费用和财务费用,这三个预算科目的控制方式一样,在预算控制方式设置界面,选中这三个预算科目,再点击【】按钮,那么这三个预算科目就建立了分组控制的关系。假如这三个预算科目的预算均为100,管理费用已发生90,营业费用、财务费用无发生额,如果管理费用又发生50,在提交审批的时候,系统检查管理费用的预算可用余额为210,而不是10,在这种情况下,审批通过。
分组控制和控制算法组合的算法详见“控制算法”章节。
控制算法
控制方式是预算科目成员+维度组合+组合成员,控制算法选项“明细、汇总”没有区别,各维度组合分别计算各自的值。该选项对控制方式只设置预算科目成员或者预算科目成员+维度组合,控制策略的维度组合:预算科目成员+维度组合的场景有区别。
明细是多个预算科目的指定组合成员相加,汇总是多个预算科目的所有组合成员相加。
详细算法见下图:
以收定支控制
以收定支控制,主要是为了满足企业如下业务需求:为了激励销售,企业一般采取收入增加,费用也相应比例增加的预算控制模式,比如收入完成进度为110%,费用预算可以上浮5%,即费用预算控制在105%的范围内;或者为了控制费用预算的执行进度,虽然是总额控制,但需要按照收入的执行进度进行控制,比如目前收入的执行进度是60%,则费用的余额也是按照60%的执行进度进行控制。
当扣减科目设置了以收定支控制规则时,那么按照规则设置计算可用预算余额,具体场景如下:
1、控制科目执行进度说明
控制科目控制方式 | 参数“MBG_C060 在途调减数参与可用余额计算” | 控制科目执行进度 |
当期控制 | 否 | 当期实际数/(当期预算数*弹性系数) |
是 | 当期实际数/[(当期预算数 -当期在途调减数)*弹性系数] | |
累计控制 | 否 | 控制期间范围内,开始期间截止当前期间的实际数之和 / (开始期间截止当前期间的预算数之和*弹性系数) |
是 | 控制期间范围内,开始期间截止当前期间的实际数之和 / |