|
| uint64_t | id |
| | внутренний ID Подробнее...
|
| |
| checksum256 | hash |
| | process_hash для p.mkt.supply Подробнее...
|
| |
| eosio::name | coopname |
| | scope-валидация Подробнее...
|
| |
| eosio::name | orderer |
| | пайщик-заказчик Подробнее...
|
| |
| eosio::name | offerer |
| | пайщик-поставщик из Offer'а (для acceptorder/declineorder/signsupp guard'а) Подробнее...
|
| |
| checksum256 | offer_hash |
| | ссылка на Offer (off-chain в backend) Подробнее...
|
| |
| eosio::name | delivery_braname |
| | КУ выдачи (выбран пайщиком на createorder); проверка signiss1/signiss2/p.mkt.return через Branch::is_user_authorized. Подробнее...
|
| |
| eosio::name | accept_braname |
| | КУ приёмки от поставщика (заполняется на signsupp); проверка signchair через Branch::is_user_authorized. Подробнее...
|
| |
| eosio::name | current_warehouse_braname |
| | текущая точка хранения; signchair: = accept_braname; signiss1: = delivery_braname (фиксация готовности к выдаче) Подробнее...
|
| |
| eosio::asset | quantity = asset(0, _unit_piece) |
| | заказанное количество (asset с символом единицы KG/LTR/PCS, Эпик 17) Подробнее...
|
| |
| eosio::asset | actual_quantity = asset(0, _unit_piece) |
| | фактически выданное (signiss2); до signiss2 == quantity Подробнее...
|
| |
| eosio::asset | package_size = asset(0, _unit_piece) |
| | Эпик 18: содержимое упаковки в базовой единице. 0 = отпуск по мере (unit_price за базовую единицу); >0 = упаковкой (unit_price за упаковку, quantity/actual_quantity кратны package_size) Подробнее...
|
| |
| eosio::asset | unit_price = asset(0, _root_govern_symbol) |
| | цена за единицу отпуска: за базовую единицу (кг/литр/штуку) при package_size==0, либо за упаковку при package_size>0 Подробнее...
|
| |
| eosio::asset | total_cost = asset(0, _root_govern_symbol) |
| | quantity * unit_price / 10^precision (заблокированная сумма) Подробнее...
|
| |
| eosio::asset | fact_cost = asset(0, _root_govern_symbol) |
| | actual_quantity * unit_price / 10^precision (после signiss2) Подробнее...
|
| |
| uint32_t | warranty_period_secs = 0 |
| | из Offer'а — для submretrn гард'а Подробнее...
|
| |
| time_point_sec | warranty_until = time_point_sec(0) |
| | now() + warranty_period_secs (заполняется в signiss2) Подробнее...
|
| |
| eosio::name | status = OrderStatus::ACTIVE |
| | canonical статус Подробнее...
|
| |
| checksum256 | batch_hash |
| | opaque ссылка на consolidated request (off-chain) Подробнее...
|
| |
| document2 | acceptance_act_signsupp |
| | АПП приёмки — первая подпись поставщика (signsupp) Подробнее...
|
| |
| document2 | acceptance_act_signchair |
| | АПП приёмки — финальная подпись председателя приёмного КУ (signchair) Подробнее...
|
| |
| document2 | issue_act_signiss1 |
| | АПП выдачи — первая подпись председателя КУ выдачи (signiss1) Подробнее...
|
| |
| document2 | issue_act_signiss2 |
| | АПП выдачи — финальная подпись заказчика (signiss2) Подробнее...
|
| |
| eosio::name | payout_status = OrderPayoutStatus::NONE |
| | Locked Decision L12 — состояние выплаты поставщику через gateway (см. namespace OrderPayoutStatus) Подробнее...
|
| |
| std::string | payout_decline_reason |
| | Заполняется только при payout_status == DECLINED (текст причины из gateway::outdecline) Подробнее...
|
| |
| uint64_t | return_request_id = 0 |
| | 0 если активного гарантийного возврата нет Подробнее...
|
| |
| eosio::asset | markdown_cost = asset(0, _root_govern_symbol) |
| |
| eosio::asset | membership_fee = asset(0, _root_govern_symbol) |
| |
On-chain Order — анкер процесса p.mkt.supply.
scope = coopname; primary_key = id; уникальность через byhash индекс на order.hash — этот hash используется как process_hash во всех ledger2- операциях процесса (BLOCK/UNBLOCK/PURCH/PAYOUT/CONSUM/CONSUM2/RETURN).
Привязка к кооперативным участкам (КУ) идёт через braname (см. контракт branch, таблица branches). Председатель / trustee / доверенные лица каждого КУ известны контракту branch — авторизация подписей актов выполняется через Branch::is_user_authorized(coopname, braname, signer), а не по сохранённому имени председателя (председатель может делегировать подпись доверенному лицу из coobranch.trusted[], состав которого может меняться независимо от Order'а).
Точки контракта:
delivery_braname — КУ выдачи имущества пайщику; задаётся пайщиком на createorder и неизменна. Источник проверки signiss1/signiss2/p.mkt.return.
accept_braname — КУ приёмки от поставщика; заполняется на signsupp как параметр action'а (поставщик указывает, в какой КУ сдаёт партию). Источник проверки signchair.
current_warehouse_braname — текущая точка хранения имущества по этому Order'у. Заполняется на signchair (= accept_braname, имущество на приёмном складе) и обновляется на signiss1 (= delivery_braname, готово к выдаче — фиксирует факт логистической передачи). Бездокументарно — промежуточные перемещения по заготовочным КУ контрактом не подписываются; точка хранения переходит «скачком» в момент готовности к выдаче.
История внутренних передач между КУ (заготовочный → точка выдачи и т.п.) с подписью ТТН — отложена. Backend может реконструировать движение из blockchain_actions если потребуется.
acceptance_act (АПП приёмки) и issue_act (АПП выдачи) хранятся полным document2 — это дублирование в случае batch-поставки (один физический акт → копия в каждом order'е batch'а), но это допустимо для on-chain (минимум данных + hash) и упрощает аудит.
batch_hash — opaque ссылка на off-chain consolidated request (Locked Decision L10: batch — backend-only сущность). Контракт не валидирует существование batch'а, только хранит ссылку для трассировки и группировки Order'ов в UI. Все per-batch операции на on-chain делаются per-Order (backend проходит циклом по orders батча) — векторов order'ов в action'ах нет.
actual_quantity / fact_cost заполняются на signiss2 (Story 6.2/6.3). До signiss2 равны соответственно quantity / total_cost.
warranty_until — рассчитывается в signiss2 как now() + warranty_period_secs (period приходит с Offer'а через backend; в submretrn валидируется только это поле).