Процесс, при котором кооператив деаллоцирует неиспользованные инвестиции из завершенного проекта и возвращает их обратно в кооперативный кошелек программы "Капитализация" для повторного использования в других проектах.
- Предусловие
- Обязательные условия:
- Проект завершен со статусом COMPLETED
- В проекте есть неиспользованные программные средства
- Авторизация от имени кооператива
sequenceDiagram
participant К as Кооператив
participant Контракт as Capital Contract
participant Пр as Проект
participant П as Программа Капитализации
К->>Контракт: 1. Запрос деаллокации средств
Note over Контракт: Проверка статуса проекта
Контракт->>Пр: 2. Получение данных проекта
Note over Пр: Проверка наличия средств
alt Коэффициент использования > 100%
Контракт->>Контракт: 3. Расчет неиспользованных средств
else Коэффициент использования <= 100%
Note over Контракт: Все средства считаются неиспользованными
end
Контракт->>П: 4. Возврат средств в программу
Note over П: Обновление баланса программы
Пошаговое описание процесса
Шаг 1: Инициация деаллокации средств
Действие: Деаллокация инвестиций
Кооператив инициирует процесс деаллокации неиспользованных средств из завершенного проекта. Это необходимо для возврата средств в программу "Капитализация" и повторного их использования.
- Заметки
- Авторизация требуется от аккаунта кооператива, подтверждая его право распоряжаться средствами программы капитализации
Шаг 2: Проверка статуса проекта
Действие: Валидация статуса проекта
Система проверяет, что проект завершен со статусом COMPLETED. Только завершенные проекты могут подвергаться деаллокации средств.
- Постусловие
- Projects::get_project_or_fail подтверждает существование и статус проекта
Шаг 3: Проверка наличия программных средств
Действие: Проверка баланса программных средств
Система проверяет, что в проекте есть неиспользованные программные средства. Проект должен иметь положительный баланс в fact.program_invest_pool.
- Постусловие
- Проверка project.fact.program_invest_pool.amount > 0
Шаг 4: Расчет неиспользованных средств
Действие: Определение суммы к возврату
Система рассчитывает сумму неиспользованных программных средств:
- При коэффициенте использования > 100% часть средств считается неиспользованной
- При коэффициенте использования <= 100% все программные средства считаются неиспользованными
- Расчет производится на основе фактически использованной суммы
- Постусловие
- Capital::Core::Generation::calculate_investor_used_amount рассчитывает использованную сумму
Шаг 5: Возврат средств в программу
Действие: Деаллокация и возврат средств
Система возвращает неиспользованные программные средства в глобальный пул:
- Средства списываются из пула инвестиций проекта
- Средства зачисляются в кошелек программы капитализации
- Обновляется баланс программы капитализации
- Постусловие
- Capital::Core::deallocate_program_investment_from_project производит деаллокацию средств
Шаг 6: Завершение процесса
Действие: Финализация операции
После деаллокации средства становятся доступны для повторного использования:
- В других проектах кооператива
- Для новых аллокаций в рамках программы капитализации
- Постусловие
- После завершения процесса:
- Неиспользованные средства возвращены в программу капитализации
- Баланс программы капитализации увеличен
- Пул инвестиций проекта уменьшен
- Средства доступны для повторной аллокации