diff --git a/changelog.txt b/changelog.txt
index 8db75a9..5d6289d 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,5 +1,28 @@
*** Woo Subscriptions Changelog ***
+2023-10-18 - version 5.6.0
+* Add: Introduce the "Subscription Relationship" column under the Orders list admin page when HPOS is enabled.
+* Add: Use admin theme color and the correct WooCommerce colors.
+* Fix: Resolved an issue that caused subscriptions to go on-hold when a customer fails or abandons an early renewal order payment.
+* Fix: Resolved an issue that caused subscriptions with an unpaid early renewal order to be incorrectly considered as needing payment.
+* Fix: When HPOS is enabled, make the orders_by_type_query filter box work in the WooCommerce orders screen.
+* Fix: Ensure renewal orders paid via the Block Checkout are correctly linked to their subscription.
+* Fix: Resolved an issue that caused paying for failed/pending parent orders that include Product Add-ons to not calculate the correct total.
+* Fix: Ensure the order needs processing transient is deleted when a subscription order (eg renewal) is created. Fixes issues with renewal orders going straight to a completed status.
+* Fix: Store the correct subscription start date in postmeta and ordermeta when HPOS and data syncing is being used.
+* Fix: When HPOS is enabled, deleting a customer will now delete their subscriptions.
+* Fix: Missing styles on the Edit Subscription page when HPOS is enabled.
+* Fix: Resolve an issue that would cause additional subscriptions to be created when completing a switch via the Block Checkout.
+* Fix: Resolve an issue that would cause 3rd party plugin edit product fields with the show_if_variable-subscription class to be incorrectly hidden.
+* Fix: Allow gateways to execute action on payment method deletion before updating the subscription.
+* Fix: Ensure subscriptions have a date created that correctly accounts for the site's timezone. Fixes issues with subscriptions having a date created double the site's UTC offset.
+* Fix: When HPOS is enabled, fix quick-editing the subscription statuses on the admin list table.
+* Dev: PHP 8.2: Fix "Creation of dynamic property" warnings.
+* Dev: PHP 8.2: Fix "Automatic conversion of false to array is deprecated" warnings.
+* Dev: PHP warnings from using debug_backtrace().
+* Dev: Updated subscriptions-core to 6.4.0
+* Dev: Updated the hooks for Checkout Blocks, replacing the deprecated `woocommerce_blocks_checkout_` prefixed hooks with `woocommerce_store_api_checkout`.
+
2023-09-21 - version 5.5.0
* Tweak - Use admin theme color in selectors.
* Tweak - Change plugin name to Woo Subscriptions.
diff --git a/includes/admin/reports/class-wcs-report-dashboard.php b/includes/admin/reports/class-wcs-report-dashboard.php
index 8e4a09d..211143d 100644
--- a/includes/admin/reports/class-wcs-report-dashboard.php
+++ b/includes/admin/reports/class-wcs-report-dashboard.php
@@ -52,6 +52,11 @@ class WCS_Report_Dashboard {
$cached_results = get_transient( strtolower( __CLASS__ ) );
+ // Set a default value for cached results for PHP 8.2+ compatibility.
+ if ( empty( $cached_results ) ) {
+ $cached_results = [];
+ }
+
// Subscription signups this month
$query = $wpdb->prepare(
"SELECT COUNT(DISTINCT wcsubs.ID) AS count
@@ -69,7 +74,7 @@ class WCS_Report_Dashboard {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = $wpdb->get_var( apply_filters( 'woocommerce_subscription_dashboard_status_widget_signup_query', $query ) );
$update_cache = true;
@@ -128,7 +133,7 @@ class WCS_Report_Dashboard {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = $wpdb->get_var( apply_filters( 'woocommerce_subscription_dashboard_status_widget_renewal_query', $query ) );
$update_cache = true;
@@ -162,7 +167,7 @@ class WCS_Report_Dashboard {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = $wpdb->get_var( apply_filters( 'woocommerce_subscription_dashboard_status_widget_renewal_revenue_query', $query ) );
$update_cache = true;
@@ -185,7 +190,7 @@ class WCS_Report_Dashboard {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = $wpdb->get_var( apply_filters( 'woocommerce_subscription_dashboard_status_widget_cancellation_query', $query ) );
$update_cache = true;
diff --git a/includes/admin/reports/class-wcs-report-subscription-by-customer.php b/includes/admin/reports/class-wcs-report-subscription-by-customer.php
index 2738b40..390504b 100644
--- a/includes/admin/reports/class-wcs-report-subscription-by-customer.php
+++ b/includes/admin/reports/class-wcs-report-subscription-by-customer.php
@@ -239,7 +239,12 @@ class WCS_Report_Subscription_By_Customer extends WP_List_Table {
$cached_results = get_transient( strtolower( __CLASS__ ) );
$query_hash = md5( $total_query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ // Set a default value for cached results for PHP 8.2+ compatibility.
+ if ( empty( $cached_results ) ) {
+ $cached_results = [];
+ }
+
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
// Enable big selects for reports
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_customer_total_data', $wpdb->get_row( $total_query ) );
@@ -268,7 +273,7 @@ class WCS_Report_Subscription_By_Customer extends WP_List_Table {
$query_hash = md5( $renewal_switch_total_query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
// Enable big selects for reports
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_customer_total_renewal_switch_data', $wpdb->get_row( $renewal_switch_total_query ) );
diff --git a/includes/admin/reports/class-wcs-report-subscription-by-product.php b/includes/admin/reports/class-wcs-report-subscription-by-product.php
index d315be7..59829f0 100644
--- a/includes/admin/reports/class-wcs-report-subscription-by-product.php
+++ b/includes/admin/reports/class-wcs-report-subscription-by-product.php
@@ -161,7 +161,12 @@ class WCS_Report_Subscription_By_Product extends WP_List_Table {
$cached_results = get_transient( strtolower( __CLASS__ ) );
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ // Set a default value for cached results for PHP 8.2+ compatibility.
+ if ( empty( $cached_results ) ) {
+ $cached_results = [];
+ }
+
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_product_data', $wpdb->get_results( $query, OBJECT_K ), $args );
set_transient( strtolower( __CLASS__ ), $cached_results, WEEK_IN_SECONDS );
@@ -214,7 +219,7 @@ class WCS_Report_Subscription_By_Product extends WP_List_Table {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_product_lifetime_value_data', $wpdb->get_results( $query, OBJECT_K ), $args );
set_transient( strtolower( __CLASS__ ), $cached_results, WEEK_IN_SECONDS );
diff --git a/includes/admin/reports/class-wcs-report-subscription-events-by-date.php b/includes/admin/reports/class-wcs-report-subscription-events-by-date.php
index 0800ca4..1d26e30 100644
--- a/includes/admin/reports/class-wcs-report-subscription-events-by-date.php
+++ b/includes/admin/reports/class-wcs-report-subscription-events-by-date.php
@@ -268,6 +268,11 @@ class WCS_Report_Subscription_Events_By_Date extends WC_Admin_Report {
$cached_results = get_transient( strtolower( get_class( $this ) ) );
+ // Set a default value for cached results for PHP 8.2+ compatibility.
+ if ( empty( $cached_results ) ) {
+ $cached_results = [];
+ }
+
// Check if we need to update the cache with the query results from the figures generated by get_order_report_data().
foreach ( array( 'new_subscriptions' => 'new_subscriptions', 'renewals' => 'renewal', 'resubscribes' => 'resubscribe', 'switches' => 'switch' ) as $report => $property_key ) { // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
$query_hash = $this->report_data->{"{$report}_query_hash"};
@@ -314,7 +319,7 @@ class WCS_Report_Subscription_Events_By_Date extends WC_Admin_Report {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_subscription_events_sign_up_data', (array) $wpdb->get_results( $query ), $args );
$update_cache = true;
@@ -379,7 +384,7 @@ class WCS_Report_Subscription_Events_By_Date extends WC_Admin_Report {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_subscription_events_subscriber_count_data', (array) $wpdb->get_results( $query ), $args );
$update_cache = true;
@@ -408,7 +413,7 @@ class WCS_Report_Subscription_Events_By_Date extends WC_Admin_Report {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_subscription_events_cancel_count_data', (array) $wpdb->get_results( $query ), $args );
$update_cache = true;
@@ -438,7 +443,7 @@ class WCS_Report_Subscription_Events_By_Date extends WC_Admin_Report {
$query_hash = md5( $query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_subscription_events_ended_count_data', (array) $wpdb->get_results( $query ), $args );
$update_cache = true;
diff --git a/includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php b/includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php
index a2b0a35..6aace94 100644
--- a/includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php
+++ b/includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php
@@ -17,6 +17,8 @@ class WCS_Report_Upcoming_Recurring_Revenue extends WC_Admin_Report {
public $order_ids_recurring_totals = null;
+ public $average_sales = 0;
+
/**
* Get the legend for the main chart sidebar
* @return array
@@ -161,7 +163,12 @@ class WCS_Report_Upcoming_Recurring_Revenue extends WC_Admin_Report {
$cached_results = get_transient( strtolower( get_class( $this ) ) );
$query_hash = md5( $base_query );
- if ( $args['no_cache'] || false === $cached_results || ! isset( $cached_results[ $query_hash ] ) ) {
+ // Set a default value for cached results for PHP 8.2+ compatibility.
+ if ( empty( $cached_results ) ) {
+ $cached_results = [];
+ }
+
+ if ( $args['no_cache'] || ! isset( $cached_results[ $query_hash ] ) ) {
$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
$cached_results[ $query_hash ] = apply_filters( 'wcs_reports_upcoming_recurring_revenue_data', $wpdb->get_results( $base_query, OBJECT_K ), $args );
set_transient( strtolower( get_class( $this ) ), $cached_results, WEEK_IN_SECONDS );
diff --git a/includes/early-renewal/class-wcs-cart-early-renewal.php b/includes/early-renewal/class-wcs-cart-early-renewal.php
index a3d05b1..58121ed 100644
--- a/includes/early-renewal/class-wcs-cart-early-renewal.php
+++ b/includes/early-renewal/class-wcs-cart-early-renewal.php
@@ -14,6 +14,13 @@ if ( ! defined( 'ABSPATH' ) ) {
class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
+ /**
+ * The meta key used to store whether the subscription dates have been updated for an early renewal.
+ *
+ * @var string
+ */
+ const SUBSCRIPTION_DATES_UPDATED_META_KEY = '_wcs_early_renewal_subscription_dates_updated';
+
/**
* Bootstraps the class and hooks required actions & filters.
*/
@@ -26,27 +33,14 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
add_action( 'template_redirect', array( $this, 'maybe_setup_cart' ), 100 );
add_action( 'woocommerce_checkout_create_order', array( $this, 'copy_subscription_meta_to_order' ), 90 );
+
// Record early renewal payments.
- if ( wcs_is_woocommerce_pre( '3.0' ) ) {
- add_action( 'woocommerce_checkout_order_processed', array( $this, 'maybe_record_early_renewal' ), 100, 2 );
- } else {
- add_action( 'woocommerce_checkout_create_order', array( $this, 'add_early_renewal_metadata_to_order' ), 100, 2 );
- if ( class_exists( 'Automattic\WooCommerce\Blocks\Package' ) ) {
- if ( version_compare( \Automattic\WooCommerce\Blocks\Package::get_version(), '7.2.0', '>=' ) ) {
- add_action( 'woocommerce_store_api_checkout_update_order_meta', array( $this, 'add_early_renewal_metadata_to_order' ), 100, 1 );
- } elseif ( version_compare( \Automattic\WooCommerce\Blocks\Package::get_version(), '6.3.0', '>=' ) ) {
- add_action( 'woocommerce_blocks_checkout_update_order_meta', array( $this, 'add_early_renewal_metadata_to_order' ), 100, 1 );
- } else {
- add_action( '__experimental_woocommerce_blocks_checkout_update_order_meta', array( $this, 'add_early_renewal_metadata_to_order' ), 100, 1 );
- }
- }
- }
+ add_action( 'woocommerce_checkout_create_order', array( $this, 'add_early_renewal_metadata_to_order' ), 100, 2 );
- // Process early renewal by making sure subscription's dates are updated.
- add_action( 'subscriptions_activated_for_order', array( $this, 'maybe_update_dates' ) );
+ add_action( 'woocommerce_store_api_checkout_update_order_meta', array( $this, 'add_early_renewal_metadata_to_order' ), 100, 1 );
- // Handle early renewal orders that are cancelled.
- add_action( 'woocommerce_order_status_cancelled', array( $this, 'maybe_reactivate_subscription' ), 100, 2 );
+ // Handle early renewal orders status changes.
+ add_action( 'woocommerce_order_status_changed', array( $this, 'maybe_record_subscription_payment' ), 5, 4 );
// Add a subscription note to record early renewal order.
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'add_note_to_record_early_renewal' ) );
@@ -55,7 +49,7 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'set_cart_item_renewal_order_data' ), 5 );
// Allow customers to cancel early renewal orders from their my account page.
- add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'add_cancel_order_action' ), 15, 2 );
+ add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'filter_early_renewal_order_actions' ), 15, 2 );
add_action( 'wp_loaded', array( $this, 'allow_early_renewal_order_cancellation' ), 10, 3 );
// Handles early renew of password-protected products.
@@ -128,37 +122,6 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
exit;
}
- /**
- * Records an early renewal against order created on checkout (only for WooCommerce < 3.0).
- *
- * @param int $order_id The post_id of a shop_order post/WC_Order object.
- * @param array $posted_data The data posted on checkout.
- * @since 2.3.0
- */
- public function maybe_record_early_renewal( $order_id, $posted_data ) {
- if ( ! wcs_is_woocommerce_pre( '3.0' ) ) {
- wcs_deprecated_function( __METHOD__, '2.0', 'WCS_Cart_Early_Renewal::add_early_renewal_metadata_to_order( $order, $posted_data )' );
- }
-
- $cart_item = $this->cart_contains();
-
- if ( ! $cart_item ) {
- return;
- }
-
- // Get the subscription.
- $subscription = wcs_get_subscription( $cart_item[ $this->cart_item_key ]['subscription_id'] );
-
- // Mark this order as a renewal.
- update_post_meta( $order_id, '_subscription_renewal', $subscription->get_id() );
-
- // Mark this order as an early renewal.
- update_post_meta( $order_id, '_subscription_renewal_early', $subscription->get_id() );
-
- // Put the subscription on hold until payment is complete.
- $subscription->update_status( 'on-hold', _x( 'Customer requested to renew early:', 'used in order note as reason for why subscription status changed', 'woocommerce-subscriptions' ) );
- }
-
/**
* Copies the metadata from the subscription to the order created on checkout.
*
@@ -188,8 +151,8 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
* @since 2.3.0
*/
public function add_early_renewal_metadata_to_order( $order, $data = array() ) {
-
$cart_item = $this->cart_contains();
+
if ( ! $cart_item ) {
return;
}
@@ -202,65 +165,6 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
// Mark this order as an early renewal.
$order->update_meta_data( '_subscription_renewal_early', $subscription->get_id() );
-
- // Put the subscription on hold until payment is complete.
- $subscription->update_status( 'on-hold', _x( 'Customer requested to renew early:', 'used in order note as reason for why subscription status changed', 'woocommerce-subscriptions' ) );
- }
-
- /**
- * Update the next payment and end dates on a subscription to extend them and account
- * for early renewal.
- *
- * @param int $order_id The WC Order ID which contains an early renewal.
- * @since 2.3.0
- */
- public function maybe_update_dates( $order_id ) {
-
- $order = wc_get_order( $order_id );
-
- if ( ! $order || ! wcs_order_contains_early_renewal( $order ) ) {
- return;
- }
-
- $subscription_id = wcs_get_objects_property( $order, 'subscription_renewal_early' );
- $subscription = wcs_get_subscription( $subscription_id );
-
- if ( ! $subscription ) {
- return;
- }
-
- wcs_update_dates_after_early_renewal( $subscription, $order );
- }
-
- /**
- * Reactivates an on hold subscription when an early renewal order
- * is cancelled by the user.
- *
- * @param int $order_id The WC Order ID which contains an early renewal.
- * @since 2.3.0
- */
- public function maybe_reactivate_subscription( $order_id ) {
-
- // Get the order and make sure we have one.
- $order = wc_get_order( $order_id );
-
- if ( wcs_order_contains_early_renewal( $order ) ) {
-
- // Get the subscription and make sure we have one.
- $subscription = wcs_get_subscription( wcs_get_objects_property( $order, 'subscription_renewal_early' ) );
-
- if ( ! $subscription || ! $subscription->has_status( 'on-hold' ) ) {
- return;
- }
-
- // Make sure the next payment date isn't in the past.
- if ( strtotime( $subscription->get_date( 'next_payment' ) ) < time() ) {
- return;
- }
-
- // Reactivate the subscription.
- $subscription->update_status( 'active' );
- }
}
/**
@@ -346,19 +250,33 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
}
/**
- * Ensure customers can cancel early renewal orders.
+ * Filters the list of actions customers can make on an order from their My Account page.
*
- * Renewal orders are usually not cancellable because @see WCS_Cart_Renewal::filter_my_account_my_orders_actions() prevents it.
- * In the case of early renewals, the customer has opted for early renewal and so should be able to cancel it in order to reactivate their subscription.
+ * Unlike standard renewal orders early renewal orders can be cancelled and cannot be paid.
+ *
+ * This function is intended to run after @see WCS_Cart_Renewal::filter_my_account_my_orders_actions() which removes the cancel and pay option.
+ *
+ * @param array $actions A list of actions customers can make on an order from their My Account page.
+ * @param WC_Order $order The order.
*
- * @param array $actions A list of actions customers can make on an order from their My Account page
- * @param WC_Order $order The order the list of actions relate to.
* @return array $actions
- * @since 2.3.0
*/
- public static function add_cancel_order_action( $actions, $order ) {
+ public static function filter_early_renewal_order_actions( $actions, $order ) {
- if ( ! isset( $actions['cancel'] ) && wcs_order_contains_early_renewal( $order ) && in_array( $order->get_status(), apply_filters( 'woocommerce_valid_order_statuses_for_cancel', array( 'pending', 'failed' ), $order ) ) ) {
+ // Bail if the order can already be cancelled and cannot be paid.
+ if ( isset( $actions['cancel'] ) && ! isset( $actions['pay'] ) ) {
+ return $actions;
+ }
+
+ if ( ! wcs_order_contains_early_renewal( $order ) ) {
+ return $actions;
+ }
+
+ // Early renewal orders that failed, cannot be paid. The customer must retry by following the early renewal flow again.
+ unset( $actions['pay'] );
+
+ // Add the cancel action back if the order has a status that allows it to be cancelled.
+ if ( ! isset( $actions['cancel'] ) && in_array( $order->get_status(), apply_filters( 'woocommerce_valid_order_statuses_for_cancel', array( 'pending', 'failed' ), $order ) ) ) {
$redirect = wc_get_page_permalink( 'myaccount' );
// Redirect the customer back to the view subscription page if that is where they cancel the order from.
@@ -384,7 +302,7 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
* Allow customers to cancel early renewal orders from their account page.
*
* Renewal orders are usually not cancellable because @see WC_Subscriptions_Renewal_Order::prevent_cancelling_renewal_orders() prevents the request from being processed.
- * In the case of early renewals, the customer has opted for early renewal and so should be able to cancel it in order to reactivate their subscription.
+ * In the case of early renewals, the customer has opted for early renewal and so should be able to cancel it.
*
* @since 2.3.0
*/
@@ -519,4 +437,194 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal {
return $order_meta;
}
+
+ /**
+ * Records successful and unsuccessful subscription payments for early renewal orders.
+ *
+ * @param int $order_id The ID of the order transitioned.
+ * @param string $old_status The old order's status.
+ * @param string $new_status The new order's status.
+ * @param WC_Order $order The order object. Optional. Older versions of WC didn't provide this. Falls back to the order_id if not provided.
+ */
+ public function maybe_record_subscription_payment( $order_id, $old_status, $new_status, $order = null ) {
+
+ // We're only interested in order status transitions that involve payment.
+ if ( in_array( $new_status, [ 'cancelled', 'refunded' ] ) ) {
+ return;
+ }
+
+ if ( ! $order ) {
+ $order = wc_get_order( $order_id );
+ }
+
+ // Only continue if this is an early renewal order.
+ if ( ! $order || ! wcs_order_contains_early_renewal( $order ) ) {
+ return;
+ }
+
+ // Prevent the default renewal order status transitions from updating the subscription status.
+ // Early renewal orders are optional and should not affect the subscription status.
+ if ( remove_action( 'woocommerce_order_status_changed', 'WC_Subscriptions_Renewal_Order::maybe_record_subscription_payment', 10 ) ) {
+
+ // Add a callback to reattach the function which handles renewal order payment status transitions, after the current request has finished.
+ add_action( 'woocommerce_order_status_changed', array( $this, 'reattach_renewal_order_status_handling' ), 11 );
+ }
+
+ // We're only interested in processing order transitions from a status that required payment.
+ if ( ! in_array( $old_status, apply_filters( 'woocommerce_valid_order_statuses_for_payment', array( 'pending', 'on-hold', 'failed' ), $order ) ) ) {
+ return;
+ }
+
+ $subscription = wcs_get_subscription( absint( $order->get_meta( '_subscription_renewal_early' ) ) );
+
+ // Payment success - if payment was successful and dates haven't been updated for this order, update the subscription dates and store meta to prevent dates being updated multiple times for the same order.
+ if ( $subscription && $order->is_paid() && ! $order->meta_exists( self::SUBSCRIPTION_DATES_UPDATED_META_KEY ) ) {
+ wcs_update_dates_after_early_renewal( $subscription, $order );
+
+ $order->update_meta_data( self::SUBSCRIPTION_DATES_UPDATED_META_KEY, wc_bool_to_string( true ) );
+ $order->save();
+ }
+ }
+
+ /**
+ * Reattaches the function which handles renewal order payment status transitions.
+ *
+ * The default renewal order status transition is detached when processing an early renewal
+ * order but needs to be reattached otherwise any renewal order status updates later in
+ * this request will not be processed.
+ *
+ * @see self::maybe_record_subscription_payment()
+ *
+ * @since 5.2.0
+ */
+ public function reattach_renewal_order_status_handling() {
+ add_action( 'woocommerce_order_status_changed', 'WC_Subscriptions_Renewal_Order::maybe_record_subscription_payment', 10, 3 );
+ }
+
+ // DEPRECATED FUNCTIONS.
+
+ /**
+ * Update the next payment and end dates on a subscription to extend them and account
+ * for early renewal.
+ *
+ * @deprecated 5.2.0
+ *
+ * @param int $order_id The WC Order ID which contains an early renewal.
+ * @since 2.3.0
+ */
+ public function maybe_update_dates( $order_id ) {
+ wcs_deprecated_function( __METHOD__, '5.2.0' );
+
+ $order = wc_get_order( $order_id );
+
+ if ( ! $order || ! wcs_order_contains_early_renewal( $order ) ) {
+ return;
+ }
+
+ $subscription_id = wcs_get_objects_property( $order, 'subscription_renewal_early' );
+ $subscription = wcs_get_subscription( $subscription_id );
+
+ if ( ! $subscription ) {
+ return;
+ }
+
+ wcs_update_dates_after_early_renewal( $subscription, $order );
+ }
+
+ /**
+ * Reactivates an on hold subscription when an early renewal order
+ * is cancelled by the user.
+ *
+ * @param int $order_id The WC Order ID which contains an early renewal.
+ * @since 2.3.0
+ */
+ public function maybe_reactivate_subscription( $order_id ) {
+ wcs_deprecated_function( __METHOD__, '5.2.0' );
+
+ // Get the order and make sure we have one.
+ $order = wc_get_order( $order_id );
+
+ if ( wcs_order_contains_early_renewal( $order ) ) {
+
+ // Get the subscription and make sure we have one.
+ $subscription = wcs_get_subscription( wcs_get_objects_property( $order, 'subscription_renewal_early' ) );
+
+ if ( ! $subscription || ! $subscription->has_status( 'on-hold' ) ) {
+ return;
+ }
+
+ // Make sure the next payment date isn't in the past.
+ if ( strtotime( $subscription->get_date( 'next_payment' ) ) < time() ) {
+ return;
+ }
+
+ // Reactivate the subscription.
+ $subscription->update_status( 'active' );
+ }
+ }
+
+ /**
+ * Records an early renewal against order created on checkout (only for WooCommerce < 3.0).
+ *
+ * @param int $order_id The post_id of a shop_order post/WC_Order object.
+ * @param array $posted_data The data posted on checkout.
+ * @since 2.3.0
+ */
+ public function maybe_record_early_renewal( $order_id, $posted_data ) {
+ wcs_deprecated_function( __METHOD__, '5.2.0', 'WCS_Cart_Early_Renewal::add_early_renewal_metadata_to_order( $order, $posted_data )' );
+
+ $cart_item = $this->cart_contains();
+
+ if ( ! $cart_item ) {
+ return;
+ }
+
+ // Get the subscription.
+ $subscription = wcs_get_subscription( $cart_item[ $this->cart_item_key ]['subscription_id'] );
+
+ // Mark this order as a renewal.
+ update_post_meta( $order_id, '_subscription_renewal', $subscription->get_id() );
+
+ // Mark this order as an early renewal.
+ update_post_meta( $order_id, '_subscription_renewal_early', $subscription->get_id() );
+
+ // Put the subscription on hold until payment is complete.
+ $subscription->update_status( 'on-hold', _x( 'Customer requested to renew early:', 'used in order note as reason for why subscription status changed', 'woocommerce-subscriptions' ) );
+ }
+
+ /**
+ * Ensure customers can cancel early renewal orders.
+ *
+ * Renewal orders are usually not cancellable because @see WCS_Cart_Renewal::filter_my_account_my_orders_actions() prevents it.
+ * In the case of early renewals, the customer has opted for early renewal and so should be able to cancel it.
+ *
+ * @param array $actions A list of actions customers can make on an order from their My Account page
+ * @param WC_Order $order The order the list of actions relate to.
+ * @return array $actions
+ * @since 2.3.0
+ */
+ public static function add_cancel_order_action( $actions, $order ) {
+ wcs_deprecated_function( __METHOD__, '5.6.0', __CLASS__ . '::filter_early_renewal_order_actions()' );
+
+ if ( ! isset( $actions['cancel'] ) && wcs_order_contains_early_renewal( $order ) && in_array( $order->get_status(), apply_filters( 'woocommerce_valid_order_statuses_for_cancel', array( 'pending', 'failed' ), $order ) ) ) {
+ $redirect = wc_get_page_permalink( 'myaccount' );
+
+ // Redirect the customer back to the view subscription page if that is where they cancel the order from.
+ if ( wcs_is_view_subscription_page() ) {
+ global $wp;
+ $subscription = wcs_get_subscription( $wp->query_vars['view-subscription'] );
+
+ if ( wcs_is_subscription( $subscription ) ) {
+ $redirect = $subscription->get_view_order_url();
+ }
+ }
+
+ $actions['cancel'] = array(
+ 'url' => $order->get_cancel_order_url( $redirect ),
+ 'name' => __( 'Cancel', 'woocommerce-subscriptions' ),
+ );
+ }
+
+ return $actions;
+ }
}
diff --git a/includes/payment-retry/admin/class-wcs-retry-admin.php b/includes/payment-retry/admin/class-wcs-retry-admin.php
index 8f0217a..b5c612a 100644
--- a/includes/payment-retry/admin/class-wcs-retry-admin.php
+++ b/includes/payment-retry/admin/class-wcs-retry-admin.php
@@ -14,6 +14,11 @@ if ( ! defined( 'ABSPATH' ) ) {
class WCS_Retry_Admin {
+ /**
+ * @var string The ID of the setting to enable/disable the retry system.
+ */
+ public $setting_id;
+
/**
* Constructor
*/
diff --git a/includes/switching/class-wc-subscriptions-switcher.php b/includes/switching/class-wc-subscriptions-switcher.php
index bfe58ee..be60c74 100644
--- a/includes/switching/class-wc-subscriptions-switcher.php
+++ b/includes/switching/class-wc-subscriptions-switcher.php
@@ -54,15 +54,7 @@ class WC_Subscriptions_Switcher {
add_action( 'woocommerce_checkout_update_order_meta', array( __CLASS__, 'add_order_meta' ), 10, 2 );
// Same as above for WooCommerce Blocks.
- if ( class_exists( 'Automattic\WooCommerce\Blocks\Package' ) ) {
- if ( version_compare( \Automattic\WooCommerce\Blocks\Package::get_version(), '7.2.0', '>=' ) ) {
- add_action( 'woocommerce_store_api_checkout_update_order_meta', array( __CLASS__, 'add_order_meta' ), 10, 1 );
- } elseif ( version_compare( \Automattic\WooCommerce\Blocks\Package::get_version(), '6.3.0', '>=' ) ) {
- add_action( 'woocommerce_blocks_checkout_update_order_meta', array( __CLASS__, 'add_order_meta' ), 10, 1 );
- } else {
- add_action( '__experimental_woocommerce_blocks_checkout_update_order_meta', array( __CLASS__, 'add_order_meta' ), 10, 1 );
- }
- }
+ add_action( 'woocommerce_store_api_checkout_update_order_meta', array( __CLASS__, 'add_order_meta' ), 10, 1 );
// Don't allow switching to the same product
add_filter( 'woocommerce_add_to_cart_validation', array( __CLASS__, 'validate_switch_request' ), 10, 4 );
@@ -1224,14 +1216,14 @@ class WC_Subscriptions_Switcher {
* @return bool|array Returns cart items that modify subscription contents, or false if no such items exist.
*/
public static function cart_contains_switches( $item_action = 'switch' ) {
- $subscription_switches = false;
+ $subscription_switches = [];
if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || false == DOING_AJAX ) ) {
- return $subscription_switches;
+ return false;
}
if ( ! isset( WC()->cart ) ) {
- return $subscription_switches;
+ return false;
}
// We use WC()->cart->cart_contents instead of WC()->cart->get_cart() to prevent recursion caused when get_cart_from_session() is called too early ref: https://github.com/woocommerce/woocommerce/commit/1f3365f2066b1e9d7e84aca7b1d7e89a6989c213
@@ -1263,7 +1255,7 @@ class WC_Subscriptions_Switcher {
}
}
- return $subscription_switches;
+ return ! empty( $subscription_switches ) ? $subscription_switches : false;
}
/**
diff --git a/includes/switching/class-wcs-switch-cart-item.php b/includes/switching/class-wcs-switch-cart-item.php
index 471a1ce..99edafe 100644
--- a/includes/switching/class-wcs-switch-cart-item.php
+++ b/includes/switching/class-wcs-switch-cart-item.php
@@ -106,6 +106,12 @@ class WCS_Switch_Cart_Item {
*/
public $switch_type;
+ /**
+ * Whether the last order was a switch and was a fully reduced pre-paid term.
+ * @var bool
+ */
+ public $is_switch_after_fully_reduced_prepaid_term;
+
/**
* Constructor.
*
diff --git a/languages/woocommerce-subscriptions.pot b/languages/woocommerce-subscriptions.pot
index 8f24e70..8be5155 100644
--- a/languages/woocommerce-subscriptions.pot
+++ b/languages/woocommerce-subscriptions.pot
@@ -2,14 +2,14 @@
# This file is distributed under the same license as the Woo Subscriptions plugin.
msgid ""
msgstr ""
-"Project-Id-Version: Woo Subscriptions 5.5.0\n"
+"Project-Id-Version: Woo Subscriptions 5.6.0\n"
"Report-Msgid-Bugs-To: https://woocommerce.com/contact-us\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2023-09-21T01:31:59+00:00\n"
+"POT-Creation-Date: 2023-10-18T04:37:04+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.8.1\n"
"X-Domain: woocommerce-subscriptions\n"
@@ -47,7 +47,7 @@ msgid "Subscription reports are incompatible with the %1$sWooCommerce data stora
msgstr ""
#: includes/admin/class-wcs-admin-reports.php:81
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:917
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:922
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php:1030
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php:1182
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-system-status.php:59
@@ -120,31 +120,31 @@ msgstr[0] ""
msgstr[1] ""
#. translators: 1$: count, 2$ and 3$ are opening and closing strong tags, respectively.
-#: includes/admin/reports/class-wcs-report-dashboard.php:216
+#: includes/admin/reports/class-wcs-report-dashboard.php:221
msgid "%2$s%1$s signup%3$s subscription signups this month"
msgid_plural "%2$s%1$s signups%3$s subscription signups this month"
msgstr[0] ""
msgstr[1] ""
#. translators: %s: formatted amount.
-#: includes/admin/reports/class-wcs-report-dashboard.php:224
+#: includes/admin/reports/class-wcs-report-dashboard.php:229
msgid "%s signup revenue this month"
msgstr ""
#. translators: 1$: count, 2$ and 3$ are opening and closing strong tags, respectively.
-#: includes/admin/reports/class-wcs-report-dashboard.php:232
+#: includes/admin/reports/class-wcs-report-dashboard.php:237
msgid "%2$s%1$s renewal%3$s subscription renewals this month"
msgid_plural "%2$s%1$s renewals%3$s subscription renewals this month"
msgstr[0] ""
msgstr[1] ""
#. translators: %s: formatted amount.
-#: includes/admin/reports/class-wcs-report-dashboard.php:240
+#: includes/admin/reports/class-wcs-report-dashboard.php:245
msgid "%s renewal revenue this month"
msgstr ""
#. translators: 1$: count, 2$ and 3$ are opening and closing strong tags, respectively.
-#: includes/admin/reports/class-wcs-report-dashboard.php:248
+#: includes/admin/reports/class-wcs-report-dashboard.php:253
msgid "%2$s%1$s cancellation%3$s subscription cancellations this month"
msgid_plural "%2$s%1$s cancellations%3$s subscription cancellations this month"
msgstr[0] ""
@@ -312,209 +312,209 @@ msgstr ""
msgid "The average line total on all orders for this product line item."
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-by-product.php:300
-#: includes/admin/reports/class-wcs-report-subscription-by-product.php:340
+#: includes/admin/reports/class-wcs-report-subscription-by-product.php:305
+#: includes/admin/reports/class-wcs-report-subscription-by-product.php:345
msgid "subscriptions"
msgstr ""
#. translators: %s: formatted total amount.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:488
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:493
msgid "%s signup revenue in this period"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:489
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:494
msgid "The sum of all subscription parent orders, including other items, fees, tax and shipping."
msgstr ""
#. translators: %s: formatted total amount.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:496
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:501
msgid "%s renewal revenue in this period"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:497
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:502
msgid "The sum of all renewal orders including tax and shipping."
msgstr ""
#. translators: %s: formatted total amount.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:504
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:509
msgid "%s resubscribe revenue in this period"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:505
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:510
msgid "The sum of all resubscribe orders including tax and shipping."
msgstr ""
#. translators: %s: formatted total amount.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:512
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:517
msgid "%s switch revenue in this period"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:513
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:518
msgid "The sum of all switch orders including tax and shipping."
msgstr ""
#. translators: 2: link opening tag, 1: subscription count and closing tag.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:521
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:526
msgid "%2$s %1$s new subscriptions"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:535
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:540
msgid "The number of subscriptions created during this period, either by being manually created, imported or a customer placing an order. This includes orders pending payment."
msgstr ""
#. translators: 2: link opening tag, 1: subscription count and closing tag.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:543
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:548
msgid "%2$s %1$s subscription signups"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:557
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:562
msgid "The number of subscriptions purchased in parent orders created during this period. This represents the new subscriptions created by customers placing an order via checkout."
msgstr ""
#. translators: 2: link opening tag, 1: subscription count and closing tag.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:565
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:570
msgid "%2$s %1$s subscription resubscribes"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:579
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:584
msgid "The number of resubscribe orders processed during this period."
msgstr ""
#. translators: 2: link opening tag, 1: subscription count and closing tag.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:587
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:592
msgid "%2$s %1$s subscription renewals"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:601
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:606
msgid "The number of renewal orders processed during this period."
msgstr ""
#. translators: 2: link opening tag, 1: subscription count and closing tag.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:609
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:614
msgid "%2$s %1$s subscription switches"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:623
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:628
msgid "The number of subscriptions upgraded, downgraded or cross-graded during this period."
msgstr ""
#. translators: 2: link opening tag, 1: subscription count and closing tag.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:631
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:636
msgid "%2$s %1$s subscription cancellations"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:645
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:650
msgid "The number of subscriptions cancelled by the customer or store manager during this period. The pre-paid term may not yet have ended during this period."
msgstr ""
#. translators: 2: link opening tag, 1: subscription count and closing tag.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:653
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:658
msgid "%2$s %1$s ended subscriptions"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:667
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:672
msgid "The number of subscriptions which have either expired or reached the end of the prepaid term if it was previously cancelled."
msgstr ""
#. translators: 2: link opening tag, 1: subscription count and closing tag.
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:678
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:683
msgid "%2$s %1$s current subscriptions"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:693
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:698
msgid "The number of subscriptions during this period with an end date in the future and a status other than pending."
msgstr ""
#. translators: %s: subscription net gain (with percentage).
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:710
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:715
msgid "%s net subscription gain"
msgstr ""
#. translators: %s: subscription net loss (with percentage).
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:713
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:718
msgid "%s net subscription loss"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:718
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:723
msgid "Change in subscriptions between the start and end of the period."
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:732
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:737
#: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:159
msgid "Year"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:733
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:738
#: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:160
msgid "Last Month"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:734
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:739
#: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:161
msgid "This Month"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:735
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:740
#: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:162
msgid "Last 7 Days"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:776
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:781
#: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:195
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:209
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:216
#: vendor/woocommerce/subscriptions-core/includes/admin/meta-boxes/views/html-related-orders-table.php:20
#: vendor/woocommerce/subscriptions-core/templates/myaccount/related-orders.php:23
#: vendor/woocommerce/subscriptions-core/templates/myaccount/related-orders.php:47
msgid "Date"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:780
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:785
#: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:199
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:213
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:220
msgid "Export CSV"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:839
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:844
msgid "Switched subscriptions"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:855
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:860
msgid "New Subscriptions"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:871
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:876
msgid "Subscriptions signups"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:886
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:891
msgid "Number of resubscribes"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:901
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:906
msgid "Number of renewals"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:933
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:938
msgid "Subscriptions Ended"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:949
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:954
msgid "Cancellations"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:964
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:969
msgid "Signup Totals"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:984
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:989
msgid "Resubscribe Totals"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:1004
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:1009
msgid "Renewal Totals"
msgstr ""
-#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:1024
+#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:1029
msgid "Switch Totals"
msgstr ""
@@ -529,7 +529,7 @@ msgstr ""
#. translators: %s: renewal count.
#: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:121
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:96
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:98
msgid "%s renewal orders"
msgstr ""
@@ -581,44 +581,44 @@ msgid "Recovered Renewal Revenue"
msgstr ""
#. translators: %s: formatted amount.
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:89
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:91
msgid "%s renewal income in this period"
msgstr ""
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:90
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:92
msgid "The sum of all the upcoming renewal orders, including items, fees, tax and shipping, for currently active subscriptions."
msgstr ""
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:97
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:99
msgid "The number of upcoming renewal orders, for currently active subscriptions."
msgstr ""
#. translators: %s: formatted amount.
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:103
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:105
msgid "%s average renewal amount"
msgstr ""
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:179
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:186
msgid "Next 12 Months"
msgstr ""
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:180
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:187
msgid "Next 30 Days"
msgstr ""
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:181
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:188
msgid "Next Month"
msgstr ""
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:182
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:189
msgid "Next 7 Days"
msgstr ""
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:247
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:254
msgid "Renewals count"
msgstr ""
-#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:256
+#: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:263
msgid "Renewals amount"
msgstr ""
@@ -1046,7 +1046,7 @@ msgstr ""
#: includes/class-wcs-call-to-action-button-text-manager.php:47
#: includes/class-wcs-call-to-action-button-text-manager.php:55
#: includes/class-wcs-call-to-action-button-text-manager.php:58
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:661
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:657
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-product.php:1204
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-product.php:1236
msgid "Sign up now"
@@ -1074,7 +1074,7 @@ msgid "Set a maximum number of times a customer can suspend their account for ea
msgstr ""
#: includes/class-wcs-customer-suspension-manager.php:111
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1333
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1334
msgid "Suspend"
msgstr ""
@@ -1240,16 +1240,16 @@ msgstr ""
msgid "Allow a subscription product with a $0 initial payment to be purchased without providing a payment method. The customer will be required to provide a payment method at the end of the initial period to keep the subscription active."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:80
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:74
msgid "Renew now"
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:100
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:94
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-resubscribe.php:74
msgid "That subscription does not exist. Has it been deleted?"
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:104
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:98
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-change-payment-gateway.php:232
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-resubscribe.php:78
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-resubscribe.php:129
@@ -1257,25 +1257,19 @@ msgstr ""
msgid "That doesn't appear to be one of your subscriptions."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:108
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:102
msgid "You can not renew this subscription early. Please contact us if you need assistance."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:114
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:108
msgid "Complete checkout to renew now."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:159
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:207
-msgctxt "used in order note as reason for why subscription status changed"
-msgid "Customer requested to renew early:"
-msgstr ""
-
#. translators: %s: order ID.
#. translators: placeholder is an order number.
#. translators: placeholder is an order ID.
#. translators: %s: order number.
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:318
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:222
#: includes/early-renewal/wcs-early-renewal-functions.php:136
#: vendor/woocommerce/subscriptions-core/includes/admin/meta-boxes/views/html-related-orders-row.php:17
#: vendor/woocommerce/subscriptions-core/includes/admin/meta-boxes/views/html-unknown-related-orders-row.php:18
@@ -1288,14 +1282,20 @@ msgid "#%s"
msgstr ""
#. translators: %s: order ID (linked to details page).
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:321
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:225
msgid "Order %s created to record early renewal."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:376
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:294
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:624
msgid "Cancel"
msgstr ""
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:592
+msgctxt "used in order note as reason for why subscription status changed"
+msgid "Customer requested to renew early:"
+msgstr ""
+
#: includes/early-renewal/class-wcs-early-renewal-manager.php:53
msgid "Early Renewal"
msgstr ""
@@ -1377,79 +1377,79 @@ msgstr ""
msgid "Find new gateways that %1$ssupport automatic subscription payments%2$s in the official %3$sWooCommerce Marketplace%4$s."
msgstr ""
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:59
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:64
msgid "Automatic Failed Payment Retries"
msgstr ""
#. translators: %d: retry count.
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:113
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:118
msgid "%d Pending Payment Retry"
msgid_plural "%d Pending Payment Retries"
msgstr[0] ""
msgstr[1] ""
#. translators: %d: retry count.
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:117
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:122
msgid "%d Processing Payment Retry"
msgid_plural "%d Processing Payment Retries"
msgstr[0] ""
msgstr[1] ""
#. translators: %d: retry count.
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:121
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:126
msgid "%d Failed Payment Retry"
msgid_plural "%d Failed Payment Retries"
msgstr[0] ""
msgstr[1] ""
#. translators: %d: retry count.
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:125
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:130
msgid "%d Successful Payment Retry"
msgid_plural "%d Successful Payment Retries"
msgstr[0] ""
msgstr[1] ""
#. translators: %d: retry count.
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:129
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:134
msgid "%d Cancelled Payment Retry"
msgid_plural "%d Cancelled Payment Retries"
msgstr[0] ""
msgstr[1] ""
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:157
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:162
msgid "Retry Failed Payments"
msgstr ""
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:158
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:163
msgid "Enable automatic retry of failed recurring payments"
msgstr ""
#. translators: 1,2: opening/closing link tags (to documentation).
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:163
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:168
msgid "Attempt to recover recurring revenue that would otherwise be lost due to payment methods being declined only temporarily. %1$sLearn more%2$s."
msgstr ""
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:185
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:190
msgctxt "label for the system status page"
msgid "Custom Retry Rules"
msgstr ""
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:193
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:198
msgctxt "label for the system status page"
msgid "Custom Retry Rule Class"
msgstr ""
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:201
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:206
msgctxt "label for the system status page"
msgid "Custom Raw Retry Rule"
msgstr ""
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:209
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:214
msgctxt "label for the system status page"
msgid "Custom Retry Rule"
msgstr ""
-#: includes/payment-retry/admin/class-wcs-retry-admin.php:217
+#: includes/payment-retry/admin/class-wcs-retry-admin.php:222
msgctxt "label for the system status page"
msgid "Retries Migration Status"
msgstr ""
@@ -1619,226 +1619,226 @@ msgstr ""
msgid "[{site_title}] Automatic payment failed for {order_number}, retry scheduled to run {retry_time}"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:203
+#: includes/switching/class-wc-subscriptions-switcher.php:195
msgid "You have a subscription to this product. Choosing a new subscription will replace your existing subscription."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:205
+#: includes/switching/class-wc-subscriptions-switcher.php:197
msgid "Choose a new subscription."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:245
-#: includes/switching/class-wc-subscriptions-switcher.php:1246
+#: includes/switching/class-wc-subscriptions-switcher.php:237
+#: includes/switching/class-wc-subscriptions-switcher.php:1238
msgid "Your cart contained an invalid subscription switch request. It has been removed."
msgid_plural "Your cart contained invalid subscription switch requests. They have been removed."
msgstr[0] ""
msgstr[1] ""
-#: includes/switching/class-wc-subscriptions-switcher.php:287
+#: includes/switching/class-wc-subscriptions-switcher.php:279
msgid "You have already subscribed to this product and it is limited to one per customer. You can not purchase the product again."
msgstr ""
#. translators: 1$: is the "You have already subscribed to this product" notice, 2$-4$: opening/closing link tags, 3$: an order number
-#: includes/switching/class-wc-subscriptions-switcher.php:296
+#: includes/switching/class-wc-subscriptions-switcher.php:288
msgid "%1$s Complete payment on %2$sOrder %3$s%4$s to be able to change your subscription."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:390
+#: includes/switching/class-wc-subscriptions-switcher.php:382
msgid "Switching"
msgstr ""
#. translators: placeholders are opening and closing link tags
-#: includes/switching/class-wc-subscriptions-switcher.php:393
+#: includes/switching/class-wc-subscriptions-switcher.php:385
msgid "Allow subscribers to switch (upgrade or downgrade) between different subscriptions. %1$sLearn more%2$s."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:401
+#: includes/switching/class-wc-subscriptions-switcher.php:393
msgid "Prorate Recurring Payment"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:402
+#: includes/switching/class-wc-subscriptions-switcher.php:394
msgid "When switching to a subscription with a different recurring payment or billing period, should the price paid for the existing billing period be prorated when switching to the new subscription?"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:410
-#: includes/switching/class-wc-subscriptions-switcher.php:444
+#: includes/switching/class-wc-subscriptions-switcher.php:402
+#: includes/switching/class-wc-subscriptions-switcher.php:436
msgctxt "when to allow a setting"
msgid "Never"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:411
+#: includes/switching/class-wc-subscriptions-switcher.php:403
msgctxt "when to prorate recurring fee when switching"
msgid "For Upgrades of Virtual Subscription Products Only"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:412
+#: includes/switching/class-wc-subscriptions-switcher.php:404
msgctxt "when to prorate recurring fee when switching"
msgid "For Upgrades of All Subscription Products"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:413
+#: includes/switching/class-wc-subscriptions-switcher.php:405
msgctxt "when to prorate recurring fee when switching"
msgid "For Upgrades & Downgrades of Virtual Subscription Products Only"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:414
+#: includes/switching/class-wc-subscriptions-switcher.php:406
msgctxt "when to prorate recurring fee when switching"
msgid "For Upgrades & Downgrades of All Subscription Products"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:419
+#: includes/switching/class-wc-subscriptions-switcher.php:411
msgid "Prorate Sign up Fee"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:420
+#: includes/switching/class-wc-subscriptions-switcher.php:412
msgid "When switching to a subscription with a sign up fee, you can require the customer pay only the gap between the existing subscription's sign up fee and the new subscription's sign up fee (if any)."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:428
+#: includes/switching/class-wc-subscriptions-switcher.php:420
msgctxt "when to prorate signup fee when switching"
msgid "Never (do not charge a sign up fee)"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:429
+#: includes/switching/class-wc-subscriptions-switcher.php:421
msgctxt "when to prorate signup fee when switching"
msgid "Never (charge the full sign up fee)"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:430
+#: includes/switching/class-wc-subscriptions-switcher.php:422
msgctxt "when to prorate signup fee when switching"
msgid "Always"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:435
+#: includes/switching/class-wc-subscriptions-switcher.php:427
msgid "Prorate Subscription Length"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:436
+#: includes/switching/class-wc-subscriptions-switcher.php:428
msgid "When switching to a subscription with a length, you can take into account the payments already completed by the customer when determining how many payments the subscriber needs to make for the new subscription."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:445
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:224
+#: includes/switching/class-wc-subscriptions-switcher.php:437
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:225
msgctxt "when to prorate first payment / subscription length"
msgid "For Virtual Subscription Products Only"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:446
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:225
+#: includes/switching/class-wc-subscriptions-switcher.php:438
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:226
msgctxt "when to prorate first payment / subscription length"
msgid "For All Subscription Products"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:451
+#: includes/switching/class-wc-subscriptions-switcher.php:443
msgid "Switch Button Text"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:452
+#: includes/switching/class-wc-subscriptions-switcher.php:444
msgid "Customise the text displayed on the button next to the subscription on the subscriber's account page. The default is \"Switch Subscription\", but you may wish to change this to \"Upgrade\" or \"Change Subscription\"."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:456
-#: includes/switching/class-wc-subscriptions-switcher.php:558
-#: includes/switching/class-wc-subscriptions-switcher.php:2650
+#: includes/switching/class-wc-subscriptions-switcher.php:448
+#: includes/switching/class-wc-subscriptions-switcher.php:550
+#: includes/switching/class-wc-subscriptions-switcher.php:2642
msgid "Upgrade or Downgrade"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:495
+#: includes/switching/class-wc-subscriptions-switcher.php:487
msgid "Allow Switching"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:502
+#: includes/switching/class-wc-subscriptions-switcher.php:494
msgctxt "when to allow switching"
msgid "Between Subscription Variations"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:506
+#: includes/switching/class-wc-subscriptions-switcher.php:498
msgctxt "when to allow switching"
msgid "Between Grouped Subscriptions"
msgstr ""
#. translators: %s: order number.
-#: includes/switching/class-wc-subscriptions-switcher.php:1155
+#: includes/switching/class-wc-subscriptions-switcher.php:1147
msgid "Switch order cancelled due to a new switch order being created #%s."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1374
+#: includes/switching/class-wc-subscriptions-switcher.php:1366
msgid "You can only switch to a subscription product."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1380
+#: includes/switching/class-wc-subscriptions-switcher.php:1372
msgid "We can not find your old subscription item."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1402
+#: includes/switching/class-wc-subscriptions-switcher.php:1394
msgid "You can not switch to the same subscription."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1449
+#: includes/switching/class-wc-subscriptions-switcher.php:1441
msgid "You can not switch this subscription. It appears you do not own the subscription."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1490
+#: includes/switching/class-wc-subscriptions-switcher.php:1482
msgid "There was an error locating the switch details."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1871
+#: includes/switching/class-wc-subscriptions-switcher.php:1863
msgctxt "a switch type"
msgid "Downgrade"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1874
+#: includes/switching/class-wc-subscriptions-switcher.php:1866
msgctxt "a switch type"
msgid "Upgrade"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1877
+#: includes/switching/class-wc-subscriptions-switcher.php:1869
msgctxt "a switch type"
msgid "Crossgrade"
msgstr ""
#. translators: %1: product subtotal, %2: HTML span tag, %3: direction (upgrade, downgrade, crossgrade), %4: closing HTML span tag
-#: includes/switching/class-wc-subscriptions-switcher.php:1882
+#: includes/switching/class-wc-subscriptions-switcher.php:1874
msgctxt "product subtotal string"
msgid "%1$s %2$s(%3$s)%4$s"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:1998
+#: includes/switching/class-wc-subscriptions-switcher.php:1990
msgid "The original subscription item being switched cannot be found."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:2000
+#: includes/switching/class-wc-subscriptions-switcher.php:1992
msgid "The item on the switch order cannot be found."
msgstr ""
#. translators: 1$: old item, 2$: new item when switching
-#: includes/switching/class-wc-subscriptions-switcher.php:2011
+#: includes/switching/class-wc-subscriptions-switcher.php:2003
msgctxt "used in order notes"
msgid "Customer switched from: %1$s to %2$s."
msgstr ""
#. translators: %s: new item name.
-#: includes/switching/class-wc-subscriptions-switcher.php:2014
+#: includes/switching/class-wc-subscriptions-switcher.php:2006
msgctxt "used in order notes"
msgid "Customer added %s."
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:2374
-#: includes/switching/class-wc-subscriptions-switcher.php:2927
+#: includes/switching/class-wc-subscriptions-switcher.php:2366
+#: includes/switching/class-wc-subscriptions-switcher.php:2919
msgid "Switch Order"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:2389
-#: includes/switching/class-wc-subscriptions-switcher.php:2942
+#: includes/switching/class-wc-subscriptions-switcher.php:2381
+#: includes/switching/class-wc-subscriptions-switcher.php:2934
msgid "Switched Subscription"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:2607
+#: includes/switching/class-wc-subscriptions-switcher.php:2599
msgctxt "add to cart button text while switching a subscription"
msgid "Switch subscription"
msgstr ""
-#: includes/switching/class-wc-subscriptions-switcher.php:2791
+#: includes/switching/class-wc-subscriptions-switcher.php:2783
#: vendor/woocommerce/subscriptions-core/wcs-functions.php:224
msgctxt "Subscription status"
msgid "Switched"
@@ -1850,7 +1850,7 @@ msgid "Switch subscription"
msgstr ""
#. translators: placeholder is a switch type.
-#: includes/switching/class-wcs-switch-cart-item.php:309
+#: includes/switching/class-wcs-switch-cart-item.php:315
msgid "Invalid switch type \"%s\". Switch must be one of: \"upgrade\", \"downgrade\" or \"crossgrade\"."
msgstr ""
@@ -2325,20 +2325,20 @@ msgid "Delete Permanently"
msgstr ""
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:326
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1721
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1722
msgctxt "an action on a subscription"
msgid "Activate"
msgstr ""
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:327
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1722
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1723
msgctxt "an action on a subscription"
msgid "Put on-hold"
msgstr ""
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:328
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1334
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1723
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1335
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1724
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-manager.php:1937
#: vendor/woocommerce/subscriptions-core/includes/wcs-user-functions.php:327
#: vendor/woocommerce/subscriptions-core/templates/myaccount/related-orders.php:78
@@ -2463,7 +2463,7 @@ msgstr[1] ""
#. translators: placeholder is the display name of a payment gateway a subscription was paid by
#. translators: %s: payment method.
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:646
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2048
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2047
msgid "Via %s"
msgstr ""
@@ -2531,7 +2531,7 @@ msgid "None"
msgstr ""
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1129
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2030
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2029
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-change-payment-method-admin.php:170
msgid "Manual Renewal"
msgstr ""
@@ -2546,47 +2546,47 @@ msgstr ""
msgid "Search for a customer…"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1332
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1333
#: vendor/woocommerce/subscriptions-core/includes/wcs-user-functions.php:311
msgid "Reactivate"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1335
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1336
msgid "Trash"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1336
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1337
msgid "Delete Permanently"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1355
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1356
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-product.php:768
msgid "Restore this item from the Trash"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1357
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1358
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-product.php:769
msgid "Restore"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1362
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1363
msgid "Move this item to the Trash"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1376
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1377
msgid "Delete this item permanently"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1387
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1388
msgid "Cancel Now"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1453
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1454
msgctxt "Used in order note. Reason why status changed."
msgid "Subscription status changed by bulk edit:"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1571
+#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1572
msgid "All"
msgstr ""
@@ -2886,140 +2886,140 @@ msgid "Read more"
msgstr ""
#. translators: %s: subscription status.
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:426
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:425
msgid "Unable to change subscription status to \"%s\"."
msgstr ""
#. translators: 1: subscription status, 2: error message.
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:549
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:548
msgid "Unable to change subscription status to \"%1$s\". Exception: %2$s"
msgstr ""
#. translators: 1: old subscription status 2: new subscription status
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:579
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:578
msgid "Status changed from %1$s to %2$s."
msgstr ""
#. translators: %s: new order status
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:593
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:592
msgid "Status set to %s."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:607
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:606
msgid "Error during subscription status transition."
msgstr ""
#. translators: placeholder is human time diff (e.g. "3 weeks")
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1223
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1222
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-manager.php:2387
msgid "In %s"
msgstr ""
#. translators: placeholder is human time diff (e.g. "3 weeks")
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1226
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1225
#: vendor/woocommerce/subscriptions-core/includes/wcs-formatting-functions.php:246
msgid "%s ago"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1233
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1232
msgid "Not yet ended"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1236
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1235
msgid "Not cancelled"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1241
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1240
msgctxt "original denotes there is no date to display"
msgid "-"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1349
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1348
msgid "The creation date of a subscription can not be deleted, only updated."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1352
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1351
msgid "The start date of a subscription can not be deleted, only updated."
msgstr ""
#. translators: %s: date type (e.g. "trial_end").
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1357
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1356
msgid "The %s date of a subscription can not be deleted. You must delete the order."
msgstr ""
#. translators: %d: subscription ID.
#. translators: %d: order ID.
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1366
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2471
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1365
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2470
msgid "Subscription #%d: "
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1780
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1779
msgid "Payment status marked complete."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1808
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1807
msgid "Payment failed."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1813
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1812
msgid "Subscription Cancelled: maximum number of failed payments reached."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1923
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:1922
msgid "The \"all\" value for $order_type parameter is deprecated. It was a misnomer, as it did not return resubscribe orders. It was also inconsistent with order type values accepted by wcs_get_subscription_orders(). Use array( \"parent\", \"renewal\", \"switch\" ) to maintain previous behaviour, or \"any\" to receive all order types, including switch and resubscribe."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2127
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2126
#: vendor/woocommerce/subscriptions-core/wcs-functions.php:835
msgid "Payment method meta must be an array."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2363
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2362
msgid "Invalid format. First parameter needs to be an array."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2367
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2366
msgid "Invalid data. First parameter was empty when passed to update_dates()."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2374
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2373
msgid "Invalid data. First parameter has a date that is not in the registered date types."
msgstr ""
#. translators: placeholder is date type (e.g. "end", "next_payment"...)
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2401
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2400
msgctxt "appears in an error message if date is wrong format"
msgid "Invalid %s date. The date must be of the format: \"Y-m-d H:i:s\"."
msgstr ""
#. translators: %s: date type (e.g. "end").
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2439
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2438
msgid "The %s date must occur after the cancellation date."
msgstr ""
#. translators: %s: date type (e.g. "end").
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2445
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2444
msgid "The %s date must occur after the last payment date."
msgstr ""
#. translators: %s: date type (e.g. "end").
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2450
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2449
msgid "The %s date must occur after the next payment date."
msgstr ""
#. translators: %s: date type (e.g. "end").
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2456
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2455
msgid "The %s date must occur after the trial end date."
msgstr ""
#. translators: %s: date type (e.g. "next_payment").
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2461
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2460
msgid "The %s date must occur after the start date."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2491
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:352
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2490
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:348
msgid "Backordered"
msgstr ""
@@ -3183,7 +3183,7 @@ msgid "Choose a new payment method.%s"
msgstr ""
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-change-payment-gateway.php:229
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-template-loader.php:105
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-template-loader.php:103
#: vendor/woocommerce/subscriptions-core/includes/wcs-helper-functions.php:286
msgid "Invalid Subscription."
msgstr ""
@@ -3249,28 +3249,28 @@ msgid "Please log in to your account below to choose a new payment method for yo
msgstr ""
#. translators: placeholder is an internal error number
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:208
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:396
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:204
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:392
msgid "Error %d: Unable to create subscription. Please try again."
msgstr ""
#. translators: placeholder is an internal error number
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:225
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:221
msgid "Error %d: Unable to add tax to subscription. Please try again."
msgstr ""
#. translators: placeholder is an internal error number
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:237
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:233
msgid "Error %d: Unable to create order. Please try again."
msgstr ""
#. Translators: Placeholders are opening and closing strong and link tags.
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:525
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:521
msgid "Purchasing a subscription product requires an account. Please go to the %1$sMy Account%2$s page to login or register."
msgstr ""
#. Translators: Placeholders are opening and closing strong and link tags.
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:528
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-checkout.php:524
msgid "Purchasing a subscription product requires an account. Please go to the %1$sMy Account%2$s page to login or contact us if you need assistance."
msgstr ""
@@ -3772,76 +3772,76 @@ msgstr ""
msgid "Date Changed"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:336
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:345
msgid "Your subscription will be activated when payment clears."
msgid_plural "Your subscriptions will be activated when payment clears."
msgstr[0] ""
msgstr[1] ""
#. translators: placeholders are opening and closing link tags
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:343
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:352
msgid "View the status of your subscription in %1$syour account%2$s."
msgid_plural "View the status of your subscriptions in %1$syour account%2$s."
msgstr[0] ""
msgstr[1] ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:406
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:415
msgid "Subscription Relationship"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:426
-msgid "Renewal Order"
-msgstr ""
-
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:428
-msgid "Resubscribe Order"
-msgstr ""
-
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:430
-msgid "Parent Order"
-msgstr ""
-
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:479
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:498
msgid "Payment completed on order after subscription was cancelled."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:715
-msgid "All orders types"
+#. translators: $1: opening link tag, $2: order number, $3: closing link tag
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:1060
+msgid "Subscription cancelled for refunded order %1$s#%2$s%3$s."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:718
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2327
msgctxt "An order type"
msgid "Original"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:719
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2328
msgctxt "An order type"
msgid "Subscription Parent"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:720
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2329
msgctxt "An order type"
msgid "Subscription Renewal"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:721
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2330
msgctxt "An order type"
msgid "Subscription Resubscribe"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:722
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2331
msgctxt "An order type"
msgid "Subscription Switch"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:723
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2332
msgctxt "An order type"
msgid "Non-subscription"
msgstr ""
-#. translators: $1: opening link tag, $2: order number, $3: closing link tag
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:1026
-msgid "Subscription cancelled for refunded order %1$s#%2$s%3$s."
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2341
+msgid "All orders types"
+msgstr ""
+
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2368
+msgid "Renewal Order"
+msgstr ""
+
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2370
+msgid "Resubscribe Order"
+msgstr ""
+
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-order.php:2372
+msgid "Parent Order"
msgstr ""
#. translators: %1$s refers to the price. This string is meant to prefix another string below, e.g. "$5 now, and $5 on March 15th each year"
@@ -3987,70 +3987,70 @@ msgstr ""
msgid "If a subscription is synchronised to a specific day of the week, month or year, charge a prorated amount for the subscription at the time of sign up."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:222
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:223
msgctxt "when to prorate first payment / subscription length"
msgid "Never (do not charge any recurring amount)"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:223
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:224
msgctxt "when to prorate first payment / subscription length"
msgid "Never (charge the full recurring amount at sign-up)"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:231
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:232
msgid "Sign-up grace period"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:232
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:233
msgctxt "there's a number immediately in front of this text"
msgid "days prior to Renewal Day"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:236
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:237
msgid "Subscriptions created within this many days prior to the Renewal Day will not be charged at sign-up. Set to zero for all new Subscriptions to be charged the full recurring amount. Must be a positive number."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:305
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:306
msgid "Month for Synchronisation"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:313
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:314
#: vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-synchronisation.php:36
#: vendor/woocommerce/subscriptions-core/templates/admin/html-variation-synchronisation.php:42
msgctxt "input field placeholder for day field for annual subscriptions"
msgid "Day"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:744
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:761
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:745
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:762
msgid "Do not synchronise"
msgstr ""
#. translators: placeholder is a day of the week
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:769
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:770
msgid "%s each week"
msgstr ""
#. translators: placeholder is a number of day with language specific suffix applied (e.g. "1st", "3rd", "5th", etc...)
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:775
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:776
msgid "%s day of the month"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:777
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:778
msgid "Last day of the month"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:825
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:826
msgid "Today!"
msgstr ""
#. translators: placeholder is a date
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:832
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:833
msgid "First payment prorated. Next payment: %s"
msgstr ""
#. translators: placeholder is a date
-#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:835
+#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-synchroniser.php:836
msgid "First payment: %s"
msgstr ""
@@ -4076,55 +4076,55 @@ msgid "Weekly"
msgstr ""
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-initial-payment.php:65
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:205
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:199
msgid "That doesn't appear to be your order."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:220
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:214
msgid "This order can no longer be paid because the corresponding subscription does not require payment at this time."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:241
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:235
msgid "Complete checkout to renew your subscription."
msgstr ""
#. translators: placeholder is an item name
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:324
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:318
msgid "The %s product has been deleted and can no longer be renewed. Please choose a new product or contact us for assistance."
msgstr ""
#. translators: %s is subscription's number
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:359
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:353
msgid "Subscription #%s has not been added to the cart."
msgstr ""
#. translators: %s is order's number
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:362
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:356
msgid "Order #%s has not been added to the cart."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:401
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:395
msgid "We couldn't find the original subscription for an item in your cart. The item was removed."
msgid_plural "We couldn't find the original subscriptions for items in your cart. The items were removed."
msgstr[0] ""
msgstr[1] ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:408
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:402
msgid "We couldn't find the original renewal order for an item in your cart. The item was removed."
msgid_plural "We couldn't find the original renewal orders for items in your cart. The items were removed."
msgstr[0] ""
msgstr[1] ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:694
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:681
msgid "All linked subscription items have been removed from the cart."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:723
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:710
msgctxt "Used in WooCommerce by removed item notification: \"_All linked subscription items were_ removed. Undo?\" Filter for item title."
msgid "All linked subscription items were"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:1529
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-cart-renewal.php:1526
msgctxt "The place order button text while renewing a subscription"
msgid "Renew subscription"
msgstr ""
@@ -4160,24 +4160,24 @@ msgstr ""
msgid "Ignore this error"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:46
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:47
msgid "Limit subscription"
msgstr ""
#. translators: placeholders are opening and closing link tags
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:48
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:49
msgid "Only allow a customer to have one subscription to this product. %1$sLearn more%2$s."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:50
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:51
msgid "Do not limit"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:51
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:52
msgid "Limit to one active subscription"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:52
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php:53
msgid "Limit to one of any status"
msgstr ""
@@ -4193,39 +4193,39 @@ msgstr ""
msgid "Allow customers to turn on and off automatic renewals from their View Subscription page."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:110
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:112
msgid "The deleted payment method was used for automatic subscription payments, we couldn't find an alternative token payment method token to change your subscriptions to."
msgstr ""
#. translators: 1: deleted token, 2: new token.
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:128
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:130
msgctxt "used in subscription note"
msgid "Payment method meta updated after customer deleted a token from their My Account page. Payment meta changed from %1$s to %2$s"
msgstr ""
#. translators: $1: the token/credit card label, 2$-3$: opening and closing strong and link tags
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:133
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:135
msgid "The deleted payment method was used for automatic subscription payments. To avoid failed renewal payments in future the subscriptions using this payment method have been updated to use your %1$s. To change the payment method of individual subscriptions go to your %2$sMy Account > Subscriptions%3$s page."
msgstr ""
#. translators: 1: token display name, 2: opening link tag, 4: closing link tag, 3: opening link tag.
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:188
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:190
msgid "Would you like to update your subscriptions to use this new payment method - %1$s?%2$sYes%4$s | %3$sNo%4$s"
msgstr ""
#. translators: 1: previous token, 2: new token.
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:229
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:231
msgctxt "used in subscription note"
msgid "Payment method meta updated after customer changed their default token and opted to update their subscriptions. Payment meta changed from %1$s to %2$s"
msgstr ""
#. translators: %1$s opening strong HTML tag, %2$s closing strong HTML tag.
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:251
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:253
msgid "That payment method cannot be deleted because it is linked to an automatic subscription. Please %1$sadd a payment method%2$s, before trying again."
msgstr ""
#. translators: %1$s opening strong and em HTML tags, %2$s closing em HTML tag, %3$s closing strong HTML tag.
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:257
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php:259
msgid "That payment method cannot be deleted because it is linked to an automatic subscription. Please choose a %1$sdefault%2$s payment method%3$s, before trying again."
msgstr ""
@@ -4339,7 +4339,7 @@ msgstr ""
msgid "Enable automatic payments"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/class-wcs-template-loader.php:105
+#: vendor/woocommerce/subscriptions-core/includes/class-wcs-template-loader.php:103
msgid "My Account"
msgstr ""
@@ -4443,12 +4443,12 @@ msgid "This will clear the persistent cache of all renewal, switch, resubscribe
msgstr ""
#. translators: %s: Order date
-#: vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php:244
+#: vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php:248
msgid "Subscription – %s"
msgstr ""
#. translators: %s: Order date
-#: vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php:244
+#: vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php:248
msgctxt "Order date parsed by DateTime::format"
msgid "M d, Y @ h:i A"
msgstr ""
@@ -4589,38 +4589,38 @@ msgctxt "Default email subject for email to customer on completed renewal order"
msgid "Your %1$s renewal order from %2$s is complete"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-renewal-order.php:38
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-renewal-order.php:177
msgctxt "Default email heading for email with downloadable files in it"
msgid "Your subscription renewal order is complete - download your files"
msgstr ""
#. translators: $1: {blogname}, $2: {order_date}, variables will be substituted when email is sent out
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-renewal-order.php:40
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-renewal-order.php:182
msgctxt "Default email subject for email with downloadable files in it"
msgid "Your %1$s subscription renewal order from %2$s is complete - download your files"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:26
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:31
msgid "Subscription Switch Complete"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:27
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:32
msgid "Subscription switch complete emails are sent to the customer when a subscription is switched successfully."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:30
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:35
msgid "Your subscription change is complete"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:31
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:36
msgid "Your {blogname} subscription change from {order_date} is complete"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:38
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:186
msgid "Your subscription change is complete - download your files"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:39
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php:190
msgid "Your {blogname} subscription change from {order_date} is complete - download your files"
msgstr ""
@@ -4701,16 +4701,16 @@ msgstr ""
msgid "[{blogname}] New subscription renewal order ({order_number}) - {order_date}"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php:22
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php:25
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php:27
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php:30
msgid "Subscription Switched"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php:23
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php:28
msgid "Subscription switched emails are sent when a customer switches a subscription."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php:26
+#: vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php:31
msgid "[{blogname}] Subscription Switched ({order_number}) - {order_date}"
msgstr ""
@@ -5949,35 +5949,35 @@ msgid "Invalid data. Type of copy is not a string."
msgstr ""
#. translators: placeholders are strftime() strings.
-#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:250
+#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:253
msgctxt "Used in subscription post title. \"Subscription renewal order - \""
msgid "%b %d, %Y @ %I:%M %p"
msgstr ""
#. translators: placeholder is a date.
-#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:255
+#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:258
msgid "Subscription Renewal Order – %s"
msgstr ""
#. translators: placeholder is a date.
-#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:259
+#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:262
msgid "Resubscribe Order – %s"
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:278
+#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:281
msgid "$type passed to the function was not a string."
msgstr ""
#. translators: placeholder is an order type.
-#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:283
+#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:286
msgid "\"%s\" is not a valid new order type."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:534
+#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:537
msgid "Invalid data. No valid subscription / order was passed in."
msgstr ""
-#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:538
+#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:541
msgid "Invalid data. No valid item id was passed in."
msgstr ""
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 4fabaf3..39bd684 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInit06e38849db55c37d72e7daef1d52dece::getLoader();
+return ComposerAutoloaderInit59c7b20d3f201de5581a0bc09b6c2289::getLoader();
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 0cb80c8..be67390 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit06e38849db55c37d72e7daef1d52dece
+class ComposerAutoloaderInit59c7b20d3f201de5581a0bc09b6c2289
{
private static $loader;
@@ -24,12 +24,12 @@ class ComposerAutoloaderInit06e38849db55c37d72e7daef1d52dece
require __DIR__ . '/platform_check.php';
- spl_autoload_register(array('ComposerAutoloaderInit06e38849db55c37d72e7daef1d52dece', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInit59c7b20d3f201de5581a0bc09b6c2289', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
- spl_autoload_unregister(array('ComposerAutoloaderInit06e38849db55c37d72e7daef1d52dece', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInit59c7b20d3f201de5581a0bc09b6c2289', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
- call_user_func(\Composer\Autoload\ComposerStaticInit06e38849db55c37d72e7daef1d52dece::getInitializer($loader));
+ call_user_func(\Composer\Autoload\ComposerStaticInit59c7b20d3f201de5581a0bc09b6c2289::getInitializer($loader));
$loader->register(true);
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 1aa5604..04f4f08 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace Composer\Autoload;
-class ComposerStaticInit06e38849db55c37d72e7daef1d52dece
+class ComposerStaticInit59c7b20d3f201de5581a0bc09b6c2289
{
public static $prefixLengthsPsr4 = array (
'C' =>
@@ -129,9 +129,9 @@ class ComposerStaticInit06e38849db55c37d72e7daef1d52dece
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit06e38849db55c37d72e7daef1d52dece::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInit06e38849db55c37d72e7daef1d52dece::$prefixDirsPsr4;
- $loader->classMap = ComposerStaticInit06e38849db55c37d72e7daef1d52dece::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticInit59c7b20d3f201de5581a0bc09b6c2289::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInit59c7b20d3f201de5581a0bc09b6c2289::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit59c7b20d3f201de5581a0bc09b6c2289::$classMap;
}, null, ClassLoader::class);
}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index f689bd4..896edf6 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -156,17 +156,17 @@
},
{
"name": "woocommerce/subscriptions-core",
- "version": "6.2.0",
- "version_normalized": "6.2.0.0",
+ "version": "6.4.0",
+ "version_normalized": "6.4.0.0",
"source": {
"type": "git",
"url": "https://github.com/Automattic/woocommerce-subscriptions-core.git",
- "reference": "47cfe92d60239d1b8b12a5f640a3772b0e4e1272"
+ "reference": "a94c9aab6d47f32461974ed09a4d3cad590f25b0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Automattic/woocommerce-subscriptions-core/zipball/47cfe92d60239d1b8b12a5f640a3772b0e4e1272",
- "reference": "47cfe92d60239d1b8b12a5f640a3772b0e4e1272",
+ "url": "https://api.github.com/repos/Automattic/woocommerce-subscriptions-core/zipball/a94c9aab6d47f32461974ed09a4d3cad590f25b0",
+ "reference": "a94c9aab6d47f32461974ed09a4d3cad590f25b0",
"shasum": ""
},
"require": {
@@ -179,7 +179,7 @@
"woocommerce/woocommerce-sniffs": "0.1.0",
"yoast/phpunit-polyfills": "1.0.3"
},
- "time": "2023-08-10T23:43:48+00:00",
+ "time": "2023-10-18T03:32:50+00:00",
"type": "wordpress-plugin",
"extra": {
"phpcodesniffer-search-depth": 2
@@ -209,7 +209,7 @@
"description": "Sell products and services with recurring payments in your WooCommerce Store.",
"homepage": "https://github.com/Automattic/woocommerce-subscriptions-core",
"support": {
- "source": "https://github.com/Automattic/woocommerce-subscriptions-core/tree/6.2.0",
+ "source": "https://github.com/Automattic/woocommerce-subscriptions-core/tree/6.4.0",
"issues": "https://github.com/Automattic/woocommerce-subscriptions-core/issues"
},
"install-path": "../woocommerce/subscriptions-core"
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index f30f995..e2b887e 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -1,9 +1,9 @@
array(
'name' => 'woocommerce/woocommerce-subscriptions',
- 'pretty_version' => 'dev-release/5.5.0',
- 'version' => 'dev-release/5.5.0',
- 'reference' => '9c5944431141ef588b010663dd1539c41d12cf69',
+ 'pretty_version' => 'dev-release/5.6.0',
+ 'version' => 'dev-release/5.6.0',
+ 'reference' => '434da4e19c4fde75e431338fa82595320bd5b6c1',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -32,18 +32,18 @@
),
),
'woocommerce/subscriptions-core' => array(
- 'pretty_version' => '6.2.0',
- 'version' => '6.2.0.0',
- 'reference' => '47cfe92d60239d1b8b12a5f640a3772b0e4e1272',
+ 'pretty_version' => '6.4.0',
+ 'version' => '6.4.0.0',
+ 'reference' => 'a94c9aab6d47f32461974ed09a4d3cad590f25b0',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../woocommerce/subscriptions-core',
'aliases' => array(),
'dev_requirement' => false,
),
'woocommerce/woocommerce-subscriptions' => array(
- 'pretty_version' => 'dev-release/5.5.0',
- 'version' => 'dev-release/5.5.0',
- 'reference' => '9c5944431141ef588b010663dd1539c41d12cf69',
+ 'pretty_version' => 'dev-release/5.6.0',
+ 'version' => 'dev-release/5.6.0',
+ 'reference' => '434da4e19c4fde75e431338fa82595320bd5b6c1',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
diff --git a/vendor/woocommerce/subscriptions-core/assets/css/about.css b/vendor/woocommerce/subscriptions-core/assets/css/about.css
index 08915f7..5afb80f 100644
--- a/vendor/woocommerce/subscriptions-core/assets/css/about.css
+++ b/vendor/woocommerce/subscriptions-core/assets/css/about.css
@@ -27,7 +27,7 @@ ul {
}
.wcs-badge {
position: relative;
- background: #9c5d90;
+ background: #7F54B3;
text-rendering: optimizeLegibility;
padding-top: 150px;
height: 52px;
@@ -35,7 +35,7 @@ ul {
font-weight: 600;
font-size: 14px;
text-align: center;
- color: #ddc8d9;
+ color: #fff;
margin: 5px 0 0 0;
-webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.2 );
box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.2 );
@@ -92,44 +92,10 @@ ul {
}
.woocommerce-message {
position: relative;
- border-left-color: #cc99c2 !important;
+ border-left-color: #7F54B3 !important;
overflow: hidden;
}
-.woocommerce-message a.button-primary,
-p.woocommerce-actions a.button-primary,
-.woocommerce-message a.button-primary:focus,
-p.woocommerce-actions a.button-primary:focus,
-.woocommerce-message a.button-primary:active,
-p.woocommerce-actions a.button-primary:active {
- background: #b366a4;
- border-color: #b366a4;
- -webkit-box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.25 ),
- 0 1px 0 rgba( 0, 0, 0, 0.15 );
- box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.25 ),
- 0 1px 0 rgba( 0, 0, 0, 0.15 );
- text-shadow: 0 -1px 1px #b366a4, 1px 0 1px #b366a4, 0 1px 1px #b366a4,
- -1px 0 1px #b366a4;
- color: #fff;
- text-decoration: none;
-}
-
-.woocommerce-message a.button-primary:hover,
-p.woocommerce-actions a.button-primary:hover {
- background: #bb77ae;
- border-color: #aa559a;
- -webkit-box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.25 ),
- 0 1px 0 rgba( 0, 0, 0, 0.15 );
- box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.25 ),
- 0 1px 0 rgba( 0, 0, 0, 0.15 );
-}
-
-.woocommerce-message a.button-primary:active,
-p.woocommerce-actions a.button-primary:active {
- background: #aa559a;
- border-color: #aa559a;
-}
-
.woocommerce-message a.skip,
p.woocommerce-actions a.skip {
opacity: 0.7;
diff --git a/vendor/woocommerce/subscriptions-core/assets/css/admin.css b/vendor/woocommerce/subscriptions-core/assets/css/admin.css
index 3918c76..1f30e6a 100644
--- a/vendor/woocommerce/subscriptions-core/assets/css/admin.css
+++ b/vendor/woocommerce/subscriptions-core/assets/css/admin.css
@@ -2,19 +2,6 @@
.woocommerce-subscriptions-activated p a.button-primary {
display: inline-block;
}
-.woocommerce-subscriptions-activated a.button-primary:hover {
- background: #bb77ae;
- border-color: #aa559a;
- -webkit-box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.25 ),
- 0 1px 0 rgba( 0, 0, 0, 0.15 );
- box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.25 ),
- 0 1px 0 rgba( 0, 0, 0, 0.15 );
-}
-.woocommerce-subscriptions-activated a.button-primary:active,
-.woocommerce-subscriptions-activated a.button-primary:active {
- background: #aa559a;
- border-color: #aa559a;
-}
/* Subscriptions Admin Page */
.woocommerce_page_wc-orders--shop_subscription .tablenav input,
@@ -314,6 +301,25 @@ a.close-subscriptions-search {
width: auto !important;
}
+.wc_input_subscription_payment_sync +.select2,
+.wc_input_subscription_length +.select2,
+#_subscription_limit +.select2 {
+ min-width: 180px;
+ width: 80% !important;
+ margin-bottom: 4px;
+}
+
+.wc_input_subscription_period + .select2,
+.wc_input_subscription_trial_period + .select2 {
+ width: 30.75% !important;
+ margin-top: 0;
+}
+
+.wc_input_subscription_period_interval + .select2 {
+ margin-right: 3.8%;
+ width: 30.75% !important;
+}
+
.variable_subscription_sync p._subscription_payment_sync_field {
padding-left: 0 !important;
}
@@ -360,7 +366,32 @@ a.close-subscriptions-search {
.wc_input_subscription_period_interval {
max-width: 33%;
float: left;
+ margin-right: 2px;
}
+
+#variable_product_options .select2 {
+ margin: 2px 2px 0 0;
+}
+
+#variable_product_options
+ .select2-container
+ .select2-selection--single {
+ min-height: 40px;
+}
+
+#variable_product_options
+ .select2-container
+ .select2-selection--single
+ .select2-selection__rendered {
+ line-height: 36px;
+}
+#variable_product_options
+ .select2-container
+ .select2-selection--single
+ .select2-selection__arrow {
+ height: 36px;
+}
+
.variable_subscription_pricing_2_3 .wc_input_subscription_price {
clear: left;
}
@@ -735,7 +766,7 @@ table.wp-list-table .subscription_renewal_order::after {
height: 100%;
text-align: center;
content: '\e018';
- color: #a46497;
+ color: var(--wp-admin-theme-color);
}
table.wc_gateways .renewals .tips {
diff --git a/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js b/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js
index b8c7956..b21a474 100644
--- a/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js
+++ b/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js
@@ -40,21 +40,14 @@ jQuery( function ( $ ) {
'hide_if_variable-subscription'
);
- /**
- * WC core will hide and show product specific fields in show_and_hide_panels(), however that function only runs on specific events, but not
- * when variations are added or loaded. To make sure our subscription-related fields aren't shown by default when a variation is added, we set
- * subscription pricing elements "base" cases here.
- *
- * Note: show() being called on the 'hide_if_' fields and vice versa is intentional. All fields are set in their inverse state first, and
- * then shown/hidden by product type afterwards.
- */
- $( '.hide_if_variable-subscription' ).show();
- $( '.show_if_variable-subscription' ).hide();
+ var product_type = $( 'select#product-type' ).val();
- if ( $( 'select#product-type' ).val() == 'variable-subscription' ) {
+ if ( 'variable-subscription' === product_type ) {
+ // Hide and show subscription fields when variable subscription is selected
$( 'input#_downloadable' ).prop( 'checked', false );
$( 'input#_virtual' ).prop( 'checked', false );
+ // Variable subscriptions inherit fields from variable products.
$( '.show_if_variable' ).show();
$( '.hide_if_variable' ).hide();
$( '.show_if_variable-subscription' ).show();
@@ -67,14 +60,7 @@ jQuery( function ( $ ) {
.addClass( 'form-row-full' )
.removeClass( 'form-row-last' );
} else {
- if ( 'variable' === $( 'select#product-type' ).val() ) {
- $( '.show_if_variable-subscription' ).hide();
- $( '.show_if_variable' ).show();
- $( '.hide_if_variable' ).hide();
- $.showOrHideStockFields();
- }
-
- if ( 'subscription' === $( 'select#product-type' ).val() ) {
+ if ( 'subscription' === product_type ) {
$( '.show_if_subscription' ).show();
$( '.hide_if_subscription' ).hide();
}
diff --git a/vendor/woocommerce/subscriptions-core/build/index.asset.php b/vendor/woocommerce/subscriptions-core/build/index.asset.php
index e0de4c8..9dbe71f 100644
--- a/vendor/woocommerce/subscriptions-core/build/index.asset.php
+++ b/vendor/woocommerce/subscriptions-core/build/index.asset.php
@@ -1 +1 @@
- array('wc-blocks-checkout', 'wc-price-format', 'wc-settings', 'wp-element', 'wp-i18n', 'wp-plugins'), 'version' => '7855adadf2c3ec0499bc9a7854758556');
\ No newline at end of file
+ array('wc-blocks-checkout', 'wc-price-format', 'wc-settings', 'wp-element', 'wp-i18n', 'wp-plugins'), 'version' => '5386ce4810e198e8d50d4e1491067c34');
\ No newline at end of file
diff --git a/vendor/woocommerce/subscriptions-core/build/index.js b/vendor/woocommerce/subscriptions-core/build/index.js
index 6267c48..1b22236 100644
--- a/vendor/woocommerce/subscriptions-core/build/index.js
+++ b/vendor/woocommerce/subscriptions-core/build/index.js
@@ -14,7 +14,7 @@ Object(l.__)("Recurring total every 2nd %1$s","woocommerce-subscriptions"),n);ca
/* Translators: %1$s is week, month, year */
Object(l.__)("Recurring total every 3rd %1$s","woocommerce-subscriptions"),n);default:return Object(l.sprintf)(
/* Translators: %1$d is number of weeks, months, days, years. %2$s is week, month, year */
-Object(l.__)("Recurring total every %1$dth %2$s","woocommerce-subscriptions"),t,n)}}({billingInterval:n,billingPeriod:c});return Object(r.createElement)(i.TotalsItem,{className:"wcs-recurring-totals-panel__title",currency:t,label:u,value:a,description:Object(r.createElement)(f,{nextPaymentDate:o,subscriptionLength:s,billingInterval:n,billingPeriod:c})})},j=function(e){var t,n,c,o=e.subscription,s=e.needsShipping,u=e.calculatedShipping,p=o.totals,b=o.billing_interval,m=o.billing_period,f=o.next_payment_date,j=o.subscription_length,w=o.shipping_rates;if(!f)return null;var v=null==w||null===(t=w[0])||void 0===t||null===(n=t.shipping_rates)||void 0===n||null===(c=n.find((function(e){return e.selected})))||void 0===c?void 0:c.name,y=Object(a.getCurrencyFromPriceResponse)(p);return Object(r.createElement)("div",{className:"wcs-recurring-totals-panel"},Object(r.createElement)(O,{billingInterval:b,billingPeriod:m,nextPaymentDate:f,subscriptionLength:j,totals:parseInt(p.total_price,10),currency:y}),Object(r.createElement)(i.Panel,{className:"wcs-recurring-totals-panel__details",initialOpen:!1,title:Object(l.__)("Details","woocommerce-subscriptions")},Object(r.createElement)(i.TotalsWrapper,null,Object(r.createElement)(i.Subtotal,{currency:y,values:p}),Object(r.createElement)(d,{currency:y,values:p})),Object(r.createElement)(i.TotalsWrapper,null,Object(r.createElement)(_,{currency:y,needsShipping:s,calculatedShipping:u,values:p,selectedRate:v})),!g&&Object(r.createElement)(i.TotalsWrapper,null,Object(r.createElement)(i.TotalsTaxes,{currency:y,values:p})),Object(r.createElement)(i.TotalsWrapper,null,Object(r.createElement)(i.TotalsItem,{className:"wcs-recurring-totals-panel__details-total",currency:y,label:Object(l.__)("Total","woocommerce-subscriptions"),value:parseInt(p.total_price,10)}))))},w=function(e){var t=e.extensions,n=e.cart,c=t.subscriptions,i=n.cartNeedsShipping,o=n.cartHasCalculatedShipping;return c&&0!==c.length?c.map((function(e){var t=e.key,n=s()(e,["key"]);return Object(r.createElement)(j,{subscription:n,needsShipping:i,calculatedShipping:o,key:t})})):null},v=function(e){var t=e.extensions,n=e.collapsible,c=e.collapse,i=e.showItems,o=e.noResultsMessage,l=e.renderOption,a=e.components,u=t.subscriptions,p=void 0===u?[]:u,b=a.ShippingRatesControlPackage,m=Object(r.useMemo)((function(){return Object.values(p).map((function(e){return e.shipping_rates})).filter(Boolean).flat()}),[p]),g=Object(r.useMemo)((function(){return 1 Subscriptions list table.
* Fix - Ensure subscription checkout and cart block integrations are loaded on store environments where WooPayments is not enabled.
diff --git a/vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php b/vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php
index 92f68bd..d25f02f 100644
--- a/vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php
+++ b/vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php
@@ -317,13 +317,13 @@ class WC_Subscriptions_Admin {
-
=' ) ) {
- add_action( 'woocommerce_store_api_checkout_update_order_meta', array( &$this, 'set_order_item_id' ) );
- } else {
- add_action( 'woocommerce_blocks_checkout_update_order_meta', array( &$this, 'set_order_item_id' ) );
- }
+ add_action( 'woocommerce_store_api_checkout_update_order_meta', array( &$this, 'set_order_item_id' ) );
// Don't display cart item key meta stored above on the Edit Order screen
add_action( 'woocommerce_hidden_order_itemmeta', array( &$this, 'hidden_order_itemmeta' ), 10 );
@@ -416,6 +410,10 @@ class WCS_Cart_Renewal {
* Restore renewal flag when cart is reset and modify Product object with renewal order related info
*
* @since 1.0.0 - Migrated from WooCommerce Subscriptions v2.0
+ *
+ * @param array $cart_item_session_data Cart item session data.
+ * @param array $cart_item Cart item data.
+ * @param string $key Cart item key.
*/
public function get_cart_item_from_session( $cart_item_session_data, $cart_item, $key ) {
@@ -429,7 +427,23 @@ class WCS_Cart_Renewal {
if ( $subscription ) {
$subscription_items = $subscription->get_items();
- $item_to_renew = $subscription_items[ $cart_item_session_data[ $this->cart_item_key ]['line_item_id'] ];
+
+ /**
+ * Find the subscription or order line item that represents this cart item.
+ *
+ * If cart item data correctly records a valid line item ID, use that to find the line item.
+ * Otherwise, use the cart item key stored in line item meta.
+ */
+ if ( isset( $subscription_items[ $cart_item_session_data[ $this->cart_item_key ]['line_item_id'] ] ) ) {
+ $item_to_renew = $subscription_items[ $cart_item_session_data[ $this->cart_item_key ]['line_item_id'] ];
+ } else {
+ foreach ( $subscription_items as $item ) {
+ if ( $item->get_meta( '_cart_item_key_' . $this->cart_item_key, true ) === $key ) {
+ $item_to_renew = $item;
+ break;
+ }
+ }
+ }
$price = $item_to_renew['line_subtotal'];
@@ -635,33 +649,6 @@ class WCS_Cart_Renewal {
return $actions;
}
- /**
- * When a failed renewal order is being paid for via checkout, make sure WC_Checkout::create_order() preserves its
- * status as 'failed' until it is paid. By default, it will always set it to 'pending', but we need it left as 'failed'
- * so that we can correctly identify the status change in @see self::maybe_change_subscription_status().
- *
- * @param string Default order status for orders paid for via checkout. Default 'pending'
- * @since 1.0.0 - Migrated from WooCommerce Subscriptions v2.0
- */
- public function maybe_preserve_order_status( $order_status ) {
-
- if ( null !== WC()->session && 'failed' !== $order_status ) {
-
- $order_id = absint( WC()->session->order_awaiting_payment );
-
- // Guard against infinite loops in WC 3.0+ where default order staus is set in WC_Abstract_Order::__construct()
- remove_filter( 'woocommerce_default_order_status', array( &$this, __FUNCTION__ ), 10 );
-
- if ( $order_id > 0 && ( $order = wc_get_order( $order_id ) ) && wcs_order_contains_renewal( $order ) && $order->has_status( 'failed' ) ) {
- $order_status = 'failed';
- }
-
- add_filter( 'woocommerce_default_order_status', array( &$this, __FUNCTION__ ) );
- }
-
- return $order_status;
- }
-
/**
* Removes all the linked renewal/resubscribe items from the cart if a renewal/resubscribe item is removed.
*
@@ -946,7 +933,7 @@ class WCS_Cart_Renewal {
*/
public function product_addons_adjust_price( $adjust_price, $cart_item ) {
- if ( true === $adjust_price && isset( $cart_item[ $this->cart_item_key ] ) ) {
+ if ( true === $adjust_price && isset( $cart_item[ $this->cart_item_key ] ) && $this->should_honor_subscription_prices( $cart_item ) ) {
$adjust_price = false;
}
@@ -979,10 +966,19 @@ class WCS_Cart_Renewal {
* order items haven't changed by checking for a cart hash on the order, so we need to set
* that here. @see WC_Checkout::create_order()
*
+ * @param WC_Order|int $order The order object or order ID.
+ *
* @since 1.0.0 - Migrated from WooCommerce Subscriptions v2.0.14
*/
- protected function set_cart_hash( $order_id ) {
- $order = wc_get_order( $order_id );
+ protected function set_cart_hash( $order ) {
+
+ if ( ! is_a( $order, 'WC_Abstract_Order' ) ) {
+ $order = wc_get_order( $order );
+
+ if ( ! $order ) {
+ return;
+ }
+ }
// Use cart hash generator introduced in WooCommerce 3.6
if ( is_callable( array( WC()->cart, 'get_cart_hash' ) ) ) {
@@ -991,7 +987,8 @@ class WCS_Cart_Renewal {
$cart_hash = md5( json_encode( wc_clean( WC()->cart->get_cart_for_session() ) ) . WC()->cart->total );
}
- wcs_set_objects_property( $order, 'cart_hash', $cart_hash );
+ $order->set_cart_hash( $cart_hash );
+ $order->save();
}
/**
@@ -1494,7 +1491,7 @@ class WCS_Cart_Renewal {
/**
- * Deteremines if the cart should honor the granfathered subscription/order line item total.
+ * Determines if the cart should honor the grandfathered subscription/order line item total.
*
* @since 1.0.0 - Migrated from WooCommerce Subscriptions v3.0.10
*
@@ -1590,6 +1587,53 @@ class WCS_Cart_Renewal {
return current_user_can( 'pay_for_order', $order->get_id() );
}
+ /**
+ * Sets the order cart hash when paying for a renewal order via the Block Checkout.
+ *
+ * This function is hooked onto the 'woocommerce_order_has_status' filter, is only applied during REST API requests, only applies to the
+ * 'checkout-draft' status (which only Block Checkout orders use) and to renewal orders that are currently being paid for in the cart.
+ * All other order statuses, orders and scenarios remain unaffected by this function.
+ *
+ * This function is necessary to override the default logic in @see DraftOrderTrait::is_valid_draft_order().
+ * This function behaves similarly to @see WCS_Cart_Renewal::update_cart_hash() for the standard checkout and is hooked onto the 'woocommerce_create_order' filter.
+ *
+ * @param bool $has_status Whether the order has the status.
+ * @param WC_Order $order The order.
+ * @param string $status The status to check.
+ *
+ * @return bool Whether the order has the status. Unchanged by this function.
+ */
+ public function set_renewal_order_cart_hash_on_block_checkout( $has_status, $order, $status ) {
+ /**
+ * We only need to update the order's cart hash when the has_status() check is for 'checkout-draft' (indicating
+ * this is the status check in DraftOrderTrait::is_valid_draft_order()) and the order doesn't have that status. Orders
+ * which already have the checkout-draft status don't need to be updated to bypass the checkout block logic.
+ */
+ if ( $has_status || 'checkout-draft' !== $status ) {
+ return $has_status;
+ }
+
+ /**
+ * This function is only concerned with updating the order cart hash during REST API requests - which is the request
+ * context where the Store API Checkout Block validates the order for payment resumption.
+ */
+ if ( ! WC()->is_rest_api_request() ) {
+ return $has_status;
+ }
+
+ // If the order being validated is the order in the cart, then we need to update the cart hash so it can be resumed.
+ if ( $order && $order->get_id() === WC()->session->get( 'store_api_draft_order', 0 ) ) {
+ $cart_order = $this->get_order();
+
+ if ( $cart_order && $cart_order->get_id() === $order->get_id() ) {
+ // Note: We need to pass the order object so the order instance WooCommerce uses will have the updated hash.
+ $this->set_cart_hash( $order );
+ }
+ }
+
+ return $has_status;
+ }
+
/* Deprecated */
/**
@@ -1765,4 +1809,35 @@ class WCS_Cart_Renewal {
}
}
}
+
+ /**
+ * When a failed renewal order is being paid for via checkout, make sure WC_Checkout::create_order() preserves its
+ * status as 'failed' until it is paid. By default, it will always set it to 'pending', but we need it left as 'failed'
+ * so that we can correctly identify the status change in @see self::maybe_change_subscription_status().
+ *
+ * @param string Default order status for orders paid for via checkout. Default 'pending'
+ * @since 1.0.0 - Migrated from WooCommerce Subscriptions v2.0
+ *
+ * @deprecated 6.3.0
+ */
+ public function maybe_preserve_order_status( $order_status ) {
+ wcs_deprecated_function( __METHOD__, '6.3.0' );
+ if ( null !== WC()->session && 'failed' !== $order_status ) {
+
+ $order_id = absint( WC()->session->order_awaiting_payment );
+
+ // Guard against infinite loops in WC 3.0+ where default order staus is set in WC_Abstract_Order::__construct()
+ remove_filter( 'woocommerce_default_order_status', array( &$this, __FUNCTION__ ), 10 );
+
+ $order = $order_id > 0 ? wc_get_order( $order_id ) : null;
+
+ if ( $order && wcs_order_contains_renewal( $order ) && $order->has_status( 'failed' ) ) {
+ $order_status = 'failed';
+ }
+
+ add_filter( 'woocommerce_default_order_status', array( &$this, __FUNCTION__ ) );
+ }
+
+ return $order_status;
+ }
}
diff --git a/vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php b/vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php
index f5bcd22..df9c120 100644
--- a/vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php
+++ b/vendor/woocommerce/subscriptions-core/includes/class-wcs-limiter.php
@@ -43,6 +43,7 @@ class WCS_Limiter {
woocommerce_wp_select(
array(
'id' => '_subscription_limit',
+ 'class' => 'wc-enhanced-select',
'label' => __( 'Limit subscription', 'woocommerce-subscriptions' ),
// translators: placeholders are opening and closing link tags
'description' => sprintf( __( 'Only allow a customer to have one subscription to this product. %1$sLearn more%2$s.', 'woocommerce-subscriptions' ), '', '' ),
diff --git a/vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php b/vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php
index 330b4f0..6a4e174 100644
--- a/vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php
+++ b/vendor/woocommerce/subscriptions-core/includes/class-wcs-my-account-payment-methods.php
@@ -21,7 +21,9 @@ class WCS_My_Account_Payment_Methods {
}
add_filter( 'woocommerce_payment_methods_list_item', array( __CLASS__, 'flag_subscription_payment_token_deletions' ), 10, 2 );
- add_action( 'woocommerce_payment_token_deleted', array( __CLASS__, 'maybe_update_subscriptions_payment_meta' ), 10, 2 );
+
+ // This needs to run after the payment plugins had a chance to execute their delete actions.
+ add_action( 'woocommerce_payment_token_deleted', array( __CLASS__, 'maybe_update_subscriptions_payment_meta' ), 11, 2 );
add_action( 'woocommerce_payment_token_set_default', array( __CLASS__, 'display_default_payment_token_change_notice' ), 10, 2 );
add_action( 'wp', array( __CLASS__, 'update_subscription_tokens' ) );
diff --git a/vendor/woocommerce/subscriptions-core/includes/class-wcs-template-loader.php b/vendor/woocommerce/subscriptions-core/includes/class-wcs-template-loader.php
index f1c918f..b437e64 100644
--- a/vendor/woocommerce/subscriptions-core/includes/class-wcs-template-loader.php
+++ b/vendor/woocommerce/subscriptions-core/includes/class-wcs-template-loader.php
@@ -13,8 +13,6 @@ class WCS_Template_Loader {
* @var array[] Array of file names and their directory found in templates/
*/
private static $relocated_templates = [
- 'html-variation-price.php' => 'admin/deprecated/',
- 'html-variation-synchronisation.php' => 'admin/deprecated/',
'order-shipping-html.php' => 'admin/deprecated/',
'order-tax-html.php' => 'admin/deprecated/',
'html-admin-notice.php' => 'admin/',
diff --git a/vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-orders-table-subscription-data-store.php b/vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-orders-table-subscription-data-store.php
index c66aa4a..666ed7c 100644
--- a/vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-orders-table-subscription-data-store.php
+++ b/vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-orders-table-subscription-data-store.php
@@ -609,6 +609,11 @@ class WCS_Orders_Table_Subscription_Data_Store extends \Automattic\WooCommerce\I
];
if ( empty( $existing_meta_data ) ) {
+ // If we're saving a start date for the first time and it's empty, set it to the created date as a default.
+ if ( '_schedule_start' === $new_meta_data['key'] && empty( $new_meta_data['value'] ) ) {
+ $new_meta_data['value'] = $subscription->get_date( 'date_created' );
+ }
+
$this->data_store_meta->add_meta( $subscription, (object) $new_meta_data );
} elseif ( $existing_meta_data->meta_value !== $new_meta_data['value'] ) {
$new_meta_data['id'] = $existing_meta_data->meta_id;
@@ -649,7 +654,7 @@ class WCS_Orders_Table_Subscription_Data_Store extends \Automattic\WooCommerce\I
continue;
}
- // If we're setting the start date and it's missing, we set it to the created date.
+ // If we're reading in the start date and it's missing, set it in memory to the created date.
if ( 'schedule_start' === $prop_key && empty( $meta_data[ $meta_key ] ) ) {
$meta_data[ $meta_key ] = $subscription->get_date( 'date_created' );
}
diff --git a/vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php b/vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php
index d29658b..ffa8414 100644
--- a/vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php
+++ b/vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php
@@ -221,6 +221,10 @@ class WCS_Subscription_Data_Store_CPT extends WC_Order_Data_Store_CPT implements
foreach ( $this->get_props_to_update( $subscription, $this->subscription_meta_keys_to_props ) as $meta_key => $prop ) {
$meta_value = ( 'schedule_' == substr( $prop, 0, 9 ) ) ? $subscription->get_date( $prop ) : $subscription->{"get_$prop"}( 'edit' );
+ if ( 'schedule_start' === $prop && ! $meta_value ) {
+ $meta_value = $subscription->get_date( 'date_created' );
+ }
+
// Store as a string of the boolean for backward compatibility (yep, it's gross)
if ( 'requires_manual_renewal' === $prop ) {
$meta_value = $meta_value ? 'true' : 'false';
diff --git a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-cancelled-subscription.php b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-cancelled-subscription.php
index e54f772..e4a181a 100644
--- a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-cancelled-subscription.php
+++ b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-cancelled-subscription.php
@@ -174,7 +174,7 @@ class WCS_Email_Cancelled_Subscription extends WC_Email {
'type' => 'select',
'description' => __( 'Choose which format of email to send.', 'woocommerce-subscriptions' ),
'default' => 'html',
- 'class' => 'email_type',
+ 'class' => 'email_type wc-enhanced-select',
'options' => array(
'plain' => _x( 'Plain text', 'email type', 'woocommerce-subscriptions' ),
'html' => _x( 'HTML', 'email type', 'woocommerce-subscriptions' ),
diff --git a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-renewal-order.php b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-renewal-order.php
index 75ef069..880109c 100644
--- a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-renewal-order.php
+++ b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-renewal-order.php
@@ -34,11 +34,6 @@ class WCS_Email_Completed_Renewal_Order extends WC_Email_Customer_Completed_Orde
$this->template_plain = 'emails/plain/customer-completed-renewal-order.php';
$this->template_base = WC_Subscriptions_Core_Plugin::instance()->get_subscriptions_core_directory( 'templates/' );
- // Other settings
- $this->heading_downloadable = $this->get_option( 'heading_downloadable', _x( 'Your subscription renewal order is complete - download your files', 'Default email heading for email with downloadable files in it', 'woocommerce-subscriptions' ) );
- // translators: $1: {blogname}, $2: {order_date}, variables will be substituted when email is sent out
- $this->subject_downloadable = $this->get_option( 'subject_downloadable', sprintf( _x( 'Your %1$s subscription renewal order from %2$s is complete - download your files', 'Default email subject for email with downloadable files in it', 'woocommerce-subscriptions' ), '{blogname}', '{order_date}' ) );
-
// Triggers for this email
add_action( 'woocommerce_order_status_completed_renewal_notification', array( $this, 'trigger' ) );
@@ -168,4 +163,26 @@ class WCS_Email_Completed_Renewal_Order extends WC_Email_Customer_Completed_Orde
$this->template_base
);
}
+
+ /**
+ * Gets the deprecated public variables for backwards compatibility.
+ *
+ * @param string $key Key.
+ *
+ * @return string|null
+ */
+ public function __get( $key ) {
+ if ( 'heading_downloadable' === $key ) {
+ wcs_deprecated_argument( __CLASS__ . '::$' . $key, '5.6.0', 'The heading_downloadable property used for emails with downloadable files was removed in WooCommerce 3.1. Use the heading property instead.' );
+ return $this->get_option( 'heading_downloadable', _x( 'Your subscription renewal order is complete - download your files', 'Default email heading for email with downloadable files in it', 'woocommerce-subscriptions' ) );
+
+ } elseif ( 'subject_downloadable' === $key ) {
+ wcs_deprecated_argument( __CLASS__ . '::$' . $key, '5.6.0', 'The subject_downloadabl property used for emails with downloadable files was removed in WooCommerce 3.1. Use the subject property instead.' );
+ // translators: $1: {blogname}, $2: {order_date}, variables will be substituted when email is sent out
+ return $this->get_option( 'subject_downloadable', sprintf( _x( 'Your %1$s subscription renewal order from %2$s is complete - download your files', 'Default email subject for email with downloadable files in it', 'woocommerce-subscriptions' ), '{blogname}', '{order_date}' ) );
+
+ } else {
+ return;
+ }
+ }
}
diff --git a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php
index 6ed4867..84f60ec 100644
--- a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php
+++ b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-completed-switch-order.php
@@ -16,6 +16,11 @@ if ( ! defined( 'ABSPATH' ) ) {
*/
class WCS_Email_Completed_Switch_Order extends WC_Email_Customer_Completed_Order {
+ /**
+ * @var array Subscriptions linked to the switch order.
+ */
+ public $subscriptions;
+
/**
* Constructor
*/
@@ -34,10 +39,6 @@ class WCS_Email_Completed_Switch_Order extends WC_Email_Customer_Completed_Order
$this->template_plain = 'emails/plain/customer-completed-switch-order.php';
$this->template_base = WC_Subscriptions_Core_Plugin::instance()->get_subscriptions_core_directory( 'templates/' );
- // Other settings
- $this->heading_downloadable = $this->get_option( 'heading_downloadable', __( 'Your subscription change is complete - download your files', 'woocommerce-subscriptions' ) );
- $this->subject_downloadable = $this->get_option( 'subject_downloadable', __( 'Your {blogname} subscription change from {order_date} is complete - download your files', 'woocommerce-subscriptions' ) );
-
// Triggers for this email
add_action( 'woocommerce_subscriptions_switch_completed_switch_notification', array( $this, 'trigger' ) );
@@ -171,4 +172,25 @@ class WCS_Email_Completed_Switch_Order extends WC_Email_Customer_Completed_Order
$this->template_base
);
}
+
+ /**
+ * Gets the deprecated public variables for backwards compatibility.
+ *
+ * @param string $key Key.
+ *
+ * @return string|null
+ */
+ public function __get( $key ) {
+ if ( 'heading_downloadable' === $key ) {
+ wcs_deprecated_argument( __CLASS__ . '::$' . $key, '5.6.0', 'The heading_downloadable property used for emails with downloadable files was removed in WooCommerce 3.1. Use the heading property instead.' );
+ return $this->get_option( 'heading_downloadable', __( 'Your subscription change is complete - download your files', 'woocommerce-subscriptions' ) );
+
+ } elseif ( 'subject_downloadable' === $key ) {
+ wcs_deprecated_argument( __CLASS__ . '::$' . $key, '5.6.0', 'The subject_downloadable property used for emails with downloadable files was removed in WooCommerce 3.1. Use the subject property instead.' );
+ return $this->get_option( 'subject_downloadable', __( 'Your {blogname} subscription change from {order_date} is complete - download your files', 'woocommerce-subscriptions' ) );
+
+ } else {
+ return;
+ }
+ }
}
diff --git a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-expired-subscription.php b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-expired-subscription.php
index 8a6f2a9..44254fe 100644
--- a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-expired-subscription.php
+++ b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-expired-subscription.php
@@ -172,7 +172,7 @@ class WCS_Email_Expired_Subscription extends WC_Email {
'type' => 'select',
'description' => __( 'Choose which format of email to send.', 'woocommerce-subscriptions' ),
'default' => 'html',
- 'class' => 'email_type',
+ 'class' => 'email_type wc-enhanced-select',
'options' => array(
'plain' => _x( 'Plain text', 'email type', 'woocommerce-subscriptions' ),
'html' => _x( 'HTML', 'email type', 'woocommerce-subscriptions' ),
diff --git a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php
index 0572187..5dab4ab 100644
--- a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php
+++ b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-new-switch-order.php
@@ -13,6 +13,11 @@ if ( ! defined( 'ABSPATH' ) ) {
*/
class WCS_Email_New_Switch_Order extends WC_Email_New_Order {
+ /**
+ * @var array Subscriptions linked to the switch order.
+ */
+ public $subscriptions;
+
/**
* Constructor
*/
diff --git a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-on-hold-subscription.php b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-on-hold-subscription.php
index 7e2006c..7387679 100644
--- a/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-on-hold-subscription.php
+++ b/vendor/woocommerce/subscriptions-core/includes/emails/class-wcs-email-on-hold-subscription.php
@@ -172,7 +172,7 @@ class WCS_Email_On_Hold_Subscription extends WC_Email {
'type' => 'select',
'description' => __( 'Choose which format of email to send.', 'woocommerce-subscriptions' ),
'default' => 'html',
- 'class' => 'email_type',
+ 'class' => 'email_type wc-enhanced-select',
'options' => array(
'plain' => _x( 'Plain text', 'email type', 'woocommerce-subscriptions' ),
'html' => _x( 'HTML', 'email type', 'woocommerce-subscriptions' ),
diff --git a/vendor/woocommerce/subscriptions-core/includes/legacy/class-wcs-array-property-post-meta-black-magic.php b/vendor/woocommerce/subscriptions-core/includes/legacy/class-wcs-array-property-post-meta-black-magic.php
index 268ff3e..ed86263 100644
--- a/vendor/woocommerce/subscriptions-core/includes/legacy/class-wcs-array-property-post-meta-black-magic.php
+++ b/vendor/woocommerce/subscriptions-core/includes/legacy/class-wcs-array-property-post-meta-black-magic.php
@@ -44,6 +44,7 @@ class WCS_Array_Property_Post_Meta_Black_Magic implements ArrayAccess {
* @param string $key
* @return mixed
*/
+ #[\ReturnTypeWillChange]
public function offsetGet( $key ) {
return get_post_meta( $this->product_id, $this->maybe_prefix_meta_key( $key ) );
}
@@ -53,6 +54,7 @@ class WCS_Array_Property_Post_Meta_Black_Magic implements ArrayAccess {
* @param string $key
* @param mixed $value
*/
+ #[\ReturnTypeWillChange]
public function offsetSet( $key, $value ) {
update_post_meta( $this->product_id, $this->maybe_prefix_meta_key( $key ), $value );
}
@@ -62,6 +64,7 @@ class WCS_Array_Property_Post_Meta_Black_Magic implements ArrayAccess {
* @param string $key
* @return bool
*/
+ #[\ReturnTypeWillChange]
public function offsetExists( $key ) {
return metadata_exists( 'post', $this->product_id, $this->maybe_prefix_meta_key( $key ) );
}
@@ -69,6 +72,7 @@ class WCS_Array_Property_Post_Meta_Black_Magic implements ArrayAccess {
/**
* Nothing to do here as we access post meta directly.
*/
+ #[\ReturnTypeWillChange]
public function offsetUnset( $key ) {
}
diff --git a/vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php b/vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php
index b1cddd3..c14eda8 100644
--- a/vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php
+++ b/vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php
@@ -215,6 +215,9 @@ function wcs_create_order_from_subscription( $subscription, $type ) {
// If we got here, the subscription was created without problems
$transaction->commit();
+ // Delete the transient that caches whether the order needs processing. Because we've added line items, the order may now need processing.
+ delete_transient( 'wc_order_' . $new_order->get_id() . '_needs_processing' );
+
/**
* Filters the new order created from the subscription.
*
diff --git a/vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-price.php b/vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-price.php
index f9f5f96..271082b 100644
--- a/vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-price.php
+++ b/vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-price.php
@@ -41,7 +41,7 @@ if ( ! defined( 'ABSPATH' ) ) {
// Subscription Period Interval
woocommerce_wp_select( array(
'id' => 'variable_subscription_period_interval[' . $loop . ']',
- 'class' => 'wc_input_subscription_period_interval',
+ 'class' => 'wc_input_subscription_period_interval wc-enhanced-select',
'wrapper_class' => '_subscription_period_interval_field',
'label' => __( 'Subscription Periods', 'woocommerce-subscriptions' ),
'options' => wcs_get_subscription_period_interval_strings(),
@@ -52,7 +52,7 @@ if ( ! defined( 'ABSPATH' ) ) {
// Billing Period
woocommerce_wp_select( array(
'id' => 'variable_subscription_period[' . $loop . ']',
- 'class' => 'wc_input_subscription_period',
+ 'class' => 'wc_input_subscription_period wc-enhanced-select',
'wrapper_class' => '_subscription_period_field',
'label' => __( 'Billing Period', 'woocommerce-subscriptions' ),
'value' => $subscription_period,
@@ -64,7 +64,7 @@ if ( ! defined( 'ABSPATH' ) ) {
// Subscription Length
woocommerce_wp_select( array(
'id' => 'variable_subscription_length[' . $loop . ']',
- 'class' => 'wc_input_subscription_length',
+ 'class' => 'wc_input_subscription_length wc-enhanced-select',
'wrapper_class' => '_subscription_length_field',
'label' => __( 'Subscription Length', 'woocommerce-subscriptions' ),
'options' => wcs_get_subscription_ranges( $subscription_period ),
@@ -110,7 +110,7 @@ if ( ! defined( 'ABSPATH' ) ) {
// Trial Period
woocommerce_wp_select( array(
'id' => 'variable_subscription_trial_period[' . $loop . ']',
- 'class' => 'wc_input_subscription_trial_period',
+ 'class' => 'wc_input_subscription_trial_period wc-enhanced-select',
'wrapper_class' => '_subscription_trial_period_field',
'label' => __( 'Subscription Trial Period', 'woocommerce-subscriptions' ),
'options' => wcs_get_available_time_periods(),
diff --git a/vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-synchronisation.php b/vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-synchronisation.php
index ff40532..1daaa11 100644
--- a/vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-synchronisation.php
+++ b/vendor/woocommerce/subscriptions-core/templates/admin/deprecated/html-variation-synchronisation.php
@@ -17,7 +17,7 @@ global $wp_locale;
>
'variable' . WC_Subscriptions_Synchroniser::$post_meta_key . '[' . $loop . ']',
- 'class' => 'wc_input_subscription_payment_sync',
+ 'class' => 'wc_input_subscription_payment_sync wc-enhanced-select',
'wrapper_class' => '_subscription_payment_sync_field',
'label' => WC_Subscriptions_Synchroniser::$sync_field_label,
'options' => WC_Subscriptions_Synchroniser::get_billing_period_ranges( $subscription_period ),
@@ -30,7 +30,7 @@ global $wp_locale;
'variable' . WC_Subscriptions_Synchroniser::$post_meta_key_day . '[' . $loop . ']',
- 'class' => 'wc_input_subscription_payment_sync',
+ 'class' => 'wc_input_subscription_payment_sync wc-enhanced-select',
'wrapper_class' => '_subscription_payment_sync_field',
'label' => WC_Subscriptions_Synchroniser::$sync_field_label,
'placeholder' => _x( 'Day', 'input field placeholder for day field for annual subscriptions', 'woocommerce-subscriptions' ),
@@ -45,7 +45,7 @@ global $wp_locale;
woocommerce_wp_select( array(
'id' => 'variable' . WC_Subscriptions_Synchroniser::$post_meta_key_month . '[' . $loop . ']',
- 'class' => 'wc_input_subscription_payment_sync',
+ 'class' => 'wc_input_subscription_payment_sync wc-enhanced-select',
'wrapper_class' => '_subscription_payment_sync_field',
'label' => '',
'options' => $wp_locale->month,
diff --git a/vendor/woocommerce/subscriptions-core/templates/admin/html-variation-price.php b/vendor/woocommerce/subscriptions-core/templates/admin/html-variation-price.php
index 6bb0a18..290cbe5 100644
--- a/vendor/woocommerce/subscriptions-core/templates/admin/html-variation-price.php
+++ b/vendor/woocommerce/subscriptions-core/templates/admin/html-variation-price.php
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
}
?>
-
+
-
+
-
+
-
+
$value ) : ?>
diff --git a/vendor/woocommerce/subscriptions-core/templates/admin/html-variation-synchronisation.php b/vendor/woocommerce/subscriptions-core/templates/admin/html-variation-synchronisation.php
index 30e03f4..43ed32e 100644
--- a/vendor/woocommerce/subscriptions-core/templates/admin/html-variation-synchronisation.php
+++ b/vendor/woocommerce/subscriptions-core/templates/admin/html-variation-synchronisation.php
@@ -15,14 +15,14 @@ if ( ! defined( 'ABSPATH' ) ) {
global $wp_locale;
?>
- |