dwindown
|
28bbce5434
|
feat: Tax settings + Checkout fields - Full implementation
## ✅ TAX SETTINGS - COMPLETE
### Backend (TaxController.php):
- ✅ GET /settings/tax - Get all tax settings
- ✅ POST /settings/tax/toggle - Enable/disable tax
- ✅ GET /settings/tax/suggested - Smart suggestions based on selling locations
- ✅ POST /settings/tax/rates - Create tax rate
- ✅ PUT /settings/tax/rates/{id} - Update tax rate
- ✅ DELETE /settings/tax/rates/{id} - Delete tax rate
**Predefined Rates:**
- Indonesia: 11% (PPN)
- Malaysia: 6% (SST)
- Singapore: 9% (GST)
- Thailand: 7% (VAT)
- Philippines: 12% (VAT)
- Vietnam: 10% (VAT)
- + Australia, NZ, UK, Germany, France, Italy, Spain, Canada
**Smart Detection:**
- Reads WooCommerce "Selling location(s)" setting
- If specific countries selected → Show those rates
- If sell to all → Show store base country rate
- Zero re-selection needed!
### Frontend (Tax.tsx):
- ✅ Toggle to enable/disable tax
- ✅ Suggested rates card (based on selling locations)
- ✅ Quick "Add Rate" button for suggested rates
- ✅ Tax rates list with Edit/Delete
- ✅ Add/Edit tax rate dialog
- ✅ Display settings (prices include tax, shop/cart display)
- ✅ Link to WooCommerce advanced settings
**User Flow:**
1. Enable tax toggle
2. See: "🇮🇩 Indonesia: 11% (PPN)" [Add Rate]
3. Click Add Rate
4. Done! Tax working.
## ✅ CHECKOUT FIELDS - COMPLETE
### Backend (CheckoutController.php):
- ✅ POST /checkout/fields - Get fields with all filters applied
**Features:**
- Listens to WooCommerce `woocommerce_checkout_fields` filter
- Respects addon hide/show logic:
- Checks `hidden` class
- Checks `enabled` flag
- Checks `hide` class
- Respects digital-only products logic (hides shipping)
- Returns field metadata:
- required, hidden, type, options, priority
- Flags custom fields (from addons)
- Includes validation rules
**How It Works:**
1. Addon adds field via filter
2. API applies all filters
3. Returns fields with metadata
4. Frontend renders dynamically
**Example:**
```php
// Indonesian Shipping Addon
add_filter('woocommerce_checkout_fields', function($fields) {
$fields['shipping']['shipping_subdistrict'] = [
'required' => true,
'type' => 'select',
'options' => get_subdistricts(),
];
return $fields;
});
```
WooNooW automatically:
- Fetches field
- Sees required=true
- Renders it
- Validates it
## Benefits:
**Tax:**
- Zero learning curve (30 seconds setup)
- No re-selecting countries
- Smart suggestions
- Scales for single/multi-country
**Checkout Fields:**
- Addon responsibility (not hardcoded)
- Works with ANY addon
- Respects hide/show logic
- Preserves digital-only logic
- Future-proof
## Next: Frontend integration for checkout fields
|
2025-11-10 12:23:44 +07:00 |
|