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:
@@ -181,7 +181,6 @@ export default function OrderForm({
|
||||
const [paymentMethod, setPaymentMethod] = React.useState(initial?.payment_method_id || initial?.payment_method || '');
|
||||
const [shippingMethod, setShippingMethod] = React.useState(initial?.shipping_method_id || initial?.shipping_method || '');
|
||||
const [note, setNote] = React.useState(initial?.customer_note || '');
|
||||
const [registerAsMember, setRegisterAsMember] = React.useState(false);
|
||||
const [selectedCustomerId, setSelectedCustomerId] = React.useState<number | null>(null);
|
||||
const [submitting, setSubmitting] = React.useState(false);
|
||||
|
||||
@@ -452,7 +451,6 @@ export default function OrderForm({
|
||||
payment_method: paymentMethod || undefined,
|
||||
shipping_method: shippingMethod || undefined,
|
||||
customer_note: note || undefined,
|
||||
register_as_member: registerAsMember,
|
||||
items: itemsEditable ? items : undefined,
|
||||
coupons: showCoupons ? validatedCoupons.map(c => c.code) : undefined,
|
||||
};
|
||||
@@ -1047,9 +1045,8 @@ export default function OrderForm({
|
||||
}
|
||||
}
|
||||
|
||||
// Mark customer as selected (hide register checkbox)
|
||||
// Mark customer as selected
|
||||
setSelectedCustomerId(data.user_id);
|
||||
setRegisterAsMember(false);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Customer autofill error:', e);
|
||||
@@ -1287,27 +1284,6 @@ export default function OrderForm({
|
||||
<Textarea value={note} onChange={e=>setNote(e.target.value)} placeholder={__('Write a note for this order…')} />
|
||||
</div>
|
||||
|
||||
{/* Register as member checkbox (only for new orders and when no existing customer selected) */}
|
||||
{mode === 'create' && !selectedCustomerId && (
|
||||
<div className="rounded border p-4">
|
||||
<div className="flex items-start gap-2">
|
||||
<Checkbox
|
||||
id="register_member"
|
||||
checked={registerAsMember}
|
||||
onCheckedChange={(v) => setRegisterAsMember(Boolean(v))}
|
||||
/>
|
||||
<div className="flex-1">
|
||||
<Label htmlFor="register_member" className="cursor-pointer">
|
||||
{__('Register customer as site member')}
|
||||
</Label>
|
||||
<p className="text-xs text-muted-foreground mt-1">
|
||||
{__('Customer will receive login credentials via email and can track their orders.')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{!hideSubmitButton && (
|
||||
<Button type="submit" disabled={submitting} className="w-full">
|
||||
{submitting ? (mode === 'edit' ? __('Saving…') : __('Creating…')) : (mode === 'edit' ? __('Save changes') : __('Create order'))}
|
||||
|
||||
Reference in New Issue
Block a user