COOPENOMICS  v1
Кооперативная Экономика
fund.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
43// Константы определены в lib/consts.hpp:
44// HUNDR_PERCENTS = 1000000 (100%)
45// ONE_PERCENT = 10000 (1%)
46
54class [[eosio::contract(FUND)]] fund : public coop_contract {
55 public:
56 fund(eosio::name receiver, eosio::name code,
57 eosio::datastream<const char *> ds)
58 : coop_contract(receiver, code, ds) {}
59
60 void apply(uint64_t receiver, uint64_t code, uint64_t action);
61 [[eosio::action]] void migrate();
63 [[eosio::action]] void cleanup();
64
65 [[eosio::action]] void newfund(eosio::name coopname, eosio::name type,
66 uint64_t id);
67 [[eosio::action]] void newwithdraw(eosio::name coopname, eosio::name type,
68 uint64_t id);
69
70 [[eosio::action]] void init(eosio::name coopname, eosio::asset initial);
71
72 // type: accumulation, expend
73 [[eosio::action]] void createfund(eosio::name coopname, eosio::name username,
74 eosio::name type, eosio::name contract,
75 std::string name, std::string description,
76 uint64_t percent);
77 [[eosio::action]] void editfund(eosio::name coopname, eosio::name username,
78 eosio::name type, uint64_t fund_id,
79 eosio::name contract, std::string name,
80 std::string description, uint64_t percent);
81 [[eosio::action]] void delfund(eosio::name coopname, eosio::name username,
82 eosio::name type, uint64_t fund_id);
83
84 // атомарные транзакции фондового кошелька
85 // паевой фонд
86 [[eosio::action]] void addcirculate(
87 eosio::name coopname,
88 eosio::asset quantity);
89 [[eosio::action]] void subcirculate(
90 eosio::name coopname,
91 eosio::asset quantity,
92 bool skip_available_check = false
93 );
94
95 // фонды накопления
96 [[eosio::action]] void addaccum(eosio::name coopname, uint64_t fund_id,
97 eosio::asset quantity);
98 [[eosio::action]] void subaccum(eosio::name coopname, uint64_t fund_id,
99 eosio::asset quantity);
100 // списать можно только с помощью вызова метода withdraw смарт-контракта
101
102 // счет накопления для списаний
103 [[eosio::action]] void addexpense(eosio::name coopname, uint64_t fund_id,
104 eosio::asset quantity);
105
106 // добавить членский взнос на накопительный счет кооператива для дальнейшего управления
107 [[eosio::action]] void accumfee(eosio::name coopname, eosio::asset quantity);
108
109 //счет вступительных взносов
110 [[eosio::action]] void addinitial(eosio::name coopname,
111 eosio::asset quantity);
112
113 [[eosio::action]] void subinitial(eosio::name coopname, eosio::asset quantity);
114
115 // метод распределения членской части взноса по фондам накопления с остатком в
116 // кошельке для распределения по фондам списания
117 [[eosio::action]] void spreadamount(
118 eosio::name coopname,
119 eosio::asset quantity);
122
123 // метод вывода средств из фондов накопления
124 [[eosio::action]] void fundwithdraw(eosio::name coopname,
125 eosio::name username, eosio::name type,
126 uint64_t fund_id, document2 document,
127 eosio::asset quantity,
128 std::string bank_data_id);
129 // используется только на фондах накопления
130
131 // метод авторизации средств из кошелька
132 [[eosio::action]] void authorize(eosio::name coopname, eosio::name type,
133 uint64_t withdraw_id);
134
135 // используется авторизованными участником для подтверждения совершения
136 // выплаты
137 [[eosio::action]] void complete(eosio::name coopname, eosio::name username,
138 uint64_t withdraw_id);
139
140 struct [[eosio::table, eosio::contract(FUND)]] counts : counts_base {};
141};
142
143// Плательщик за оперативную память строк таблицы — правило в lib/core/ram_payer.hpp.
Базовый класс контрактов платформы.
Definition: coop_contract.hpp:33
Константы контракта управления фондами
Definition: fund.hpp:54
void apply(uint64_t receiver, uint64_t code, uint64_t action)
fund(eosio::name receiver, eosio::name code, eosio::datastream< const char * > ds)
Definition: fund.hpp:56
#define FUND
Definition: consts.hpp:153
contract
Definition: eosio.msig_tests.cpp:977
RAM_PAYER_CLASS(fund::counts, contract)
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_counts.hpp:8
Definition: document_core.hpp:27
Definition: document_core.hpp:10
Definition: fund.hpp:140