财务系统的领域建模——五视图法的分析
目录
背景介绍
随着业务的发展,财务做账的压力越来越大,不仅耗费人力、易出错,同时还影响月结的效率。生成记账凭证是月结的第一步,我们需要系统集成的方式为月结打好基础。本文是从架构层面对于财务记账凭证系统在开发设计过程中的操作要点进行说明。
领域模型
提炼关键概念:会计期间、业务单据、原始凭证、会计日期、记账凭证、冲销凭证
在开发设计财务使用的系统时,首先需要具备这个行业内的一些基础知识,我们先来了解一下专有名词的业务解释。
会计期间
是指将企业川流不息的经营活动划分为若干个相等的区间,在连续反映的基础上,分期进行会计核算和编制会计报表,定期反映企业某一期间的经营活动和成果。
我国《企业会计准则》规定:会计期间一般应从公历1月1日开始,12月31日结束,又称会计年度、财务年度。除了会计年度以外,会计期间还有:月度、季度、半年度。
业务单据
本文主要指经营类单据,如订单、采购单、收款单、退款单、赔款单、付款单等。财务角度也称为原始凭证。
会计日期
会计日期就是会计分期,财务一般一年分为十二期,按月分期,会计凭证又有具体的制单日期指定会计日期。会计日期决定了凭证归属的会计期间。根据财务准则,结合实际业务单据,会计日期取业务单据的某个时间。
记账凭证
根据原始凭证填制,记载经济业务简要内容,确定会计分录,作为记账依据的会计凭证。
冲销凭证
对错误的记账凭证进行冲抵,使其相互在对等额内消灭的记账凭证。
关系模型如下:
情境视图
情境视图如下,红框部分是项目范围,非红框部分是部分依赖:
财务人员打开某个会计期间,系统根据会计期间处理对应的业务单据,生成记账凭证。
功能视图
在理解需求的基础上,结合情境视图,梳理的主要功能如下:
问题及解决
在功能开发过程中,我们识别到由于旅游行业的特性,出游状态(游客出游)甚至归来状态(游客归来)的订单依然容易发生变更。单据发生变更,对应的记账凭证也需要做处理。这里有几个点:
01 |
业务单据变更后,需要能生成新的记账凭证。 |
02 |
需要能证明业务单据变更前生成记账凭证的正确性。 |
03 |
业务单据发生变更时,记账凭证的处理方法。 |
对于第1、2两点,分析的结论是:
生成记账凭证需要的业务单据,是满足生成记账凭证条件后的业务单据变更快照/记录,称为业务过程单据。
业务单据变更生成业务过程单据,业务过程单据生成记账凭证。这样既能保证变更后的业务单据生成记账凭证,也能通过业务过程单据核对记账凭证是否正确。
综合各方因素考虑,在财务侧基于业务单据生成业务过程单据,再由业务过程单据生成记账凭证。
关系模型调整如下:
对于第3点,单据发生变更时,需要冲销变更前生成的记账凭证。凭证冲销的实现的分析如下:
差额更正法
将多记金额予以冲减的更正方法.记账以后发现记账凭证中的应借、应贷的会计科目并无错误,仅仅是所记金额大于应记金额。
红字冲销法
红字调整法,即先用红字编制一套与错账完全相同的记账凭证,予以冲销,然后再用蓝字编制一套正确的会计分录。
综合以上,采用红字冲销的方式,即复制被冲销的记账凭证,并对金额取反。
信息视图
新增主要数据结构包括业务单据、记账凭证、汇总凭证、会计期间。
考虑数量级:
1. 业务单据和业务过程单据的关系是1:n,业务过程单据和记账凭证的分录的关系是1:n,考虑到不同业务单据的数量级最大达到千万/月,因此对记账凭证相关表分表(年/月)。
2. 汇总凭证是按照财务准则对记账凭证做汇总,汇总比约200:1,不需要考虑分表。
并发视图
界面操作类功能几乎不存在并发,使用数据库乐观锁。
后台业务单据的处理是串行方式,如果存在性能压力,可以增加按照会计期间的时间分段处理。
部署视图
1. 系统服务集群,部署在多个物理机/docker,服务依赖的部分物理机故障,服务可以正常提供。
2. 数据库1主1从,主库故障,可以及时切到备库。
总结
在参与财务相关系统开发时,不仅要熟悉前端业务,还要了解一些财务知识。
情境视图可以明确项目范围和系统职责,同时对理解项目目标很有用。