Публичное пространство

SetKit ◾️ Подробное описание

Информация о продукте

Set Kit – это сервис для работы с заказами покупателя.

Заказ покупателя  - предварительно оформленный список товаров в одном из каналов продажи. Может также содержать дополнительную информацию о покупателе, примененных акциях и рассчитанных скидках. Заказ можно сформировать как в онлайн-канале продаж, будь то интернет-магазин или мобильное приложение покупателя, так и в торговом зале, через рабочее место продавца или терминал сканирования данных (SelfScan).


Сервис Set Kit выступает связующим звеном между Вашими информационными системами и кассовыми местами. Он позволяет реализовать обработку мягких чеков в Вашей торговой сети как на физических кассах включая Mobile POS, так и в онлайн-кассах.


Инсталляция и первоначальная настройка

Системные требования

  • Операционная система (предпочтительно x64) -  Windows не ниже 7 или Linux CentOS не ниже 7
  • PostgreSQL 9.4. (входит в состав SetRetail10, установка не требуется)
  • Java8
  • .NetFrameWork 3.5
  • 1Гб оперативной памяти
  • Достаточное место на жестком диске: от 50Гб
  • Версия SetRetail10 - не ниже 10.2.42.0


ВАЖНО

Первоначальная инсталляция сервиса SetKit осуществляется специалистами CSI в рамках проектных работ

После инсталляции в списке служб появится SetKit service

Настройка сервиса SetKit

  1. Откройте на редактирование файл {Disk}:\dist\set-kit.xml
  2. Установите необходимые параметры для работы со службой SetKit

Другие параметры не требуется редактировать. Не изменяйте их во избежание нарушения процесса работы службы.

Пример файла настройки dist\set-kit.xml

set-kit.xml
<service>
    <id>SetKit</id>
    <name>SetKit service</name>
    <description>SetKit service</description>
    <workingdirectory>%BASE%\</workingdirectory>
    <logpath>%BASE%\logs</logpath>
    <logmode>rotate</logmode>
    <executable>%SET_JAVA_HOME%\bin\java</executable>
    <argument>-Xms256m</argument>
    <argument>-jar</argument>
    <argument>set-kit.war</argument>
    <argument>--server.port=8081</argument> <!--порт сервиса-->
    <argument>--database.host=localhost</argument> <!--хост на котором находится бд-->
    <argument>--database.port=5432</argument> <!--порт на котором находится бд-->
    <argument>--scheduler.delay=43200000</argument> <!--с какой задержкой запускается удаление МЧ(в мс)-->
    <argument>--scheduler.maxDays=100</argument> <!--время жизни МЧ в днях-->
    <onfailure action="restart" delay="20 sec"/>
    <argument>--generator.prefix=SK</argument> <!--Префикс для guid мягких чеков в случае генерации SetKit-->
    <argument>--generator.length=16</argument> <!--Длина (с учетом префикса) для guid мягких чеков в случае генерации SetKit-->
    <argument>--license.agentAddress=http://localhost:5522/rmi</argument><!--IP-адрес агента лицензирования-->
    <!--<argument>scheduler.maxMinutes=100</argument>--> <!--время жизни МЧ в минутах, если заданы дни то они приоритетнее-->
</service>

3. Для вступления настроек в силу необходимо перезапустить службу SetKit service

