COOPENOMICS  v1
Кооперативная Экономика
Класс expense

Шасси расходов — 8 actions, MVP только Благорост. Подробнее...

#include <expense.hpp>

Граф наследования:expense:

Открытые члены

void createexp (name coopname, name username, checksum256 proposal_hash, name source_wallet, std::vector< ExpenseDomain::item > items, ExpenseDomain::callback_handler callback, document2 statement)
 Создать и подать СЗ-расход. Подробнее...
 
void authexp (name coopname, checksum256 proposal_hash, document2 decision)
 Авторизовать СЗ советом (signact2 decision_doc, type=2011). Callback решения совета — вызывается только контрактом soviet после голосования и утверждения председателем. После этого расход доступен для оплаты. Подробнее...
 
void declexp (name coopname, checksum256 proposal_hash, std::string reason)
 Отклонить СЗ. Callback решения совета (отрицательный консенсус голосов «против» либо просрочка повестки) — вызывается только контрактом soviet. Возможно только до первой оплаты (CREATED / AUTHORIZED): после payexp средства уже ушли через ledger2, и СЗ завершается обычным путём reportexp / returnexp → closeexp. Подробнее...
 
void payexp (name coopname, checksum256 proposal_hash, checksum256 item_hash, asset actual_amount)
 Оплатить item — выдача аванса (ADVANCE) или прямая оплата организации (DIRECT). Контракт зовёт Ledger2::apply с кодом из набора операций кошелька-источника (EXPENSE_OPERATION_SETS: source_wallet + механика item'а → operation_code). actual_amount не может превышать план item (доплата — через overspendexp). DIRECT-item не имеет фазы подотчёта и помечается REPORTED сразу; когда все items REPORTED — proposal переходит в REPORT_SUBMITTED прямо из payexp. Подробнее...
 
void reportexp (name coopname, checksum256 proposal_hash, checksum256 item_hash)
 Отчёт о расходе (ADVANCE) — пайщик закрывает item чеком. Зовёт Ledger2::apply(o.exp.advrpt) на остаточный actual item'а (при полном возврате аванса burn пропускается). Когда все items reported — статус proposal становится REPORT_SUBMITTED. Подробнее...
 
void closeexp (name coopname, checksum256 proposal_hash)
 Закрытие расхода советом — финальный signact2 СЗ-отчёта. Если у proposal заполнен callback — отправляет inline action на (callback.contract, callback.action, callback.data). Подробнее...
 
void returnexp (name coopname, checksum256 proposal_hash, checksum256 item_hash, asset return_amount)
 Возврат неиспользованного аванса (ADVANCE-остаток). Settlement-запись: уменьшает actual_amount item'а, статус остаётся PAID — фактически потраченная часть закрывается затем штатным reportexp. Зовёт Ledger2::apply(o.exp.advret). Подробнее...
 
void overspendexp (name coopname, checksum256 proposal_hash, checksum256 item_hash, asset overspend_amount)
 Доплата при перерасходе (ADVANCE). Settlement-запись: увеличивает actual_amount item'а, статус остаётся PAID. Зовёт Ledger2::apply(o.exp.over) — выдача доплаты; закрытие подотчёта на полную сумму (выдано + доплата) делает последующий reportexp. Подробнее...
 

Подробное описание

Шасси расходов — 8 actions, MVP только Благорост.

Методы

◆ authexp()

void expense::authexp ( name  coopname,
checksum256  proposal_hash,
document2  decision 
)

Авторизовать СЗ советом (signact2 decision_doc, type=2011). Callback решения совета — вызывается только контрактом soviet после голосования и утверждения председателем. После этого расход доступен для оплаты.

◆ closeexp()

void expense::closeexp ( name  coopname,
checksum256  proposal_hash 
)

Закрытие расхода советом — финальный signact2 СЗ-отчёта. Если у proposal заполнен callback — отправляет inline action на (callback.contract, callback.action, callback.data).

◆ createexp()

void expense::createexp ( name  coopname,
name  username,
checksum256  proposal_hash,
name  source_wallet,
std::vector< ExpenseDomain::item items,
ExpenseDomain::callback_handler  callback,
document2  statement 
)

Создать и подать СЗ-расход.

Создание и подача — одна транзакция (slug createexp). На входе: items + источник (source_wallet) + опц. callback на финализацию. Подписывает создатель (signact1 statement_doc, type=2010).

Авторизация: coopname (прямой вызов backend'а) либо контракт-инициатор из contracts_whitelist (inline, например capital::createpgexp). Механика оплаты — per-item (item.mechanics: ADVANCE | DIRECT); ledger2-код операции выводится из механики позиции в момент оплаты payexp.

Ставит вопрос в повестку совета (soviet::createagenda, тип createexp): утверждение совета → callback authexp, отклонение → declexp.

◆ declexp()

void expense::declexp ( name  coopname,
checksum256  proposal_hash,
std::string  reason 
)

Отклонить СЗ. Callback решения совета (отрицательный консенсус голосов «против» либо просрочка повестки) — вызывается только контрактом soviet. Возможно только до первой оплаты (CREATED / AUTHORIZED): после payexp средства уже ушли через ledger2, и СЗ завершается обычным путём reportexp / returnexp → closeexp.

◆ overspendexp()

void expense::overspendexp ( name  coopname,
checksum256  proposal_hash,
checksum256  item_hash,
asset  overspend_amount 
)

Доплата при перерасходе (ADVANCE). Settlement-запись: увеличивает actual_amount item'а, статус остаётся PAID. Зовёт Ledger2::apply(o.exp.over) — выдача доплаты; закрытие подотчёта на полную сумму (выдано + доплата) делает последующий reportexp.

◆ payexp()

void expense::payexp ( name  coopname,
checksum256  proposal_hash,
checksum256  item_hash,
asset  actual_amount 
)

Оплатить item — выдача аванса (ADVANCE) или прямая оплата организации (DIRECT). Контракт зовёт Ledger2::apply с кодом из набора операций кошелька-источника (EXPENSE_OPERATION_SETS: source_wallet + механика item'а → operation_code). actual_amount не может превышать план item (доплата — через overspendexp). DIRECT-item не имеет фазы подотчёта и помечается REPORTED сразу; когда все items REPORTED — proposal переходит в REPORT_SUBMITTED прямо из payexp.

◆ reportexp()

void expense::reportexp ( name  coopname,
checksum256  proposal_hash,
checksum256  item_hash 
)

Отчёт о расходе (ADVANCE) — пайщик закрывает item чеком. Зовёт Ledger2::apply(o.exp.advrpt) на остаточный actual item'а (при полном возврате аванса burn пропускается). Когда все items reported — статус proposal становится REPORT_SUBMITTED.

◆ returnexp()

void expense::returnexp ( name  coopname,
checksum256  proposal_hash,
checksum256  item_hash,
asset  return_amount 
)

Возврат неиспользованного аванса (ADVANCE-остаток). Settlement-запись: уменьшает actual_amount item'а, статус остаётся PAID — фактически потраченная часть закрывается затем штатным reportexp. Зовёт Ledger2::apply(o.exp.advret).


Объявления и описания членов классов находятся в файлах: