Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a new APA method that allows to automatically decay unspent points after the decay period for these points has passed.
Points are spent in a first in first out manner, i.e., the oldest points – which would decay first – are spent first.
Such a decay is frequently used in bonus points programs (such as airlines mileage programs).
Technically, this decay works as follows:
For each point in time where positive points have been earned (through raids or adjustments), we know the point in time these points will decay (if not spent).
To calculate the amount of unspent points, we need to calculate the balance at the end of the decay period and the number of positive points earned during the decay period (excluding the points we want to decay right now).
If the balance is larger than the amount of newly earned points, the difference is what we need to decay.
From my side, there are two open points:
min(balance - newly earned, points to decay)
to safeguard points earned before the start date.Feedback welcome!