Импорты
- Импорт в системе
- Импорты статусов карт
- Импорты связей MxN
- Импорты купонов
- Массовый импорт расширенных атрибутов контакта или карты
Импорт в системе
Импорт - раздел в интерфейсе системы, через который можно произвести общий импорт сущностей, связей некоторых сущностей, а также посмотреть статус и детализацию по каждому произведенному импорту.

Рис. Раздел «Импорт» в системе
На форме импорта отображаются следующие поля:
- Наименование - название файла импорта.
- Статус. Варианты значений: «Новый», «В процессе», «Завершено успешно», «Завершено с ошибками», «Внутренняя ошибка» (технического характера).
- Дата начала - дата и время начала импорта.
- Дата окончания - дата и время окончания импорта.
- Сущность - название сущности, по которой осуществляли импорт (например, товар, магазин)
- Успешно - количество успешно импортированных записей в файле импорта.
- Ошибок - количество не импортированных записей.
- Итого - общее количество записей в файле импорта.
- Ответственный - ссылка на пользователя, который осуществил импорт.
Процесс импорта и обновления данных в интерфейсе системы осуществляется 2 способами:
- Через раздел с той сущностью лояльности, в рамках которой необходимо импортировать данные.

Рис. Кнопка «Импорт» в разделе «Карты»
2. Через общий импорт.
Рис. Кнопка «Создать» для импорта сущностей системы в разделе «Импорт»
Шаги для 1-го способа:
1. Нажать на кнопку «Импорт» => «Скачать шаблон». По итогу скачивания на локальный компьютер скачивается файл шаблона. Название файла формируется как название сущности + «_Шаблон импорта» (например, «Группа_баллов_Шаблон импорта»). В файле первой строки файла шаблона отображаются названия всех полей сущности. В файле импорта должны быть заполнены значения по всем обязательным полям сущности.
2. Заполнить файл шаблона данными и сохранить в требуемом формате файлов. Допустимое расширение файла импорта данных: xlsx. Размер файла не может принимать значения более 8 Мб. В файле загрузки должно быть не более 40 тыс строк.
3. Нажать на кнопку «Импорт» => «Загрузить файл».
4. Выбрать подготовленный файл с данными в открывшемся окне, подтвердить действия кнопкой «Импортировать файл».
Открывается запись произведенного импорта, в котором отображается статус выполнения импорта. После успешного выполнения импорта в соответствующем разделе системы добавляются новые данные. Если какая-то запись не была создана при импорте (например, из-за ошибки уникальности или не заполнено обязательное поле), то в записи импорта показывается, какие строки файла не импортированы и по какой причине. При необходимости пользователь может экспортировать ошибочные строки импорта по кнопке «Экспорт».
По окончании процесса импорта обновляются поля «Статус», «Дата окончания», «Успешно», «Ошибок», «Итого», а также заполняются данными связанные представления «Детали импорта», «Импортированные строки» и «Ошибки импорта».

Рис. Представление с результатами импорта
«Детали импорта» - успешно импортированные строки и ошибочные не импортированные строки.
«Импортированные строки» - все успешно импортированные записи из файла импорта.
«Ошибки импорта» - все не импортированные записи из файла импорта. В столбце «Исходная строка» перечислены все поля в строках файла загрузки через запятую, в столбце «Ошибка» - текст ошибки импорта по данной строке.
Рис. Ошибки импорта
Для удобства работы в импортах предусмотрена сортировка по дате начала, по дате окончания, по столбцам "Успешно", "Ошибок", "Итого". В полях "Дата начала" и "Дата окончания" отображается не только дата, но и время.
Чтобы импортом можно было обновить существующую запись, в шаблоне импорта есть поле идентификатора - «ID записи (для обновления)». Сюда записывается числовое значение, расположенное в конце ссылки на страницу с импортируемой сущностью.

Рис. Поле «ID записи (для обновления)» в шаблоне импорта

В файле экспорта также присутствует заполненный соответствующим идентификатором столбец «ID записи». Для обновления соответствующих записей пользователю необходимо скопировать идентификаторы записи из файла экспорта в файл импорта.
Поскольку не все сущности отображаются в структуре разделов меню (например, Расширенные атрибуты карты/контакта), импортировать записи и связи возможно посредством Общего импорта, реализуемого в разделе «Импорт» по кнопке «Создать» через выбор окна «Скачать шаблон» и необходимой сущности из выпадающего списка. Дальнейшие шаги для импорта идентичны шагам, описанным для 1-го способа.

Рис. Общий импорт сущностей

