4#include "../lib/core/ram_payer.hpp"
5#include <eosio/eosio.hpp>
6#include <eosio/asset.hpp>
7#include <eosio/crypto.hpp>
8#include "../lib/index.hpp"
121 eosio::checksum256
by_hash()
const {
return proposal_hash; }
123 uint64_t
by_status()
const {
return static_cast<uint64_t
>(status); }
126 (
id)(coopname)(proposal_hash)(username)(source_wallet)(status)
127 (items)(total_planned)(total_actual)(callback)(statement_doc)(decision_doc)
128 (created_at)(updated_at))
132 eosio::indexed_by<
"byhash"_n, eosio::const_mem_fun<proposal, eosio::checksum256, &proposal::by_hash>>,
133 eosio::indexed_by<
"byusername"_n, eosio::const_mem_fun<proposal, uint64_t, &proposal::by_username>>,
134 eosio::indexed_by<
"bystatus"_n, eosio::const_mem_fun<proposal, uint64_t, &proposal::by_status>>
166 void createexp(name coopname, name username,
167 checksum256 proposal_hash,
169 std::vector<ExpenseDomain::item> items,
189 void declexp(name coopname, checksum256 proposal_hash, std::string reason);
200 void payexp(name coopname, checksum256 proposal_hash, checksum256 item_hash,
201 asset actual_amount);
210 void reportexp(name coopname, checksum256 proposal_hash, checksum256 item_hash);
217 void closeexp(name coopname, checksum256 proposal_hash);
226 void returnexp(name coopname, checksum256 proposal_hash, checksum256 item_hash,
227 asset return_amount);
236 void overspendexp(name coopname, checksum256 proposal_hash, checksum256 item_hash,
237 asset overspend_amount);
Базовый класс контрактов платформы.
Definition: coop_contract.hpp:33
coop_contract(eosio::name receiver, eosio::name code, eosio::datastream< const char * > ds)
Definition: coop_contract.hpp:35
Шасси расходов — 8 actions, MVP только Благорост.
Definition: expense.hpp:143
contract
Definition: eosio.msig_tests.cpp:977
RAM_PAYER_CLASS(ExpenseDomain::proposal, cooperative)
Definition: expense.hpp:28
ItemStatus
Definition: expense.hpp:61
@ RETURNED
Зарезервировано, не используется: returnexp уменьшает actual_amount, статус остаётся PAID до отчёта.
@ REPORTED
Закрыт отчётом (чек приложен). DIRECT-item получает его сразу при payexp.
@ OVERSPENT
Зарезервировано, не используется: overspendexp увеличивает actual_amount, статус остаётся PAID до отч...
Mechanics
Способ оплаты item-а в СЗ. ADVANCE — пайщик-получатель оплачивает, затем приносит чек....
Definition: expense.hpp:35
RecipientType
Получатель платежа в item-е. SELF — сам создатель СЗ. MEMBER — другой пайщик. ORG — внешняя организац...
Definition: expense.hpp:46
ProposalStatus
Definition: expense.hpp:52
@ CLOSED
СЗ-отчёт авторизован — расход закрыт.
@ PARTIALLY_PAID
Часть item-ов оплачена.
@ REPORT_SUBMITTED
Отчёт о расходе подан, ждёт авторизации совета.
eosio::multi_index<"proposals"_n, proposal, eosio::indexed_by<"byhash"_n, eosio::const_mem_fun< proposal, eosio::checksum256, &proposal::by_hash > >, eosio::indexed_by<"byusername"_n, eosio::const_mem_fun< proposal, uint64_t, &proposal::by_username > >, eosio::indexed_by<"bystatus"_n, eosio::const_mem_fun< proposal, uint64_t, &proposal::by_status > > > proposals_index
Definition: expense.hpp:135
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()
Callback на финализацию — устанавливается при createexp как переменная.
Definition: expense.hpp:78
eosio::name contract
Definition: expense.hpp:79
eosio::name action
Definition: expense.hpp:80
std::vector< char > data
Definition: expense.hpp:81
Item — одна строка СЗ-расхода.
Definition: expense.hpp:88
std::string description
Definition: expense.hpp:93
eosio::name recipient
username (для SELF/MEMBER), либо name-идентификатор (для ORG)
Definition: expense.hpp:92
uint8_t mechanics
Mechanics.
Definition: expense.hpp:90
uint8_t status
ItemStatus.
Definition: expense.hpp:96
eosio::asset actual_amount
0 пока не оплачено / не отчиталось
Definition: expense.hpp:95
eosio::checksum256 item_hash
Definition: expense.hpp:89
eosio::asset planned_amount
Definition: expense.hpp:94
uint8_t recipient_type
RecipientType.
Definition: expense.hpp:91
Таблица СЗ-расходов. Scope = coopname.
Definition: expense.hpp:104
eosio::name source_wallet
семантически — из какого ЦПП/фонда (w.cap.blago, w.sov.expns, …)
Definition: expense.hpp:109
eosio::checksum256 proposal_hash
Definition: expense.hpp:107
std::vector< item > items
Definition: expense.hpp:111
eosio::checksum256 by_hash() const
Definition: expense.hpp:121
uint64_t id
Definition: expense.hpp:105
eosio::name username
создатель
Definition: expense.hpp:108
uint64_t by_username() const
Definition: expense.hpp:122
eosio::asset total_planned
Definition: expense.hpp:112
document2 statement_doc
type=2010, signact1 создателя
Definition: expense.hpp:115
callback_handler callback
опционально; contract.value == 0 = нет callback
Definition: expense.hpp:114
document2 decision_doc
type=2011, signact2 совета
Definition: expense.hpp:116
eosio::asset total_actual
Definition: expense.hpp:113
uint8_t status
ProposalStatus.
Definition: expense.hpp:110
eosio::time_point_sec updated_at
Definition: expense.hpp:118
uint64_t by_status() const
Definition: expense.hpp:123
eosio::name coopname
кооператив (= scope таблицы; дублируем полем по канону)
Definition: expense.hpp:106
uint64_t primary_key() const
Definition: expense.hpp:120
eosio::time_point_sec created_at
Definition: expense.hpp:117
Definition: table_registrator_orgs.hpp:17
Definition: table_soviet_decisions.hpp:22
Definition: document_core.hpp:27