Staff Availability Enhancement

Issue #579 new
mattias @ refine.digital created an issue

A the moment users of bookingwp have difficult to understand how to configure availability across products & users. Also creation of common booking scenarios are extremely difficult or impossible today. What if there was an easier way?

Current Limitations:

1. Not possible to use a single Staff to manage availability across multiple products for the same time slot.

2. Complicated (and time consuming) to set-up recurring availability for specific periods of dates since there is no options to set availability for a range of dates and recurring weekly times ( ex. Mondays @ 17:00 between 2019-10-01 and 2019-10-31 ).

Enhancement Proposal:

2. Allow configuration of Staff availability across multiple products to be a valid configuration

Admin: Allow a Staff to configure availability for a specific product - Available Qty, Date Range ( Available From, Available Until), Periodicity ( Mondays, Thursdays between 18:00 and 19:00 )

User Story

Lisa (Staff 1) teaches a Yoga Class at a Studio X in Paris and offers two types of tickets:

  • Product 1 = Trial Class Ticket - Price 20€ which cannot be cancelled - Max 5 Tickets of this can be sold per Time Slot
  • Product 2 = Regular Class Ticket - Price 33€ which can be cancelled - Max 20 Tickets of this can be sold per Time Slot

Note: Since Lisa can only teach Max 20 people at a time in Studio X in Paris, the Qty cannot be combined but shared across Product 1 AND Product 2 so overbooking cannot happen.

Lisa have also scheduled to be unavailable in October and Mika (Staff 2) is covering her class in October.

PRODUCT Configuration Examples

Product 1 - Trial Yoga Class at Studio X in Paris with Regular Price of €20, 50 min Duration, 1 hour Interval, 0 padding time, 0 lead time, Can be cancelled = Unchecked, Inventory = 5, Customer Selected Staff with No Preference, Auto-select = Checked, Availability Monday 18:00-19:00, Thursday 18:00-19:00
Product 2 - Standard Yoga Class at Studio X in Paris with Regular Price of €33, 50 min Duration, 1 hour Interval, 0 padding time, 0 lead time, Can be cancelled = Checked, Inventory = 20, Customer Selected Staff with No Preference, Auto-select = Checked, Availability Monday 18:00-19:00, Thursday 18:00-19:00

STAFF CONFIGURATION EXAMPLES (Availability Dates below trumpS Availability Dates above)

Staff 1 - Lisa
Assigned Product 1, 2:
- Available Max Qty of 20 From 2019-09-01 Until 2019-12-22 on Mondays & Thursdays between 18:00 - 19:00
- Available Max Qty 0 From 2019-10-01 Until 2019-10-31 on Mondays & Thursdays between 18:00 - 19:00

Staff 2 - Mika
Assigned Product 1, 2
- Available Max Qty 20 From 2019-10-01 Until 2019-10-31 on Mondays & Thursdays between 18:00 - 19:00

PROPOSAL: A BETTER LOGICAL SOLUTION

Creating a New Admin Feature and UI called Appointment Availability ( MENU: All Appointments->All Availability ) which allows for creation of a new easier way to manage Availability Rules. You can view, add new, delete, duplicate, enable/disable any rule. A filtered (Product, Staff, From Date, Until Date, Days of Week, From Time, Until Time) list where the rule order can be dragged/dropped easily as lower rules trumps

Example Configuration ( and default values )
Availability 100: Product 1 (default: empty - meaning rule applies to all products), Staff 1 (default: empty - meaning rule applies to any staff), Tuesdays 18:00-19:00, From 2019-09-01 (default: empty - meaning no start date), Until 2019-12-22 (default: empty - meaning no end date), Max Qty (default: empty - meaning use product qty ) is unset, Price ( default: empty - meaning use product price) is unset, Rule Enabled (Note. Rule Disabled is default so that you can Duplicate, Save before all fields have been configured etc.)

continue with unlimited rules. No value meaning use default.
Availability 101: Product 1, Staff 1, Thursdays 18:00-19:00, From 2019-09-01, Until 2019-12-22, Rule Enabled
Availability 102: Product 2, Staff 1, Tuesdays 18:00-19:00, From 2019-09-01, Until 2019-12-22, Rule Enabled
Availability 103: Product 2, Staff 1, Thursdays 18:00-19:00, From 2019-09-01, Until 2019-12-22, Rule Enabled
Availability 104: Product 1, Staff 1, From 2019-10-01, Until 2019-10-31, Max Qty is 0 ( meaning no availability ), Rule Enabled
Availability 105: Product 2, Staff 1, From 2019-10-01, Until 2019-10-31, Max Qty is 0, Rule Enabled
Availability 106: Product 1, Staff 2, Tuesdays 18:00-19:00, From 2019-10-01, Until 2019-10-31, Rule Enabled
Availability 107: Product 2, Staff 2, Tuesdays 18:00-19:00, From 2019-10-01, Until 2019-10-31, Rule Enabled
Availability 108: Product 1, Staff 2, Thursdays 18:00-19:00, From 2019-10-01, Until 2019-10-31, Rule Enabled
Availability 109: Product 2, Staff 2, Thursdays 18:00-19:00, From 2019-10-01, Until 2019-10-31, Rule Enabled

