Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

โšก๐Ÿด Prepare database for budget reconciliation and analysis #17

Open
7 tasks
Tracked by #18
jrosseel opened this issue Jan 7, 2023 · 0 comments
Open
7 tasks
Tracked by #18
Assignees
Labels
backend budgetting Budgetting feature

Comments

@jrosseel
Copy link
Contributor

jrosseel commented Jan 7, 2023

Once a budget is marked as approved, the system moves from budget modelling to expense management.

Technical needs

To allow for this budget management to happen effectively, we need to "expand the budgets."

With "expand", we mean:

  1. Fetch the transaction plans

  2. Calculate the budget lines using the "___PlannedTransactionsToBudgetLines" function from the applications finance model.

  3. For each of the budget lines, store the calculated values (monthly, quarterly, yearly budgets per line) in the database so we can easily calculate the allocable amount left for each of these periods.

Technical requirements

The main technical requirement for this area of the application is around data management.
As we'll be requiring a lot of analytics and reasoning over allocation data, the data needs to be stored and managed on a platform which can easily handle large amounts of complex queries and reasoning.

Some examples of reasoning we will need to do constantly:

  • Line-to-line access management of the budgets
  • Various deep analysis's and reports on budget usage, forecasting, cashflow management, ...

Firestore is great for rapid and realtime storage and retrieval of data, but suboptimal for the purposes of reporting and fast querying. We therefore need to integrate a second database into the application, used by the dashboard and operation application domains. SQL/Acid databases are generally a better fit for these types of needs.

The requirements to complete this assignment are therefore:

  • ๐Ÿ—’๏ธ Develop normalised database design for the budget expansions including tables such as budget lines, monthly budget amounts, quarterly budget amounts, yearly budget amounts, ...
  • ๐Ÿงฎ Develop table for budget allocations (invoice ID (invoice itself stored in firestore), invoice category id, invoice type id, amount, year, month, date)
  • ๐Ÿ”ง Analyse cloud database options and create the database (dev, staging, prod) on most appropriate option (for the long term)
  • ๐Ÿ”ง Link the database to the backend (cloud functions architecture) (integration with @NGFI tools?)
  • ๐Ÿค– Create scripts to connect developer PCs to database
  • ๐Ÿงฎ Cloud function to "promote"/activate budgetsย #18
  • ๐Ÿ˜๏ธโšก Add reactive subscriptions to Cloud SQLย #22
@jrosseel jrosseel changed the title โšก๐Ÿด Expand active budgets and prepare for reconciliation in the database โšก๐Ÿด Prepare for budget analysis and reconciliation in the database Jan 7, 2023
@jrosseel jrosseel changed the title โšก๐Ÿด Prepare for budget analysis and reconciliation in the database โšก๐Ÿด Prepare database for budget reconciliation and analysis Jan 7, 2023
@jrosseel jrosseel added this to the Kujali MVP milestone Jan 7, 2023
@jrosseel jrosseel self-assigned this Jan 8, 2023
@jrosseel jrosseel added budgetting Budgetting feature backend labels Jan 8, 2023
@jrosseel jrosseel assigned noellamwanzia and unassigned jrosseel Jan 9, 2023
kibandichristine referenced this issue in kibandichristine/kibandichristine Feb 14, 2023

    ๐Ÿ‘‹ Hi, Iโ€™m @kibandichristine
    ๐Ÿ‘€ Iโ€™m a full stack webdeveloper
    ๐Ÿ’ž๏ธ Iโ€™m looking to collaborate on ...
    ๐Ÿ“ซ How to reach me kibandichristine@gmail.com
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend budgetting Budgetting feature
Projects
Status: ๐Ÿ— In progress
Development

No branches or pull requests

2 participants