From c8bba9a91b4f0c6a2f8efa340c582553ffb4cef5 Mon Sep 17 00:00:00 2001 From: dwindown Date: Thu, 20 Nov 2025 20:40:43 +0700 Subject: [PATCH] feat: Move customer registration to site-level setting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../src/routes/Orders/partials/OrderForm.tsx | 26 +------------------ admin-spa/src/routes/Settings/Customers.tsx | 15 +++++++++++ includes/Api/OrdersController.php | 5 +++- includes/Compat/CustomerSettingsProvider.php | 8 ++++++ 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/admin-spa/src/routes/Orders/partials/OrderForm.tsx b/admin-spa/src/routes/Orders/partials/OrderForm.tsx index d1b361a..cdeb2ae 100644 --- a/admin-spa/src/routes/Orders/partials/OrderForm.tsx +++ b/admin-spa/src/routes/Orders/partials/OrderForm.tsx @@ -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(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({