2d2194047b
Четыре независимых доработки поверх связки «Заявление на увольнение» ↔ «Обходной лист»: 1. Совместители (несколько компаний у одного сотрудника): approval-route уже резолвит директора/должностного эквивалента КАЖДОЙ компании отдельным шагом маршрута (HeadType.CompanyDirectors, шаблон route 17: Chief → CompanyDirectors). Organization на форме подачи заявления теперь интерактивная таблица (OrganizationsTable) вместо read-only списка — строку компании можно убрать, если сотрудник реально не увольняется отовсюду сразу; убранная компания сразу снимается и из уже спланированной матрицы (matrix.remove) — искать нужную строку вручную не надо. Новый shared/dictionary/employeeLookup.service.ts зеркалит DirectorPositionByCompany бэкенда (KazpromService → Главный механик, СТ Global → Генеральный директор, иначе Директор) и Employee/Manager (managerType=chief) — используется и здесь, и в следующем пункте. 2. Печать заявления заблокирована, пока парный обходной лист не согласован (статус читается напрямую по ClearanceUrl, без отдельного поля-дублёра). 3. «Лицо, принимающее ОС/НМА» (AssetsAcceptor, People) — обязательное поле, которое заполняет НЕ заявитель, а непосредственный руководитель увольняемого (identity-check по Employee/Manager, а не по должности, как в approverRights «Обходного листа») прямо перед своим решением (DecisionPanel.onBeforeDecide); пустое поле блокирует решение. 4. В обходном листе — 4 независимые пары «сумма к списанию + обязательный комментарий» (ОС/СИЗ/подотчёт, обучение, НМА, ТМЦ), отдельно от уже существующего TrainingAmount. Заполнить может любой активный согласующий (не только профильный), но как только сумма введена — пара блокируется навсегда для всех (лок по снимку на момент загрузки, не реактивно от текущего ввода — иначе поле блокировалось бы прямо во время набора цифр). Списки на /sites/requests обновлены: AssetsAcceptor (Заявление на увольнение), 8 колонок WriteOff* (Обходной лист). tsc --noEmit и heft test (build+lint+179 тестов) чистые. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>