Schedule of a resource
On this page
A branch has no opening hours. Each resource (see Resources) has its own schedule, and a visit is booked only into open time. A day with no open time is a day off.
A day consists of segments of two kinds: open (open for booking) and busy (taken without a booking, with a Note such as lunch or training, up to 60 characters). An open segment that touches or overlaps another open one merges with it. Busy time over busy time with a different note is refused.
Usual cycle
The usual cycle repeats while its days go on. A week is a cycle of seven days. The schedule of a resource lives on its card, in the section Masters, places and devices: in the Schedule block a person presses Set up schedule (later Change), and the window “Usual cycle” opens:
- Works from (today unless changed) and Until;
- Length of the cycle; for a cycle that is not seven days there is also a choice of which day of the cycle the “Works from” date is (“27 November is Day 1 · working”); a usual week doesn’t ask, the weekday is visible by the date;
- the segments of each day (Day 1, Day 2, and so on).
Copy from… takes them from another resource of the branch. The schedules that end within 14 days or are not set at all are listed by Schedule is ending in the panel of the section: the list shows until which day each schedule goes, and it is extended on the card.
The cycle does not act by itself: days are laid out at once, up to the date in Until, and at most a year ahead. Show what changes lists the days that change before anything is saved. Past days are never laid out again, and days changed by hand stay as they are unless they are marked for overwriting in the preview.
Lay out until… extends the schedule to a new date by the same cycle, and it needs a cycle to exist. The schedule shows the last laid-out day, and after it nobody can be booked.
A day and a segment
- Press a day in the week of the card: the window of the day changes a whole day, including a past one. The day becomes "changed by hand", and a new cycle does not touch it until it is marked. Make it a day off empties it at once, without a second window, and Undo stays in the notice.
- Add time and Remove work on one segment; the Calendar grid has Open time and Block without booking.
Time is not taken from under a visit. A change that would leave a booked or confirmed visit outside open time is refused, with the number of such visits; move or cancel them first. A visit that took place keeps its time open: it was worked.
Clock changes and time zone
The cycle is written in the local time of the branch. When clocks go forward, a time that does not exist is skipped: a segment edge falls on the moment of the change, and a segment wholly inside the gap is dropped. When clocks go back, the first occurrence of a repeated time is taken. The day of the change is 23 or 25 hours long.
When the time zone of a branch changes, segments from today onward keep the same local time in the new zone and the past does not move. The change is refused while visits ahead would fall outside the schedules. A deactivated resource loses its schedule ahead.
Who can do it
Schedules are a branch-level right of the Administrator role; the Accountant role does not see them. A role limited to own sees and changes only the schedule of the resource the person works as.
Tools and refusals
talemo_get_schedulereads one resource for a period: every day isworking,day_off(no open time) ornot_scheduled(no schedule, so it cannot be booked), with its open and busy times and notes, whether it was changed by hand, the usual cycle and the day it is laid out to.talemo_list_schedulesreads every resource of a branch and shows up to which day each schedule is laid out.- A cycle and a day are set in the wall-clock time of the branch, like
10:00; a single time is an instant in RFC 3339. Intervals are half-open: time until 10:00 does not overlap time from 10:00. talemo_set_usual_schedulesets the usual cycle (cycle_days, a week is 7, withtimesand, only when needed,anchor_day) and lays it out fromeffective_fromtountil, at most a year ahead. For a week leaveanchor_dayout: day 1 oftimesis then a Monday and day 7 a Sunday, so Tuesday to Saturday is days 2 to 6; a namedanchor_dayis the first day of the cycle and shifts every day with it, and for a cycle that is not a week, left out, it is the day the cycle starts. The first schedule of a place in a branch is when all the services of the branch start to need a place (see Services, prices and currency). Leave both out for a schedule that starts today and runs the whole year: a master set up on a request without a start works from today, and a latereffective_fromis only for a person who asked for the schedule to start later, because the days before it have no schedule and nobody can be booked on them. Days changed by hand stay unless listed inoverwrite, and past days are never laid out again.talemo_apply_usual_schedulemoves the last laid-out day: later lays the cycle out to it, earlier takes the cycle days after it away. Without a cycle it is refused with status 409, codeschedule.no_cycle.- In the calendar a resource whose schedule the role may not see comes with
daysempty (null), not with days ofnot_scheduled: that is “schedule not shown”, and it says nothing about whether the schedule exists. - The cycle never extends by itself. After the last laid-out day the resource has no schedule and cannot be booked, so tell the person the date.
talemo_set_schedule_daysets one day as a whole, a past day too: all its open and busy times, and no times means a day off. The day becomes changed by hand, and a new cycle keeps it.talemo_add_schedule_timeadds open time or busy time with anote; open time merges with open time it touches.talemo_remove_schedule_timeremoves one bytime_id. Busy time over busy time with another note is refused with status 409, codeschedule.overlap.- Time is not taken from under a visit. A change that would leave a booked or confirmed visit outside open time is refused with status 409, code
schedule.has_bookings,params.countfor booked or confirmed visits andparams.donefor visits that took place. Move or cancel the first ones; the time of the done ones stays open.dry_runshows the days that change and those bookings. - The tools that change a lot at once (
talemo_set_usual_schedule,talemo_apply_usual_schedule) are called withdry_runfirst, and the real call goes after the person has seen it and said yes. - Booking at a time that is not open is one movement: open the time with
talemo_add_schedule_time, find and book; if the booking is refused, remove the time you added.