Настройка SetRetail для работы с SetKit

  1. Откройте Управление продажами  Внешние системы  Внешние процессинги  Нажмите кнопку Добавить оператора  Выберите из левой части списка Мягкие чеки  Выберите Служба мягких чеков SetKit X  Нажмите кнопку Зарегистрировать нового оператора. Далее перейдите к Настройкам оператора
  2. Заполните необходимые поля для мягкого чека и нажмите кнопку К списку операторов.

    Значения полей:

    • [Адрес сервера SET Kit] задайте IP-адрес сервера SetRetail10 в формате http://XXX.XXX.XXX.XXX:ПОРТ
    • [Префикс мягкого чека] - установите префикс, благодаря которому касса будет распознавать, что введенной значение является мягким чеком.
    • [Длина номер мягкого чека (без префикса)] - введите допустимую длину мягких чеков.
    • [Обрезать префикс перед отправкой] - необходимо использовать в случаях хранения номеров заказов без префикса
    • [Разрешить добавление акцизных алкогольных товаров]- возможность добавления алкогольных товаров с вводом акцизных марок на кассе
    • [Производить поиск мягкого чека с индексом своего магазина]- необходимо использовать в случаях, когда нумерация заказов происходит в каждом магазине

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

  4.  Из списка на вкладке функции кассы выберите поиск мягкого чека.

  5. Непосредственно на кассе в сервисном меню Конфигуратор   Внешние процессинги проверьте, что наименование процессинга Служба мягких чеков SetKit X присутствует в списке.

    ВАЖНО

    Статус процессинга мягких чеков Службы мягких чеков SetKit X всегда будет в статусе не подключен. Проверка подключения к службе проверяется запросом мягкого чека на кассе

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

  7. Касса готова к работе с сервисом SetKit


Функциональные возможности и сценарии использования

Работа с сервисом SetKit через API

Сохранить/Добавить мягкий чек

Метод: PUT или POST

Адресация: http://{IP-адрес службы SetKit}:8081/set-kit/softcheques/{ШК мягкого чека}

Request Content-Types: application/json

Описание:

ВАЖНО

Существует 2 стратегии генерации номера (guid) мягкого чека:
1. Номер МЧ (guid) генерируется в SetKit на POST-запрос. Он будет сформирован на основании настроек:
- префикс
- длина МЧ

2. Номер МЧ (guid) присылает внешняя система. При этом необходимо использовать PUT-запрос

Пример создания мягкого чека в Postman:

Получить мягкий чек в определённом статусе по его guid

Метод: GET

Адресация: http://{IP-адрес службы SetKit}:8081/set-kit/softcheques/{guid}/status/{status}

Request Content-Types: application/json

Описание: возвращает чек с указанным guid

Код ответа: 200 (Чек найден)

Пример работы с запросом чека по статусу в Postman

Получить мягкий чек по guid

Метод: GET

Адресация: http://{IP-адрес службы SetKit}:8081/set-kit/softcheques/{guid}/

Request Content-Types: application/json

Описание: возвращает чек с указанным guid

Код ответа: 200 (Чек найден)

Пример работы с запросом чека по статусу в Postman:

Обновить чек - изменить данные чека

Метод: PUT

Адресация: http://{IP-адрес службы SetKit}:8081/set-kit/softcheques/{guid}/

Request Content-Types: application/json

Описание: поиск в хранилище локальной версии чека по guid и обновление записи. Если чека не существует, то произойдет его создание. 

Внимание!

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


Пример работы с запросом в Postman:

Удалить мягкий чек

Метод: DELETE

Адресация: http://{IP-адрес службы SetKit}:8081/set-kit/softcheques/{guid}/

Request Content-Types: application/json

Описание: переводит чек в статус deleted, и после этого его невозможно получить извне. После удаления, guid можно использовать для другого чека.

Код ответа: 200 (Чек найден)


Получить мягкий чек по номеру телефону

Метод: GET

Адресация: http://172.29.16.51:8081/set-kit/softcheques?phone=79991112233&status=READY_TO_PAYMENT

Request Content-Types: application/json

Описание: возвращает чек с указанным номером мобильного телефона phone

Код ответа: 200 (Чек найден)

Пример работы с запросом чека по статусу в Postman:

Восстановление, аннулирование и гашение мягкого чека на кассе


Типы товаров,возможные к восстановлению на кассе из мягкого чека

  • Штучные
  • Весовые
  • Алкогольные (в том числе акцизные)


1. Создаем мягкий чек №771389 в SetKit следующего содержания:

  • Штучный товар
  • Расчет скидок разрешен
  • Редактирование мягкого чека разрешено

