2 Commits

Author SHA1 Message Date
gorbenko.pavel 093bbecd9f fix: в заявке на отпуск не показываются сообщения об отправке в ЭДО
Tests / frontend-test (push) Successful in 2m17s
Плашки об отправке, ошибке и повторе, а также текст «Документы
отправлены на подписание в ЭДО» показываются только при включённом
VACATION_EDO_SIGNING_ENABLED.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:38:17 +05:00
gorbenko.pavel 59b0fbc569 feat: временно выключена отправка заявления на отпуск в ЭДО
Флаг VACATION_EDO_SIGNING_ENABLED в shared/config.ts: пока false,
решение последнего согласующего применяется без обращения к ЭДО.
Код отправки оставлен, включается заменой флага на true.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:37:34 +05:00
3 changed files with 29 additions and 13 deletions
@@ -30,6 +30,9 @@
- **Заголовок элемента** (`Title`): `Отпуск — {ФИО} — дд.мм.гггг`.
## Подписание в ЭДО
> **Сейчас выключено** (`VACATION_EDO_SIGNING_ENABLED = false` в `shared/config.ts`): решение последнего
> согласующего применяется сразу, в ЭДО ничего не уходит. Описанное ниже работает, когда флаг `true`.
Когда **последний согласующий** нажимает «Согласовать», заявление сначала уходит на подпись в TANSU ЭДО
(`VacationView` → `onBeforeDecide`), и только потом применяется решение. Последний — значит заявка
«На согласовании» и несогласованной осталась одна строка фазы согласования (`completesApprovalPhase`;
@@ -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<IVacationViewProps> = ({ context, itemId, formKey,
// заявка остаётся на согласовании, и ошибку видно в панели решения; согласовать можно ещё раз.
const sendBeforeFinalApproval = async (decision: ApproverDecision): Promise<void> => {
sentBeforeDecision.current = false;
if (decision !== 'approve') return;
if (!VACATION_EDO_SIGNING_ENABLED || decision !== 'approve') return;
if (!completesApprovalPhase(status, await approval.getMatrixForRequest(itemId))) return;
@@ -235,6 +236,9 @@ const VacationView: React.FC<IVacationViewProps> = ({ context, itemId, formKey,
</div>
<div className="rp-no-print">
{/* Пока отправка в ЭДО выключена — ни одного сообщения о ней. */}
{VACATION_EDO_SIGNING_ENABLED && (
<>
{signingBusy && <Alert variant="ok">Отправляем заявление на подпись в ЭДО…</Alert>}
{!signingBusy && signingResult && signingResult.skipped.length > 0 && (
<Alert variant="err">
@@ -249,6 +253,8 @@ const VacationView: React.FC<IVacationViewProps> = ({ context, itemId, formKey,
</Button>
</>
)}
</>
)}
<DecisionPanel
service={approverService}
requestId={itemId}
@@ -258,7 +264,7 @@ const VacationView: React.FC<IVacationViewProps> = ({ 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);
@@ -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 выше.