> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yume.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Смены сотрудников

> Список рабочих смен персонала на точках проката и детализация оплат, возвратов, услуг и штрафов по каждой смене.

Полный перечень полей — в [глоссарии смен сотрудников](/ru/logic/metrics/workshifts-glossary).

## Что показывает отчёт

Отчёт «Смены сотрудников» показывает список рабочих смен персонала на точках проката и подробную детализацию по каждой смене: сколько аренд оформил сотрудник, сколько принял оплат, сколько сделал возвратов, сколько оказал дополнительных услуг и сколько было штрафов. Отчёт read-only в том смысле, что сам не открывает и не закрывает смены — открытие/закрытие смены происходит в другом функционале; однако при открытии детализации одной смены отчёт **пересчитывает** её итоговые показатели и сохраняет их заново, **если пересчёт дал другой результат** (см. ниже).

Отчёт состоит из двух экранов:

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

<Info>
  Доступ к обоим экранам проверяется правом на просмотр рабочих смен. Если у роли сотрудника нет права на просмотр смен, оба запроса будут отклонены.
</Info>

## Список смен

### Что возвращает список

По каждой смене в списке отдаются: начало смены, конец смены, сотрудник, точка проката и «Итоги смены» — тот же агрегированный JSON, что хранится в самой смене (см. раздел «Ключи итогов смены» ниже). Разбивка по способам оплаты, возвратам и услугам в списке не считается — она доступна только в детализации конкретной смены. Итоги в списке берутся как есть из сохранённых данных смены и не пересчитываются при каждом запросе списка.

Список не ограничен точкой проката или сотрудником по умолчанию — отдаются все смены компании, доступные фильтрам и правам пользователя.

### Фильтрация

| Фильтр                    | Что делает                                                               |
| ------------------------- | ------------------------------------------------------------------------ |
| По сотруднику             | точное совпадение или список сотрудников                                 |
| По точке проката          | точное совпадение или список точек                                       |
| По началу смены (от / до) | сравнение по дате начала смены                                           |
| По концу смены (от / до)  | сравнение по дате окончания смены, с особым правилом для незакрытых смен |

<Warning>
  Фильтр по окончанию смены («от» и «до») никогда не отбрасывает ещё не закрытые смены: смена без даты окончания проходит фильтр независимо от заданного диапазона дат. То есть если задан период «конец смены с 1 по 10 числа», в выдачу всё равно попадут все текущие (не закрытые) смены сотрудников — это сделано, чтобы открытые смены не «пропадали» из отчёта при фильтрации по дате закрытия.
</Warning>

Поиск по тексту ищет только по имени пользователя (логину), фамилии и имени сотрудника, который вёл смену; по названию точки проката текстовый поиск не работает (доступен только точный фильтр).

### Сортировка

Список можно сортировать по началу смены, концу смены, точке проката и сотруднику. Сортировка по умолчанию (если параметр сортировки не передан) — от самой новой смены по дате начала к самой старой.

## Детализация смены

### Что происходит при открытии одной смены

В отличие от списка, при запросе детализации одной смены отчёт не просто читает сохранённые данные — он пересчитывает «Итоги смены» заново и одновременно составляет три дополнительных разреза: «Оплаты за смену», «Возвраты за смену» и «Услуги за смену». Эти три разреза не хранятся в базе — они существуют только в рамках одного запроса детализации и строятся на лету. А пересчитанные «Итоги смены» сохраняются обратно в саму смену, но **только если пересчёт дал другой результат**: если содержимое итогов совпало с тем, что уже записано, запись не выполняется.

<Note>
  Пересчёт итогов может выполняться при каждом открытии детализации, поэтому для точки проката с большим числом операций за смену открытие детализации — не бесплатная операция. Но само сохранение теперь происходит только при реальном изменении цифр: повторные просмотры одной и той же смены больше не переписывают её итоги одним и тем же значением.
</Note>

<Note>
  Закрытая смена по-прежнему **может** обновиться: если задним числом изменили аренду, оплату или услугу, попавшую в её период, следующее открытие детализации пересчитает и перезапишет её итоги. Полной «заморозки» закрытых смен нет — если итоги смены используются как основание для расчёта зарплаты, стоит фиксировать их отдельно, вне этого отчёта.
</Note>

### Как определяется «конец смены» для расчётов

