3#include <eosio/eosio.hpp>
4#include <eosio/asset.hpp>
20 const eosio::name
PAID =
"paid"_n;
51 time_point_sec spended_at = current_time_point();
59 typedef eosio::multi_index<
61 indexed_by<
"byusername"_n, const_mem_fun<expense, uint64_t, &expense::by_username>>,
62 indexed_by<
"byhash"_n, const_mem_fun<expense, checksum256, &expense::by_expense_hash>>,
63 indexed_by<
"byprojhash"_n, const_mem_fun<expense, checksum256, &expense::by_project_hash>>
73 inline std::optional<expense>
get_expense(eosio::name coopname,
const checksum256 &hash) {
98 eosio::check(
expense.has_value(),
"Расход с указанным хэшем не найден");
112 inline void create_expense(eosio::name coopname,
const checksum256 &project_hash,
113 const checksum256 &expense_hash, eosio::name username,
114 const eosio::asset &
amount,
115 const std::string &description,
const document2 &statement) {
120 expenses.emplace(coopname, [&](
auto &e) {
122 e.coopname = coopname;
123 e.username = username;
124 e.project_hash = project_hash;
125 e.expense_hash = expense_hash;
128 e.spended_at = current_time_point();
129 e.expense_statement = statement;
131 e.description = description;
144 auto expense = expenses.find(expense_id);
146 eosio::check(
expense != expenses.end(),
"Расход не найден");
148 expenses.modify(
expense, coopname, [&](
auto &e) {
150 e.approved_statement = approved_statement;
163 auto expense = expenses.find(expense_id);
164 eosio::check(
expense != expenses.end(),
"Расход не найден");
166 expenses.modify(
expense, coopname, [&](
auto &e) {
168 e.authorization = authorization;
179 auto expense = expenses.find(expense_id);
180 eosio::check(
expense != expenses.end(),
"Расход не найден");
210 time_point_sec spended_at = current_time_point();
217 typedef eosio::multi_index<
218 "progexpenses"_n, program_expense,
219 indexed_by<
"byusername"_n, const_mem_fun<program_expense, uint64_t, &program_expense::by_username>>,
220 indexed_by<
"byhash"_n, const_mem_fun<program_expense, checksum256, &program_expense::by_expense_hash>>
223 inline std::optional<program_expense>
get_program_expense(eosio::name coopname,
const checksum256 &hash) {
225 auto idx = t.get_index<
"byhash"_n>();
226 auto itr = idx.find(hash);
227 if (itr == idx.end())
return std::nullopt;
237 eosio::check(v.has_value(),
"Программный расход с указанным хэшем не найден");
242 eosio::name coopname,
243 const checksum256 &expense_hash,
244 eosio::name username,
245 const eosio::asset &
amount,
246 const std::string &description,
252 t.emplace(coopname, [&](
auto &e) {
254 e.coopname = coopname;
255 e.username = username;
256 e.expense_hash = expense_hash;
259 e.spended_at = current_time_point();
260 e.expense_statement = statement;
262 e.description = description;
268 auto itr = t.find(
id);
269 eosio::check(itr != t.end(),
"Программный расход не найден");
Шасси расходов — 8 actions, MVP только Благорост.
Definition: expense.hpp:141
static constexpr eosio::name _capital
Definition: consts.hpp:166
contract
Definition: eosio.msig_tests.cpp:977
share_type amount
Definition: eosio.token_tests.cpp:174
const eosio::name AUTHORIZED
Расход авторизован советом
Definition: expenses.hpp:19
const eosio::name DECLINED
Расход отклонен
Definition: expenses.hpp:21
const eosio::name PAID
Расход оплачен
Definition: expenses.hpp:20
const eosio::name APPROVED
Расход одобрен председателем
Definition: expenses.hpp:18
const eosio::name CREATED
Расход создан
Definition: expenses.hpp:17
Definition: expenses.hpp:9
void delete_expense(eosio::name coopname, uint64_t expense_id)
Удаляет запись расхода из таблицы.
Definition: expenses.hpp:177
void set_approved(eosio::name coopname, uint64_t expense_id, const document2 &approved_statement)
Обновляет статус и одобренную записку расхода.
Definition: expenses.hpp:141
program_expense get_program_expense_or_fail(eosio::name coopname, const checksum256 &expense_hash)
Definition: expenses.hpp:235
expense get_expense_or_fail(eosio::name coopname, const checksum256 &expense_hash)
Получает расход по хэшу или вызывает ошибку.
Definition: expenses.hpp:96
void create_expense(eosio::name coopname, const checksum256 &project_hash, const checksum256 &expense_hash, eosio::name username, const eosio::asset &amount, const std::string &description, const document2 &statement)
Создает запись расхода в таблице.
Definition: expenses.hpp:112
void create_program_expense(eosio::name coopname, const checksum256 &expense_hash, eosio::name username, const eosio::asset &amount, const std::string &description, const document2 &statement)
Definition: expenses.hpp:241
void delete_program_expense(eosio::name coopname, uint64_t id)
Definition: expenses.hpp:266
void set_authorized(eosio::name coopname, uint64_t expense_id, const document2 &authorization)
Обновляет статус и авторизацию расхода.
Definition: expenses.hpp:160
Definition: balances.cpp:6
std::optional< program_expense > get_program_expense(eosio::name coopname, const checksum256 &hash)
Definition: expenses.hpp:223
std::optional< expense > get_expense(eosio::name coopname, const checksum256 &hash)
Получает расход по хэшу.
Definition: expenses.hpp:73
eosio::multi_index< "progexpenses"_n, program_expense, indexed_by<"byusername"_n, const_mem_fun< program_expense, uint64_t, &program_expense::by_username > >, indexed_by<"byhash"_n, const_mem_fun< program_expense, checksum256, &program_expense::by_expense_hash > > > program_expense_index
Definition: expenses.hpp:221
eosio::multi_index< "expenses"_n, expense, indexed_by<"byusername"_n, const_mem_fun< expense, uint64_t, &expense::by_username > >, indexed_by<"byhash"_n, const_mem_fun< expense, checksum256, &expense::by_expense_hash > >, indexed_by<"byprojhash"_n, const_mem_fun< expense, checksum256, &expense::by_project_hash > > > expense_index
Definition: expenses.hpp:64
Definition: eosio.msig.hpp:34
Таблица расходов хранит информацию о расходах проектов кооператива.
Definition: expenses.hpp:35
checksum256 by_project_hash() const
Индекс по хэшу проекта (4)
Definition: expenses.hpp:56
uint64_t by_username() const
Индекс по имени пользователя (2)
Definition: expenses.hpp:54
eosio::asset amount
Сумма расхода
Definition: expenses.hpp:44
name coopname
Имя кооператива
Definition: expenses.hpp:37
std::string description
Публичное описание расхода
Definition: expenses.hpp:45
uint64_t id
ID расхода (внутренний ключ)
Definition: expenses.hpp:36
document2 expense_statement
Служебная записка
Definition: expenses.hpp:47
document2 approved_statement
Принятая записка председателем или доверенным
Definition: expenses.hpp:48
uint64_t fund_id
Идентификатор фонда списания (expfunds в контакте fund)
Definition: expenses.hpp:43
checksum256 expense_hash
Хэш расхода
Definition: expenses.hpp:42
checksum256 by_expense_hash() const
Индекс по хэшу расхода (3)
Definition: expenses.hpp:55
uint64_t primary_key() const
Первичный ключ (1)
Definition: expenses.hpp:53
document2 authorization
Утвержденная записка советом
Definition: expenses.hpp:49
name username
Имя пользователя, создавшего расход
Definition: expenses.hpp:38
checksum256 project_hash
Хэш проекта, связанного с расходом
Definition: expenses.hpp:41
name status
Статус расхода (created | approved | authorized | paid | declined)
Definition: expenses.hpp:40
Таблица программных расходов — целевые списания «Благорост», не привязанные к конкретному проекту.
Definition: expenses.hpp:195
name username
Инициатор расхода (председатель / казначей)
Definition: expenses.hpp:198
std::string description
Описание (для отчётности)
Definition: expenses.hpp:204
document2 approved_statement
Записка, принятая председателем
Definition: expenses.hpp:207
name coopname
Имя кооператива
Definition: expenses.hpp:197
uint64_t id
Внутренний ключ
Definition: expenses.hpp:196
uint64_t primary_key() const
Definition: expenses.hpp:212
document2 authorization
Решение совета
Definition: expenses.hpp:208
checksum256 expense_hash
Хеш расхода — анкер процесса p.cap.expns.
Definition: expenses.hpp:201
checksum256 by_expense_hash() const
Definition: expenses.hpp:214
uint64_t fund_id
Идентификатор фонда списания
Definition: expenses.hpp:202
uint64_t by_username() const
Definition: expenses.hpp:213
eosio::asset amount
Сумма расхода
Definition: expenses.hpp:203
document2 expense_statement
Служебная записка (ProgramExpenseStatement)
Definition: expenses.hpp:206
static constexpr uint64_t GENERAL_EXPENSES
Общехозяйственные расходы (содержание ПО)
Definition: ledger.hpp:113
static constexpr uint64_t ECONOMIC_ACTIVITY_FUND
Фонд обеспечения хозяйственной деятельности
Definition: ledger.hpp:130
Definition: document_core.hpp:27
uint64_t get_global_id_in_scope(eosio::name _me, eosio::name scope, eosio::name key)
Definition: table_counts.hpp:58