Загрузка потрат по счетам в БД
Описанное ниже устарело. В актуальной версии нужно использовать функциональность Импорт потрат.
Может быть полезно при переходе с другой системы лояльности в том случае, когда от потрат гостя зависит текущий уровень его скидки или бонуса. В данном контексте «потраты» — это сумма оплаченных им денег в заказах, где была применена лояльность. Это не сумма списанных с его счёта бонусов.
Для 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 раза. Скрипт содержит формулу, ссылающуюся на столбцы A и B.
4. Скопируйте готовый скрипт, включая три строки, в которых объявляются переменные (см. красную рамку на скриншоте).
5. В SQL Server Management Studio вставьте этот скрипт в готовом виде и выполните.
6. Проверьте результат в веб-админке ProBonus, посмотрев «Транзакции по счёту». На скриншоте ниже пример: для карты 21959073 добавлена «потрата» в 123 руб.




