COOPENOMICS
v1
Кооперативная Экономика
|
Класс marketplace
предоставляет функционал кооперативного маркетплейса, позволяя пользователям создавать, обновлять, принимать и отменять заявки на обмен товаров и услуг. Этот контракт служит центральной точкой для всех операций обмена в рамках кооперативной экосистемы.
Подробнее...
#include <marketplace.hpp>
Классы | |
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
предоставляет функционал кооперативного маркетплейса, позволяя пользователям создавать, обновлять, принимать и отменять заявки на обмен товаров и услуг. Этот контракт служит центральной точкой для всех операций обмена в рамках кооперативной экосистемы.
Основные функции класса:
Все документы сохраняются в векторе std::vector<document2> documents
в заявке. Каждый этап процесса добавляет необходимые документы в этот вектор.
|
inline |
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_id | ID предложения, которое следует подтвердить. |
username
Поставщик принимает заявку orderoffer на поставку имущества и предоставляет необходимые документы.
coopname | Имя кооператива |
supplier_braname | Имя кооперативного участка поставщика |
username | Имя поставщика |
request_hash | Хэш заявки |
convert_out | Заявление на конвертацию |
product_contribution_statement | Заявление на имущественный паевой взнос |
coopname
void marketplace::apply | ( | uint64_t | receiver, |
uint64_t | code, | ||
uint64_t | action | ||
) |
void marketplace::arrived | ( | eosio::name | coopname, |
checksum256 | hash, | ||
document2 | transport_act_delivery | ||
) |
Перевозка прибыла в место назначения.
Перевозка переходит в статус arrived и ожидает подписи получателя.
coopname | Имя кооператива |
hash | Идентификатор перевозки |
transport_act_delivery | Акт доставки подписанный водителем |
coopname
void marketplace::authcontrib | ( | eosio::name | coopname, |
checksum256 | request_hash, | ||
document2 | authorization | ||
) |
Авторизация заявления на имущественный паевой взнос советом кооператива.
Совет кооператива авторизует заявление на имущественный паевой взнос.
coopname | Имя кооператива |
request_hash | Хэш заявки |
authorization | Документ авторизации от совета |
_soviet
void marketplace::authreturn | ( | eosio::name | coopname, |
checksum256 | request_hash, | ||
document2 | authorization | ||
) |
Авторизация заявления на возврат имущества советом кооператива.
Совет кооператива авторизует заявление на возврат имущества.
coopname | Имя кооператива |
request_hash | Хэш заявки |
authorization | Документ авторизации от совета |
_soviet
void marketplace::cancel | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash | ||
) |
Отмена заявки и возврат токенов.
Отмена заявки пользователем.
Позволяет пользователю отменить родительскую или дочернюю заявку, а также обеспечивает возврат токенов владельцу (если применимо). При отмене проверяется наличие заявки и её текущий статус.
username | Имя пользователя, инициировавшего отмену. |
exchange_id | Идентификатор заявки для отмены. |
username
Пользователь может отменить свою заявку с учетом комиссии за отмену.
coopname | Имя кооператива |
username | Имя пользователя |
request_hash | Хэш заявки |
coopname
|
static |
void marketplace::complete | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash | ||
) |
Подписание акта о приёме-передаче имущества.
Завершение поставки.
После успешного получения товара, получатель подписывает акт о приёме-передаче, что свидетельствует о юридическом завершении сделки. Этот акт делает пакет документов по данной сделке полным. После проведения ряда проверок, обновляются статусы и количество объектов в основной заявке и предложении. Если все объекты основной заявки обработаны, заявка удаляется из публикации. В зависимости от типа предложения, может осуществляться перевод токенов.
username | Имя пользователя-получателя товара. |
exchange_id | ID предложения, под которым следует подписать акт. |
username
После истечения гарантийной задержки происходит завершение поставки.
coopname | Имя кооператива |
username | Имя пользователя |
request_hash | Хэш заявки |
coopname
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
void marketplace::decline | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash, | ||
std::string | meta | ||
) |
Отказ от предложения.
Отклонение заявки.
Этот метод позволяет пользователю отклонить предложение, представленное к его заявке. Выполняются следующие проверки:
Если отклонено предложение к заявке типа "order", осуществляется возврат токенов пользователю, которому были заблокированы токены при создании предложения.
username | Имя пользователя, отклоняющего предложение. |
exchange_id | ID предложения, которое следует отклонить. |
meta | Дополнительные метаданные, связанные с отказом. |
username
Отклонение заявки с указанием причины.
coopname | Имя кооператива |
username | Имя пользователя |
request_hash | Хэш заявки |
meta | Причина отклонения |
coopname
|
static |
Статический метод для отклонения заявки (используется советом)
void marketplace::declineacc | ( | eosio::name | coopname, |
checksum256 | request_hash, | ||
std::string | reason | ||
) |
Отклонение принятия заявки советом (declineacc).
Данный метод вызывается советом когда заявление на конвертацию, возврат или взнос отклоняется. После рефакторинга работаем только с одной заявкой orderoffer.
coopname | Имя кооператива |
request_hash | Хэш заявки, которая должна быть отменена |
reason | Причина отклонения |
_soviet
void marketplace::delivered | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash | ||
) |
Перевод заявки в статус готово к выдаче.
Председатель КУ переводит заявку в статус delivered независимо от транспортировки. Используется когда транспортировка между КУ не нужна или имущество уже находится на складе. Просто перевод статуса без дополнительных документов.
coopname | Имя кооператива |
username | Имя пользователя (может быть поставщиком или заказчиком) |
request_hash | Хэш заявки |
coopname
void marketplace::dispute | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash, | ||
document2 | document | ||
) |
Открытие гарантийного спора по заявке.
Заказчик может открыть спор после получения товара, если есть проблемы с качеством или соответствием. Создается претензия, которая сохраняется в документах заявки.
coopname | Имя кооператива |
username | Имя заказчика, открывающего спор |
request_hash | Хэш заявки, по которой открывается спор |
document | Документ с описанием претензии |
coopname
void marketplace::migrate | ( | ) |
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
void marketplace::receive | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash, | ||
document2 | document | ||
) |
Получение товара заказчиком.
Заказчик приходит на КУ для получения имущества. Председатель КУ подписывает акт и передаёт имущество заказчику.
coopname | Имя кооператива |
username | Имя заказчика |
request_hash | Хэш заявки |
document | Акт получения имущества |
coopname
void marketplace::receivecnf | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash, | ||
document2 | document | ||
) |
Подтверждение получения заказчиком.
Заказчик подтверждает факт получения имущества второй подписью акта приёма-передачи.
coopname | Имя кооператива |
username | Имя заказчика |
request_hash | Хэш заявки |
document | Акт подтверждения получения |
coopname
void marketplace::receiveshipm | ( | eosio::name | coopname, |
checksum256 | hash, | ||
document2 | warehouse_receipt_act | ||
) |
Приём имущества на склад по накладной.
Представитель КУ получения принимает имущество на склад по накладной. Все заявки из перевозки переходят в статус delivered и ставятся на склад КУ получения. Объект перевозки удаляется.
coopname | Имя кооператива |
hash | Идентификатор перевозки |
warehouse_receipt_act | Акт приёма на склад подписанный получателем |
coopname
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
void marketplace::signbydriver | ( | eosio::name | coopname, |
checksum256 | hash, | ||
document2 | transport_act_driver | ||
) |
Подпись акта приёма-передачи водителем.
Водитель подписывает акт приёма имущества на транспортировку. Все заявки снимаются со склада отправления. Перевозка переходит в статус transit.
coopname | Имя кооператива |
hash | Идентификатор перевозки |
transport_act_driver | Акт приёма-передачи подписанный водителем |
coopname
void marketplace::supplcnf | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash, | ||
document2 | act | ||
) |
Подтверждение поставки председателем КУ.
Председатель кооперативного участка или доверенное им лицо подтверждает факт поставки имущества.
coopname | Имя кооператива |
username | Имя представителя кооператива |
request_hash | Хэш заявки |
act | Акт подтверждения поставки |
coopname
void marketplace::supply | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash, | ||
document2 | act | ||
) |
Поставка имущества в кооператив.
Поставщик поставляет имущество на указанный кооперативный участок и предоставляет подписанный акт приёма-передачи.
coopname | Имя кооператива |
username | Имя поставщика |
request_hash | Хэш заявки |
act | Акт поставки имущества |
coopname
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
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
void marketplace::woffer | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash, | ||
document2 | document | ||
) |
Предложение товара поставщику в рамках гарантийного возврата
Кооператив предлагает поставщику забрать товар, возвращенный заказчиком. Создается предложение с актом передачи.
coopname | Имя кооператива |
username | Имя председателя, предлагающего товар |
request_hash | Хэш заявки с диспутом |
document | Акт передачи товара поставщику |
coopname
void marketplace::wreturn | ( | eosio::name | coopname, |
eosio::name | username, | ||
checksum256 | request_hash, | ||
document2 | document | ||
) |
Возврат товара от заказчика в кооператив
Заказчик возвращает товар в кооператив в рамках гарантийного возврата. Председатель принимает товар и подписывает акт приёма.
coopname | Имя кооператива |
username | Имя председателя, принимающего товар |
request_hash | Хэш заявки с диспутом |
document | Акт приёма товара от заказчика |
coopname