Set Kit API Reference

Set Kit представляет из себя программный комплекс состоящий из трёх компонентов: клиента (в данном случае web интерфейс для управления и конфигурированием сервера), сервера и база данных(с которой работает сервер). Версия документации в формате PDF

API Endpoint
https://localhost:8081/set-kit
Terms of Service: https://www.crystals.ru/agreement
Contact: setkit@crystals.ru
Schemes: http, https
Version: latest

Настройки

Настройки сервиса приведены в таблице 1.

Таблица 1 - настройки сервиса

Настройка Тип Пример Описание
database.host Строка 127.0.0.1 Хост базы данных.
database.port Число 5432 Порт базы данных.
database.login Строка postgres Логин пользователя базы данных.
database.password Строка postgres Пароль пользователя базы данных.
generator.prefix Строка SK Префикс идентификатора мягкого чека при генерации на стороне сервиса.
generator.length Число 16 Длина идентификатора мягкого чека при генерации на стороне сервиса
license.agentAddress Строка http://127.0.0.1:8089 Адрес агента лицензирования.
license.shops-sending.enabled Булевский true Включить/отключить отправку в агент статистики по магазинам. true, если включена, false в противном случае.
license.shops-sending.intervalMinutes Число 5 Период отапрввки в агент статистики по магазинам. В минутах.
license.activityPeriodDays Число 3 Период активности магазинов, в днях. Влияет на отправку статистики и количество запрашиваемых лицензий.
scheduler.enabled Булевский true Флаг, включающий или отключающий автоудаление "старых" мягких чеков. true, если автоудаление включено, false в противном случае.
scheduler.delay Число 8000 Период срабатывания автоудаления "старых" мягких чеков, в миллисекундах.
scheduler.maxMinutes Число 30 Время жизни мягкого чека, в минутах.
scheduler.maxDays Число 5 Время жизни мягкого чека, в днях. Имеет приоритет больший, чем scheduler.maxMinutes.
notification.setretail.enabled Булевский false Флаг, включающий или отключающий отправку сообщений в Set10. true, если отправка включена, false в противном случае.
notification.setretail.delayMinutes Число 5 Периодичность отправки сообшений в Set10. Задаётся в минутах.
notification.setretail.ipAddresses Строка 127.0.0.1,192.168.1.1 Набор IP-адресов Set10, на которые необходимо отправлять сообщения. Разделителем служит ",".
notification.setretail.cashNumbers Строка 1,2,3 Набор номеров касс, на которые необходимо вести рассылку. Разделителем служит ",".
notification.setretail.message Строка Заказы Создано: #{"type": "COUNT","value": "softcheck.status=''CREATED''"} Отменено: #{"type": "COUNT","value": "softcheck.status=''CANCELED''"} Сообщение для рассылки.
aggregation-function.enabled Булевский true Булевский флаг, определяющий, включена ли функция обновления статистической информации о незавершенных чеках в магазине. true, если включена, false в противном случае. Значение по умолчанию - false.
aggregation-function.update-interval Строковый PT3M Период обновления информации. Задаётся в формате PT<Число><Единица>. Единицы: S - секунды; M - минуты; H - часы; D - дни. Значение по умолчанию - PT3M.

Мягкий чек

Эти методы позволяют сохранять, изменять и удалять чек

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

POST /softcheques, /softcheques/shop/{shop}

Сохраняет присланный чек. В заголовке Location ответа возвращает путь, по которому можно получить этот чек. Важно, что используя этот метод, guid чека всегда гененируется на стороне SetKit. Для того чтобы сохранить МЧ в конкретном магазине ипользуем PATH с указанием shop. Для сохранения чека с guid внешней системы, необходмио использовать метод Обновить чек

Мягкий чек

shop: int
in path

номер магазина

Request Content-Types: application/json
Request Example
{
  "guid": 1,
  "name": "Order",
  "status": "READY_TO_PAYMENT",
  "dateCreated": "2018-12-31 10:52",
  "kitNumber": "kit_0001",
  "isEditable": true,
  "receiptEditable": true,
  "positionsAddingAllowed": true,
  "positionsDeletingAllowed": true,
  "operationType": 1,
  "totalPrice": 46.32,
  "discountsValue": 0.18,
  "additionalInfo": "additional information",
  "location": "location",
  "verificationCode": "5738",
  "positions": [
    {
      "positionOrder": 1,
      "code": "500-1",
      "departNumber": 1,
      "barcode": "5000001",
      "quantity": 4.5,
      "unitPrice": 10.29,
      "vat": -20,
      "vatValue": 20,
      "discountValue": 0.18,
      "totalPrice": 46.32,
      "isFixedPrice": false,
      "isFixedDiscounts": false,
      "additionalInfo": "{'comment':'Good client'}",
      "positionDiscounts": [
        {
          "cardNumber": "10001001-v",
          "quantity": 1,
          "advertisementId": "discount-001-code",
          "advertisementCode": "discount-001",
          "advertisementName": "discount-second-good-50rub",
          "actionDiscountType": "discount-type-01",
          "value": 0.18,
          "additionalInfo": "{'comment':'Discount for first position'}"
        }
      ]
    }
  ],
  "client": {
    "guid": "0001",
    "cardNumber": "10001001-v",
    "firstName": "Иван",
    "lastName": "Иванов",
    "middleName": "Иванов",
    "email": "ivanov@e1.com",
    "phone": "8-800-999-99-99",
    "accumulation": 2100000,
    "bonusBalance": 50000,
    "clientNotificationType": "BY_EMAIL",
    "juristicDetails": {
      "inn": "100000000012",
      "organizationName": "Организация"
    }
  },
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  },
  "payments": [
    {
      "typeId": "ExternalBankTerminalPaymentEntity",
      "bankId": "Фулфилмент",
      "amount": 10.2,
      "properties": [
        {
          "key": "card.number",
          "value": 1234
        },
        {
          "key": "auth.code",
          "value": 5678
        },
        {
          "key": "purchase.number",
          "value": 9012345
        }
      ]
    }
  ],
  "extendedAttributes": [
    {
      "key": "client.guid",
      "value": "1234"
    },
    {
      "key": "ext.code",
      "value": 5678
    }
  ],
  "productsValidation": {
    "type": "PARTIAL",
    "count": 5,
    "considerProductQuantity": false,
    "quantityEnterAllowed": false
  },
  "communicationMessages": [
    {
      "header": "Заголовок тестового сообщения",
      "body": "Тестовое сообщение кассиру",
      "footer": "Это сообщение кассиру"
    }
  ]
}
200 OK

Чек успешно сохранён

400 Bad Request

Невалидный запрос (см. также MissingPropertiesError)

