COOPENOMICS  v1
Кооперативная Экономика
branch.hpp
См. документацию.
1#pragma once
2
3#include <string>
4#include <tuple>
5
6#include <eosio/action.hpp>
7#include <eosio/asset.hpp>
8#include <eosio/crypto.hpp>
9#include <eosio/eosio.hpp>
10
11#include "../../consts.hpp"
12
16namespace Branch {
17
18uint64_t get_branch_count(eosio::name coopname) {
19 branchstat_index stat(_branch, _branch.value);
20 auto st = stat.find(coopname.value);
21
22 if (st == stat.end()) {
23 return 0;
24 }
25
26 return st->count;
27}
28
29bool is_trustee(eosio::name coopname, eosio::name username) {
30 branch_index branches(_branch, coopname.value);
31
32 auto by_trustee_index = branches.get_index<"bytrustee"_n>();
33 auto trustee_itr = by_trustee_index.find(username.value);
34
35 return trustee_itr != by_trustee_index.end();
36}
37
38bool is_trusted(eosio::name coopname, eosio::name braname, eosio::name username) {
39 branch_index branches(_branch, coopname.value);
40 auto branch_itr = branches.find(braname.value);
41
42 if (branch_itr == branches.end()) {
43 return false;
44 }
45
46 return branch_itr->is_account_in_trusted(username);
47}
48
56inline void accrue(eosio::name actor, eosio::name coopname, eosio::name braname,
57 eosio::asset amount, eosio::name process_type,
58 eosio::checksum256 process_hash, std::string memo) {
60 eosio::permission_level{actor, "active"_n},
61 _branch,
62 "accrue"_n,
63 std::make_tuple(coopname, braname, actor, amount, process_type, process_hash, memo)
64 ).send();
65}
66
82inline void retfee(eosio::name actor, eosio::name coopname, eosio::name braname,
83 eosio::asset amount, eosio::name process_type,
84 eosio::checksum256 process_hash, std::string memo) {
86 eosio::permission_level{actor, "active"_n},
87 _branch,
88 "retfee"_n,
89 std::make_tuple(coopname, braname, actor, amount, process_type, process_hash, memo)
90 ).send();
91}
92
93} // namespace Branch
static constexpr eosio::name _branch
Definition: consts.hpp:176
permission_level
Definition: eosio.msig_tests.cpp:896
share_type amount
Definition: eosio.token_tests.cpp:174
void send(name contract, name action_name, name actor, Args &&... args)
Definition: actions.hpp:10
Definition: branch.hpp:16
bool is_trusted(eosio::name coopname, eosio::name braname, eosio::name username)
Definition: branch.hpp:38
void retfee(eosio::name actor, eosio::name coopname, eosio::name braname, eosio::asset amount, eosio::name process_type, eosio::checksum256 process_hash, std::string memo)
Inline-вызов branch::retfee от контракта-источника — точная инверсия accrue: членский взнос возвращае...
Definition: branch.hpp:82
bool is_trustee(eosio::name coopname, eosio::name username)
Definition: branch.hpp:29
void accrue(eosio::name actor, eosio::name coopname, eosio::name braname, eosio::asset amount, eosio::name process_type, eosio::checksum256 process_hash, std::string memo)
Inline-вызов branch::accrue от контракта-источника членских взносов (requirement b6 «Экономика КУ»,...
Definition: branch.hpp:56
uint64_t get_branch_count(eosio::name coopname)
Definition: branch.hpp:18
action(permission_level{ _gateway, "active"_n}, _gateway, "adduser"_n, std::make_tuple(coopname, deposit->username, to_spread, to_circulation, eosio::current_time_point(), true)).send()
eosio::multi_index< "branches"_n, coobranch, eosio::indexed_by<"bytrustee"_n, eosio::const_mem_fun< coobranch, uint64_t, &coobranch::by_trustee > > > branch_index
Definition: table_branch_branches.hpp:84
eosio::multi_index<"branchstat"_n, branchstat > branchstat_index
Definition: table_branch_branchstat.hpp:19