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

Migrating from MoneyControl and other Budgeting Software #1487

Open
creatvty opened this issue May 7, 2024 · 7 comments
Open

Migrating from MoneyControl and other Budgeting Software #1487

creatvty opened this issue May 7, 2024 · 7 comments

Comments

@creatvty
Copy link

creatvty commented May 7, 2024

Hey,

I have been looking into this project and I am quite amazed so far at the powerful feature set of this app. I have been using the budgeting app MoneyControl for years now and I am content but not super happy with it since it is lacking some features I would love to have but the project seems relatively static and it doesn't look like a lot of development is still going on there. For lack of good alternatives I have stuck with it. Until now...

As I said I think this app looks quite promising. I would like to try it out and migrate my data. Here is a list of issues I'm having that you might appreciate as Feedback but maybe you could also help me out here as a newcomer. I would definitely pay money for this if it holds what it promises.

  • The help is quite good in-App but I think a more extensive Documentation / Wiki would be great
  • The CSV import looks to be promising but as-is I cannot directly use the CSV export of MoneyControl (MC). In the interest of attracting more people and lowering the barrier of entry it would be great to have specific imports for other budgeting tools like this. I imagine this could be a pretty thin layer on the CSV import with some additional mapping and to be able to also import Categories, Tags, etc
  • Since MC is designed to be used collaboratively, there is the concept of "Person" as in "who acts on this transaction / account". This can also be considered in Visualizations. For me and my family this would be a vital feature but I was not able to find anything similar to this here
  • The same goes for collaboration. The synchronization of the app's state between devices would be very important so we can have a single source of truth
  • The scan function looks very promising but sadly I was not able to make it work yet. I installed Tesseract and tried it a few times but I always get a no data message. I was not able to find a relevant issue or closer information on what is important for the scan to succeed

These are some points I could think of. If more come to mind I will update this post. I would really love to use this app if I can manage to transition without a huge amount of work and without corrupting my budgeting data I have accumulated since 2016.

Thanks

@mtotschnig
Copy link
Owner

thank you for the extensive feedback!

* The help is quite good in-App but I think a more extensive Documentation / Wiki would be great

