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

Класс marketplace предоставляет функционал кооперативного маркетплейса, позволяя пользователям создавать, обновлять, принимать и отменять заявки на обмен товаров и услуг. Этот контракт служит центральной точкой для всех операций обмена в рамках кооперативной экосистемы. Подробнее...

#include <marketplace.hpp>

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

Классы

struct  balances
 
struct  counts
 

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

 marketplace (eosio::name receiver, eosio::name code, eosio::datastream< const char * > ds)
 
void apply (uint64_t receiver, uint64_t code, uint64_t action)
 
void migrate ()
 
void orderoffer (eosio::name coopname, eosio::name receiver_braname, eosio::name username, checksum256 hash, uint64_t units, eosio::asset unit_cost, uint32_t product_lifecycle_secs, uint32_t warranty_period_secs, eosio::asset membership_fee_amount, eosio::asset cancellation_fee_amount, document2 product_return_statement, document2 convert_in, std::string meta)
 Создать заявку orderoffer - заказчик создает заявку на поставку товара от поставщика. Подробнее...
 
void accept (eosio::name coopname, eosio::name supplier_braname, eosio::name username, checksum256 request_hash, document2 convert_out, document2 return_document)
 Подтверждение готовности выполнить заявку. Подробнее...
 
void authcontrib (eosio::name coopname, checksum256 request_hash, document2 authorization)
 Авторизация заявления на имущественный паевой взнос советом кооператива. Подробнее...
 
void authreturn (eosio::name coopname, checksum256 request_hash, document2 authorization)
 Авторизация заявления на возврат имущества советом кооператива. Подробнее...
 
void declineacc (eosio::name coopname, checksum256 hash, std::string reason)
 Отклонение принятия заявки советом (declineacc). Подробнее...
 
void supply (eosio::name coopname, eosio::name username, checksum256 request_hash, document2 act)
 Поставка имущества в кооператив. Подробнее...
 
void supplcnf (eosio::name coopname, eosio::name username, checksum256 request_hash, document2 act)
 Подтверждение поставки председателем КУ. Подробнее...
 
void createship (eosio::name coopname, checksum256 hash, eosio::name driver_username, eosio::name source_braname, eosio::name destination_braname, std::vector< checksum256 > request_hashes, document2 transport_act_sender)
 Создание новой перевозки с массивом заявок. Подробнее...
 
void signbydriver (eosio::name coopname, checksum256 hash, document2 transport_act_driver)
 Подпись акта приёма-передачи водителем. Подробнее...
 
void arrived (eosio::name coopname, checksum256 hash, document2 transport_act_delivery)
 Перевозка прибыла в место назначения. Подробнее...
 
void receiveshipm (eosio::name coopname, checksum256 hash, document2 warehouse_receipt_act)
 Приём имущества на склад по накладной. Подробнее...
 
void retransport (eosio::name coopname, checksum256 completed_hash, eosio::name new_driver_username, eosio::name source_braname, eosio::name new_destination_braname, std::vector< checksum256 > request_hashes, document2 transport_act_sender)
 Промежуточная передача товаров между складами. Подробнее...
 
void delivered (eosio::name coopname, eosio::name username, checksum256 request_hash)
 Перевод заявки в статус готово к выдаче. Подробнее...
 
void receive (eosio::name coopname, eosio::name username, checksum256 request_hash, document2 document)
 Получение товара заказчиком. Подробнее...
 
void receivecnf (eosio::name coopname, eosio::name username, checksum256 request_hash, document2 document)
 Подтверждение получения заказчиком. Подробнее...
 
void complete (eosio::name coopname, eosio::name username, checksum256 request_hash)
 Подписание акта о приёме-передаче имущества. Подробнее...
 
void decline (eosio::name coopname, eosio::name username, checksum256 request_hash, std::string meta)
 Отказ от предложения. Подробнее...
 
void cancel (eosio::name coopname, eosio::name username, checksum256 request_hash)
 Отмена заявки и возврат токенов. Подробнее...
 
void dispute (eosio::name coopname, eosio::name username, checksum256 request_hash, document2 document)
 Открытие гарантийного спора по заявке. Подробнее...
 
void wauthorize (eosio::name coopname, checksum256 request_hash, uint64_t wreturn_decision_id, document2 wreturn_authorization, uint64_t wsupply_decision_id, document2 wsupply_authorization)
 Авторизация гарантийного возврата советом Подробнее...
 
void wreturn (eosio::name coopname, eosio::name username, checksum256 request_hash, document2 document)
 Возврат товара от заказчика в кооператив Подробнее...
 
void woffer (eosio::name coopname, eosio::name username, checksum256 request_hash, document2 document)
 Предложение товара поставщику в рамках гарантийного возврата Подробнее...
 
void waccept (eosio::name coopname, eosio::name username, checksum256 request_hash, bool accept, document2 document)
 Принятие или отказ поставщика от товара в рамках гарантийного возврата Подробнее...
 

Открытые статические члены

static void cancel_request (eosio::name coopname, eosio::name username, checksum256 request_hash)
 
static void decline_request (eosio::name coopname, const request &change)
 Статический метод для отклонения заявки (используется советом) Подробнее...
 

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

Класс marketplace предоставляет функционал кооперативного маркетплейса, позволяя пользователям создавать, обновлять, принимать и отменять заявки на обмен товаров и услуг. Этот контракт служит центральной точкой для всех операций обмена в рамках кооперативной экосистемы.

Основные функции класса:

  • Создание и управление заявками типа orderoffer (заказчик → поставщик).
  • Операции обновления, принятия, отказа и завершения обменных операций.
  • Модерация и управление публикацией заявок на обмен.
  • Административные функции, такие как создание идентификаторов и авторизация операций.

Процесс поставки orderoffer:

  1. orderoffer - заказчик создает заявку с документами на возврат и конвертацию, средства блокируются
  2. accept - поставщик принимает заявку и предоставляет документы на взнос и конвертацию
  3. authcontrib/authreturn - совет авторизует оба заявления раздельно
  4. supplysupplcnf - поставка товара и подтверждение председателем КУ
  5. deliver1deliver2deliver3deliver4 - этапы транспортировки
  6. receivereceivecnf - получение товара заказчиком
  7. complete - завершение поставки после гарантийного периода

Документооборот:

Все документы сохраняются в векторе std::vector<document2> documents в заявке. Каждый этап процесса добавляет необходимые документы в этот вектор.

Заметки
Контракт маркетплейса является центральной точкой экономической активности на платформе.
Система упрощена для работы с одной заявкой вместо двух встречных.

Конструктор(ы)

◆ marketplace()

marketplace::marketplace ( eosio::name  receiver,
eosio::name  code,
eosio::datastream< const char * >  ds 
)
inline

Методы

◆ accept()

void marketplace::accept ( eosio::name  coopname,
eosio::name  supplier_braname,
eosio::name  username,
checksum256  request_hash,
document2  convert_out,
document2  product_contribution_statement 
)

Подтверждение готовности выполнить заявку.

Принятие заявки поставщиком.

Данный метод позволяет пользователю, который получил предложение по своей заявке, подтвердить свою готовность его принять и выполнить. При этом формируется пакет документов, который отправляется в совет на утверждение.

Аргументы
usernameИмя пользователя, подтверждающего готовность выполнить предложение.
exchange_idID предложения, которое следует подтвердить.
Заметки
Авторизация требуется от аккаунта: username

Поставщик принимает заявку orderoffer на поставку имущества и предоставляет необходимые документы.

Аргументы
coopnameИмя кооператива
supplier_branameИмя кооперативного участка поставщика
usernameИмя поставщика
request_hashХэш заявки
convert_outЗаявление на конвертацию
product_contribution_statementЗаявление на имущественный паевой взнос
Заметки
Авторизация требуется от аккаунта: coopname

◆ apply()

void marketplace::apply ( uint64_t  receiver,
uint64_t  code,
uint64_t  action 
)

◆ arrived()

void marketplace::arrived ( eosio::name  coopname,
checksum256  hash,
document2  transport_act_delivery 
)

Перевозка прибыла в место назначения.

Перевозка переходит в статус arrived и ожидает подписи получателя.

Аргументы
coopnameИмя кооператива
hashИдентификатор перевозки
transport_act_deliveryАкт доставки подписанный водителем
Заметки
Авторизация требуется от аккаунта: coopname

◆ authcontrib()

void marketplace::authcontrib ( eosio::name  coopname,
checksum256  request_hash,
document2  authorization 
)

Авторизация заявления на имущественный паевой взнос советом кооператива.

Совет кооператива авторизует заявление на имущественный паевой взнос.

