Feature: add renewal methods to subscription model #7681
Merged
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.
Description
This adds some quality of life methods to subscription model including:
createRenewal
shouldCreateRenewal
shouldEndSubscription
The goal is to unify the way we are dealing with renewals across our gateways.
I noticed throughout different gateways, we are duplicating a lot of the same logic for handling the renewals and are not consistent with the properties being used in the creation of the donation model. For example, sometimes we use the donor's first name vs the initial donation's billing first name, the billing address is not often accounted for, various properties are missing, etc.. With a unified api we can be consistent with the renewal values and which properties are being carried over from the subscription, initial donation, donor, invoice, etc.
This was largely inspired by a SubscriptionModelDecorator I created for Stripe webhooks which is being used in production.
There is also the webhook event handlers that @glaubersilva made that could make use of these methods directly.
Affects
This only introduces new logic to the subscription model and repositories, however will affect gateways in the future as they adopt these methods.
Visuals
N/A
Testing Instructions
Pre-review Checklist
@unreleased
tags included in DocBlocks