Files
request-portal/src/webparts/requestPortal/forms/UnpaidLeave
Тимур Городецкий 2652b4694e feat: выбор причины и лимит 5 дней в заявлении на отпуск без сохранения заработной платы
Вместо свободного «В связи с» — обязательный выбор причины (брак, рождение
ребёнка, смерть близких, иные случаи); текст причины нужен только для иных
случаев. Отпуск — не более 5 календарных дней. Подавать за 14 дней нужно
только в иных случаях: остальные события заранее не планируются.
Причина хранится в новой Choice-колонке UnpaidLeaveReasonType.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 11:10:58 +05:00
..

Отпуск без содержания (hr-unpaid-leave)

Назначение: заявление сотрудника на отпуск без сохранения заработной платы. Категория: Отдел кадров Списки SP: «Отпуск без содержания — данные» / «Отпуск без содержания — согласование» RequestTypeId (внешний API маршрутов): плейсхолдер — получит новый числовой id при заведении типа в админке approval-route (как hr-vacation получил 11).

Маршрут

  • Тип заявки в approval-route API (/api/request-types): pageUrl «hr-unpaid-leave».
  • Фазы: только согласование. Фазы исполнения нет — после согласования заявка получает статус «Согласовано» (без Planner).
  • Матрица редактируема заявителем при новой заявке / черновике / возврате (как Vacation / RecruitingHire): useMatrixEditor(editable = !readOnly).

Особое поведение

  • Заявку можно подать за другого сотрудника. Поле «Сотрудник» — People-picker (Employee). Планируемый маршрут резолвится по e-mail выбранного сотрудника (getPlannedMatrix(..., data.Employee, ...)), reloadKey матрицы включает data.Employee.
  • Автоподстановка должности из профиля (SPS-JobTitle через approval.getJobTitle) — для текущего пользователя при создании и при выборе другого сотрудника.
  • Период вводится двумя датами (с / по), обе обязательны, конец ≥ начала. DaysCount считается при сохранении (включительно) для отчётности — в UI не показывается.
  • Причина (UnpaidLeaveReasonType, Choice) — обязательна: брак / рождение ребёнка / смерть близких / «В иных случаях». Только при «иных случаях» появляется обязательный текст причины (Reason). У заявок до появления колонки причины нет — их прежний текст из Reason по-прежнему показывается (isReasonTextShown).
  • Не более 5 календарных дней (MAX_DAYS) — при любой причине.
  • Правило «не позднее чем за 14 дней» (MIN_NOTICE_DAYS) — только для «иных случаев» (requiresAdvanceNotice): брак, рождение и смерть заранее не планируются.
  • Замещающий (Substitute, People) — необязателен.
  • Заголовок элемента (Title): Отпуск без содержания — {ФИО} — дд.мм.гггг.

Отличия от «Заявка на отпуск» (hr-vacation)

  • Те же «дата начала + количество дней»: даты окончания нет, праздники и выходные не считаются.
  • Добавлены поля «Причина» (UnpaidLeaveReasonType + Reason) и «Лицо замещающее» (Substitute).

Секции формы

RequestSection (сотрудник · должность · дата начала · количество дней · причина · замещающий)

Точки входа

  • rptype: hr-unpaid-leave
  • Режим согласующего (просмотр): есть (UnpaidLeaveView)
  • «Создать на основе»: нет