Response Content-Types: application/json
Response Example (200 OK)
{
  "guid": 1,
  "name": "Order",
  "status": "READY_TO_PAYMENT",
  "dateCreated": "2018-12-31 10:52",
  "kitNumber": "kit_0001",
  "isEditable": true,
  "receiptEditable": true,
  "positionsAddingAllowed": true,
  "positionsDeletingAllowed": true,
  "operationType": 1,
  "totalPrice": 46.32,
  "discountsValue": 0.18,
  "additionalInfo": "additional information",
  "location": "location",
  "verificationCode": "5738",
  "positions": [
    {
      "positionOrder": 1,
      "code": "500-1",
      "departNumber": 1,
      "barcode": "5000001",
      "quantity": 4.5,
      "unitPrice": 10.29,
      "vat": -20,
      "vatValue": 20,
      "discountValue": 0.18,
      "totalPrice": 46.32,
      "isFixedPrice": false,
      "isFixedDiscounts": false,
      "additionalInfo": "{'comment':'Good client'}",
      "positionDiscounts": [
        {
          "cardNumber": "10001001-v",
          "quantity": 1,
          "advertisementId": "discount-001-code",
          "advertisementCode": "discount-001",
          "advertisementName": "discount-second-good-50rub",
          "actionDiscountType": "discount-type-01",
          "value": 0.18,
          "additionalInfo": "{'comment':'Discount for first position'}"
        }
      ]
    }
  ],
  "client": {
    "guid": "0001",
    "cardNumber": "10001001-v",
    "firstName": "Иван",
    "lastName": "Иванов",
    "middleName": "Иванов",
    "email": "ivanov@e1.com",
    "phone": "8-800-999-99-99",
    "accumulation": 2100000,
    "bonusBalance": 50000,
    "clientNotificationType": "BY_EMAIL",
    "juristicDetails": {
      "inn": "100000000012",
      "organizationName": "Организация"
    }
  },
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  },
  "payments": [
    {
      "typeId": "ExternalBankTerminalPaymentEntity",
      "bankId": "Фулфилмент",
      "amount": 10.2,
      "properties": [
        {
          "key": "card.number",
          "value": 1234
        },
        {
          "key": "auth.code",
          "value": 5678
        },
        {
          "key": "purchase.number",
          "value": 9012345
        }
      ]
    }
  ],
  "extendedAttributes": [
    {
      "key": "client.guid",
      "value": "1234"
    },
    {
      "key": "ext.code",
      "value": 5678
    }
  ],
  "productsValidation": {
    "type": "PARTIAL",
    "count": 5,
    "considerProductQuantity": false,
    "quantityEnterAllowed": false
  },
  "communicationMessages": [
    {
      "header": "Заголовок тестового сообщения",
      "body": "Тестовое сообщение кассиру",
      "footer": "Это сообщение кассиру"
    }
  ]
}
Response Headers (200 OK)
Location

URL страницы, по которой доступен этот чек

object
Response Example (400 Bad Request)
{
  "code": 1040,
  "message": "Не корректно сформирован json запрос."
}

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

GET /softcheques/{guid}?status={status}, /softcheques/{guid}/shop/{shop}?status={status}

Возвращает чек с указанным guid

guid: string
in path

guid мягкого чека

shop: int
in path

номер магазина

status: string
in path

статус мягкого чека

200 OK

Чек найден

404 Not Found

Чек не найден (см. также AlreadyOnCash, AlreadyPaid, AlreadyRemoved)

Response Content-Types: application/json
Response Example (200 OK)
{
  "guid": 1,
  "name": "Order",
  "status": "READY_TO_PAYMENT",
  "dateCreated": "2018-12-31 10:52",
  "kitNumber": "kit_0001",
  "isEditable": true,
  "receiptEditable": true,
  "positionsAddingAllowed": true,
  "positionsDeletingAllowed": true,
  "operationType": 1,
  "totalPrice": 46.32,
  "discountsValue": 0.18,
  "additionalInfo": "additional information",
  "location": "location",
  "verificationCode": "5738",
  "positions": [
    {
      "positionOrder": 1,
      "code": "500-1",
      "departNumber": 1,
      "barcode": "5000001",
      "quantity": 4.5,
      "unitPrice": 10.29,
      "vat": -20,
      "vatValue": 20,
      "discountValue": 0.18,
      "totalPrice": 46.32,
      "isFixedPrice": false,
      "isFixedDiscounts": false,
      "additionalInfo": "{'comment':'Good client'}",
      "positionDiscounts": [
        {
          "cardNumber": "10001001-v",
          "quantity": 1,
          "advertisementId": "discount-001-code",
          "advertisementCode": "discount-001",
          "advertisementName": "discount-second-good-50rub",
          "actionDiscountType": "discount-type-01",
          "value": 0.18,
          "additionalInfo": "{'comment':'Discount for first position'}"
        }
      ]
    }
  ],
  "client": {
    "guid": "0001",
    "cardNumber": "10001001-v",
    "firstName": "Иван",
    "lastName": "Иванов",
    "middleName": "Иванов",
    "email": "ivanov@e1.com",
    "phone": "8-800-999-99-99",
    "accumulation": 2100000,
    "bonusBalance": 50000,
    "clientNotificationType": "BY_EMAIL",
    "juristicDetails": {
      "inn": "100000000012",
      "organizationName": "Организация"
    }
  },
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  },
  "payments": [
    {
      "typeId": "ExternalBankTerminalPaymentEntity",
      "bankId": "Фулфилмент",
      "amount": 10.2,
      "properties": [
        {
          "key": "card.number",
          "value": 1234
        },
        {
          "key": "auth.code",
          "value": 5678
        },
        {
          "key": "purchase.number",
          "value": 9012345
        }
      ]
    }
  ],
  "extendedAttributes": [
    {
      "key": "client.guid",
      "value": "1234"
    },
    {
      "key": "ext.code",
      "value": 5678
    }
  ],
  "productsValidation": {
    "type": "PARTIAL",
    "count": 5,
    "considerProductQuantity": false,
    "quantityEnterAllowed": false
  },
  "communicationMessages": [
    {
      "header": "Заголовок тестового сообщения",
      "body": "Тестовое сообщение кассиру",
      "footer": "Это сообщение кассиру"
    }
  ]
}
Response Example (404 Not Found)
{
  "code": 1010,
  "message": "Мягкий чек не найден."
}

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

GET /softcheques/{guid}, /softcheques/{guid}/shop/{shop}

Возвращает чек с указанным guid

guid: string
in path

guid мягкого чека

shop: int
in path

номер магазина

200 OK

Чек найден

404 Not Found

Чек не найден

Response Content-Types: application/json
Response Example (200 OK)
{
  "guid": 1,
  "name": "Order",
  "status": "READY_TO_PAYMENT",
  "dateCreated": "2018-12-31 10:52",
  "kitNumber": "kit_0001",
  "isEditable": true,
  "receiptEditable": true,
  "positionsAddingAllowed": true,
  "positionsDeletingAllowed": true,
  "operationType": 1,
  "totalPrice": 46.32,
  "discountsValue": 0.18,
  "additionalInfo": "additional information",
  "location": "location",
  "verificationCode": "5738",
  "positions": [
    {
      "positionOrder": 1,
      "code": "500-1",
      "departNumber": 1,
      "barcode": "5000001",
      "quantity": 4.5,
      "unitPrice": 10.29,
      "vat": -20,
      "vatValue": 20,
      "discountValue": 0.18,
      "totalPrice": 46.32,
      "isFixedPrice": false,
      "isFixedDiscounts": false,
      "additionalInfo": "{'comment':'Good client'}",
      "positionDiscounts": [
        {
          "cardNumber": "10001001-v",
          "quantity": 1,
          "advertisementId": "discount-001-code",
          "advertisementCode": "discount-001",
          "advertisementName": "discount-second-good-50rub",
          "actionDiscountType": "discount-type-01",
          "value": 0.18,
          "additionalInfo": "{'comment':'Discount for first position'}"
        }
      ]
    }
  ],
  "client": {
    "guid": "0001",
    "cardNumber": "10001001-v",
    "firstName": "Иван",
    "lastName": "Иванов",
    "middleName": "Иванов",
    "email": "ivanov@e1.com",
    "phone": "8-800-999-99-99",
    "accumulation": 2100000,
    "bonusBalance": 50000,
    "clientNotificationType": "BY_EMAIL",
    "juristicDetails": {
      "inn": "100000000012",
      "organizationName": "Организация"
    }
  },
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  },
  "payments": [
    {
      "typeId": "ExternalBankTerminalPaymentEntity",
      "bankId": "Фулфилмент",
      "amount": 10.2,
      "properties": [
        {
          "key": "card.number",
          "value": 1234
        },
        {
          "key": "auth.code",
          "value": 5678
        },
        {
          "key": "purchase.number",
          "value": 9012345
        }
      ]
    }
  ],
  "extendedAttributes": [
    {
      "key": "client.guid",
      "value": "1234"
    },
    {
      "key": "ext.code",
      "value": 5678
    }
  ],
  "productsValidation": {
    "type": "PARTIAL",
    "count": 5,
    "considerProductQuantity": false,
    "quantityEnterAllowed": false
  },
  "communicationMessages": [
    {
      "header": "Заголовок тестового сообщения",
      "body": "Тестовое сообщение кассиру",
      "footer": "Это сообщение кассиру"
    }
  ]
}
Response Example (404 Not Found)
{
  "code": 1010,
  "message": "Мягкий чек не найден."
}

Обновить чек

PUT /softcheques/{guid}, /softcheques/{guid}/shop/{shop}

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

Мягкий чек

guid: string
in path

guid мягкого чека

shop: int
in path

номер магазина

Request Content-Types: application/json
Request Example
{
  "guid": 1,
  "name": "Order",
  "status": "READY_TO_PAYMENT",
  "dateCreated": "2018-12-31 10:52",
  "kitNumber": "kit_0001",
  "isEditable": true,
  "receiptEditable": true,
  "positionsAddingAllowed": true,
  "positionsDeletingAllowed": true,
  "operationType": 1,
  "totalPrice": 46.32,
  "discountsValue": 0.18,
  "additionalInfo": "additional information",
  "location": "location",
  "verificationCode": "5738",
  "positions": [
    {
      "positionOrder": 1,
      "code": "500-1",
      "departNumber": 1,
      "barcode": "5000001",
      "quantity": 4.5,
      "unitPrice": 10.29,
      "vat": -20,
      "vatValue": 20,
      "discountValue": 0.18,
      "totalPrice": 46.32,
      "isFixedPrice": false,
      "isFixedDiscounts": false,
      "additionalInfo": "{'comment':'Good client'}",
      "positionDiscounts": [
        {
          "cardNumber": "10001001-v",
          "quantity": 1,
          "advertisementId": "discount-001-code",
          "advertisementCode": "discount-001",
          "advertisementName": "discount-second-good-50rub",
          "actionDiscountType": "discount-type-01",
          "value": 0.18,
          "additionalInfo": "{'comment':'Discount for first position'}"
        }
      ]
    }
  ],
  "client": {
    "guid": "0001",
    "cardNumber": "10001001-v",
    "firstName": "Иван",
    "lastName": "Иванов",
    "middleName": "Иванов",
    "email": "ivanov@e1.com",
    "phone": "8-800-999-99-99",
    "accumulation": 2100000,
    "bonusBalance": 50000,
    "clientNotificationType": "BY_EMAIL",
    "juristicDetails": {
      "inn": "100000000012",
      "organizationName": "Организация"
    }
  },
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  },
  "payments": [
    {
      "typeId": "ExternalBankTerminalPaymentEntity",
      "bankId": "Фулфилмент",
      "amount": 10.2,
      "properties": [
        {
          "key": "card.number",
          "value": 1234
        },
        {
          "key": "auth.code",
          "value": 5678
        },
        {
          "key": "purchase.number",
          "value": 9012345
        }
      ]
    }
  ],
  "extendedAttributes": [
    {
      "key": "client.guid",
      "value": "1234"
    },
    {
      "key": "ext.code",
      "value": 5678
    }
  ],
  "productsValidation": {
    "type": "PARTIAL",
    "count": 5,
    "considerProductQuantity": false,
    "quantityEnterAllowed": false
  },
  "communicationMessages": [
    {
      "header": "Заголовок тестового сообщения",
      "body": "Тестовое сообщение кассиру",
      "footer": "Это сообщение кассиру"
    }
  ]
}
200 OK

Чек успешно сохранён

400 Bad Request

Невалидный запрос (см. также MissingPropertiesError)

