|
COOPENOMICS
v1
Кооперативная Экономика
|
Шасси расходов — 8 actions, MVP только Благорост. Подробнее...
#include <expense.hpp>
Открытые члены | |
| 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 только Благорост.
| void expense::authexp | ( | name | coopname, |
| checksum256 | proposal_hash, | ||
| document2 | decision | ||
| ) |
Авторизовать СЗ советом (signact2 decision_doc, type=2011). Callback решения совета — вызывается только контрактом soviet после голосования и утверждения председателем. После этого расход доступен для оплаты.
| void expense::closeexp | ( | name | coopname, |
| checksum256 | proposal_hash | ||
| ) |
Закрытие расхода советом — финальный signact2 СЗ-отчёта. Если у proposal заполнен callback — отправляет inline action на (callback.contract, callback.action, callback.data).
| 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.
| void expense::declexp | ( | name | coopname, |
| checksum256 | proposal_hash, | ||
| std::string | reason | ||
| ) |
Отклонить СЗ. Callback решения совета (отрицательный консенсус голосов «против» либо просрочка повестки) — вызывается только контрактом soviet. Возможно только до первой оплаты (CREATED / AUTHORIZED): после payexp средства уже ушли через ledger2, и СЗ завершается обычным путём reportexp / returnexp → closeexp.
| 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.
| 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.
| 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.
| 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).