| 
    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