Response Content-Types: application/json
Response Example (200 OK)
{
  "guid": 1,
  "name": "Order",
  "status": "READY_TO_PAYMENT",
  "dateCreated": "2018-12-31 10:52",
  "kitNumber": "kit_0001",
  "isEditable": true,
  "receiptEditable": true,
  "positionsAddingAllowed": true,
  "positionsDeletingAllowed": true,
  "operationType": 1,
  "totalPrice": 46.32,
  "discountsValue": 0.18,
  "additionalInfo": "additional information",
  "location": "location",
  "verificationCode": "5738",
  "positions": [
    {
      "positionOrder": 1,
      "code": "500-1",
      "departNumber": 1,
      "barcode": "5000001",
      "quantity": 4.5,
      "unitPrice": 10.29,
      "vat": -20,
      "vatValue": 20,
      "discountValue": 0.18,
      "totalPrice": 46.32,
      "isFixedPrice": false,
      "isFixedDiscounts": false,
      "additionalInfo": "{'comment':'Good client'}",
      "positionDiscounts": [
        {
          "cardNumber": "10001001-v",
          "quantity": 1,
          "advertisementId": "discount-001-code",
          "advertisementCode": "discount-001",
          "advertisementName": "discount-second-good-50rub",
          "actionDiscountType": "discount-type-01",
          "value": 0.18,
          "additionalInfo": "{'comment':'Discount for first position'}"
        }
      ]
    }
  ],
  "client": {
    "guid": "0001",
    "cardNumber": "10001001-v",
    "firstName": "Иван",
    "lastName": "Иванов",
    "middleName": "Иванов",
    "email": "ivanov@e1.com",
    "phone": "8-800-999-99-99",
    "accumulation": 2100000,
    "bonusBalance": 50000,
    "clientNotificationType": "BY_EMAIL",
    "juristicDetails": {
      "inn": "100000000012",
      "organizationName": "Организация"
    }
  },
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  },
  "payments": [
    {
      "typeId": "ExternalBankTerminalPaymentEntity",
      "bankId": "Фулфилмент",
      "amount": 10.2,
      "properties": [
        {
          "key": "card.number",
          "value": 1234
        },
        {
          "key": "auth.code",
          "value": 5678
        },
        {
          "key": "purchase.number",
          "value": 9012345
        }
      ]
    }
  ],
  "extendedAttributes": [
    {
      "key": "client.guid",
      "value": "1234"
    },
    {
      "key": "ext.code",
      "value": 5678
    }
  ],
  "productsValidation": {
    "type": "PARTIAL",
    "count": 5,
    "considerProductQuantity": false,
    "quantityEnterAllowed": false
  },
  "communicationMessages": [
    {
      "header": "Заголовок тестового сообщения",
      "body": "Тестовое сообщение кассиру",
      "footer": "Это сообщение кассиру"
    }
  ]
}
Response Example (400 Bad Request)
{
  "code": 1040,
  "message": "Не корректно сформирован json запрос."
}

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

DELETE /softcheques/{guid}, /softcheques/{guid}/shop/{shop}

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

guid: string
in path

guid мягкого чека

shop: int
in path

номер магазина

200 OK

Чек успешно сохранён

404 Not Found

Невалидные данные

Response Content-Types: application/json
Response Example (404 Not Found)
{
  "code": 1010,
  "message": "Мягкий чек не найден."
}

Обновить частично мягкий чек

PATCH /softcheques/{guid}, /softcheques/{guid}/shop/{shop}

Обновление МЧ(в данной версии выполняет только обновление статуса МЧ и информации о слипе).

Мягкий чек

guid: string
in path

guid мягкого чека

shop: int
in path

номер магазина

Request Content-Types: application/json
Request Example
{
  "status": "READY_TO_PAYMENT",
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  }
}
200 OK

Чек успешно обновлен

404 Not Found

Мягкий чек не найден. (см. также NotFound)

Response Content-Types: application/json
Response Example (200 OK)
{
  "guid": 1,
  "name": "Order",
  "status": "READY_TO_PAYMENT",
  "dateCreated": "2018-12-31 10:52",
  "kitNumber": "kit_0001",
  "isEditable": true,
  "receiptEditable": true,
  "positionsAddingAllowed": true,
  "positionsDeletingAllowed": true,
  "operationType": 1,
  "totalPrice": 46.32,
  "discountsValue": 0.18,
  "additionalInfo": "additional information",
  "location": "location",
  "verificationCode": "5738",
  "positions": [
    {
      "positionOrder": 1,
      "code": "500-1",
      "departNumber": 1,
      "barcode": "5000001",
      "quantity": 4.5,
      "unitPrice": 10.29,
      "vat": -20,
      "vatValue": 20,
      "discountValue": 0.18,
      "totalPrice": 46.32,
      "isFixedPrice": false,
      "isFixedDiscounts": false,
      "additionalInfo": "{'comment':'Good client'}",
      "positionDiscounts": [
        {
          "cardNumber": "10001001-v",
          "quantity": 1,
          "advertisementId": "discount-001-code",
          "advertisementCode": "discount-001",
          "advertisementName": "discount-second-good-50rub",
          "actionDiscountType": "discount-type-01",
          "value": 0.18,
          "additionalInfo": "{'comment':'Discount for first position'}"
        }
      ]
    }
  ],
  "client": {
    "guid": "0001",
    "cardNumber": "10001001-v",
    "firstName": "Иван",
    "lastName": "Иванов",
    "middleName": "Иванов",
    "email": "ivanov@e1.com",
    "phone": "8-800-999-99-99",
    "accumulation": 2100000,
    "bonusBalance": 50000,
    "clientNotificationType": "BY_EMAIL",
    "juristicDetails": {
      "inn": "100000000012",
      "organizationName": "Организация"
    }
  },
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  },
  "payments": [
    {
      "typeId": "ExternalBankTerminalPaymentEntity",
      "bankId": "Фулфилмент",
      "amount": 10.2,
      "properties": [
        {
          "key": "card.number",
          "value": 1234
        },
        {
          "key": "auth.code",
          "value": 5678
        },
        {
          "key": "purchase.number",
          "value": 9012345
        }
      ]
    }
  ],
  "extendedAttributes": [
    {
      "key": "client.guid",
      "value": "1234"
    },
    {
      "key": "ext.code",
      "value": 5678
    }
  ],
  "productsValidation": {
    "type": "PARTIAL",
    "count": 5,
    "considerProductQuantity": false,
    "quantityEnterAllowed": false
  },
  "communicationMessages": [
    {
      "header": "Заголовок тестового сообщения",
      "body": "Тестовое сообщение кассиру",
      "footer": "Это сообщение кассиру"
    }
  ]
}
Response Example (404 Not Found)
{
  "code": 1010,
  "message": "Мягкий чек не найден."
}

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

GET /softcheques?phone={phone}&status={status}&shortView={shortView}&lengthGuidNumber={lengthGuidNumber}&prefixGuid={prefixGuid}&offset={offset}&limit={limit}, /softcheques/shop/{shop}?phone={phone}&status={status}&shortView={shortView}&lengthGuidNumber={lengthGuidNumber}&prefixGuid={prefixGuid}&offset={offset}&limit={limit}, /softcheques/kitNumber/{kitNumber}?phone={phone}&status={status}&shortView={shortView}&lengthGuidNumber={lengthGuidNumber}&prefixGuid={prefixGuid}&offset={offset}&limit={limit}, /softcheques/kitNumber/{kitNumber}/shop/{shop}?phone={phone}&status={status}&shortView={shortView}&lengthGuidNumber={lengthGuidNumber}&prefixGuid={prefixGuid}&offset={offset}&limit={limit}

