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

Tie the data formats together #42

Open
michielbdejong opened this issue Jul 30, 2021 · 8 comments
Open

Tie the data formats together #42

michielbdejong opened this issue Jul 30, 2021 · 8 comments

Comments

@michielbdejong
Copy link
Collaborator

There is quite some code in run.js and chart.html and it uses similar but incompatible data formats.
Should tie those together!
Would Cambria be useful for that? Or maybe bring it all back to the HalfTrade class and improve that?

@michielbdejong
Copy link
Collaborator Author

Following discussion at Federated Bookkeeping Weekly Call, I realised that the format/ontology in which personal finance data is stored in a user's pod, needs not be standardised at all. We can use a 'data lake approach' and store the raw messages/imports along with metadata about them, but not transforming the data before storing it to the user's pod.

The code then transforms the data on the fly, to produce the desired view to the end-user.

At most, there may be an intermediate data format to cache, but this could then be much closer to the view than you would normally do for a data(base) schema in a stand-alone software system.

@michielbdejong
Copy link
Collaborator Author

michielbdejong commented Oct 7, 2021

data sources that go into a view:

  • bank statement csv / mt940 documents
  • time sheets (json?)
  • expenses (json?)
  • projects (json?)
  • invoices (peppol-bis?)
  • depreciation hints
  • budget hints
  • query (e.g. months you want to report, type of graph / output format you want)

code modules:

  1. parsers (for bank statements but also for expenses and timesheet data)
  2. merging and matching
  3. implied transactions
  4. budgets
  5. depreciation
  6. work
  7. views

@michielbdejong
Copy link
Collaborator Author

michielbdejong commented Oct 7, 2021

The parsers generate Entrys and information about completeness of the view for some dates
Merging and Matching brings data from all sources together into one big list, and filters out the duplicates.
Implied transactions, budgets, and depreciation add three types of additional transactions:

  • a payment at a shop implies a purchase and delivery of value from that shop to you, so your assets increase
  • depreciation determines how much you consume from your assets
  • one of your budgets is decreased for each type of consumption. the budget entry is linked to the depreciation entry which is linked to the purchase entry which is linked to the payment entry which has the additional details with hints for which budget to automatically assign
  • the work module deals with expenses, timesheets, invoices, and projects
  • views list and display the data for different kinds of insights

@michielbdejong
Copy link
Collaborator Author

To what extent is this bookkeeping system federated?
It's nice that expenses and time sheets can be federated between organisation and employee. This is probably also possible for virtual organisations.
invoices can be sent with e-invoicing
we could experiment with federated timesheets

@michielbdejong
Copy link
Collaborator Author

should I continue this work in PHP?

@michielbdejong
Copy link
Collaborator Author

Ha, thanks to @paul-french we discovered https://plaintextaccounting.org/ and https://hledger.org/ - will try out if we can switch to that!

michielbdejong added a commit that referenced this issue Dec 31, 2021
@michielbdejong
Copy link
Collaborator Author

Wow, this is very valuable already: https://github.com/simonmichael/hledger/tree/master/examples/csv

@michielbdejong
Copy link
Collaborator Author

And more importers listed on https://plaintextaccounting.org/#data-importconversion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant