Инструменты пользователя

Инструменты сайта


tp7:модули:м_online_ккм:discountcalculation

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

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

Настройка

В ТП 7 требуется:

  1. Создать и настроить элемент справочника ККМ.
  2. Создать и настроить элемент справочника «Настройки расчета скидок».
  3. Создать запись в регистре сведений «Настройки расчета скидок для ККМ», в которой указать ККМ из п.1 и настройку из п.2.
  4. Опубликовать на веб-сервисе 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": "Товар не найден"
}

Коллекция Postman

tp7/модули/м_online_ккм/discountcalculation.txt · Последнее изменение: 2024/07/16 16:45 — dzayonchkovskiy