Add additional services system (v0.5.0)
All checks were successful
Create Release Package / build-release (push) Successful in 1m0s
All checks were successful
Create Release Package / build-release (push) Successful in 1m0s
- Service CPT with pricing types: Included, Per Booking, Per Night - ServiceCategory taxonomy with default categories - Booking-services integration with service selector - Real-time price calculation based on nights and quantity - Services total and grand total display in booking admin Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
58
CLAUDE.md
58
CLAUDE.md
@@ -502,3 +502,61 @@ Admin features always work; frontend requires valid license.
|
||||
- Merged to main (fast-forward)
|
||||
- Tagged: `v0.3.0`
|
||||
- Pushed to origin: dev, main, v0.3.0
|
||||
|
||||
### 2026-01-31 - Version 0.5.0 (Additional Services)
|
||||
|
||||
**Completed:**
|
||||
|
||||
- Created Custom Taxonomy: Service Categories (`bnb_service_category`)
|
||||
- Non-hierarchical (tag-like) structure
|
||||
- Dashicon selection for visual display
|
||||
- Sort order meta field for custom ordering
|
||||
- Default categories: Food & Dining, Transportation, Wellness & Spa, Activities, Housekeeping
|
||||
- Created Custom Post Type: Services (`bnb_service`)
|
||||
- Three pricing types: Included (free), Per Booking, Per Night
|
||||
- Price configuration per service
|
||||
- Service status (active/inactive)
|
||||
- Sort order for display ordering
|
||||
- Maximum quantity setting per service
|
||||
- Custom admin columns: pricing type, price, status
|
||||
- Filters by status and pricing type
|
||||
- Helper methods: `get_service_data()`, `calculate_service_price()`, `get_services_for_booking()`, `format_service_price()`
|
||||
- Updated Booking post type with services integration
|
||||
- Added `SERVICES_META_KEY` constant for services storage
|
||||
- New meta box: Additional Services with checkbox selection
|
||||
- Quantity input for services with max_quantity > 1
|
||||
- Real-time per-service line total calculation
|
||||
- Services total display
|
||||
- Price breakdown now shows services cost
|
||||
- Grand total (room + services) in pricing meta box
|
||||
- Admin list price column shows total including services
|
||||
- Helper methods: `calculate_booking_services_total()`, `get_booking_services()`
|
||||
- Updated `src/Plugin.php`
|
||||
- Registered ServiceCategory taxonomy
|
||||
- Registered Service post type
|
||||
- Added Service post type to asset enqueuing
|
||||
- Added i18n strings for service pricing descriptions
|
||||
- Updated `assets/css/admin.css`
|
||||
- Service status badges
|
||||
- Service pricing meta box styles
|
||||
- Booking services selector styles
|
||||
- Service item with selected state
|
||||
- Quantity inputs and line totals
|
||||
- Services total summary
|
||||
- Grand total display
|
||||
- Updated `assets/js/admin.js`
|
||||
- `initServicePricing()`: Toggle price row based on pricing type
|
||||
- `initBookingServices()`: Service selection with real-time price calculation
|
||||
- Quantity change handlers with min/max enforcement
|
||||
- Automatic recalculation when booking dates change
|
||||
- Updated version to 0.5.0
|
||||
- Updated CHANGELOG.md with Phase 5 changes
|
||||
- Updated PLAN.md to mark Phase 5 complete
|
||||
|
||||
**Learnings:**
|
||||
|
||||
- Service pricing calculation depends on pricing_type: included=0, per_booking=price*qty, per_night=price*qty*nights
|
||||
- Services are stored as JSON array in booking meta with service_id, quantity, price, pricing_type
|
||||
- Same namespace classes can reference each other directly without use statements
|
||||
- Services meta box renders before pricing meta box so services total is available
|
||||
- Grand total calculation happens both on save (server-side) and on change (client-side JS)
|
||||
|
||||
Reference in New Issue
Block a user