COOPENOMICS  v1
Кооперативная Экономика
Пространство имен Capital::Segments

Пространства имен

namespace  Status
 Константы статусов сегмента
 

Классы

struct  segment
 Таблица сегментов хранит данные о вкладах участника в проект. Подробнее...
 

Определения типов

typedef eosio::multi_index< "segments"_n, segment, indexed_by<"byproject"_n, const_mem_fun< segment, checksum256, &segment::by_project_hash > >, indexed_by<"byprojuser"_n, const_mem_fun< segment, uint128_t, &segment::by_project_user > > > segments_index
 

Функции

std::optional< segmentget_segment (eosio::name coopname, const checksum256 &project_hash, eosio::name username)
 
segment get_segment_or_fail (eosio::name coopname, const checksum256 &project_hash, eosio::name username, const char *msg)
 
std::vector< segmentget_project_authors (eosio::name coopname, const checksum256 &project_hash)
 Получает всех авторов проекта. Подробнее...
 
std::vector< segmentget_project_creators (eosio::name coopname, const checksum256 &project_hash)
 Получает всех создателей проекта. Подробнее...
 
std::vector< segmentget_project_coordinators (eosio::name coopname, const checksum256 &project_hash)
 Получает всех координаторов проекта. Подробнее...
 
std::vector< segmentget_project_investors (eosio::name coopname, const checksum256 &project_hash)
 Получает всех инвесторов проекта. Подробнее...
 
uint64_t count_project_authors (eosio::name coopname, const checksum256 &project_hash)
 Подсчитывает количество авторов в проекте. Подробнее...
 
bool is_voting_participant (eosio::name coopname, const checksum256 &project_hash, eosio::name username)
 Проверяет является ли пользователь участником голосования Подробнее...
 
bool is_segment_updated (eosio::name coopname, const checksum256 &project_hash, eosio::name username)
 Проверяет является ли сегмент обновленным (CRPS актуален и инвестиции синхронизированы) Подробнее...
 
void check_segment_is_updated (eosio::name coopname, const checksum256 &project_hash, eosio::name username, const char *msg="Сегмент не обновлен. Необходимо выполнить rfrshsegment")
 Проверяет является ли сегмент обновленным или падает с ошибкой Подробнее...
 
eosio::asset calculate_segment_base_cost (const segment &seg)
 Рассчитывает базовую стоимость сегмента Подробнее...
 
eosio::asset calculate_segment_bonus_cost (const segment &seg, const Capital::project &project)
 Рассчитывает бонусную стоимость сегмента Подробнее...
 
eosio::asset calculate_total_segment_cost (const segment &seg, const Capital::project &project)
 Рассчитывает общую стоимость сегмента Подробнее...
 
void update_segment_total_cost (eosio::name coopname, const checksum256 &project_hash, eosio::name username)
 Обновляет все стоимости сегмента (базовые, бонусные и общую) Подробнее...
 
void update_segment_status (eosio::name coopname, const checksum256 &project_hash, eosio::name username, eosio::name new_status)
 Обновляет статус результата в сегменте Подробнее...
 
void update_segment_after_result_contribution (eosio::name coopname, const checksum256 &project_hash, eosio::name username, eosio::asset debt_settled_amount=asset(0, _root_govern_symbol))
 Объединенная функция: обновляет сегмент после принятия результата и пересчитывает доли участника Оптимизированная версия для избежания двойного обновления одной записи Подробнее...
 
void update_segment_voting_results (eosio::name coopname, const checksum256 &project_hash, eosio::name username, eosio::asset voting_amount, eosio::asset equal_author_amount, eosio::asset direct_creator_amount)
 Обновляет сегмент участника результатами голосования и премиями Подробнее...
 
void set_investor_base_amount_on_return_unused (eosio::name coopname, uint64_t segment_id, eosio::asset used_amount)
 
void increase_debt_amount (eosio::name coopname, uint64_t segment_id, eosio::asset amount)
 
void decrease_debt_amount (eosio::name coopname, uint64_t segment_id, eosio::asset amount)
 
void remove_segment (eosio::name coopname, const checksum256 &project_hash, eosio::name username)
 Удаляет сегмент участника Подробнее...
 
bool has_project_segments (eosio::name coopname, const checksum256 &project_hash)
 Проверяет наличие сегментов в проекте Подробнее...
 

Типы

◆ segments_index

typedef eosio::multi_index< "segments"_n, segment, indexed_by<"byproject"_n, const_mem_fun<segment, checksum256, &segment::by_project_hash> >, indexed_by<"byprojuser"_n, const_mem_fun<segment, uint128_t, &segment::by_project_user> > > Capital::Segments::segments_index

Функции

◆ calculate_segment_base_cost()

eosio::asset Capital::Segments::calculate_segment_base_cost ( const segment seg)
inline

Рассчитывает базовую стоимость сегмента

Аргументы
segmentСегмент для расчёта
Возвращает
Базовая стоимость сегмента

◆ calculate_segment_bonus_cost()

eosio::asset Capital::Segments::calculate_segment_bonus_cost ( const segment seg,
const Capital::project project 
)
inline

Рассчитывает бонусную стоимость сегмента

Аргументы
segmentСегмент для расчёта
projectПроект для определения, прошло ли голосование
Возвращает
Бонусная стоимость сегмента

