HTTP сервис для расчета скидок ТП 7

В HTTP сервис KKMTranser добавлена ф-я DiscountCalculation.

Настройка

В ТП 7 требуется: 1. Создать и настроить элемент справочника ККМ. 2. Создать и настроить элемент справочника «Настройки расчета скидок». 3. Создать запись в регистре сведений «Настройки расчета скидок для ККМ», в которой указать ККМ из п.1 и настройку из п.2. 4. Опубликовать на веб-сервисе HTTP сервис KKMTransfer.

Использование

Для получения расчитанных скидок нужно отправить POST запрос на адрес «{веб-адрес ТП 7}/hs/KKMTransfer/DiscountCalculation»,
где {веб-адрес ТП 7} - адрес опубликованной базы ТП 7, например, http://localhost:8080/TP7_dev.

В теле запроса нужно передать информацию о чеке, для которого нужно получить расчитанные скидки.

Входные параметры

Тело 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": "ККМ не найден"
}