feat: Move customer registration to site-level setting

Moved 'Register as site member' from order-level to site-level setting

Frontend Changes:
1. Customer Settings - Added new General section
   - Auto-register customers as site members toggle
   - Clear description of functionality
   - Saved to backend via existing API

2. OrderForm - Removed checkbox
   - Removed registerAsMember state
   - Removed checkbox UI
   - Removed register_as_member from payload
   - Backend now uses site setting

Backend Changes:
1. CustomerSettingsProvider.php
   - Added auto_register_members setting
   - Default: false (no)
   - Stored as woonoow_auto_register_members option
   - Included in get_settings()
   - Handled in update_settings()

2. OrdersController.php
   - Removed register_as_member parameter
   - Now reads from CustomerSettingsProvider
   - Site-level setting applies to all orders
   - Consistent behavior across all order creation

Benefits:
 Site-level control (not per-order)
 Consistent customer experience
 Easier to manage (one setting)
 No UI clutter in order form
 Setting persists across all orders

Migration:
- Old orders with checkbox: No impact
- New orders: Use site setting
- Default: Disabled (safe default)

Result:
Admins can now control customer registration site-wide from Customer Settings instead of per-order checkbox
This commit is contained in:
dwindown
2025-11-20 20:40:43 +07:00
parent e8ca3ceeb2
commit c8bba9a91b
4 changed files with 28 additions and 26 deletions

View File

@@ -11,6 +11,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { formatMoney, getStoreCurrency } from '@/lib/currency';
interface CustomerSettings {
auto_register_members: boolean;
vip_min_spent: number;
vip_min_orders: number;
vip_timeframe: 'all' | '30' | '90' | '365';
@@ -20,6 +21,7 @@ interface CustomerSettings {
export default function CustomersSettings() {
const [settings, setSettings] = useState<CustomerSettings>({
auto_register_members: false,
vip_min_spent: 1000,
vip_min_orders: 10,
vip_timeframe: 'all',
@@ -113,6 +115,19 @@ export default function CustomersSettings() {
</div>
)}
<SettingsCard
title={__('General')}
description={__('General customer settings')}
>
<ToggleField
id="auto_register_members"
label={__('Auto-register customers as site members')}
description={__('Automatically create WordPress user accounts for new customers when orders are created. Customers will receive login credentials via email and can track their orders.')}
checked={settings.auto_register_members}
onCheckedChange={(checked) => setSettings({ ...settings, auto_register_members: checked })}
/>
</SettingsCard>
<SettingsCard
title={__('VIP Customer Qualification')}
description={__('Define criteria for identifying VIP customers')}