/**

@defgroup public_capital_fundproj_process Фондирование членских взносов на проект
@ingroup public_capital_processes

Кооператив может направлять накопленные членские взносы на распределение между всеми участниками конкретного проекта.
Источником для регистрации входящих членских взносов является кошелек накопленных членских взносов кооператива по конкретному проекту.
Распределяемые членские взносы на проект являются обеспечением для возврата паевых взносов участников, которые выбрали проектное направление при @ref public_capital_conversion_process "конвертации результата"
по процессу @ref public_capital_withdraw_from_project_process "возврата средств из кошелька проекта".

Процесс использует механизм CRPS - обновляет кумулятивный показатель на уровне проекта
без одновременного пересчета персональных кошельков участников. Расчёты долей по каждому участнику запрашиваются отдельно по @ref public_capital_refresh_project_process "процессу обновления кошелька проекта".

@note CRPS помогает обойти ограничения блокчейна на количество одновременных математических вычислений, которые должны быть выполнены при приёме блока в цепочку каждым делегатом.
Алгоритм позволяет динамично распределять общий пул среди участников независимо друг от друга и производя вычисления только для одного участника за раз.

Формула обновления кумулятивного показателя:

```cpp
reward_per_share_delta = новый_взнос / общее_количество_долей_проекта
cumulative_reward_per_share += reward_per_share_delta
```

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

\htmlonly
<div class="mermaid">
sequenceDiagram
    participant K as Кооператив
    participant C as Capital Contract

    K->>C: Регистрация членских взносов по проекту
    Note over C: Валидация суммы
    Note over C: Проверка существования проекта
    Note over C: Проверка наличия долей
    Note over C: Обновление показателя CRPS проекта
    Note over C: Средства готовы к распределению в проекте
</div>
\endhtmlonly

## Пошаговое описание

### Шаг 1: Регистрация членских взносов проекта
@ref capital::fundproj "Регистрация входящих членских взносов по проекту"

Кооператив направляет накопленные членские взносы на распределение между участниками конкретного проекта.
Для этого требуется вызов от авторизованного контракта (soviet/gateway) с указанием кооператива,
хеша проекта, суммы взноса и мемо. Метод валидирует сумму, проверяет существование проекта и наличие долей,
затем обновляет кумулятивный показатель CRPS для данного проекта. После регистрации взноса участники могут самостоятельно обновить свои начисления через @ref public_capital_refresh_project_process "процесс обновления кошелька проекта". Или, кооператив может обновить эту информацию за них, но по одному.

@post Обновление показателя CRPS для конкретного проекта
@post Средства становятся доступны для распределения между участниками проекта
@post Обеспечение формируется для последующего возврата паевых взносов участников

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

## Связанные процессы
- @ref public_capital_refresh_project_process "Обновление кошелька проекта"
- @ref public_capital_withdraw_from_project_process "Возврат средств из кошелька проекта"

*/