-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: command to fix active subs w/ missing next_payment dates #3484
Conversation
Co-authored-by: Adam Cassis <adam@adamcassis.com>
f8e829a
to
ba88700
Compare
@adekbadek just thought of a case that we need to handle with this. The script should check subscriptions for an end date, and if the end date is before the calculated next payment date, it should bail. Otherwise those subscriptions may get renewed instead of properly expiring. |
Ah, good catch! Makes sense. Since this is "business-sensitive", would mind adding unit tests here? |
Great idea to add unit tests! I'll keep this PR alive until we add those and handle the "end dates" scenario above. |
@adekbadek 9686c86 adds handling for end dates (if a subscription has an end date that will occur before the calculated next payment date, a next payment date will not be set). It also calculates "missed" billing periods by starting from the last successful order, if one exists. ff7c665 adds a new suite of unit tests and fixes a couple of minor issues exposed by the test suite. |
* | ||
* @return array|false The result array or false if the subscription is broken. | ||
*/ | ||
public static function calculate_next_payment_date( $subscription, $dry_run = false ) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: the function name suggests the the return value is a date. Could be something along the lines of validate_subscription_dates
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated to validate_subscription_dates
in 879ba1a
Co-authored-by: Adam Cassis <adam@adamcassis.com>
@adekbadek Merging this one since you preapproved it! |
Hey @dkoo, good job getting this PR merged! 🎉 Now, the Please check if this PR needs to be included in the "Upcoming Changes" and "Release Notes" doc. If it doesn't, simply remove the label. If it does, please add an entry to it to our shared document, with screenshots and testing instructions if applicable, then remove the label. Thank you! ❤️ |
# [5.7.0-alpha.1](v5.6.0...v5.7.0-alpha.1) (2024-11-06) ### Bug Fixes * avoid duplicate info notices in email editors ([#3512](#3512)) ([d38fc1a](d38fc1a)) * **co-authors-plus:** CLI for migrating from CAP GA ([9a81584](9a81584)) * command to fix active subs w/ missing next_payment dates ([#3484](#3484)) ([2e05fd4](2e05fd4)) * php fatal and warning ([#3502](#3502)) ([e089172](e089172)) * **site-kit:** update logger cron to hourly interval ([#3485](#3485)) ([e3823e7](e3823e7)) * **webhooks:** deprecate global endpoint ([#3492](#3492)) ([63e8ab2](63e8ab2)) * **wp-6.7:** update radio control styles ([#3518](#3518)) ([831756e](831756e)) ### Features * add user name to woocommerce data events ([#3473](#3473)) ([5312d30](5312d30)) * automatically disable guest authors ([#3345](#3345)) ([d0db6ba](d0db6ba)) * **connections:** jetpack sso ([#3486](#3486)) ([123408e](123408e)) * display list remote name on newsletter wizard ([#3478](#3478)) ([cd0b859](cd0b859)) * **site-kit:** add logging when site kit disconnects ([#3472](#3472)) ([62bf98c](62bf98c))
🎉 This PR is included in version 5.7.0-alpha.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
# [5.7.0](v5.6.1...v5.7.0) (2024-11-11) ### Bug Fixes * avoid duplicate info notices in email editors ([#3512](#3512)) ([d38fc1a](d38fc1a)) * **co-authors-plus:** CLI for migrating from CAP GA ([9a81584](9a81584)) * command to fix active subs w/ missing next_payment dates ([#3484](#3484)) ([2e05fd4](2e05fd4)) * php fatal and warning ([#3502](#3502)) ([e089172](e089172)) * **site-kit:** update logger cron to hourly interval ([#3485](#3485)) ([e3823e7](e3823e7)) * **webhooks:** deprecate global endpoint ([#3492](#3492)) ([63e8ab2](63e8ab2)) * **wp-6.7:** update radio control styles ([#3518](#3518)) ([831756e](831756e)) ### Features * add user name to woocommerce data events ([#3473](#3473)) ([5312d30](5312d30)) * automatically disable guest authors ([#3345](#3345)) ([d0db6ba](d0db6ba)) * **connections:** jetpack sso ([#3486](#3486)) ([123408e](123408e)) * display list remote name on newsletter wizard ([#3478](#3478)) ([cd0b859](cd0b859)) * **site-kit:** add logging when site kit disconnects ([#3472](#3472)) ([62bf98c](62bf98c))
🎉 This PR is included in version 5.7.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
All Submissions:
Changes proposed in this Pull Request:
Adds a CLI command to report and and optionally fix active or pending subscriptions that have a
next_payment
date in the past, or are missing anext_payment
date entirely. This could happen if Action Scheduler jobs failed to update or renew subscriptions as scheduled, or as a result of missing data on migrated subscriptions.How to test the changes in this Pull Request:
next_payment
dates. This must be done usingwp shell
(replace888
with a subscription ID on your test site) as the UI has safeguards to prevent the deletion of next payment dates. Make sure to do this for at least a few subscriptions that meet the following criteria:next_payment
dates:next_payment
date (reported in thenext_payment_date
column)next_payment
date before the end datenext_payment
date (they should show0
in thenext_payment_date
column)--start-date
arg inYYYY-MM-DD
format and confirm that the command only reports subscriptions started after the given date.--dry-run
and confirm that the command provides the same report data as in step 2, but also updates the subscriptions with the reportednext_payment
dates.Other information: