---
title: Визиты и их статусы
summary: Визит — одна запись клиента на одну или несколько услуг, занимающая мастера, место и аппарат. Он записан, подтверждён, состоялся или отменён; визит без записи вносят задним числом.
tools: [talemo_book_visit, talemo_record_walk_in, talemo_get_visit, talemo_list_visits, talemo_get_calendar]
related: [finding-times, moving-and-cancelling-visits, visit-notices, resources, services-and-prices, ../clients/contact-card]
search: [запись, визит, статус записи, клиент без записи]
---

# Визиты

Визит связывает карточку клиента (см. [Карточка контакта](../clients/contact-card.md)),
филиал, одну или несколько услуг, ресурсы, которые они занимают, и время. Все услуги
визита записывают, переносят и отменяют вместе. Мастер у визита один, а место и аппарат — у каждой услуги
свои: маникюр на столе и педикюр на кушетке — один визит. Визиты живут в **Календаре** веба.

## Статусы

- **записан** — визит есть и ждёт;
- **подтверждён** — человек нажал **Подтвердить** на записанном визите;
- **состоялся** — визит закрыт с тем, как всё прошло на самом деле;
- **отменён** — с причиной (см.
  [Перенос и отмена визитов](moving-and-cancelling-visits.md)).

**Не закрыт** — пометка на визите, она лежит вне четырёх статусов. Записанный или подтверждённый визит, чьё
время прошло, носит её, пока человек не отметит, что он состоялся, или не отменит
его. Календарь показывает, сколько визитов не закрыто, а **Не закрытые визиты**
перечисляют их с кнопкой **Разобрать**. Пока их не разберут, выручка этих дней
неполная.

## Запись

Визит записывают через подбор (см. [Подбор времени](finding-times.md))
инструментом `talemo_book_visit`: карточка клиента, услуги, начало и, если нужно,
ресурсы. Начало должно лежать на шаге записи, в будущем, в открытом времени и быть
свободным. Карточка из «Не разобраны» становится клиентом, когда на неё записывают
визит.

Если человека ещё нет в контактах, вместо карточки называют **нового клиента**: имя и номер
телефона (в окне записи — **Для кого → Новый клиент**, в инструментах — `new_party` вместо `party_id`,
названо должно быть что-то одно). Talemo ищет этот номер среди телефонов и номеров WhatsApp ваших
контактов. Нашёл — визит ложится на найденную карточку под её именем, введённое имя не сохраняется, и
человек видит, на чью карточку записали. Не нашёл — заводит карточку клиента и записывает на неё; в
истории контакта останется строка «Карточку завели при записи на визит». Нужны право добавлять контакты
и открытое поле «Телефон»; без права ответ — «У вас нет права добавлять клиентов. Выберите клиента из
контактов или попросите это право у владельца.». Показ (`dry_run`) номер не ищет: он всегда показывает
новую карточку с введённым именем.

Онлайн-администратор тоже записывает, переносит и отменяет визиты, но только для
клиента, с которым говорит в этой переписке.

## Цены

Каждая услуга визита берёт цену и валюту из прайса, когда визит записывают (см.
[Услуги, цены и валюта](services-and-prices.md)). Правка прайса записанные
визиты не меняет. **Изменить цену** правит цены только одного визита, а история
визита хранит, кто их изменил и когда. Роль, которой закрыто поле «Цена», цен
визитов не видит вовсе.

## Визит, который состоялся

**Закрыть визит** записывает, как было на самом деле: время, кто делал, какие услуги
и сколько заплатили. Всё это идёт в тот же визит, а план остаётся в его истории.
Закрытый визит можно закрыть ещё раз, поправив его, и каждая правка сохраняется.
Время мастера на деле и есть время визита. Место и аппарат остаются такими, как их
записали: у услуги, которая была в записи, свой записанный отрезок вместе с уборкой, и
закрытие не двигает его вслед за настоящим временем. Услуга, которую добавили при закрытии,
получает долю настоящего времени, а время делится между услугами по их длительности в
прайсе. Её место — то же, что у соседней услуги, если оно ей подходит; если подходит
несколько мест, его можно выбрать в окне. Услуга, которую не сделали, освобождает своё место.
В карточке визита у каждого места и аппарата названы услуги, ради которых он занят: эту связь
запоминает запись, и закрытие со сдвигом, повторное закрытие и правка цены её не меняют, так что
стол остаётся с маникюром, а кушетка — с педикюром. У визитов, записанных до того, как связь
стали запоминать, услугу относят к месту своей роли, с которым её настоящее время пересекается
дольше всего.

