COOPENOMICS  v1
Кооперативная Экономика
balances.hpp
См. документацию.
1
11 uint64_t id;
12 eosio::name contract;
13 eosio::asset quantity;
15 uint64_t primary_key() const { return id; }
17 uint128_t byconsym() const {
18 return combine_ids(contract.value, quantity.symbol.code().raw());
19 }
20};
21
22typedef eosio::multi_index<"balances"_n, balances_base, eosio::indexed_by<"byconsym"_n, eosio::const_mem_fun<balances_base, uint128_t, &balances_base::byconsym>>> balances_index;
25// -----------------------------------------------------------------
26// Таблица кошельков конкретных программ
27// -----------------------------------------------------------------
39struct [[eosio::table, eosio::contract(SOVIET)]] progwallet {
40 uint64_t id;
41 eosio::name coopname;
42 uint64_t program_id;
43 uint64_t agreement_id;
44 eosio::name username;
45 eosio::asset available;
46 eosio::binary_extension<eosio::asset> blocked;
47 eosio::binary_extension<eosio::asset> membership_contribution;
48
49
50 uint64_t primary_key() const { return id; }
51 uint64_t by_username() const { return username.value; }
52 uint64_t by_program() const { return program_id; }
53 uint64_t by_agreement() const { return agreement_id; }
54
55 uint128_t by_username_and_program() const {
56 return combine_ids(username.value, program_id);
57 }
58};
59
60typedef eosio::multi_index<
61 "progwallets"_n,
63 eosio::indexed_by<"byusername"_n, eosio::const_mem_fun<progwallet, uint64_t, &progwallet::by_username>>,
64 eosio::indexed_by<"byprogram"_n, eosio::const_mem_fun<progwallet, uint64_t, &progwallet::by_program>>,
65 eosio::indexed_by<"byuserprog"_n, eosio::const_mem_fun<progwallet, uint128_t, &progwallet::by_username_and_program>>,
66 eosio::indexed_by<"byagreement"_n, eosio::const_mem_fun<progwallet, uint64_t, &progwallet::by_agreement>>
69progwallet get_user_program_wallet_or_fail(eosio::name coopname, eosio::name username, uint64_t program_id) {
70 progwallets_index progwallets(_soviet, coopname.value);
71
72 auto wallets_by_username_and_program = progwallets.template get_index<"byuserprog"_n>();
73 auto username_and_program_index = combine_ids(username.value, program_id);
74 auto wallet = wallets_by_username_and_program.find(username_and_program_index);
75
76 eosio::check(wallet != wallets_by_username_and_program.end(), "Кошелёк не найден");
77
78 return *wallet;
79}
Контракт Wallet управляет взносами и возвратами взносов по ЦПП "Цифровой Кошелёк".
Definition: wallet.hpp:16
static constexpr eosio::name _soviet
Definition: consts.hpp:156
contract
Definition: eosio.msig_tests.cpp:977
eosio::multi_index< "progwallets"_n, progwallet, eosio::indexed_by<"byusername"_n, eosio::const_mem_fun< progwallet, uint64_t, &progwallet::by_username > >, eosio::indexed_by<"byprogram"_n, eosio::const_mem_fun< progwallet, uint64_t, &progwallet::by_program > >, eosio::indexed_by<"byuserprog"_n, eosio::const_mem_fun< progwallet, uint128_t, &progwallet::by_username_and_program > >, eosio::indexed_by<"byagreement"_n, eosio::const_mem_fun< progwallet, uint64_t, &progwallet::by_agreement > > > progwallets_index
Definition: balances.hpp:67
progwallet get_user_program_wallet_or_fail(eosio::name coopname, eosio::name username, uint64_t program_id)
Definition: balances.hpp:69
eosio::multi_index<"balances"_n, balances_base, eosio::indexed_by<"byconsym"_n, eosio::const_mem_fun< balances_base, uint128_t, &balances_base::byconsym > > > balances_index
Definition: balances.hpp:22
Definition: eosio.msig.hpp:34
Структура таблицы баланса.
Definition: balances.hpp:10
eosio::asset quantity
Definition: balances.hpp:13
uint64_t id
Definition: balances.hpp:11
uint64_t primary_key() const
Definition: balances.hpp:15
eosio::name contract
Definition: balances.hpp:12
uint128_t byconsym() const
Definition: balances.hpp:17
Таблица кошельков программ кооператива
Definition: balances.hpp:39
uint64_t agreement_id
Идентификатор соглашения
Definition: balances.hpp:43
eosio::asset available
Доступные средства паевого взноса
Definition: balances.hpp:45
uint64_t id
Уникальный идентификатор кошелька
Definition: balances.hpp:40
eosio::binary_extension< eosio::asset > membership_contribution
Внесенный членский взнос
Definition: balances.hpp:47
uint64_t by_username() const
Индекс по имени пользователя
Definition: balances.hpp:51
eosio::name username
Имя пользователя
Definition: balances.hpp:44
eosio::binary_extension< eosio::asset > blocked
Недоступные средства паевого взноса
Definition: balances.hpp:46
uint64_t program_id
Идентификатор программы
Definition: balances.hpp:42
uint128_t by_username_and_program() const
Комбинированный индекс по имени пользователя и идентификатору программы
Definition: balances.hpp:55
uint64_t by_agreement() const
Индекс по идентификатору соглашения
Definition: balances.hpp:53
eosio::name coopname
Имя кооператива
Definition: balances.hpp:41
uint64_t primary_key() const
Definition: balances.hpp:50
uint64_t by_program() const
Индекс по идентификатору программы
Definition: balances.hpp:52
static uint128_t combine_ids(const uint64_t &x, const uint64_t &y)
Definition: utils.hpp:5