Рис. Список сущностей для шаблона импорта
Импорт параметров карты
В текущей реализации есть возможность импортировать карты не только любым из описанных способов, но и изменять отдельные параметры уже существующих карт. Например, заполнять для существующих карт параметр «NFC-код».
Для импорта NFC-кодов в шаблоне для импорта карт - "Карта_Шаблон импорта", необходимо заполнить 2 столбца - NFC и ID записи (обновления). При чем в столбце "ID записи (обновления)" может быть записано как ID записи, так и номер карты.

Рис. Заполненный шаблон импорта для NFC-кодов.
Далее загрузить файл импорта стандартным образом и отследить результаты в связанных представлениях Импорта.

Рис. Результаты импорта
В каждую из 3 карт добавилось значение в параметр NCF-код.

Рис. Карточка карты с импортированным значением параметра NFC.
Аналогичным образом можно обновлять или заполнять любые параметры карты, указанные в шаблоне импорта.
Импорты статусов карт
При необходимости массового изменения статусов карт используется функционал ручного импорта из файла. При таком импорте обновляются статусы карты, данные по карте проходят проверку на наличие и соответствие в базе данных. Рекомендованное количество записей в файле - не более 100 тыс.
Функционал может быть полезен для блокировки карт, для корректной отчетности по картам.
В разделе системы "Карты лояльности" при нажатии на «Импорт» появляется окно с кнопками. Для массового изменения статусов карт используются кнопки: «Загрузить файл статусов карт» и «Скачать шаблон импорта статусов карт»

Рис. Кнопка для импорта карт

Рис. Кнопки импорта карт для смены статусов
По итогу скачивания шаблона импорта на локальный компьютер загружается файл в формате xls - "Изменение статусов карт_Шаблон импорта".
Файл импорта имеет следующие атрибуты:
| Заголовок | Описание |
| Номер карты | Номер карты, статус которой должен быть изменен |
| Старый статус | Текущий статус карты |
| Новый статус | Целевой статус карты |
| Код причины изменения статуса | Идентификатор причины изменения статуса карты, указанный в записи справочника причин изменения статуса карты |
| Комментарий | Комментарий при изменении статуса |
| Номер телефона | Номер телефона участника, к которому привязана карта |
| Имя участника | Имя участника, к которому привязана карта |
| Дата рождения | Дата рождения участника, к которому привязана карта |
Пример заполненной строки таблицы импорта:
| bonuscard_status_cur | bonuscard_status_new | сhange_bonuscardstatus_reasonid | change_bonuscardstatus_comment | mobile_phone | bonuscardcontact_name | bonuscardcontact_birthday | |
| 7000001977094831 | Продана | Активная | 1 | Подарок | +79853154488 | Дмитрий | 29.12.1983 |
В файле импорта нет указания на обязательные поля, при обработке записей система производит проверку данных на соответствие в базе. В случае несоответствия и/или отсутствия данных выдает Ошибки или производит соответствующие действия.
После заполнения файла по шаблону его импорт осуществляется по кнопке «Загрузить файл статусов карт». В раскрывающемся окне можно как выбрать файл из проводника компьютера, так и перетащить файл в центральное окно. Максимальный объем файла импорта составляет 32 Мб.
По кнопке «Импортировать файл» запускается процесс импорта данных, после чего сразу автоматически открывается запись импорта. В нижнем правом углу экрана интерфейса появляется сообщение «Импорт завершен», «Обновлено успешно».
Выбор партнера на этапе импорта файла не является обязательным шагом.

Рис. Окно для импорта файла со статусами карт
В подразделе системы «Импорт статусов карт» находятся связанные представления «Детали импорта», «Импортированные строки» и «Ошибки импорта», в которых отображаются результаты импорта по всем строкам файла импорта. В каждом представлении предусмотрена возможность скачать данные по кнопке «Экспорт».

Рис. Раздел меню системы «Импорты статусов карты» со связанными представлениями

Рис. Результаты импорта