## Визит без записи

**Визит без записи** вносит клиента, который пришёл без записи. Он сразу пишется как
состоявшийся и всегда в прошлом: его конец не может быть позже, чем сейчас. Подбор и
шаг тут не нужны, только настоящее время. Если это время лежит вне открытого времени
ресурса, **Продлить день и записать** открывает его в дне этого ресурса, и день
становится «изменён вручную». Инструмент — `talemo_record_walk_in`. Подтверждение и
напоминание для такого визита не создаются. Клиента называют так же, как при
записи: карточкой или новым клиентом по имени и номеру. Маникюр на столе и педикюр на
кушетке — один визит одного мастера, как при записи; когда услуге подходит несколько мест,
назовите то, что было занято на каждой услуге.

## Кто может

Подбор, просмотр, запись, правка, перенос, отмена, запись факта и удаление — отдельные
права уровня филиала; они есть у роли «Администратор». Право можно ограничить «своим»:
тогда человек видит и записывает только визиты на ресурс, которым работает.

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

- Визит записывают только через подбор: сначала `talemo_find_times`, потом `talemo_book_visit` с `party_id` (карточка клиента) или `new_party` (новый клиент: `name` и `phone` с `address` и, номеру без `+`, `country`; ровно одно из двух, иначе `request.body_invalid`), `service_ids`, `start` варианта и его `resource_ids`. Вариант передают как есть. Запись проверяет начало ещё раз, поэтому время к этому моменту может уйти: статус 409, код `slot.overlap`; время вне открытого времени ресурса — `visit.outside_schedule` и `params.resource_id`; начало в прошлом — `visit.past`; начало мимо шага — `request.body_invalid` и `params.field` `start`; ресурс, который не делает эти услуги, — статус 422, код `visit.resource_unfit`. Контакт из категории «Не разобраны» становится клиентом. С `new_party` ответ настоящей записи несёт `party_match`: `found` — карточка с этим номером была, визит лёг на неё под её именем, `created` — карточку завели; показ `party_match` не несёт. Без права добавлять контакты — статус 403, код `role.forbidden`, `params.capability` `party.create`: скажите человеку, что права нет, и предложите выбрать клиента из контактов или попросить право у владельца; роль, у которой закрыто поле «Телефон», получает `role.field_forbidden`.
- Статусы: записан, подтверждён, состоялся и отменён. `talemo_get_visit` показывает один визит: услуги по порядку, кто когда занят и, если роль вправе их видеть, цены. `talemo_list_visits` перечисляет в `visits` визиты филиала за период, одного контакта (`party_id`) или, с `unclosed`, прошедшие визиты, которые всё ещё записаны или подтверждены и которые нужно отметить состоявшимися или отменить. `talemo_get_calendar` показывает сетку на один–семь дней и считает не закрытые визиты в `unclosed_count`.
- `own_resource_ids` есть в ответах `talemo_list_visits` (рядом с `visits`) и `talemo_get_calendar` только тогда, когда человек видит лишь визиты ресурсов, связанных с ним: это ID этих ресурсов. Пусто — ни один ресурс в календаре с ним ещё не связан, поэтому его визитов не видно; поля нет — он видит все визиты филиала.
- У каждого визита есть `source`: `page` — клиентка записалась сама на странице записи филиала (см. [Страница записи филиала](branch-booking-page.md)), `salon` — все остальные случаи, записал ли человек, онлайн-админ или подключённый инструмент. Его показывают `talemo_get_visit`, `talemo_list_visits` и `talemo_get_calendar`.
- Прошедший визит записывают через `talemo_record_walk_in`, сразу как состоявшийся, с `party_id` или `new_party`, `service_ids`, `start`, `end` и, по желанию, `resource_ids`, `service_resources` (какое место или аппарат делал какую услугу, парами `service_id` и `resource_id`; мастер остаётся в `resource_ids`, а ресурс, который услуге не годится, отклоняется с `visit.resource_unfit`) и `price`. Он заканчивается не позже чем сейчас, иначе вызов отклоняется со статусом 409 и кодом `visit.future`. Время вне открытого времени ресурса отклоняется с `visit.outside_schedule`, если `extend_schedule` не откроет его в дне ресурса: скажите об этом человеку заранее.
- Когда человек просит записать на неоткрытое время, сначала откройте время (см. [График ресурса](resource-schedule.md)); подбор никогда не предлагает закрытое и занятое время.
- Услуги визита берут цену из прайса при записи, в валюте филиала.
