/**
 * @defgroup public_capital_submit_vote_process Голосование по методу Водянова
 * @ingroup public_capital_processes
 * 
 * Процесс распределения голосующей суммы участником между другими участниками проекта
 * по методу Водянова и сохранения результатов голосования в системе.
 * 
 * ## Назначение процесса
 * 
 * Подача голоса по методу Водянова обеспечивает:
 * - Распределение голосующей суммы участника между другими участниками проекта
 * - Валидацию корректности распределения голосов
 * - Сохранение голосов в системе для последующего подсчета
 * - Учет голоса в общем количестве полученных голосов участниками
 * 
 * \htmlonly
 * <div class="mermaid">
 * sequenceDiagram
 *     participant У as Участник
 *     participant ПК as Контракт Capital
 *     participant П as Проект
 *     
 *     У->>ПК: 1. Подача голоса по методу Водянова
 *     Note over ПК: Проверка статуса проекта
 *     ПК->>П: 2. Проверка статуса и срока голосования
 *     alt Проект в статусе голосования
 *         П->>ПК: 3. Подтверждение статуса
 *         ПК->>ПК: 4. Валидация участника голосования
 *         ПК->>ПК: 5. Проверка корректности голосов
 *         ПК->>ПК: 6. Сохранение голосов
 *         ПК->>П: 7. Обновление счетчика голосов
 *     else Проект не в статусе голосования
 *         ПК->>У: Ошибка: проект не в статусе голосования
 *     end
 * </div>
 * \endhtmlonly
 * 
 * ## Пошаговое описание процесса
 * 
 * ### Шаг 1: Инициация подачи голоса
 * <b>Действие:</b> @ref capital::submitvote "Подача голоса по методу Водянова"
 * 
 * Участник распределяет свою голосующую сумму между другими участниками проекта
 * в рамках голосования по методу Водянова.
 * 
 * @post Проверка авторизации кооператива
 * 
 * ### Шаг 2: Проверка статуса проекта и срока голосования
 * <b>Действие:</b> Валидация состояния проекта
 * 
 * Система проверяет, что:
 * - Проект находится в статусе голосования
 * - Срок голосования еще не истек
 * 
 * @post Подтвержден статус проекта как "голосование"
 * @post Подтверждено, что срок голосования не истек
 * 
 * ### Шаг 3: Валидация участника голосования
 * <b>Действие:</b> Проверка прав участника
 * 
 * Система проверяет, что:
 * - Участник является участником голосования по проекту (автор или исполнитель)
 * - Участник еще не голосовал по данному проекту
 * 
 * @post Подтверждено участие пользователя в голосовании
 * @post Подтверждено, что пользователь еще не голосовал
 * 
 * ### Шаг 4: Проверка корректности голосов
 * <b>Действие:</b> Валидация распределения голосов
 * 
 * Система проверяет корректность распределения голосов:
 * - Участник не голосует за себя
 * - Все получатели голосов являются участниками голосования
 * - Нет повторяющихся получателей голосов
 * - Все суммы голосов положительные
 * - Количество получателей равно общему количеству участников минус один (сам участник)
 * - Общая сумма голосов равна активной голосующей сумме
 * - Сумма голосов плюс равная не голосующая сумма равна общей сумме на распределении
 * 
 * @post Проверка корректности всех параметров голосования
 * 
 * ### Шаг 5: Сохранение голосов
 * <b>Действие:</b> Фиксация голосов в системе
 * 
 * Система сохраняет каждый голос в таблице голосов, связывая голосующего
 * с получателем голоса и суммой голоса.
 * 
 * @post Голоса сохранены в системе
 * 
 * ### Шаг 6: Обновление счетчика полученных голосов
 * <b>Действие:</b> Учет голоса в статистике
 * 
 * Система обновляет счетчик полученных голосов для проекта,
 * увеличивая его на единицу для отслеживания завершения голосования.
 * 
 * @post Счетчик полученных голосов увеличен
 * 
 * ## Условия для подачи голоса
 * 
 * <b>Обязательные требования:</b>
 * - Проект должен быть в статусе голосования
 * - Срок голосования не должен быть истекшим
 * - Участник должен быть участником голосования
 * - Участник еще не голосовал по данному проекту
 * - Распределение голосов должно соответствовать правилам метода Водянова
 * 
 * ## Результат процесса
 * 
 * post"
 * 1. Голоса участника сохранены в системе
 * 2. Счетчик полученных голосов обновлен
 * 3. Участник больше не может голосовать по данному проекту
 * 
 * ## Связанные процессы
 * 
 * - @ref public_capital_voting_start_process "Начало голосования" - предшествующий этап
 * - @ref public_capital_calculate_votes_process "Подсчет голосов" - следующий этап
 * - @ref public_capital_voting_completion_process "Завершение голосования" - завершающий этап
 * 
 */