5fd8bfe453
Отправка срабатывала только на статус «Согласовано», а при исполнителе в маршруте последний согласующий переводит заявку сразу в «Выполнение» — запрос в ЭДО не шёл вообще. Теперь отправка срабатывает на решение, завершившее фазу согласования (isApprovalPhaseCompleted: «На согласовании» → «Согласовано»/«Выполнение»/«Закрыта»); решение исполнителя повторно её не запускает. В зелёное сообщение «Решение сохранено» дописывается «Документы отправлены на подписание в ЭДО…» (onDecided панели решения может вернуть строку). Заодно пять чужих предупреждений линтера: eqeqeq в SubmitActions, явные типы возврата в approverOrgInfo и useSkudRoute, зависимость эффекта в ServiceRequestView, null → undefined в ячейках календаря СКУД. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
27 lines
1.6 KiB
TypeScript
27 lines
1.6 KiB
TypeScript
import { WebPartContext } from '@microsoft/sp-webpart-base';
|
|
import { getEmployeeOrganizations } from '../dictionary';
|
|
|
|
/** Отдел + организация согласующего — для колонок «Отдел»/«Организация» матрицы. */
|
|
export interface IApproverOrgInfo {
|
|
department: string;
|
|
organization: string;
|
|
}
|
|
|
|
/**
|
|
* Резолвер для useMatrixEditor: отдел и организация — ОДНИМ источником
|
|
* (Employee/ByEmail, тот же, что и «авто-Организация» в Vacation/UnpaidLeave/…),
|
|
* а не двумя разными API (иначе строка матрицы собиралась бы по кускам). Один
|
|
* сотрудник может числиться в нескольких организациях — берём первую запись,
|
|
* как и остальные формы с авто-подстановкой (см. shared/dictionary).
|
|
*
|
|
* email не найден в кадровом справочнике (404) или пуст — getEmployeeOrganizations
|
|
* отдаёт [], здесь это просто пустые отдел/организация, не ошибка матрицы.
|
|
*/
|
|
export function resolveApproverOrgInfo(context: WebPartContext): (email: string) => Promise<IApproverOrgInfo> {
|
|
return async (email: string): Promise<IApproverOrgInfo> => {
|
|
const records = await getEmployeeOrganizations(context, email);
|
|
const first = records[0];
|
|
return { department: first?.section || '', organization: first?.company || '' };
|
|
};
|
|
}
|