Все расчёты внутри смены (аренды, оплаты, возвраты, услуги) используют не поле «Конец смены» напрямую, а вычисляемое поле «Конец смены (эффективный)»:

* если смена закрыта — используется фактическое время закрытия;
* если смена ещё открыта (конец смены не проставлен) — используется текущий момент времени на момент запроса.

Благодаря этому у открытой смены итоги и детализация всегда считаются «по текущее время», а не оказываются пустыми до момента закрытия. Обратная сторона этого: повторные запросы детализации по одной и той же ещё не закрытой смене могут показывать разные (растущие) итоги, даже если между запросами ничего вручную не менялось.

### Расчёт «Оплаты за смену» и «Возвраты за смену»

Берутся успешные оплаты, которые:

* приняты сотрудником, ведущим смену (по полю «кто создал операцию»);
* совершены в промежутке от начала смены до эффективного конца смены;
* ещё не включены ни в один финансовый акт сверки (взаиморасчёт/стейтмент);
* относятся к аренде **той же точки проката**, что и смена, либо не привязаны к аренде вовсе.

Эти оплаты группируются по способу оплаты — для каждого способа считается количество операций и сумма. Отдельно тем же способом собираются возвраты: из того же набора оплат отбираются те, у которых есть связанный возврат, и группируются по способу оплаты аналогично.

<Info>
  Оплата по аренде другой точки проката в детализацию смены больше не попадает. А вот оплата, не привязанная ни к одной аренде (например, оплата продажи или свободный приход в кассу), учитывается независимо от точки — у неё просто нет точки проката, по которой её можно было бы отсеять.
</Info>

<Warning>
  Оплаты, которые уже привязаны к акту сверки (закрыты в рамках взаиморасчёта), из расчёта детализации смены исключаются полностью — они не попадут ни в «Оплаты за смену», ни в пересчитанные итоги оплат/возвратов смены, даже если фактически были приняты в её период.
</Warning>

### Расчёт «Услуги за смену»

Берутся оказанные дополнительные услуги по аренде, которые сотрудник либо сам оформил, либо участвовал в их обработке (см. ниже «Отбор аренд»), за период с начала смены до эффективного конца смены. Из выборки исключаются услуги по арендам в статусе «отменена» и «черновик/заявка». Услуги группируются по конкретной услуге: считается суммарная стоимость и количество оказаний.

<Info>
  Точка проката проверяется в **обоих** путях отбора — и когда аренду создал сотрудник смены, и когда он лишь совершил над ней действие. Услуга по аренде другой точки проката в детализацию услуг этой смены не попадает.
</Info>

### Пересчёт «Итогов смены»

При открытии детализации заново пересчитываются все восемь стандартных показателей блока «Итоги смены» (количество и сумма аренд, количество и сумма штрафов, количество и сумма успешных оплат, количество и сумма возвратов), плюс дополнительные числовые пользовательские поля аренды компании (если в настройках компании определены собственные числовые поля для аренд — они суммируются точно так же, по такому же периоду и правилам отбора аренд). Пересчитанные значения сохраняются в саму смену только при их фактическом изменении: если новый результат совпал с сохранённым, запись в базу не выполняется.

#### Отбор аренд для «Количества аренд» и «Суммы аренд»

Считаются аренды, которые не находятся в статусе «отменена» или «черновик/заявка», относятся к точке проката этой смены и связаны с ней одним из двух способов:

* аренда была создана сотрудником смены в период смены; или
* сотрудник смены совершил хотя бы одно действие (любое фиксируемое действие по заявке — например, обработку, изменение статуса и т.п.) над арендой в период смены.

«Сумма аренд» считается по цене аренды со скидкой, а не по базовой цене.

<Info>
  Точка проката проверяется в обоих случаях, поэтому аренда другой точки в итоги смены не попадёт, даже если сотрудник что-то с ней делал в свою смену. То же правило действует и при отборе услуг для детализации (см. выше).
</Info>

#### Отбор штрафов

«Количество штрафов» считает аренды из того же отбора, у которых размер штрафа больше нуля. «Сумма штрафов» — сумма штрафов по этим арендам.

#### Отбор оплат и возвратов для итогов

«Количество оплат» и «Сумма оплат» в итогах смены берутся из того же набора успешных, ещё не сверенных оплат, что и в разделе «Оплаты за смену» — то есть это агрегат по всем способам оплаты вместе. Аналогично «Количество возвратов» и «Сумма возвратов» — агрегат по всем способам из раздела «Возвраты за смену».

