Subscription module: add gateway capability flow and UX fixes

This commit is contained in:
Dwindi Ramadhana
2026-06-02 00:38:42 +07:00
parent fec786daa6
commit df969b442d
15 changed files with 2375 additions and 138 deletions

View File

@@ -102,8 +102,32 @@ class SubscriptionSettings {
'min' => 1,
'max' => 14,
],
'force_manual_renewal' => [
'type' => 'toggle',
'label' => __('Force Manual Renewal (Override All Gateways)', 'woonoow'),
'description' => __('Treat every gateway as manual-renewal only, regardless of the per-gateway capability table. Use as a kill switch when a regulator or incident requires no auto-debits.', 'woonoow'),
'default' => false,
],
'price_sync_on_renewal' => [
'type' => 'select',
'label' => __('Renewal Price Sync', 'woonoow'),
'description' => __('What price does a renewal order use when the product price has changed since the subscription started? "Use stored" grandfathers the customer at their original price (recommended). "Use current" re-syncs every renewal to the latest product price.', 'woonoow'),
'options' => [
'use_stored' => __('Use stored price (grandfather customer)', 'woonoow'),
'use_current_product_price' => __('Use current product price', 'woonoow'),
],
'default' => 'use_stored',
],
'unpaid_renewal_max_age_days' => [
'type' => 'number',
'label' => __('Unpaid Renewal Auto-Cancel (days)', 'woonoow'),
'description' => __('Days an unpaid manual renewal can stay on-hold before the subscription is auto-cancelled. The customer receives a daily reminder during this window. Set to 0 to disable auto-cancel (not recommended — abandoned-cart revenue leakage).', 'woonoow'),
'default' => 7,
'min' => 1,
'max' => 90,
],
];
return $schemas;
}
}