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
50inline bool exists(eosio::name coopname, eosio::name braname) {
51 branch_index branches(_branch, coopname.value);
52 return branches.find(braname.value) != branches.end();
53}
54
62inline void accrue(eosio::name actor, eosio::name coopname, eosio::name braname,
63 eosio::asset amount, eosio::name process_type,
64 eosio::checksum256 process_hash, std::string memo) {
66 eosio::permission_level{actor, "active"_n},
67 _branch,
68 "accrue"_n,
69 std::make_tuple(coopname, braname, actor, amount, process_type, process_hash, memo)
70 ).send();
71}
72
88inline void retfee(eosio::name actor, eosio::name coopname, eosio::name braname,
89 eosio::asset amount, eosio::name process_type,
90 eosio::checksum256 process_hash, std::string memo) {
92 eosio::permission_level{actor, "active"_n},
93 _branch,
94 "retfee"_n,
95 std::make_tuple(coopname, braname, actor, amount, process_type, process_hash, memo)
96 ).send();
97}
98
99} // namespace Branch
static constexpr eosio::name _branch
Definition: consts.hpp:181
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:88
bool is_trustee(eosio::name coopname, eosio::name username)
Definition: branch.hpp:29
bool exists(eosio::name coopname, eosio::name braname)
Кооперативный участок существует (не удалён).
Definition: branch.hpp:50
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:62
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:86
eosio::multi_index<"branchstat"_n, branchstat > branchstat_index
Definition: table_branch_branchstat.hpp:21