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)
 
segment get_segment_by_id_or_fail (eosio::name coopname, uint64_t segment_id, const char *msg="Сегмент не найден")
 
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_pure_investor (const segment &seg)
 Проверяет является ли участник чистым инвестором (только инвестор, без других интеллектуальных ролей) Подробнее...
 
bool has_intellectual_contribution_roles (const segment &seg)
 Проверяет имеет ли участник роли, требующие внесения интеллектуального результата Подробнее...
 
eosio::asset calculate_non_investor_contribution (const segment &seg)
 Рассчитывает сумму неинвестиционных вкладов сегмента (для внесения результата) Подробнее...
 
eosio::asset calculate_segment_base_cost (const segment &seg)
 Рассчитывает базовую стоимость сегмента Подробнее...
 
eosio::asset calculate_segment_bonus_cost (const segment &seg, const Capital::project &project)
 Рассчитывает бонусную стоимость сегмента Подробнее...
 
void update_segment_total_cost (eosio::name coopname, uint64_t segment_id, const Capital::project &project)
 Обновляет все стоимости сегмента (базовые, бонусные и общую) Подробнее...
 
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))
 Объединенная функция: обновляет сегмент после принятия результата и пересчитывает доли участника Оптимизированная версия для избежания двойного обновления одной записи Подробнее...
 
uint64_t get_segment_id (eosio::name coopname)
 
void update_segment_voting_results (eosio::name coopname, const Capital::project &project, const segment &segment, 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, uint64_t segment_id)
 Удаляет сегмент участника Подробнее...
 
void remove_all_project_segments (eosio::name coopname, const checksum256 &project_hash)
 Удаляет все сегменты участников проекта (по secondary index byproject) Подробнее...
 
void create_author_segment (eosio::name coopname, eosio::name username, const Capital::project &project)
 Создает сегмент автора для проекта Подробнее...
 
void update_segment_author_status (eosio::name coopname, uint64_t segment_id, const Capital::project &project)
 Обновляет сегмент, устанавливая статус автора Подробнее...
 
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_non_investor_contribution()

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

Рассчитывает сумму неинвестиционных вкладов сегмента (для внесения результата)

Аргументы
segmentСегмент участника
Возвращает
Сумма вкладов, которую нужно внести как результат (без инвестиционной части)

◆ 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Проект для определения, прошло ли голосование
Возвращает
Бонусная стоимость сегмента

◆ count_project_authors()

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

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

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

◆ create_author_segment()

void Capital::Segments::create_author_segment ( eosio::name  coopname,
eosio::name  username,
const Capital::project project 
)
inline

Создает сегмент автора для проекта

Аргументы
coopnameИмя кооператива
usernameИмя пользователя (автора)
projectОбъект проекта для инициализации CRPS полей

◆ decrease_debt_amount()

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

◆ get_segment()

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

◆ get_segment_by_id_or_fail()

segment Capital::Segments::get_segment_by_id_or_fail ( eosio::name  coopname,
uint64_t  segment_id,
const char *  msg = "Сегмент не найден" 
)
inline

◆ get_segment_id()

uint64_t Capital::Segments::get_segment_id ( eosio::name  coopname)
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_intellectual_contribution_roles()

bool Capital::Segments::has_intellectual_contribution_roles ( const segment seg)
inline

Проверяет имеет ли участник роли, требующие внесения интеллектуального результата

Аргументы
segmentСегмент участника
Возвращает
true если у участника есть интеллектуальные роли

◆ 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_pure_investor()

bool Capital::Segments::is_pure_investor ( const segment seg)
inline

Проверяет является ли участник чистым инвестором (только инвестор, без других интеллектуальных ролей)

Аргументы
segmentСегмент участника
Возвращает
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_all_project_segments()

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

Удаляет все сегменты участников проекта (по secondary index byproject)

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

◆ remove_segment()

void Capital::Segments::remove_segment ( eosio::name  coopname,
uint64_t  segment_id 
)
inline

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

Аргументы
coopnameИмя кооператива
segment_idID сегмента

◆ 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_author_status()

void Capital::Segments::update_segment_author_status ( eosio::name  coopname,
uint64_t  segment_id,
const Capital::project project 
)
inline

Обновляет сегмент, устанавливая статус автора

Аргументы
coopnameИмя кооператива
segment_idID сегмента
projectОбъект проекта для инициализации CRPS полей

◆ 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,
uint64_t  segment_id,
const Capital::project project 
)
inline

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

◆ update_segment_voting_results()

void Capital::Segments::update_segment_voting_results ( eosio::name  coopname,
const Capital::project project,
const segment segment,
eosio::name  username,
eosio::asset  voting_amount,
eosio::asset  equal_author_amount,
eosio::asset  direct_creator_amount 
)
inline

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