external:pro_bonus:98_dop:30_potrat

Загрузка потрат по счетам в БД

Может быть полезно при переходе с другой системы лояльности в том случае, когда от потрат гостя зависит текущий уровень его скидки или бонуса.
В данном контексте «потраты» - это сумма оплаченных им денег в заказах, где была применена лояльность. Это не сумма списанных с его счёта бонусов.

Для ProBonus существует возможность загрузить в БД такую информацию напрямую, SQL-запросом. Обычно это нужно сделать один раз, сразу после переноса списка счетов (карт через импорт из файла).
Особенности:

  • все потраты будут внесены в базу сегодняшним числом;
  • если при импорте будут строки с идентификаторами, которых в базе нет - потраты по данной строке не будут импортированы;

Пример SQL-скрипта для импорта потрат:

declare @identifier_id int = null
declare @account_id int = null	
declare @date datetime = GETDATE()

select @identifier_id = [id], @account_id = [account_id] from [identifier] where ([is_deleted] = 0) and ([is_sys_code] = 0) and ([code] = '100002')
if @identifier_id is not null and @account_id is not null begin
	insert into [dbo].[transaction] ([account_id], [identifier_id], [date], [sum_3])
	values (@account_id, @identifier_id, @date, 654300)
end
select @identifier_id = [id], @account_id = [account_id] from [identifier] where ([is_deleted] = 0) and ([is_sys_code] = 0) and ([code] = '100003')
if @identifier_id is not null and @account_id is not null begin
	insert into [dbo].[transaction] ([account_id], [identifier_id], [date], [sum_3])
	values (@account_id, @identifier_id, @date, 369700)
end

В данном примере:

  • на счёт, у которого привязана карта с номером 100002, привязывается потрата в 6543 руб (в запросе указано 654300 - в копейках);
  • на счёт, у которого привязана карта с номером 100003, привязывается потрата в 3697 руб (в запросе указано 369700 - в копейках);

Чтобы не писать скрипт на тысячи строк вручную, можно воспользоваться excel-шаблоном, который сгенерирует скрипт.
Ссылка на шаблон: https://disk.yandex.ru/i/DISjT17acnzx_w
Как это сделать:
0) Перед манипуляциями сделать резервную копию SQL-базы ProBonus.
1) Выгрузить из другой системы лояльности информацию в 2 столбика. Первый столбик - номер карты (или другого идентификатора). Второй столбик-потраты в рублях (не в копейках).
2) Взять приложенный к статье excel-файл и скопировать в него эти данные.
В какую именно область копировать - выделено зелёным фоном.

3) Скопировать скрипт из ячейки C5 нужное кол-во раз по строкам. Сколько строк с данными - столько раз скрипт. В примере всего 3 строки и скрипт скопирован 3 раза. Скрипт содержит формулу, ссылающуюся на столбцы А и B.

4) Скопировать готовый скрипт, включая три строки в которых объявляются переменные (см. красную рамку на скриншоте)

5) В SQL Server Management Studio этот скрипт вставить в готовом виде и выполнить.

6) Проверить в web-админке probonus, посмотрев «Транзакции по счёту». На скриншоте ниже пример - для карты 21959073 добавлена «потрата» в 123 руб.

  • external/pro_bonus/98_dop/30_potrat.txt
  • Последнее изменение: 2023/10/30 12:17
  • Алексей Коробов