/**

@defgroup public_capital_create_expense_process Списание расходов
@ingroup public_capital_processes

Процесс создания, одобрения, авторизации и оплаты операционных расходов проекта из накопленного пула расходов представляет собой формализованную процедуру, которая позволяет участникам проекта запрашивать расходы на операционные нужды проекта. Процесс включает подачу заявления участником, проверку достаточности накопленных средств в пуле расходов, резервирование запрашиваемой суммы, одобрение председателем и авторизацию советом кооператива. После авторизации происходит перевод средств через платёжный шлюз для оплаты расходов проекта.

## Диаграмма процесса

\htmlonly
<div class="mermaid">
sequenceDiagram
    participant P as Участник
    participant C as Capital Contract
    participant S as Soviet Contract
    participant G as Gateway Contract

    P->>C: 1. Подача заявления о расходе
    Note over C: Проверка участия в проекте
    Note over C: Резервирование средств из пула

    C->>S: 2. Запрос предварительного одобрения
    S->>C: 3. Направление на рассмотрение совета

    alt Авторизация
        S->>C: 4. Авторизация советом
        C->>G: 5. Создание исходящего платежа
        G->>C: 6. Подтверждение выполнения платежа
        Note over C: Обновление используемых средств
    else Отклонение
        S->>C: 4. Отклонение советом
        Note over C: Возврат средств в пул
    end
</div>
\endhtmlonly

## Подача заявления о расходе

Участник проекта подает заявление о необходимости расхода с указанием суммы расхода, описания назначения и обоснования в заявлении. Система проверяет подлинность заявления и корректность данных.

## Проверка участия в проекте

Система проверяет наличие активного договора УХД участника в проекте. Только активные участники с подписанными приложениями могут создавать расходы.

## Проверка уникальности расхода

Проверяется уникальность расхода по предоставленному хешу. Это предотвращает дублирование расходов и обеспечивает целостность учета.

## Проверка доступности средств

Система проверяет достаточность накопленных средств в пуле расходов для покрытия расхода, корректность суммы (положительное значение) и соответствие валюты проекта.

## Резервирование средств

Система резервирует запрошенную сумму, уменьшая накопленные средства пула на размер расхода. Это предотвращает повторное использование средств.

## Создание записи расхода

Создается запись расхода в таблице с указанием всех параметров, включая хеш расхода для идентификации, сумму, описание и связанное заявление.

## Одобрение и авторизация расхода
@ref capital::approveexpns "Одобрение расхода"
@ref capital::capauthexpns "Авторизация расхода советом"

Председатель одобряет расход и направляет на рассмотрение совета. Совет авторизует расход и создаёт исходящий платёж через платёжный шлюз.

## Подтверждение оплаты расхода
@ref capital::exppaycnfrm "Подтверждение оплаты расхода"

Платёжный шлюз подтверждает факт совершения исходящего платежа. Обновляется сумма использованных средств проекта и запись расхода удаляется.

## Создание заявления о расходе
@ref capital::createexpnse "Создание расхода"

Участник проекта подаёт заявление о необходимости операционного расхода:

@pre <b>Входящий документ:</b> Заявление о необходимости операционного расхода проекта
@pre <b>Предварительные условия:</b>
- Участник имеет активный договор УХД в проекте
- Накопленные средства пула расходов достаточны для покрытия расхода
- Сумма расхода положительная

<b>Механика создания расхода:</b>
- Выполняется проверка уникальности расхода по хешу
- Проверяется доступность средств в пуле расходов
- Сумма резервируется из накопленных средств пула

<b>Результат:</b> Заявление создано, средства зарезервированы для расхода. После авторизации совета происходит оплата расхода через платёжный шлюз.

@post Заявление о расходе создано и проверено
@post Средства зарезервированы из накопленного пула расходов

## Одобрение и авторизация расхода

После создания заявления председатель одобряет расход и направляет его на рассмотрение советом. Совет принимает решение об авторизации расхода:

@post Расход направлен на рассмотрение советом
@post Создан исходящий платёж через платёжный шлюз

## Отклонение расхода

При отклонении расхода советом зарезервированная сумма возвращается в пул расходов:

@post Средства возвращаются в накопленный пул расходов
@post Запись расхода удаляется из системы

## Подтверждение выполнения платежа

После совершения исходящего платежа через платёжный шлюз:

@post Сумма использованных средств проекта обновлена
@post Запись расхода удалена из системы

## Эффекты процесса
@include{doc} exppaycnfrm-effect.dox

## Документы процесса
 @include{doc} create-expense-docs.dox

## Связанные процессы

- @ref public_capital_fundproj_process "Регистрация членских взносов в проект"
- @ref public_capital_refresh_project_process "Обновление кошелька проекта"

*/