Skip to content
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(wcs): update subscriptions expiration cli behavior #3617

Merged
merged 5 commits into from
Dec 12, 2024

Conversation

chickenn00dle
Copy link
Contributor

All Submissions:

Changes proposed in this Pull Request:

This updates the wp newspack migrate-expired-subscription command behavior to schedule a final retry when the last retry took place within the sites on-hold duration.

How to test the changes in this Pull Request:

  1. Make sure you DO NOT have the NEWSPACK_SUBSCRIPTIONS_EXPIRATION constant defined
  2. If you don't already have any active subscriptions, as a reader purchase a handful of subscriptions
  3. Follow the steps here to trigger scheduled retry for a handful of subscriptions: https://woocommerce.com/document/subscriptions/develop/failed-payment-retry/#section-7
  4. Ensure you have at least two subscriptions that are on-hold and have gone through all possible retries
  5. Define the NEWSPACK_SUBSCRIPTIONS_EXPIRATION constant: define( 'NEWSPACK_SUBSCRIPTIONS_EXPIRATION', true );
  6. Now we want to set the last retry date for one of the subscriptions to sometime in the past that is greater than the sites on-hold duration (which defaults to 30 days). If you didn't have an old subscription to test on, you can manually do this via wp shell with the following:
$s=wcs_get_subscription(SUBSCRIPTION_ID);
$o=$s->get_last_order('all');
$retry=\WCS_Retry_Manager::store()->get_last_retry_for_order(wcs_get_objects_property($o, 'id'));
$retry->get_date_gmt(); // To get the date in gmt
$retry->update_date_gmt('2024-10-12 09:44:14'); // Replace date based on output from last step minus however many months to exceed on-hold duration
  1. Via terminal, run the wp newspack migrate-expired-subscriptions --verbose --ids=1,2 command. ids should be the two subscriptions from above.
  2. Confirm the output shows 1 subscription has been updated, and the other subscription has a retry scheduled.
  3. Now run the command again with the --live flag.
  4. Confirm the subscriptions have been updated accordingly, one set to expired and a new woocommerce_scheduled_subscription_payment_retry scheduled action added for the other.

Other information:

  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your changes, as applicable?
  • Have you successfully ran tests with your changes locally?

@chickenn00dle chickenn00dle requested a review from a team as a code owner December 11, 2024 15:36
@chickenn00dle chickenn00dle added the [Status] Needs Review The issue or pull request needs to be reviewed label Dec 11, 2024
@chickenn00dle chickenn00dle force-pushed the fix/subscriptions-expiration-cli-behavior branch from 3798fcb to 5ad0e30 Compare December 11, 2024 20:12
Copy link
Contributor

@leogermani leogermani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Testing well!

@github-actions github-actions bot added [Status] Approved The pull request has been reviewed and is ready to merge and removed [Status] Needs Review The issue or pull request needs to be reviewed labels Dec 12, 2024
@chickenn00dle chickenn00dle merged commit 07e768c into trunk Dec 12, 2024
8 checks passed
Copy link

Hey @chickenn00dle, good job getting this PR merged! 🎉

Now, the needs-changelog label has been added to it.

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 our shared document, with screenshots and testing instructions if applicable, then remove the label.

Thank you! ❤️

matticbot pushed a commit that referenced this pull request Dec 12, 2024
# [5.10.0-alpha.1](v5.9.1...v5.10.0-alpha.1) (2024-12-12)

### Bug Fixes

* duplicate orders save on cron ([#3604](#3604)) ([ec69167](ec69167))
* **ras-acc:** re-add recaptcha to the WooCommerce checkout ([#3605](#3605)) ([f42a75b](f42a75b))
* **ras:** do not require Woo plugins if using NRH ([#3614](#3614)) ([363a834](363a834))
* **wcs:** remove subscriptions expiration feature flag ([#3618](#3618)) ([7c175d9](7c175d9))
* **wcs:** update subscription expiration feature ([#3613](#3613)) ([ebf6e6d](ebf6e6d))
* **wcs:** update subscriptions expiration cli behavior ([#3617](#3617)) ([07e768c](07e768c))

### Features

* **subscriptions:** add cancellation reason metadata ([#3568](#3568)) ([de83e02](de83e02))
* **wc:** duplicate orders admin notice ([#3555](#3555)) ([cb764e3](cb764e3))
* **wcs:** add expired subscription cli tool ([#3593](#3593)) ([5d39398](5d39398))
* **webhooks:** filter request priority ([#3587](#3587)) ([1928a6a](1928a6a))
* **woocommerce-subscriptions:** add url redirect for wc subscription renewals ([#3525](#3525)) ([5b14aeb](5b14aeb))

### Reverts

* Revert "feat: command to initialize cron job to slowly backfill CAP term data (#3425)" (#3620) ([c9a9d45](c9a9d45)), closes [#3425](#3425) [#3620](#3620)
@matticbot
Copy link
Contributor

🎉 This PR is included in version 5.10.0-alpha.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

matticbot pushed a commit that referenced this pull request Dec 16, 2024
# [5.10.0](v5.9.2...v5.10.0) (2024-12-16)

### Bug Fixes

* dont load textdomain too early ([#3629](#3629)) ([76c1f97](76c1f97))
* duplicate orders save on cron ([#3604](#3604)) ([ec69167](ec69167))
* hide duplicate notices if all was dismissed ([#3630](#3630)) ([cf48188](cf48188))
* **ras-acc:** re-add recaptcha to the WooCommerce checkout ([#3605](#3605)) ([f42a75b](f42a75b))
* **ras:** do not require Woo plugins if using NRH ([#3614](#3614)) ([363a834](363a834))
* **wcs:** remove subscriptions expiration feature flag ([#3618](#3618)) ([7c175d9](7c175d9))
* **wcs:** update subscription expiration feature ([#3613](#3613)) ([ebf6e6d](ebf6e6d))
* **wcs:** update subscriptions expiration cli behavior ([#3617](#3617)) ([07e768c](07e768c))

### Features

* **subscriptions:** add cancellation reason metadata ([#3568](#3568)) ([de83e02](de83e02))
* **wc:** duplicate orders admin notice ([#3555](#3555)) ([cb764e3](cb764e3))
* **wcs:** add expired subscription cli tool ([#3593](#3593)) ([5d39398](5d39398))
* **webhooks:** filter request priority ([#3587](#3587)) ([1928a6a](1928a6a))
* **woocommerce-subscriptions:** add url redirect for wc subscription renewals ([#3525](#3525)) ([5b14aeb](5b14aeb))

### Reverts

* Revert "feat: command to initialize cron job to slowly backfill CAP term data (#3425)" (#3620) ([c9a9d45](c9a9d45)), closes [#3425](#3425) [#3620](#3620)
@matticbot
Copy link
Contributor

🎉 This PR is included in version 5.10.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
released on @alpha released [Status] Approved The pull request has been reviewed and is ready to merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants