|
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