Рис. Поля файла результатов импорта статусов карт
В столбце «Исходная строка» содержатся исходные данные импорта - старый статус, новый статус, код причины изменения статуса, комментарий, номер телефона, имя участника, дата рождения.
Перечень ошибок и действий в системе при обработке импорта:
1. «Карта не найдена» - импортируемой карты нет в системе.
2. «Изменение статус карты из текущего на целевой запрещено» - если статус карты меняется на не разрешенный статус карты в соответствии с настройками системы.
| Старый статус | Новый статус | Правила обработки импорта |
| Завершена | Новая, Продана, Активная, Заблокирована | В строке результатов импорта указывается статус «Ошибка» с описанием «Изменение статус карты из текущего на целевой запрещено» |
3. «На карте есть транзакции» - возникает, если на карте есть транзакции.
| Старый статус | Новый статус | Правила обработки импорта |
| Продана | Новая | Если на карте есть транзакции, то в строке результатов импорта указывается статус «Ошибка» с описанием «На карте есть транзакции». Если на карте нет транзакций, то:
|
| Активная | Новая | Если на карте есть транзакции, то в строке результатов импорта указывается статус «Ошибка» с описанием «На карте есть транзакции». Если нет, то:
|
| Заблокирована | Новая | Если на карте есть транзакции, то в строке результатов импорта указывается статус «Ошибка» с описанием «На карте есть транзакции». Если нет, то:
|
4. «Карта привязана к контакту» - возникает при трансформации карты со статусом Продана в Новую, если на карте есть контакт (см. п. 3)
5. «Не заполнены атрибуты» - возникает, если хотя бы один из атрибутов карты не заполнен.
| Старый статус | Новый статус | Правила обработки импорта |
| Новая | Активная | Если хотя бы один из атрибутов карты не заполнен, то в строке результатов импорта указывается статус «Ошибка» с описанием «Не заполнены атрибуты». Если все атрибуты заполнены, то:
|
| Продана | Активная | Если хотя бы один из атрибутов файла не заполнен, то в строке результатов импорта указывается статус «Ошибка» с описанием «Не заполнены атрибуты». Если все атрибуты заполнены, то:
|
| Заблокирована | Активная | Если хотя бы один из атрибутов файла не заполнен, то в строке результатов импорта указывается статус «Ошибка» с описанием «Не заполнены атрибуты». Если все атрибуты заполнены, то:
|
6. «Номер телефона не совпадает» - возникает при трансформации карты со статусом Новая (или Продана) в Активная, если номер телефона не совпадает.
7. «Карта не привязана к контакту» - возникает при трансформации карты со статусом Заблокирована в Продана, если карта не привязана к контакту.
| Старый статус | Новый статус | Правила обработки импорта |
| Заблокирована | Продана | Если карта не привязана к контакту, то в строке результатов импорта указывается статус «Ошибка» с описанием «Карта не привязана к контакту». Если карта привязана, то:
|
8. «Код причины изменения статуса не указан» - если указание кода причины изменения статуса карты обязательно, но код отсутствует. Обязательность указания кода регулируется соответствующей партнерской настройкой: Actions.UICardOperations.SetChangeStatusReason.TurnOn
9. «Код причины изменения статуса не найден в справочнике» - если код указан, но система не нашла код причины изменения в справочнике.
10. «Комментарий при изменении причины не указан» - если указание комментария обязательно, но комментарий отсутствует. Обязательность указания комментария регулируется соответствующей партнерской настройкой: Actions.UICardOperations.SaveComments.TurnOn
11. «Невозможно привязать еще одну карту данного типа» - если лимит количества карт в рамках типа исчерпан.
Импорты связей MxN
В этом подразделе системы осуществляется импорт связей многие ко многим, когда, например, необходимо добавить товары в какой-то список товаров. Один и тот же товар может принадлежать разным спискам, и сам список содержит множество товаров.
Импорт связей MxN осуществляется по кнопке «Cоздать». В появляющемся окне пользователь выбирает сущности для импорта. В первый столбец добавляется название первой сущности из выпадающего списка всех сущностей лояльности («Список товаров»), во втором столбце список сущностей ограничивается только теми, которые могут быть связаны с первой сущностью. Пользователь может выбрать «Товар».
Тип связи для выбранных сущностей автоматически проставляется «Общий». Для типов связей предусмотрено еще 2 значения: «Включаемые» и «Исключаемые». Например, для импорта включаемой связи между «Фильтром по позициям чеков» и «Товаром» может использоваться любой из этих типов связей.
Далее необходимо определить «Тип идентификатора» для каждой сущности для распознавания системой импортируемой записи. Возможные значения для сущностей Список товаров и Товар: «Целочисленный идентификатор», «Наименование», «Внешний идентификатор». Для товара рекомендуется выбрать в качестве типа идентификатора - "Внешний идентификатор".
Для "Контакта" типом идентификатора могут выступать также: мобильный телефон, e-mail и Guid-идентификатор.

Рис. Параметры для настройки шаблона импорта связей
После заполнения всех полей по кнопке «Продолжить» скачивается шаблон файла с названием «Список товаров_Товар_Шаблон импорта». В 5-ой строке файла шаблона два столбца с названиями выбранных сущностей. Все строки выше имеют техническое назначение.

