diff --git a/src/webparts/requestPortal/forms/Vacation/README.md b/src/webparts/requestPortal/forms/Vacation/README.md index 58f7694..8ae6b46 100644 --- a/src/webparts/requestPortal/forms/Vacation/README.md +++ b/src/webparts/requestPortal/forms/Vacation/README.md @@ -30,6 +30,9 @@ - **Заголовок элемента** (`Title`): `Отпуск — {ФИО} — дд.мм.гггг`. ## Подписание в ЭДО +> **Сейчас выключено** (`VACATION_EDO_SIGNING_ENABLED = false` в `shared/config.ts`): решение последнего +> согласующего применяется сразу, в ЭДО ничего не уходит. Описанное ниже работает, когда флаг `true`. + Когда **последний согласующий** нажимает «Согласовать», заявление сначала уходит на подпись в TANSU ЭДО (`VacationView` → `onBeforeDecide`), и только потом применяется решение. Последний — значит заявка «На согласовании» и несогласованной осталась одна строка фазы согласования (`completesApprovalPhase`; diff --git a/src/webparts/requestPortal/forms/Vacation/VacationView.tsx b/src/webparts/requestPortal/forms/Vacation/VacationView.tsx index fede67b..2976429 100644 --- a/src/webparts/requestPortal/forms/Vacation/VacationView.tsx +++ b/src/webparts/requestPortal/forms/Vacation/VacationView.tsx @@ -30,6 +30,7 @@ import type { ApproverDecision } from '../../shared/approval'; import { isAlreadyAccepted } from '../../shared/edo/edoErrors'; import { executionPhaseRows } from '../../shared/approval/useRouteExecutors'; import { friendlyErrorMessage } from '../../shared/diagnostics'; +import { VACATION_EDO_SIGNING_ENABLED } from '../../shared/config'; import { approvalListTitle, approvalListTitleForListId, @@ -179,7 +180,7 @@ const VacationView: React.FC = ({ context, itemId, formKey, // заявка остаётся на согласовании, и ошибку видно в панели решения; согласовать можно ещё раз. const sendBeforeFinalApproval = async (decision: ApproverDecision): Promise => { sentBeforeDecision.current = false; - if (decision !== 'approve') return; + if (!VACATION_EDO_SIGNING_ENABLED || decision !== 'approve') return; if (!completesApprovalPhase(status, await approval.getMatrixForRequest(itemId))) return; diff --git a/src/webparts/requestPortal/shared/config.ts b/src/webparts/requestPortal/shared/config.ts index b7743c0..1cb7693 100644 --- a/src/webparts/requestPortal/shared/config.ts +++ b/src/webparts/requestPortal/shared/config.ts @@ -81,6 +81,13 @@ export function getEdoApiBaseUrl(): string { return _edoApiBaseUrl; } +/** + * Отправка согласованного заявления на отпуск на подпись в ЭДО (forms/Vacation/VacationView). + * Временно выключена: решение последнего согласующего применяется без обращения к ЭДО. + * Чтобы вернуть — поставить true, остальной код отправки на месте. + */ +export const VACATION_EDO_SIGNING_ENABLED = false; + // Уведомления согласующим (поток Power Automate, см. approval/notify.service.ts). // Настраивается свойствами веб-части notificationsEnabled / notifyOnlyTo — тот // же модульный синглтон, что и у approvalApiBaseUrl выше.