Based on our tests, fixed discounts don’t work because the plugin has to pass them to the conversion functions first. That is, it’s not our multi-currency plugin that “intercepts” the discount, it’s the discount plugin that has to explicitly pass them (any plugin that handles any pricing has to interface with the multi-currency layer explictily).
What happens when you set a fixed discount is that the amount is taken as an absolute value. For example, if a shop’s base currency is USD and there is a discount of “10 USD”, the actual discount value becomes “10 <of the active currency>” (10 USD, 10 EUR, 10 GBP, and so on, depending on which currency is active). To prevent this, the value should be passed through a filter that our multi-currency layer provides, so that it’s converted to the active currency before it’s applied.
A further improvement, which most of our customers require, is to allow entering the discount in multiple currencies directly on the backend. For example, the discount could be:
– 10 USD
– 9 EUR
– <auto> GBP
Which means:
– When currency is USD, the discount is 10.
– When currency is EUR, the discount is 9.
– When currency is GBP, the discount is “10 USD converted to GBP, using the exchange rates“
Percentage discounts work out of the box, because a discount of 10% is “10% of whatever amount is in the cart”, the currency is irrelevant.