#### Дополнительные пользовательские числовые поля

Если у компании настроены собственные числовые поля аренды (целочисленные или дробные), каждое такое поле суммируется отдельно по тому же набору аренд, что и «Сумма аренд». При этом для каждой аренды берётся значение поля только если оно похоже на корректное неотрицательное число (просто число, возможно с дробной частью, без знака минуса) — иначе для этой аренды вклад поля в сумму считается нулём, а не приводит к ошибке.

## Ключи итогов смены (extra)

| Ключ                 | Русское название     | Что означает                                                                                           |
| -------------------- | -------------------- | ------------------------------------------------------------------------------------------------------ |
| количество аренд     | Количество аренд     | число аренд, отнесённых к смене (созданы сотрудником или обработаны им), кроме отменённых и черновиков |
| сумма аренд          | Сумма аренд          | сумма по цене со скидкой этих аренд                                                                    |
| количество штрафов   | Количество штрафов   | число аренд из этого набора, где есть штраф больше нуля                                                |
| сумма штрафов        | Сумма штрафов        | суммарный размер этих штрафов                                                                          |
| количество оплат     | Количество оплат     | число успешных, ещё не сверенных оплат сотрудника за смену                                             |
| сумма оплат          | Сумма оплат          | сумма этих оплат                                                                                       |
| количество возвратов | Количество возвратов | число возвратов среди этих оплат                                                                       |
| сумма возвратов      | Сумма возвратов      | сумма этих возвратов                                                                                   |

<Tip>
  Отдельного ключа «Услуги» в «Итогах смены» нет: услуги видны только в детализации смены как отдельный список — суммарная сумма и количество услуг в json-итогах смены не сохраняются.
</Tip>

## Уведомление о закрытии смены

Когда смена закрывается (в основном модуле смен, вне этого отчёта), в фоне формируется и отправляется в Telegram сообщение-отчёт сотруднику, который вёл смену: точка проката, начало и конец смены, значения дополнительных числовых полей, кассир, а также показатели, аналогичные «Итогам смены» (аренды, оплаты по способам, возвраты по способам, услуги по позициям, штрафы). Это использует тот же пересчёт, что и детализация смены в отчёте метрик, поэтому цифры по арендам, оплатам, возвратам и штрафам в уведомлении и в детализации совпадают.

<Note>
  Строка с общей суммой и количеством услуг в этом уведомлении читается из «Итогов смены», а там, как указано выше, такого ключа нет — поэтому в этой конкретной строке уведомления сумма и количество услуг всегда показываются нулевыми. Список услуг построчно (по каждой оказанной услуге) при этом формируется корректно и показывает реальные данные.
</Note>

Уведомление отправляется только если у сотрудника есть привязанный Telegram-аккаунт в компании.

## Как это используется

Отчёт нужен, чтобы:

* контролировать, сколько аренд, оплат и услуг фактически прошло через конкретного сотрудника за смену;
* сверять кассу смены — сумму принятых оплат по способам оплаты и сумму возвратов;
* видеть штрафы, начисленные в течение смены;
* оценивать нагрузку и результативность сотрудников по точкам проката и периодам.

<Note>
  Отчёт не выполняет открытие/закрытие смены и не меняет расписание сотрудников — просмотр списка не изменяет данные, а открытие детализации перезаписывает сохранённые итоги смены только тогда, когда они действительно изменились.
</Note>

## Особенности поведения

* Все временные сравнения внутри смены используют не сохранённое поле конца смены, а вычисляемый «эффективный конец»: для ещё не закрытой смены это текущее время на момент запроса, поэтому повторные запросы к одной и той же открытой смене могут давать разные (растущие) итоги.
* Оплаты, уже включённые в акт финансовой сверки, полностью исключаются из расчёта детализации смены — они не отражаются ни в оплатах/возвратах смены, ни в её итогах, даже если фактически были приняты в её период.
* Аренды, услуги и оплаты по арендам отбираются строго по точке проката смены. Оплата без привязки к аренде точки проката не имеет, поэтому попадает в смену независимо от того, где она была принята.
* Итоги смены записываются в базу только при фактическом изменении содержимого, поэтому повторные открытия детализации не создают лишних записей; закрытая смена при этом не «заморожена» и обновится, если задним числом изменить попавшие в её период данные.
* Дополнительные пользовательские числовые поля аренды суммируются в итогах смены только если значение поля похоже на неотрицательное число; для аренд с нечисловым, отрицательным или отсутствующим значением поля вклад в сумму по этому полю считается нулём без ошибки.
* В списке смен (в отличие от детализации) итоги смены берутся как есть из сохранённого поля и не пересчитываются — значения могут быть устаревшими, если смена не открывалась через детализацию заново после изменений в связанных данных.
* В фоновом уведомлении о закрытии смены итоговая строка по сумме и количеству услуг всегда показывает ноль из-за отсутствующего ключа в итогах смены; при этом построчный список оказанных услуг в том же сообщении формируется отдельно и отображается корректно.