Аргументы
coopnameИмя кооператива
request_hashХэш заявки
authorizationДокумент авторизации от совета
Заметки
Авторизация требуется от аккаунта: _soviet

◆ authreturn()

void marketplace::authreturn ( eosio::name  coopname,
checksum256  request_hash,
document2  authorization 
)

Авторизация заявления на возврат имущества советом кооператива.

Совет кооператива авторизует заявление на возврат имущества.

Аргументы
coopnameИмя кооператива
request_hashХэш заявки
authorizationДокумент авторизации от совета
Заметки
Авторизация требуется от аккаунта: _soviet

◆ cancel()

void marketplace::cancel ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash 
)

Отмена заявки и возврат токенов.

Отмена заявки пользователем.

Позволяет пользователю отменить родительскую или дочернюю заявку, а также обеспечивает возврат токенов владельцу (если применимо). При отмене проверяется наличие заявки и её текущий статус.

Аргументы
usernameИмя пользователя, инициировавшего отмену.
exchange_idИдентификатор заявки для отмены.
Заметки
Авторизация требуется от аккаунта: username

Пользователь может отменить свою заявку с учетом комиссии за отмену.

Аргументы
coopnameИмя кооператива
usernameИмя пользователя
request_hashХэш заявки
Заметки
Авторизация требуется от аккаунта: coopname

◆ cancel_request()

static void marketplace::cancel_request ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash 
)
static

◆ complete()

void marketplace::complete ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash 
)

Подписание акта о приёме-передаче имущества.

Завершение поставки.

После успешного получения товара, получатель подписывает акт о приёме-передаче, что свидетельствует о юридическом завершении сделки. Этот акт делает пакет документов по данной сделке полным. После проведения ряда проверок, обновляются статусы и количество объектов в основной заявке и предложении. Если все объекты основной заявки обработаны, заявка удаляется из публикации. В зависимости от типа предложения, может осуществляться перевод токенов.

Аргументы
usernameИмя пользователя-получателя товара.
exchange_idID предложения, под которым следует подписать акт.
Заметки
Авторизация требуется от аккаунта: username

После истечения гарантийной задержки происходит завершение поставки.

Аргументы
coopnameИмя кооператива
usernameИмя пользователя
request_hashХэш заявки
Заметки
Авторизация требуется от аккаунта: coopname

◆ createship()

void marketplace::createship ( eosio::name  coopname,
checksum256  hash,
eosio::name  driver_username,
eosio::name  source_braname,
eosio::name  destination_braname,
std::vector< checksum256 >  request_hashes,
document2  transport_act_sender 
)

Создание новой перевозки с массивом заявок.

Создает новую перевозку от одного КУ к другому с указанием водителя и массива заявок. Представитель КУ отправления подписывает первый акт приёма-передачи. Заявки остаются на складе до получения подписи от водителя.

Аргументы
coopnameИмя кооператива
hashВнешний идентификатор перевозки
driver_usernameИмя водителя-пайщика
source_branameКУ отправителя
destination_branameКУ назначения
request_hashesМассив хэшей заявок для перевозки
transport_act_senderАкт приёма-передачи от представителя КУ отправления
Заметки
Авторизация требуется от аккаунта: coopname

◆ decline()

void marketplace::decline ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
std::string  meta 
)

Отказ от предложения.

Отклонение заявки.

Этот метод позволяет пользователю отклонить предложение, представленное к его заявке. Выполняются следующие проверки:

  • Существование предложения с указанным ID.
  • Существование основной заявки.
  • Предложение находится в статусе "ожидание".

Если отклонено предложение к заявке типа "order", осуществляется возврат токенов пользователю, которому были заблокированы токены при создании предложения.

Аргументы
usernameИмя пользователя, отклоняющего предложение.
exchange_idID предложения, которое следует отклонить.
metaДополнительные метаданные, связанные с отказом.
Заметки
Авторизация требуется от аккаунта: username

Отклонение заявки с указанием причины.

Аргументы
coopnameИмя кооператива
usernameИмя пользователя
request_hashХэш заявки
metaПричина отклонения
Заметки
Авторизация требуется от аккаунта: coopname

◆ decline_request()

void marketplace::decline_request ( eosio::name  coopname,
const request &  change 
)
static

Статический метод для отклонения заявки (используется советом)

◆ declineacc()

void marketplace::declineacc ( eosio::name  coopname,
checksum256  request_hash,
std::string  reason 
)

Отклонение принятия заявки советом (declineacc).

