KSSidll / Arru

An application for expenditure tracking/analysis
BSD 3-Clause Clear License
35 stars 1 forks source link

[Feature Request] Additional/Multiple Currencies Support #19

Open moriel5 opened 3 days ago

moriel5 commented 3 days ago

As it is, Arru has no way of setting the currency, and assumes that all transactions are made in USD (or other Dollars, depending upon the country).

In many countries (like mine) that is not very realistic, both because the local currency is not in Dollars, as well as due to people importing from abroad.

As an example, in my country it is common to order from both Amazon US (USD) and Amazon DE (Euro), as well as AliExpress (many rely upon USD for this, to avoid additional tariffs originating from the conversion from CNY to USD and the to our local currency), with some ordering from Amazon UK (GBP) or Amazon Japan (JPY) as well, with other platforms on the list (up until the war in Ukraine, platforms such as WildBerries (Russian Roubles) were also purchased from).

It would be nice to be able to choose the currency in use, as well as hook into a currency exchange API to allow easier tracking how much money is used in one's local currency.

KSSidll commented 3 days ago

It would be nice to be able to choose the currency in use, as well as hook into a currency exchange API to allow easier tracking how much money is used in one's local currency.

I can see the use for choosing currency separate from the language (it would be purely aesthetical if implemented by itself)

when it comes to multiple currencies though, it's a bit of an issue because you have to display that somehow without making it overwhelming to the user I feel like the easiest way would be to just convert to the main currency (based on the exchange with an option to manually override the rates) that's also pretty much what Arru is at the moment but without the need to do the calculation manually the automation in itself opens up another issue of what to do when the user changes the main currency (recalculate every transaction? rates from exchanges might be different from what was actually used, and I'm not even sure if that's viable due to API access constraints)


Naturally none of that should be of a concern for the user but locales are kinda hard, so it might take a while for me to figure out a reasonable and user friendly solution for multiple currencies support


I will focus on just being able to change the displayed currency symbol for now and will look into multiple currencies support after that

For now the best, even though monotonous, that I can recommend is treating the currency in the app as the main currency you use (or whichever you want really) and input the prices in that currency

moriel5 commented 3 days ago

Sorry it took this long (and I had not written the other issues yet, either), I had to help out around the house and I fell asleep afterwards.

when it comes to multiple currencies though, it's a bit of an issue because you have to display that somehow without making it overwhelming to the user

That certainly makes sense, though I think that could go both ways, where it could confuse people used to dealing with multiple simultaneous currencies and tracking them if it too simple.

How about your idea, but show the original currency underneath in small text, and have an option to switch between the roles?

(recalculate every transaction? rates from exchanges might be different from what was actually used, and I'm not even sure if that's viable due to API access constraints)

I think that just updating a static offline list against the API, similar to what Unit Converter Ultimate* does, automatically once a day and/or manually for those who prefer, and recalculating against that list upon entering the value, may be a good idea.

I will focus on just being able to change the displayed currency symbol for now and will look into multiple currencies support after that

Fair enough, don't take upon yourself too much at once.

*Unit Converter Ultimate's source did can be found here, should it be relevant: https://github.com/physphil/UnitConverterUltimate-Studio

KSSidll commented 3 days ago

Sorry it took this long

Nobody is being paid here, so there isn't, nor should there be, any time pressure. If you write like this, I will feel bad for not updating the app faster 😢

How about your idea, but show the original currency underneath in small text, and have an option to switch between the roles?

The bigger problem to solve is the aggregate data display. After sleeping, the best I've got (e.g. for charts) is having the aggregate value as it is now, in the chosen main currency, and color code for how much which currency contributes to that aggregate wherever applicable

I think that just updating a static offline list against the API, similar to what Unit Converter Ultimate* does, automatically once a day and/or manually for those who prefer, and recalculating against that list upon entering the value, may be a good idea.

The problem that I had in mind was the time distributed nature of the transactions. When changing the main currency, we would have to either just ignore it (which would make no sense) or recalculate based on the rate of exchange on that exact day.

rates from exchanges might be different from what was actually used

I thought this would be an issue, but if you change the main currency I feel like the original rate of exchange automatically stops being relevant and the actually relevant rate is the old currency to new currency

If the API allows for it, I feel like a viable solution for multiple currency logic would be something like this:

Mind you, this together with the currency display might take some time to implement (I'm talking probably months), I try to implement small changes quickly, but this is a massive change and sadly Arru isn't my current priority in life.

As said before, I will focus on just being able to change the displayed currency symbol for now. If lack of true multiple currencies support is preventing you from using the app, then I'm sorry, but I can't help with that for now. Please do check out Arru once every few [weeks/months] though, and thank you for your input 👍