some additional use cases could be:

Availability 110: From 2019-12-23, Until 2020-01-02, Max Qty is 0, Rule Enabled ( meaning all products unavailable between these dates )
Availability 111: Product 1, From 2020-01-03, Price: €22, Rule Enabled ( meaning product 1 has a new price from 2020-01-03 until further notice )
Availability 112: Staff 2, Max Qty is 10, Rule Enabled ( meaning: independently of which product selected this staff has max availability of 10 )
Availability 113: Staff 2, From 2020-01-07, Until 2020-01-07, Tuesdays 16:00-22:00, Max Qty is 0, Rule Enabled ( meaning staff 2 have no availability 2020-01-07 between 16:00-22:00 from iCal sync )
Availability 114: Product 1, Staff 1, From 2020-01-07, Until 2020-01-07, Tuesdays 16:00-22:00 Rule Disabled ( meaning: Staff 1 was supposed to replace Staff 2 for this date but cancelled last minute )
Availability 115: Product 1, Staff 3, From 2020-01-07, Until 2020-01-07, Tuesdays 16:00-22:00 Rule Disabled ( meaning: A duplicate of Availability 114 was created with a small change to Staff #3 but Staff #3 haven't yet reconfirmed their availability so it remains as Disabled until they do so )

FRONT END PRODUCT & CALENDAR UI

Product 1 - No bookings yet

  • No Preference Staff selected with date 2019-09-19 ( Thursday ) shows availability of 5 and the staff is Lisa with Price €20
  • Staff Lisa selected with date 2019-09-19 ( Thursday ) shows availability of 5 and the staff is Lisa with Price €20
  • Staff Lisa selected and no availability during October
  • No Preference Staff selected with date 2019-10-14 ( Monday ) shows availability of 5 and the staff is Mika with Price €20

Product 2 - No bookings yet

  • No Preference Staff selected with date 2019-09-19 ( Thursday ) shows availability of 20 and the staff is Lisa with Price €33
  • Staff Lisa selected with date 2019-09-19 ( Thursday ) shows availability of 20 and the staff is Lisa with Price €33
  • Staff Lisa selected and no availability during October
  • No Preference Staff selected with date 2019-10-14 ( Monday ) shows availability of 20 and the staff is Mika with Price €33

Product 1 - 2 bookings made for 2019-09-19 and 5 bookings made for 2019-10-14

  • No Preference Staff selected with date 2019-09-19 ( Thursday ) shows availability of 3 and the staff is Lisa with Price €20
  • Staff Lisa selected with date 2019-09-19 ( Thursday ) shows availability of 3 and the staff is Lisa with Price €20
  • Staff Lisa selected and no availability during October
  • No Preference Staff with date 2019-10-14 ( Monday ) showing unavailable

Product 3 - 2 bookings made for 2019-09-19 and 5 bookings made for 2019-10-14

  • No Preference Staff selected with date 2019-09-19 ( Thursday ) shows availability of 16 ( 20-2-2 ) and the staff is Lisa with Price €33
  • Staff Lisa selected with date 2019-09-19 ( Thursday ) shows availability of 16 and the staff is Lisa with Price €33
  • Staff Lisa selected and no availability during October
  • No Preference Staff selected with date 2019-10-14 ( Monday ) shows availability of 10 ( 20-5-5 )and the staff is Mika with Price €33

TRANSLATIONS
Translated products shows exactly the same availability as the original product. If a different language is selected for a specific User logged in, they’ll see the translated Product Name etc. but all availability is fetched from Original Product ID.

VERSIONING
Next Major ( + 1.0 ) version: Release new Admin UI feature
- If Availability Management haven't been configured, no change in DB or Logic at all
- Recommend not to duplicate Availability Management for Product, Staff but have any new logic added override old logic from DB (will have a speed, resource penalty though for mixing rules)

Next Minor ( + 1.1 ) version: Consider migration of logic from old to new either in DB ( best option ) or in User Manual ( easiest option )

Next Major ( + 2.0 ) version: Migration of DB complete and begin sunset pf old DB data and code

IMHO Mattias

Comments (3)

  1. Log in to comment