Возвращает список мягких чеков

shop: int
in path

номер магазина

kitNumber: string
in path

номер комплекта к которому относится мягкий чек

phone: string
in path

телефон клиента, может быть передано несколько через '|'(phone=79991234567|89991234567)

status: string
in path

статус мягкого чека

shortView: boolean
in path

признак, вывести результат в кратком виде

lengthGuidNumber: int
in path

длина номера мягкого чека без учета префикса

prefixGuid: string
in path

префикс номера мягкого чека

offset: int
in path

смещение выборки

limit: int
in path

кол-во мягких чеков в результате(по умолчанию 100)

200 OK

Список мягких чеков соответствующих набору параметров

200 - вкл. режим shortView

Список мягких чеков соответствующих набору параметров

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "guid": 1,
    "name": "Order",
    "status": "READY_TO_PAYMENT",
    "dateCreated": "2018-12-31 10:52",
    "kitNumber": "kit_0001",
    "isEditable": true,
    "receiptEditable": true,
    "positionsAddingAllowed": true,
    "positionsDeletingAllowed": true,
    "operationType": 1,
    "totalPrice": 46.32,
    "discountsValue": 0.18,
    "additionalInfo": "additional information",
    "location": "location",
    "verificationCode": "5738",
    "positions": [
      {
        "positionOrder": 1,
        "code": "500-1",
        "departNumber": 1,
        "barcode": "5000001",
        "quantity": 4.5,
        "unitPrice": 10.29,
        "vat": -20,
        "vatValue": 20,
        "discountValue": 0.18,
        "totalPrice": 46.32,
        "isFixedPrice": false,
        "isFixedDiscounts": false,
        "additionalInfo": "{'comment':'Good client'}",
        "positionDiscounts": [
          {
            "cardNumber": "10001001-v",
            "quantity": 1,
            "advertisementId": "discount-001-code",
            "advertisementCode": "discount-001",
            "advertisementName": "discount-second-good-50rub",
            "actionDiscountType": "discount-type-01",
            "value": 0.18,
            "additionalInfo": "{'comment':'Discount for first position'}"
          }
        ]
      }
    ],
    "client": {
      "guid": "0001",
      "cardNumber": "10001001-v",
      "firstName": "Иван",
      "lastName": "Иванов",
      "middleName": "Иванов",
      "email": "ivanov@e1.com",
      "phone": "8-800-999-99-99",
      "accumulation": 2100000,
      "bonusBalance": 50000,
      "clientNotificationType": "BY_EMAIL",
      "juristicDetails": {
        "inn": "100000000012",
        "organizationName": "Организация"
      }
    },
    "slipMessage": {
      "message": "Слип из мягкого чека",
      "intoCheck": false
    },
    "payments": [
      {
        "typeId": "ExternalBankTerminalPaymentEntity",
        "bankId": "Фулфилмент",
        "amount": 10.2,
        "properties": [
          {
            "key": "card.number",
            "value": 1234
          },
          {
            "key": "auth.code",
            "value": 5678
          },
          {
            "key": "purchase.number",
            "value": 9012345
          }
        ]
      }
    ],
    "extendedAttributes": [
      {
        "key": "client.guid",
        "value": "1234"
      },
      {
        "key": "ext.code",
        "value": 5678
      }
    ],
    "productsValidation": {
      "type": "PARTIAL",
      "count": 5,
      "considerProductQuantity": false,
      "quantityEnterAllowed": false
    },
    "communicationMessages": [
      {
        "header": "Заголовок тестового сообщения",
        "body": "Тестовое сообщение кассиру",
        "footer": "Это сообщение кассиру"
      }
    ]
  }
]
Response Example (200 - вкл. режим shortView )
[
  {
    "guid": 123,
    "dateCreated": "2017-12-20 16:58",
    "totalPrice": 1100,
    "kitNumber": "kit_0001"
  }
]

Сервис

Сервисные методы

Статистика о количестве чеков в разрезе статусов для указанного номера магазина.

GET /softcheques/shop/{shop}/status-info

Возвращает список статусов чека и количества чеков в этом статусе для указанного магазина. Включена ли агрегация статистики определяется настройками SetKit.

shop: int
in path

Номер магазина.

Список структур, описывающих статус чека и количество чеков в этом статусе.

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "status": "CREATED",
    "count": 10,
    "lastUpdate": "2024-09-03 11:52"
  }
]

Получить настройки и узнать состояние лицензии сервиса

GET /info
200 OK

Список параметров и состояние лицензии

Response Content-Types: application/json
Response Example (200 OK)
{
  "version": "2.0.0",
  "licenses": {
    "name": "SetKit",
    "count": 1,
    "licenseStatus": "OK",
    "licenseAgentStatus": "OK"
  },
  "properties": {
    "some.property": "some.value"
  }
}

Сбросить список магазинов, обслуживаемых по лицензии типа oneshop

GET /shops/reset
200 OK

Список успешно сброшен

Schema Definitions

SoftCheque: object

Мягкий чек / заказ.

guid: string

Уникальный идентификатор чека. При создании заказа не обязателен!

name: string

Наименование мягкого чека/заказа

status: string CREATED, READY_TO_PAYMENT, PAYMENT, COMPLETED, CANCELED

Статус мягкого чека. CREATED - Черновик, READY_TO_PAYMENT - Готов, PAYMENT - На кассе, COMPLETED - Оплачен, CANCELED - Отменён.

dateCreated: timestamp

Дата создания чека

shopNumber: integer (int32)

Номер магазина

isEditable: boolean

Управление запретом редактирования позиций (добавление новых/удаление переданных разрешено)

totalPrice: decimal

Конечная стоимость чека в рублях

discountsValue: decimal

Сумма все скидок в рублях (не учитывается кассой)

additionalInfo: object

Любая дополнительная информация

location: object

Место расчетов

positions: array

Список позиций, которые фигурируют в чеке

client: client

Информация о клиенте

slipMessage: slipMessage

Информация о слипе

operationType: integer (int32)

Признак расчета

prePayment: decimal

Сумма по чеку предоплатой (авансом)

receiptEditable: boolean

Управление полным запретом редактирования чека (добавление и удаление позиций, редактирование количеств)

destChequeGuid: string

GUID фактического МЧ (заполняется кассой при коммите данного МЧ)

payments: array

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

extendedAttributes: array

Расширенные атрибуты чека.

positionsAddingAllowed: boolean

Управление запретом добавления новых позиций (удаление и редактирование количества разрешено)

positionsDeletingAllowed: boolean

Управление запретом удаления позиций из мягкого чека (добавление, редактирование количества и удаление добавленных разрешено)

kitNumber: string

Номер комплекта к которому относится мягкий чек

productsValidation: productsValidation

Управление проверкой товаров при поднятии мягкого чека на кассе

verificationCode: string

Код верификации для выдачи заказа

communicationMessages: array

Список сообщений кассиру, которые будут отображены при поднятии мягкого чека на кассе

Example
{
  "guid": 1,
  "name": "Order",
  "status": "READY_TO_PAYMENT",
  "dateCreated": "2018-12-31 10:52",
  "kitNumber": "kit_0001",
  "isEditable": true,
  "receiptEditable": true,
  "positionsAddingAllowed": true,
  "positionsDeletingAllowed": true,
  "operationType": 1,
  "totalPrice": 46.32,
  "discountsValue": 0.18,
  "additionalInfo": "additional information",
  "location": "location",
  "verificationCode": "5738",
  "positions": [
    {
      "positionOrder": 1,
      "code": "500-1",
      "departNumber": 1,
      "barcode": "5000001",
      "quantity": 4.5,
      "unitPrice": 10.29,
      "vat": -20,
      "vatValue": 20,
      "discountValue": 0.18,
      "totalPrice": 46.32,
      "isFixedPrice": false,
      "isFixedDiscounts": false,
      "additionalInfo": "{'comment':'Good client'}",
      "positionDiscounts": [
        {
          "cardNumber": "10001001-v",
          "quantity": 1,
          "advertisementId": "discount-001-code",
          "advertisementCode": "discount-001",
          "advertisementName": "discount-second-good-50rub",
          "actionDiscountType": "discount-type-01",
          "value": 0.18,
          "additionalInfo": "{'comment':'Discount for first position'}"
        }
      ]
    }
  ],
  "client": {
    "guid": "0001",
    "cardNumber": "10001001-v",
    "firstName": "Иван",
    "lastName": "Иванов",
    "middleName": "Иванов",
    "email": "ivanov@e1.com",
    "phone": "8-800-999-99-99",
    "accumulation": 2100000,
    "bonusBalance": 50000,
    "clientNotificationType": "BY_EMAIL",
    "juristicDetails": {
      "inn": "100000000012",
      "organizationName": "Организация"
    }
  },
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  },
  "payments": [
    {
      "typeId": "ExternalBankTerminalPaymentEntity",
      "bankId": "Фулфилмент",
      "amount": 10.2,
      "properties": [
        {
          "key": "card.number",
          "value": 1234
        },
        {
          "key": "auth.code",
          "value": 5678
        },
        {
          "key": "purchase.number",
          "value": 9012345
        }
      ]
    }
  ],
  "extendedAttributes": [
    {
      "key": "client.guid",
      "value": "1234"
    },
    {
      "key": "ext.code",
      "value": 5678
    }
  ],
  "productsValidation": {
    "type": "PARTIAL",
    "count": 5,
    "considerProductQuantity": false,
    "quantityEnterAllowed": false
  },
  "communicationMessages": [
    {
      "header": "Заголовок тестового сообщения",
      "body": "Тестовое сообщение кассиру",
      "footer": "Это сообщение кассиру"
    }
  ]
}

SoftChequePart: object

Используется при обновлении МЧ, описывает часть МЧ которая будет обновлена.

status: string CREATED, READY_TO_PAYMENT, PAYMENT, COMPLETED, CANCELED

Статус мягкого чека. CREATED - Черновик, READY_TO_PAYMENT - Готов, PAYMENT - На кассе, COMPLETED - Оплачен, CANCELED - Отменён.

slipMessage: slipMessage

Информация о слипе

Example
{
  "status": "READY_TO_PAYMENT",
  "slipMessage": {
    "message": "Слип из мягкого чека",
    "intoCheck": false
  }
}

SoftChequeShortView: object

Мягкий чек / заказ.

guid: string

Уникальный идентификатор чека

dateCreated: timestamp

Дата создания чека

totalPrice: decimal

Конечная стоимость чека в рублях

kitNumber: string

Номер комплекта к которому относится мягкий чек

Example
{
  "guid": 123,
  "dateCreated": "2017-12-20 16:58",
  "totalPrice": 1100,
  "kitNumber": "kit_0001"
}

SoftCheques: array

Список мягких чеков

SoftCheque
Example
[
  {
    "guid": 1,
    "name": "Order",
    "status": "READY_TO_PAYMENT",
    "dateCreated": "2018-12-31 10:52",
    "kitNumber": "kit_0001",
    "isEditable": true,
    "receiptEditable": true,
    "positionsAddingAllowed": true,
    "positionsDeletingAllowed": true,
    "operationType": 1,
    "totalPrice": 46.32,
    "discountsValue": 0.18,
    "additionalInfo": "additional information",
    "location": "location",
    "verificationCode": "5738",
    "positions": [
      {
        "positionOrder": 1,
        "code": "500-1",
        "departNumber": 1,
        "barcode": "5000001",
        "quantity": 4.5,
        "unitPrice": 10.29,
        "vat": -20,
        "vatValue": 20,
        "discountValue": 0.18,
        "totalPrice": 46.32,
        "isFixedPrice": false,
        "isFixedDiscounts": false,
        "additionalInfo": "{'comment':'Good client'}",
        "positionDiscounts": [
          {
            "cardNumber": "10001001-v",
            "quantity": 1,
            "advertisementId": "discount-001-code",
            "advertisementCode": "discount-001",
            "advertisementName": "discount-second-good-50rub",
            "actionDiscountType": "discount-type-01",
            "value": 0.18,
            "additionalInfo": "{'comment':'Discount for first position'}"
          }
        ]
      }
    ],
    "client": {
      "guid": "0001",
      "cardNumber": "10001001-v",
      "firstName": "Иван",
      "lastName": "Иванов",
      "middleName": "Иванов",
      "email": "ivanov@e1.com",
      "phone": "8-800-999-99-99",
      "accumulation": 2100000,
      "bonusBalance": 50000,
      "clientNotificationType": "BY_EMAIL",
      "juristicDetails": {
        "inn": "100000000012",
        "organizationName": "Организация"
      }
    },
    "slipMessage": {
      "message": "Слип из мягкого чека",
      "intoCheck": false
    },
    "payments": [
      {
        "typeId": "ExternalBankTerminalPaymentEntity",
        "bankId": "Фулфилмент",
        "amount": 10.2,
        "properties": [
          {
            "key": "card.number",
            "value": 1234
          },
          {
            "key": "auth.code",
            "value": 5678
          },
          {
            "key": "purchase.number",
            "value": 9012345
          }
        ]
      }
    ],
    "extendedAttributes": [
      {
        "key": "client.guid",
        "value": "1234"
      },
      {
        "key": "ext.code",
        "value": 5678
      }
    ],
    "productsValidation": {
      "type": "PARTIAL",
      "count": 5,
      "considerProductQuantity": false,
      "quantityEnterAllowed": false
    },
    "communicationMessages": [
      {
        "header": "Заголовок тестового сообщения",
        "body": "Тестовое сообщение кассиру",
        "footer": "Это сообщение кассиру"
      }
    ]
  }
]

