Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 093bbecd9f | |||
| 59b0fbc569 |
@@ -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 выше.
|
||||
|
||||
Reference in New Issue
Block a user