Данный метод вызывается советом когда заявление на конвертацию, возврат или взнос отклоняется. После рефакторинга работаем только с одной заявкой orderoffer.

Аргументы
coopnameИмя кооператива
request_hashХэш заявки, которая должна быть отменена
reasonПричина отклонения
Заметки
Авторизация требуется от аккаунта: _soviet

◆ delivered()

void marketplace::delivered ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash 
)

Перевод заявки в статус готово к выдаче.

Председатель КУ переводит заявку в статус delivered независимо от транспортировки. Используется когда транспортировка между КУ не нужна или имущество уже находится на складе. Просто перевод статуса без дополнительных документов.

Аргументы
coopnameИмя кооператива
usernameИмя пользователя (может быть поставщиком или заказчиком)
request_hashХэш заявки
Заметки
Авторизация требуется от аккаунта: coopname

◆ dispute()

void marketplace::dispute ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
document2  document 
)

Открытие гарантийного спора по заявке.

Заказчик может открыть спор после получения товара, если есть проблемы с качеством или соответствием. Создается претензия, которая сохраняется в документах заявки.

Аргументы
coopnameИмя кооператива
usernameИмя заказчика, открывающего спор
request_hashХэш заявки, по которой открывается спор
documentДокумент с описанием претензии
Заметки
Авторизация требуется от аккаунта: coopname

◆ migrate()

void marketplace::migrate ( )

◆ orderoffer()

void marketplace::orderoffer ( eosio::name  coopname,
eosio::name  receiver_braname,
eosio::name  username,
checksum256  hash,
uint64_t  units,
eosio::asset  unit_cost,
uint32_t  product_lifecycle_secs,
uint32_t  warranty_period_secs,
eosio::asset  membership_fee_amount,
eosio::asset  cancellation_fee_amount,
document2  product_return_statement,
document2  convert_in,
std::string  meta 
)

Создать заявку orderoffer - заказчик создает заявку на поставку товара от поставщика.

Данный метод позволяет заказчику создать заявку на поставку товара от поставщика. Заявка содержит всю информацию о товаре, стоимости, документах и сразу блокирует средства заказчика.

Аргументы
coopnameИмя кооператива
receiver_branameИмя кооперативного участка заказчика для получения товара
usernameИмя заказчика
hashХэш заявки (уникальный идентификатор)
unitsКоличество единиц товара
unit_costЦена за единицу товара
product_lifecycle_secsВремя жизни продукта
warranty_period_secsГарантийный срок в секундах
membership_fee_amountСумма членского взноса
cancellation_fee_amountСумма комиссии за отмену заявки
product_return_statementЗаявление на возврат паевого взноса имуществом
convert_inЗаявление на конвертацию из кошелька в маркетплейс
metaМетаданные о заявке
Заметки
Авторизация требуется от аккаунта: coopname

◆ receive()

void marketplace::receive ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
document2  document 
)

Получение товара заказчиком.

Заказчик приходит на КУ для получения имущества. Председатель КУ подписывает акт и передаёт имущество заказчику.

Аргументы
coopnameИмя кооператива
usernameИмя заказчика
request_hashХэш заявки
documentАкт получения имущества
Заметки
Авторизация требуется от аккаунта: coopname

◆ receivecnf()

void marketplace::receivecnf ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
document2  document 
)

Подтверждение получения заказчиком.

Заказчик подтверждает факт получения имущества второй подписью акта приёма-передачи.

Аргументы
coopnameИмя кооператива
usernameИмя заказчика
request_hashХэш заявки
documentАкт подтверждения получения
Заметки
Авторизация требуется от аккаунта: coopname

◆ receiveshipm()

void marketplace::receiveshipm ( eosio::name  coopname,
checksum256  hash,
document2  warehouse_receipt_act 
)

Приём имущества на склад по накладной.

Представитель КУ получения принимает имущество на склад по накладной. Все заявки из перевозки переходят в статус delivered и ставятся на склад КУ получения. Объект перевозки удаляется.

Аргументы
coopnameИмя кооператива
hashИдентификатор перевозки
warehouse_receipt_actАкт приёма на склад подписанный получателем
Заметки
Авторизация требуется от аккаунта: coopname

◆ retransport()

void marketplace::retransport ( eosio::name  coopname,
checksum256  completed_hash,
eosio::name  new_driver_username,
eosio::name  source_braname,
eosio::name  new_destination_braname,
std::vector< checksum256 >  request_hashes,
document2  transport_act_sender 
)