The app covers a lot of different use cases, and I lack the resources to maintain extensive documentation covering all of them. I try to gather frequently asked questions in the FAQ (https://github.com/mtotschnig/MyExpenses/wiki).

* The CSV import looks to be promising but as-is I cannot directly use the CSV export of MoneyControl (MC). In the interest of attracting more people and lowering the barrier of entry it would be great to have specific imports for other budgeting tools like this. I imagine this could be a pretty thin layer on the CSV import with some additional mapping and to be able to also import Categories, Tags, etc

Since there are so man different expense tracking applications, it is not feasible at the moment, to implement support for all of them. But if you encounter specific issues when importing from MC, I am ready help via Discussions here on Github or [email protected], and maybe specific recommendations could then be extracted into the FAQ?

* Since MC is designed to be used collaboratively, there is the concept of "Person" as in "who acts on this transaction / account". This can also be considered in Visualizations. For me and my family this would be a vital feature but I was not able to find anything similar to this here

My Expenses is primarily focused on data stored on the device, and managed by a single user. Maybe if multiple users use the same device, or data is copied between devices via sync, the person could be represented via Tags? There is also the concept of Custom Attributes (#447) which is actually already implemented on the database level, and would just need an UI.

* The same goes for collaboration. The synchronization of the app's state between devices would be very important so we can have a single source of truth

The current synchronization feature should provide this.

* The scan function looks very promising but sadly I was not able to make it work yet. I installed Tesseract and tried it a few times but I always get a `no data` message. I was not able to find a relevant issue or closer information on what is important for the scan to succeed

The OCR via Tesseract is known to not have satisfactory results. You could give the Mlkit variant a try, if you are fine with using software that is not 100% FLOSS: https://github.com/mtotschnig/MyExpenses/wiki/FAQ:-OCR

@creatvty
Copy link
Author

Thank YOU for the detailed reply 🫶

The app covers a lot of different use cases...

I understand. I just think this could really help new people looking into this

Since there are so man different expense tracking applications, ...

Sure, but I think working off of the Pareto principle you could already help a lot of people just by implementing a few of the most used apps

My Expenses is primarily focused on data stored on the device, and managed by a single user. Maybe if multiple users use the same device, or data is copied between devices via sync, the person could be represented via Tags? There is also the concept of Custom Attributes (#447) which is actually already implemented on the database level, and would just need an UI.

Okay that solution sounds promising as a workaround. I will try it. For me the attribution of expenses to a certain person was pretty essential in MC that's why I thought this would translate to other apps.

The current synchronization feature should provide this.

Great!

The OCR via Tesseract is known to not have satisfactory results. You could give the Mlkit variant a try, if you are fine with using software that is not 100% FLOSS ...

Thank you, I have not tried this out yet. Will definitely give it a shot.

Thanks again for taking the time to answer these

@creatvty
Copy link
Author

creatvty commented Aug 4, 2024

Hey @mtotschnig,
I managed to do here some more work. If you want we can move this to discussion but for now I will answer here.
The normal CSV export of MC was not sufficient for me so I used the sqlite Backup of MC to make my own CSV. I can later share the SQL Statement if there is interest.
It looks very promising to me. The only Issue I have is with Transfers. In #1039 you mentioned that transfers are supported by passing the other account as Category i.e. [Cash]. I tried this, and it works in a sense, that it treats Transfers differently but what happens to me is pretty much that it just creates a normal Transaction where the Note is "Transfer: <other account Name>". No opposite transaction is created in the other Account and the original Note for the transaction is also lost.
I looked into the code and to me it seems Transfer is calling the wrong overload here


as only amount and the originating account is passed.
The closest overload I could find would be this one
public Transfer(long accountId, Money amount, Long transferAccountId) {

Although this is also missing the note as parameter.

Is it possible to update this so it turns into an actual transfer? Or is there reasoning behind why it is the way it is?

Help / Advice is appreciated

@creatvty
Copy link
Author

creatvty commented Aug 8, 2024

Following up on this. I managed to create Transfers. But they look different then the transfers created in the App. Also they are not counted towards the transfers in the totals.
IMG_20240808_100248
As you can see here, the first transaction is the one I created manually, the other is created by the import. Also the totals for transfers is 100 instead of 200.

The csv looks like this

"Date";"Timestamp";"OriginalRecurringDate";"Value";"Expense";"Income";"Note";"AccountName";"AccountFlags";"IsAccountTransfer";"CounterAccountName";"Category";"CategoryFlags";"Person";"Group"
"2022-01-29";"2022-01-28 15:53:28";"";-100.0;100.0;;ATM SPK Rastatt;DiBa Giro;0;1;Cash;Transfer;;;[Cash]
"2022-01-29";"2022-01-28 15:53:28";"";100.0;;100.0;ATM SPK Rastatt;Cash;0;1;Cash;Transfer;;;[DiBa Giro]

I tried several approaches mentioned in #1039 , like putting the target account in the category. The way I'm mapping is like this:
CSV -> MyExpenses

Date -> Date
Value -> Amount
Expense -> Expense
Income -> Income
AccountName -> Account
Category -> Category
Person -> Tags
Group -> Subcategory

I pulled a backup from myExpenses and looked into the sqlite DB. So the issue is that the transaction are not actually mapped to the "Transfer" category. Even if you have "Transfer" as category.

"_id","comment","date","value_date","amount","cat_id","account_id","payee_id","transfer_peer","transfer_account","method_id","parent_id","status","cr_status","number","uuid","original_amount","original_currency","equivalent_amount","debt_id"
1,ATM SPK Rastatt,"1,643,410,800","1,723,103,823",10000,,3,,2,2,,,0,UNRECONCILED,,"56f44d64-3387-4b40-b9b9-2591cb86dfb8",,,,
2,ATM SPK Rastatt,"1,643,410,800","1,723,103,823",-10000,,2,,1,3,,,0,UNRECONCILED,,"56f44d64-3387-4b40-b9b9-2591cb86dfb8",,,,
3,ATM Sparkasse Rastatt.,"1,723,103,838","1,723,103,838",10000,1,3,,4,2,,,0,UNRECONCILED,,"0c6e433d-6499-4651-9d85-6d239d0c415a",,,,
4,ATM Sparkasse Rastatt.,"1,723,103,838","1,723,103,838",-10000,1,2,,3,3,,,0,UNRECONCILED,,"0c6e433d-6499-4651-9d85-6d239d0c415a",,,,

Is this a bug?

@mtotschnig
Copy link
Owner

@creatvty The CSV import and export have not yet been sufficiently adjusted after transfer categories have been introduced (#407). You are right that during import the default transfer category needs to be added. This must be done in a slightly different way than you have suggested in MR #1546 . I'll fix this, but it might not land in 3.8.8, because it is already in the pipeline.

@creatvty
Copy link
Author

@mtotschnig I see, great news! Thank you for the effort. And for the quick response. Looking forward to it!

@creatvty
Copy link
Author

creatvty commented Oct 11, 2024

Hey, @mtotschnig should the fix be released by now? I tried the transfer today again but to me it doesn't look like there was a change. This is the CSVs I tried using Category and SubCategory

"Date";"Expense";"Income";"Note";"AccountName";"Category";"Group"
"2016-01-22";;30.0;ATM abc;Cash;[Bank1];
"2016-01-22";30.0;;ATM abc;Bank1;[Cash];
"Date";"Expense";"Income";"Note";"AccountName";"Category";"Group"
"2016-01-22";;30.0;ATM abc;Cash;Transfer;[Bank1]
"2016-01-22";30.0;;ATM abc;Bank1;Transfer;[Cash]

Am I doing something wrong? The type is recognized as Transfer but the Category is not

Edit:
I did a JSON Export along with a Transfer I manually created. Here is the difference

{
  "uuid": "542a2c74-bc94-4f7c-84d6-600ea3c6ba85",
  "label": "Bank1",
  "currency": "EUR",
  "openingBalance": 0,
  "transactions": [
    {
      "amount": -30,
      "comment": "ATM abc",
      "date": "2016/01/22",
      "status": "UNRECONCILED",
      "transferAccount": "Cash",
      "uuid": "03e1aa0d-bddd-4479-8eab-f7922f859877"
    },
    {
      "amount": -18,
      "category": [
        "Transfer" // This category is missing from the csv imported entry
      ],
      "comment": "Holla",
      "date": "2024/10/11",
      "status": "UNRECONCILED",
      "transferAccount": "Cash",
      "uuid": "af6b39bb-8663-4e44-8e5e-4e5d8ae1da44"
    }
  ]
}

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

2 participants