首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建包含详细信息的财务报告

如何创建包含详细信息的财务报告
EN

Software Engineering用户
提问于 2022-05-30 00:47:29
回答 1查看 156关注 0票数 0

我正在写一份申请,它对公司的收入和开支有财务控制。这些信息可以由帐户(银行账户-可以是1或更多)、类别和子类别控制。

主要目的是显示当月财务信息(或在指定期间(如15/02/2022 -> 15/04/2022)显示相同的信息)。就像下面的图片一样。

我现在需要做的是,在这段期间的困难时刻,显示帐户的当前余额(或所有账户之和),最后显示当月收支后的余额/减去该月份的收入/支出,见下图。

我发现最困难的问题是,当数据库中有许多条目,特别是非常旧的条目时,如何跟踪这些余额。

第一种方法:我正在考虑加载插入到数据库中的所有信息,然后开始和/减,直到我到达当前期间为止。然后,我可以创建一个更详细的列表(例如,每天的平衡),而不会影响性能。这感觉不太对劲,想象一下我有4-5年前的金融数据。我需要从数据库加载数千行数据,并执行许多数学操作来获取当前期间的数据。

第二种方法:每次用户从数据库中插入/编辑/删除条目后,我将更新数据库上的一个表,该表将控制每个帐户的余额。这似乎解决了这个问题。但是,如果我需要按类别/子类别/帐户进行筛选,我将无法获得正确的信息。此外,这似乎有点复杂,以跟踪正确的平衡与这么多的事务。如果由于某种原因,其中一个失败了,没有适当地增加平衡,其他的一切都会被搞砸。

第三种方法:每个月之后,我会“锁定”前一个月的所有信息,这样用户就无法编辑前几个月的任何信息。从财务角度来看,这不是一个“问题”,因为我们无论如何都不能改变这些信息(除非后来发现人为错误)。然后,我可以继续从一个句点接近“今天”的静态数据。这方面的问题是,如果我需要获得一个期间的信息,不是一个完整的月,或有过滤器,我将有相同的问题,以前。

数据库结构非常简单,请参见下面的图像。

我还有一个控制分期付款的表,但是它与这个部分无关,因为它基于finance_entries表。

对于这类数据处理是否有更好的/适当的方法?我真的很困惑,不知道如何在不影响应用程序性能的情况下继续工作。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2022-05-30 05:50:15

第三种方法的想法是朝着正确方向迈出的一步:

例如,

将帐户的总数存储在每个月底,作为额外的数据.

现在,为了解决您的关切:

每个月之后,我会“锁定”前一个月的所有信息,这样用户就无法编辑前几个月的任何信息。

从技术上讲,您不必完全“锁定”任何东西(尽管从法律或业务的角度来看,这可能是必需的)。重要的是,人们可以预期对旧记录的更改很少发生。在罕见的晚修正情况下,将需要重新计算,更新所涉日期后每个月的总数。实际上,这种情况不应该经常发生。如果您认为这是必要的,请警告您的用户,当他们试图更改过去的事务记录时,下面的步骤可能需要很长时间。

这方面的问题是,如果我需要获得一个期间的信息,不是一个完整的月,或有过滤器,我将有相同的问题,以前。

“筛选器”可能会影响报表中的可见值,但不会影响每个月的帐户总数。例如,2022年6月的总量不受影响,只要你报告最新的能源支出。

“没有一个完整的月”不是一个问题:您使用最后一个月的总数,并在该日期之后增减收入和付款。由于所涉及的交易最多只包括一个月的交易,这只是帐户所有交易的一小部分。这将使您的性能问题得到控制,而且它也适用于当前日期或过去的日期。如果一个月的周期太长,你可以切换到较小的时间,交易空间。

如果由于某种原因,其中一个失败了,没有适当地增加平衡,其他的一切都会被搞砸。

是的,但不管是否存储中间和,这都是正确的,所以这只不过是一个草人。当然,使用中间和(并存储它们)会带来一定的冗余。这可以是额外的错误源,也可以是检测错误的额外手段。您必须考虑将什么定义为前导数据,将什么定义为派生数据,以及何时重新计算来自前导数据的派生数据。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/438931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档