Kodall
Exercises

Exercise 5: Personal Finance

Rendering diagram...

Description

  • Manage personal finance by keeping track of accounts, categories, and journal entries for transactions.
  • Categories represent transaction types ("Withdrawal"/"Deposit").
  • Each journal entry records the transaction value, date, account, and category.
  • An account can have multiple account_journals. More account journals can have the same category.
  • In the entity "category", name represents the name of the category that will be displayed on the screen, label represents the value that programmers will use to filter the categories, and the uuid represents a value to uniquely distinguish the categories.
  • Note: The value of the field "uuid" is generated automatically.

Tasks

  • account/category/account_journal: Add, Edit, Delete.
    • The field "Category" from entity "account_journal" will be read-only in edit view.
  • Create a catalog for entities: "account", "category".
  • Deposit: add a new record in "account_journal" with the deposited value and date (entity action).
  • Withdrawal: add a new record in "account_journal" with the withdrawn value and date (entity action).
  • Create event listeners for tables that needs validations (e.g. adding an account without a name, a type, etc., should not be allowed).
  • Account statement (interval):
    • Extract account statement for a specific interval for each account.
  • Account balance (at a date):
    • Extract balance for a specific interval for each account.
  • Balance by categories (interval):
    • Extract balance for a specific interval for each category.
  • Total deposits and withdrawals for each account in a specific interval.