Документация Talemo

График ресурса

На этой странице

У филиала нет часов работы. У каждого ресурса (см. Ресурсы) свой график, и визит записывают только в открытое время. День без открытого времени — выходной.

День состоит из отрезков двух видов: открыто (открыто для записи) и занято (занято без записи, с пометкой: обед, учёба; до 60 знаков). Открытый отрезок, который касается другого открытого или пересекается с ним, сливается с ним. Занятое поверх занятого с другой пометкой не принимается.

Обычный график

Обычный график — как ресурс обычно работает: сколько дней повторяется и что в каждом из них. Обычная неделя — это повтор каждые 7 дней. График ресурса лежит в его карточке, в разделе «Мастера, места и аппараты»: в блоке График человек нажимает Завести график (потом Изменить), и открывается окно «Обычный график»:

  • Действует с (сегодня, пока не изменили) и До;
  • Повторяется каждые; у цикла не в 7 дней — ещё выбор, каким по счёту днём цикла стоит дата «Действует с» («{дата} — это 1-й день · работает»); у обычной недели его нет, день недели виден по дате;
  • отрезки каждого дня (День 1, День 2 и так далее).

Скопировать с… берёт их у другого ресурса филиала. Какие графики заканчиваются в ближайшие 14 дней или не заведены совсем, показывает пункт График заканчивается панели раздела: у каждого в списке видно, до какого дня график, а продлевают его в карточке.

Записать можно только до даты в поле До: дни графика появляются сразу до неё, не дальше чем на год вперёд. Показать, что изменится перечисляет меняющиеся дни, пока ничего не сохранено. Прошлые дни не меняются, а дни, изменённые вручную, остаются как есть, если в просмотре не отметить их для перезаписи.

Продлить график продлевает график до новой даты по тому же обычному графику, для этого он должен быть задан. График показывает последний день, до которого он продлён, и после него записать никого нельзя.

День и отрезок

  • Нажмите на день в неделе карточки: окно дня меняет день целиком, в том числе прошедший. День становится «изменён вручную», и новый обычный график его не трогает, пока его не отметят. Сделать выходным очищает день сразу, без второго окна, а в уведомлении остаётся Отменить.
  • Добавить отрезок и Убрать работают с одним отрезком; в сетке «Календаря» есть Открыть время и Занять без записи.

Время из-под визита не забирают. Правка, после которой записанный или подтверждённый визит оказался бы вне открытого времени, не принимается, и называется число таких визитов; сначала их переносят или отменяют. Состоявшийся визит оставляет своё время открытым: оно отработано.

Перевод часов и часовой пояс

Обычный график записан в местном времени филиала. Когда часы переводят вперёд, времени, которого нет, не бывает: край отрезка встаёт на момент перевода, а отрезок целиком внутри провала отбрасывается. Когда часы переводят назад, повторившееся время берётся в первый раз. День перевода длится 23 или 25 часов.

Когда меняется часовой пояс филиала, отрезки с сегодняшнего дня сохраняют то же местное время в новом поясе, а прошлое не сдвигается. Пока визиты впереди выпали бы из графиков, пояс не меняется. У отключённого ресурса график впереди уходит.

Кто может

Графики — право уровня филиала у роли «Администратор»; роль «Бухгалтер» их не видит. Роль, ограниченная «своим», видит и меняет только график ресурса, которым работает человек.

Инструменты и отказы

  • talemo_get_schedule читает один ресурс за период: каждый день — working, day_off (открытого времени нет) или not_scheduled (графика нет, записать нельзя), с открытым и занятым временем и пометками, отметкой «изменён руками», обычным графиком и днём, до которого он продлён. talemo_list_schedules читает все ресурсы филиала и показывает, до какого дня продлён каждый график.
  • Обычный график и день задают по часам на стене филиала, например 10:00; одиночное время — момент по RFC 3339. Промежутки полуоткрытые: время до 10:00 не пересекается со временем с 10:00.
  • talemo_set_usual_schedule задаёт обычный график (cycle_days, неделя — 7, с times и, только когда нужно, anchor_day) и продлевает его от effective_from до until, не дальше чем на год вперёд. Для недели anchor_day не называют: день 1 в times тогда понедельник, день 7 — воскресенье, и «вторник–суббота» — дни 2–6; названный anchor_day — первый день цикла, и все дни сдвигаются вместе с ним, а у цикла не в неделю без него первый день — день начала. С первым графиком места в филиале все услуги филиала начинают требовать место (см. «Услуги, цены и валюта»). Без обоих полей график начинается сегодня и идёт на год вперёд: мастер, которого настраивают по просьбе без начала, работает с сегодняшнего дня, а поздний effective_from нужен, только когда человек сам попросил график позже, потому что дни до начала остаются без графика и на них записать нельзя. Дни, изменённые руками, остаются, если не названы в overwrite, а прошлые дни не меняются. talemo_apply_usual_schedule двигает последний день графика: позже — продлевает обычный график до него, раньше — убирает дни графика после него. Без обычного графика вызов отклоняется со статусом 409 и кодом schedule.no_cycle.
  • В календаре ресурс, график которого роли не виден, приходит с пустым (null) days, а не с днями not_scheduled: это «график не виден», и о том, есть ли график, он ничего не говорит.
  • Обычный график сам не продлевается. После последнего дня графика у ресурса нет графика, и записать на него нельзя, поэтому назовите человеку дату.
  • talemo_set_schedule_day задаёт один день целиком, прошедший тоже: все его открытые и занятые отрезки, а без отрезков день — выходной. День становится изменённым руками, и новый обычный график его не трогает.
  • talemo_add_schedule_time добавляет открытое время или занятое с note; открытое сливается с открытым, которого касается. talemo_remove_schedule_time убирает отрезок по time_id. Занятое поверх занятого с другой пометкой отклоняется со статусом 409 и кодом schedule.overlap.
  • Время нельзя забрать из-под визита. Изменение, после которого записанный или подтверждённый визит окажется вне открытого времени, отклоняется со статусом 409 и кодом schedule.has_bookings; params.count — записанные и подтверждённые визиты, params.done — состоявшиеся. Первые переносят или отменяют; время состоявшихся остаётся открытым. dry_run показывает дни, которые изменятся, и эти записи.
  • Инструменты, меняющие много сразу (talemo_set_usual_schedule, talemo_apply_usual_schedule), вызывают сначала с dry_run, а настоящий вызов — когда человек это увидел и сказал «да».
  • Запись на неоткрытое время — одно движение: откройте время через talemo_add_schedule_time, найдите и запишите; если запись отклонили, уберите добавленное время.

Инструменты этой темы

Связанные темы