---
title: Уровни мастеров
summary: Уровень — подпись мастера: «Мастер», «Топ-мастер», «Арт-директор», — которую бизнес называет сам. Мастер стоит на одном уровне или ни на каком, порядок уровней задаёт бизнес, а у услуги может быть своя цена для уровня. Уровень без своей цены берёт обычную цену услуги.
tools: [talemo_list_levels, talemo_create_level, talemo_update_level, talemo_delete_level, talemo_set_resource_level, talemo_set_level_prices, talemo_list_resources, talemo_list_services, talemo_create_service, talemo_update_service]
related: [resources, services-and-prices, who-does-what, service-languages]
search: [уровни мастеров, топ-мастер, старший мастер, цена по мастеру, разная цена у мастеров, цена зависит от мастера, арт-директор, младший мастер]
---

# Уровни мастеров

Во многих салонах цена услуги зависит от того, кто её делает: маникюр у мастера
стоит $28, у топ-мастера — $35, у арт-директора — $45. **Уровень** — подпись, которая
это несёт: «Мастер», «Топ-мастер», «Арт-директор». Бизнес называет уровни сам и ставит
каждого мастера на один из них.

Уровень — не роль и прав не даёт: он ничего не говорит о том, что человеку можно в
Talemo, только о том, какой прайс действует для мастера. Это подпись ресурса, к
которому записывают клиента (см. [Мастера, места и оборудование](resources.md)).

## Где видно

- **Раздел «Мастера, места и оборудование»**, вид мастеров: чип с уровнем рядом с
  именем каждого мастера, а под списком — карточка **Уровни**: уровни по порядку и
  сколько мастеров стоит на каждом. Кнопка «…» у уровня переименовывает его,
  двигает выше или ниже и удаляет; **Добавить уровень** заводит новый. В карточке
  мастера чип **Уровень** ставит мастера на уровень или снимает с него, а пункт
  «Новый уровень» заводит уровень тут же.
- **Раздел «Услуги и цены»**: у услуги с разными ценами для разных уровней видна
  вилка («$28 – $45») и серая пометка «по уровню». В окне услуги под обычной ценой
  блок **Цена по уровню** с полем на каждый уровень; пустое поле значит, что уровень
  берёт обычную цену.
- **Виджеты «Прайс» и «Мастер» в приложении** показывают ту же вилку и тот же чип.
- **История мастера** записывает, что его уровень поменялся, не называя какой.

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

## Что такое уровень

- **Название**, 1–60 знаков, на первом языке обслуживания бизнеса; в бизнесе оно
  одно, регистр не важен. Переводы названия хранятся так же, как у названия услуги
  (см. [Языки бизнеса](service-languages.md)): перевод с пометкой «устарел»
  сделан с прежнего названия; смена первого языка переносит названия уровней
  вместе с остальными текстами.
- **Место** среди уровней бизнеса, с нуля, без дыр: младший первым. Новый уровень
  встаёт на названное место и сдвигает остальных вниз; передвинутый сдвигает тех,
  кто между старым местом и новым; удалённый смыкает ряд. Место дальше последнего —
  последнее.
- **Общий на все филиалы.** Уровень принадлежит бизнесу: «Топ-мастер» значит одно
  во всех филиалах.

## Мастера на уровнях

- Мастер стоит на **одном уровне или ни на каком**. Уровень бывает только у мастера:
  месту и оборудованию его не ставят (`level.master_only`), и это держит база.
- Смена **роли** мастера на другую снимает его уровень той же правкой. Деактивация
  уровень оставляет; деактивированного мастера на другой уровень не ставят, пока его
  не активируют.
- Удаление уровня снимает его с мастеров, что на нём стояли, и удаляет цены,
  назначенные для него: мастера берут обычную цену каждой услуги. Окно просит
  подтвердить и говорит, у скольких мастеров и скольких услуг это сработает.

## Цена по уровню

- У услуги есть **обычная цена** и, для любого уровня, своя. Уровень без своей цены
  берёт обычную, и мастер без уровня тоже. Цена мастера считается в одном месте:
  цена его уровня, если она есть, иначе обычная.
- Цены — десятичные числа в валюте филиала, знаков после точки не больше, чем у
  валюты, как у цены услуги. Филиал без валюты цен не принимает
  (`service.currency_required`). Смена валюты филиала сохраняет числа цен уровней,
  как и обычных.
