Add additional services system (v0.5.0)
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:
2026-01-31 15:19:56 +01:00
parent aab3a4d1aa
commit 05f24fdec7
10 changed files with 1684 additions and 46 deletions

View File

@@ -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)