COOPENOMICS  v1
Кооперативная Экономика
soviet.hpp
См. документацию.
1// #pragma once
2
3#include <eosio/binary_extension.hpp>
4#include <eosio/eosio.hpp>
5#include <eosio/ignore.hpp>
6#include <eosio/transaction.hpp>
7#include <eosio/asset.hpp>
8#include <eosio/singleton.hpp>
9
10#include "../lib/index.hpp"
11
12
41public:
43
44 [[eosio::action]] void init();
45 [[eosio::action]] void migrate();
46
71 [[eosio::action]] void repairdec(
72 eosio::name coopname,
73 uint64_t decision_id,
74 eosio::name username,
75 eosio::name type,
76 uint64_t batch_id,
77 document2 statement,
78 std::vector<eosio::name> votes_for,
79 std::vector<eosio::name> votes_against,
80 bool validated,
81 bool approved,
82 bool authorized,
83 eosio::name authorized_by,
84 document2 authorization,
85 eosio::time_point_sec created_at,
86 eosio::time_point_sec expired_at,
87 std::string meta,
88 eosio::name callback_contract,
89 eosio::name confirm_callback,
90 eosio::name decline_callback,
91 checksum256 hash
92 );
93
100 [[eosio::action]] void converttoaxn(eosio::name coopname, eosio::asset amount, document2 statement, checksum256 process_hash);
101
102 //agenda.cpp
103 [[eosio::action]] void createagenda(CREATEAGENDA_SIGNATURE);
104 void authorize_action_effect(eosio::name executer, eosio::name coopname, uint64_t decision_id);
105
106
107 //soviet.cpp
108 [[eosio::action]] void exec(eosio::name executer, eosio::name coopname, uint64_t decision_id);
109
110 //ниже реестр хранилища документов
111
112
113 //документ
114 [[eosio::action]] void newsubmitted(NEWSUBMITTED_SIGNATURE);
115 [[eosio::action]] void newresolved(NEWRESOLVED_SIGNATURE);
116 [[eosio::action]] void newdecision(NEWDECISION_SIGNATURE);
117 [[eosio::action]] void newagreement(NEWAGREEMENT_SIGNATURE);
118 [[eosio::action]] void newpackage(NEWPACKAGE_SIGNATURE);
119
120 [[eosio::action]] void newact(NEWACT_SIGNATURE);
121 [[eosio::action]] void newlink(NEWLINK_SIGNATURE);
122 [[eosio::action]] void newdeclined(NEWDECLINED_SIGNATURE);
123
124 [[eosio::action]] void declinedoc(eosio::name coopname, eosio::name username, checksum256 hash, document2 document);
125
126 //approves
127 [[eosio::action]] void createapprv(CREATEAPPRV_SIGNATURE);
128
129 [[eosio::action]]
130 void confirmapprv(eosio::name coopname, eosio::name username, checksum256 approval_hash, std::optional<document2> approved_document);
131
132 [[eosio::action]]
133 void declineapprv(eosio::name coopname, eosio::name username, checksum256 approval_hash, std::string reason);
134
135
136 //registrator.cpp
137 [[eosio::action]] void cancelreg(eosio::name coopname, eosio::name username, std::string message);
138
139 //regaccount.cpp
140 [[eosio::action]] void addpartcpnt(eosio::name coopname, eosio::name username, eosio::name braname, eosio::name type, eosio::time_point_sec created_at, eosio::asset initial, eosio::asset minimum, bool spread_initial);
141
142 //delparticipant.cpp
143 [[eosio::action]] void delpartcpnt(eosio::name coopname, eosio::name username);
144
145 //setminamt.cpp
146 [[eosio::action]] void setminamt(eosio::name coopname, eosio::name username, eosio::asset minimum);
147
148 //automator.cpp
149 [[eosio::action]] void automate(eosio::name coopname, uint64_t board_id, eosio::name member, eosio::name action_type, eosio::name provider, std::string encrypted_private_key);
150 [[eosio::action]] void disautomate(eosio::name coopname, uint64_t board_id, eosio::name member, uint64_t automation_id );
151 static void make_base_coagreements(eosio::name coopname, eosio::symbol govern_symbol);
152
153 //chairman.cpp
154 [[eosio::action]] void authorize(eosio::name coopname, eosio::name chairman, uint64_t decision_id, document2 document);
155 [[eosio::action]] void createboard(eosio::name coopname, eosio::name username, eosio::name type, std::vector<board_member> members, std::string name, std::string description);
156 [[eosio::action]] void updateboard(eosio::name coopname, eosio::name username, uint64_t board_id, std::vector<board_member> members, std::string name, std::string description);
157
158 //admin.cpp
159 [[eosio::action]] void addstaff(eosio::name coopname, eosio::name chairman, eosio::name username, std::vector<right> rights, std::string position_title);
160 [[eosio::action]] void rmstaff(eosio::name coopname, eosio::name chairman, eosio::name username);
161 [[eosio::action]] void setrights(eosio::name coopname, eosio::name chairman, eosio::name username, std::vector<right> rights);
162 [[eosio::action]] void validate(eosio::name coopname, eosio::name username, uint64_t decision_id);
163
164 //programs
165 [[eosio::action]] void openprogwall(name coopname, name username, name program_type, uint64_t agreement_id);
166
167 //voting.cpp
168 [[eosio::action]] void votefor(
169 std::string version,
170 eosio::name coopname,
171 eosio::name username,
172 uint64_t decision_id,
173 eosio::time_point_sec signed_at,
174 checksum256 signed_hash,
175 eosio::signature signature,
176 eosio::public_key public_key
177 );
178
179 [[eosio::action]] void voteagainst(
180 std::string version,
181 eosio::name coopname,
182 eosio::name username,
183 uint64_t decision_id,
184 eosio::time_point_sec signed_at,
185 checksum256 signed_hash,
186 eosio::signature signature,
187 eosio::public_key public_key
188 );
189
190 [[eosio::action]] void cancelvote(eosio::name coopname, eosio::name member, uint64_t decision_id);
191
192 //programs.cpp
193 [[eosio::action]] void createprog(eosio::name coopname, eosio::name username, eosio::name type, std::string title, std::string announce, std::string description, std::string preview, std::string images, eosio::name calculation_type, eosio::asset fixed_membership_contribution, uint64_t membership_percent_fee, bool is_can_coop_spend_share_contributions, std::string meta);
194 [[eosio::action]] void editprog(eosio::name coopname, eosio::name username, uint64_t program_id, uint64_t draft_id, std::string title, std::string announce, std::string description, std::string preview, std::string images, std::string meta);
195 [[eosio::action]] void disableprog(eosio::name coopname, uint64_t program_id);
196
197 //agreements.cpp
198 [[eosio::action]] void sndagreement(eosio::name coopname, eosio::name administrator, eosio::name username, eosio::name agreement_type, document2 document);
199 [[eosio::action]] void confirmagree(eosio::name coopname, eosio::name administrator, eosio::name username, uint64_t agreement_id);
200 [[eosio::action]] void declineagree(eosio::name coopname, eosio::name administrator, eosio::name username, uint64_t agreement_id, std::string comment);
201 [[eosio::action]] void migrateagree(eosio::name coopname, uint64_t agreement_id);
202
203
204 //decisions
205 [[eosio::action]] void withdraw(eosio::name coopname, eosio::name username, uint64_t withdraw_id, document2 statement);
206 [[eosio::action]] void cancelexprd(eosio::name coopname, uint64_t decision_id);
207 [[eosio::action]] void declinedec(eosio::name coopname, uint64_t decision_id);
208
209 void withdraw_effect(eosio::name executer, eosio::name coopname, uint64_t decision_id, uint64_t batch_id);
210
211 [[eosio::action]] void addbal(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
212 [[eosio::action]] void subbal(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, bool skip_available_check, std::string memo);
213 [[eosio::action]] void blockbal(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
214 [[eosio::action]] void unblockbal(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
215 [[eosio::action]] void addmemberfee(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
216 [[eosio::action]] void submemberfee(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
217
218 //addresses.cpp
219 [[eosio::action]] void creaddress(eosio::name coopname, eosio::name chairman, eosio::name braname, address_data data);
220 [[eosio::action]] void deladdress(eosio::name coopname, eosio::name chairman, uint64_t address_id);
221 [[eosio::action]] void editaddress(eosio::name coopname, eosio::name chairman, eosio::name braname, uint64_t address_id, address_data data);
222
223
224 //fund.cpp
225 void subaccum_effect(eosio::name executer, eosio::name coopname, uint64_t decision_id, uint64_t program_id);
226 [[eosio::action]] void fundwithdraw(eosio::name coopname, eosio::name username, eosio::name type, uint64_t withdraw_id, document2 document);
227
228 //participants.cpp
229 [[eosio::action]] void block(eosio::name coopname, eosio::name admin, eosio::name username, std::string message);
230 [[eosio::action]] void unblock(eosio::name coopname, eosio::name admin, eosio::name username, bool is_registration, std::string message);
231
232 //branches.cpp
233 [[eosio::action]] void selectbranch(eosio::name coopname, eosio::name username, eosio::name braname, document2 document);
234
235 //decisions.cpp
236 void freedecision_effect(eosio::name executer, eosio::name coopname, uint64_t decision_id);
237 [[eosio::action]] void freedecision(eosio::name coopname, eosio::name username, document2 document, std::string meta);
238
239 //branch.cpp
240 [[eosio::action]] void deletebranch(eosio::name coopname, eosio::name braname);
241
248 [[eosio::action]] void createtax(eosio::name coopname,
249 eosio::checksum256 tax_hash,
250 eosio::asset amount,
251 std::string meta);
252
258 [[eosio::action]] void taxconfirm(eosio::name coopname,
259 eosio::checksum256 outcome_hash);
260
266 [[eosio::action]] void taxdecline(eosio::name coopname,
267 eosio::checksum256 outcome_hash,
268 std::string reason);
269
270 [[eosio::action]] void setbranch(eosio::name coopname, eosio::name username, eosio::name braname);
271
272};
273
274
285 struct [[eosio::table, eosio::contract(SOVIET)]] counts : counts_base {};
286
298struct [[eosio::table, eosio::contract(SOVIET)]] automator {
299 uint64_t id;
300 eosio::name coopname;
301 uint64_t board_id;
302 eosio::name member;
303 eosio::name action_type;
304 eosio::name permission_name;
306
307 uint64_t primary_key() const { return id; }
308 uint128_t by_member_and_action_type() const { return combine_ids(member.value, action_type.value); }
309 uint64_t by_action() const { return action_type.value; }
310
311};
312
313
314 typedef eosio::multi_index< "automator"_n, automator,
315 eosio::indexed_by<"byaction"_n, eosio::const_mem_fun<automator, uint64_t, &automator::by_action>>,
316 eosio::indexed_by<"bymembaction"_n, eosio::const_mem_fun<automator, uint128_t, &automator::by_member_and_action_type>>
318
319
331 struct [[eosio::table, eosio::contract(SOVIET)]] autosigner {
332 uint64_t decision_id;
333 uint64_t primary_key() const { return decision_id; }
334 };
335
336 typedef eosio::multi_index< "autosigner"_n, autosigner> autosigner_index;
337
338
350 struct [[eosio::table, eosio::contract(SOVIET)]] joincoops {
351 uint64_t id;
352 eosio::name username;
353 bool is_paid = false;
354 std::string notice;
355
356 eosio::binary_extension<eosio::name> braname;
357
358 uint64_t primary_key() const {
359 return id;
360 };
361
362 uint64_t byusername() const {return username.value;}
363
364 };
365
366 typedef eosio::multi_index<"joincoops"_n, joincoops,
367 eosio::indexed_by<"byusername"_n, eosio::const_mem_fun<joincoops, uint64_t, &joincoops::byusername>>
369
381 struct [[eosio::table, eosio::contract(SOVIET)]] changes {
382 uint64_t id;
383 uint64_t exchange_id;
386
387
388 uint64_t primary_key() const {
389 return id;
390 };
391
392 uint64_t byexchange() const {
393 return exchange_id;
394 };
395 };
396
397 typedef eosio::multi_index<"changes"_n, changes,
398 eosio::indexed_by<"byexchange"_n, eosio::const_mem_fun<changes, uint64_t, &changes::byexchange>>
400
401
402
Definition: soviet.hpp:40
#define SOVIET
Definition: consts.hpp:145
const auto admin
Definition: eosio.limitauth_tests.cpp:18
contract
Definition: eosio.msig_tests.cpp:977
share_type amount
Definition: eosio.token_tests.cpp:174
#define NEWSUBMITTED_SIGNATURE
Definition: soviet.hpp:31
#define NEWAGREEMENT_SIGNATURE
Definition: soviet.hpp:49
#define NEWLINK_SIGNATURE
Definition: soviet.hpp:46
#define NEWDECISION_SIGNATURE
Definition: soviet.hpp:37
#define NEWRESOLVED_SIGNATURE
Definition: soviet.hpp:34
#define NEWACT_SIGNATURE
Definition: soviet.hpp:43
#define NEWDECLINED_SIGNATURE
Definition: soviet.hpp:40
#define CREATEAGENDA_SIGNATURE
Definition: soviet.hpp:13
#define NEWPACKAGE_SIGNATURE
Definition: soviet.hpp:52
#define CREATEAPPRV_SIGNATURE
Definition: soviet.hpp:16
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()
eosio::multi_index< "autosigner"_n, autosigner > autosigner_index
Definition: soviet.hpp:336
eosio::multi_index< "automator"_n, automator, eosio::indexed_by<"byaction"_n, eosio::const_mem_fun< automator, uint64_t, &automator::by_action > >, eosio::indexed_by<"bymembaction"_n, eosio::const_mem_fun< automator, uint128_t, &automator::by_member_and_action_type > > > automator_index
Definition: soviet.hpp:317
eosio::multi_index<"changes"_n, changes, eosio::indexed_by<"byexchange"_n, eosio::const_mem_fun< changes, uint64_t, &changes::byexchange > > > changes_index
Definition: soviet.hpp:399
eosio::multi_index<"joincoops"_n, joincoops, eosio::indexed_by<"byusername"_n, eosio::const_mem_fun< joincoops, uint64_t, &joincoops::byusername > > > joincoops_index
Definition: soviet.hpp:368
Definition: table_soviet_addresses.hpp:8
Таблица автоматизированных действий
Definition: soviet.hpp:298
eosio::name coopname
Имя кооператива, к которому относится данное автоматизированное действие
Definition: soviet.hpp:300
eosio::name permission_name
Имя разрешения для авторизации действия
Definition: soviet.hpp:304
uint64_t by_action() const
Индекс по типу действия
Definition: soviet.hpp:309
eosio::name member
Член совета, который автоматизировал данное действие
Definition: soviet.hpp:302
uint128_t by_member_and_action_type() const
Индекс по члену совета и типу действия
Definition: soviet.hpp:308
uint64_t id
Уникальный идентификатор автоматизированного действия
Definition: soviet.hpp:299
std::string encrypted_private_key
Зашифрованный приватный ключ для авторизации действия
Definition: soviet.hpp:305
uint64_t primary_key() const
Definition: soviet.hpp:307
uint64_t board_id
Идентификатор совета, который автоматизировал данное действие
Definition: soviet.hpp:301
eosio::name action_type
Тип автоматизированного действия
Definition: soviet.hpp:303
Таблица автоподписанта
Definition: soviet.hpp:331
uint64_t primary_key() const
Definition: soviet.hpp:333
uint64_t decision_id
Идентификатор решения для автоподписания
Definition: soviet.hpp:332
Таблица изменений обменов
Definition: soviet.hpp:381
uint64_t id
Уникальный идентификатор изменения
Definition: soviet.hpp:382
uint64_t primary_key() const
Definition: soviet.hpp:388
uint64_t return_product_decision_id
Идентификатор решения о возврате продукта
Definition: soviet.hpp:385
uint64_t contribution_product_decision_id
Идентификатор решения о внесении продукта
Definition: soviet.hpp:384
uint64_t exchange_id
Идентификатор обмена в контракте marketplace.
Definition: soviet.hpp:383
uint64_t byexchange() const
Definition: soviet.hpp:392
Definition: table_counts.hpp:7
Таблица счетчиков
Definition: soviet.hpp:285
Definition: document_core.hpp:27
Definition: document_core.hpp:10
Таблица заявок на вступление в кооператив
Definition: soviet.hpp:350
eosio::binary_extension< eosio::name > braname
Имя кооперативного участка
Definition: soviet.hpp:356
std::string notice
Примечание к заявке
Definition: soviet.hpp:354
uint64_t primary_key() const
Definition: soviet.hpp:358
uint64_t byusername() const
Индекс по имени пользователя
Definition: soviet.hpp:362
uint64_t id
Уникальный идентификатор заявки
Definition: soviet.hpp:351
eosio::name username
Имя пользователя, подавшего заявку
Definition: soviet.hpp:352
static uint128_t combine_ids(const uint64_t &x, const uint64_t &y)
Definition: utils.hpp:7