◆ calculate_total_segment_cost()

eosio::asset Capital::Segments::calculate_total_segment_cost ( const segment seg,
const Capital::project project 
)
inline

Рассчитывает общую стоимость сегмента

Аргументы
segmentСегмент для расчёта
projectПроект для определения, прошло ли голосование
Возвращает
Общая стоимость сегмента

◆ check_segment_is_updated()

void Capital::Segments::check_segment_is_updated ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username,
const char *  msg = "Сегмент не обновлен. Необходимо выполнить rfrshsegment" 
)
inline

Проверяет является ли сегмент обновленным или падает с ошибкой

◆ count_project_authors()

uint64_t Capital::Segments::count_project_authors ( eosio::name  coopname,
const checksum256 &  project_hash 
)
inline

Подсчитывает количество авторов в проекте.

Аргументы
coopnameИмя кооператива (scope таблицы).
project_hashХэш проекта.
Возвращает
Количество авторов.

◆ decrease_debt_amount()

void Capital::Segments::decrease_debt_amount ( eosio::name  coopname,
uint64_t  segment_id,
eosio::asset  amount 
)
inline

◆ get_project_authors()

std::vector< segment > Capital::Segments::get_project_authors ( eosio::name  coopname,
const checksum256 &  project_hash 
)
inline

Получает всех авторов проекта.

Аргументы
coopnameИмя кооператива (scope таблицы).
project_hashХэш проекта.
Возвращает
Вектор сегментов авторов.

◆ get_project_coordinators()

std::vector< segment > Capital::Segments::get_project_coordinators ( eosio::name  coopname,
const checksum256 &  project_hash 
)
inline

Получает всех координаторов проекта.

Аргументы
coopnameИмя кооператива (scope таблицы).
project_hashХэш проекта.
Возвращает
Вектор сегментов координаторов.

◆ get_project_creators()

std::vector< segment > Capital::Segments::get_project_creators ( eosio::name  coopname,
const checksum256 &  project_hash 
)
inline

Получает всех создателей проекта.

Аргументы
coopnameИмя кооператива (scope таблицы).
project_hashХэш проекта.
Возвращает
Вектор сегментов создателей.

◆ get_project_investors()

std::vector< segment > Capital::Segments::get_project_investors ( eosio::name  coopname,
const checksum256 &  project_hash 
)
inline

Получает всех инвесторов проекта.

Аргументы
coopnameИмя кооператива (scope таблицы).
project_hashХэш проекта.
Возвращает
Вектор сегментов инвесторов.

◆ get_segment()

std::optional< segment > Capital::Segments::get_segment ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username 
)
inline

◆ get_segment_or_fail()

segment Capital::Segments::get_segment_or_fail ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username,
const char *  msg 
)
inline

◆ has_project_segments()

bool Capital::Segments::has_project_segments ( eosio::name  coopname,
const checksum256 &  project_hash 
)
inline

Проверяет наличие сегментов в проекте

Аргументы
coopnameИмя кооператива
project_hashХэш проекта
Возвращает
true если есть сегменты, false если нет

◆ increase_debt_amount()

void Capital::Segments::increase_debt_amount ( eosio::name  coopname,
uint64_t  segment_id,
eosio::asset  amount 
)
inline

◆ is_segment_updated()

bool Capital::Segments::is_segment_updated ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username 
)
inline

Проверяет является ли сегмент обновленным (CRPS актуален и инвестиции синхронизированы)

Аргументы
coopnameИмя кооператива
project_hashХэш проекта
usernameИмя пользователя
Возвращает
true если сегмент обновлен

◆ is_voting_participant()

bool Capital::Segments::is_voting_participant ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username 
)
inline

Проверяет является ли пользователь участником голосования

Аргументы
coopnameИмя кооператива
project_hashХэш проекта
usernameИмя пользователя
Возвращает
true если у пользователя есть право голоса

◆ remove_segment()

void Capital::Segments::remove_segment ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username 
)
inline

Удаляет сегмент участника

Аргументы
coopnameИмя кооператива
project_hashХэш проекта
usernameИмя пользователя

◆ set_investor_base_amount_on_return_unused()

void Capital::Segments::set_investor_base_amount_on_return_unused ( eosio::name  coopname,
uint64_t  segment_id,
eosio::asset  used_amount 
)
inline

◆ update_segment_after_result_contribution()

void Capital::Segments::update_segment_after_result_contribution ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username,
eosio::asset  debt_settled_amount = asset(0, _root_govern_symbol) 
)
inline

Объединенная функция: обновляет сегмент после принятия результата и пересчитывает доли участника Оптимизированная версия для избежания двойного обновления одной записи

◆ update_segment_status()

void Capital::Segments::update_segment_status ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username,
eosio::name  new_status 
)
inline

Обновляет статус результата в сегменте

◆ update_segment_total_cost()

void Capital::Segments::update_segment_total_cost ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username 
)
inline

Обновляет все стоимости сегмента (базовые, бонусные и общую)

◆ update_segment_voting_results()

void Capital::Segments::update_segment_voting_results ( eosio::name  coopname,
const checksum256 &  project_hash,
eosio::name  username,
eosio::asset  voting_amount,
eosio::asset  equal_author_amount,
eosio::asset  direct_creator_amount 
)
inline

Обновляет сегмент участника результатами голосования и премиями