Пример запроса:
{
    "guid": "ext-01",
    "shopNumber": null,
    "status": "READY_TO_PAYMENT",
    "dateCreated": 1517481826629,
    "isEditable": true,
    "totalPrice": 611,
    "discountsValue": 0,
    "additionalInfo": "additional information",
    "positions": [
        {
            "positionOrder": 1,
            "code": "45034",
            "departNumber": 1,
            "barcode": "4810167000258",
            "quantity": 2,
            "unitPrice": 305.5,
            "vat": 5,
            "vatValue": 20,
            "discountValue": 0,
            "totalPrice": 611,
            "isFixedPrice": false,
            "isFixedDiscounts": null,
            "additionalInfo": "Кейс 1. Восстановление, аннулирование и гашение мягкого чека на кассе",
            "positionDiscounts": null
        }
    ]
}

2. На кассе по штрих-коду вызываем мягкий чека №771389 и проверяем, что он полностью был восстановлен на кассе.

3. Проверяем, что статус МЧ в SetKit, он изменился на PAYMENT, это означает что чек вызван на кассе.

4. Аннулируем чек и проверяем, что статус мягкого чека изменился в SetKit на READY_TO_PAYMENT, это означает, что его снова можно вызвать для продажи

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

6. Вводим номер мягкого чека без префикса его штрих-кода и нажимаем ВВОД для вызова и видим, что мягкий чек отобразился на кассе.

7. Изменяем количество товаров в из мягкого чека и добавляем новую позицию.

8. Нажимаем кнопку РАСЧЕТ и проверяем, что для каждой из позиций были применены скидки.

9. Производим регистрацию чека.

10. Проверяем в службе SetKit, что чеку присвоен статус COMPLETED, это означает, что он оплачен.


Обработка признаков запрета действий и изменений на кассе

1. Создаем МЧ №773390 в SetKit следующего содержания:

  • Товары штучные. Скидки и цены предрасчитаны (цены в составе мягкого чека на позиции уже являются скидочными).
  • Расчет скидок запрещен
  • Редактирование МЧ запрещено

2. На кассе вызываем мягкий чек №773390.

3. Мягкий чек появился на кассе.

4. Если попробовать выделить товарную позицию и нажать клавишу ВВОД, то появится сообщение о том, что нельзя редактировать позиции.

5. Добавляем товар для которого, отдельная рекламная акция. Также рекламная акция есть и для товаров из мягкого чека.

6. Нажимаем кнопку РАСЧЕТ и видим, что скидка применилась только на товар добавленный на кассе, а не на те, что из мягкого чека.

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

9. Проверяем, что в службе мягких чеков статус изменился на COMPLETED, это означает, что он был оплачен.

Работа с акцизными алкогольными товарами из мягкого чека на кассе

Обработка добавления акцизных марок из мягкого чека

Обработка ошибок добавления маркированного из мягкого чека

SRTB-4757 - Получение подробных данных проблемы… СТАТУС

CR-5244 - Получение подробных данных проблемы… СТАТУС

10.2.94.0

При продаже алкогольных товаров с использованием мягкого чека на кассе, производится дополнительная обработка:

  • Каждая переданная марка валидируется во внешней системе:

    • Если валидация не прошла - марки очищаются для каждого товара с таким артикулом.

  • Логика работает только для алкогольных товаров и для обуви.

  • Проверка на дубли марок в рамках мягкого чека не производится.

    • При таком кейсе на кассе появится ошибка при поиске мягкого чека, далее он будет аннулирован.

  • Пример сценария:

    • Мягкий чек:

      • Водка - АМ1 - марка валидна;

      • Водка - АМ2 - марка валидна;

      • Водка - АМ3 - марка невалидна (не подходит под регулярный, SetMark запрещает продажу)/

    • Добавленные позиции:
      • Коньяк - АМ1 - марка валидна;

      • Коньяк - АМ2 - марка валидна.

    • Результат: Касса запрашивает марки для 3х бутылок водки.

Настройка и использование

1. Для того чтобы была возможность добавления акцизного товара из мягкого чека, в настройках процессинга службы SetKitX установите флаг Разрешить добавление акцизных алкогольных товаров.

2. Создаем мягкий чек с №771290 в SetKit следующего содержания

  • Товары штучный, алкогольный (акцизный).
  • Расчет скидок разрешен
  • Редактирование МЧ разрешено

