From 59b0fbc5691416f67d07bee3a2ca38ea0d430564 Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Fri, 16 Oct 2026 16:37:34 +0500 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=20=D0=B2=D1=8B=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BE=D1=82=D0=BF=D1=83=D1=81=D0=BA=20=D0=B2=20?= =?UTF-8?q?=D0=AD=D0=94=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Флаг VACATION_EDO_SIGNING_ENABLED в shared/config.ts: пока false, решение последнего согласующего применяется без обращения к ЭДО. Код отправки оставлен, включается заменой флага на true. Co-Authored-By: Claude Opus 5.5 --- src/webparts/requestPortal/forms/Vacation/README.md | 3 +++ src/webparts/requestPortal/forms/Vacation/VacationView.tsx | 3 ++- src/webparts/requestPortal/shared/config.ts | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) 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 выше. From 093bbecd9fee23c693b843f0b25bd90bc30e198c Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Fri, 16 Oct 2026 16:38:17 +0500 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=D0=B2=20=D0=B7=D0=B0=D1=8F=D0=B2?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=BD=D0=B0=20=D0=BE=D1=82=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D0=BA=20=D0=BD=D0=B5=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20=D1=81=D0=BE=D0=BE=D0=B1?= =?UTF-8?q?=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D0=B1=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B5=20=D0=B2=20=D0=AD=D0=94?= =?UTF-8?q?=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Плашки об отправке, ошибке и повторе, а также текст «Документы отправлены на подписание в ЭДО» показываются только при включённом VACATION_EDO_SIGNING_ENABLED. Co-Authored-By: Claude Opus 5.5 --- .../forms/Vacation/VacationView.tsx | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/webparts/requestPortal/forms/Vacation/VacationView.tsx b/src/webparts/requestPortal/forms/Vacation/VacationView.tsx index 2976429..e8f377f 100644 --- a/src/webparts/requestPortal/forms/Vacation/VacationView.tsx +++ b/src/webparts/requestPortal/forms/Vacation/VacationView.tsx @@ -236,18 +236,23 @@ const VacationView: React.FC = ({ context, itemId, formKey,
- {signingBusy && Отправляем заявление на подпись в ЭДО…} - {!signingBusy && signingResult && signingResult.skipped.length > 0 && ( - - {`Не отправлено по компаниям: ${signingResult.skipped.map((c) => `${c.name} — ${c.reason}`).join('; ')}.`} - - )} - {!signingBusy && signingError && ( + {/* Пока отправка в ЭДО выключена — ни одного сообщения о ней. */} + {VACATION_EDO_SIGNING_ENABLED && ( <> - {signingError} - + {signingBusy && Отправляем заявление на подпись в ЭДО…} + {!signingBusy && signingResult && signingResult.skipped.length > 0 && ( + + {`Не отправлено по компаниям: ${signingResult.skipped.map((c) => `${c.name} — ${c.reason}`).join('; ')}.`} + + )} + {!signingBusy && signingError && ( + <> + {signingError} + + + )} )} = ({ context, itemId, formKey, setStatus(newStatus); setDecisionSeq((n) => n + 1); notify(); - return sentBeforeDecision.current ? 'Документы отправлены на подписание в ЭДО.' : undefined; + return VACATION_EDO_SIGNING_ENABLED && sentBeforeDecision.current ?'Документы отправлены на подписание в ЭДО.' : undefined; }} onDelegated={() => { setDecisionSeq((n) => n + 1);