Промежуточная передача товаров между складами.

Создает новую перевозку для доставленных заявок, позволяя передать все товары из текущего склада в другое место назначения с новым водителем.

Аргументы
coopnameИмя кооператива
completed_hashВнешний идентификатор новой перевозки
new_driver_usernameИмя нового водителя-пайщика
source_branameКУ с которого забираем товары
new_destination_branameНовый КУ назначения
request_hashesМассив хэшей заявок для переотправки
transport_act_senderАкт передачи от текущего склада
Заметки
Авторизация требуется от аккаунта: coopname

◆ signbydriver()

void marketplace::signbydriver ( eosio::name  coopname,
checksum256  hash,
document2  transport_act_driver 
)

Подпись акта приёма-передачи водителем.

Водитель подписывает акт приёма имущества на транспортировку. Все заявки снимаются со склада отправления. Перевозка переходит в статус transit.

Аргументы
coopnameИмя кооператива
hashИдентификатор перевозки
transport_act_driverАкт приёма-передачи подписанный водителем
Заметки
Авторизация требуется от аккаунта: coopname

◆ supplcnf()

void marketplace::supplcnf ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
document2  act 
)

Подтверждение поставки председателем КУ.

Председатель кооперативного участка или доверенное им лицо подтверждает факт поставки имущества.

Аргументы
coopnameИмя кооператива
usernameИмя представителя кооператива
request_hashХэш заявки
actАкт подтверждения поставки
Заметки
Авторизация требуется от аккаунта: coopname

◆ supply()

void marketplace::supply ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
document2  act 
)

Поставка имущества в кооператив.

Поставщик поставляет имущество на указанный кооперативный участок и предоставляет подписанный акт приёма-передачи.

Аргументы
coopnameИмя кооператива
usernameИмя поставщика
request_hashХэш заявки
actАкт поставки имущества
Заметки
Авторизация требуется от аккаунта: coopname

◆ waccept()

void marketplace::waccept ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
bool  accept,
document2  document 
)

Принятие или отказ поставщика от товара в рамках гарантийного возврата

Поставщик может принять товар (accept=true) или отказаться от него (accept=false). При принятии товар передается поставщику и диспут завершается. При отказе товар остается у кооператива и диспут завершается.

Аргументы
coopnameИмя кооператива
usernameИмя поставщика
request_hashХэш заявки с диспутом
acceptПринимает ли поставщик товар (true/false)
documentДокумент с решением поставщика
Заметки
Авторизация требуется от аккаунта: coopname

◆ wauthorize()

void marketplace::wauthorize ( eosio::name  coopname,
checksum256  request_hash,
uint64_t  wreturn_decision_id,
document2  wreturn_authorization,
uint64_t  wsupply_decision_id,
document2  wsupply_authorization 
)

Авторизация гарантийного возврата советом

Совет авторизует принятие товара от заказчика и его последующую выдачу поставщику

Аргументы
coopnameИмя кооператива
request_hashХэш заявки с диспутом
wreturn_decision_idИдентификатор решения по принятию товара
wreturn_authorizationДокумент авторизации принятия товара
wsupply_decision_idИдентификатор решения по выдаче товара поставщику
wsupply_authorizationДокумент авторизации выдачи товара
Заметки
Авторизация требуется от аккаунта: _soviet

◆ woffer()

void marketplace::woffer ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
document2  document 
)

Предложение товара поставщику в рамках гарантийного возврата

Кооператив предлагает поставщику забрать товар, возвращенный заказчиком. Создается предложение с актом передачи.

Аргументы
coopnameИмя кооператива
usernameИмя председателя, предлагающего товар
request_hashХэш заявки с диспутом
documentАкт передачи товара поставщику
Заметки
Авторизация требуется от аккаунта: coopname

◆ wreturn()

void marketplace::wreturn ( eosio::name  coopname,
eosio::name  username,
checksum256  request_hash,
document2  document 
)

Возврат товара от заказчика в кооператив

Заказчик возвращает товар в кооператив в рамках гарантийного возврата. Председатель принимает товар и подписывает акт приёма.

Аргументы
coopnameИмя кооператива
usernameИмя председателя, принимающего товар
request_hashХэш заявки с диспутом
documentАкт приёма товара от заказчика
Заметки
Авторизация требуется от аккаунта: coopname

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