---
title: Levels of masters
summary: A level is a label of a master — "Master", "Top master", "Art director" — that the business names itself. A master stands on one level or none, the order of the levels is set by the business, and a service can have its own price for a level. A level without a price of its own takes the usual price of the service.
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: [master levels, top master, senior stylist, price by master, different price for a master, price depends on the master, art director, junior master]
---

# Levels of masters

In many salons the price of a service depends on who does it: a manicure costs
$28 with a master, $35 with a top master and $45 with an art director. A **level**
is the label that carries this: "Master", "Top master", "Art director". The
business names its levels itself and puts each master on one of them.

A level is not a role and gives no rights: it says nothing about what a person may
do in Talemo, only which price list applies to the master. It is a label of the
resource a client is booked with (see [Masters, places and devices](resources.md)).

## Where it shows

- **The section Masters, places and devices**, the view of masters: a chip with the
  level next to the name of each master, and under the list the card **Levels**
  with the levels in their order and how many masters stand on each. The "…" next
  to a level renames it, moves it up or down, or deletes it; **Add level** makes
  a new one. In the card of a master the chip **Level** puts the master on a level
  or takes it off, and "New level" makes one on the spot.
- **The section Services and prices**: a service with different prices for
  different levels shows the range ("$28 – $45") and the grey note "by level". In
  the window of a service, under the usual price, the block **Price by level** has
  a field for every level; an empty field means the level takes the usual price.
- **The widgets "Price" and "Master" in the app** show the same range and the same
  chip.
- **The history of a master** records that his level changed, without saying which.

A business that has no levels sees only the empty card **Levels** under the list of
masters, with a button to add the first level — and only if its role may change resources.
The price list, the window of a service and the widgets stay as they were until
the first level is made.

## What a level is

- A **name** of 1 to 60 characters, in the first language the business serves,
  once in a business, whatever the case. Translations of the name are kept like
  those of a service name (see [Languages of the business](service-languages.md)):
  a translation marked stale was made from an older name; changing the first
  language moves the names of the levels with the other texts.
- A **place** among the levels of the business, counted from 0 without gaps: the
  lowest first. A new level takes the place asked for and moves the rest down;
  moving a level moves the ones between its old place and the new one; deleting a
  level closes the gap. A place past the end is the last place.
- **Shared by all branches.** A level belongs to the business: "Top master" means
  the same in every branch.

## Masters on levels

- A master stands on **one level or none**. Only a master has a level: a place or a
  device is refused (`level.master_only`), and the database holds this too.
- Changing the **role** of a master to another role takes his level off in the same
  change. Deactivating a master keeps his level; a deactivated master is not put on
  another level until he is activated.
- Deleting a level takes it off the masters who stood on it and deletes the prices
  set for it — the masters then take the usual price of each service. The window
  asks for confirmation and says how many masters and how many prices are affected.

## Price by level

- A service has its **usual price** and, for any level, a price of its own. A level
  without a price of its own takes the usual one, and so does a master with no
  level. The price of a master is worked out in one place: the price of his level,
  if there is one, otherwise the usual price.
- Prices are decimals in the currency of the branch, with no more digits after the
  point than the currency has, like the price of a service. A branch without a
  currency takes no prices (`service.currency_required`). Changing the currency of a
  branch keeps the numbers of the prices of levels, as it does for the usual ones.
- A price can be set in the window of a service with the usual price — one save —
  or for many services at once ("Top master costs 10 more on everything"). The
  assistant asks for the second before it changes anything, as for any change of
  many things at once.
- The prices follow the field **price** of a service: a role that may not see the
  price does not see the prices of levels either, and may not change them.
- Booking: a new visit takes the price of the master it is booked with — the price of his
  level, or the usual one — and the finder, the booking page and the assistants name that
  price (see [Finding free time](finding-times.md)). A visit that is already booked keeps the
  price it was booked with, also when the master moves to another level.

## Who can do it

Looking at the levels is the right to see resources, making, renaming, moving and
deleting a level and putting a master on a level is the right to change them. A level is
the same in every branch, so making, renaming, moving and deleting one is only for a role of
the whole business: a role limited to some branches sees the levels, puts the masters of its
branches on a level and sets the prices of its services, but the rest is refused ("Your role in
this business doesn't allow this"; `role.forbidden`), because deleting a level takes the prices of every branch with it. The
prices of levels are the prices of services: the right to change services, without
the right closed on the price (see [Services, prices and currency](services-and-prices.md)).
Without the Client booking kit there are no levels.

## Tools and refusals

- `talemo_list_levels` lists the levels of a business in their order: `name`,
  `name_tr`, `position` and `masters`, how many masters in work stand on the level.
  The level of a master is `level` in `talemo_list_resources`; the level of a master
  who can do a service is `level_id` in `fits` of `talemo_list_services`.
- `talemo_create_level` takes `name` and, optionally, `name_tr`, `position` and
  `resource_ids`. The masters named stand on the new level at once, so "make the
  level Top master and put Anna on it" is one call. The answer has the level, `after`
  — the level before it, `null` for the first — and `moved`: each master that moved
  and the level he came from. Show the person `dry_run` first when masters move.
- `talemo_update_level` renames a level, changes `name_tr` (a whole map: a language
  left out loses its translation) or moves it to another `position`. The answer has
  the level as it is now and `was`, its name and place before.
- `talemo_delete_level` deletes a level. The answer has the level as it was, the IDs
  of the masters who stood on it, `prices` — how many prices went — and `services`.
  Ask the person before deleting; `dry_run` gives these numbers without deleting.
- `talemo_set_resource_level` puts a master on a level (`level_id`) or, with an empty
  `level_id`, takes the level off. The answer is the master. The same level again
  changes nothing.
- `level_prices` of `talemo_create_service` and `talemo_update_service` sets the prices
  of one service for levels: a list of `level_id` and `price`; an empty price takes the
  price of the level away, a level left out of the list keeps what it has.
  `talemo_list_services` answers `level_prices` the same way, one entry for every
  level that has its own price, and gives every master in `fits` his own `price`,
  the price of his level or the usual one: name that price with the master.
- `talemo_set_level_prices` sets or takes away the prices of many services of a
  branch for levels in one call: a list of `service_id`, `level_id` and `price`, at
  most 500, each pair once. The answer names every pair with the usual price
  (`base`) and the price of the level before (`before`) and after (`after`). Never
  make the real call before the person has seen the `dry_run` and said yes.
- A name already in the business is refused with status 409, code `record.duplicate`
  and `params.field` `name`. A master, a level or a service that is not in the
  business or in the branch is refused with `record.reference_missing`; a level that
  does not exist, with `not_found`. A place or a device on a level is
  `level.master_only` (status 422). A deactivated master or service is
  `resource.deactivated` or `service.deactivated` (409). A price that is not a
  decimal of the currency of the branch, a name that is empty or over 60 characters,
  and a negative place are `request.body_invalid`. A role that closes the price of
  services is refused with `role.field_forbidden`.