- Цену можно поставить в окне услуги вместе с обычной — одно сохранение — или у
  многих услуг разом («Топ-мастер дороже на 10 на всё»). Второе помощник спрашивает
  до правки, как любую правку многих вещей разом.
- Цены следуют за полем **цена** услуги: роль, которой цена закрыта, не видит и цен
  уровней и не может их менять.
- Запись: новый визит берёт цену того мастера, к которому записан, — цену его уровня или
  обычную, — и эту цену называют подбор времени, страница записи и помощники (см.
  [Подбор времени](finding-times.md)). Уже записанный визит сохраняет цену, с которой
  записан, и когда мастера переводят на другой уровень.

## Кто может

Смотреть уровни — право смотреть ресурсы, заводить, переименовывать, двигать и
удалять уровень и ставить мастера на уровень — право их менять. Уровень один на все
филиалы, поэтому завести, переименовать, подвинуть и удалить его может только роль на весь
бизнес: роль с перечнем филиалов видит уровни, ставит мастеров своих филиалов на уровень и
цены своих услуг, а остальное ей отказывается («Роль в этом бизнесе этого не позволяет»;
`role.forbidden`), потому что удаление уровня забирает цены всех филиалов. Цены уровней — цены
услуг: право менять услуги, если не закрыто право на цену (см.
[Услуги, цены и валюта](services-and-prices.md)). Без набора «Запись клиентов»
уровней нет.

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

- `talemo_list_levels` перечисляет уровни бизнеса по порядку: `name`, `name_tr`,
  `position` и `masters` — сколько мастеров в работе стоит на уровне. Уровень
  мастера — `level` в `talemo_list_resources`; уровень мастера, который делает
  услугу, — `level_id` в `fits` у `talemo_list_services`.
- `talemo_create_level` принимает `name` и, по желанию, `name_tr`, `position` и
  `resource_ids`. Названные мастера встают на новый уровень сразу, так что «сделай
  уровень Топ-мастер и поставь на него Аню» — один вызов. В ответе уровень, `after` —
  уровень перед ним (`null`, если он первый) — и `moved`: каждый мастер, что перешёл,
  и уровень, с которого он пришёл. Когда мастера переходят, покажите человеку
  `dry_run` заранее.
- `talemo_update_level` переименовывает уровень, меняет `name_tr` (карта целиком:
  язык, которого в ней нет, теряет перевод) или двигает на другой `position`. В ответе
  уровень, какой он сейчас, и `was` — его имя и место до правки.
- `talemo_delete_level` удаляет уровень. В ответе уровень, каким он был, номера
  мастеров, что на нём стояли, `prices` — сколько цен ушло — и `services`. Перед
  удалением спросите человека; `dry_run` называет эти числа, не удаляя.
- `talemo_set_resource_level` ставит мастера на уровень (`level_id`) или, с пустым
  `level_id`, снимает уровень. В ответе мастер. Тот же уровень второй раз ничего не
  меняет.
- `level_prices` у `talemo_create_service` и `talemo_update_service` ставит цены одной
  услуги для уровней: список из `level_id` и `price`; пустая цена убирает цену
  уровня, уровень, которого в списке нет, сохраняет то, что у него есть.
  `talemo_list_services` отвечает `level_prices` так же: запись на каждый уровень,
  у которого своя цена, а у каждого мастера в `fits` даёт его `price` — цену его
  уровня или обычную: называйте эту цену вместе с мастером.
- `talemo_set_level_prices` ставит или убирает цены многих услуг филиала для уровней
  одним вызовом: список из `service_id`, `level_id` и `price`, до 500, пара — один
  раз. В ответе каждая пара с обычной ценой (`base`) и ценой уровня до (`before`) и
  после (`after`). Не делайте настоящий вызов, пока человек не увидел `dry_run` и не
  сказал «да».
- Имя, уже занятое в бизнесе, отвечает статусом 409, кодом `record.duplicate` и
  `params.field` `name`. Мастер, уровень или услуга, которых нет в бизнесе или в
  филиале, — `record.reference_missing`; уровень, которого нет, — `not_found`. Место
  или оборудование на уровне — `level.master_only` (статус 422). Деактивированный
  мастер или услуга — `resource.deactivated` или `service.deactivated` (409). Цена не
  десятичная валюты филиала, имя пустое или длиннее 60 знаков и отрицательное место —
  `request.body_invalid`. Роль, у которой закрыта цена услуг, получает
  `role.field_forbidden`.
