Amatino was designed to be utterly cavalier about currencies. The end goal was something like this:
Store a transaction in U.S. Dollars, retrieve it in Pounds Sterling, and balance a ledger with it in Euros.
… All without any effort on the part of the user. No special syntax, no premium plans, no loss of fidelity, no fuss. For the most part the Amatino Alpha achieves this goal.
However, there is one important circumstance under which the API will currently throw a ‘501 – Not Implemented’ error. That is when you attempt to create a transaction using mismatched currencies, when prices for those currencies are not available.
For example, let’s say you create a transaction with an effective date of 11 July 2018 (in the past). Perhaps that transaction hits a USD account with a debit, an AUD account with a credit, and you denominate the whole thing in GBP. Amatino won’t miss a beat. Your transaction will be stored. Hooray!
Now, the 501 case. Say you create a transaction with effective date of tomorrow. Amatino doesn’t yet have prices available for USD, GBP, and AUD. It will 501 and you will be a sad camper. If you wait a day for Amatino to receive prices, and then again attempt to execute the transaction, it will go through.
I don’t expect this situation to last for very long. The reason for the limitation isn’t some insurmountable technical obstacle, it’s just time. Amatino has been in development for a long time, and I think it would be unhealthy to keep it private any longer.
Being able to process future dated transactions in mismatched currencies was simply a feature I’ve decided to implement after Alpha release.
Note that this limitation does not affect Custom Units. With Custom Units, all bets are off. Amatino won’t stop you adding future-denominated transactions in Custom Units, but it won’t update them on price changes, either.
I’ll be removing this limitation as quickly as possible. To be notified when the job is done, sign up to the Amatino Development Newsletter.