Направление работ: WebLk Код раздела: 5.5.1 Раздел: Заказы > Абонементы > Создание абонемента Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 10.08.26


1. Назначение

Данный раздел обеспечивает партнёру создание абонемента как группы заказов одного клиента по заданному периоду и расписанию.

Правила применения скидок и промокодов определяются в Back: 2.7.1 «Акции и промокоды», обработка заказов и групп — в Back: 3.2 «Процессинг заказов» и 3.3.1 «Процессинговые группы заказов», расчёт стоимости группы — в Back: 4.2.1 «Расчёт в группах заказов».

2. Ключевые понятия

Абонемент — объединённая в WebLk группа заказов одного клиента, для которой отображаются общий период, состав, стоимость и состояние оплаты.

Предзаказ без статуса — бронирование, которое отражает занятость времени, но не переводит заказ в статус «Резерв».

Промокод — ручная скидка, применяемая при указании кода и выполнении условий её активации.

Сбор — штраф, начисленный клиенту, который партнёр может учесть в стоимости заказа.

Партнерская зона — сущность для хранения всей связанной информации по площадкам и услугам представленных в интерфейсах платформы.

3. Scope

Входит

S1: Настройка параметров создаваемых заказов

S2: Расчёт стоимости создаваемой группы

S3: Создание предзаказов без статуса или резервов

S4: Обработка наложений при создании заказов (на будущую реализацию)

Не входит

4. BR

Указаны в пункте 4 разделов Back: 2.7.1 «Акции и промокоды», 3.2 «Процессинг заказов», 3.3.1 «Процессинговые группы заказов» и 4.2.1 «Расчёт в группах заказов».

5. Функциональные требования (UC + FR)

IDСценарийФункциональное требованиеBRВесСтатус
S1: FR5.5.1-1Партнёр начинает создание абонементаДействие добавления открывает панель «Новые заказы» для формирования группы заказов абонемента.1Реализовано \ OQ5.5.1-11, OQ5.5.1-8
S1: FR5.5.1-2Партнёр не выбрал клиентаДо выбора клиента остальные параметры абонемента и действия добавления заказов недоступны.1Реализовано \ OQ5.5.1-11, OQ5.5.1-8
S1: FR5.5.1-3Партнёр выбрал клиентаИнтерфейс активирует поля периода, дней недели, времени, объекта, площадки, опций в зависимости от сфер и дополнительных параметров заказа.1Реализовано \ OQ5.5.1-11
S1: FR5.5.1-4Партнёр задаёт период создания заказовПоля «С» и «До» определяют календарный период, в пределах которого создаются заказы абонемента.1Частично \ OQ5.5.1-1
S1: FR5.5.1-5Партнёр указал одинаковые даты начала и окончанияЕсли даты «С» и «До» совпадают, интерфейс создаёт заказ на один день и не позволяет выбирать дни недели.1Не реализовано \ OQ5.5.1-2
S1: FR5.5.1-6Партнёр задаёт расписание абонементаДля периода из нескольких дней интерфейс позволяет выбрать один или несколько дней недели и временной интервал создаваемых заказов.1Реализовано \ OQ5.5.1-12, OQ5.5.1-7
S1: FR5.5.1-7Партнёр выбрал объектИнтерфейс показывает доступные площадки и опции в зависимости от сфер выбранного объекта. Если для сферы предусмотрена одна опция, она может отображаться в одной строке.1Реализовано \ OQ5.5.1-13
S2: FR5.5.1-8Партнёр добавляет дополнительные позицииДобавление оборудования и услуг выполняется по правилам WebLk 5.3.1 «Создание бронирования» и применяется к создаваемым заказам абонемента.1Частично \ OQ5.5.1-3, OQ5.5.1-16
S2: FR5.5.1-9Партнёр применяет промокодИнтерфейс позволяет указать промокод и показывает результат его применения к времени и/или дополнительным позициям создаваемых заказов в соответствии с Back: 2.7.1 «Акции и промокоды».1Частично \ OQ5.5.1-3
S2: FR5.5.1-10К заказам применяется скидкаИнтерфейс учитывает применённые скидки в стоимости каждого заказа и общей стоимости абонемента и показывает исходные и уменьшенные суммы при наличии.1Не реализовано \ OQ5.5.1-3
S2: FR5.5.1-11Партнёр добавляет комментарийПоле «Комментарий администратора» позволяет сохранить общий комментарий при создании заказов абонемента.1Реализовано \ OQ5.5.1-14
S2: FR5.5.1-12Партнёр учитывает начисленный сборПри наличии начисленного клиенту сбора интерфейс показывает переключатель «Учитывать сбор» и пересчитывает итоговую стоимость при изменении его значения.1Не реализовано \ OQ5.5.1-4
S2: FR5.5.1-13Партнёр просматривает стоимость создаваемой группыДо создания интерфейс показывает итоговую стоимость группы заказов с учётом времени, дополнительных позиций, скидок, промокода и сбора при наличии.1Не реализовано \ OQ5.5.1-3
S3: FR5.5.1-14Партнёр создаёт предзаказы без статусаДействие «Закрыть время» создаёт группу предзаказов без статуса по заданному расписанию и открывает управление абонементом.1Частично \ OQ5.5.1-5, OQ5.5.1-9, OQ5.5.1-10, OQ5.5.1-15
S3: FR5.5.1-15Партнёр резервирует создаваемые заказыДействие «Зарезервировать» создаёт группу заказов в статусе «Резерв» по заданному расписанию и открывает управление абонементом.1Частично \ OQ5.5.1-5, OQ5.5.1-9, OQ5.5.1-10, OQ5.5.1-15
S4: FR5.5.1-16Интерфейс обнаружил наложение при создании заказов (на будущую реализацию)Интерфейс показывает сообщение «Не удалось создать N заказов» и для каждого проблемного заказа указывает дату, ранее выбранный интервал и причину «Невозможно создать заказ на занятое время».3Не реализовано \ OQ5.5.1-6
S4: FR5.5.1-17Партнёр устраняет наложение при создании заказов (на будущую реализацию)Для проблемной даты интерфейс позволяет выбрать объект, площадку и один из доступных диапазонов соответствующей длительности, удалить заказ из создаваемой группы или пропустить обработку. Если свободных диапазонов нет, интерфейс показывает «В эту дату нет свободного времени».3Не реализовано \ OQ5.5.1-6

