====== Загрузка потрат по счетам в БД ====== Может быть полезно при переходе с другой системы лояльности в том случае, когда от потрат гостя зависит текущий уровень его скидки или бонуса. В данном контексте "потраты" - это сумма оплаченных им денег в заказах, где была применена лояльность. Это не сумма списанных с его счёта бонусов. Для 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-файл и скопировать в него эти данные. В какую именно область копировать - выделено зелёным фоном. {{:external:pro_bonus:98_dop:pasted:20231030-120538.png}} 3) Скопировать скрипт из ячейки C5 нужное кол-во раз по строкам. Сколько строк с данными - столько раз скрипт. В примере всего 3 строки и скрипт скопирован 3 раза. Скрипт содержит формулу, ссылающуюся на столбцы А и B. {{:external:pro_bonus:98_dop:pasted:20231030-120711.png}} 4) Скопировать готовый скрипт, включая три строки в которых объявляются переменные (см. красную рамку на скриншоте) {{:external:pro_bonus:98_dop:pasted:20231030-120829.png}} 5) В SQL Server Management Studio этот скрипт вставить в готовом виде и выполнить. {{:external:pro_bonus:98_dop:pasted:20231030-121154.png}} 6) Проверить в web-админке probonus, посмотрев "Транзакции по счёту". На скриншоте ниже пример - для карты 21959073 добавлена "потрата" в 123 руб. {{:external:pro_bonus:98_dop:pasted:20231030-121620.png}}