Содержание
HTTP сервис для расчета скидок ТП 7
В HTTP сервис KKMTransfer добавлена ф-я DiscountCalculation.
Настройка
В ТП 7 требуется:
- Создать и настроить элемент справочника ККМ.
- Создать и настроить элемент справочника «Настройки расчета скидок».
- Создать запись в регистре сведений «Настройки расчета скидок для ККМ», в которой указать ККМ из п.1 и настройку из п.2.
- Опубликовать на веб-сервисе HTTP сервис KKMTransfer.
Метод DiscountCalculation
Для получения рассчитанных скидок нужно отправить POST запрос на адрес «{веб-адрес ТП 7}/hs/KKMTransfer/DiscountCalculation»,
где {веб-адрес ТП 7} - адрес опубликованной базы ТП 7, например, http://localhost:8080/TP7_dev.
В теле запроса нужно передать информацию о чеке, для которого нужно получить рассчитанные скидки.
Авторизация Basic Base64(login:password).
Входные параметры
Тело POST запроса строка JSON:
- kkm - код ккм
- card - код дисконтной карты
- items - массив позиций чека
- id - индекс позиции
- type - 0 - продажа, 2 - сторно (игнорируются)
- code - код номенклатуры
- attr - код разреза характеристики
- pack - штрихкод единицы (для базовой не заполняется)
- q - количество товара в позиции в единицах (для одной упаковки с коэффициентом 10 нужно передать 1)
- price - цена позиции (единицы)
- payments - необязательное поле - массив видов оплаты, используется только для активизации скидки по виду оплаты
- code - код вида оплаты в справочнике
- value - сумма вида оплаты
Пример
{
"kkm": 1,
"card": "123456",
"items": [
{
"id": 0,
"type": 0,
"code": 1,
"attr": "",
"pack": "",
"q": 2,
"price": 50
},
{
"id": 1,
"type": 0,
"code": 4,
"attr": "1",
"pack": "",
"q": 2,
"price": 15.3
}
],
"payments": [
{"code": 1, "value": 1000.00}
]
}
Выходные параметры
В ответ ф-я DiscountCalculation возвращает строку в формате JSON.
Выходные параметры строка JSON:
- result - «ok» - запрос успешно обработан, «error» - произошла ошибка
- msg - текст ошибки, в случае неуспешного запроса
- data - в случае успешного запроса содержит ниже перечисленные атрибуты
- sum_wd - сумма без скидки
- sum_total - итог чека
- discount_sum_total - общая сумма скидки (скидки на чек + скидки позиций)
- discount_sum - сумма скидок на только на чек
- discount_sum_round - сумма скидки округления итога (не учитывается в других скидках)
- active_schemes - массив активные схем скидок на чек
- code - код схемы скидки
- name - наименовании схемы скидок
- discount_sum - сумма скидок по схеме скидок
- bonus_sum - сумма начисленных бонусов
- details - массив активных скидок в схеме
- code - код скидки
- name - наименование скидки
- discount_type - Вид скидки (1-процентная, 2-суммовая)
- discount_value - значение скидки
- discount_sum - сумма скидки
- bonus_type - Вид бонуса (1-процентный, 2-суммовой)
- bonus_value - значение бонуса
- bonus_sum - сумма начисленного бонуса
- spec_price_code - код доп. цены акции
- text - текст скидки для чека
- items - массив описания скидок позиций
- id - индекс позиции
- discount_sum - сумма скидок на позицию
- bonus_sum - сумма начисленных бонусов на позицию
- spec_price_code - код доп. цены (может определяться как скидкой на чек, так и скидкой на позицию)
- spec_price_value - код доп. цены
- active_schemes - массив активных скидок на позицию (описание элементов массива совпадает с описанием active_schemes на чек)
- bonus_sum - общая сумма начисляемых бонусов на дисконтную карту при закрытии чека
- card - null, если номер ДК не был передан или если карта не была найдена, иначе содержит атрибуты:
- Код - номер карты
- Наименование - наименование карты
- ТекстДляЧека - текст для чека
- НеВестиНакопление - если true - накопление не начисляется
- ДеньРождения - день рождения владельца карты
- Накопление - сумма накопления
- КоличествоЧеков - количество чеков по карте
- СуммаБонуса - сумма бонусов на карте
- Группы - массив кодов групп дисконтных карт
- НомерТелефона - номер телефона владельца карты
- АдресЭлектроннойПочты - адрес эл. почты владельца карты
- card_error - пустая строка, если не был передан номер карты или если карта была найдена, иначе описание ошибки поиска карты.
Пример успешного запроса
{
"data": {
"sum_wd": 130.6,
"sum_total": 81,
"discount_sum": 0,
"discount_sum_total": 50,
"discount_sum_round": -0.4,
"active_schemes": [
{
"code": 2,
"name": "Акция на чек",
"discount_sum": 0,
"bonus_sum": 7,
"ban": false,
"details": [
{
"code": 2,
"discount_type": 1,
"discount_value": 0,
"discount_sum": 0,
"bonus_type": 1,
"bonus_value": 5,
"bonus_sum": 7,
"spec_price_code": 0,
"text": "5% бонус на карту",
"name": "Начисление бонусов",
"ban": false
}
]
}
],
"items": [
{
"id": 0,
"discount_sum": 50,
"bonus_sum": 0,
"spec_price_code": 0,
"spec_price_value": 0,
"active_schemes": [
{
"code": 1,
"name": "Акция на позиции",
"discount_sum": 50,
"bonus_sum": 0,
"ban": false,
"details": [
{
"code": 1,
"discount_type": 1,
"discount_value": 100,
"discount_sum": 50,
"bonus_type": 0,
"bonus_value": 0,
"bonus_sum": 0,
"spec_price_code": 0,
"text": "Акция 1+1=1",
"name": "Товарная скидка 2 по цене 1",
"ban": false
}
]
}
]
},
{
"id": 1,
"discount_sum": 0,
"bonus_sum": 0,
"spec_price_code": 0,
"spec_price_value": 0,
"active_schemes": []
}
],
"bonus_sum": 7,
"card": {
"Код": "123456",
"Наименование": "123456",
"ТекстДляЧека": "Текст чека ДК",
"НеВестиНакопление": false,
"ДеньРождения": "2021-03-19T00:00:00",
"Накопление": 0,
"КоличествоЧеков": 0,
"СуммаБонуса": 0,
"НомерТелефона": "",
"АдресЭлектроннойПочты": "dsa@das.com",
"Группы": [1]
},
"card_error": ""
},
"result": "ok"
}
Пример неуспешного запроса
{
"result": "error",
"msg": "ККМ не найден"
}
Метод PriceChecker
Для получения информации о товаре и/или дисконтной карте нужно отправить POST запрос на адрес «{веб-адрес ТП 7}/hs/KKMTransfer/PriceChecker»,
где {веб-адрес ТП 7} - адрес опубликованной базы ТП 7, например, http://localhost:8080/TP7_dev.
В теле запроса нужно передать штрихкод и/или номер дисконтной карты.
Авторизация Basic Base64(login:password).
Входные параметры
Тело POST запроса строка JSON:
- kkm - код ккм
- barcode - штрихкод товара или код маркировки
- card - код дисконтной карты
Пример
{
"kkm": 1,
"barcode": "12345678",
"card": "123"
}
Выходные параметры
В ответ ф-я PriceChecker возвращает код ответа 200 и в теле ответа строку в формате JSON.
Выходные параметры строка JSON:
- result - «ok» - запрос успешно обработан, «error» - произошла ошибка
- msg - текст ошибки, в случае неуспешного запроса
- good - null, если barcode не был передан, иначе структуру:
- code - код номенклатуры
- barcode - штрихкод товара или единицы (может отличаться от входного параметра)
- name - наименование номенклатуры или единицы
- art - артикул
- price - розничная цена
- spec_price - акционная цена, 0 - не действует акционная цена
- price_d - цена со скидкой
- discount_sum - сумма скидки (розничная цена минус акционная цена (если действует) минус скидки)
- measure_unit - единица измерения
- country - страна производителя
- description - описание товара
- image - картинка в base64 или null при отсутствии
- image_ext - расширение файла картинки или null при отсутствии картинки
- card - null, если номер ДК не был передан или если карта не была найдена, иначе содержит атрибуты:
- Код - номер карты
- Наименование - наименование карты
- ТекстДляЧека - текст для чека
- НеВестиНакопление - если true - накопление не начисляется
- ДеньРождения - день рождения владельца карты
- Накопление - сумма накопления
- КоличествоЧеков - количество чеков по карте
- СуммаБонуса - сумма бонусов на карте
- Группы - массив кодов групп дисконтных карт
- НомерТелефона - номер телефона владельца карты
- АдресЭлектроннойПочты - адрес эл. почты владельца карты
Пример успешного запроса
{
"result": "ok",
"good": {
"code": 1,
"barcode": "12345678",
"name": "Товар 1",
"art": "01",
"price": 100.00,
"spec_price": 0,
"price_d": 95.00,
"discount_sum": 5.00,
"measure_unit": "шт.",
"country": "РФ",
"description": "описание товара",
"image": null
},
"card": {
"Код": "1234",
"Наименование": "123",
"ТекстДляЧека": "Текст чека ДК",
"НеВестиНакопление": false,
"ДеньРождения": "2021-03-19T00:00:00",
"Накопление": 0,
"КоличествоЧеков": 0,
"СуммаБонуса": 0,
"НомерТелефона": "",
"АдресЭлектроннойПочты": "dsa@das.com",
"Группы": [1]
}
}
Пример неуспешного запроса
{
"result": "error",
"msg": "Товар не найден"
}