Рис. Шаблон импорта связей
После заполнения файл необходимо загрузить через кнопки «Создать» => «Загрузить файл» => «Импортировать файл». Скорость такого импорта составляет около 50 тыс. записей в час
Далее автоматически открывается карточка импорта связей.

Рис. Карточка импорта связи списка товаров с товаром
Проверить импортированную связь можно в разделе системы «Список товаров» по названию списка в табе «Товары». При успешном импорте загруженный товар окажется в этом списке.
Ошибки при импорте
Основные ошибки при нажатии на кнопку «Импортировать файл», которые отображаются пользователю до начала процесса импорта данных:
- Превышен максимальный размер файла (когда размер файла превышает максимально возможный размер файла для импорта);
- Недопустимое расширение файла (когда расширение файла не соответствует допустимому xls);
- Несуществующее поле (когда в первой строке файла есть поле с несуществующим названием).
Основные ошибки в процессе импорта данных, отображаемые в записи импорта в представлении «Ошибки импорта»
- Некорректный тип данных (когда в поле указано значение с некорректным типом, например, в поле с типом дата и время в файле указана строка или число);
- Не заполнены обязательные поля (когда не заполнено хотя бы одно из обязательных полей);
- Запись с такими значениями уже существует (когда сработал индекс уникальности в базе);
- Не найдена связанная запись (когда не найдена запись для поля с типом ссылка на другую сущность по наименованию или внешнему идентификатору);
- Не найдено значение (когда в поле с типом выбора значения указано несуществующее значение этого поля).
Для возможности импорта в настройках ролей безопасности должна быть включена привилегия на импорт. Дополнительно в роли для каждой сущности настраиваются привилегии на создание/чтение/редактирование/удаление, которые учитываются при импорте соответствующей сущности.
Импорт связи маркетингового списка и контакта
Функционал общего импорта позволяет импортировать не только отдельные сущности, но и их связи, например, связь маркетингового списка и контакта. Для проведения целевых акций часто требуется выгружать из базы системы маркетинговые списки с контактами определённого сегмента. Через общий импорт в текущей реализации возможно наполнить существующий маркетинговый список (при необходимости создать новый) контактами, зарегистрированными в системе.
Шаги для импорта связи маркетингового списка и контакта:
- Создать новый маркетинговый список в разделе Контакты => Маркетинговые списки => Создать. Заполнить обязательные поля и сохранить список.

Рис. Кнопка «Создать» маркетинговый список

![]()
Рис. Созданный маркетинговый список
2. Перейти в раздел «Импорт», нажать на «Создать» => выбрать окно «Скачать шаблон». Если появляется окно без возможности выбрать параметры для настройки шаблона (см. рис), необходимо обновить страницу с интерфейсом с помощью Ctrl+F5 и перейти к следующему шагу.

Рис. Выбор действия при осуществлении импорта

![]()
Рис. Окно для настройки шаблона без возможности выбрать параметры
3. В поле "Сущность" выбрать параметр «Связь маркетингового списка и контакта» для настройки шаблона => нажать «Продолжить».

Рис. Выбор параметра «Связь маркетингового списка и контакта» для настройки шаблона
3. Заполнить скачанный файл шаблона «Связь_маркетингового списка_и_контакта_Шаблон импорта» двумя обязательными полями: наименование маркетингового списка и контакт. Значениями для поля «Контакт» могут быть: ФИО, телефон, email, guid. Номер телефона должен быть указан в формате +79000000000. Значения должны быть уникальны, иначе при загрузке файла возникнет ошибка.

Рис. Заполненный шаблон импорта связи маркетингового списка и контакта
4. Загрузить заполненный файл импорта с помощью кнопки «Создать» => «Загрузить файл». Добавить файл импорта и нажать «Импортировать файл».

Рис. Загрузка файла для импорта связи маркетингового списка и контакта

Рис. Импорт подготовленного файла
Файл с количеством записей более 20 тыс. рекомендуется разбить на отдельные файлы по 5 тыс. записей и загружать одновременно, примерное время импорта одного файла - 1 час.
В результате произведенных действий открывается запись импорта, в котором отображается статус выполнения: 2 контакта импортировались успешно, 1 - с ошибкой "Не найдена связанная запись", что означает отсутствие такого контакта в базе зарегистрированных клиентов.

