Database design 学校管理软件的计费模块(费用)

Database design 学校管理软件的计费模块(费用),database-design,architecture,database-schema,billing,accounting,Database Design,Architecture,Database Schema,Billing,Accounting,我正在开发一个学校管理软件,其中包括学生计费模块,即向学生收取费用 费用按月收取(每年12次),月费总额为各种费用的组合,按班级和月份固定。有些费用包括学费、公共汽车费、印刷费或其他费用。从日期开始,每月还将收取固定金额的滞纳金,每月的滞纳金可能有所不同。巴士费是根据特定学生的巴士类别收取的。 还有一项关于部分付款的规定 我目前的做法是: 用于存储费用设置的主表,包括月份和类别以及费用设置 feeMaster fid -> Primary key month_year -

我正在开发一个学校管理软件,其中包括学生计费模块,即向学生收取费用

费用按月收取(每年12次),月费总额为各种费用的组合,按班级和月份固定。有些费用包括学费、公共汽车费、印刷费或其他费用。从日期开始,每月还将收取固定金额的滞纳金,每月的滞纳金可能有所不同。巴士费是根据特定学生的巴士类别收取的。 还有一项关于部分付款的规定

我目前的做法是:

用于存储费用设置的主表,包括月份和类别以及费用设置

feeMaster
    fid  -> Primary key
    month_year -> Stores Month Year
    stu_class -> Class of Student
    tuition_fee -> Tuition fee for that class
    tuition_fee_percent -> Percentage of Tuition fee to take, defaults to 100%
    bus_fee_percent -> Percentage of bus fee
    late_fee_start -> Day of month from which to charge late fee
    late_fee -> fixed late fee on per month basis
    printing_charge -> Printing charge if any
    other_fee -> Other fee if any
    other_fee_reference -> Other fee reference
每次学生来支付费用时,都会进行计算,并在系统中进行交易。事务的详细信息存储在两个表中

事务主表用于存储事务

transMaster
    tid -> Primary key
    purpose -> purpose of transaction, monthly fee
    amount -> amount of transaction
    type -> transaction mode / cash / cheque / dd
    created -> date
此事务的详细信息存储在另一个表中,如下所示:

studentFeeDetails
    sfid -> unique id
    tid -> transaction id from transMaster table
    fid -> fee id from fee settings table feeMaster
    tuition_fee -> calculated tuition_fee
    bus_fee -> calculated bus_fee
    printing_charge -> calculated printing_charge
    other_fee -> calculated other_fee
    late_fee -> calculated late_fee
    total_fee -> total fee calculated
    discount -> discount if given any
    amount_payable -> net amount payable
    amount_paid -> paid amount
    balance -> balance - if paid amount is greater or lesser than the original one, 
               it is stored here
    status -> status - true if partial fee else false
    created -> date of creation
这是模块的当前架构。没有涉及会计实务,因此给我们的会计部门带来了很多问题

  • 为了报告一个月的应付费用总额,每次系统都会对所有学生运行计算算法,并得出相应的数字
  • 要查找某个类的待定费用,系统首先再次检查该类的应收费用,并删除
    studentFeeDetails
    表中的条目以生成待定报告
  • 在这一制度下,没有适当的费用分类
现在,需要将当前系统转换为能够跟踪预付款和余额的适当会计系统

我在想一个系统,每个月一个过账流程借记每个学生的账户,并支付当月到期的费用,如果费用仍然悬而未决,则在每个迟交的费用开始日期,另一个流程借记学生的账户

这种方法可以检查应收账款、未决费用和已收费用


如果方法正确,请提供帮助,以及如何配合。我一直坚持使用db schema部分及其实现。

电信领域的最佳实践是将其细分为不同的部分:

  • 计费事件中介:计费事件由下游业务逻辑生成并存储在数据存储中,例如,带有每个期间、人员和事件条目的评级表。在您的情况下,这将每月执行一次

  • 评级:计算每个事件的评级。在您的情况下,这似乎是一个事件类型表中的查找

  • 计费:每个期间累计的额定事件。在您的情况下,这将是一次账单运行,每月执行一次

  • 会计:将账单结果转移到每个人的账户,持有余额,考虑到以前的账单运行和现金收款

  • 开票:根据账户数据,生成一张发票,放入各自的分发流程中

  • 现金收款:确保你收到了钱,并相应调整账户。这取决于你的付款方式

  • 可选:催款:强制收取现金


这里的关键是使整个过程在生产中透明和可调试。使每个步骤成为一个独立的步骤,具有输入和可跟踪的输出。这是关于钱的问题,如果你遇到问题,你不能没有答案

您的规范中几乎没有模糊的要求。学生能支付部分费用吗?我是说付一半的费用?您将需要处理会计问题的人员提供信息,以实现精确的解决方案

据我目前所知,您需要在会计科目表中为所有类型的费用创建单独的会计科目,并为存款创建一个会计科目。把这些放在收入项下。为每个学生创建单独的账户(分类账),账户编号与入学编号匹配,或者为每个学生创建唯一的账户。当学生支付费用时,您将创建具有交易id的日记账分录(总账)。此日记账分录需要批准。对于现金托收,这可能发生在现金簿关闭的当天结束时;对于支票/dd,这将发生在金额转入银行时(银行对账单的重新调节)

日记账分录一经批准,即予以过账。日记账应自动过账到每个学生分类账下的所有账户头。支付的任何访问费都应记入学生分类账的“存款”项下

要计算到期费用,您只需将每个分类账的余额相加,如果金额为负数,则您有到期费用;如果金额为正数,则您手头有多余的金额

现在,您的要求中未处理的问题是,当学生支付的金额低于规定金额时会发生什么?哪种类型的费用应标记为部分支付,或以会计术语标记为已支付,我们应在哪个账户头下添加负余额。第二,这些费用怎么办?他们是否转移到其他账户?简言之,您需要了解费用如何映射到收入,以及哪些费用映射到哪些费用,以实施进一步的会计处理


顺便说一句,我没有看到任何税款正在支付。学校免税吗?

这个话题很复杂,我觉得这个话题太宽泛了。尽管如此,有一件事对我来说似乎很明显,我将规范化
feeMaster
表。您的
otherFee
列已经指出了这一点,我将创建一个类似
line\u item
的表格,以引用某个
fee\u类型
。我曾经处理过此类问题。我愿意和你分享这个数据库。。。再次感谢Bernd,基本上你的意思是每个月必须运行一次流程