SoftChequesShortView: array

Список мягких чеков в кратком виде

SoftChequeShortView
Example
[
  {
    "guid": 123,
    "dateCreated": "2017-12-20 16:58",
    "totalPrice": 1100,
    "kitNumber": "kit_0001"
  }
]

Client: object

Клиент (информация о клиенте).

cardNumber: string

Номер карты клиента

guid: string

Идентификатор клиента в системе (не учитывается кассой)

firstName: string

Имя (не учитывается кассой)

lastName: string

Фамилия (не учитывается кассой)

middleName: string

Отчество (не учитывается кассой)

email: string

Адрес электронной почты

phone: string

Моб. телефон

accumulation: decimal

Общая сумма накоплений (денежные, на основании истории покупок) (не учитывается кассой)

bonusBalance: decimal

Баланс активных бонусов (не учитывается кассой)

clientNotificationType: string BY_EMAIL, BY_PHONE

Способ отправки электронной копии чека покупателю

juristicDetails: juristicDetails

Информация о ЮЛ

Example
{
  "guid": "0001",
  "cardNumber": "10001001-v",
  "firstName": "Иван",
  "lastName": "Иванов",
  "middleName": "Иванов",
  "email": "ivanov@e1.com",
  "phone": "8-800-999-99-99",
  "accumulation": 2100000,
  "bonusBalance": 50000,
  "clientNotificationType": "BY_EMAIL",
  "juristicDetails": {
    "inn": "100000000012",
    "organizationName": "Организация"
  }
}

Position: object

Позиция в чеке

positionOrder: integer (int32)

Порядковый номер позиции в заказе (МЧ) (не учитывается кассой)

code: string

Код (артикул) товара (одно из полей code или barcode должно быть заполнено)

departNumber: integer (int64)

Номер отдела (не учитывается кассой)

barcode: string

Штриховой код товара (одно из полей code или barcode должно быть заполнено)

quantity: decimal

Количество товара в позиции

unitPrice: decimal

Цена за единицу товара в рублях

vat: float

Ставка НДС (в процентах)

vatValue: decimal

Сумма НДС в рублях (не учитывается кассой)

discountValue: decimal

Сумма скидок на позицию в рублях (не учитывается кассой)

totalPrice: decimal

Стоимость позиции с учётом скидок в рублях (не учитывается кассой)

isFixedPrice: boolean

Запрет изменения цены позиции лояльностью

isFixedDiscounts: boolean

Запрет участия в любой лояльности

additionalInfo: string

Дополнительная информация. Строка, содержащая произвольный набор атрибутов.

positionDiscounts: array

Подробная информация о сработавших cкидках на позицию

ccdDeclaration: string

Номер Грузовой Таможенной Декларации (ГТД) товара. Формат: XXXXXXXX/XXXXXX/XXXXXXX, где X - цифра.

countryOfOriginCode: string

Код страны происхождения товара. Код должен задаваться согласно Общероссийскому Классификатору Стран Мира (ОКСМ). Например, код России согласно ОКСМ это 643.

calculationMethod: integer (int32)

Признак способа расчета

calculationSubject: integer (int32)

Признак предмета расчета

mark: string

Марка (для маркированного товара)

marks: array

Марки (для маркированного товара)

sourceChequeGuid: string

GUID исходного мягкого чека (заполняется кассой при формировании фактического МЧ)

returnRestricted: boolean

Признак запрета возврата позиции

storage: string

Склад отгрузки товара

sellerCode: string

Код продавца

name: string

Наименование товара

productionDate: string

Дата производства

extendedAttributes: array

Расширенные атрибуты позиции.

canChangePrice: boolean

Признак разрешения ручного изменения стоимости позиции (коррекция стоимости)

byFfdUkz: string

УКЗ (унифицированный контрольный знак, используется в РБ)

Example
{
  "code": "500-1",
  "departNumber": 1,
  "barcode": "5000001",
  "quantity": 4.5,
  "unitPrice": 10.29,
  "vat": 10,
  "vatValue": 20,
  "discountValue": 0.18,
  "totalPrice": 46.32,
  "isFixedPrice": false,
  "isFixedDiscounts": false,
  "positionDiscounts": [
    {
      "cardNumber": "10001001-v",
      "quantity": 1,
      "advertisementId": "discount-001-code",
      "advertisementCode": "discount-001",
      "advertisementName": "discount-second-good-50rub",
      "actionDiscountType": "discount-type-01",
      "value": 0.18,
      "additionalInfo": "{'comment':'Discount for first position'}"
    }
  ],
  "ccdDeclaration": "12345678/123456/1234567",
  "countryOfOriginCode": "643",
  "calculationMethod": 4,
  "calculationSubject": 1,
  "mark": "01056000921lмVzф1",
  "marks": [
    "01056000921lмVzф2",
    "01056000921lмVzф3"
  ],
  "returnRestricted": false,
  "storage": "К00000002",
  "sellerCode": "00007",
  "name": "Товар из МЧ",
  "productionDate": "2021-09-30",
  "extendedAttributes": [
    {
      "key": "counterparty.vat",
      "value": "20.0"
    },
    {
      "key": "ext.code",
      "value": 5679
    }
  ],
  "canChangePrice": true,
  "byFfdUkz": "CAA111222334"
}

Discount: object

Скидка на позицию

cardNumber: string

Номер дисконтной карты

positionOrder: integer (int64)

Порядковый номер позиции на которую предоставлена скидка (не учитывается кассой)

code: string

Код скидки (не учитывается кассой)

quantity: decimal

Количество товара, на которое далась скидки

advertisementId: string

Идентификатор скидки в системе лояльности

advertisementCode: string

Внешний код скидки (external code)

advertisementName: string

Наименование скидки в системе лояльности

actionDiscountType: string

Тип скидки в системе лояльности (аналогичный импортируемому в РА SET10)

value: decimal

Значение скидки в рублях

additionalInfo: object

Дополнительная информация. Строка, содержащая произвольный набор атрибутов.

Example
{
  "cardNumber": "10001001-v",
  "positionOrder": 1,
  "code": 1,
  "quantity": 1.01,
  "advertisementId": "discount-001-code",
  "advertisementCode": "discount-001",
  "advertisementName": "discount-second-good-50rub",
  "actionDiscountType": "discount-type-01",
  "value": 25000,
  "additionalInfo": "Скидка на 500-1 товар"
}

