You are wrong with this statement.
Taxes in the secon example are 17.40€ not 19.00€! So we are not taxing the full amount.
Pls understand this. This is how it works in germany and I can say that its not working the same way in other countrys.
(I marked what you did wrong)
Here is how “After Tax” is done right:
After tax: (91.60 + (91.60 / 100 * 19)) = 109.004 euro
But as 91.60 stands for 91.5966386555€ (as it is rounded) so its basically :
After tax: (91.5966386555 + (91.5966386555 / 100 * 19)) = 109.00 euro
Now you also know what the “91.60” stands for.
To leave a few words about it:
If you give a discount, who are you giving that discount for? For you or for your client?
Most probably for your client. So if you give a discount of 10€ the client in the end should pay exactly 10€ less then before, right?
So in the end he should pay 109.00€ if the product costs 119.00€ (with 10€ discount).
If you calculate discount after taxes you will make more profit.
I understand that this is not the case in other countrys. But this feature will not make it into IP before v1.6.0. Other countrys are working differently and InvoicePlane should aim for statisfying the international market. There are open Feature Requests and they will be implemented.
To make this happen we first have to get IP back on track. IPv1.5.10 is a big step for this, as its the first release since abount 2 years which will make sure IP is up to date. IPv1.5.XX will not include any new features or any new functions, its a maintain release.