======Руководство пользователя платформы Webstore====== =====Введение===== Документ содержит описание основных функциональных характеристик программного продукта «Платформа Webstore» (далее – Платформа, Webstore). ===== Функциональные характеристики ===== {{section>ru:webstoremini:content:introduction&noheader}} ===== Основные свойства ===== Платформа Webstore помогает реселлерам ПО осуществлять торговую деятельность в современных условиях. Больше не нужны склады и сложные цепочки поставок. Не нужно тратить время на ожидание - от заказа до получения проходит всего несколько секунд. Простое и понятное подключение через API позволяет реселлеру в кратчайшие сроки начать работу с платформой. Параллельно боевому контуру развернута тестовая среда, где партнер может проверить свою интеграцию в условиях аналогичных боевым. Вступая в век повсеместной цифровизации, дистрибутор ПО не сможет обойтись без такого инструмента, как платформа Webstore. Она не просто упрощает бизнес, она является необходимым инструментом, без которого работа в новой реальности просто невозможна. ===== Группы пользователей ===== * Администраторы - лица, выполняющие контроль и управление пользователями, продуктами, заказами и настройками платформы Webstore. * Реселлеры - лица, приобретающие электронные ключи посредством вызова API методов. Без доступа к web-интерфейсу платформы Webstore. ===== Основные возможности ===== {{section>ru:webstoremini:content:functions&noheader}} =====Авторизация===== Платформа Webstore представляет собой закрытый функционал, доступ к которому осуществляется после авторизации. Вместе с дистрибутивом для установки платформы Webstore вы получаете 2 учетные записи: * Администратора - логин **admin** пароль **test**. * Реселлера - логин **customer** пароль **test**. **ВНИМАНИЕ!** Рекомендуется поменять пароли предоставленных учетных записей после начала использования ПО! Новые учетные записи для пользователей можно создать из под учетной записи с ролью Администратор. После завершения установки и запуска программного продукта в форме авторизации укажите логин и пароль, нажмите {{files:images:enter.png?220}}: {{files:images:33.png?900}} После успешной авторизации откроется страница платформы, на которой слева расположен блок с основными разделами сервиса, в центре - первый функциональный раздел - Продукты. Для выхода из учетной записи нажмите кнопку "Выход" в верхнем правом углу экрана: {{files:images:34.png?800}} Пользовательский интерфейс платформы Webstore обладает следующими возможностями: =====Продукты===== Позволяет управлять продуктами и информацией о них, необходимой для осуществления заказа. ====Поиск и просмотр==== Каждый продукт списка имеет название, партномер, указана страна реализации, вендор, цена реселлера в валюте реселлера и свой склад ключей. Все продукты в данном разделе для удобства отсортированы по названию в алфавитном порядке. Для быстрого поиска нужного продукта воспользуйтесь фильтром по названию, партномеру, стране и вендору. Чтобы сбросить содержимое фильтра нажмите {{files:images:сброс.png?30}}. Проставьте галочку в чекбоксе, если нужно отображать заблокированные продукты и нажмите {{files:images:применить.png?100}}: {{files:images:сппрод2.png?900}} ====Добавление и редактирование==== Для добавления нового продукта нажмите {{files:images:добпрод.png?120}} и заполните поля в модальном окне Добавление продукта. Для редактирования продукта - нажмите {{files:images:pen.png?30}} напротив названия продукта и так же в форме редактирования внесите необходимые изменения: {{files:images:1.png?900}} В модальных окнах Добавление продукта и Редактирование продукта поля, отмеченные звездочкой, являются обязательными для заполнения. Укажите Название продукта, Вендора, Партномер, Поставщика, выберите страну. Валюта реселлера устанавливается автоматически при выборе страны. Установите цену реселлера и цену РРЦ. Установите минимальное и максимальное количество единиц продукта, которое можно заказать единовременно. Отметьте галочкой в чекбоксе способ продажи ключей - через генератор или Со склада. Для сохранения внесенных изменений нажмите {{files:images:5.png?100}}, для отмены редактирования – {{files:images:отм.png?110}}: {{files:images:39.png?800}} ====Закрыть / Открыть продукт для заказов==== Если необходимо заблокировать продукт для заказа, или наоборот, разблокировать ранее закрытый, нажмите переключатель. {{files:images:green.png?40}} - продукт доступен для заказа, {{files:images:grey.png?40}} - продукт заказать нельзя: {{files:images:block.png?800}} Для каждого продукта реализован функционал склада ключей, который представлен в виде трех блоков: Добавить ключи, Отгруженные ключи и Неотгруженные ключи. Нажмите кнопку "Склад" для перехода: {{files:images:skl1.png?800}} ====Добавить ключи==== Для добавления ключей продукта на склад запишите их в поле ввода (каждый новый ключ с новой строки). Запишите через точку с запятой ссылки на активацию или скачивание продукта, если они предусмотрены. При нажатии на {{files:images:добкл.png?120}} ключи записываются на склад: {{files:images:addkey.png?800}} ====Неотгруженные ключи==== После добавления на склад ключей продукта - эти ключи становятся доступными для просмотра в блоке Неотгруженные ключи. {{files:images:40.png?800}} ====Отгруженные ключи==== Данный блок предоставляет возможность просмотреть в виде списка реализованные по заказам ключи. Для удобства поиска ключа (или заказа, чтобы посмотреть, какой в нем был реализован ключ) используйте фильтр по ключу, номеру строки заказа. По каждому ключу отображается следующая информация: дата добавления, дата продажи, номер строки заказа, ссылка (если предусмотрена). {{files:images:otgrkey.png?800}} =====Страны===== Позволяет добавить новые страны и отредактировать информацию по существующим, в которых ваши партнеры предполагают реализацию продуктов. Каждой стране присвоен код и указан код валюты страны по умолчанию. Для добавления страны нажмите {{files:images:добстр.png?120}}, для редактирования - кнопку {{files:images:pen.png?30}} и заполните поля в модальном окне. Все поля являются обязательными для заполнения. {{files:images:7.png?800}} Для сохранения внесенных изменений нажмите {{files:images:5.png?100}}, для отмены – {{files:images:отм.png?110}}: {{files:images:6.png?800}} =====Вендоры===== Позволяет добавить новых вендоров, а так же изменить информацию по уже существующим. Каждый вендор имеет свое название и код. Для добавления нового вендора нажмите {{files:images:добвенд.png?120}}, для редактирования нажмите {{files:images:pen.png?30}} и заполните поля в модальном окне. Все поля являются обязательными для заполнения. {{files:images:vend.png?800}} Для сохранения внесенных изменений нажмите {{files:images:5.png?100}}, для отмены – {{files:images:отм.png?110}}: {{files:images:8.png?800}} =====Заказчики===== В данном разделе предоставлена возможность управления заказчиками, а именно: добавление новых, редактирование информации по уже существующим, блокировка. ====Добавление и редактирование==== Для добавления нового заказчика нажмите {{files:images:добзак.png?120}} и заполните поля в модальном окне. Все поля являются обязательными для заполнения - Название заказчика, Страна (можно выбрать из выпадающего списка), код заказчика. Чтобы отредактировать информацию существующего заказчика воспользуйтесь фильтром для быстрого поиска, нажмите {{files:images:pen.png?30}} напротив названия заказчика и в форме редактирования внесите необходимые изменения. Проставьте галочку в чекбоксе, если нужно отображать заблокированных заказчиков. При нажатии на {{files:images:сброс.png?30}} содержимое фильтра сбрасывается: {{files:images:10.png?800}} Для сохранения внесенных изменений нажмите {{files:images:5.png?100}}, для отмены – {{files:images:отм.png?110}}: {{files:images:11.png?800}} ====Заблокировать / разблокировать заказчика==== Для блокировки заказчика переместите переключатель: {{files:images:green.png?40}} - заказчик активен, {{files:images:grey.png?40}} - заказчик заблокирован и не сможет совершать заказы. {{files:images:12.png?800}} =====Пользователи===== Предоставляет возможность управления логинами и ролями пользователей платформы Webstore, а именно: добавление новых, редактирование информации по уже существующим, блокировка. ====Добавление и редактирование==== Для добавления нового логина нажмите {{files:images:13.png?130}} и заполните поля в модальном окне. Все поля являются обязательными для заполнения - Логин, Email, Роль (выбрать из выпадающего списка), Заказчик (выбрать из выпадающего списка заказчика, которому принадлежит логин). Для редактирования - найдите нужный логин с помощью фильтра, нажмите {{files:images:pen.png?30}} напротив логина и в форме редактирования внесите необходимые изменения. Проставьте галочку в чекбоксе, если нужно отображать заблокированные логины: {{files:images:польз.png?800}} Для сохранения внесенных изменений нажмите {{files:images:5.png?100}}, для отмены – {{files:images:отм.png?110}}: {{files:images:14.png?800}} **ВНИМАНИЕ!** Пользователи, имеющие логины без роли Customer не имеют доступа к внешнему API! ====Изменение пароля==== Для изменения пароля нажмите {{files:images:замок.png?40}}, введите и подтвердите новый пароль: {{files:images:пароль.png?500}} ====Заблокировать / разблокировать пользователя==== Для блокировки логина пользователя переместите переключатель: {{files:images:green.png?40}} - логин пользователя активен, {{files:images:grey.png?40}} - логин пользователя заблокирован и не сможет авторизоваться в системе. {{files:images:15.png?800}} =====Поставщики===== Предоставляет возможность добавления новых и редактирования информации по уже существующим поставщикам электронных продуктов. Каждый поставщик относится к определенному вендору и имеет свой тип генератора электронных ключей. Для добавления нового поставщика нажмите {{files:images:добпост.png?140}} и заполните поля в модальном окне. Все поля являются обязательными для заполнения - Название поставщика, Тип генератора (выберите из выпадающего списка), Вендор (выберите из выпадающего списка вендора, которому принадлежит поставщик), Страна (выберите в строке страну, для которой требуется настройка поставщика), JSON для подключения (введите в поле ввода данные json-файла). Для редактирования нажмите {{files:images:pen.png?30}} и в форме редактирования внесите необходимые изменения. {{files:images:16.png?800}} Для сохранения настроек поставщика нажмите {{files:images:доб.png?100}}, для отмены – {{files:images:отм.png?100}}: {{files:images:17.png?1000}} **ВНИМАНИЕ!** Все настройки поставщика и создаваемые заказы являются тестовыми, ключи формирует псевдогенератор! Для создания настоящих заказов необходимо настроить и подключить поставщика в соответствующем разделе. Пример: {{files:images:36.png?700}} =====Заказы===== Предоставляет возможность просматривать информацию по заказам и выгружать ее в CSV-файл. По каждому заказу система выводит информацию: номер строки заказа, название продукта, партномер, вендор, стоимость для реселлера в валюте реселлера и количество ключей в заказе, статус заказа, дата создания, страна, код заказчика и логин. Для выгрузки списка выбранных заказов в CSV-файл нажмите {{files:images:выгр.png?120}}. Чтобы найти нужные заказы воспользуйтесь фильтром - введите/выберите параметры и нажмите {{files:images:применить.png?100}}. Для сброса содержимого фильтра нажмите {{files:images:сброс.png?30}} {{files:images:18.png?800}} Нажмите на строку заказа в списке, чтобы просмотреть ключи и ссылки, реализованные в этом заказе: {{files:images:19.png?500}} ---- =====Основные возможности API Webtore===== Интерфейс API платформы Webstore обладает следующими возможностями: ====Авторизация==== Адрес Swagger UI https://localhost:5000/swagger/index.html {{files:images:20.png?800}} Нажмите {{files:images:21.png?120}} и в модальном окне введите логин и пароль: Администратор - логин admin пароль test. Реселлер - логин customer пароль test. {{files:images:22.png?400}} **ВНИМАНИЕ!** Логины без роли Customer не имеют доступа к внешнему API! =====Методы===== ====GetCustomerInfo==== ===Описание=== Получение информации об аккаунте ===Входные параметры=== Нет ===Возвращаемые значения=== ^Название^Тип^Описание^ |Name|string, nvarchar(255)|Название/Имя аккаунта| |Code|string, nvarchar(50)|Код| |CountryCode|string, nvarchar(2)|Код страны| |Enable|bool|Активен или не активен логин| |UseLogin|string, nvarchar(50)|Используемый логин| ===Пример запроса и ответа метода GetCustomerInfo=== ++++ Запрос | GET https://pipe-web-test01.dmzmont.org:8075/api/GetCustomerInfo ++++ ++++ Ответ | { "name": "ООО Твой дом", "code": "D002355", "countryCode": "RU", "enable": true, "useLogin": "alexdom" } ++++ ====GetProducts==== ===Описание=== Получение списка доступных продуктов ===Входные параметры=== Нет ===Возвращаемые значения=== ^Название^Тип^Описание^ |Products|array of **[[ | ProductInfo ]]**|Объект, содержащий информацию о продукте| **[[ru:webstoremini:api:methods:getproducts | Тип ProductInfo ]]** ^Название^Тип, максимальное количество символов^Описание^ |ProductName|string, nvarchar(255)|Название продукта| |PartNum|string, nvarchar(128)|Партномер, уникальный код продукта| |VendorCode|string, nvarchar(128)|Код вендора| |Min|integer|Минимальное количество для заказа| |Max|integer|Максимальное количество для заказа| |CustomerPrice|number|Цена партнера| |CustomerCurrencyCode|string, nvarchar(4)|Валюта партнера| |EndUserPrice|number|Цена конечного клиента| |EndUserCurrencyCode|string, nvarchar(4)|Валюта продажи конечному клиенту| ===Пример запроса и ответа метода GetProducts=== ++++Запрос | GET https://pipe-web-test01.dmzmont.org:8075/api/GetProducts ++++ ++++Ответ | [ { "productName": "Kaspersky Anti-Virus Russian Edition. 2 устройства 1 Г базовая лицензия", "partNum": "KL1171RUBFS_mt", "vendorCode": "LABK", "min": 0, "max": null, "customerPrice": 1500, "customerCurrencyCode": "RUB", "endUserPrice": null, "endUserCurrencyCode": null }, { "productName": "Office Home and Business 2016 Win AllLng PKLic Onln CEE Only C2R NR test", "partNum": "ABC-11111", "vendorCode": "MS", "min": 0, "max": null, "customerPrice": 1000, "customerCurrencyCode": "RUB", "endUserPrice": null, "endUserCurrencyCode": null } ] ++++ ====AddOrder==== ===Описание=== Размещение заказа в системе Webstore. ===Входные параметры=== ^Название^Тип, максимальное количество символов^Описание^ |OrderNum|string, nvarchar(128)|номер заказа, уникальный в системе Webstore| |OrderLines|array of **[[ | OrderLines]]**|Объект, содержащий информацию по всем строкам заказа| **[[ru:webstoremini:api:methods:addorder | Тип OrderLines]]** ^Название^Тип, максимальное количество символов^Описание^ |OrderLineNum|string, nvarchar(255)|Уникальный номер строки заказа| |Quantity|integer|Количество| |PartNum|string, nvarchar(128)|Партномер продукта| ===Возвращаемые значения=== ^Название^Тип, максимальное количество символов^Описание^ |OrderNum|string, nvarchar(128)|Номер заказа| |DateCreated|string|Дата создания заказа| |Status|integer|Статус заказа: 1 - в процессе, 2 - ошибка, 3 - завершен успешно| |OrderLines|array of **[[ | SaleOrderLineResult]]**|Объект, содержащий данные о всех строках заказа| **[[ru:webstoremini:api:methods:addorder| Тип SaleOrderLineResult]]** ^Название^Тип, максимальное количество символов^Описание^ |OrderLineNum|string, nvarchar(255)|Номер строки заказа| |DateCreated|string|Дата создания заказа| |Quantity|integer|Количество| |PartNum|string, nvarchar(128)|Партномер| |CustomerPrice|number|Цена партнера| |CustomerCurrency|string, nvarchar(4)|Валюта партнера| |Status|integer|Статус строки заказа: 1 - в процессе, 2 - ошибка, 3 - завершен успешно| |ProductUnits|array of **[[ | ProductUnitResult]]**|Объект, содержащий информацию о ключах и ссылках заказа| **[[ru:webstoremini:api:methods:addorder| Тип ProductUnitResult]]** ^Название^Тип^Описание^ |Keys|array of **[[ | KeyUnitResult]]**|Объект, содержащий ключ активации и серийный номер| |Links|array of **[[ | LinkUnitResult]]**|Объект, содержащий ссылку и описание| **[[ru:webstoremini:api:methods:addorder| Тип KeyUnitResult]]** ^Название^Тип, максимальное количество символов^Описание^ |ActivationKey|string, nvarchar(255)|Ключ активации| |SerialNumber|string, nvarchar(255)|Серийный номер| **[[ru:webstoremini:api:methods:addorder| Тип LinkUnitResult]]** ^Название^Тип, максимальное количество символов^Описание^ |Url|string, nvarchar(255)|Ссылка| |LinkDescription|string, nvarchar(255)|Описание ссылки| ===Пример запроса и ответа метода AddOrder=== ++++ Запрос | POST https://pipe-web-test01.dmzmont.org:8075/api/AddOrder { "orderNum": "asdfg", "orderLines": [ { "orderLineNum": "asdfg-1", "quantity": 1, "partNum": "ABC-11111" } ] } ++++ ++++ Ответ | { "orderNum": "asdfg", "dateCreated": "2021-04-02T18:37:01.0292714+03:00", "status": 3, "orderLines": [ { "orderLineNum": "asdfg-1", "dateCreated": "2021-04-02T18:37:01.2637508+03:00", "quantity": 1, "partNum": "ABC-11111", "customerPrice": 1000.00, "customerCurrency": "RUB", "status": 3, "productUnits": [ { "keys": [ { "activationKey": "b6981f28-4bde-4dc6-9008-a91cd63ed26e", "serialNumber": "" } ], "links": [] } ] } ] } ++++ ====GetOrder==== ===Описание=== Получение информации о размещенном заказе. ===Входные параметры=== ^Название^Тип, максимальное количество символов^Описание^ |OrderNum|string, nvarchar(128)|Номер заказа| ===Возвращаемые значения=== ^Название^Тип, максимальное количество символов^Описание^ |OrderNum|string, nvarchar(128)|Номер заказа| |DateCreated|string|Дата создания заказа| |Status|integer|Статус заказа: 1 - в процессе, 2 - ошибка, 3 - завершен успешно| |OrderLines|array of **[[ | SaleOrderLineResult]]**|Объект, содержащий данные о всех строках заказа| **[[ru:webstoremini:api:methods:getorder| Тип SaleOrderLineResult]]** ^Название^Тип, максимальное количество символов^Описание^ |OrderLineNum|string, nvarchar(255)|Номер строки заказа| |DateCreated|string|Дата создания заказа| |Quantity|integer|Количество| |PartNum|string, nvarchar(128)|Партномер| |CustomerPrice|number|Цена партнера| |CustomerCurrency|string, nvarchar(4)|Валюта партнера| |Status|integer|Статус строки заказа: 1 - в процессе, 2 - ошибка, 3 - завершен успешно| |ProductUnits|array of **[[ | ProductUnitResult]]**|Объект, содержащий информацию о ключах и ссылках заказа| **[[ru:webstoremini:api:methods:getorder| Тип ProductUnitResult]]** ^Название^Тип^Описание^ |Keys|array of **[[ | KeyUnitResult]]**|Объект, содержащий ключ активации и серийный номер| |Links|array of **[[ | LinkUnitResult]]**|Объект, содержащий ссылку и описание| **[[ru:webstoremini:api:methods:getorder| Тип KeyUnitResult]]** ^Название^Тип, максимальное количество символов^Описание^ |ActivationKey|string, nvarchar(255)|Ключ активации| |SerialNumber|string, nvarchar(255)|Серийный номер| **[[ru:webstoremini:api:methods:getorder| Тип LinkUnitResult]]** ^Название^Тип, максимальное количество символов^Описание^ |Url|string, nvarchar(255)|Ссылка| |LinkDescription|string, nvarchar(255)|Описание ссылки| ===Пример запроса и ответа метода AddOrder=== ++++ Запрос | GET https://pipe-web-test01.dmzmont.org:8075/api/GetOrder?orderNum=asdfg ++++ ++++ Ответ | { "orderNum": "asdfg", "dateCreated": "2021-04-02T18:37:01.029271+03:00", "status": 3, "orderLines": [ { "orderLineNum": "asdfg-1", "dateCreated": "2021-04-02T18:37:01.26375+03:00", "quantity": 1, "partNum": "ABC-11111", "customerPrice": 1000.00, "customerCurrency": "RUB", "status": 3, "productUnits": [ { "keys": [ { "activationKey": "b6981f28-4bde-4dc6-9008-a91cd63ed26e", "serialNumber": "" } ], "links": [] }, ] } ] } ++++ ====GetProductDescription==== ===Описание=== Возвращает описание одного продукта в заданной стране. ===Входные параметры=== ^Название^Тип, максимальное количество символов^Описание^ |PartNum|string, nvarchar(128)|Партномер продукта| |CountryCode|string, nvarchar(2)|Код страны| ===Возвращаемые значения=== ^Название^Тип, максимальное количество символов^Описание^ |PartNum|string, nvarchar(128)|Партномер продукта| |Title|string, nvarchar(255)|Название продукта| |UrlImage|string, nvarchar(max)|Адрес картинки| |OrderNum|string, nvarchar(max)|Сортировка| |Preview|string, nvarchar(max)|Анонс| |ShortDescription|string, nvarchar(2048)|Краткое описание| |FullDescription|string, nvarchar(max)|Подробное описание| |ImportantInformation|string, nvarchar(max)|Важная информация| |SystemRequirements|string, nvarchar(max)|Системные требования| |InstallInfo|string, nvarchar(max)|Инструкция по установке| |EventText|string, nvarchar(max)|Информация об акциях| |Specs|array of **[[ru:webstoremini:api:methods:getproductdescription | SpecContract]]**|Объект, содержащий характеристики продукта| |CountryCode|string, nvarchar(2)|Код страны, для которой запрошено описание| |IsContentAvailable|bool|Есть ли описание по данному продукту| |MeasureUnit|integer|Единица измерения| |VendorCode|string, nvarchar(128)|Код вендора| **[[ru:webstoremini:api:methods:getproductdescription| Тип SpecContract]]** ^Название^Тип, максимальное количество символов^Описание^ |Id|integer|Уникальный идентификатор характеристики| |Title|string, nvarchar(50)|Название характеристики| |Value|string, nvarchar(50)|Значение характеристики| |SpecType|integer, array of **[[ru:webstoremini:api:methods:getproductdescription | SpecTypeContract]]**|Тип характеристики| **[[ru:webstoremini:api:methods:getproductdescription | Тип SpecTypeContract]]** ^Название^Тип^Описание^ |1|integer|Строковое значение| |2|integer|Целочисленное значение| |3|integer|Может быть несколько строковых значений для одной характеристики| ===Примеры запроса и ответа метода GetProductDescription=== ++++ Запрос | GET https://pipe-web-test01.dmzmont.org:8075/api/GetProductDescription?partNum=ABC-11111&countryCode=RU ++++ ++++ Ответ | { "partNumber": "ABC-11111", "title": "MS Office 2013 Тестовый продукт MS", "urlImage": null, "orderNum": 1, "preview": "\n\n\t\n\n\n

Управляйте жизнью и работой более эффективно благодаря доступу к документам через Интернет.

\n\n\n", "shortDescription": null, "fullDescription": null, "importantInformation": null, "systemRequirements": null, "installInfo": null, "eventText": null, "specs": [ { "id": 26, "title": "Операционные системы", "value": "Windows", "specType": 1 }, { "id": 91, "title": "Количество устройств", "value": "15", "specType": 2 }, { "id": 170, "title": "Канал продаж", "value": "ESD", "specType": 1 } ], "countryCode": "RU", "isContentAvailable": true, "measureUnit": null, "vendorCode": "MS" }
++++ =====Коды ошибок===== ^Код^Текст ошибки^ |101|Заказ с таким номером уже есть в системе| |102|Для логина не назначена ни одна компания| |103|Неизвестная страна| |104|Логин не найден в системе| |105|Продукт не найден| |106|Минимальное количество для товара не достигнуто| |107|Превышено максимальное количество для товара| |108|Строка заказа с таким номером уже есть в системе| |109|Для товара не настроен онлайн генератор| |110|Для онлайн генератора не настроены параметры| =====Определения и термины===== **//Роль пользователя//** — это совокупность возможностей, которые получает пользователь Системы, входящий в определенное количество встроенных групп доступа, и оперирующий заданным функционалом. **//Вендор//** — это физическое или юридическое лицо, которое производит и поставляет товары под собственным брендом. **//Реселлер//** — это физическое или юридическое лицо, которое осуществляет продажу товаров или услуг других производителей и поставщиков. **//Категория//** - это группа сущностей, объединенных общим свойством. Категории могут иметь древовидную структуру. Могут использоваться на стороне реселлера для группировки продуктов в логические блоки, например, для построения меню на сайте. Категории принадлежат одному или нескольким вендорам и содержат продукты и семейства. **//Продукт//** - сущность, которая может содержать в себе описание продукта на различных языках. Важно отметить, что большинство продуктов в своем описании содержат список характеристик вида: название характеристики, ее значение и тип. Например, «Тип лицензии» - «Базовая» - «строка». Данные характеристики так же можно использовать для группировки продуктов и семейств при разработке собственных систем. **//Заказ//** - это объединенная группа из одного и/или более продуктов, созданная конечным клиентом для оплаты. **//Цена реселлера//** - расчётная цена, по которой происходит продажа продукта реселлеру с учётом всех скидок. **//Цена РРЦ//** - рекомендуемая розничная цена продажи продукта конечному клиенту. =====Ссылки===== Пакет хостинга ASP.NET Core 3.1 https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-aspnetcore-3.1.13-windows-hosting-bundle-installer PostgreSQL https://www.enterprisedb.com/downloads/postgres-postgresql-downloads http://monttechnology.com