Пример запроса:
{
    "guid": "ext-01",
    "shopNumber": null,
    "status": "READY_TO_PAYMENT",
    "dateCreated": 1517481826629,
    "isEditable": true,
    "totalPrice": 611,
    "discountsValue": 0,
    "additionalInfo": "additional information",
    "positions": [
         {
            "positionOrder": 1,
            "code": "45034",
            "departNumber": 1,
            "barcode": "4810167000258",
            "quantity": 2,
            "unitPrice": 305.5,
            "vat": 5,
            "vatValue": 20,
            "discountValue": 0,
            "totalPrice": 611,
            "isFixedPrice": false,
            "isFixedDiscounts": null,
            "additionalInfo": "Кейс 2. Работа с акцизными алкогольными товарами из МЧ на кассе"
            
        },
        {
            "positionOrder": 2,
            "code": "45037",
            "departNumber": 1,
            "barcode": "5099873089798",
            "quantity": 1,
            "unitPrice": 305.5,
            "vat": 5,
            "vatValue": 20,
            "discountValue": 0,
            "totalPrice": 611,
            "isFixedPrice": false,
            "isFixedDiscounts": null,
            "additionalInfo": "Кейс 2. Работа с акцизными алкогольными товарами из МЧ на кассе",
            "positionDiscounts": null
        }
    ]
}

3. На кассе вызываем мягкий чек №771290.

4. Появляется форма для ввода штрих-кода алкогольного товара.

5. Сканируем штрих-код алкогольного товара, затем акцизную марку.

6. Появляется сообщение о возрасте покупателя и нажимаем кнопку ВВОД.

7. Появляется стандартное поле для изменения количества товара, если это разрешено настройками привилегии кассира. Нажимаем кнопку ВВОД.

8. Сканируем акцизную марку алкогольного товара.

9. Алкогольный товар вместе со штучным добавлены в основной чек.

10. Нажимаем кнопку РАСЧЕТ и регистрируем чек.

11. Чек в службе мягких чеков SetKit изменился на статус COMPLETED, это означает, что он был оплачен.


Сопровождение

Описание таблиц базы данных SetKit

Подключение

Воспользуйтесь PgAdmin-клиентом для подключения к БД PostgreSQL

Подключитесь к серверу СУБД PostgreSQL на котором установлены базы данных сервера SetRetail10

База данных со всеми данными по мягкими чеками называется set-kit-db:

Таблицы

ТаблицаКомментарий
clientКлиенты
positionПозиции мягкого чека
position_discountПозиции мягкого чека на которые применяются скидки
schema_versionИстория изменения базы данных
soft_chequeМягкие чеки

Хранение мягкого чека в SetRetail10

Номер мягкого чека присваивается к каждой добавляемой позиции основного чека на кассе.

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

В визуализации сервера просмотр позиций мягкого чека не возможен.

База данных

Касса

cash → ch_session → soft_check_number

Сервер

set_operday → od_position → soft_check_number

Пример чека отправленного в ERP

Для позиций добавленных из мягкого чека будет добавлен параметр softCheckNumber в котором будет содержаться его номер:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<purchases count="2">
    <purchase tabNumber="1" userName="Иванов Иван Иванович" operationType="true" operDay="2018-02-12+03:00" shop="3552" cash="1" shift="1" number="6" saletime="2018-02-13T16:06:36.510+03:00" begintime="2018-02-13T16:06:31.085+03:00" amount="611.0" discountAmount="0.0" inn="132423423423">
        <positions>
            <position order="1" departNumber="583" goodsCode="45034" barCode="4810167000258" count="2.0" cost="305.5" nds="18.0" ndsSum="93.2" discountValue="0.0" costWithDiscount="305.5" amount="611.0" softCheckNumber="771374" dateCommit="2018-02-13T16:06:31.088+03:00"/>
        </positions>
        <payments>
            <payment typeClass="CashPaymentEntity" amount="700.0" description="Оплата наличными"/>
            <payment typeClass="CashChangePaymentEntity" amount="89.0" description=""/>
        </payments>
    </purchase>   
</purchases>


© 1994-2023, ООО «Кристалл Сервис Интеграция».
Все права защищены..

Политика обработки персональных данных