6. Открытые вопросы

Сверка с кодом: BRD 5.5.1 v0.1 · репозиторий musbooking_personal_account · commit 93383777 / main · 12.08.26 · якоря features.fsd/order-form/ui/ProcessingGroupForm.vue (панель «Новые заказы»), features.fsd/order-form/model/processing-group-form.ui.ts (данные формы и запрос на создание), features.fsd/order-form/lib (правило повторения), features.fsd/order-form/ui/positions и features.fsd/order-form/ui/promo (позиции и промокод), widgets.fsd/processing-group-form (подключение панели), widgets.fsd/processing-groups-table и widgets.fsd/processing-group-details (таблица абонементов и карточка), shared.fsd/api/processing-groups (создание группы), pages/orders/processing-group (страницы списка и абонемента) Сводка: 17 требований — Реализовано 6 · Частично 5 · Не реализовано 6. 10 открытых вопросов (Бизнес 1 · Разработка 7 · Бизнес/Разработка 2) и 6 подтверждённых блоков без расхождений. Маршрутизация без сверки с гайдбуком (гайдбук не передавался).

IDИсточникВопросКомуСтатусРекомендацииИтоговое решение
OQ5.5.1-1Код FR5.5.1-4Требование говорит: период задаётся двумя полями — «С» и «До», которые определяют календарные границы абонемента. В коде пары полей нет: период выбирается одним полем-диапазоном с подписью «Период повторений» и плейсхолдером «Выберите период», а выбранное значение показывается строкой вида «01.09.2026 - 30.09.2026». В запросе на создание dateFrom/dateTo — это время начала и окончания заказа в первый день периода, а конец периода уходит отдельно, внутрь правила повторения (UNTIL). То есть «До» в интерфейсе и dateTo в запросе — разные вещи. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:19-53,301-312,608-617,636-641,662-663; features.fsd/order-form/lib/rrule-helpers.ts:71-95БизнесOpen(А) привести подписи интерфейса к BRD — два поля «С» и «До» либо диапазон с подписью «Период абонемента» (рекомендуется: «Период повторений» читается как расписание, а не как границы абонемента); (Б) зафиксировать в BRD фактический контрол (одно поле-диапазон «Период повторений») и описать, что конец периода передаётся правилом повторения.
OQ5.5.1-2Код FR5.5.1-5Требование говорит: если даты начала и окончания совпадают, интерфейс создаёт заказ на один день и не позволяет выбирать дни недели. В коде всё наоборот: выбрать одну и ту же дату началом и концом диапазона можно, но форма считается валидной только когда выбран хотя бы один день недели — иначе обе кнопки создания остаются заблокированными, а отправка формы отвечает «Заполните все обязательные поля». Пикер дней недели для однодневного периода никак не блокируется. Хуже того, если партнёр выберет день недели, не совпадающий с этой датой, правило повторения не даст ни одного вхождения — заказы просто не создадутся, без объяснения. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:195-210,557-568,589-593; components/UI/pickers/CoreDatePicker.vue:339-359; features.fsd/order-form/lib/rrule-helpers.ts:42-95РазработкаOpenЗавести тикет в Bitrix: для периода из одного дня не требовать выбор дней недели (подставлять день выбранной даты) и блокировать пикер дней недели; отдельно — не давать выбрать день недели, которого нет в выбранном периоде.
OQ5.5.1-3Код FR5.5.1-8, FR5.5.1-9, FR5.5.1-10, FR5.5.1-13Требование говорит: до создания интерфейс показывает итоговую стоимость группы с учётом времени, позиций, скидок, промокода и сбора, а по промокоду — результат его применения. В коде расчёта в форме абонемента нет вообще: в секции оборудования и услуг и в секцию промокода передаётся calculation: null, блока «Итого» в футере нет — там только две кнопки создания. Из-за этого сумма по разделу оборудования/услуг всегда «0₽», а карточка промокода показывает процент из самого промокода и нули вместо сумм (в консоль пишется «Нет данных calculationInfo»). Для одиночного заказа тот же расчёт есть — в форме заказа подключён useOrderCalculation и выведен блок «Итого к оплате». \ features.fsd/order-form/ui/ProcessingGroupForm.vue:162-181,193-211; features.fsd/order-form/ui/positions/List.vue:86-114; features.fsd/order-form/ui/promo/Section.vue:198-222; features.fsd/order-form/ui/OrderForm.vue:56-76,109-116,466РазработкаOpenЗавести тикет в Bitrix: подключить предварительный расчёт создаваемой группы (Back 4.2.1 «Расчёт в группах заказов») и вывести в форму сумму позиций, результат применения промокода (исходная и уменьшенная суммы) и блок итоговой стоимости группы. Пока расчёта нет, три требования S2 — FR5.5.1-9/10/13 — подтвердить нечем.
OQ5.5.1-4Код FR5.5.1-12Требование говорит: при наличии начисленного клиенту сбора форма показывает переключатель «Учитывать сбор» и пересчитывает итог при его изменении. В коде переключателя в форме абонемента нет, а в запрос на создание всегда уходит accountingForfeits: false — сбор клиента не учитывается ни при каком раскладе. В форме одиночного заказа такой переключатель есть и появляется, когда у клиента есть сбор. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:670; features.fsd/order-form/model/processing-group-form.ui.ts:82,121; features.fsd/order-form/ui/OrderForm.vue:97-107Бизнес/РазработкаOpen(А) определить, как один сбор клиента должен распределяться между N заказами абонемента (на первый заказ / на каждый / на группу целиком), и реализовать переключатель (рекомендуется: сейчас начисленный сбор молча теряется при создании абонемента); (Б) зафиксировать в BRD, что при создании абонемента сбор не учитывается и оформляется отдельно. Связать с OQ5.3.2-7 — там же обсуждается единое место управления сбором.
OQ5.5.1-5Код FR5.5.1-14, FR5.5.1-15Требование говорит: «Закрыть время» и «Зарезервировать» создают группу и открывают управление абонементом. В коде создание работает, но после ответа сервера панель просто закрывается и показывается уведомление — перехода на карточку абонемента нет: на странице списка обработчик только выводит уведомление, а на странице абонемента переход к созданной подгруппе закомментирован. Уведомление «Группа заказов успешно создана» при этом показывается дважды — из формы и со страницы. Обновления списка тоже нет: событие ProcessingGroupCreated слушает подписка, подключённая только на странице карточки абонемента, поэтому в таблице абонементов новая запись сразу не появляется. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:684-687; widgets.fsd/processing-group-form/ui/index.vue:44-47; widgets.fsd/processing-groups-table/ui/index.vue:87-90; pages/orders/processing-group/index.vue:45-47; pages/orders/processing-group/[id]/index.vue:45-49; processes.fsd/processing-group-sync/processing-group-sync.ts:46-58РазработкаOpenЗавести тикет в Bitrix: после успешного создания переходить на карточку абонемента (/orders/processing-group/{id}), убрать дублирующее уведомление и подписать страницу списка абонементов на события processing-group (либо инвалидировать список вручную после создания).
OQ5.5.1-6Код FR5.5.1-16, FR5.5.1-17Требование говорит: при наложении интерфейс показывает «Не удалось создать N заказов», по каждому проблемному заказу — дату, интервал и причину, и даёт выбрать другое время, удалить заказ или пропустить обработку (вес 3, «на будущую реализацию»). В коде в форме создания этого нет — поиск по текстам «Не удалось создать N заказов», «Невозможно создать заказ на занятое время», «В эту дату нет свободного времени» совпадений не дал. Частично сценарий закрыт уже после создания, в карточке абонемента: там есть индикатор «Заказов с ошибками: N», у каждого проблемного заказа — красный значок с текстом ошибки от сервера, а для выделенных проблемных заказов доступно действие «Удалить». \ поиск по указанным текстам по репозиторию — совпадений нет; features.fsd/processing-groups-table/ui/details.vue:128-140,333-344,386-404,671-676Бизнес/РазработкаOpen(А) реализовать разбор наложений в самой форме создания, как описано в S4 (рекомендуется: сейчас партнёр узнаёт о конфликтах, только открыв карточку абонемента вручную); (Б) зафиксировать, что конфликты разбираются в WebLk 5.5.2 «Карточка абонемента», и перенести S4 туда — тогда FR5.5.1-16/17 из этого раздела уходят.
OQ5.5.1-7Код FR5.5.1-6Требование говорит: для периода из нескольких дней партнёр выбирает дни недели и временной интервал создаваемых заказов. В коде выбор есть, но рабочие часы и перерывы для поля времени подтягиваются только по первому выбранному дню недели и применяются ко всем дням абонемента. Плюс нумерация дней в форме (1 = Пн … 7 = Вс) не совпадает с той, которую ждёт справочник рабочих часов (0 = Вс … 6 = Сб): для воскресенья значение 7 выходит за допустимый диапазон, справочник возвращает пусто и поле времени открывается на 00:00–23:59 без перерывов. В форме одиночного заказа день недели берётся штатным способом и такого расхождения нет. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:120-131,327-335,422-445; entities.fsd/partner-zone/lib/partner-zone.getters.ts:399-421; для сравнения features.fsd/order-form/ui/OrderForm.vue:251-263РазработкаOpenЗавести тикет в Bitrix: привести нумерацию дней недели к соглашению справочника (Вс = 0) и брать рабочие часы по пересечению всех выбранных дней либо проверять время отдельно для каждого дня расписания.
OQ5.5.1-8Код FR5.5.1-1, FR5.5.1-2Требование говорит: действие добавления открывает панель «Новые заказы» для формирования новой группы, и до выбора клиента остальные параметры недоступны. В коде панель открывается корректно, но форма не очищается при повторном открытии: очистка вызывается только если флаг «форма инициализирована» ложный, а он выставляется в «истину» при первом монтировании и больше не сбрасывается — ни при закрытии панели, ни после успешного создания. То есть второй раз партнёр увидит панель, уже заполненную данными предыдущего абонемента (включая выбранного клиента, а значит и разблокированные поля). \ features.fsd/order-form/ui/ProcessingGroupForm.vue:779-794; features.fsd/order-form/model/processing-group-form.ui.ts:96,108-133РазработкаOpenЗавести тикет в Bitrix: сбрасывать форму создания абонемента при закрытии панели и после успешного создания группы.
OQ5.5.1-9Код FR5.5.1-14, FR5.5.1-15Что нашли: кнопки «Закрыть время» и «Зарезервировать» не блокируются на время запроса — признак загрузки из хранилища формы получен, но нигде в интерфейсе не используется, а сами кнопки заблокированы только по незаполненным полям. Повторный клик до ответа сервера отправит второй запрос на создание, то есть партнёр может случайно создать два одинаковых абонемента (каждый — набор заказов на весь период). \ features.fsd/order-form/ui/ProcessingGroupForm.vue:195-210,258,589-692; features.fsd/order-form/model/processing-group-form.ui.ts:140-181РазработкаOpenЗавести тикет в Bitrix: блокировать обе кнопки и показывать индикатор на время запроса создания группы.
OQ5.5.1-10Код FR5.5.1-14, FR5.5.1-15Что нашли: источник заказа теряется при создании абонемента. В хранилище формы по умолчанию проставлен источник «Web ЛК», но метод очистки формы — который вызывается при первом открытии панели — пересобирает данные без него, и в запрос на создание поле источника не попадает. При этом в таблице заказов абонемента источник выводится отдельной колонкой «Источник», то есть заказы абонемента рискуют остаться без источника в интерфейсе и отчётах. \ features.fsd/order-form/model/processing-group-form.ui.ts:69-85,108-124; features.fsd/order-form/ui/ProcessingGroupForm.vue:657-673,779-794; features.fsd/processing-groups-table/ui/details.vue:348-356,715РазработкаOpenЗавести тикет в Bitrix: сохранять источник «Web ЛК» при очистке формы либо проставлять его в момент отправки запроса на создание.
OQ5.5.1-11Код FR5.5.1-1, FR5.5.1-2, FR5.5.1-3Что подтверждено: в таблице абонементов есть действие добавления (кнопка «+»), которое открывает боковую панель с заголовком «Новые заказы»; на десктопе таблица сжимается на ширину панели. Первым полем идёт выбор клиента, все остальные поля обёрнуты в блок, который до выбора клиента гасится и перестаёт принимать клики, а обе кнопки создания заблокированы, пока не заполнены клиент, период, дни недели, время, площадка и опция. После выбора клиента становятся доступны период, дни недели, время, выбор объекта и площадки, опции, позиции, промокод и комментарий. \ features.fsd/processing-groups-table/ui/index.vue:50-51,322-325; widgets.fsd/processing-groups-table/ui/index.vue:14-19,37-52,73-75; widgets.fsd/processing-group-form/ui/index.vue:2-14; features.fsd/order-form/ui/ProcessingGroupForm.vue:11-17,267,557-568,926-938—ПодтвержденоРасхождения нет. Отличие только в составе контрола площадки — см. OQ5.5.1-13; про повторное открытие панели — см. OQ5.5.1-8.—
OQ5.5.1-12Код FR5.5.1-6Что подтверждено: расписание задаётся полем «Дни недели» (чекбокс «Ежедневно» + сетка Пн…Вс, в поле выводится «Все дни» или «Пн, Ср, Пт») и полем времени с началом и окончанием. Из выбранных дней собирается правило повторения: все семь дней — «ежедневно», иначе — «еженедельно» с перечнем дней, и в обоих случаях конец периода уходит в правило. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:56-131,327-386,636-641; features.fsd/order-form/lib/rrule-helpers.ts:42-95—ПодтвержденоРасхождения по составу полей нет; дефект с рабочими часами вынесен в OQ5.5.1-7.—
OQ5.5.1-13Код FR5.5.1-3, FR5.5.1-7Что подтверждено: объект и площадка выбираются одним контролом «Выбор площадки» — деревом объектов партнёрской зоны с их площадками и одиночным выбором. После выбора объекта состав опций подтягивается по сфере этого объекта: «Вид работ» показывается, если у сферы есть такие опции, «Кол-во человек» — если у сферы есть диапазонная опция, при этом максимум ограничен вместимостью выбранной площадки. Если поле одно, оно занимает всю ширину строки — это и есть «одна опция в одной строке» из требования. Первая доступная опция подставляется автоматически. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:134-158,571-583,701-743; features.fsd/order-form/model/processing-group-form.ui.ts:63-66; entities.fsd/partner-zone/lib/partner-zone.getters.ts:556-605; features.fsd/order-form/ui/fields/Options.vue:1-28,148-163—ПодтвержденоРасхождения по поведению нет. → правка BRD: в требованиях объект и площадка описаны как два поля, в интерфейсе это один контрол «Выбор площадки» — стоит согласовать формулировку.—
OQ5.5.1-14Код FR5.5.1-11Что подтверждено: в форме есть поле «Комментарий администратора», его значение сохраняется в данных формы и уходит в запрос на создание группы одним общим комментарием для всех создаваемых заказов. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:184-189,534-540,668; shared.fsd/api-contracts/processing-groups/processing-groups.schema.ts:157-176—ПодтвержденоРасхождения нет.—
OQ5.5.1-15Код FR5.5.1-14, FR5.5.1-15Что подтверждено: в футере формы две кнопки — «Закрыть время» и «Зарезервировать»; они отличаются только признаком резервирования в запросе (asReserve = «нет» / «да»), всё остальное — клиент, период, расписание, площадка, опции, позиции, промокод, комментарий — уходит одинаково. Отправка формы клавишей Enter приравнивается к «Зарезервировать». Фактический статус созданных заказов определяется сервером (Back 3.3.1) и фронтом не проверяется. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:194-211,589,657-682,694-698; shared.fsd/api-contracts/processing-groups/processing-groups.schema.ts:157-176; shared.fsd/api/processing-groups/processing-groups.api.ts:181-212—ПодтвержденоРасхождения в части создания нет; поведение после создания вынесено в OQ5.5.1-5.—
OQ5.5.1-16Код FR5.5.1-8Что подтверждено: оборудование и услуги добавляются теми же компонентами, что и в форме одиночного заказа (5.3.1): кнопка «Добавить оборудование» / «Добавить услуги», внутренняя панель со списком и деталями позиции, счётчики количества у выбранных позиций. Выбранные позиции складываются в один список с признаком типа (оборудование / услуга) и уходят в запрос на создание группы, то есть применяются ко всем создаваемым заказам. \ features.fsd/order-form/ui/ProcessingGroupForm.vue:161-175,462-513,643-655; features.fsd/order-form/ui/positions/Section.vue:1-56; features.fsd/order-form/ui/positions/Drawer.vue—ПодтвержденоМеханика выбора совпадает с 5.3.1; отсутствие стоимости позиций — в OQ5.5.1-3.—

Отрезано в обратном проходе (не бизнес-значимо, 3 находки): в форме есть мёртвый код — импортирована функция человекочитаемого показа расписания («Каждые ПН, СР до 31.12.2025»), но нигде не используется, как и обработчик отмены и вычисляемые dateFrom/dateTo (features.fsd/order-form/ui/ProcessingGroupForm.vue:227-230,296-298,585-587); в шапке компонента висит незакрытый TODO «Добавить скелетон загрузки» (features.fsd/order-form/ui/ProcessingGroupForm.vue:3); ошибка из хранилища формы (error) получена, но в интерфейс не выводится — сообщение об ошибке создания показывается только через уведомление в обработчике (features.fsd/order-form/ui/ProcessingGroupForm.vue:258,688-691).

0 items under this folder.