[C28-33][@ant] fix(expense): программные расходы зеркалятся в БД и видны в списке
Парсер не был подписан на контракт `expense` (нет в subscribedContracts) → дельты `expense::proposals` не эмитились → postgres-зеркало `expense_proposals` оставалось пустым → список «Программных расходов пока нет», хотя на цепи СЗ и резерв создавались. Добавил `expense` в subscribedContracts парсера. Плюс: `coopname` добавлен явным полем в таблицу `proposals` контракта (struct + EOSLIB_SERIALIZE + проставление в createexp) и в cooptypes IProposal. Таблица scoped по coopname, но зеркало требует coopname в строке — дублируем полем по канону (как capital/soviet), а не выводим из scope дельты. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -99,6 +99,7 @@ void expense::createexp(name coopname, name username,
|
||||
|
||||
tbl.emplace(get_self(), [&](auto& row) {
|
||||
row.id = tbl.available_primary_key();
|
||||
row.coopname = coopname;
|
||||
row.proposal_hash = proposal_hash;
|
||||
row.username = username;
|
||||
row.source_wallet = source_wallet;
|
||||
|
||||
@@ -99,6 +99,7 @@ namespace ExpenseDomain {
|
||||
*/
|
||||
struct [[eosio::table, eosio::contract("expense")]] proposal {
|
||||
uint64_t id;
|
||||
eosio::name coopname; ///< кооператив (= scope таблицы; дублируем полем по канону)
|
||||
eosio::checksum256 proposal_hash;
|
||||
eosio::name username; ///< создатель
|
||||
eosio::name source_wallet; ///< семантически — из какого ЦПП/фонда (w.cap.blago, w.sov.expns, …)
|
||||
@@ -118,7 +119,7 @@ namespace ExpenseDomain {
|
||||
uint64_t by_status() const { return static_cast<uint64_t>(status); }
|
||||
|
||||
EOSLIB_SERIALIZE(proposal,
|
||||
(id)(proposal_hash)(username)(source_wallet)(status)
|
||||
(id)(coopname)(proposal_hash)(username)(source_wallet)(status)
|
||||
(items)(total_planned)(total_actual)(callback)(statement_doc)(decision_doc)
|
||||
(created_at)(updated_at))
|
||||
};
|
||||
|
||||
@@ -160,6 +160,7 @@ export interface IOverspendexp {
|
||||
*/
|
||||
export interface IProposal {
|
||||
id: IUint64
|
||||
coopname: IName
|
||||
proposal_hash: IChecksum256
|
||||
username: IName
|
||||
source_wallet: IName
|
||||
|
||||
@@ -33,6 +33,7 @@ export const subscribedContracts: string[] = [
|
||||
'ledger',
|
||||
'ledger2',
|
||||
'marketplace',
|
||||
'expense',
|
||||
]
|
||||
|
||||
// Автоматически генерируем действия для всех контрактов из списка
|
||||
|
||||
Reference in New Issue
Block a user