SlipMessage: object

Информация о слипе.

message: string

Сообщение в слипе

intoCheck: boolean

Признак печати в чеке

Example
{
  "message": "Слип из мягкого чека",
  "intoCheck": false
}

AppInfo: object

Информация по сервису.

version: string

Версия сервиса

license: object

Информация по лицензии

properties: object

Набор настроек сервиса

Example
{
  "version": "2.0.0",
  "licenses": {
    "name": "SetKit",
    "count": 1,
    "licenseStatus": "OK",
    "licenseAgentStatus": "OK"
  },
  "properties": {
    "some.property": "some.value"
  }
}

JuristicDetails: object

Информация о ЮЛ.

inn: string

ИНН

organizationName: string

Название организации

Example
{
  "inn": "100000000012",
  "organizationName": "Организация"
}

Payment: object

Оплата

typeId: string

Идентификатор типа оплаты. В случае плагинной оплаты - это id соответствующего плагина, внешний банковский терминал - ExternalBankTerminalPaymentEntity, предоплата - PrepaymentEntity. Автоматическое внесение поддерживается для предоплаты и оплаты внешним банковским терминалом. Для остальных типов - оплата будет лишь выбрана, но не внесена.

bankId: string

Идентификатор банка. По сути это название банка из Set10 (Кассовый модуль - Банки).

amount: decimal

Сумма оплаты (если не задана, необходим ввод суммы кассиром)

properties: array

Дополнительные свойства оплаты

Example
{
  "typeId": "ExternalBankTerminalPaymentEntity",
  "bankId": "Фулфилмент",
  "amount": 10.2,
  "properties": [
    {
      "key": "card.number",
      "value": 1234
    },
    {
      "key": "auth.code",
      "value": 5678
    },
    {
      "key": "purchase.number",
      "value": 9012345
    }
  ]
}

Property: object

Дополнительное (расширенное) свойство / атрибут

key: string

Ключ (наименование свойства/атрибута)

value: string

Значение

Example
{
  "key": "card.number",
  "value": 1234
}

ProductsValidation: object

Управление проверкой товаров при поднятии мягкого чека на кассе

type: string FULL, PARTIAL

Способ проверки товаров в заказе:

  • FULL - Проверка всех товаров
  • PARTIAL - Выборочная проверка товаров
count: integer (int32)

Количество товаров для выборочной проверки

considerProductQuantity: boolean

Учитывать количество добавляемого товара в режиме полной проверки. Действие признака распространяется на весовые и штучно-весовые товары без маркировки. Учет добавляемого товара будет производиться по суммарному количеству, переданному в заказе. Если передано несколько позиций с одинаковым артикулом, то такие позиции схлопываются. Например, в заказе передана весовая позиция "Сыр" в количестве 800 грамм, при сканировании нескольких кусочков сыра весом 300, 260 и 240 грамм их вес будет последовательно вычитаться из общего веса позиции и после добавления последнего кусочка проверка товара будет пройдена.

quantityEnterAllowed: boolean

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

Example
{
  "type": "PARTIAL",
  "count": 5,
  "considerProductQuantity": false,
  "quantityEnterAllowed": false
}

CommunicationMessage: object

Сообщение для отображения кассиру

header: string

Верхний колонтитул сообщения (заголовок)

body: string

Сообщение

footer: string

Нижний колонтитул сообщения (подвал)

Example
{
  "header": "Заголовок тестового сообщения",
  "message": "Тестовое сообщение кассиру",
  "footer": "Это сообщение кассиру"
}

ValidationError: object

code: integer (int32)
message: string
Example
{
  "code": 1040,
  "message": "Не корректно сформирован json запрос."
}

MissingPropertiesError: object

code: integer (int32)
message: string
error: array
Example
{
  "code": 1041,
  "message": "Отсутствуют параметры в запросе",
  "error": [
    "isEditable: Поле должно быть определено."
  ]
}

NotFound: object

Чек не найден

code: integer (int32)
message: string
Example
{
  "code": 1010,
  "message": "Мягкий чек не найден."
}

AlreadyOnCash: object

Ответ в случае, если уже на кассе

code: integer (int32)
message: string
Example
{
  "code": 1011,
  "message": "Мягкий чек оплачивается на кассе."
}

AlreadyPaid: object

Ответ в случае, если уже оплачен

code: integer (int32)
message: string
Example
{
  "code": 1012,
  "message": "Мягкий чек оплачен."
}

AlreadyRemoved: object

Ответ в случае, если уже удалён

code: integer (int32)
message: string
Example
{
  "code": 1013,
  "message": "Мягкий чек удалён."
}

AnotherShop: object

Ответ в случае, если прикреплен к другому магазину

code: integer (int32)
message: string
Example
{
  "code": 1014,
  "message": "Мягкий чек прикреплен к другому магазину."
}

LicenseExpired: object

Ответ в случае, если лицензия истекла

code: integer (int32)
message: string
Example
{
  "code": 1050,
  "message": "Лицензия истекла."
}

LicenseOfflineModeExpired: object

Ответ в случае, если период работы в оффлайн режиме истек

code: integer (int32)
message: string
Example
{
  "code": 1051,
  "message": "Работа в оффлайн режиме с агентом лицензирования истекла."
}

LicenseNotFound: object

Ответ в случае, если лицензия не найдена

code: integer (int32)
message: string
Example
{
  "code": 1052,
  "message": "Отсутствует лицензия на подключение."
}

LicenseUnsuitable: object

Ответ в случае, если полученных лицензий недостаточно для обработки запроса с данного магазина (тип лицензии 'oneshop')

code: integer (int32)
message: string
Example
{
  "code": 1053,
  "message": "Сервис мягких чеков не обслуживает данный магазин. Обратитесь в службу поддержки для получения лицензии."
}

SoftCheckStatusesStatistics: object

Структура, содержащая информацию о как много магазин имеет чеков в указанном статусе

status: string CREATED, READY_TO_PAYMENT, PAYMENT, COMPLETED, CANCELED

Статус мягкого чека. CREATED - Черновик, READY_TO_PAYMENT - Готов, PAYMENT - На кассе, COMPLETED - Оплачен, CANCELED - Отменён.

count: integer (int64)

Количество чеков в указанном статусе.

lastUpdate: timestamp

Дата и время последнего обновления статуса.

Example
{
  "status": "CREATED",
  "count": 10,
  "lastUpdate": "2024-09-03 11:52"
}

SoftCheckStatusesStatisticsList: array

Список с постатусным количеством чеков в магазине.

SoftCheckStatusesStatistics
Example
[
  {
    "status": "CREATED",
    "count": 10,
    "lastUpdate": "2024-09-03 11:52"
  }
]