<Info>
  - Доступ к обоим экранам отчёта (список и детализация) даёт любое право из общего набора прав аналитики у штатного сотрудника компании — отдельного права именно на смены, которое можно выдать независимо от прочих отчётов раздела, нет.
  - Поиск в списке смен ищет только по логину, фамилии и имени сотрудника, который вёл смену — по названию точки проката текстовый поиск не работает (только точный фильтр).
</Info>

## Связанные страницы

<CardGroup cols={2}>
  <Card title="Глоссарий: Смены сотрудников" icon="book" href="/ru/logic/metrics/workshifts-glossary">
    Полный перечень полей смены, итогов и разрезов детализации.
  </Card>

  <Card title="Метрики и аналитика" icon="chart-line" href="/ru/logic/metrics">
    Общий обзор модуля метрик и ссылки на все отчёты аналитики.
  </Card>

  <Card title="Обзор и общая сводка" icon="gauge" href="/ru/logic/metrics/overview">
    Дневная сводка по компании: доход, заявки и детализация — точка входа в аналитику.
  </Card>

  <Card title="Финансы: список, PnL, движение денег" icon="money-bill-wave" href="/ru/logic/metrics/finances">
    Финансовые отчёты компании: список операций, прибыли и убытки, движение денег.
  </Card>

  <Card title="Транзакции" icon="receipt" href="/ru/logic/metrics/transactions">
    Сводка транзакций: разбивка по видам оплаты и постраничный список операций.
  </Card>

  <Card title="Штрафы" icon="gavel" href="/ru/logic/metrics/penalties">
    Учёт штрафов по арендам: автоматическое начисление, штрафы вручную и статус оплаты.
  </Card>

  <Card title="Скидки" icon="percent" href="/ru/logic/metrics/discounts">
    История применения скидок к арендам и сводная группировка по каждой скидке из справочника.
  </Card>

  <Card title="Депозиты" icon="vault" href="/ru/logic/metrics/deposits">
    Залоги по аренде: денежные и предметные, статусы и фактические платежи.
  </Card>

  <Card title="Услуги" icon="sparkles" href="/ru/logic/metrics/services">
    Метрики дополнительных услуг: общая сводка, список по видам, по исполнителям и история.
  </Card>

  <Card title="Зарплаты и субаренда сотрудников" icon="wallet" href="/ru/logic/metrics/salaries-sublease">
    Расчёт зарплат по выполненным действиям и учёт субаренды инвентаря сотрудникам.
  </Card>

  <Card title="Амортизация и окупаемость инвентаря" icon="arrow-trend-down" href="/ru/logic/metrics/depreciation-payback">
    Амортизация единиц инвентаря и накопленная окупаемость дохода по группам и единицам.
  </Card>

  <Card title="Эффективность инвентаря" icon="gauge-high" href="/ru/logic/metrics/efficiency">
    Загрузка и простой инвентаря по комплектам, группам и отдельным единицам.
  </Card>

  <Card title="Рефералы и клиенты" icon="users" href="/ru/logic/metrics/referrals-clients">
    Реферальная программа (агенты и начисления) и клиентская аналитика: рост, отток, LTV.
  </Card>

  <Card title="Модули: доставки, мастерская, воронки, склад, инвентаризации" icon="truck" href="/ru/logic/metrics/modules">
    Отчётность прикладных модулей: доставки, мастерская, воронки продаж, продажи и инвентаризации.
  </Card>

  <Card title="Бонусы сотрудников" icon="gift" href="/ru/logic/metrics/bonuses">
    Баланс, история и общая сводка бонусных начислений клиентам.
  </Card>
</CardGroup>
