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/common.hpp"
11
12
41public:
43
44 [[eosio::action]] void init();
45 [[eosio::action]] void migrate();
46
47 //agenda.cpp
48 [[eosio::action]] void createagenda(CREATEAGENDA_SIGNATURE);
49 void authorize_action_effect(eosio::name executer, eosio::name coopname, uint64_t decision_id);
50
51
52 //soviet.cpp
53 [[eosio::action]] void exec(eosio::name executer, eosio::name coopname, uint64_t decision_id);
54
55 //ниже реестр хранилища документов
56
57
58 //документ
59 [[eosio::action]] void newsubmitted(NEWSUBMITTED_SIGNATURE);
60 [[eosio::action]] void newresolved(NEWRESOLVED_SIGNATURE);
61 [[eosio::action]] void newdecision(NEWDECISION_SIGNATURE);
62 [[eosio::action]] void newagreement(NEWAGREEMENT_SIGNATURE);
63 [[eosio::action]] void newpackage(NEWPACKAGE_SIGNATURE);
64
65 [[eosio::action]] void newact(NEWACT_SIGNATURE);
66 [[eosio::action]] void newlink(NEWLINK_SIGNATURE);
67 [[eosio::action]] void newdeclined(NEWDECLINED_SIGNATURE);
68
69 [[eosio::action]] void declinedoc(eosio::name coopname, eosio::name username, checksum256 hash, document2 document);
70
71 //approves
72 [[eosio::action]] void createapprv(CREATEAPPRV_SIGNATURE);
73
75 void confirmapprv(eosio::name coopname, checksum256 approval_hash, document2 approved_document);
76
78 void declineapprv(eosio::name coopname, checksum256 approval_hash, std::string reason);
79
80
81 //registrator.cpp
82 [[eosio::action]] void cancelreg(eosio::name coopname, eosio::name username, std::string message);
83
84 //regaccount.cpp
85 [[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);
86
87 //automator.cpp
88 [[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);
89 [[eosio::action]] void disautomate(eosio::name coopname, uint64_t board_id, eosio::name member, uint64_t automation_id );
90 static void make_base_coagreements(eosio::name coopname, eosio::symbol govern_symbol);
91
92 //chairman.cpp
93 [[eosio::action]] void authorize(eosio::name coopname, eosio::name chairman, uint64_t decision_id, document2 document);
94 [[eosio::action]] void createboard(eosio::name coopname, eosio::name username, eosio::name type, std::vector<board_member> members, std::string name, std::string description);
95 [[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);
96
97 //admin.cpp
98 [[eosio::action]] void addstaff(eosio::name coopname, eosio::name chairman, eosio::name username, std::vector<right> rights, std::string position_title);
99 [[eosio::action]] void rmstaff(eosio::name coopname, eosio::name chairman, eosio::name username);
100 [[eosio::action]] void setrights(eosio::name coopname, eosio::name chairman, eosio::name username, std::vector<right> rights);
101 [[eosio::action]] void validate(eosio::name coopname, eosio::name username, uint64_t decision_id);
102
103 //programs
104 [[eosio::action]] void openprogwall(name coopname, name username, name program_type, uint64_t agreement_id);
105
106 //voting.cpp
107 [[eosio::action]] void votefor(
108 std::string version,
109 eosio::name coopname,
110 eosio::name username,
111 uint64_t decision_id,
112 eosio::time_point_sec signed_at,
113 checksum256 signed_hash,
114 eosio::signature signature,
115 eosio::public_key public_key
116 );
117
118 [[eosio::action]] void voteagainst(
119 std::string version,
120 eosio::name coopname,
121 eosio::name username,
122 uint64_t decision_id,
123 eosio::time_point_sec signed_at,
124 checksum256 signed_hash,
125 eosio::signature signature,
126 eosio::public_key public_key
127 );
128
129 [[eosio::action]] void cancelvote(eosio::name coopname, eosio::name member, uint64_t decision_id);
130
131 //programs.cpp
132 [[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);
133 [[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);
134 [[eosio::action]] void disableprog(eosio::name coopname, uint64_t program_id);
135
136 //agreements.cpp
137 [[eosio::action]] void sndagreement(eosio::name coopname, eosio::name administrator, eosio::name username, eosio::name agreement_type, document2 document);
138 [[eosio::action]] void confirmagree(eosio::name coopname, eosio::name administrator, eosio::name username, uint64_t agreement_id);
139 [[eosio::action]] void declineagree(eosio::name coopname, eosio::name administrator, eosio::name username, uint64_t agreement_id, std::string comment);
140 [[eosio::action]] void migrateagree(eosio::name coopname, uint64_t agreement_id);
141
142
143 //decisions
144 [[eosio::action]] void withdraw(eosio::name coopname, eosio::name username, uint64_t withdraw_id, document2 statement);
145 [[eosio::action]] void cancelexprd(eosio::name coopname, uint64_t decision_id);
146
147 void withdraw_effect(eosio::name executer, eosio::name coopname, uint64_t decision_id, uint64_t batch_id);
148
149 [[eosio::action]] void addbal(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
150 [[eosio::action]] void subbal(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, bool skip_available_check, std::string memo);
151 [[eosio::action]] void blockbal(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
152 [[eosio::action]] void unblockbal(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
153 [[eosio::action]] void addmemberfee(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
154 [[eosio::action]] void submemberfee(eosio::name coopname, eosio::name username, uint64_t program_id, eosio::asset quantity, std::string memo);
155
156 //addresses.cpp
157 [[eosio::action]] void creaddress(eosio::name coopname, eosio::name chairman, eosio::name braname, address_data data);
158 [[eosio::action]] void deladdress(eosio::name coopname, eosio::name chairman, uint64_t address_id);
159 [[eosio::action]] void editaddress(eosio::name coopname, eosio::name chairman, eosio::name braname, uint64_t address_id, address_data data);
160
161
162 //fund.cpp
163 void subaccum_effect(eosio::name executer, eosio::name coopname, uint64_t decision_id, uint64_t program_id);
164 [[eosio::action]] void fundwithdraw(eosio::name coopname, eosio::name username, eosio::name type, uint64_t withdraw_id, document2 document);
165
166 //participants.cpp
167 [[eosio::action]] void block(eosio::name coopname, eosio::name admin, eosio::name username, std::string message);
168 [[eosio::action]] void unblock(eosio::name coopname, eosio::name admin, eosio::name username, bool is_registration, std::string message);
169
170 //branches.cpp
171 [[eosio::action]] void selectbranch(eosio::name coopname, eosio::name username, eosio::name braname, document2 document);
172
173 //decisions.cpp
174 void freedecision_effect(eosio::name executer, eosio::name coopname, uint64_t decision_id);
175 [[eosio::action]] void freedecision(eosio::name coopname, eosio::name username, document2 document, std::string meta);
176
177 //branch.cpp
178 [[eosio::action]] void deletebranch(eosio::name coopname, eosio::name braname);
179
180};
181
182
193 struct [[eosio::table, eosio::contract(SOVIET)]] counts : counts_base {};
194
206struct [[eosio::table, eosio::contract(SOVIET)]] automator {
207 uint64_t id;
208 eosio::name coopname;
209 uint64_t board_id;
210 eosio::name member;
211 eosio::name action_type;
212 eosio::name permission_name;
214
215 uint64_t primary_key() const { return id; }
216 uint128_t by_member_and_action_type() const { return combine_ids(member.value, action_type.value); }
217 uint64_t by_action() const { return action_type.value; }
218
219};
220
221
222 typedef eosio::multi_index< "automator"_n, automator,
223 eosio::indexed_by<"byaction"_n, eosio::const_mem_fun<automator, uint64_t, &automator::by_action>>,
224 eosio::indexed_by<"bymembaction"_n, eosio::const_mem_fun<automator, uint128_t, &automator::by_member_and_action_type>>
226
227
239 struct [[eosio::table, eosio::contract(SOVIET)]] autosigner {
240 uint64_t decision_id;
241 uint64_t primary_key() const { return decision_id; }
242 };
243
244 typedef eosio::multi_index< "autosigner"_n, autosigner> autosigner_index;
245
246
258 struct [[eosio::table, eosio::contract(SOVIET)]] joincoops {
259 uint64_t id;
260 eosio::name username;
261 bool is_paid = false;
262 std::string notice;
263
264 eosio::binary_extension<eosio::name> braname;
265
266 uint64_t primary_key() const {
267 return id;
268 };
269
270 uint64_t byusername() const {return username.value;}
271
272 };
273
274 typedef eosio::multi_index<"joincoops"_n, joincoops,
275 eosio::indexed_by<"byusername"_n, eosio::const_mem_fun<joincoops, uint64_t, &joincoops::byusername>>
277
289 struct [[eosio::table, eosio::contract(SOVIET)]] changes {
290 uint64_t id;
291 uint64_t exchange_id;
294
295
296 uint64_t primary_key() const {
297 return id;
298 };
299
300 uint64_t byexchange() const {
301 return exchange_id;
302 };
303 };
304
305 typedef eosio::multi_index<"changes"_n, changes,
306 eosio::indexed_by<"byexchange"_n, eosio::const_mem_fun<changes, uint64_t, &changes::byexchange>>
308
309
310
Definition: soviet.hpp:40
#define SOVIET
Definition: consts.hpp:131
const auto admin
Definition: eosio.limitauth_tests.cpp:18
contract
Definition: eosio.msig_tests.cpp:977
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()
#define NEWSUBMITTED_SIGNATURE
Definition: shared_soviet.hpp:18
#define NEWAGREEMENT_SIGNATURE
Definition: shared_soviet.hpp:36
#define NEWLINK_SIGNATURE
Definition: shared_soviet.hpp:33
#define NEWDECISION_SIGNATURE
Definition: shared_soviet.hpp:24
#define NEWRESOLVED_SIGNATURE
Definition: shared_soviet.hpp:21
#define NEWACT_SIGNATURE
Definition: shared_soviet.hpp:30
#define NEWDECLINED_SIGNATURE
Definition: shared_soviet.hpp:27
#define CREATEAGENDA_SIGNATURE
Definition: shared_soviet.hpp:7
#define NEWPACKAGE_SIGNATURE
Definition: shared_soviet.hpp:39
#define CREATEAPPRV_SIGNATURE
Definition: shared_soviet.hpp:10
eosio::multi_index< "autosigner"_n, autosigner > autosigner_index
Definition: soviet.hpp:244
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:225
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:307
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:276
Definition: coops.hpp:378
Таблица автоматизированных действий
Definition: soviet.hpp:206
eosio::name coopname
Имя кооператива, к которому относится данное автоматизированное действие
Definition: soviet.hpp:208
eosio::name permission_name
Имя разрешения для авторизации действия
Definition: soviet.hpp:212
uint64_t by_action() const
Индекс по типу действия
Definition: soviet.hpp:217
eosio::name member
Член совета, который автоматизировал данное действие
Definition: soviet.hpp:210
uint128_t by_member_and_action_type() const
Индекс по члену совета и типу действия
Definition: soviet.hpp:216
uint64_t id
Уникальный идентификатор автоматизированного действия
Definition: soviet.hpp:207
std::string encrypted_private_key
Зашифрованный приватный ключ для авторизации действия
Definition: soviet.hpp:213
uint64_t primary_key() const
Definition: soviet.hpp:215
uint64_t board_id
Идентификатор совета, который автоматизировал данное действие
Definition: soviet.hpp:209
eosio::name action_type
Тип автоматизированного действия
Definition: soviet.hpp:211
Таблица автоподписанта
Definition: soviet.hpp:239
uint64_t primary_key() const
Definition: soviet.hpp:241
uint64_t decision_id
Идентификатор решения для автоподписания
Definition: soviet.hpp:240
Таблица изменений обменов
Definition: soviet.hpp:289
uint64_t id
Уникальный идентификатор изменения
Definition: soviet.hpp:290
uint64_t primary_key() const
Definition: soviet.hpp:296
uint64_t return_product_decision_id
Идентификатор решения о возврате продукта
Definition: soviet.hpp:293
uint64_t contribution_product_decision_id
Идентификатор решения о внесении продукта
Definition: soviet.hpp:292
uint64_t exchange_id
Идентификатор обмена в контракте marketplace.
Definition: soviet.hpp:291
uint64_t byexchange() const
Definition: soviet.hpp:300
Definition: counts.hpp:1
Таблица счетчиков
Definition: soviet.hpp:193
Definition: drafts.hpp:28
Definition: drafts.hpp:7
Таблица заявок на вступление в кооператив
Definition: soviet.hpp:258
eosio::binary_extension< eosio::name > braname
Имя кооперативного участка
Definition: soviet.hpp:264
std::string notice
Примечание к заявке
Definition: soviet.hpp:262
uint64_t primary_key() const
Definition: soviet.hpp:266
uint64_t byusername() const
Индекс по имени пользователя
Definition: soviet.hpp:270
uint64_t id
Уникальный идентификатор заявки
Definition: soviet.hpp:259
eosio::name username
Имя пользователя, подавшего заявку
Definition: soviet.hpp:260
static uint128_t combine_ids(const uint64_t &x, const uint64_t &y)
Definition: utils.hpp:5