3#include <eosio/eosio.hpp>
4#include <eosio/asset.hpp>
21 constexpr name
PAID =
"paid"_n;
53typedef eosio::multi_index<
56 indexed_by<
"byusername"_n, const_mem_fun<debt, uint64_t, &debt::by_username>>,
57 indexed_by<
"bydebthash"_n, const_mem_fun<debt, checksum256, &debt::by_debt_hash>>,
58 indexed_by<
"byprojhash"_n, const_mem_fun<debt, checksum256, &debt::by_project_hash>>
64inline std::optional<debt>
get_debt(eosio::name coopname,
const checksum256 &debt_hash) {
66 auto hash_index = debts.get_index<
"bydebthash"_n>();
68 auto itr = hash_index.find(debt_hash);
69 if (itr == hash_index.end()) {
79inline debt get_debt_or_fail(eosio::name coopname,
const checksum256 &debt_hash,
const char* msg =
"Долг не найден") {
80 auto maybe_debt =
get_debt(coopname, debt_hash);
81 eosio::check(maybe_debt.has_value(), msg);
91 const checksum256 &project_hash,
92 const checksum256 &debt_hash,
94 const time_point_sec &repaid_at,
96 eosio::name payer = name{}
98 if (payer == name{}) payer = coopname;
101 auto exist_debt =
get_debt(coopname, debt_hash);
102 eosio::check(!exist_debt.has_value(),
"Ссуда с указанным hash уже существует");
107 debts.emplace(payer, [&](
auto &d){
109 d.coopname = coopname;
110 d.username = username;
112 d.debt_hash = debt_hash;
113 d.project_hash = project_hash;
115 d.statement = statement;
116 d.repaid_at = repaid_at;
124 eosio::name coopname,
125 const checksum256 &debt_hash,
126 eosio::name new_status,
127 eosio::name payer = name{},
129 const std::string &memo =
""
131 if (payer == name{}) payer = coopname;
136 auto debt = debts.find(exist_debt.id);
138 debts.modify(
debt, payer, [&](
auto &d) {
156inline void delete_debt(eosio::name coopname,
const checksum256 &debt_hash) {
160 auto debt = debts.find(exist_debt.id);
169 eosio::name coopname,
170 eosio::name username,
171 const checksum256 &debt_hash,
192 eosio::name coopname,
193 eosio::name username,
194 const checksum256 &debt_hash,
static constexpr eosio::name _capital
Definition: consts.hpp:150
contract
Definition: eosio.msig_tests.cpp:977
share_type amount
Definition: eosio.token_tests.cpp:174
uint64_t get_global_id_in_scope(eosio::name _me, eosio::name scope, eosio::name key)
Definition: counts.hpp:61
constexpr name PAID
Долг выплачен (готов к использованию)
Definition: debts.hpp:21
constexpr name AUTHORIZED
Долг авторизован советом
Definition: debts.hpp:20
constexpr name APPROVED
Долг одобрен
Definition: debts.hpp:19
constexpr name CREATED
Долг создан
Definition: debts.hpp:18
void create_debt_agenda(eosio::name coopname, eosio::name username, const checksum256 &debt_hash, const document2 &statement)
Создает агенду в совете для долга
Definition: debts.hpp:191
std::optional< debt > get_debt(eosio::name coopname, const checksum256 &debt_hash)
Получает долг по хэшу
Definition: debts.hpp:64
void delete_debt(eosio::name coopname, const checksum256 &debt_hash)
Удаляет долг
Definition: debts.hpp:156
void create_debt(eosio::name coopname, eosio::name username, const checksum256 &project_hash, const checksum256 &debt_hash, const asset &amount, const time_point_sec &repaid_at, const document2 &statement, eosio::name payer=name{})
Создает долг в таблице
Definition: debts.hpp:88
debt get_debt_or_fail(eosio::name coopname, const checksum256 &debt_hash, const char *msg="Долг не найден")
Получает долг по хэшу или падает с ошибкой
Definition: debts.hpp:79
eosio::multi_index< "debts"_n, debt, indexed_by<"byusername"_n, const_mem_fun< debt, uint64_t, &debt::by_username > >, indexed_by<"bydebthash"_n, const_mem_fun< debt, checksum256, &debt::by_debt_hash > >, indexed_by<"byprojhash"_n, const_mem_fun< debt, checksum256, &debt::by_project_hash > > > debts_index
Definition: debts.hpp:59
void create_debt_approval(eosio::name coopname, eosio::name username, const checksum256 &debt_hash, const document2 &statement)
Создает аппрув для долга
Definition: debts.hpp:168
void update_debt_status(eosio::name coopname, const checksum256 &debt_hash, eosio::name new_status, eosio::name payer=name{}, const document2 &document=document2{}, const std::string &memo="")
Обновляет статус долга
Definition: debts.hpp:123
constexpr eosio::name CREATE_DEBT
Definition: shared_names.hpp:103
constexpr eosio::name AUTHORIZE_DEBT
Definition: shared_names.hpp:59
constexpr eosio::name DECLINE_DEBT
Definition: shared_names.hpp:61
constexpr eosio::name CREATE_DEBT
Definition: shared_names.hpp:93
void create_agenda(name calling_contract, CREATEAGENDA_SIGNATURE)
Создаёт агенду в совете
Definition: shared_soviet.hpp:50
void create_approval(name calling_contract, CREATEAPPRV_SIGNATURE)
Создаёт аппрув в совете
Definition: shared_soviet.hpp:73
Definition: eosio.msig.hpp:34
eosio::multi_index< "debts"_n, debt, indexed_by<"byusername"_n, const_mem_fun< debt, uint64_t, &debt::by_username > >, indexed_by<"bydebthash"_n, const_mem_fun< debt, checksum256, &debt::by_debt_hash > >, indexed_by<"byprojhash"_n, const_mem_fun< debt, checksum256, &debt::by_project_hash > > > debts_index
Definition: shared_debts.hpp:28
Таблица долгов хранит данные о ссудах участников проектов.
Definition: debts.hpp:32
uint64_t primary_key() const
Первичный ключ (1)
Definition: debts.hpp:46
uint64_t by_username() const
Индекс по имени пользователя (2)
Definition: debts.hpp:48
eosio::name username
Имя пользователя
Definition: debts.hpp:35
asset amount
Сумма долга
Definition: debts.hpp:40
time_point_sec repaid_at
Дата погашения долга
Definition: debts.hpp:39
checksum256 project_hash
Хэш проекта
Definition: debts.hpp:38
checksum256 by_project_hash() const
Индекс по хэшу проекта (4)
Definition: debts.hpp:50
uint64_t id
ID долга (внутренний ключ)
Definition: debts.hpp:33
document2 statement
Заявление на ссуду
Definition: debts.hpp:41
checksum256 debt_hash
Хэш долга
Definition: debts.hpp:37
document2 approved_statement
Одобренное заявление
Definition: debts.hpp:42
document2 authorization
Авторизация совета
Definition: debts.hpp:43
std::string memo
Примечание
Definition: debts.hpp:44
checksum256 by_debt_hash() const
Индекс по хэшу долга (3)
Definition: debts.hpp:49
eosio::name coopname
Имя кооператива
Definition: debts.hpp:34
Definition: shared_debts.hpp:1
eosio::name status
Definition: shared_debts.hpp:5
Definition: drafts.hpp:28