COOPENOMICS  v1
Кооперативная Экономика
branch.hpp
См. документацию.
1#include <eosio/asset.hpp>
2#include <eosio/contract.hpp>
3#include <eosio/crypto.hpp>
4#include <eosio/eosio.hpp>
5#include <eosio/multi_index.hpp>
6#include <eosio/system.hpp>
7#include <eosio/time.hpp>
8
9#include "../lib/index.hpp"
10#include "../lib/core/gateway/gateway.hpp"
11#include "../lib/core/ledger2/ledger2.hpp"
12#include "../lib/core/branch/ndfl.hpp" // BranchNdfl::calc_tax / calc_net — удержание НДФЛ из материальной помощи
13#include "../expense/expense.hpp" // ExpenseDomain::item / callback_handler — для inline-action в шасси расходов
14
36// /**
37// \defgroup public_branch_consts Константы
38// \ingroup public_branch
39// */
40
47// Константы будут добавлены по мере необходимости
48
55{
56
57public:
58 branch(eosio::name receiver, eosio::name code,
59 eosio::datastream<const char *> ds)
60 : eosio::contract(receiver, code, ds) {}
61
62 [[eosio::action]] void init();
63 [[eosio::action]] void migrate();
64
65 [[eosio::action]] void createbranch(eosio::name coopname, eosio::name braname, eosio::name trustee);
66 [[eosio::action]] void editbranch(eosio::name coopname, eosio::name braname, eosio::name trustee);
67 [[eosio::action]] void deletebranch(eosio::name coopname, eosio::name braname);
68 [[eosio::action]] void addtrusted(eosio::name coopname, eosio::name braname, eosio::name trusted);
69 [[eosio::action]] void deltrusted(eosio::name coopname, eosio::name braname, eosio::name trusted);
70
71 // Приватность кооперативного участка и управление белым списком (председатель совета).
72 // Приватный участок нельзя выбрать (selectbranch), если аккаунт не в белом списке участка.
73 [[eosio::action]] void setprivate(eosio::name coopname, eosio::name braname, bool is_private);
74 [[eosio::action]] void addwhite(eosio::name coopname, eosio::name braname, eosio::name account);
75 [[eosio::action]] void delwhite(eosio::name coopname, eosio::name braname, eosio::name account);
76
77 // Универсальный механизм «собрание → решение» (L1)
78 [[eosio::action]] void createdec(eosio::name coopname, eosio::checksum256 hash, eosio::name type, eosio::name initiator, document2 proposal, eosio::name braname, std::vector<decision_point> agenda);
79 [[eosio::action]] void joindec(eosio::name coopname, eosio::checksum256 hash, eosio::name username);
80 [[eosio::action]] void startdec(eosio::name coopname, eosio::checksum256 hash, eosio::name chairman, std::string address, std::vector<decision_point> agenda);
81 [[eosio::action]] void votedec(eosio::name coopname, eosio::checksum256 hash, eosio::name username, document2 ballot, std::vector<decision_vote_point> votes);
82 [[eosio::action]] void closedec(eosio::name coopname, eosio::checksum256 hash, document2 protocol);
83
84 // Расширение автоматизируемого решения (L2): создание кооперативного участка через совет.
85 // Председатель участка подписывает пакетом заявление, договор о полной материальной
86 // ответственности (liability) и доверенность председателю участка (authority).
87 [[eosio::action]] void exec(eosio::name coopname, eosio::checksum256 hash, document2 petition, document2 liability, document2 authority);
88 [[eosio::action]] void confirmdec(eosio::name coopname, eosio::checksum256 hash, document2 authorization);
89 [[eosio::action]] void declinedec(eosio::name coopname, eosio::checksum256 hash, std::string reason);
90 [[eosio::action]] void canceldec(eosio::name coopname, eosio::checksum256 hash, std::string reason);
91
92 // Договор о полной материальной ответственности председателя КУ: встречная подпись председателя совета
93 // (callback'и одобрения совета; отклонение заблокировано — решение об учреждении участка уже принято)
94 [[eosio::action]] void apprliab(eosio::name coopname, eosio::name username, eosio::checksum256 approval_hash, document2 approved_document);
95 [[eosio::action]] void declliab(eosio::name coopname, eosio::name username, eosio::checksum256 approval_hash, std::string reason);
96
97 // Доверенность председателя КУ: встречная подпись председателя совета
98 // (отдельное одобрение совета рядом с договором матответственности; отклонение заблокировано)
99 [[eosio::action]] void apprauth(eosio::name coopname, eosio::name username, eosio::checksum256 approval_hash, document2 approved_document);
100 [[eosio::action]] void declauth(eosio::name coopname, eosio::name username, eosio::checksum256 approval_hash, std::string reason);
101
102 // Доверенные лица по заявлению: договор о полной материальной ответственности (application)
103 // и доверенность доверенному лицу (authority) — оба со встречной подписью председателя участка
104 [[eosio::action]] void reqtrusted(eosio::name coopname, eosio::name braname, eosio::name username, eosio::checksum256 hash, document2 application, document2 authority);
105 [[eosio::action]] void apprtrusted(eosio::name coopname, eosio::checksum256 hash, document2 countersigned, document2 countersigned_authority);
106 [[eosio::action]] void decltrusted(eosio::name coopname, eosio::checksum256 hash, std::string reason);
107
108 // ── Экономика кооперативного участка (requirement b6) ────────────────
109
115 [[eosio::action]] void setweight(eosio::name coopname, eosio::name braname,
116 eosio::name contract, eosio::name username,
117 uint64_t weight);
118
124 [[eosio::action]] void delweight(eosio::name coopname, eosio::name braname,
125 eosio::name contract, eosio::name username);
126
133 [[eosio::action]] void accrue(eosio::name coopname, eosio::name braname,
134 eosio::name source_contract,
135 eosio::asset amount,
136 eosio::name process_type,
137 eosio::checksum256 process_hash,
138 std::string memo);
139
147 [[eosio::action]] void retfee(eosio::name coopname, eosio::name braname,
148 eosio::name source_contract,
149 eosio::asset amount,
150 eosio::name process_type,
151 eosio::checksum256 process_hash,
152 std::string memo);
153
162 [[eosio::action]] void distribute(eosio::name coopname, eosio::name braname,
163 eosio::name source_contract,
164 eosio::checksum256 round_hash,
165 eosio::asset amount,
166 std::string memo);
167
173 [[eosio::action]] void convert(eosio::name coopname, eosio::name username,
174 eosio::checksum256 convert_hash,
175 eosio::asset amount);
176
184 [[eosio::action]] void createaid(eosio::name coopname, eosio::name username,
185 eosio::name braname,
186 eosio::checksum256 aid_hash,
187 eosio::asset amount,
188 document2 statement,
189 std::string meta);
190
197 [[eosio::action]] void onaidauth(eosio::name coopname,
198 eosio::checksum256 hash,
199 document2 authorization);
200
207 [[eosio::action]] void onaiddecl(eosio::name coopname,
208 eosio::checksum256 hash,
209 std::string reason);
210
217 [[eosio::action]] void aidconfirm(eosio::name coopname,
218 eosio::checksum256 outcome_hash);
219
225 [[eosio::action]] void aiddecline(eosio::name coopname,
226 eosio::checksum256 outcome_hash,
227 std::string reason);
228
236 [[eosio::action]] void createexp(eosio::name coopname, eosio::name braname,
237 eosio::name creator,
238 eosio::checksum256 expense_hash,
239 std::vector<ExpenseDomain::item> items,
240 document2 statement);
241
248 [[eosio::action]] void onexpdone(eosio::name coopname,
249 eosio::checksum256 expense_hash,
250 uint8_t status,
251 eosio::asset total_actual,
252 std::vector<char> data);
253};
Константы контракта кооперативных участков
Definition: branch.hpp:55
branch(eosio::name receiver, eosio::name code, eosio::datastream< const char * > ds)
Definition: branch.hpp:58
#define BRANCH
Definition: consts.hpp:149
contract
Definition: eosio.msig_tests.cpp:977
share_type amount
Definition: eosio.token_tests.cpp:174
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
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
Definition: eosio.msig.hpp:34
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()
Definition: table_registrator_accounts.hpp:14
Definition: table_soviet_addresses.hpp:32
Definition: permissions.hpp:31
Definition: document_core.hpp:27