Четыре независимых доработки поверх связки «Заявление на увольнение» ↔ «Обходной лист»: 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>
request-portal
Summary
Short summary on functionality and used technologies.
[picture of the solution in action, if possible]
Used SharePoint Framework Version
Applies to
Get your own free development tenant by subscribing to Microsoft 365 developer program
Prerequisites
Any special pre-requisites?
Solution
| Solution | Author(s) |
|---|---|
| folder name | Author details (name, company, twitter alias with link) |
Version history
| Version | Date | Comments |
|---|---|---|
| 1.1 | March 10, 2021 | Update comment |
| 1.0 | January 29, 2021 | Initial release |
Disclaimer
THIS CODE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
Minimal Path to Awesome
- Clone this repository
- Ensure that you are at the solution folder
- in the command-line run:
npm install -g @rushstack/heftnpm installheft start
Include any additional steps as needed.
Other build commands can be listed using heft --help.
Features
Description of the extension that expands upon high-level summary above.
This extension illustrates the following concepts:
- topic 1
- topic 2
- topic 3
Notice that better pictures and documentation will increase the sample usage and the value you are providing for others. Thanks for your submissions advance.
Share your web part with others through Microsoft 365 Patterns and Practices program to get visibility and exposure. More details on the community, open-source projects and other activities from http://aka.ms/m365pnp.
References
- Getting started with SharePoint Framework
- Building for Microsoft teams
- Use Microsoft Graph in your solution
- Publish SharePoint Framework applications to the Marketplace
- Microsoft 365 Patterns and Practices - Guidance, tooling, samples and open-source controls for your Microsoft 365 development
- Heft Documentation