Files
request-portal/src/webparts/requestPortal/forms/Vacation

Заявка на отпуск (hr-vacation)

Назначение: заявление сотрудника на отпуск (перенос формы из отдельной web part pto-tracker). Категория: Отдел кадров Списки SP: «Заявка на отпуск — данные» / «Заявка на отпуск — согласование» RequestTypeId (внешний API маршрутов): 11 (в старой pto-tracker было 1; при заведении типа в админке портала получил новый id 11)

Маршрут

  • Тип заявки в approval-route API (/api/request-types): id 11, pageUrl «hr-vacation», listId «/sites/requests/Lists/List5», section «Кадры».
  • Фазы: только согласование. Фазы исполнения нет — после согласования заявка просто получает статус «Согласовано» (никакого Planner, в отличие от Ticket1C).
  • Матрица редактируема заявителем при новой заявке / черновике / возврате (как RecruitingHire / WorkplaceSetup): useMatrixEditor(editable = !readOnly). Заявитель может добавлять/удалять/переставлять согласующих поверх планируемого маршрута.

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

  • Заявку можно подать за другого сотрудника. Поле «Сотрудник» — People-picker (колонка User Employee). Планируемый маршрут резолвится по e-mail выбранного сотрудника (getPlannedMatrix(..., data.Employee, ...)), а не текущего пользователя — поэтому reloadKey матрицы включает data.Employee.
  • Автоподстановка должности. Новая заявка предзаполняется текущим пользователем (email + должность из профиля SPS-JobTitle через approval.getJobTitle). При выборе другого сотрудника его должность подтягивается так же. Ошибка профиля не мешает форме — поле просто остаётся как есть.
  • Дата окончания не вводится — считается при сохранении: начало + (дни − 1) и пишется в колонку EndDate (обязательна в списке, но в UI её нет).
  • Заголовок элемента (Title): Отпуск — {ФИО} — дд.мм.гггг.

Секции формы

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

Точки входа

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