Working Hours
What this screen is for
The screen where a business sets whether it is open or closed on each of the seven days of the week, and its hour ranges on the days it is open. On the panel, the same section also holds the settings that govern booking behaviour: the slot interval, the pending hold, the default approval window, reminders and customer rules. On mobile that second group lives on a separate screen (business settings) and is outside this page's scope.
When you would use this
The business owner comes here to set up the weekly schedule for the first time, or to update a day's hours for a seasonal or shift change. On the panel it's also the first stop for setting booking behaviour — slot length, reminders, cooldown and the like.
Who sees it
Only the user matching the owner field on the business document can open this screen; no one else can change the working hours or the booking settings.
Where it lives
The weekly working hours read and write the same seven daily documents on both the mobile app and the panel; the panel additionally offers the booking-behaviour settings on a separate page.
What you can do here
Per-day open/closed switch
Each day has its own switch; switching a day on when its hour range is empty seeds it with 09:00–17:00 automatically.
Add or remove an hour range
An open day can take more than one range (for example, two pieces around a lunch break); each range's start must come before its end.
Save
Before saving, every day marked open is checked for valid, non-overlapping ranges; if any fails, saving is blocked and no day is written.
Copy one day's hours to other days
A day's open/closed state and hour ranges are applied to a chosen set of other days in a single action.
Panel-only; on mobile each day is edited separately.
Booking settings
The slot interval (15/30/60 minutes), the pending hold, the default approval window, reminder offsets, whether multiple services can be selected at once, whether a customer can cancel any time, whether a phone number is required, and the booking cooldown are set here.
On the panel this is a separate page in the same section. On mobile it is outside this screen's scope; it lives on a separate screen (business settings).
Read-only when suspended
If the business has been suspended by an administrator, every field on both the working hours page and the booking settings page is disabled.
The mobile screen carries no such restriction.
What the server accepts and refuses
An invalid or overlapping range is not blocked by the server
The Firestore rule limits a write to the working-hours document to ownership alone; a range's start coming before its end, or same-day ranges not overlapping, is checked only by the client's own form.
An appointment must fit fully inside one range
When the server evaluates a booking request, its start and end must fall on the same local day and lie fully within one of that day's ranges; a request landing in the gap between two ranges, or crossing midnight, is refused.
The check runs in the business's own timezone
Which day and which minute a request falls on is computed in the business's timezone, not the timezone of the device sending the request.
A slot interval of zero or less offers no times that day
The booking screen produces no bookable time for a day if the slot-interval setting is zero or smaller.