Рис. Результаты импорта связи маркетингового списка и контакта
Импортированные в маркетинговый список контакты можно увидеть в табе «Контакты» этого списка. Контакты были зарегистрированы в базе без указания ФИО (по номеру телефона и электронной почте), поэтому в поле "Контакт" импортированных записей отображается значение "Нет имени".
Рис. Маркетинговый список с импортированными контактами
При добавлении нового контакта происходит проверка на его уникальность, запрещающая повторно добавлять в список уже существующий в нём контакт.
При попытке ручного добавления такого контакта в МС, он не будет отображаться в строке поиска в окне Добавления нового элемента.

Если добавлять контакта в МС через общий импорт, он завершается с ошибкой "Запись с такими значениями уже существует".

Рис. Ошибка добавления в МС дубликата контакта
Импорты купонов
В разделе «Импорты купонов» загружаются в систему внешние купоны от контрагента-партнера для того, чтобы в дальнейшем клиенты партнера смогли ими воспользоваться. Так же реализован механизм гашения купонов через импорт. Это функционал полезен в том случае, когда информация о гашении не попадает в систему, если купон был погашен на стороне контрагента-партнера, не интегрированного с системой.
В карточке контакта новый и погашенный купоны находятся в связанной записи «Купоны».

Рис. Импортированные купоны в карточке контакта
Импорты новых купонов
В разделе «Импорты новых купонов» осуществляется загрузка новых купонов посредством файла загрузки через кнопку «Создать» => «Скачать шаблон».

Рис. Раздел Импорты купонов
Файл шаблона «Импорт_новых_купонов_Шаблон импорта» имеет поля:
| Поле | Наименование поля | Тип поля (формат ячейки) | Обязательное |
| number | Номер купона | Числовой | Да |
| mobilephone | Мобильный телефон контакта | Текстовый | Нет |
| start date | Дата и время начала действия купона | Общий | Да |
| end date | Дата и время окончания действия купона | Общий | Да |
При загрузке файла с новыми купонами в модальном окне необходимо помимо заполненного файла обязательно добавить «Партнера», «Выпуск купона» и «Тип купона». Можно выбрать из настроенных в системе или создать из карточки импорта все сущности, кроме «Выпуск купона». Выпуск купона формируется в системе автоматически, когда создается одна из купонных сущностей: «Пул номеров», «Персональный купон», «Моментальный купон», «Для продажи в ЛК», «Подарочный купон».

Рис. Окно загрузки файла импорта новых купонов
В результате выполнения импорта формируется запись, в которой хранится вся информация об импорте и логи.
Рис. Запись импорта новых купонов

Рис. Карточка с деталями импорта новых купонов
Если у купона заполнен номер телефона, то загруженный купон привязывается к контакту с указанным номером. Если контакт не существует, купон не загружается. В логе формируется соответствующая ошибка «Контакт не найден».
Если номер телефона не заполнен, пул номеров записывается в соответствующий выпуск купонов.
Импорты для гашения купонов
Аналогично процессу импорта новых купонов, в разделе «Импорты для гашения купонов» производится загрузка купонов, которые необходимо массово погасить. По кнопкам «Создать» => «Скачать шаблон», формируется файл загрузки с полями:
| Поле | Наименование поля | Обязательное |
| number | Номер купона | Да |
| mobilephone | Мобильный телефон контакта | Нет |
При загрузке файла, в модальном окне обязательно заполняется поле с Партнёром. Можно выбрать из настроенных в системе или создать из карточки импорта.

Рис. Окно загрузки файла импорта для гашения купонов
В результате выполнения импорта формируется запись, в которой хранится вся информация об импорте и логи. Время ожидания загрузки в секундах каждой строки из файла импорта\гашения купонов регулируется партнерской настройкой Loyalty.Import.Coupons.TimeOut.

Рис. Запись импорта для гашения купонов

Рис. Карточка с деталями импорта для гашения купонов
Правила гашения купонов:
- Купон не гасится, в логах формируется ошибка, если:
- у купона заполнен номер телефона, но контакт не принадлежит партнеру, который был указан в модальном окне;
- купон привязан к контакту, которого не существует;
- номер телефона принадлежит другому контакту;
- Если у купона есть контакт или карта, но не указан номер телефона в файле импорта, то купон гасится.
- Если купона с таким номером не существует, возвращается соответствующая ошибка.
- Если все поля заполнены корректно, купоны переводятся в статус «Погашен».
- Если купон уже погашен по чеку, то его статус не меняется. В логе возвращается статус «Купон уже погашен».
Ошибки импорта купонов:
- Контакт не найден
- Не найден партнер
- Купон уже погашен
- Выпуск купона не найден
- Тип купона не найден
- В системе уже есть купон с таким номером