====== Загрузка потрат по счетам в БД ====== **Описанное ниже устарело.** В актуальной версии нужно использовать функциональность [[external:pro_bonus:03_probonus_work:01_webadmin:11_import:03_import_spending|Импорт потрат]]. Может быть полезно при переходе с другой системы лояльности в том случае, когда от потрат гостя зависит текущий уровень его скидки или бонуса. В данном контексте «потраты» — это сумма оплаченных им денег в заказах, где была применена лояльность. Это не сумма списанных с его счёта бонусов. Для 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 раза. Скрипт содержит формулу, ссылающуюся на столбцы A и 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.** Проверьте результат в веб-админке ProBonus, посмотрев «Транзакции по счёту». На скриншоте ниже пример: для карты 21959073 добавлена «потрата» в 123 руб. {{:external:pro_bonus:98_dop:pasted:20231030-121620.png}}