validate Amount
Validates amount against what this ecode actually sells.
An ecode sells either a free amount inside a range or one of a fixed set of denominations - never both - so the two cases are checked separately. That separation is the point: a fixed-denomination ecode has no ActivePerksEcode.minimumAmount or ActivePerksEcode.maximumAmount (both null), only ActivePerksEcode.fixedDenominations. A missing bound on a range ecode is treated as open.
A non-finite amount is never valid. Every comparison with NaN is false, so without an explicit check NaN would slip past each bound below; it is refused as AmountValidation.NotPositive, like negative infinity. Positive infinity is refused as AmountValidation.AboveMaximum for a range ecode and as AmountValidation.NotAnAllowedDenomination for a fixed one.
Return
AmountValidation.Valid, or the reason it was refused.
Parameters
The amount the member entered or picked.