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
54class [[eosio::contract(BRANCH)]] branch : public coop_contract
55{
56
57public:
58 branch(eosio::name receiver, eosio::name code,
59 eosio::datastream<const char *> ds)
60 : coop_contract(receiver, code, ds) {}
61
62 [[eosio::action]] void init();
63 [[eosio::action]] void migrate();
65 [[eosio::action]] void cleanup();
66
67 [[eosio::action]] void createbranch(eosio::name coopname, eosio::name braname, eosio::name trustee);
68 [[eosio::action]] void editbranch(eosio::name coopname, eosio::name braname, eosio::name trustee);
69 [[eosio::action]] void deletebranch(eosio::name coopname, eosio::name braname);
70 [[eosio::action]] void addtrusted(eosio::name coopname, eosio::name braname, eosio::name trusted);
71 [[eosio::action]] void deltrusted(eosio::name coopname, eosio::name braname, eosio::name trusted);
72
73 // Приватность кооперативного участка и управление белым списком (председатель совета).
74 // Приватный участок нельзя выбрать (selectbranch), если аккаунт не в белом списке участка.
75 [[eosio::action]] void setprivate(eosio::name coopname, eosio::name braname, bool is_private);
76 [[eosio::action]] void addwhite(eosio::name coopname, eosio::name braname, eosio::name account);
77 [[eosio::action]] void delwhite(eosio::name coopname, eosio::name braname, eosio::name account);
78
79 // Универсальный механизм «собрание → решение» (L1)
80 [[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);
81 [[eosio::action]] void joindec(eosio::name coopname, eosio::checksum256 hash, eosio::name username);
82 [[eosio::action]] void startdec(eosio::name coopname, eosio::checksum256 hash, eosio::name chairman, std::string address, std::vector<decision_point> agenda);
83 [[eosio::action]] void votedec(eosio::name coopname, eosio::checksum256 hash, eosio::name username, document2 ballot, std::vector<decision_vote_point> votes);
84 [[eosio::action]] void closedec(eosio::name coopname, eosio::checksum256 hash, document2 protocol);
85
86 // Расширение автоматизируемого решения (L2): создание кооперативного участка через совет.
87 // Председатель участка подписывает пакетом заявление, договор о полной материальной
88 // ответственности (liability) и доверенность председателю участка (authority).
89 [[eosio::action]] void exec(eosio::name coopname, eosio::checksum256 hash, document2 petition, document2 liability, document2 authority);
90 [[eosio::action]] void confirmdec(eosio::name coopname, eosio::checksum256 hash, document2 authorization);
91 [[eosio::action]] void declinedec(eosio::name coopname, eosio::checksum256 hash, std::string reason);
92 [[eosio::action]] void canceldec(eosio::name coopname, eosio::checksum256 hash, std::string reason);
93
94 // Договор о полной материальной ответственности председателя КУ: встречная подпись председателя совета
95 // (callback'и одобрения совета; отклонение заблокировано — решение об учреждении участка уже принято)
96 [[eosio::action]] void apprliab(eosio::name coopname, eosio::name username, eosio::checksum256 approval_hash, document2 approved_document);
97 [[eosio::action]] void declliab(eosio::name coopname, eosio::name username, eosio::checksum256 approval_hash, std::string reason);
98
99 // Доверенность председателя КУ: встречная подпись председателя совета
100 // (отдельное одобрение совета рядом с договором матответственности; отклонение заблокировано)
101 [[eosio::action]] void apprauth(eosio::name coopname, eosio::name username, eosio::checksum256 approval_hash, document2 approved_document);
102 [[eosio::action]] void declauth(eosio::name coopname, eosio::name username, eosio::checksum256 approval_hash, std::string reason);
103
104 // Доверенные лица по заявлению: договор о полной материальной ответственности (application)
105 // и доверенность доверенному лицу (authority) — оба со встречной подписью председателя участка
106 [[eosio::action]] void reqtrusted(eosio::name coopname, eosio::name braname, eosio::name username, eosio::checksum256 hash, document2 application, document2 authority);
107 [[eosio::action]] void apprtrusted(eosio::name coopname, eosio::checksum256 hash, document2 countersigned, document2 countersigned_authority);
108 [[eosio::action]] void decltrusted(eosio::name coopname, eosio::checksum256 hash, std::string reason);
109
110 // ── Экономика кооперативного участка (requirement b6) ────────────────
111
117 [[eosio::action]] void setweight(eosio::name coopname, eosio::name braname,
118 eosio::name contract, eosio::name username,
119 uint64_t weight);
120
126 [[eosio::action]] void delweight(eosio::name coopname, eosio::name braname,
127 eosio::name contract, eosio::name username);
128
135 [[eosio::action]] void accrue(eosio::name coopname, eosio::name braname,
136 eosio::name source_contract,
137 eosio::asset amount,
138 eosio::name process_type,
139 eosio::checksum256 process_hash,
140 std::string memo);
141
149 [[eosio::action]] void retfee(eosio::name coopname, eosio::name braname,
150 eosio::name source_contract,
151 eosio::asset amount,
152 eosio::name process_type,
153 eosio::checksum256 process_hash,
154 std::string memo);
155
164 [[eosio::action]] void distribute(eosio::name coopname, eosio::name braname,
165 eosio::name source_contract,
166 eosio::checksum256 round_hash,
167 eosio::asset amount,
168 std::string memo);
169
170
178 [[eosio::action]] void createaid(eosio::name coopname, eosio::name username,
179 eosio::name braname,
180 eosio::checksum256 aid_hash,
181 eosio::asset amount,
182 document2 statement,
183 std::string meta);
184
191 [[eosio::action]] void onaidauth(eosio::name coopname,
192 eosio::checksum256 hash,
193 document2 authorization);
194
201 [[eosio::action]] void onaiddecl(eosio::name coopname,
202 eosio::checksum256 hash,
203 std::string reason);
204
211 [[eosio::action]] void aidconfirm(eosio::name coopname,
212 eosio::checksum256 outcome_hash);
213
219 [[eosio::action]] void aiddecline(eosio::name coopname,
220 eosio::checksum256 outcome_hash,
221 std::string reason);
222
230 [[eosio::action]] void createexp(eosio::name coopname, eosio::name braname,
231 eosio::name creator,
232 eosio::checksum256 expense_hash,
233 std::vector<ExpenseDomain::item> items,
234 document2 statement);
235
242 [[eosio::action]] void onexpdone(eosio::name coopname,
243 eosio::checksum256 expense_hash,
244 uint8_t status,
245 eosio::asset total_actual,
246 std::vector<char> data);
247};
Константы контракта кооперативных участков
Definition: branch.hpp:55
branch(eosio::name receiver, eosio::name code, eosio::datastream< const char * > ds)
Definition: branch.hpp:58
Базовый класс контрактов платформы.
Definition: coop_contract.hpp:33
#define BRANCH
Definition: consts.hpp:154
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:88
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
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:16
Definition: table_soviet_addresses.hpp:34
Definition: permissions.hpp:31
Definition: document_core.hpp:27