在财务管理和出入库管理过程中,大都会涉及到期初、期末余额的计算问题,这个功能也是这些对应管理应用系统的功能刚需。
对于简道云这样的灵活方便的自由应用搭建系统来说,期初期末余额的计算更是广大用户的殷切期盼的功能,来帮助大家解决相关业务报表的数据呈现问题。
目前在简道云里实现期初期末余额的方案大都是利用函数或者智能助手去完成期初期末值的计算,但这个方案灵活性不高,如果数据发生修改则无法自动更新计算结果。
简道云的数据工厂是专门用来进行数据清洗处理的工具,我们今天尝试用数据工厂来实现对于期初期末余额的计算。
期初期末余额目前之所以是个让人头疼的问题,是因为简道云目前还没有能够解决累计计算问题的好方案。在数据工厂里目前的计算字段函数只能支持单行函数,而且仅限于数值的计算(我们的方案也将基于这个数值计算特性)。而期初期末余额的计算需要使用跨行函数,与这个场景类似的还有移动累计值的计算问题。其实期初期末余额的计算问题本质上也是移动累计计算的问题。期初余额为当前期之前的累计值,期末值为包含当前期的历史累计值,本期期末余额为下期的期初余额。
既然数据工厂不支持跨行函数,那么我们只能利用现有的功能来勉强拼凑出能够实现跨行计算的能力。
首先,为了保证我们的一切计算的顺利进行,我们需要先将日期转化成数值。
上面这个日期数值对照表将帮我们来实现移动累计计算。
首先,我们把出入库明细表按照日期(年-月)进行汇总。
下一步,我们利用我们的日期对照表来将我们的日期维度转化成数值。
期末余额为历史截止到本期的累计发生净值,我们先筛选数值日期≤当前数值日期的明细。
然后我们需要把筛选后的结果进行新的数值日期处理,把他们原来的日期替换成新的,以完成“累计”这个动作。
这里有个特别注意的。因为当前期的累计净值=当期期末余额=下期期初余额。所以在这里添加期初余额的对照数值日期时是本期的下期日期值。
剩下的所有日期都进行同样的处理。(这些处理就是苦逼的时候了)
处理完我们需要查看的日期查看范围之后,将他们追加合并。
接下来,我们需要将期初和期末区分开来。
然后再将它俩追加合并起来
合并之后就得到了数值日期归并的明细表了。我们接下来就是再将整个数值日期通过日期对照表逆转录成日期格式,方便我们后面的汇总、关联每期发生额以及最终的结果汇总展示。
再次按照日期年月维度汇总之后,再跟前面我们按年月汇总的每期发生额进行横向连接,获得每期发生额。(上面一步的汇总可以保证我们这里的连接时一一对应,避免出现一对多导致的数据汇总不准确)
最后处理一下我们连接得到的结果表字段。
至此,我们的整个处理过程就完成了。
最后我们看一下我们的处理结果!
这样,我们就可以非常明了的看到每期的期初、期末余额以及当期的发生额度净值。
当然我们目前这个方法只适用于解决年、季度、月的余额计算。如果要具体到日的话,这个方法也可以,只是需要设计的节点数量就太多了,不怕累又必须的可以尝试做一下!
还是最期待官方对于这些移动累计计算场景的功能支持尽快更新!(大家一起呼吁吧!)
一切皆是信息,万物源自比特!
数字化必定会深刻革命我们的办公和生活!
简道云,中小企业数字化之路的绝佳伴侣!
(文章来自简道云用户:龙小马)
编辑于 2021-9-15 10:37 编辑于 2021-9-15 11:02
|