DennisBauer / RecurringExpenseTracker

A Material You recurring expense tracker, allowing you to keep track of your monthly spending.
GNU General Public License v3.0
97 stars 15 forks source link

Support different currencies per expense #129

Closed Scrambled777 closed 1 month ago

Scrambled777 commented 7 months ago

Is your feature request related to a problem? Please describe.

Currently only USD is displayed.

Describe the solution you'd like

Is it possible to have multiple currency support in following combinations:

  1. Set a static currency for all expenses.
  2. Currency can be set for an expense individually.
  3. Setting preferred Dashboard currency, if multiple currency are chosen for different expenses.
  4. Adding currency conversion support to convert expense currency to set Dashboard currency.
  5. Or support for multiple currency profile.

    Describe alternatives you've considered, if any

    Alternatively, support for separate profile for different currency.

    Additional context

    Idea is that I have recurring expenses in Multiple currency. So, to have only USD as default (with no means of changing it) can be pretty confusing. Currency I use INR, USD, Euro & TBH.

DennisBauer commented 7 months ago

Currently the currency depends on the country defined in the system settings. There's already an issue to adjust the global currency in the app settings: #12 . Supporting multiple different currencies and converting them will require a conversion library and probably also internet access to download the latest conversion rates. This need to be investigated and I cannot promise I'll find a solution for it. I would prefer to first implement the global setting. If you have and idea or want to look into this feel free to do so.

serrq commented 7 months ago

No conversion is needed. Just add symbols. Every one know its money system, so I set €.

DennisBauer commented 7 months ago

Ah ok so having different currency in each expense would work for you? That should be doable. The problem will be the calculation in the overview for monthly, weeky and yearly spendings. Do you have an idea on how to solve this?

serrq commented 7 months ago

Unfortunately I am not a developer.

serrq commented 7 months ago

Just add other symbols. No calculations.

100$ = 100€ = 100£

DennisBauer commented 7 months ago

Not necessarily a technical solution. But how would you image this to look like from a user point of view in the app? Having multiply prices below the headline monthly, weeky and yearly?

serrq commented 7 months ago

Yes, I love your idea to split in week, month, year. 👌

Scrambled777 commented 7 months ago

Ah ok so having different currency in each expense would work for you? That should be doable. The problem will be the calculation in the overview for monthly, weeky and yearly spendings. Do you have an idea on how to solve this?

Yes, I have already suggested my solution up.

To clarify, I can think of 2 solutions.

Approach 1

Separate Profile for different currency. Dashboard will not have any issue, it will be same like current implementation but for a particular currency.

User select USD at the time of profile creation. All expenses will be in USD. Dashboard will display in USD.

User create another profile with INR. All expenses in this profile will be in INR. Dashboard will display in INR.

With this approach, support for more currency and multiple profile is required.

OR

Approach 2

User can choose currency for each expense. Due to different currency, dashboard preferred currency need to be specified by user Ex: USD. Now every time user enter an expense Ex: EUR or INR, these will be converted to dashboard currency and displayed in Ex: USD.

With this approach, support for multiple currency, currency converter and internet to download currency rates is required.

Suggestion

IMO, approach 1 is simple than approach 2. No internet access is required and much simpler with each currency expense separated in their own individual profile.

For single currency user, the current implementation just need more currency support.

But, my issue only comes in if there are multiple currency involved.

Anyway thanks for this beautiful app.

serrq commented 7 months ago

Approach 1.

In my use case no internet connection is priority. If internet permission popup, I unistall the app.

DennisBauer commented 1 month ago

Actually prefer the second approach as that allows you to have an overview of all your expenses at one view instead of needing to tab through multiple once. @serrq so adding the internet permission to the app is a no-go for you even thought the app is open source, and you can see what it does? Adding the internet permission is one way of solving this issue, another one is adding the exchange courses to the app at build time. The downside of this is that it cannot be updated without an app update.

serrq commented 1 month ago

I cannot verify the code, unfortunately. I am not a developer. Unless Google will introduce an internet permission blocker in future versions.

DennisBauer commented 1 month ago

Ok thanks for that feedback. Then I'll look into adding the exchange courses to the app at build time. I think that should also be fine as it shouldn't change much that frequently anyway.

Scrambled777 commented 1 month ago

@DennisBauer, I don't mind having internet access in open source app.

Maybe having a toggle in settings to activate live currency conversion might alleviate privacy concerns.

DennisBauer commented 1 month ago

Even without using the internet connection I would need to add the permission to the app. As there's no way for the user to disable the internet connection for a certain app in the vanilla Android OS that toggle wouldn't really help the user to be certain that the app doesn't use the internet connection without checking the code gain.

DennisBauer commented 1 month ago

@Scrambled777, @serrq I have a version version of this ready #273. Have a look at the screenshots or test it yourself if you want. Still need to work on some cleanup and an automatic way to update the exchange courses before I merge it.

Scrambled777 commented 1 month ago

Have a look at the screenshots or test it yourself if you want.

Screenshots looks fantastic. Thanks for this.