4#include "../../../lib/core/ram_payer.hpp"
5#include <eosio/eosio.hpp>
6#include <eosio/asset.hpp>
23 constexpr name
PAID =
"paid"_n;
55typedef eosio::multi_index<
58 indexed_by<
"byusername"_n, const_mem_fun<debt, uint64_t, &debt::by_username>>,
59 indexed_by<
"bydebthash"_n, const_mem_fun<debt, checksum256, &debt::by_debt_hash>>,
60 indexed_by<
"byprojhash"_n, const_mem_fun<debt, checksum256, &debt::by_project_hash>>
66inline std::optional<debt>
get_debt(eosio::name coopname,
const checksum256 &debt_hash) {
68 auto hash_index = debts.get_index<
"bydebthash"_n>();
70 auto itr = hash_index.find(debt_hash);
71 if (itr == hash_index.end()) {
81inline debt get_debt_or_fail(eosio::name coopname,
const checksum256 &debt_hash,
const char* msg =
"Долг не найден") {
82 auto maybe_debt =
get_debt(coopname, debt_hash);
83 eosio::check(maybe_debt.has_value(), msg);
84 return maybe_debt.value();
93 const checksum256 &project_hash,
94 const checksum256 &debt_hash,
96 const time_point_sec &repaid_at,
98 eosio::name payer = name{}
100 if (payer == name{}) payer = coopname;
105 debts.emplace(
RamPayer::of(debts, coopname), [&](
auto &d){
107 d.coopname = coopname;
108 d.username = username;
110 d.debt_hash = debt_hash;
111 d.project_hash = project_hash;
113 d.statement = statement;
114 d.repaid_at = repaid_at;
122 eosio::name coopname,
124 eosio::name new_status,
125 eosio::name payer = name{},
127 const std::string &memo =
""
129 if (payer == name{}) payer = coopname;
132 auto debt = debts.find(debt_id);
133 eosio::check(
debt != debts.end(),
"Долг не найден");
136 d.status = new_status;
155 auto debt = debts.find(debt_id);
157 eosio::check(
debt != debts.end(),
"Долг не найден");
166 eosio::name coopname,
167 eosio::name username,
168 const checksum256 &debt_hash,
189 eosio::name coopname,
190 eosio::name username,
191 const checksum256 &debt_hash,
static constexpr eosio::name _capital
Definition: consts.hpp:171
RAM_PAYER_CLASS(Capital::Debts::debt, cooperative)
contract
Definition: eosio.msig_tests.cpp:977
share_type amount
Definition: eosio.token_tests.cpp:174
constexpr name PAID
Долг выплачен (готов к использованию)
Definition: debts.hpp:23
constexpr name AUTHORIZED
Долг авторизован советом
Definition: debts.hpp:22
constexpr name APPROVED
Долг одобрен
Definition: debts.hpp:21
constexpr name CREATED
Долг создан
Definition: debts.hpp:20
void create_debt_agenda(eosio::name coopname, eosio::name username, const checksum256 &debt_hash, const document2 &statement)
Создает агенду в совете для долга
Definition: debts.hpp:188
std::optional< debt > get_debt(eosio::name coopname, const checksum256 &debt_hash)
Получает долг по хэшу
Definition: debts.hpp:66
void update_debt_status(eosio::name coopname, uint64_t debt_id, eosio::name new_status, eosio::name payer=name{}, const document2 &document=document2{}, const std::string &memo="")
Обновляет статус долга
Definition: debts.hpp:121
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:90
debt get_debt_or_fail(eosio::name coopname, const checksum256 &debt_hash, const char *msg="Долг не найден")
Получает долг по хэшу или падает с ошибкой
Definition: debts.hpp:81
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:61
void delete_debt(eosio::name coopname, uint64_t debt_id)
Удаляет долг
Definition: debts.hpp:153
void create_debt_approval(eosio::name coopname, eosio::name username, const checksum256 &debt_hash, const document2 &statement)
Создает аппрув для долга
Definition: debts.hpp:165
constexpr eosio::name CREATE_DEBT
Definition: names.hpp:130
constexpr eosio::name AUTHORIZE_DEBT
Definition: names.hpp:59
constexpr eosio::name DECLINE_DEBT
Definition: names.hpp:61
constexpr eosio::name CREATE_DEBT
Definition: names.hpp:109
eosio::name of(const Table &table, eosio::name coopname)
Definition: ram_payer.hpp:78
void create_agenda(name calling_contract, CREATEAGENDA_SIGNATURE)
Definition: soviet.hpp:60
void create_approval(name calling_contract, CREATEAPPRV_SIGNATURE)
Definition: soviet.hpp:66
Definition: eosio.msig.hpp:34
Таблица долгов хранит данные о ссудах участников проектов.
Definition: debts.hpp:34
uint64_t primary_key() const
Первичный ключ (1)
Definition: debts.hpp:48
uint64_t by_username() const
Индекс по имени пользователя (2)
Definition: debts.hpp:50
eosio::name username
Имя пользователя
Definition: debts.hpp:37
asset amount
Сумма долга
Definition: debts.hpp:42
time_point_sec repaid_at
Дата погашения долга
Definition: debts.hpp:41
checksum256 project_hash
Хэш проекта
Definition: debts.hpp:40
checksum256 by_project_hash() const
Индекс по хэшу проекта (4)
Definition: debts.hpp:52
uint64_t id
ID долга (внутренний ключ)
Definition: debts.hpp:35
document2 statement
Заявление на ссуду
Definition: debts.hpp:43
checksum256 debt_hash
Хэш долга
Definition: debts.hpp:39
document2 approved_statement
Одобренное заявление
Definition: debts.hpp:44
document2 authorization
Авторизация совета
Definition: debts.hpp:45
std::string memo
Примечание
Definition: debts.hpp:46
checksum256 by_debt_hash() const
Индекс по хэшу долга (3)
Definition: debts.hpp:51
eosio::name coopname
Имя кооператива
Definition: debts.hpp:36
Definition: table_registrator_orgs.hpp:17
Definition: table_capital_debts.hpp:14
Definition: document_core.hpp:27
Definition: document_core.hpp:10
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: table_capital_debts.hpp:40
uint64_t get_global_id_in_scope(eosio::name _me, eosio::name scope, eosio::name key)
Definition: table_counts.hpp:62