Техническая документация r_keeper_CRM

Установка и обновление CRM

Установка и настройка CRM

Введение

r_keeper_CRM — система лояльности и учета клиентов. В этой статье описывается установка и настройка. Информация об использовании программы можно найти в руководстве пользователя

Сокращения

  • CRM — r_keeper_CRM
  • Брандмауэр — фаерволл, firewall — сетевой экран
  • Конфигуратор — приложение RKeeper_CRM_Config.exe
  • FC Farcards

Состав системы

CRM состоит из нескольких модулей:

  • Основные модули
    • RKeeper_CRM_Server — сервер карт. Основной сервер, работает с базой данных
    • RU_Server — сервер приложений. Работает с пользователями и отчетами
    • RKeeper_CRM_Config — приложение для настройки карточной системы, пользователей и отчетов
    • RKeeper_CRM_Manager — приложение редактора карт
    • RKeeper_CRM_Monitor — сервер автоматических процессов
    • User_Manager — приложение для управления пользователями
  • Дополнительные модули
    • PluginLoader — приложение для просмотра отчетов
    • IRFeatureServer — Feature Server для интерактивных отчетов
    • CommonServer
    • Farcards — сервер ретранслятора запросов. Передает информацию из CRM в r_keeper_7.

CRM хранит данные в базе MS SQL. 

Системные требования

Минимальные системные требования ниже:

  • Оперативная память — 512 МБ
  • Процессор: x64 1.4 ГГц
  • Место на жестком диске — 8 Гб
  • MS SQL server 2012

Если на компьютере установлен брандмауэр, его предварительно надо настроить. Настройка описана в статье настройка брандмауэра для работы MS SQL

Установка CRM

Скачайте установщик CRM с FTP-сервера: ftp://ftp.ucs.ru/R-Keeper.CRM/versions/
Запустите установщик от администратора. Выберите язык, согласитесь с лицензионным соглашением и укажите путь установки. Следуйте указаниям инсталлятора.


Выберите устанавливаемые компоненты.
IR plugin, IR Feature server, Common server — необязательные компоненты.

Укажите порты для Feature Server


Укажите порты для UCS Common Server


По желанию, выберите свои SSL-сертификаты для Common Server

Укажите настройки подключения к серверу MS SQL 

Укажите имя базы данных CRM и путь к базе данных card system

Укажите IP-адрес и порт сервера приложений

Выберите, какие приложения установить как службы. Выберите, каким приложениям сделать ярлык на рабочий стол.

Первоначальная настройка

Подключение к базе данных

Настройки подключения к базе данных SQL указываются во время установки. Проверить и поменять их можно в конфигураторе.
Откройте конфигуратор. Настройки подключения к SQL указаны в разделе Сервер карт:

Формат строки подключения в поле База данных:

IP,port:имя_базы_данных

Указанная база данных должна существовать в MS SQL. Нажмите кнопку Проверка подключения. Если ошибок не появилось — подключение прошло успешно. 

Настройка пользователей и отчетов

Теперь необходимо настроить подключение к базе данных приложение управления пользователями. Для этого:

  1. В разделе Приложение выберите Управление пользователями и отчеты.
  2. В поле Строка подключения укажите строку подключения к базе данных MS SQL.
  3. Нажмите кнопку   в поле Строка подключения и настройте подключения к базе данных.
  4. Выберите Microsoft OLE DB Provider for SQL Server и нажмите Далее >>
  5. Укажите IP-адрес сервера базы данных. По желанию, через запятую можно указать порт
  6. Укажите имя пользователя и пароль с правами на базу данных CRM
  7. Нажмите кнопку Проверить соединение
  8. После успешной проверки, выберите базу данных:
  9. Нажмите ОК
  10. Нажмите кнопку Зарегистрировать сервер приложений. После удачного завершения кнопка Отменить регистрацию сервера приложений станет активной.
  11. Нажмите кнопку  и закройте конфигуратор.

Лицензирование

  1. CRM требует лицензирования. Получите мастер-лицензию на подходящее количество карт на сервере лицензирования. Процесс подробно в статье о системе лицензирования.
  2. После получения мастер-лицензии, сгенерируйте код лицензии без кода запроса. Для этого в меню Редактирования объекта нажмите кнопку Новая лицензия > Далее, не вводя код запроса.
    1. В поле программа введите CRM и выберите вашу мастер-лицензию
    2. Укажите требуемую дату или нажмите кнопку max date
    3. Укажите требуемое количество лицензий в поле Кол-во*
    4. Нажмите Далее.
  3. В сервере карт перейдите на вкладку Лицензии
  4. Введите свои данные дилера в полях Пользователь и Пароль. Нажмите кнопку Авторизоваться под дилером:
  5. Пользователь и пароль в системе не сохраняются. Выберите из выпадающего списка объект и нажмите кнопку Запросить лицензию для объекта.
    1. Если объектов много и требуется найти свой, Нажмите кнопку   над кнопкой Запросить лицензию для объекта
    2. Подведите мышку к столбцу Код
    3. Нажмите появившуюся кнопку со значком фильтра 
    4. Выберите (Custom...)
    5. Введите код объекта напротив поля Like:
    6. Нажмите ОК. Система найдет указанный объект.
  6. В поле Дата окончания справа появится информация о лицензии.
  7. Если объектов много и требуется найти свой, воспользуйтесь мини-инструкцией ниже:
    1. Нажмите кнопку   над кнопкой Запросить лицензию для объекта
    2. Подведите мышку к столбцу Код
    3. Нажмите появившуюся кнопку со значком фильтра 
    4. Выберите (Custom...)
    5. Введите код объекта напротив поля Like:
    6. Нажмите ОК. Система найдет указанный объект.
  8. Как объект найден, нажмите кнопку Запросить лицензию для объекта

Проверка связи и запуск

Запустите сервер карт — RKeeper_CRM_Server.exe.  В трее должен появиться значок . Нажмите правой кнопкой мыши на значке сервера и выберите Восстановить.
Перейдите в раздел Общее. Убедитесь, что сервер CRM подключился к базе данных. Если подключился, информация о подключении появится в правом поле:

Если путь к базе отсутствует или версия базы данных не указана, то CRM не будет работать. Попробуйте посмотреть статью Решение проблем.

Серверы CRM можно запускать как приложения или как службы. Для запуска приложениями запустите ярлыки на рабочем столе. ​

  • Запустите сервер карт — RKeeper_CRM_Server
  • Запустите сервер приложений  RU_Server
  • Запустите сервер автоматических процессов — RKeeper_CRM_Monitor

Значки всех серверов должны появиться в трее.  Для установки служб запустите серверы с ключом /install.

Запустите приложение User_Manager.exe и авторизуйтесь под пользователем Администратор, пароль — 1.

Измените пароль администратора. Нажмите правой кнопкой мыши на пользователя Администратор > Задать пароль

Нажмите Ctrl+S или значок  для сохранения.
По желанию, создайте пользователя с меньшим количеством прав. 

Запустите редактор карт — RKeeper_CRM_Manager.exe и авторизуйтесь. CRM готова к использованию. 

Настройка связи с r keeper 7

Для проверки интеграции обязательно наличие владельца карт и выпущенных карт. Создание владельцев и карт описано в статье о выпуске карт, рекомендуем ознакомиться.

Схема работы

Интеграция систем CRM и r_keeper работает через ретранслятор карт Farcards. Схема взаимодействия приложений изображена ниже.

Настройка в менеджерской станции

Создайте на кассовом сервере PDS интерфейс

  1. Перейдите в Сервис > Станции и устройства > Кассовый сервер
  2. Нажмите правой кнопкой мыши в разделе устройства и добавьте на кассовый сервере драйвер PDS interface
  3. В настройках интерфейса укажите имя в поле PDS Server Name. Остальные настройки оставьте по умолчанию
  4. Привяжите драйвер к логическому интерфейсу:
    1. Перейдите в Сервис > Интерфейсы
    2. Создайте новый интерфейс
    3. В разделе Файлы библиотек (DLL) выберите нужный ресторан
    4. В поле Кассовый сервер выберите ранее созданный драйвер
    5. Сохранитесь и сделайте интерфейс активным.
    6. Перезапустите кассовый сервер.

Перейдите в меню Сервис > Обработка сигналов устройств > MCR алгоритмы и создайте алгоритм для CRM.

  1. Нажмите правой кнопкой мыши в левом поле и создайте новый алгоритм
  2. Укажите название созданному алгоритму
  3. В свойствах алгоритма укажите:
    1. Тип алгоритма — обработка по маске
    2. Типы устройств — все
    3. Область — интерфейс
    4. Объект — выберите ранее созданный PDS-интерфейс. В нашем случае это PDS for CRM
    5. Маска обработки — укажите требуемую маску. Почитать подробнее о деталях настройке можно в статье об MCR-алгоритмах. В нашем примере укажем маску ii, т.е. 2 любых цифры
      Учтите, что после указания маски, на кассе вы должны указывать именно такое количество символов, что и в маске. В нашем случае маска содержит 2 символа, а карта — №1. Соответственно, будем вводить 01.
  4. Активируйте алгоритм и сохраните изменения.

Настройка в CRM

Ниже описаны минимально необходимые настройки для интеграции с r_keeper_7.

Классификатор ПО

Настройте классификатор ПО для связи с r_keeper.

  1. Запустите сервер RKeeper_CRM_Server и приложение RKeeper_CRM_Manager.
  2. Перейдите в меню Файл > Классификаторы ПО
  3. Нажмите кнопку  или Insert на клавиатуре 
  4. Укажите название созданному классификатору в поле Название. В нашем случае, это классификатор для связи с r_keeper_7, поэтому назовем его RK7.
  5. Укажите код для связи с r_keeper_7 в поле код. Воспользуйтесь кнопкой  для генерации кода. Существует 3 вида кодов:
    1. Цифровой код dec, например 13864531741260458068
    2. Цифровой код hex, например 4BAA2CD24FF1E4E14B9E
    3. Буквенно-цифровой код, например iWjseh69x1b7lWuH9UG5
  6. Перейдите на вкладку Права API и поставьте галочку Разрешить отображение в API CRM
  7. Нажмите внизу кнопку  чтобы сохранить изменения
  8. Укажите сгенерированный код в файле FARCARDS.INI, настройка Qualifier

Счета

Мы будем настраивать связь с r_keeper_7 со скидками и бонусами.

Перейдите в меню Справочники > Типы счетов

  1. Создайте типы счетов. Нажмите кнопку  или Insert на клавиатуре:
    1. Потраченные средства. Это единственный обязательный тип счета
    2. Дебетовый
    3. Дисконтный
    4. Бонусный
  2. Укажите названия в поле Название
  3. Выберите класс для созданных счетов:
    1. Потраченные средства для потраченных средств
    2. Дебетовый для дебетного
    3. Дисконтный для скидочного
    4. Бонусный для бонусного
    5.  
  4. В правой части окна перейдите на вкладку Классификаторы ПО. Нажмите правой кнопкой мыши на пустом поле и выберите Настройка работы с классификаторами
  5. Выберите классификатор в левом поле — поставьте галочку у RK7
  6. Выберите тип счета в правом поле — поставьте галочку у одного типа счета.
  7. В нижнем выпадающем меню выберите Разрешить и поставьте обе галочки — Списание и Начисление
  8. Нажмите кнопку Применить
  9. Повторите действия 5 пункта для всех типов счетов по очереди
  10. Для бонусного счета во время настройки укажите приоритет 101
  11. В результате, к каждому типу счета будет привязан классификатор RK7 и разрешено списание и начисление:
    • Бонусный
    • Дисконтный
    • Дебетовый
    • Потраченные средства
    • Обязательно нажмите галочку Списание и убедитесь, что там тоже классификатор появляется
  12. Настройка завершена, нажмите Закрыть.

Настройка схем

Если вы планируете работать с бонусами, создайте схемы. Подробное описание есть в статье Работа с бонусами

Важно! Не указывайте временные периоды и базовую ставку у схем.

Настройка Farcards

Установка Farcards

Скачайте Farcards c FTP-сервера по адресу ftp://ftp.ucs.ru/R-Keeper.CRM/versions/FС_604.zip и распакуйте в папку.
Откройте файл FARCARDS.INI. В параметре NetServerName укажите имя созданного PDS-интерфейса:

[pds_netk]
NetServerName=FARCARDS
ininame=netk.ini
DebugMessages=1

В поле Address укажите настройки подключения к серверу CRM — IP-адрес:порт. Порт по умолчанию — 9192.
В поле Qualifier укажите код ранее созданного классификатора ПО.

[Card System 5]
Address=http://localhost:9192
Log_Level = 10
Log_Count = 5
Qualifier = 12695640651268910253

Сохраните изменения.

Копирование библиотеки

Farcards и CRM — разные продукты, хотя и используют одинаковые библиотеки. В связи с этим и недальновидностью разработчиков, необходимо каждый раз проверять версию библиотеки RKeeper_CRM.dll в папке Farcards и bin у CRM.

Для правильной работы Farcards, скопируйте с заменой файл RKeeper_CRM.dll из папки установки CRM: \CRM\bin в папку установки Farcards.

После замены файла, запустите Farcards и кассовый сервер.

Обратите внимание, что обновлять файл RKeeper_CRM.dll в папке Farcards необходимо каждый раз при обновлении CRM.

Активация карты на кассе

Запустите кассовый сервер, farcards и кассовую станцию.

  1. Создайте заказ на кассе.
  2. Если используете быстрый чек, нажмите в правом нижнем углу кнопку Код с клавиатуры
  3. Если используете Создание заказа, нажмите кнопку Доп > Код с клавиатуры
  4. Укажите код карты в CRM. Указывать требуется именно то количество символов, что и в маске MCR-алгоритма. В нашем случае, это 2 символа.
  5. Нажмите кнопку  для продолжения
  6. Если интеграция работает и карта с указанным номером существует, на кассе отобразится карточка клиента. В карточке клиента отображается информация о владельце:
  7. Для применения карты на кассе нажмите на картинку
  8. В нашем примере мы проверяли работу интеграции. Подробнее о скидках и бонусах читайте в руководстве пользователя.

Обновление и удаление

Введение

В статье описаны обновление и удаление CRM 7.через установщик.

Обновление

Обновление CRM производится через установщик.
Если вы используете CRM в связке с r_keeper_7, после обновления CRM, обязательно обновляйте файл RKeeper_CRM.dll в папке установки Farcards.

Скачайте новую версию с FTP-сервера ftp://ftp.ucs.ru/R-Keeper.CRM/versions/ Запустите установщик, согласитесь с пользовательским соглашением и следуйте указаниям.


Выберите экземпляр CRM для обновления

Укажите настройки подключения к MS SQL server

Отметьте галочками приложения, для которых требуется создать ярлыки на рабочем столе

Если какие-либо приложения CRM были запущены, установщик предложит их закрыть. Соглашайтесь, нажав Далее

Установщик обновит CRM. Нажмите Завершить. Обновление выполнено.

Удаление

Удаление CRM тоже выполняется через установщик.


Выберите пункт Удаление одного из ранее установленных экземпляров и выберите экземпляр.
Нажмите Удалить.

Удаление выполнено. Нажмите Завершить.
 

 

Настройка СМС и e-mail оповещения

Введение

В статье описана настройка оповещений владельцев карт по СМС и электронной почте.

Настройка электронной почты

Рассылка писем работает по протоколу IMAP. Поддерживаются порты 25, 465 и 587.
Подробная информация по настройке почтовых клиентов доступны по ссылкам:

Для примера, настроим уведомления через почту Яндекса.

Активация рассылки

Первым делом, разрешим делать рассылку типу контактов E-mail

  1. Откройте редактор карт
  2. Перейдите в Справочники > Типы контактов
  3. Выберите тип E-mail (уникальный с рассылкой) и поставьте галочку разрешить рассылку
  4. Нажмите Закрыть.
  5. Укажем пользователю электронную почту и разрешим рассылку. Зайдите в Владельцы > Ваш пользователь > Контакты
  6. В настройке Опции поставьте галочки напротив E-mail
  7. Нажмите кнопку  или Insert на клавиатуре
  8. Выберите тип контакта E-mail (уникальный с рассылкой)
  9. Поставьте галочку в столбце Рассылка
  10. Введите адрес электронной почты и сохраните изменения.

Настройка сервера

  1. Переходим к настройке отправки писем. Откройте меню Файл > Параметры системы > E-mail
  2. Укажите адрес сервера в поле Имя сервера. Если не знаете имя сервера, обратитесь к разделу Настройка электронной почты
  3. По необходимости, поставьте галочку Нужна авторизация. Популярные почтовые сервисы — Яндекс, Гугл, мейл.ру требуют авторизацию.
  4. Укажите имя пользователя на яндексе в поле Адрес отправителя
    Если адрес отправителя не будет совпадать с авторизационным учётной записи, то yandex выдаст ошибку: Sender address rejected: not owned by auth user.
  5. Укажите имя пользователя и пароль на Яндексе
  6. Укажите порт — 587
  7. Если требуется уведомлять администратора об отсылке писем, задайте настройку Адрес служебной рассылки. Укажите здесь электронную почту администратора
  8. Нажмите кнопку Готово
  9. Как таковой, проверки настроек пока не реализовано. Есть обходное решение, описанное на трекере.

Настройка уведомлений

О настройке акции email рассылки подробнее читайте http://support.ucs.ru/ru/node/7113#header-12

Настройка СМС

Перед настройкой оповещений, вы должны выбрать провайдера, через которого СМСки будут отсылаться.
Выберите провайдера из списка ниже и зарегистрируйте аккаунт на сайте. 

Настройка классификатора ПО

В первую очередь необходимо разрешить рассылку на уровне сервера.

  1. Откройте редактор карт
  2. Перейдите в Файл > Классификаторы ПО
  3. Выберите классификатор CS_Monitor
  4. Поставьте галочку Разрешить отправку SMS сообщений
  5. Нажмите внизу кнопку  чтобы сохранить изменения
  6. Нажмите Закрыть.

Разрешите рассылку типу контактов Телефон (уникальный с рассылкой)

  1. Откройте редактор карт
  2. Перейдите в Справочники > Типы контактов
  3. Выберите тип Телефон (уникальный с рассылкой) и поставьте галочку разрешить рассылку
  4. Нажмите Закрыть.
  5. Разрешите рассылку СМС. Зайдите в Владельцы > Ваш пользователь > Контакты
  6. В настройке Опции поставьте галочки напротив SMS
  7. Нажмите кнопку  или Insert на клавиатуре
  8. Выберите тип контакта Телефон (уникальный с рассылкой)
  9. Поставьте галочку в столбце Рассылка
  10. Укажите пользователю телефон в 10-значном формате:
    +79123456789
  11. Сохраните изменения

Настройка отправки СМС

Предполагается, что аккаунт у провайдера СМС у вас уже есть.

  1. Откройте меню Файл > Параметры системы > SMS
  2. Укажите адрес сервера в поле Имя сервера
  3. Укажите имя пользователя СМС-провайдера 
  4. Укажите пароль пользователя СМС-провайдера
  5. Укажите имя отправителя в поле Отправитель. Это имя будет отображаться на телефоне вместо телефона отправителя
  6. Поставьте галочку Разрешить использовать в акциях
О настройке акции СМС рассылки подробнее читайте в статье об акциях и классификаторах.

Поддерживаемые провайдеры

Список поддерживаемых провайдеров отправки СМС ниже. СМС отправляются через универсальный протокол SMPP, так что если провайдер поддерживает его, то работать тоже будет.

Российские

Список доступных провайдеров и их настройки в конфигураторе ниже.

  1. https://sms.ru
    • Имя сервера: https://sms.ru/ucs/sms?api_id=ВАШ_api_id
    • Пользователь — аккаунт пользователя sms.ru, например 9932391378
    • Пароль от личного кабинета
    • Отправитель — Имя отправителя, согласованное с sms.ru по адресу https://sms.ru/?panel=senders
      Если согласованного имени отправителя нет, указывайте телефон аккаунта. Например, 79932391378
    • Без настройки имени отправителя, СМС будет выглядеть вот так:
  2. Sigma SMS, бывший MirSMS
    • Имя сервера — https://online.sigmasms.ru/api/special/r-keeper
    • Пользователь — имя пользователя в системе
    • Пароль пользователя в системе
    • Отправитель  настроенное имя отправителя по адресу https://online.mirsms.ru/#/components. Если имя отправителя не настроено, можно использовать стандартное — B-Media Учтите, что СМС могут приходить с задержкой.
    • С стандартным именем отправителя, СМС будет выглядеть вот так:
  3. https://smsc.ru
    • Имя сервера https://smsc.ru/sys/rkeeper_api.php
    • Пользователь — имя пользователя в системе
    • Пароль пользователя в системе
    • Отправитель  настроенное имя отправителя по адресу https://smsc.ru/senders/.

Запись СМС в файл

Для проверки работы можно "отправлять" СМС в файл.

Для этого укажите такие настройки:

  • Имя сервера: http://file.ucs.ru
  • Логин — произвольное значение. Это обязательное поле
  • Пароль — произвольное значение. Это обязательное поле
  • Отправитель — путь к текстовому файлу с СМС. Например, D:\SmsLog.txt

В результате, CRM создаст текстовый файл с заданным именем и будет писать туда отправленные СМС. Пример файла ниже:

+79123456789 Тестовый текст для СМС
+79123456789 Тестовый текст для СМС 2
+79123456789 Тестовый текст для СМС 3

Решение проблем

Данные по ошибкам и отправкам сообщений хранятся в MS SQL. Это таблицы MSG_OUTGOINGS и MSG_SENTS. Для решения проблем следует изучать их.

  • В таблица MSG_OUTGOINGS содержатся ожидающие отправки сообщения
  • В MSG_SENTS содержатся отправленные сообщения.

Для проверки наличия строк в таблице MSG_OUTGOINGS выполните скрипт:

select * from MSG_OUTGOINGS

Если в таблице пусто, то выполните:

select * from MSG_SENTS

Ддя проверки таблицы отправленных сообщений.

Расшифровка данных таблиц ниже.

Status — статусы отправки

Для e-mail сообщений используется только 2 статуса:

  • 1 – поставлено в очередь
  • 2 – отправлено

Отправка SMS поддерживает все 5 статусов:

  • 1 – поставлено в очередь
  • 2 – отправлено, ожидание ответа от провайдера
  • 3 – ошибочная отправка
  • 4 – успешно отправлено 
  • 5 – ожидание постановки в очередь

Message type — тип сообщения

  • 1 – SMS
  • 2 – e-mail

External_status — статусы e-mail сообщения

После отправки, e-mail сообщения получают External_status равный 100. Этот статус неизменен и означает — Письмо запланировано к отправке.

External_status — статусы СМС-сообщения

Номер статуса меньше 100 выдается сервером карт:

  • -1 – Обновление даты при ее отсутствии
  • -2 – Зачистка просроченных сообщений
  • -3 – Добавление нового соощения
  • -4 – Отправка пустого сообщения
  • -5 – Удаление сообщения ожидающего отправку
  • -6 – Неправильный номер телефона

Статусы нормальной работы

Номер ошибки больше 100 выдается провайдером.

  • 100 – Письмо запланировано к отправке
  • 101 – Сообщение в процессе доставки
  • 102 – Сообщение доставлено получателю
  • 103 – Закончился срок действия сообщения 
  • 104 – Сообщение было удалено
  • 105 – Сообщение невозможно доставить.
  • 106 – Сообщение находится в принятом состоянии, т. е. было прочитано вручную службой поддержки клиентов
  • 107 – Сообщение находится в недопустимом состоянии. Состояние сообщения неизвестно
  • 108 – Сообщение было отклонено провайдером
  • 109 – Сообщение отклонено

Статусы ошибок

  • 200 – Неизвестная ошибка
  • 201 – Неправильный ID сообщения
  • 202 – Неправильный идентификатор отправителя
  • 203 – Неправильный номер получателя
  • 204 – Слишком длинное или пустое сообщение
  • 205 – Пользователь отключен
  • 206 – Ошибка биллинга
  • 207 – Превышение лимита выделенных сообщений

Информация для разработчиков и дилеров

Компания UCS рассматривает расширение списка поддерживаемых провайдеров СМС рассылки и предлагает следующие варианты:

  1. Передать свой протокол СМС-провайдеру рассылки для поддержки на его стороне продуктов UCS
  2. Платно доработать продукты UCS для поддержки провайдера.

По вопросам интеграции обращайтесь на трекер

Настройка брандмауэра для работы MS SQL

Введение

В статье описано, как разрешить подключаться к базе данный MS SQL Server через брандмауэр

Настройка

В Брандмауэре необходимо разрешить входящие соединения.

Откройте Брандмауэр Windows — Пуск > Панель управления > Администрирование > Монитор брандмауэра Защитника Windows в режиме повышенной безопасности


В дереве элементов выберите Правила для входящих соединений.
На панели действий нажмите на Создать правило > Для порта.

На следующем шаге Укажите протокол TCP и порт — 1433

 

Выберите Разрешить подключение

В настройках профилей поставьте флажки на всех 3 пунктах

Укажите имя для созданного правила

 

На клиентском компьютере в SQL Management Studio не обязательно вводить адрес нужного экземпляра БД.
Достаточно создать еще одно правило в брандмауэре с аналогичными параметрами, но для протокола UDP и порта 1434

Теперь можно подключаться с этого компьютера к базе данных.

Настройка веб-интерфейса личного кабинета

Введение

В статье описана настройка веб-версии личного кабинета на Apache.
Перед прочтением рекомендуем ознакомиться со статьей о настройке локального сервера DENWER.

Система предоставляется "как есть" — без каких-либо гарантий.

Настройка

Система работает при интеграции с сайтом клиента. Для тестовой демонстрации можно воспользоваться Denwer.

  1. Взять с фтп сервера компании ЮСИЭС дистрибутив (ftp:/R-Keeper.CRM/versions/WEB/cardsystem.rar) и развернуть у себя на web-сервере (http://support.ucs.ru/ru/node/7981#header-4);
    Примечание: для данного примера дистрибутив был распакован в папку Денвера c:\denwer\home\LKab.ru\www\.
  2. Получить лицензию от компании ЮСИЭС (короткий код - Global Type - запросить у Николаевой);
  3. Настроить файл config.inc.php (ниже приведен пример, где необходимо все проверить и заполнить).

Шаблон конфигурационного файла config.inc.php

<?php
    /**
    *   Конфигурационная информация Личного Кабинета Карточной Системы
    *   @package      Карточная Система
    *   @copyright      Компания "ЮСиЭс"
    *   @created          2009 - 2010
    // параметры подключения к CardSystem Auth Server
    define( 'CARDSYSTEM_IP', '192.137.137.32' ) ;                 // IP-адрес машины с сервером авторизации карт
    define( 'CARDSYSTEM_PORT', 9191 ) ;                               // TCP-порт сервера авторизации карт
    define( 'CARDSYSTEM_TIMEOUT', 60 ) ;
    define( 'CARDSYSTEM_TERMINAL_TYPE', 'lk13732' ) ;                           // код классификатора ПО из редактора карт R-Keeper CRM
    define( 'CARDSYSTEM_GLOBAL_TYPE', 'mR0ZJq0Vm4RF2VB' ) ;       // код лицензии
    define( 'LANG', 'ru' ) ;                // ru или en
    define( 'CS_ACCOUNT_CLASS_ID', 1 ) ;    // какие классы счетов суммируются в балансе
    // приведенные ниже параметры требуется проверить по базе R-Keeper CRM в SQL Server 2012
    define( 'CS_ADDRESS_TYPE_ID', 250 ) ;                       // идентификатор типа адреса по умолчанию. Посмотреть в таблице CARD_ADDRESS_TYPES
    define( 'CS_CONTACT_MOBILE_TYPE_ID', 251 ) ;      //  идентификатор типа контакта (мобильный телефон). Посмотреть в таблице CARD_CONTACT_TYPES                                                                                    
    define( 'CS_CONTACT_EMAIL_TYPE_ID', 252 ) ;         //  идентификатор типа контакта (Email). Посмотреть в таблице CARD_CONTACT_TYPES
    define( 'CS_SELECTED_COUNTRY_ID', 1 ) ;                        //  идентификатор страны. Посмотреть в таблице CARD_COUNTRIES
    define( 'CS_SELECTED_CITY_ID', '10000000000001' ) ;  //  идентификатор города. Посмотреть в таблице CARD_CITIES
    define( 'CS_ALLOW_ADD_STREET', true ) ;         // позволять добавлять улицы
    define( 'REGISTRATION', true ) ;                // отображать модуль регистрации
    define( 'REGISTRATION_TYPE', 'email' ) ;        // вид регистрации по Email или по SMS (значения - email или sms)
    define( 'SUPPORT_PHONE', '8 800 000 080' ) ;    // телефон поддержки
    define( 'ABOUT_COMPANY_LINK', 'http://localhost/cardsystem1/' ) ;   // ссылка на страницу О Компании  
    define( 'SUPPORT_LINK', 'http://localhost/cardsystem2/' ) ;                   // ссылка на страницу Поддержка
    define( 'HELP_LINK', 'http://localhost/cardsystem3/' ) ;                            // ссылка на страницу Помощь
    // кодировка Кабинета, либо сайта куда встраивается Кабинет
    // windows-1251 или utf-8
    // с этой декларацией отправляется xml к CardSystem Протоколу
    define( 'ENCODING', 'windows-1251' ) ;
    // define( 'ENCODING', 'utf-8' ) ;
    // директория, где располагается часть сайта, управляемая этой CMS. ПРОПИСАТЬ !!!
    define( 'BASE_DIR', '/cardsystem/' ) ;
    // директория, где располагается Личный Кабинет. ПРОПИСАТЬ !!!
    define( 'ADMIN_DIR', '/cardsystem/' ) ;
    // может ли Пользователь Кабинета редактировать свою личную информацию в базе Карточной системы
    define( 'ALLOW_EDIT_PERSONAL_INFO', true ) ;
    define( 'ALLOW_CHANGE_PHOTO', true ) ;
    // перекодировка из UTF-8 в CP1251 - если НЕ РАБОТАЕТ вывод Детализации Транзакции R-Keeper-а,
    // возможно в системе не установлены нужные кодировки для функции ICONV
    // Если их не удаётся настроить - проставьте UTF8_DECODE_TABLE = true
    // - "ручная" перекодировка UTF-8
    define( 'UTF8_DECODE_TABLE', false ) ;
    define( 'CS_DYNAMIC_LOG', 'C:\\Denwer\\home\\LKab.ru\\www\\cardsystem\\log\\cs_dynamic.log' ) ;   // путь к лог-файлу. Необходимо проверить!
?>

Запуск

Для тестирования использовали Denwer и дистрибутив был распакован в директорию c:\denwer\home\LK2.ru\www\.
Соответственно, файл с настройками c:\denwer\home\LKab.ru\www\cardsystem\config.inc.php

После открытия страницы по адресу http://lkab.ru/cardsystem/ вы увидите следующее окно: 

После ввода номера карты и пароля вы попадаете в окно с личной информацией клиента, а также информацией о картах, счетах и транзакциях.

Настройка авторизации в личном кабинете

В конфигураторе настроить связь с смс-провайдером (Карточная система-SMS) или smtp-сервером (Карточная система - SMTP) и выбрать группу владельцев на вкладке Карточная система-Сервер авторизации(API).
В редакторе карт должен быть заполнен справочник Типы контактов: телефон и эл.почта, если отсутствуют.
В файле config.inc.php проверить заполненность параметров:

    define( 'CS_CONTACT_MOBILE_TYPE_ID', 253 ) ;    // тип контакта - мобильный телефон
    define( 'CS_CONTACT_EMAIL_TYPE_ID', 252 ) ;     // тип контакта - Email
    define( 'REGISTRATION', true ) ;                // отображать модуль регистрации
    define( 'REGISTRATION_TYPE', 'email' ) ;        // вид регистрации по Email или по SMS. Принимает значения - email или sms.

Настройка интерактивных отчетов

Введение

Плагин интерактивных отчетов позволяет просматривать интерактивные отчеты по данным CRM.

Для работы плагина требуется:

  1. Сам плагин
  2. Запущенный Common server. Если у вас уже есть установленный Common Server, новый ставить не надо — используйте существующий.
  3. Запущенный Feature Server для интерактивных отчетов

Настройка интерактивных отчетов

Установка компонентов

Вся необходимые компоненты для запуска интерактивных отчетов есть в установщике. Процесс описан в статье об установке и настройке CRM.

Дойдя до пункта выбора компонентов, обязательно отметьте:

  1. Common server — устанавливайте только в случае отсутствия на компьютере нет установленного Common Server'а.
  2. IR Feature server — Feature Server для интерактивных отчетов
  3. IR plugin — плагин интерактивных отчетов
  4. Нажмите Далее и продолжайте установку по инструкции.
  5. Готово, CRM и интерактивные отчеты установлены. 

После установки на рабочем столе в папке CRM будут появятся ярлыки:

  • CommonServer — для запуска CommonServer
  • IRFeatureServer — для запуска FeatureServer
  • PluginLoader — для запуска приложения для просмотра отчетов

Настройка плагина

После установки компонентов, необходимо настроить плагин. В частности, требуется указать GUID и хэш пароля в файле настроек плагина. Эти данные указываются один раз и требуются для авторизации интерактивных отчетов.

Мы рекомендуем создать отдельного пользователя с ограниченными правами только для просмотра интерактивных отчетов. 

Чтобы узнать user_guid и hash_pass, откройте SQL Manager и выполните запрос в базе данных CRM. Текст запроса ниже:

select * from employees

Запрос выведет список всех пользователей. Найдите столбцы GUIDSTRING и PASSDATA. В них содержаться данны user_guid и hash_pass.

Перейдите в папку с установленной CRM > CRM\bin\plugins\SchRepPluginClient и откройте файл ManagmentSettings.ini.

Скопируйте GUIDSTRING и PASSDATA вставьте в поля user_guid и hash_pass.

Пример файла ниже:

[langauge]
langFile=V:\UCS\CRM\r_keeper_7_CRM\CRM\bin\PLuginsLoader.rus
langName=русский
[rk7EditorPluginConfig]
user_name=Admin
asMDI=1
user_id=1
user_guid={1C00E8A6-6689-4735-9488-528B5AC8BDF5}
hash_pass=D41D8CD98F00B204E9800998ECF8427E
role_guid="CD8F407F-CF5C-4B1F-A7F3-069190F5D98A"
curlocation_guid="4322407F-CF5C-4B1F-A7F3-069192343242"
[rk7EditorHTTPInfo]
username={AE1415FB-0A08-41E8-860A-CE5A3CF609C6}
password={AE1415FB-0A08-41E8-860A-CE5A3CF609C6}
[FILTERS]
FILTER=""

Сохраните файл. Плагин готов к запуску. 

Просмотр отчетов

Для просмотра отчетов, запустите по порядку:

  • Feature Server
  • Common Server
  • приложение PluginLoader.

Откроется приложение для просмотра отчетов. Для примера, посмотрим отчет Транзакции владельца.

Перейдите в меню ИА Отчеты > Стандартные отчеты > Транзакции владельца

Фильтр указывать не будем, посмотрим отчет по всем пользователям. Нажмите ОК.

Откроется отчет о транзакциях. У нашего пользователя есть 3 транзакции. Отчеты работают.

 

Описание существующих отчетов

После установки плагина и импорта отчетов в меню ИА Отчеты доступны следующие группы отчетов:

  • Аналитически отчеты
  • Дополнительные отчеты
  • Кубы
  • Стандартные отчеты

Стандартные отчеты CRM — группа меню, содержащая отчеты, которые всегда содержались в R-Keeper CRM. Это отчеты «Дни рождения», «Отчет по бонусам», «Отчет по скидкам», «Суммовой отчет №1», «Суммовой отчет №2», «Транзакции за период по владельцу». Рассмотрим их подробнее.

Отчет «Дни рождения» позволяет показать владельцев, у которых в указанном в параметрах отчета промежутке времени будет день рождения. Период времени в данном отчете нужно задавать только за текущий год. Так же можно выбрать владельцев только из определенной группы, и карты только из определенной группы.

Отчеты «Отчет по бонусам», «Отчет по скидкам» позволяют получить данные о суммах транзакций за период времени по бонусному или скидочному типу счетов в разрезе по классификаторам, с группировкой по номеру карты. Можно указать произвольный период времени, выбрать владельцев только из определенной группы, и карты только из определенной группы, выбрать движения по картам только из определенного диапазона, выбрать транзакции только от определенного классификатора.

«Суммовой отчет №1» позволяют получить данные о суммах транзакций за период времени по 3 классам счетов: учета потрат, бонусному и скидочному. Транзакции учитываются только сделанные по картам, т. е. без учета автоматических или ручных начислений. Производится группировка отчета по группам владельцев. При запуске можно выбрать период для отчета, группу владельцев, группу карт, диапазон карт и подразделение.

«Суммовой отчет №2» позволяет получить данные по суммам операций начисления на счета и операций списания со счетов, с группировкой по владельцу и по типу счета. Отчеты учитывают все транзакции, в том числе и транзакции монитора автоматических операций и транзакции ручного начисления. При запуске можно выбрать период для отчета, группу владельцев, группу карт, диапазон карт, подразделение, а так же классификатор — источник транзакций.

Отчет «Транзакции за период по владельцу» позволяет получить подробный список транзакций по заданному владельцу карты по всем счетам за определенный период. При запуске сначала запускается предварительный фильтр по ФИО владельца, а из предложенных предварительным фильтром владельцев у любого можно двойным щелчком запустить отчет со списком транзакций. Если владельцев в БД очень много, предварительный фильтр позволяет быстро отобрать только интересующих владельцев, что ускоряет работу с отчетом.

В меню «Аналитика CRM» содержатся следующие отчеты: «ABC анализ», «RFM анализ», «TopN куб», «Анализ гостей», «Движения за период». Рассмотрим их подробнее.

«ABC анализ» рассчитывает, сколько выручки принес владелец карты за период времени, и на основе этих данных разбивает владельцев по их доле в принесенной выручке на 3 группы: А, B и С. Группа А — это владельцы карт, которые принесли первые 50% в общей выручке, группа B — владельцы, принесшие следующие 30% в общей выручке, и группа С — владельцы карт, принесшие последние 20% в общей выручке. Период анализа и границы групп в процентах задаются при запуске отчета.

«RFM анализ» показывает данные, сколько раз владелец карты посетил заведение, какую выручку он принес, и как давно был последний визит владельца карты. Отчету задается только период для анализа. Любого владельца в отчете можно «открыть» двойным щелчком и просмотреть подробный список транзакций, формируемый описанным выше отчетом «Транзакции за период по владельцу».

Отчет «TopN куб» формирует куб с данными по количеству чеков, количеству дней с посещениями за указанный период, общими потратами и средним чеком клиента. Так же в кубе доступны контактные данные клиентов. Куб, построенный по технологии FAST CUBE, позволяет сортировать и фильтровать клиентов по имеющимся показателям и таким образом выполняет задачи типа «выбрать 20 владельцев с наибольшим средним чеком» или «выбрать 50 владельцев, наиболее часто посещавших заведение». Подробнее о работе с кубом можно прочитать в руководстве пользователя FAST CUBE.

«Анализ гостей» - отчет, разделяющий владельцев по возрастным группам и полу, и показывающий размер потрат, совершенных этими группами, в валюте и в процентном отношении к общей сумме потрат за период.

Отчет «Движения за период» показывает начальное сальдо, сумму транзакций начисления, сумму транзакций списания, конечное сальдо, в разрезе по классу счета с группировкой по номеру карты.

В группе отчетов «Кубы CRM» содержаться построенные по технологии FAST CUBE кубы, основанные на источниках данных, подобным примененных в отчетах «Суммовой отчет №1» и «Суммовой отчет №2». Помимо уже описанных показателей, «Суммовой куб №1» показывает суммы по всем классам счетов, а не только по бонусному, дисконтному классу, и классу учета потрат. В «Суммовой куб №2» по сравнению с «Суммовым отчетом №2», внесены дополнительные показатели — уровень счета, дата истечения карты, внешний код владельца. Использование технологии FAST CUBE позволяет произвольным, удобным для пользователя способом, интерпретировать имеющиеся показатели (поля данных) источника данных. Это позволяет эффективнее анализировать имеющиеся данные.

В группе отчетов «Дополнительные отчеты» находятся отчеты по блюдам из чеков, списку заблокированных владельцев, количественные отчеты по схемам и картам, отчет об изменении атрибутов. Отчет «Блюда» покажет все блюда из сохраненных в БД xml-чеков. Отчет «Изменения атрибутов» показывает все измененные за период атрибуты у владельцев. «Количество транзакций по схеме/карте» показывает, сколько транзакций было сделано с применением указанной схемы или карты. «Черный список» показывает владельцев, внесенных ПО Delivery 7 в черный список.

Локализация отчетов

Для локализации интерфейса загрузчика следует взять существующий для необходимого языка файл RK7MAN.XXX из поставки RK7 и, переименовав его соответствующим образом, заменить им файлы X:\CRM\Bin\PLuginsLoader.rus и X:\CRM\PluginsFS\IRReportsFSPrj.rus.

Локализация названий отчетов производится аналогично RK7, c помощью утилиты PlgTranslater.exe файл UpgradeDll.xml (находится в каталоге с feature server) переводится вручную на нужный язык, см. http://support.ucs.ru/ru/node/7857

Настройка интерактивных отчетов вручную (устаревшее)

1. Установка плагина в ручную

Важно: если установка ИА отчетов происходит из инсталлятора CRMSetup_5_08_Х.exe, то данный раздел пропускаем и переходим к пункту "Установка плагина с помощью инсталлятора".

Важно: в случае создания БД CRM конвертацией из БД ПДС, необходима частичная ручная настройка отчетов, в частности выполнить шаги из п.2 и п.5.

1.1. Состав пакета ПО

Плагин интерактивных отчетов поставляется в виде архива CRM_IR_reports_ver.zip. Загрузить архив можно по адресу: ftp://ftp.ucs.ru/R-Keeper.CRM/versions/.

Архив содержит следующие основные папки:

  • папка \PluginsFS с feature server и его конфигурационным файлом;
  • папка \Bin\plugins с библиотекой плагина интерактивных отчетов и ее конфигурационными файлами;
  • папка \IAReport_views со скриптами для обновления БД SQL.

После распаковки архива нужно:

  • Скопировать 3 папки (PluginsFS, Bin, IAReport_views) в папку с установленным R-Keeper CRM c заменой *.dll;
  • установить (если нет) и запустить Common server;
  • обновить БД R-Keeper CRM, используя 3 скрипта;
  • настроить ini файл feature server и запустить feature server;
  • настроить ini файлы  библиотеки плагина интерактивных отчетов.

1.2. Подготовка БД

Подготавливаем БД, создав необходимые для работы плагина интерактивных отчетов представления. Представления создаются скриптами из архива IAReport_views.7z, они находятся в корневой папке IAReport_views данного дистрибутива. Необходимо выполнить для БД CRM все 4 скрипта, в произвольном порядке.

1.3. Настройка и запуск Feature server (IRReportsFSPrj.exe)

Следует настроить ini-файл feature server. Для этого нужно в папке X:\CRM\PluginsFS\ переименовать файл example_IRReportsFSPrj.ini в IRReportsFSPrj.ini и отредактировать его, задав:

  • -  адрес и порт CommonServer в секции [CS_CONNECTION],
  • -  UDL строку для подключения к БД CRM в секции [FS_TYPE],
  • -  имя экземпляра в секции [FS_TYPE],
  • -  а так же адрес и порт самого feature server (IP адрес локального ПК, порт можно оставить указанный по-умолчанию) в секции [FS_CONNECTION].

Пример ниже, описанные изменения выделены красным шрифтом:

[FS_CONNECTION]
url=http://192.168.101.189:8888/soap/IStructuresInfo
start_port=8888
DB_Connect_Count=10
ConnectTimeout = 9000000
ReceiveTimeout = 9000000
SendTimeout = 9000000
CommandTimeOut = 900000000

[CS_CONNECTION]
url=http://192.168.101.189:7007/soap/UCSCommonWS

[FS_TYPE]
i_Guid={5A3EF192-4FD6-43DD-98FE-71E953CCF6E5}
// если i_Guid в ини-файле отсутствует, то прописать указанныей выше (выделено желтым цветом)

instance_name=уникальное_в_системе_имя_экземпляра
MasterServer=1
connection_string = Provider=SQLOLEDB.1;Password=somesecretpwd;Persist Security Info=True;User ID=sa;Initial Catalog=CARD_SYSTEM;Data Source=localhost
MainLang=FeatureServPrj.rus
loglevel=4
Sleep=-1

[FS_MAILING]
///**** если настроена E-Mail рассылка отчетов, то необходимо указать Mailing=1 *****///
Mailing=0

Далее нужно запустить FeatureServPrj.exe с ключом /install для установки службы, и запустить службу FS_имя_экземпляра. После запуска службы нужно вновь открыть IRReportsFSPrj.ini и скопировать значение параметра i_Guid из секции [FS_TYPE] (выделено синим цветом). Это значение нужно будет указать при настройке параметров библиотеки плагина интерактивных отчетов. На этом настройка feature server закончена.

1.4. Настройка плагина

Параметры библиотеки плагина интерактивных отчетов настраиваются в файле X:\CRMBin\plugins\SchRepPluginClient\SchRepPluginClient.ini. Он создается переименованием уже существующего в этой папке файла example_SchRepPluginClient.ini в SchRepPluginClient.ini. В секции [CS_CONNECTION] нужно в параметре fs_guid указать скопированное в п.1.2 значение параметра i_Guid, а также настроить  такие же, как на при настройки feature server, адрес и порт CommonServer. Пример ниже:

[CS_CONNECTION]
ConnectTimeout = 9000000
ReceiveTimeout = 9000000
SendTimeout = 9000000
url=http://192.168.101.189:7007/soap/UCSCommonWS
fs_guid = {5A3EF192-4FD6-43DD-98FE-71E953CCF6E5}

[CL_TYPE]
i_Guid={3CCB6AB2-7F47-4254-9BAF-20562E3D6239}

1.5. Настройка загрузчика отчетов

Необходимо отредактировать файл настроек загрузчика отчетов ManagmentSettings.ini, предварительно переименовав его из example_ManagmentSettings.ini (X:\CRM\Bin\plugins\SchRepPluginClient\). (в папке \CRM\Bin\plugins\SchRepPluginClient\).

В файле нужно указать GUID и пароль любого существующего в БД CRM пользователя.

Пример запроса для получения нужных данных пользователя из БД CRM:

select top 1 guidstring, passdata from employees

GUID указывается в параметре user_guid, хэш пароля — в параметре hash_pass. Примеры в секции [rk7EditorPluginConfig] файла ManagmentSettings.ini ниже, описываемые параметры выделены красным шрифтом:

[langauge]
langFile="D:\CRM\Bin\PLuginsLoader.rus"
langName=русский

[rk7EditorPluginConfig]
user_name=Admin
asMDI=1
user_id=1
user_guid={EE42AA86-DDDD-426A-A614-9D16AB332AE2}
// Наличие здесь фигурных скобок обязательно(выделено желтым выше)

role_guid=CD8F407F-CF5C-4B1F-A7F3-069190F5D98A
curlocation_guid=4322407F-CF5C-4B1F-A7F3-069192343242
hash_pass=C4CA4238A0B923820DCC509A6F75849B

[rk7EditorPluginConfInfo]
username={AE1415FB-0A08-41E8-860A-CE5A3CF609C6}
password={38FCB03E-B95A-484A-A3D0-A049D23C79E7}

Помимо этого, в файле  ManagmentSettings.ini нужно указать полный путь к русификатору загрузчика в параметре langFile. На этом настройку можно считать законченной. 

1.6. Запуск загрузчика отчетов 

Рекомендуется создать на рабочем столе пользователя ярлык для запуска загрузчика отчетов. Загрузчик запускается файлом  X:\..\CRM_IR_reports\Bin\reports.cmd, в нем уже указаны все необходимые параметры запуска загрузчика.

Запуск следует делать от имени Администратора!

Импорт предустановленных отчетов происходит автоматически при первом запуске feature server.

Если все настройки верны, откроется окно загрузчика отчетов (рис.1)

Рис.1 Главное окно Загрузчика отчетов

Импорт ИА отчетов вручную

ИА Отчеты так же можно импортировать вручную с помощью кнопки "Импортировать из XML" в справочнике "Меню -> ИА Отчеты".

Рис.2. Импорт ИА Отчетов вручную

Установка модулей "Редактор карт" и "Отчеты" на удаленном компьютере

0. Введение


0.1. Очень часто необходимо, чтобы информацию о клиентах и постоение отчетов в системе R-Keeper CRM выполняли на нескольких машинах в сети(клиентах).

0.2. В данной статье рассмотрен случай, когда нужно запускать приложение "Редактора карт" (Cards_Editor.exe) и "Отчеты" (Reports_Manager.exe) на клиентской машине, отдельно от серверов.

0.3. Данная статья дополняет основную инструкцию http://support.ucs.ru/ru/node/7792 по установке модуля отчётов.

1. Необходимый набор файлов и порядок настройки (устаревшее)


Для работы на клиентской машине необходим набор файлов, согласно рисунку 1.

 

Рисунок 1. Дерево каталогов

1. Из основного дистрибутива на машине-сервере скопируйте следующие папки и файлы:

  • папку Config из корневого каталога дистрибутива КардСистем;
  • библиотеки dbexpida.dll(/windows/system32/), ScProxy.dll(cs505/bin/);
  • Configurator.exe, Cards_Editor.exe, Reports_Manager.exe;

2. Установите Midas (\\CardSystem505\Install\System\install Midas.bat).

3. Пропишите IP-адрес машины-сервера в Configurator.exe в секции "Подключение к серверу приложений (для клиентов)" (см. рисунок 2 и 3). Другие изменения не вносить!

Рисунок 2. Настройка Приложения -  "Карточная система".

Рисунок 3. Настройка Приложения - "Управление пользователями и отчеты".

2. Актуальная информация


С помощью инсталлятора установить клиент на машине (+midas+dbexpress), настроить конфигуратор согласно рис.2.

Для новых отчетов необходимо поправить файлы ManagmentSettings.ini и SchRepPluginClient.ini в папке \Bin\plugins\SchRepPluginClient\.

 

 

Описание настроек конфигуратора

Введение

Настройки в CRM осуществляются в Конфигураторе — Config.exe. Изменения в конфигураторе записываются в файл CRM\Config\Config.xml.
Удаление или повреждение этого файла может привести к сбоям в работе системы.

Карточная система

На данной странице настраивается сервер авторизации карт (он же Сервер приложений), настройки для Редактора карт, Монитора автоматических операций, смс-рассылки, почтовой рассылки, настройка COM-считывателей.

Сервер и редактор карт

Здесь настраивается подключение к базе данных MS SQL и уроверь логирования:

  1. Раздел Сервер карт
    1. Настройки подключения к базе данных следует указывать в виде: 
IP-адрес_SQL_сервера,порт сервера:имя_базы_данных
  1. Логин пользователя пользователя базы данных
  2. Пароль пользователя базы данных
  3. Проверка соединения — кнопка Проверка подключения
  4. Уровень журналирования — уровень логирования
  5. Кол-во файлов журналирования — количество файлов логов
  6. Размер файлов журналирования — размер файла лога в мегабайтах
  7. timeout (l.ucs.ru) — таймаут обращения к системе лицензирования
  1. Раздел Подключение редактора к серверу карт
    1. ​Адрес — IP-адрес сервера карт
    2. Порт — порт сервера карт
  2. Кнопка Язык позволяет выбрать язык

Сервер авторизации (API)

Здесь настраивается сервер авторизации.

  1. Папка временных файлов
  2. Порт (HTTP) —- порт для внешних подключений по API к CRM по HTTP
  3. Порт (HTTPS) — порт для внешних подключений по API к CRM по HTTPS
  4. Осуществлять верификацию сертификатов — проверять сертификат безопасности
  5. Порт (TCP) — порт для внешних подключений по API к CRM по TCP
  6. Уровень журналирования — уровень логирования
  7. Кол-во файлов журналирования — количество файлов логов
  8. Размер файлов журналирования — размер файла лога в мегабайтах
  9. Количество потоков — количество одновременно обрабатываемых потоков.
  10. Время активности кода регистрации — время ожидания системы кода регистрации при регистрации из внешней системы по смс или e-mail

Сервер автоматических процессов

Сервером для данного приложения является CS_Monitor.exe. Сами акции настраиваются в редакторе карт.
Для правильной работы акций необходимо сделать настройки на вкладке Монитор как на рисунке ниже. Настроить акции в Редакторе карт. Но для начала необходимо проверить подключение на вкладке Сервер карт.

Более подробно про настройку акций читайте в руководстве пользователя и в статье http://support.ucs.ru/ru/node/7113

Устройства ввода/вывода

На этой вкладке настраиваются подключаемые устройства. Отметьте галочками требуемые устройства и нажмите кнопку Настройка справа.

Нажмите кнопку Сохранить.

Управление пользователями и отчеты

На этой вкладке настраивается приложение User_manager.exe для управления пользователями. Сервером для приложения является RU_Server.exe.

  1. Раздел Сервер приложений
    1. Строка подключения — строка подключения к базе данных. Для создания нажмите кнопку  в правой части поля. Укажите настройки подключения и строка подключения сгенерируется.
    2. Кнопки Зарегистрировать сервер приложений и Отменить регистрацию сервера приложений регистрируют и отменяют регистрацию сервер приложений соответственно. Для работы сервера приложений, он должен быть зарегистрирован.
  2. Раздел Подключение к серверу приложений (для клиентов)
    1. Тип подключения — оставьте TCP/IP connection
    2. ​Адрес — IP-адрес сервера приложений
    3. Порт — порт сервера приложений

Описание файла config.xml

Введение

Файл Config.xml хранит в себе настройки, сделанные в Конфигураторе. Файл содержит секции и значения параметров в формате XML.

Образец файла

Ниже представлен образец файла. Он также приложен к статье. Обратите внимание, что в примере ниже есть переносы строк, и простое копирование может вызывать ошибки.

<?xml version="1.0"?>
<XML>
<Authorization Global_Connection_Enabled="0" Object_ID="0" Auth_Server_Address="127.0.0.1" Auth_Server_Port="9191"/>
<RU_Server_Client Connection_Type="0" Address="127.0.0.1" Port="211"/>
<RU_Server Database_Type="3">
<MSSQL Connection_String="Provider=SQLOLEDB.1;Password=1;Persist Security Info=True;User ID=sa;Initial Catalog=CRM3;Data Source=127.0.0.1,1433" 
Users_Server_GUID="{DA9B2A7A–3201–472F–8DA5–D4AA93287154}" Reports_Server_GUID=""/>
</RU_Server>
<CARD_SYSTEM_App_Server_Client Connection_Type="0" Address="127.0.0.1" Port="212" TimeOut="5" Database_Type="2" AuthCode_TimeOut="3" 
UMS_Host="http://127.0.0.1:1993" LIC_Host="http://l.ucs.ru:60606" DLR_Host="https://l.ucs.ru/WorkLicense"/>
<CARD_SYSTEM_App_Server Language="RUS" Database_Type="2" Key_Number="0" Log_Level="1" Log_Count="5" Log_Size="5" AuthCode_TimeOut="3" UMS_Host="http://127.0.0.1:1993">
<MSSQL Database_Name="127.0.0.1,1433:CRM3" Database_Login="" Database_Password="ImX=" Database_User="fiaKJ5==" Server_GUID="" DB_User_Name="" DB_Password=""/>
</CARD_SYSTEM_App_Server>
<CARD_SYSTEM_Auth_Server Temp_Directory="V:\UCS\CRM\r_keeper_7_CRM\CRM\Temp" Buffer_Max_Memory_Size="4096" Peer_Inactive_Time="15" 
Log_Level="1" Log_Count="5" Log_Size="5" Work_Threads_Pool_Size="5" Listener_Port="9191" FarCards="false" CheckPeopleByQualifier="false" 
UseCouponsRestore="true" SendRegistrationCodeInApiResponse="false" HTTP_Port="9192" HTTPS_Port="9193" HTTPS_Verification="false" Card_Mask="" 
Card_Group_ID="0" Country_ID="0" City_ID="0" Street_ID="0" Contact_Type_ID="0" Address_Type_ID="0" Card_Range_ID="0" Holder_Group_ID="0" Account_Type_AutoLevel="false" 
Account_Type_Has_Editor="false"><Account_Type_List/></CARD_SYSTEM_Auth_Server>
<CARD_SYSTEM_Monitor Auth_Server_Connect_Type="0" Auth_Server_Address="127.0.0.1" Auth_Server_Port="9191" Auth_Server_Client_ID="1" 
Transfer_Reason_ID="1" Log_Level="1" Log_Count="5" Log_Size="5" Temp_Directory="V:\UCS\CRM\r_keeper_7_CRM\CRM\Temp"/>
<Enabled_IODevices/>
<CARD_SYSTEM_Editor><MainForm State="0" Left="518" Top="200" Width="1032" Height="776"/><Options Last_User="-39754306"/>
</CARD_SYSTEM_Editor>
</XML>

Описание параметров

  1. Параметры для авторизации пользователей
<Authorization  
Global_Connection_Enabled="0" тип аторизации (0–локальный, 1–глобальный). Рекоммендуется "Локальный"
Object_ID="0" –  объекты сервера (для глобального типа авторизации по запросу)
Auth_Server_Address="127.0.0.1" – адрес сервера 
Auth_Server_Port="9191" – порт сервера
/>
  1. Параметры Сервера управления пользователями и отчетами — RU_Server
    1. Параметры для подключения с серверу (для клиентов)
<RU_Server_Client  
Connection_Type="0" тип подключения: TCP/IP
Address="127.0.0.1" — адрес сервера 
Port="211" — порт сервера 
/> 
  1. Параметры сервера
<RU_Server 
Database_Type="2"> — тип базы данных. Сейчас доступно только MS SQL 2012+
<MSSQL Connection_String="Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=CRM_508;Data Source=127.0.0.1,1433" — строка подключения к базе данных SQL
Users_Server_GUID="{DA9B2A7A–3201–472F–8DA5–D4AA93287154}" 
Reports_Server_GUID="{56CEE7A3–4CF3–40A6–92B1–6D720A399C5C}"/>
</RU_Server>
  1. Параметры сервера авторизации карт — CS_Auth_Server
    1. Параметры подключения к серверу для клиентов
<CARD_SYSTEM_App_Server_Client 
Connection_Type="0" — тип подключения TCP/IP
Address="127.0.0.1" – адрес сервера
Port="204" – порт сервера
TimeOut="1" –  время неактивности редактора карт в минутах. После этого времени сервер сбрасывает подключение.
Database_Type="2" 
Database_Backup="180" 
Database_Backup_Count="7" 
AuthCode_TimeOut="3"
/>
  1. Параметры сервера карт
<CARD_SYSTEM_App_Server 
Database_Type="2" 
Database_Backup="180" 
Database_Backup_Count="7" 
Key_Number="727269591" – номер ключа защиты в десятичном виде 
Division_ID="0" – код подразделения
Log_Level="10" – уровень логирования
Log_Count="5" – число файлов логов
Log_Size="5" – размер файла лога
Database_Name="127.0.0.1,1433:CRM" DB_User_Name="sa" DB_Password="123456" Database_Login="94RgAQ==" Database_Password="/cxKeNrpHirr3gE3"/> – параметры подключения к MS SQL
</CARD_SYSTEM_App_Server>
  1. Параметры сервера авторизации
<CARD_SYSTEM_Auth_Server 
Temp_Directory="D:\UCS\CRM_508\Temp" – папка временных файлов
Buffer_Max_Memory_Size="4096" – размер буфера
Peer_Inactive_Time="15" – время активности кода регистрации
Log_Level="10" – уровень логирования
Log_Count="5" – число файлов лога
Log_Size="5" – размер файла лога
Work_Threads_Pool_Size="5" – количество потоков
Listener_Port="9191" – TCP порт
Параметры по умолчанию при добавлении владельца карт, в случае отстутствия их в запросе
Card_Mask="" 
Card_Group_ID="16" – идентификатор группы карт 
Card_Range_ID="1"  – идентификатор диапазона карт
Operation_Param_ID="4" – идентификатор акции "Пригласи друга" для регистрации друга
Holder_Group_ID="15" – идентификатор группы владельцев
HTTP_Port="9192" – HTTP порт
Account_Type_AutoLevel="0" – автопереход
>

<Account_Type_List/> – список счетов, открываемых при добавлении или редактировании владельца карты, если счета не созданы
<Database_List/>
</CARD_SYSTEM_Auth_Server>
  1. Параметры сервера автоматических операций — CS_Monitor
<CARD_SYSTEM_Monitor 
Auth_Server_Connect_Type="0" — тип подключения TCP/IP
Auth_Server_Address="127.0.0.1" – адрес сервера авторизации
Auth_Server_Port="9191" – TCP порт сервера авторизации
Auth_Server_Client_ID="1" – идентификатор классификатора ПО
Transfer_Reason_ID="1" – Причина перевода средств
Log_Level="10" – уровень логирования
Log_Count="5" – число файлов лога
Log_Size="5" – размер файла лога
Temp_Directory="D:\UCS\CRM_508\Temp"> – папка временных файлов
>
Параметры сервера почтовых рассылок
<SMTP_Client Server_Address="smtp.mail.ru" Server_Port="25" Server_Auth_Required="0"
Server_Login="" Server_Password="" Attachment_Directory="Компьютер" Msg_Sender=""/> — Параметры сервера рассылок смс
<SMS_Client Server_Address="http://file.ucs.ru" Server_Login="YxYPfI/qfw0JOA==" Server_Password="Qza9zi1IJlTh0A==" 
Msg_Sender="D:\Dlv1\SmsLog.txt" Msg_RegistrationTextEx="yu7kIODi8u7w6Ofg9ujoID0gVmFsdWU=" 
Msg_PasswordTextEx="yu7kIOrg8PL7ID0gQ2FyZENvZGUsIM/g8O7r/CA9IFBhc3N3b3Jk" Msg_ChangePasswordTextEx="" 
Msg_LogonTextEx=""/>
</CARD_SYSTEM_Monitor>

 

Решение проблем

Введение

В статье описаны известные проблемы и их решения

Подключение ошибочно

При запуске конфигуратора, CRM выдает ошибку Подключение ошибочно:

Причина: нет связи с MS SQL Serverov
Решение: проверить настройки подключения к SQL в конфигураторе. Проверить службу SQL Server (SQL).

Windows socket error

Не запускается приложение управления пользователями User_Manager.exe. При открытии появляется ошибка Windows Socket Error.

Причина: приложение не может подключиться к серверу приложений.
Решение: запустить сервер приложений. 

Exception EOleSysError

Не запускается RU_Server. При запуске появляется ошибка

Причина: сервер приложений не зарегистрирован.
Решение: зарегистрировать сервер приложений.

Касса не может найти карту в CRM

Указываете код с клавиатуры на кассе, но карта не ищется. На кассе такая ошибка:

Причин может быть несколько:

  • Не запущен farcards
  • На кассовом сервере не запущен ПДС-интерфейс
  • В MCR-алгоритме указана маска, под которую не подходит такое число. Например, маска iii, а в поиске указано 32.

Решение: проверьте все причины и исправьте ошибки.
Убедиться, что farcards подключен к кассовому серверу можно, открыв его и перейдя на вкладку Chanels. В списке будет отображены подключенные кассовые серверы:

Если сервера в списке нет, значит, подключение не работает.

Основные операции

Создание владельцев и карт

Введение

В статье описана настройка выпуска карт в r_keeper_CRM 7. Наличие выпущенных карт обязательно для проверки работы интеграции CRM и r_keeper_7

Первым делом необходимо создать владельца карт и назначить ему счета. Обязательный счет один — Потраченные средства. Если хотите использовать скидки, добавьте дисконтный счет. Для бонусов — бонусный.

Создание владельца

Перейдите в меню Справочники > Группы владельцев.

  1. Нажмите кнопку  или Insert на клавиатуре
  2. Укажите название для группы владельцев
  3. Нажмите внизу кнопку  чтобы сохранить изменения
  4. В правом поле нажмите правой кнопкой мыши и выберите пункт Добавить нового владельца
  5. Заполните поля Фамилия и Имя
  6. В разделе Счета нажмите правой кнопкой мыши и выберите Добавить
  7. Выберите ранее созданный счет Потраченные средства и нажмите кнопку Готово
  8. Счет появится в списке. Добавьте желаемые счета аналогичным образом
  9. Нажмите внизу кнопку  чтобы сохранить счета
  10. В правом верхнем углу нажмите кнопку  и согласитесь на сохранение изменений
  11. Готовою. Вы создали владельца — он появится в списке:

Настройка групп карт

Перейдите в меню Справочники > Группы карт и создайте группу карт.

  1. Нажмите кнопку  или Insert на клавиатуре
  2. Укажите название
  3. Нажмите внизу кнопку  для сохранения изменений

Настрока диапазона карт

Перейдите в меню Справочники > Диапазоны карт и создайте новый диапазон.

  1. Нажмите кнопку  или Insert на клавиатуре
  2. Укажите:
    1. Название диапазона
    2. Начальный номер дипазона
    3. Конечный номер диапазона
    4. Необязательно — текущий номер, это число, с которого начинается отсчет
  3. Нажмите кнопку Закрыть

Выпуск карт

После создания владельца необходимо выпустить карту лояльности. Карт может быть несколько, но для примера мы выпустим одну.

  1. Карты бывают 2 видов:
    • Неперсональные, которые можно использовать любому владельцу
    • Персональные, созданные для конкретного владельца. Такие карты мы и выпустим
  2. Нажмите на созданного пользователя правой кнопкой и выберите пункт Выпуск карт
  3. Выберите диапазон
  4. Выберите Группу карт
  5. Укажите период действия карт
  6. Укажите количество выпускаемых карт
  7. Нажмите кнопку Создать карточки и дождитесь окончания задания
  8. Карты выпущены. Нажмите Закрыть

Привязка карт к владельцу

Если выпущенные карты — неперсональные, их необходимо привязать к владельцам.

  1. По умолчанию, в главном меню 3 вкладки:
    • Владельцы
    • Карты
    • Результаты поиска
  2. Перейдите на вкладку Владельцы и выделите требуемого пользователя
  3. Нажмите на него правой кнопкой мыши > Просмотр профиля владельца
  4. Перейдите на вкладку Карты
  5. Нажмите правой кнопкой мыши на пустом поле > Привязать свободные карты к владельцу. Или просто нажмите кнопку 
  6. Выберите желаемые карты, отметив их галочками
  7. Нажмите кнопку Привязать
  8. Карты привяжутся к владельцу. Теперь их можно использовать на кассе. Нажмите Закрыть.

Активация карты на кассе

1. Введение

Предварительно в Редакторе карт создают список неактивных карт, привязывают их клиентам (анонимным по-умолчанию). Активация карты может сопровождаться взиманием средств с клиента.

Для активации карты (перевод состояния карты из неактивного в активный), необходимо произвести некоторые настройки:

1.1. Редактировать секцию [Card System 5] в файле Farcards.ini (п.2.2);

1.2. На менеджерской РК7 добавить скидку с нулевой детализацией, используему специально для операции активации карты с привязанной причиной внесения\выдачи денег.

2. Пошаговые действия

2.1. Создаем скидку/наценку. В свойствах выставляем:

  • режим=наценка
  • налоговая группа=выбираем соответствующую налоговую группу
  • тип=сумма 
  • код транзакции=77 (любое целое число от 0 до 255)
  • добавляем для нашей наценки нулевую детализацию; при необходимости можно задать стоимость.

2.2. Редактирование Farcards.ini

[Card System 5]
Address=127.0.0.1
Port=9191
Log_Level = 10
Log_Count = 5
Qualifier = 2
Images_Path = D:\CS_501\images\
hascredit=1 ;; использовать глубину кредита
; Ниже перечислены основные параметры для активации карты на кассе RKeeper 7
CardActivation_Discount=195  ;; код созданной наценки в п.2.1
CardActivation_Transaction=77 ;; код транзакции наценки из п.2.1
CardActivation_SubAccount=2 ;; код субсчета (1 - 8), на который переводятся средства при проведении транзакции. В нашем случае это "дебетовый1". См. рисунок ниже.
 
 
2.3. Связать наценку с причиной внесения денег (подробнее здесь http://support.ucs.ru/ru/node/6104#header-6)
 
Т.к. в форме "Информации о клиенте" при прокатывании карты нет кнопки "активировать карту", то процесс активации карты происходит при пополнении баланса карты. В редакторе карт об этом можно посмотреть в операциях.
 
 

Импорт данных из файла в базу CRM

Введение

Очень часто возникает необходимость уже имеющиеся данные о клиентах загрузить в базу R-Keeper CRM с целью их дальнейшего использования.

Для этих целей используется программа импорта TXT_to_CRM.exe.  Данная утилита позволяет импортировать данные из подготовленного файла (txt/csv) базу R-Keeper CRM.

Файл TXT_to_CRM можно скачать с FTP-сервера по адресу ftp://ftp.ucs.ru/R-Keeper.CRM/other/TXT_to_CRM7.zip

Внимание! Рекомендуем конвертер(TXT_to_CRM.exe) копировать в выделенную папку на диске либо папку дистрибутива \\R-Keeper CRM\Database\DataMigration\FileToCS5\. При копировании  на рабочий стол возможны проблемы с работой!

Подготовка файла

В импортируемом файле первой строкой обязательно должна идти строка формата данных, содержащая перечисление параметров и символ-разделитель ;, например:

Client_Name;Card_Code_EM_Marin;Summ_1;Summ_2;Group_Name
 
означает, что разделителем параметров будет являться ";" и параметры идут в следующем порядке:
1 - имя клиента
2 - номер карты в формате Card_Code_EM_Marin
3 - сумма для 1 счета
4 - сумма для 2 счета
5 - название группы, в которую перенесутся карты и владельцы карт
 
В заголовке импортируемого файла предусматривается работа со следующими параметрами:
  • CLIENT_NAME;
  • CLIENT_NAME_F;
  • CLIENT_NAME_M;
  • CLIENT_NAME_L;
  • CARD_CODE;
  • CARD_CODE_EM_MARIN;
  • CARD_CODE_HEX;
  • CARD_STATUS;
  • CARD_OFFERED;
  • CARD_EXPIRED;
  • DISPATCH;
  • EXTERNAL_CODE;
  • SOURCE;
  • NOTES;
  • BIRTHDAY;
  • TEL_1;
  • TEL_2;
  • ADDRESS;
  • COUNTRY;
  • CITY;
  • STREET;
  • HOUSE;
  • ENTRY;
  • FLOOR;
  • APARTMENTS;
  • ENTRY_CODE;
  • DOPINFO;
  • BUILDING;
  • EMAIL;
  • SUMM_1;
  • SUMM_2;
  • SUMM_3;
  • SUMM_4;
  • SUMM_5;
  • SUMM_6;
  • GROUP_NAME;
  • CARRIER_DATA;
  • PASSWORD;
  • COMMENT;
  • GENDER
 
Адресная часть:
  • COUNTRY;
  • CITY;
  • STREET;
  • HOUSE;
  • ENTRY;
  • FLOOR;
  • APARTMENTS;
  • ENTRY_CODE;
  • BUILDING - возможно указание с цифровым суффиксом от 1 до 20, т.е. максимум 20 строк адресов.
Например для импорта адреса № 14 необходимо записать наименования полей как: COUNTRY14;CITY14;STREET14;HOUSE14;ENTRY14;FLOOR14;APARTMENTS14;ENTRY_CODE14;BUILDING14.

Описание параметров

CLIENT_NAME - полное имя клиента
CLIENT_NAME_F - имя клиента
CLIENT_NAME_M - отчетство клиента
CLIENT_NAME_L - фамилия клиента
GENDER - пол. В файле загрузки необходимо использовать М \ Ж
 
CARRIER_DATA - информация о магнитной ленте
TEL_1 - номер 1 телефона 
TEL_2 - номер 2 телефона 
ADDRESS - адрес, адрес заносится обычной строкой (формат произвольный) в список контактов
EMAIL - EMail
EXTERNAL_CODE - внешний код (20 символов), должен быть задан у владельца, для осуществления перепривязки ему указанной карты
COMMENT - комментарий к операции начисления на счет
BIRTHDAY - день рождения (YYYY-MM-DD)
NOTES - дополнительная информация (255 символов)
SOURCE - источник (60 символов)

SUMM_1 - сумма, которая будет перенесена в созданный счет (тип счет "SUMM1")
SUMM_2 - сумма, которая будет перенесена в созданный счет (тип счет "SUMM2")
SUMM_3 - сумма, которая будет перенесена в созданный счет (тип счет "SUMM3")
SUMM_4 - сумма, которая будет перенесена в созданный счет (тип счет "SUMM4")
SUMM_5 - сумма, которая будет перенесена в созданный счет (тип счет "SUMM5")
SUMM_6 - сумма, которая будет перенесена в созданный счет (тип счет "SUMM6")

COMMENT - комментарий к транзакции
GROUP_NAME - название группы (с таким названием в карточной системе будут созданы группа карт и группа владельцев)

CITY - город
DISPATCH - контакт подписан на рассылку (чекбокс на закладке "Контакты" в профиле владельца)

CARD_OFFERED - дата выдачи карты
CARD_EXPIRED - дата окончание действия карты

CARD_CODE_HEX - номер карты в hex

CARD_CODE - номер карты (Int64)
CARD_CODE_EM_MARIN - номер карты в формате EM-Marin (123.45678)

PASSWORD - пароль карты
CARD_STATUS - статус карты (есть mapping в Config.ini)

Есть возможность конвертации статуса карты, для чего в Config.ini нужно добавить секцию:
[Card_Status]
;оригинал=статус карты в CRM (1 - активна; 2 - неактивна; 4 - заблокирована)
1=1
0=2
2=4

Ограничение на поля TEL_1, TEL_2, ADDRESS и EMAIL - 255 символов

Поля расположенные в профиле владельца на вкладке "Адреса"
COUNTRY - страна
CITY - город
STREET - улица
HOUSE - дом
BUILDING - строение/корпус
APARTMENT - квартира
ENTRY_CODE - код домофона
DOPINFO - поле "Дополнительно" на вкладке "Адрес" в профиле владельца.
FLOOR - этаж

Фрагмент содержимого файла test_import.txt:

Client_Name;Card_Code;TEL_1;TEL_2;EMAIL;ADDRESS;Summ_1;Summ_2;Group_Name
Васечкин Иван Васильевич;150;84951112231;89261112233;mail@mail.ru;г.Москва,ул.Почтовая,20;1000;2000;niama
<..>.

Настройки в R-Keeper CRM

Настройки касаются справочной информации, которую необходимо ввести в Редакторе карт.

Проверить и отредактировать при необходимости следующие справочники:

- типы счетов (пункт меню "Справочники->Типы счетов");

- типы неплательщиков (пункт меню "Справочники->Типы неплательщиков");

- типы контактов (пункт меню "Справочники->Типы контактов"). Адрес при импорте будет импортироваться в один из созданных типов контактов, например "Адрес";

- желательно использовать отдельный классификатор ПО для выгрузки; к данному классификатору ПО привязать типы счетов с разрешением операций начисления/списания.

Рис.1

Запуск TXT_to_CRM.exe

Есть 2 вида запуска программы:

  • В простом режиме

  • В режиме запуска с параметрами

1. Запуск программы в простом режиме

При запуске программы в простом режиме - без каких-либо параметров, возможность перепривязки карт и автоматического импорта отсутствует, что дает защиту от случайных нежелательных действий.  В простом режиме доступно только редактирование данных владельцев карт.

Для запуска программы в простом режиме, необходимо просто запустить TXT_to_CRM.exe.

2. Запуск программы с параметрами

2.1 Запуск с ключом  /TRANSFER

Дает возможность запуска программы в режиме перепривязки карт от одного владельца к другому, для этого в текстовом файле должно быть заполнено поле EXTERNAL_CODE;
После запуска с данным параметром выдается два предупредительных сообщения(см.рис.2 и рис.3) и только в случае положительного ответа на оба, утилита запускается в режиме перепривязки карт. Только в данном режиме будет доступно поле Идентификатором является (см.рис.4, п.4).

Рис.2

Рис.3

2.2 Запуск с  ключом /AUTO

Позволяет осуществлять импортирование данных в автоматическом режиме без загрузки интерфейсной части.

При автоматической загрузке используются настройки из файла Config.ini. Файл создается после сохранения настроек конфигурации в программе, запущенной без ключа /AUTO.

Примечание: для сохранения настроек в файл необходимо запустить программу без ключа /AUTO, настроить параметры конфигурации и сохранить настройки - кнопка "Config save". В дальнейшем для загрузки данные будут браться из файла, указанного в Config.ini в параметре File_Name. 

2.3 Запуск с ключом /SAVECARDTOCARRIERDATA или /SC2CD

Запуская  программу с параметром /SAVECARDTOCARRIERDATA или /SC2CD, программа перед обработкой номера карты, копирует его (номер карты) в поле CARRIER_DATA. При этом значение из импортируемого файла в поле CARRIER_DATA игнорируется.

Настройка параметров импорта в TXT_to_CRM.exe

Рис.4

 Описание основных функциональных элементов (согласно рис.4):

(1) Позволяет выбрать  загружаемый файл импорта данных, указать ip адрес и порт подключения запущенного сервера авторизации, а так же указать классификатор ПО, настроенный для импорта в редакторе CRM. Файл должен иметь структуру согласно п.2

(2) Кнопки Config load/Config save используются для сохранения и загрузки конфигурации из файла(config.ini).

При первом запуске, после выбора файла и внесения всех необходимых изменений в параметры подключения необходимо установить соединение с сервером CRM и инициализировать загрузку в программу типов счетов для дальнейшей настройки, для этого загружаем конфигурацию нажатием на кнопку Config load.

После редактирования всех доступных параметров сохраняем их в файл нажатием на кнопку Config save (будет создан файл Config.ini).

(3) Управляющий элемент, позволяющий задать группу CRM, куда будет произведен импорт данных.

(4) Управляющий элемент, доступный в режиме работы программы  с ключом  /Transfer (см.п.4.2.1), позволяющий задать идентификатор, для  перепривязки нужно выбрать внешний код владельца(external_code).

(5) Список типов счетов CRM на которые будет происходить импорт сумм из загруженного файла. Для каждого типа счета есть возможность установки флага обнуления  перед импортом суммы и флага включения свойства автоперехода.

После задания всех необходимых параметров, процесс переноса данных запускается нажатием кнопки Import data, а ход выполнения отображается в строке прогресса.

Примечание: в последних версиях появилась возможность выбора кодировки файла и автосоздание заголовка

Рис. Выбор кодировки файла и использование заголовка

Настройка SQL-акций

Кем обрабатываются акции?

Важно: для работы SQL акций необходимо в папке BIN создать папку Plugins и в нее скопировать скрипт акции (csa_transaction_*.csa). После необходимо перезапустить Редактор карт.

MSSQL акции могут исполняться:
  1. сервером автоматических процессов по рассписанию (csa_scheduler_*.csa)
  • межуровневый переход

  • формирование сообщения для рассылки

  • периодеческое пополнение счета

  1. при запросе информации о счетах владельца, например, при прокатывании картой на кассе (csa_accountinfo_*.csa)
  • изменение базовой ставки

  • лимитирование суммы доступной на кассе

  1. при проведении транзакций, например, при закрытии чека (csa_transaction_*.csa)
  • поощрение владельца на основании сделанной покупки, например, выдача и печать купона

В 1-ом случае sql скрипт исполняется на базе данных для совершения каких либо действий.

Например, пересмотреть все бонусные или дисконтные счета и при необходимости установить нужный уровень счетам. Или установить/доначислить определенную сумму на дебетовый счет.

AccountClass — заполняется "0"

AccountTypeID — заполняется "0"

AccountID — заполняется "0"

ActionID — ID акции

ActionType — подкод акции (9997)

ClientID — ID классификатора, указанного в конфигурации

В 2-ом случае при выполнения каких то условий, sql скрипт должен выдать соответствующие данные через выполнение sql запроса (обязательно выполняется последним в скрипте).

Например, по переданному сервером карт номеру счета, применить условия достаточные для изменения базовой ставки или ограничить сумму, оперируемой на кассе.

AccountClass — класс передаваемого счета

AccountTypeID — тип передаваемого счета

AccountID — ID передаваемого счета

CardCode — номер карты

ActionID — ID акции

ActionType — подкод акции (9998)

ClientID — ID классификатора, указанного в конфигурации

ClientTime — локальное время запроса, например, время кассы или farcards (в CRM 6.00

указывается с учетом часовых поясов)

UnitID — ID станции, от которой пришел запрос

UserID — ID пользователя (например, кассира), от которого пришел запрос

В 3-ем случае при выполнении каких то условий, sql скрипт должен выдать соответствующие данные через выполнение sql запроса (обязательно выполняется последним в скрипте):

AccountClass — класс передаваемого счета

AccountTypeID — тип передаваемого счета

AccountID — ID передаваемого счета

CardCode — номер карты

ActionID — ID акции

ActionType — подкод акции (9999)

ClientID — ID классификатора, указанного в конфигурации

ClientTime — локальное время запроса, например, время кассы или farcards (в CRM 6.00

указывается с учетом часовых поясов)

UnitID — ID станции, от которой пришел запрос

UserID — ID пользователя (например, кассира), от которого пришел запрос

TransactGUID — GUID пакета транзакции (важно для сохранения целостности пакета, так

как основные транзакции ложатся через сервер авторизации карт)

ExternalID — внешний код транзакции (например, номер чека)

ExternalIndex — внешний подкод транзакции (например, дата смены)

CheckData — полученный xml пакет от внешней системы (например, xml-чек)

Состав и настройка скрипта

Скрипт делится на 3 основные части:

  1. инициализация переменных (в обязательном порядке для параметров настройки)

  2. настройках (xml для визуального отображения настройки)

  3. логическая часть скрипта (собственно сама бизнес логика акции)

Настройка акций оператором CRM осуществляется на основе встроенного xml (обязательно обернутого в комментарий). Ниже представлены элементы настройки.

При написании текста в подсказке (Hint) для перевода строки используйте \r (так же учитывайте спец. символы).

Примеры скриптов

1. Разделение на визуальные группы (отступ между визуальными элементами больше)

/*

<Script_Params>

<Param Caption="" Type="Line" />

</Script_Params>

*/

2. Ввод текстовой информации

-- инициализация переменной

declare @Notes varchar(max)

set @Notes = ''

-- визуальное отображение для настройки оператором CRM

/*

<Script_Params>

<Param Name="Notes"

Caption="Комментарий"

Hint="Комментарий к транзакции"

Type="Edit"

Type_Param="255"

ReadOnly="False"

Width="300"/>

</Script_Params>

*/

Атрибуты элемента настройки:

Name — название переменной (должно совпадать с инициализированной переменной)

Caption — название переменной, читаемое оператором CRM

Hint — подсказка, отображаемая в справочнике акций

Type — визуальное отображение переменной (Edit)

Type_Param — максимальное количество символов (не обязательный)

ReadOnly — флаг активности элемента (не обязательный):

True – элемент доступен только на просмотр

False – элемент доступен к редактированию (по умолчанию)

Width — ширина элемента в пикселах (не обязательный)

3. Ввод текстовой информации по маске

-- инициализация переменной

declare @ExtensionRate numeric(14,2)

set @ExtensionRate = 0.00

-- визуальное отображение для настройки оператором CRM

/*

<Script_Params>

<Param Name="ExtensionRate"

Caption="Процентная ставка скидки/бонуса"

Hint="Процентная ставка скидки/бонуса"

Type="Mask"

Type_Param="\-?\d\d?\d?\d?\d?\d?\d?\d?\d?\d?\d?\d? (\,|\.)? (\d\d?)?"/>

Width="300"

</Script_Params>

*/

Атрибуты элемента настройки:

Name — название переменной (должно совпадать с инициализированной переменной)

Caption — название переменной, читаемое оператором CRM

Hint — подсказка, отображаемая в справочнике акций

Type — визуальное отображение переменной (Mask)

Type_Param — маска ввода данных, поддерживаются типы данных:

numeric(14,2) — \-?\d\d?\d?\d?\d?\d?\d?\d?\d?\d?\d?\d? (\,|\.)? (\d\d?)?

int — \d?\d?\d?\d?

varchar(???) — любой формат маски (в приложении А представлено описание), который в дальнейшем

будет обработан в скрипте

ReadOnly — флаг активности элемента (не обязательный):

True – элемент доступен только на просмотр

False – элемент доступен к редактированию (по умолчанию)

Width — ширина элемента в пикселах (не обязательный)

4. Выбор одного параметра из представленного в настройке списка

-- инициализация переменной

declare @Period int

set @Period = 2

-- визуальное отображение для настройки оператором CRM

/*

<Script_Params>

<Param Name="Period"

Caption="Тип периода"

Hint="Тип периода"

Type="ComboBox">

<Item Value="1" Caption="День" Display="День" Default="True"/>

<Item Value="2" Caption="Неделя" Display="Неделя"/>

<Item Value="3" Caption="Месяц" Display="Месяц"/>

</Param>

</Script_Params>

*/

Атрибуты элемента настройки:

Name — название переменной (должно совпадать с инициализированной переменной)

Caption — название переменной, читаемое оператором CRM

Hint — подсказка, отображаемая в справочнике акций

Type — визуальное отображение переменной (ComboBox)

Clear — флаг очистки параметра (не обязательный)

True – разрешить оставлять поле чистым (горячие клавиши: Alt + Backspace)

False – запретить очистку параметра (по умолчанию)

Sorted — флаг сортировки (не обязательный)

True – сортировка включена

False – сортировка выключена (по умолчанию)

ReadOnly — флаг активности элемента (не обязательный):

True – элемент доступен только на просмотр

False – элемент доступен к редактированию (по умолчанию)

Width — ширина элемента в пикселах (не обязательный)

Дочерний список выбора значения параметра:

Item — список элементов выбора

Атрибуты элементов списка:

Item.Value — значение элемента, которое будет присвоено инициализированной переменной

Item.Caption — полное название элемента выбора в выпадающем списке

Item.Display — краткое название элемента выборка

Item.Default — значение по умолчанию

True – элемент по умолчанию

False – обычный элемент для выбора

5. Выбор нескольких параметров из представленного в настройке списка

-- инициализация переменной

declare @Period varchar(max)

-- параметр заполняется значениями Value, перечисленными через ","

set @Period = ''

-- визуальное отображение для настройки оператором CRM

/*

<Script_Params>

<Param Name="Period"

Caption="Тип периода"

Hint="Тип периода"

Type="CheckBox">

<Item Value="1" Caption="День" Display="День" Default="True"/>

<Item Value="2" Caption="Неделя" Display="Неделя"/>

<Item Value="3" Caption="Месяц" Display="Месяц"/>

</Param>

</Script_Params>

*/

Атрибуты элемента настройки:

Name — название переменной (должно совпадать с инициализированной переменной)

Caption — название переменной, читаемое оператором CRM

Hint — подсказка, отображаемая в справочнике акций

Type — визуальное отображение переменной (CheckBox)

Clear — флаг очистки параметра (не обязательный)

True – разрешить оставлять поле чистым (горячие клавиши: Alt + Backspace)

False – запретить очистку параметра (по умолчанию)

ReadOnly — флаг активности элемента (не обязательный):

True – элемент доступен только на просмотр

False – элемент доступен к редактированию (по умолчанию)

Width — ширина элемента в пикселах (не обязательный)

Дочерний список выбора значения параметра:

Item — список элементов выбора

Атрибуты элементов списка:

Item.Value — значение элемента, которое будет присвоено инициализированной переменной

Item.Caption — полное название элемента выбора в выпадающем списке

Item.Display — краткое название элемента выборка

Item.Default — значение по умолчанию

True – элемент по умолчанию

False – обычный элемент для выбора

6. Выбор одного параметра из списка, основанного на данных из SQL запроса

Пример 1

-- инициализация переменной

declare @AccountType int

set @AccountType = 0

-- визуальное отображение для настройки оператором CRM

/*

<Script_Params>

<Param Name="AccountType"

Caption="Тип проверяемого счета"

Hint="Тип счета, по которому ведется проверка"

SQLQuery="select ACCOUNT_TYPE_ID as ID, NAME as CAPTION from CARD_ACCOUNT_TYPES

where DELETED = 0 and ACCOUNT_CLASS in (1,3,4)"

Type="ComboBox">

</Param>

</Script_Params>

*/

Атрибуты элемента настройки:

Name — название переменной (должно совпадать с инициализированной переменной)

Caption — название переменной, читаемое оператором CRM

Hint — подсказка, отображаемая в справочнике акций

Type — визуальное отображение переменной (ComboBox)

SQLQuery — sql запрос, данные которого будут отображаться в списке (обязательные поля ID

и CAPTION)

Sorted — флаг сортировки (не обязательный)

True – сортировка включена

False – сортировка выключена (по умолчанию)

Clear — флаг очистки параметра (не обязательный)

True – разрешить оставлять поле чистым (горячие клавиши: Alt + Backspace)

False – запретить очистку параметра (по умолчанию)

ReadOnly — флаг активности элемента (не обязательный):

True – элемент доступен только на просмотр

False – элемент доступен к редактированию (по умолчанию)

Width — ширина элемента в пикселах (не обязательный)

Пример 2

-- инициализация переменной

declare @AccountType int

set @AccountType = 0

-- визуальное отображение для настройки оператором CRM

/*

<Script_Params>

<Param Name="AccountTypes"

Caption="Тип проверяемого счета"

Hint="Тип счета, по которому ведется проверка"

SQLQuery="select ACCOUNT_TYPE_ID as ID, NAME as CAPTION, case ACCOUNT_CLASS when 1

then 'Бонусный' when 2 then 'Дисконтный' when 3 then 'Дебетовый' when 4 then 'Кредитный' when 5 then

'Потраченые средства' when 99 then 'Пользовательский' else '' end as ACCOUNT_CLASS from

CARD_ACCOUNT_TYPES where DELETED = 0 and ACCOUNT_CLASS in (1,2,3,4,5,99)"

Sorted="true"

Type="ExtComboBox">

<Field Name="ID" Caption="" Visible="False"/>

<Field Name="ACCOUNT_CLASS" Caption="Уровень" Visible="True" Sorted="True" Width="35"/>

<Field Name="CAPTION" Caption="Название" Visible="True" Sorted="True" Width="65"/>

</Param>

</Script_Params>

*/

Атрибуты элемента настройки:

Name — название переменной (должно совпадать с инициализированной переменной)

Caption — название переменной, читаемое оператором CRM

Hint — подсказка, отображаемая в справочнике акций

Type — визуальное отображение переменной (ExtComboBox)

SQLQuery — sql запрос, данные которого будут отображаться в списке (обязательные поля ID

и CAPTION)

Clear — флаг очистки параметра (не обязательный)

True – разрешить оставлять поле чистым (горячие клавиши: Alt + Backspace)

False – запретить очистку параметра (по умолчанию)

ReadOnly — флаг активности элемента (не обязательный):

True – элемент доступен только на просмотр

False – элемент доступен к редактированию (по умолчанию)

Width — ширина элемента в пикселах (не обязательный)

Дочерний список полей sql запроса:

Field — список полей sql запроса

Атрибуты элементов списка:

Field.Name — название поля sql запросе

Field.Caption — название поля, читаемое оператором CRM

Field.Visible — флаг возможности отображать поле для оператора CRM

True – поле доступно для отображения

False – сортировка выключена (по умолчанию)

Field.Sorted — флаг сортировки (не обязательный)

True – сортировка включена

False – сортировка выключена (по умолчанию)

Field.Width — ширина поля

При выборе элемента списка происходит пересмотр данных в других списках (ComboBox,

CheckBox, ExtComboBox) и таблицах (Grid), основанных на sql запросах. Для этого в sql

запросе зависимого элемента настройки указывается текущий параметр. Ниже приведен

пример зависимости параметра AccountLevels от AccountTypeEdit:

<Param Name="AccountType"

Caption="Тип счета"

SQLQuery="select ACCOUNT_TYPE_ID as ID, NAME as CAPTION from CARD_ACCOUNT_TYPES

where DELETED = 0 and ACCOUNT_CLASS in (1,2)"

Type="ExtComboBox">

<Field Name="ID" Caption="" Visible="False"/>

<Field Name="CAPTION" Caption="Название" Visible="True" Sorted="True"/>

</Param>

<Param Name="AccountLevels"

Caption="Уровни счета"

SQLQuery="select ACCOUNT_LEVEL_ID as ID, NAME as CAPTION from CARD_ACCOUNT_LEVELS

where DELETED = 0 and ACCOUNT_TYPE_ID = coalesce(@AccountType, 0)"

Type="CheckBox">

</Param>

7. Выбор нескольких параметров из списка, основанного на данных из SQL запроса

-- инициализация переменной

declare @AccountTypes varchar(max)

-- параметр заполняется значениями поля ID, перечисленными через ","

set @AccountTypes = ''

-- визуальное отображение для настройки оператором CRM

/*

<Script_Params>

<Param Name="AccountTypes"

Caption="Тип проверяемого счета"

Hint="Тип счета, по которому ведется проверка"

SQLQuery="select ACCOUNT_TYPE_ID as ID, NAME as CAPTION from CARD_ACCOUNT_TYPES

where DELETED = 0 and ACCOUNT_CLASS in (1,3,4)"

Type="CheckBox">

</Param>

</Script_Params>

*/

Атрибуты элемента настройки:

Name — название переменной (должно совпадать с инициализированной переменной)

Caption — название переменной, читаемое оператором CRM

Hint — подсказка, отображаемая в справочнике акций

Type — визуальное отображение переменной (CheckBox)

SQLQuery — sql запрос, данные которого будут отображаться в списке (обязательные поля ID

и CAPTION)

Clear — флаг очистки параметра (не обязательный)

True – разрешить оставлять поле чистым (горячие клавиши: Alt + Backspace)

False – запретить очистку параметра (по умолчанию)

ReadOnly — флаг активности элемента (не обязательный):

True – элемент доступен только на просмотр

False – элемент доступен к редактированию (по умолчанию)

Width — ширина элемента в пикселах (не обязательный)

8. Ввод информации в табличной форме

-- инициализация переменной

-- AccountLevels.Grid.Insert.Begin

-- заполнение переменной будет осуществлена в момент сохранения параметров таблицы

-- переменная представлять собой временную локальную таблицу с префиксом TMP_ACTION_

-- для данного примера это будет выглядеть следующим образом (#TMP_ACTION_AccountLevels):

if OBJECT_ID ('tempdb..#TMP_ACTION_AccountLevels') IS NULL begin

create table #TMP_ACTION_AccountLevels (ACCOUNT_LEVEL_ID int, NAME nvarchar(60), LEVEL_NO int,

STARTED int, SUMM_UP numeric(14,2), COUNT_UP int, FIXING int, PERIOD_VALUE int, SUMM_DOWN

numeric(14,2), COUNT_DOWN int, SUMM_PAY numeric(14,2), COUPON_TYPE_ID int)

end else begin

delete #TMP_ACTION_AccountLevels

end

-- AccountLevels.Grid.Insert.End

-- визуальное отображение для настройки оператором CRM

/*

<Script_Params>

<Param Name="AccountLevels"

Caption="Уровни"

Hint="&quot;&#9733;&quot; - Стартовый уровень\r&quot;&#9650; Сумма&quot; - сумма необходимая

для повышения уровня\r&quot;&#9650; Визит&quot; - количество транзакций необходимых для повышения

уровня\r&quot;&#9660; Сумма&quot; - сумма, меньше которой произойдет понижение уровня\r&quot;&#9660;

Визит&quot; - количество, меньше которого произойдет понижение уровня\r&quot;Списание&quot; - сумма,

которая спишется за повышение уровня (все &quot;9&quot; - обнуление)"

Type="Grid"

SQLQuery="select ACCOUNT_LEVEL_ID, NAME, LEVEL_NO from CARD_ACCOUNT_LEVELS where

ACCOUNT_TYPE_ID = coalesce(@AccountTypeEdit, 0) and DELETED = 0"

Insert="False"

Delete="False">

<Field Name="ACCOUNT_LEVEL_ID" Type="int" Key="True" Caption="" Visible="False"/>

<Field Name="NAME" Type="nvarchar(60)" Caption="Название" Visible="True" Width="26"/>

<Field Name="LEVEL_NO" Type="int" Caption="&#8470;" Visible="True" Sorted="True" Width="5"/>

<Field Name="STARTED" Type="radiobox" Caption="&#9733;" Visible="True" ReadOnly="False" Width="5"/>

<Field Name="SUMM_UP" Type="numeric(14,2)" Caption="&#9650; Сумма" Visible="True" ReadOnly="False"

Width="11" Mask="\d?\d?\d?\d?\d?\d?\d?\d?\d?\d? (\,|\.)? (\d?\d?)?"/>

<Field Name="COUNT_UP" Type="int" Caption="&#9650; Визиты" Visible="True" ReadOnly="False" Width="8"

Mask="\d?\d?\d?"/>

<Field Name="FIXING" Type="int" Caption="Фиксация" Visible="True" ReadOnly="False" Width="8"

Mask="\d?\d?\d?"/>

<Field Name="PERIOD_VALUE" Type="int" Caption="Период" Visible="True" ReadOnly="False" Width="8"

Mask="\d?\d?\d?"/>

<Field Name="SUMM_DOWN" Type="numeric(14,2)" Caption="&#9660; Сумма" Visible="True"

ReadOnly="False" Width="11" Mask="\d?\d?\d?\d?\d?\d?\d?\d?\d?\d? (\,|\.)? (\d?\d?)?"/>

<Field Name="COUNT_DOWN" Type="int" Caption="&#9660; Визиты" Visible="True" ReadOnly="False"

Width="8" Mask="\d?\d?\d?"/>

<Field Name="SUMM_PAY" Type="numeric(14,2)" Caption="Списание" Visible="True" ReadOnly="False"

Width="11" Mask="\d?\d?\d?\d?\d?\d?\d?\d?\d?\d? (\,|\.)? (\d?\d?)?"/>

<Field Name="COUPON_TYPE_ID" Type="int" Caption="Тип купона" Visible="True" ReadOnly="False"

Width="15" SQLQuery="select COUPON_TYPE_ID as ID, NAME as CAPTION from CARD_COUPON_TYPES

where DELETED = 0 and FLAGS &amp; 4 &gt; 0 and ((SUBSCRIBE_DATE_FROM &lt;=

CURRENT_TIMESTAMP) or (SUBSCRIBE_DATE_FROM is null)) and ((SUBSCRIBE_DATE_TO &gt;=

CURRENT_TIMESTAMP) or (SUBSCRIBE_DATE_TO is null))">

<Field Name="ID" Caption="" Visible="False"/>

<Field Name="CAPTION" Caption="Название" Visible="True" Sorted="True" Width="100"/>

</Field>

</Param>

</Script_Params>

*/

Атрибуты элемента настройки:

Name — название переменной (должно совпадать с инициализированной переменной)

Caption — название переменной, читаемое оператором CRM

Hint — подсказка, отображаемая в справочнике акций

Type — визуальное отображение переменной (Grid)

SQLQuery — sql запрос, данные которого будут редактироваться

ReadOnly — флаг активности элемента (не обязательный):

True – элемент доступен только на просмотр

False – элемент доступен к редактированию (по умолчанию)

Delete — флаг удаления строк в таблице (не обязательный):

True – разрешено удалять строки

False – запрещено удалять строки (по умолчанию)

Insert — флаг удаления строк в таблице (не обязательный):

True – разрешено добавлять строки

False – запрещено добавлять строки (по умолчанию)

Дочерний список полей sql запроса:

Field — список полей sql запроса

Атрибуты элементов списка:

Field.Name — название поля sql запросе

Field.Caption — название поля, читаемое оператором CRM

Field.Type — тип данных:

numeric(14,2)

int

varchar(???)

radiobox – выбор одной строки таблицы (тип данных: int)

1 – строка выбрана

0 – строка не выбрана

checkbox – выбор нескольких строк таблицы (тип данных: int)

1 – строка выбрана

0 – строка не выбрана

Field.Key — флаг первичного ключа (должно быть 1 ключевое поле)

True – поле является ключем

False – поле не является ключем (по умолчанию)

Field.Visible — флаг возможности отображать поле для оператора CRM

True – поле доступно для отображения

False – сортировка выключена (по умолчанию)

Field.ReadOnly — флаг активности поля (не обязательный):

True – поле доступно только на просмотр (по умолчанию)

False – поле доступно к редактированию

Field.Sorted — флаг сортировки (не обязательный)

True – сортировка включена

False – сортировка выключена (по умолчанию)

Field.Width — ширина поля

Field.SQLQuery — sql запрос, который предоставит список для выбора значения (доступно с

CRM 6.00)

Field.Mask — маска ввода данных, поддерживаются типы данных:

numeric(14,2) — \-?\d\d?\d?\d?\d?\d?\d?\d?\d?\d?\d?\d? (\,|\.)? (\d\d?)?

int — \d?\d?\d?\d?

varchar(???) — любой формат маски (в приложении А представлено описание), который в дальнейшем будет обработан в скрипте

Так как атрибуты и теги влияют на тип отображения поля, присутствует приоритетность:

  • Mask (строка с указанной маской)

  • Type (приоритет актуален при указании radiobox и checkbox)

  • Item (выпадающий список, представленный в xml настройке)

  • SQLQuery (выпадающий список на основе данных из базы)

Если указан атрибут Mask, то списки или флаги не доступны к отображению.

Дочерний список выбора значения поля:

Field.Item — список элементов выбора

Атрибуты элементов списка:

Field.Item.Value — значение элемента

Field.Item.Caption — полное название элемента выбора в выпадающем списке

Field.Item.Display — краткое название элемента выборка

Дочерний список полей sql запроса (при указании атрибута SQLQuery):

Field.Field — список полей sql запроса

Атрибуты элементов списка:

Field.Field.Name — название поля sql запросе

Field.Field.Caption — название поля, читаемое оператором CRM

Field.Field.Visible — флаг возможности отображать поле для оператора CRM

True – поле доступно для отображения

False – сортировка выключена (по умолчанию)

Field.Field.Sorted — флаг сортировки (не обязательный)

True – сортировка включена

False – сортировка выключена (по умолчанию)

Field.Field.Width — ширина поля

Приложение А

Маска состоит из разделенных символом трех полей:

1. первое поле является собственно маской;

2. второе поле — это символ, определяющий, считаются ли литеральные символы частью данных. По

умолчанию используется 1, и литеральные символы маски являются частью не только значения,

редактируемого в визуальном компоненте, но и значения, содержащегося в поле. Если вместо 1 установить

символ о, то литеральные символы маски по-прежнему будут отображаться при редактировании значения,

однако в поле не сохраняются. Литеральные символы удобно применять в качестве разделителей, например,

при вводе телефонных номеров;

3. третье поле содержит символ, используемый для указания незаполненных символов во вводимом тексте,

по умолчанию это символ подчеркивания.

Если второе и/или третье поля не определены, то для них действуют значения по умолчанию.

В маске могут использоваться следующие специальные символы:

! — в тексте подавляются начальные пробелы; если символ ! отсутствует, то подавляются конечные пробелы;

> — символы, следующие за этим символом, до появления символа < переводятся в верхний регистр;

< — символы, следующие за этим символом, до появления символа > переводятся в нижний регистр;

<> — проверка регистра символов не производится;

\ — символ, следующий за этим символом, является литеральным;

L — в позиции должен быть введен алфавитный символ;

l — (строчная латинская буква l)— в позиции может быть введен алфавитный символ;

A— в позиции должен быть введен алфавитно-цифровой символ;

а — в позиции может быть введен алфавитно-цифровой символ;

C — в позиции должен быть введен символ;

с — в позиции может быть введен символ;

0 — в позиции должен быть введен цифровой символ;

9 — в позиции может быть введен цифровой символ;

# — в позиции может быть введен цифровой символ или знаки + и — ;

: — используется для разделения часов, минут и секунд в показаниях времени;

/ — используется для разделения дней, месяцев и лет в датах;

; — разделяет поля маски;

_ — оставляет в окне редактирования пустое пространство, являющееся автоматически пропускаемым разделителем, в которое нельзя ввести информацию.

Примеры масок:

!99/99/00; 1;_ — для даты;

!000−00−00; 1;_ — для семизначного телефонного номера, разделитель «-» является частью редактируемого и

запоминаемого значения;

!000−00−00, −0;_ — для семизначного телефонного номера, разделитель «-» является частью только

редактируемого значения;

!90:00; 1;_ — для времени;

1_1_1_1_1_1_;1;_ — для слова длиной в шесть букв максимум (между буквами отображаются пробелы).

 

The major feature of the MaskEdit is the edit mask that provides mask validating and the formatting of user input.

MaskEdit supports three types of edit mask.

Standard

The standard edit mask is a string that consists of three fields with semicolons separating them. The first part of the

mask is the mask itself. The second part is the character that determines whether literal characters within the mask are

saved as part of the data. The third part of the mask is the character used to represent un-entered characters in the mask.

These are the special characters used in the first field of the mask:

Character                       Meaning in mask

!                             If the ! character appears in the mask, optional characters are represented in the text as leading blanks. If the ! character is not present, optional characters are represented in the text as trailing blanks.

>                            If the > character appears in the mask, all characters that follow are in uppercase until the end of the mask or until the < character is encountered.

<                            If the < character appears in the mask, all characters that follow are in lowercase until the end of the mask or until the > character is encountered.

<>                          If these two characters appear together in the mask, no case checking is done and the data is formatted with the case the user uses to enter data.

\                              The character that follows the \ character is a literal character. Use this character to use any of the mask special characters as a literal in the entered data.

L                             The L character requires an alphabetic character only in this position. For the US, this is A-Z, a-z.

l                              The l character permits only an alphabetic character in this position, but doesn't require it.

A                            The A character requires an alphanumeric character only in this position. For the US, this is A-Z, a-z, 0-9.

a                            The a character permits an alphanumeric character in this position, but doesn't require it.

C                           The C character requires an arbitrary character in this position.

c                            The c character permits an arbitrary character in this position, but doesn't require it.

0                           The 0 character requires a numeric character only in this position.

9                           The 9 character permits a numeric character in this position, but doesn't require it.

#                           The # character permits a numeric character or a plus or minus sign in this position, but doesn't require it.

:                            The : character is used to separate hours, minutes, and seconds in times. If the character that separates hours, minutes, and seconds differs from the regional settings of the Control Panel utility on your computer system, that character is used instead.

/                            The / character is used to separate months, days, and years in dates. If the character that separates months, days, and years differs from the regional settings of the Control Panel utility on your computer system, that character is used instead.

;                            The ; character is used to separate the three fields of the mask.

_                          The _ character automatically inserts spaces into the text. When the user enters characters in the field, the cursor skips the _ character.

 
Any character that does not appear in the preceding table can appear in the first part of the mask as a literal character. Literal characters must be matched exactly in the edit control. They are inserted automatically, and the cursor skips over them during editing. The special mask characters can also appear as literal characters if preceded by a backslash character (\). The second field of the mask is a single character that indicates whether literal characters from the mask should be included as part of the text for the edit control. For example, the mask for a telephone number with area code could be the following string:
(000)_000-0000;0;*
The 0 in the second field indicates that the Text property for the edit control would consist of the 10 digits that were entered, rather than the 14 characters that make up the telephone number as it appears in the edit control. A 0 in the second field indicates that literals should be omitted, any other character indicates that they should be included.
The third field of the mask is the character that appears in the edit control for blanks (characters that have not been entered). By default, this is the same as the character that stands for literal spaces. The two characters appear the same in an edit window. However, when a user edits the text in a masked edit control, the cursor selects each blank character in turn, and skips over the space character.
 
Regular Expressions
 
MaskEdit supports regular expressions to validate and format user input.
Reference A regular expression can consist of characters (letters, digits and others which are not command characters), command characters and metacharacters.
 
1. Characters If one of the characters listed below occurs in the mask, the input string must contain the same character at this position. The following characters are supported: A-Z, a-z, 0-9, and non-letter and non–digit characters: ~, ', !, @, #, $, %, ^, &, -, _, =, ,, <, >, /, ;, :, ". Note: you can use other characters by placing \ before them. For instance, \[ will be treated as [ by the regular expression compiler. Spaces are ignored by the compiler unless they are enclosed in single quotes - '.
Example: The Making' 'RAD' 'a' 'Reality! expression matches only the Making RAD a Reality! string.
 
2. Command characters: These characters are not interpreted as symbols but as commands by the compiler. They are used to organize grouping, quantifications and conditions. Grouping: Character Sequence Grouping – ( ) This grouping is commonly used in quantifier operations: ?, +, *. (These are described later.) Examples: (a)+ matches a, aaa or aaaa. (+ means that the preceding character can occur one or more times) (abc)+ matches abc, abcabc or abcabcabc. This grouping is also used in back references. A back reference is a part of regular expression that can be referenced via a special metacharacter \n (where 1 =< n =< 9). You can use them in the expression to make it shorter and easier to read. The 3abcabcabc expression will be better written as 3(abc)\1\1. In this example the \1 references abc sequence.
OR Grouping – [ ] Means that any symbol listed within square brackets can represent a character. Examples: [bfc]at matches bat, fat and cat. OR grouping supports all quantifiers: ?, * and + (described later). But quantifiers enclosed in square brackets are treated
as simple characters. [bfc]?at matches bat, fat, cat and at. b[oa]+t matches bot, bat, boot and boat. a[in]*t matches at, ait and ant. OR grouping supports ranges: [A-Z] matches any Latin capital letter. [0-9A-Fa-f] matches any hexadecimal number. Exclusive OR Grouping – [^] Means that any symbol except those in square brackets can represent a character. Example: [^abc] matches any symbol except a, b, and c. Exclusive OR grouping supports all quantifiers: ?, * and +.(described later). But quantifiers enclosed in square brackets
are treated as simple characters. Example: [^0-9]+ Matches any text sting without digits (for instance, ExpressQuantumGrid but not ExpressQuantumGrid4). Variant Grouping – ( | ) Contains several sequences that can match on an OR basis. Example: (b|z)oo matches both zoo and boo. (abc|123) matches abc and 123. Quantifiers * matches the preceding expression zero or more times. The expression can be a symbol or group of symbols. Example: zo* matches z, zo and zoo. [#$][0-9a-f]* matches $00ff00, #ff1234234, $ or #. [0-9]*[.][0-9] matches any
decimal value with a single digit after the decimal separator. (a|b|c)* matches aaaa, bbb, cc, abc, acc, cba or an empty string. + matches the preceding expression one or more times. The expression can be a symbol or group of symbols. Example: zo+ matches zo and zoo, but not z. $[0-9]+.99 matches any string, thus representing a currency format. [#$] [0-9a-f]+ matches $00ff00, #ff1234234, but not $ or #. ? matches the preceding expression zero or one time. The expression can be a symbol or group of symbols.
Example: zoo? matches zo and zoo, but not z. [#$][0-9a-f]? - matches $, #e, but not #2a.
{n} matches the preceding expression exactly n times. The expression can be a symbol or group of symbols.
Example: zo{2} matches zoo but not zo or zooo. $[0-9a-f]{8} matches $00ff01de but not $ff or $0ffffe333.
{n,} matches the preceding expression at least n times. The expression can be a symbol or group of symbols.
Example: zo{2,} matches zoo or zooo but not z or zo. $[0-9a-f]{4,} matches $00ff or $ffddee but not $ff.
{n,m} matches the preceding expression at least n times and at most m times. The expression can be a symbol or group
of symbols.
Example: zo{1,2} matches zo and zoo but not z or zooo. $[0-9a-f]{4,8} matches $00ff01de and $00ff but not $ff or
$0ffffe333.
 
3. Metacharacters Metacharacters are used to represent a symbol or a range of symbols.
Character       Description
\d                   Matches a digit character. Equivalent to [0-9].
\D                   Matches a non digit character. Equivalent to [^0-9].
\f                     Matches a form-feed character. Equivalent to \x0c.
\n                   Matches a new line character. Equivalent to \x0a.
\r                    Matches a carriage return character. Equivalent to \x0d.
\s                   Matches any white space character including space, tab, form-feed, etc.
\S                  Matches any non white space character.
\t                   Matches a tab character. Equivalent to \x09.
\w                 Matches any word character including underscore. Equivalent to '[A-Za-z0-9_]'.
\W                Matches any non-word character. Equivalent to '[^A-Za-z0-9_]'.
\xn               Matches n, where n is a hexadecimal escape value. Hexadecimal escape values must be exactly two digits long. For example, '\x41' matches "A". '\x041' is equivalent to '\x04' & "1". Allows ASCII codes to be used in regular expressions.
.                    Matches any symbol. It is treated as full stop within square brackets.
 
Examples:
\d\d\d\-\d\d\-\d\d matches any phone number (for instance 555-65-92 or 123-45-67).
\w+\d? matches any sequence on non-digit characters followed by an optional digit (for instance
ExpressQuantumGrid or ExpressQuantumGrid4 but not All4You).
Some complex examples of regular expressions:
([01]?\d|2[0-3]):[0-5]\d:[0-5]\d – a regular expression representing the pattern for 24 hours time format.
Let us consider it in detail: [01]?\d matches any number between 0 and 19. Zero can precede single digit numbers (for instance 0, 5, 02 or 14). 2[0-3] matches any number between 20 and 23. ([01]?\d|2[0-3]) matches any number between
0 and 23. : - means that there must be a valid time separator. A valid time separator is obtained from the system regional settings. [0-5]\d matches any number between 0 and 59. Zero precedes all single digit numbers (for instance 00, 05, 34,59)
[\w\-.]+@[\w\-]+(\.[\w\-]+)+ - a regular expression that represents a pattern for e-mail addresses.
Let us consider it in detail: [\w\-.]+ matches any letter, digit, hyphen, underscore or full stop one or more times. [\w\-]+ matches any letter, digit, underscore or hyphen one or more times. (\.[\w\-]+)+ matches full stop followed by a letter, digit, underscore or hyphen sequence one or more times.
 
Extended Regular Expression
This is similar to a regular expression but with an added auto complete facility. If, while entering text into a MaskEdit a
user has no alternative text to enter, the text is auto-completed to the point where an alternative appears again. For
example, the regular expression is:
\w+' 'like' '\w+' 'apples!
After a user enters, for instance 'I' and presses the space button, the text is auto completed to the following:
'I like ';
After a user enters, for instance 'red' and presses space again, the text is auto completed to the following:
'I like red apples!'

Приложение B

Работа с флагами.

Флаг может быть выставлен либо сброшен, то есть подразумевается работа с битовыми масками. Например, при поле флагов Int32 у нас имеется 32 бита-флага. Значение константы соответствует номеру бита. Если биты будут одинаковые, флаги будут перетираться.

CARD_PEOPLES.FLAGS = 22dec = 16hex = 010110bin

16hex & 1hex = 0hex (запрещен автоматический межуровневый переход)

16hex & 2hex = 2hex (разрешена Email рассылка)

16hex & 4hex = 4hex (разрешена SMS рассылка)

16hex & 8hex = 0hex (не курящий)

16hex & 10hex = 10hex (владелец прошел верификацию)

declare @Flags int

set @Flags = 22

select @Flags as Flags, @Flags & 0x001 as Bit_1_0x001, @Flags & 0x002 as Bit_2_0x002, @Flags & 0x004 as

Bit_3_0x004, @Flags & 0x008 as Bit_4_0x008, @Flags & 0x010 as Bit_5_0x010

-- установка 4 бита-флага (8dec = 8hex = 01000bin)

set @Flags = @Flags + case when @Flags & 0x008 = 0 then 0x008 else 0 end

select @Flags as Flags, @Flags & 0x001 as Bit_1_0x001, @Flags & 0x002 as Bit_2_0x002, @Flags & 0x004 as

Bit_3_0x004, @Flags & 0x008 as Bit_4_0x008, @Flags & 0x010 as Bit_5_0x010

-- сброс 3 бита-флага (4dec = 4hex = 0100bin)

set @Flags = @Flags - case when @Flags & 0x004 > 0 then 0x004 else 0 end

select @Flags as Flags, @Flags & 0x001 as Bit_1_0x001, @Flags & 0x002 as Bit_2_0x002, @Flags & 0x004 as

Bit_3_0x004, @Flags & 0x008 as Bit_4_0x008, @Flags & 0x010 as Bit_5_0x010

Ниже приведены значения зарезервированные в системе. Значения с новыми версиями системы будут расширятся, поэтому не занимайте свободные биты в своих разработках.

CARD_PEOPLES.FLAGS

0x0001 - автоматический межуровневый переход

0x0002 - разрешить EMail рассылку

0x0004 - разрешить SMS рассылку

0x0008 - курящий

0x0010 - прошел верификацию

CARD_CARDS.FLAGS

0x0001 - требуется карта менеджера

0x0002 - зарезервировано

Настройка акций и классификаторов ПО

Введение

Предполагается, что CRM уже установлен и пролицензирован. Если это не так, обратитесь к основной статье для настройки. Для работы с акциями, у пользователя должны быть права на запуск редактора карт и работы с акциями.

Подробную информацию об акциях можно найти в руководстве пользователя.

Акции бывают 2 видов:

  1. Фоновые акции — это акции, выполняемые в CRM сервером автоматических операций. Примеры акций:
    • Доп начисление на транзакцию
    • Межуровневый переход.
  2. Онлайн акции — предназначены для работы с внешними системами. Это акции, выполняемые при работе с внешними системами. Примеры акций:
    • Лимитирование использования счета [UseLimit_700]

Все акции первого типа, за исключением Лимитирование использования счета [UseLimit_700], работают на стороне центрального сервера. Акция Лимитирование использования счета [UseLimit_700] выполняется на каждой точке, где необходимо установить лимит на потраченные средства и выполняется сервером CRM.

По принципу выполнения, акции делятся на 3 типа:

  • Выполняемые по расписанию — ежедневно, раз в неделю, раз в год и т.д.
    • AccountRepeatDepositing_700 — Пополнение счета по расписанию 
    • BalanceToCoupon_700 — Преобразование баланса в купон
    • DishToPresent_700 — Блюдо в подарок
    • LevelTransit_700 — Межуровневый переход
    • NotificationAndReward_700 — Оповещение и вознаграждение владельца
    • NotUsedCards_700 — Автоматическая блокировка карты
    • OfflineAddititonalCharge_700 — Дополнительное начисление по расписанию
    • OfflinePresentCoupon_700 — Купон по расписанию
    • Pyramid_700 — Пирамида
    • SendSMS_BurnBonus_700 — Оповещение владельца по sms о сгорающих бонусах
    • SendSMS_Check_700 — SMS рассылка с расшифровкой по чеку
    • Verification_700 — Верификация карт владельцев
    • VisitToReward_700 —  Вознаграждение за визит
  • Выполняемые при запросе информации о счете, например, на кассе r_keeper_7
    • DiscontOrBonus_700 — Выбор используемого счета бонус или дисконт
    • DiscontOrPayment_700 — Выбор используемого счета
    • UseLimit_700 — Лимитированное использование счета
  • Выполняемые при оплате
    • OnlineAdditionalCharge_700 — Дополнительное начисление на транзакцию
    • OnlinePresentCoupon_700 —  Автоматическое добавление купона

Классификаторы ПО

Любая программа, работающая CRM должна иметь уникальный идентификатор. С помощью идентификатора программы могут обмениваться данными с CRM. Например:

  • Личный кабинет
  • r_keeper
  • r_keeper_Delivery
  • GameKeeper
  • Премьера

Классификаторы ПО определяют доступ внешних программ к счетам CRM. Это означает, что внешней программе можно ограничить доступ к какому-либо счету.

При первоначальной установке CRM создаётся один классификатор ПО — CS_Monitor. Этот классификатор необходим для сервера автоматических операций, работающего с акциями.

На основании расписания планировщика CRM и настроек акции, CS_Monitor выполняет автоматические операции. Например, при использовании акции Межуровневый переход, CS_Monitor проверяет базу данных на предмет соответствия условиям акции, и выполняет необходимую автоматическую операцию — повышение/понижение уровня.

Для каждой внешней системы мы рекомендуем создавать свой классификатор ПО.

Настройка планировщика

Перед настройкой самих акций, требуется создать расписание. 

  1. Перейдите в меню Справочники > Планировщик
  2. Нажмите кнопку  или Insert на клавиатуре
  3. Укажите название
  4. Выберите тип расписания:
    1. Неактивно — отключено
    2. Единожды
    3. Ежедневно
    4. Еженедельно
    5. Ежемесячно
    6. Ежегодно
    7. Периодически. В этом случае необходимо выбрать период выполнения.
  5. Нажмите внизу кнопку  для сохранения изменений и Закрыть.
  6. Расписание создано, переходим к настройке акций.

Настройка акций

  1. Запустите редактор карт.
  2. Перейдите в меню Справочники > Акции
  3. Нажмите кнопку  или Insert на клавиатуре
    • Название — укажите название акции
    • Расписание — выберите из списка созданное ранее
    • Классификатор — выберите Монитор автоматических операций. При создании любой акции, выбирайте только этот классификатор
    • Начало — выберите дату начала акции
    • Окончание — выберите дату завершения акции
    • Следующее — дата ближайшего выполнения. Заполняйте по желанию
    • Комментарий — по желанию
    • Уровень журналирования — по желанию
  4. Нажмите внизу кнопку  для сохранения изменений
  5. На сером поле ниже нажмите правой кнопкой мыши и выберите тип акции:
  6. В зависимости от выбранного типа, набор полей будет различным.

Далее в статье описываются различные типы акций и их настройка.

Описания акций

Дополнительные начисления на транзакцию

Скрипт дополняет функционал акции — расширяет возможности парсинга чеков клиентов. Имеет смысл использовать, если требуется акцией просматривать клиентские чеки.
Для активации скрипта внесите настройки парсинга в базу данных CRM.

Акция сможет анализировать чеки на предмет:

  • Наличия определенных кодов блюд
  • Наличия определенных кодов категорий блюд
  • Наличия оплат определенной валютой

Содержимое скрипта ниже:

-- для акции доп.начисления: детализация чека
  delete from SYS_STORED_PARAMS where SECTION_NAME is null or SECTION_NAME = 'CSA_TRANSACTION_DOP_DEPOSITING'
  go
  insert into SYS_STORED_PARAMS (SECTION_NAME, PARAM_NAME, STRING_VALUE, INTEGER_VALUE)
  values ('CSA_TRANSACTION_DOP_DEPOSITING','DETAIL_ON_CHECK','CHECKCATEGS.CATEG.code=Коды категорий;CHECKLINES.LINE.code=Коды блюд',1)
  insert into SYS_STORED_PARAMS (SECTION_NAME, PARAM_NAME, STRING_VALUE, INTEGER_VALUE)
  values ('CSA_TRANSACTION_DOP_DEPOSITING','DETAIL_ON_CHECK','CHECKPAYMENTS.PAYMENT.code=Валюта (Код.RK7);paylines.pay.Type=Валюта (Код.RK6);CHECKPAYMENTS.PAYMENT.HasDiscount=Сумма чека с учетом скидки',2)
  go

-- для акции доп.начисления: ограничение возраста владельца карты
  delete from SYS_STORED_PARAMS where SECTION_NAME is null or SECTION_NAME = 'PEOPLE_ACTIVE'
  go
  insert into SYS_STORED_PARAMS (SECTION_NAME, PARAM_NAME, INTEGER_VALUE)
  values ('PEOPLE_ACTIVE','BIRTHDAY_FROM',5)
  insert into SYS_STORED_PARAMS (SECTION_NAME, PARAM_NAME, INTEGER_VALUE)
  values ('PEOPLE_ACTIVE','BIRTHDAY_TO',100)
  go

Верхнее окно

"Классификатор" - указывает на то чьи транзакции будут просматриваться акцией
 
"Тип счета (уровень/баланс)" - тип счета для детализации по уровню или балансу
 
"Проверка" - количество прошедших дней, по которым проверяются транзакции
 
"Тип счета (транзакция)" - транзакции каких счетов нужно проверяйть акции
 
"Тип счета (доп.начисления)" - транзакции каких счетов нужно проверяйть акции
 
"Приоритет" - приоритет просмотра настроек акции. Например, настройка акции на утро/вечер и основная настройка в оставшееся время
 
"Расписание" - временая схема, ограничивает транзакции, участвующие в акции
 
"Тип начисления" - на какие транзакции делать доп.начисления
 
"Отсрочка" - если указать число более 0, то бонусы будут начисляться с указанной в днях отсрочкой
 
"Учет отсроченных бонусов" - начисленные кассой, но не учтенные, бонусы будут смогут использоваться в балансе (используется совместно с 
флагом "Отсрочка начисления бонусов" в справочнике типов счетов)
 
Нижнее окно
 
"Баланс" - баланс счета, относительно которого производятся дальнейшие действия (тип счета указан в "Тип счета (уровень/баланс)")
 
"Транзакция" - сумма транзакции, относительно которой производятся дальнейшие действия (тип счета указан в "Тип счета (транзакция)")
 
"Детализация по чеку" - доп.фильтрация (тип валюты или категории и т.п.), относительно которой производятся дальнейшие действия (xml-чек 
должен прийти с кассы и находиться в базе)
 
"Сумма" - фиксированный доп.бонус
 
"Процент" - доп.бонус формируется как процент от суммы транзакции
 
"Комментарий" - комментарий к транзакции доп.начисления
 
"Действует (месяц)" - пролонгация действия карты на указанное кол-во месяцев
 
Если поле "Кредит\Установить" заполнено, то в профиле владельца карты происходит фиксация глубины кредита на указанном уровне.
Глубина кредита может быть расширена на величину поля "Кредит\Расширить".
При всех расчетах данной акции глубина кредита не может превышать значения установленного в поле "Кредит\Максимум".

Настройка акций для SMS и e-mail рассылок

В CRM есть возможность отправлять СМС для существующих и новых клиентов.

Для обоих случаев требуется дополнительно настроить CRM.

Рассмотрим два варианта: регистрация нового клиента из внешней системы и отправка ему смс с паролем (вариант А) и отправка смс клиенту о совершенной транзакции (списание или начисление) по счету (вариант Б).

  • Вариант А

В Редакторое карт R-Keeper CRM необходимо добавить классификатор ПО для внешней системы (например Виртуальная карта, которая тоже является внешней системой) и задать ему код (пункт меню: Файл - Классификаторы ПО).

По необходимости привязать к классификатору типы счетов. Разрешить данному классификатору отправлять смс.

Настроить связь с оператором для смс-рассылки (в конфигураторе для приложения "Карточная система" на вкладке SMS). Подробнее в пункте "Список поддерживаемых провайдеров смс-рассылки".

Если у вас другой провайдер, то от разработчика необходима библиотека на поддержку другого протокола(доработка). 

Главное на что следует обратить внимание, это "Текст SMS сообщения при регистрации в карточной системе". Введите текст согласно рисунку ниже.

Так же следует получить код лицензии для внешних подключений - GlobalType.

Если внешняя система требует одновременно с заведением ФИО клиента типов счетов, то в конфигураторе заполните соответствующие поля. 

   

  • Вариант Б

Отправка СМС при совершении операции, например начисление бонусов за покупку, совершается в автоматическом режиме в результате работы так называемой "акции" - специальной dll, которая выполняет необходимые автоматические операции по правилам, прописанным в акции (справочник "Акции").

За работу акций отвечает Сервер автоматических операций - CS_Monitor.exe. Его настройки прописываются в конфигураторе. Сервер обязательно должен быть запущен, чтобы акции работали.

Основная акция, которая производит рассылку - это "Оповещение и вознагрождение владельца [csa_NotificationAndReward.dll]". Подробнее ниже.

SQL-акции

Описана в статье о настройке SQL-акций.

Один из вариантов настройки такого рода акций описан в статье настройка печати цветных купонов.

ВложениеРазмер
csa_sendsms_new.zip1.82 МБ

Настройка купонов

Введение

Внимание! Купоны работают совместно с R-Keeper v.7 !

Купон - это одноразовое вознаграждение клиента. Купон может быть представлен как скидка (процентная или суммовая) или блюдо(а) в подарок.

Купон обладает следующими свойствами:

Наименование - название купона

Комментарий - любая текстовая смысловая информация

Тип. Купоны могут быть трех типов:

  • скидочный (процентно выраженная скидка);
  • суммовой (валюта);
  • товарный (блюдо).

Идентификатор - уникальная числовая последовательность, идентифицирующая купон. Идентификатор состоит из префикса и кода. Префикс позволяет идентифицировать данный тип как купон в СРМ, а не карту. Префикс для всех купонов одинаков и равен "922001".

Код - уникальный дескриптор или номер купона

MCR-алгоритм для купонов

Для использования купонов на кассе необходимо корректно настроить MCR-алгоритм, т.к. по-умолчанию он отсутствует.

Главная особенность связана с префиксом купона "922001", причем в R-Keeper CRM должно придти отрицательное значение идентификатора купона.

Рекомендуем реализовать данный MCR-алгоритм с помощью скрипта (рис.1).

Примечание! Код купона может иметь длину как 12 так и 13 символов. Учтите это при вводе на кассе или в MCR-алгоритме. 

Рис.1

Информация по настройкам и алгоритму возврата купонов

Для работы данного функционал необходимы следующие настройки:
1. Настройка работы с соответствующими купонами (CRM -RKeeper)
2. На стороне RKeeper 7 необходима настройка передачи XML чека (Параметры - Установочные - Связь с другими системами - Персональные карточки - ПДС: Макет для XML чека).
 
ъ
Рис.2 Выбор чека для XML при настройке алгоритма возврата купонов в СРМ
 
Алгоритм возврата купона:
  1. Гашение купона посредством внесения его в заказ;

  2. Удаление купона из заказа;

  3. Закрытие чека;

  4. После закрытия чека - купон восстанавливается в исходное состояние.

Ссылки на статьи по купонам

Скидочные купоны

Суммовые купоны

Товарные купоны

Скидочные купоны CRM + RK7

Скидочные купоны RK7 + CRM

1. Версии ПО и файлов

Тестировалось на RK – 7.5.3.153, CRM — 5.8, FarCards 6.04, CardSystem5_RK7.dll от 30/09/2014 12:33

2.Настройки в CRM и RK7

Для работы скидочных купонов в R-Keeper v.7 нужно завести скидку и указать ее в параметре "Скидка купонов".

Внимание! Скидка для параметра должна быть 100%!

Скидка в RK7 должна совпадать по коду со скидкой, указанной в связанной со скидочным купоном схеме в CRM, и иметь область применения «на заказ»

На рис.1 изображено создание дисконтного купона, который привязан к схеме (рис.2), а схема связана по коду со скидкой в РК7 (рис.3).

Рис.1 Купон дисконтный (версия 5.07.18.004)

Рис.2

Рис.3

Настройка MCR-алгоритма для купонов

Для использования купонов на кассе необходимо корректно настроить MCR-алгоритм, т.к. по-умолчанию он отсутствует.

Главная особенность связана с префиксом купона "922001", причем в R-Keeper CRM должно придти отрицательное значение идентификатора купона.

Рекомендуем реализовать данный MCR-алгоритм с помощью скрипта (см.рис.2).

Примечание! Код купона может иметь длину как 12 так и 13 символов. Учтите это при вводе на кассе или в MCR-алгоритме. 

Рис.4

После ввода кода купона на кассе можем воспользоваться назначенной скидкой 5%.

Рис.5

Подробнее про работу с купонами читайте в руководстве пользователя (ftp://ftp.ucs.ru/books/r-keeper_crm_user_manual.pdf).

Суммовые купоны CRM + RK7

Суммовые купоны CRM + RK7

1. Версии ПО и файлов

Тестировалось на RK – 7.5.3.153, CRM — 5.8, FarCards 6.04, CardSystem5_RK7.dll от 30/09/2014 12:33

2. Настройки в CRM и RK7

Суммовой купон настраивается аналогично скидочному. В поле «Базовая ставка» схемы, указанной в суммовом купоне, указывается значение скидки в рублях:

Рис.1

Соответствие внешнего кода схемы какому либо коду скидки в RK7 не требуется. Однако, для передачи суммы купона валюте оплаты в RK7 требуется настройка параметра Coupon_SubAccount в FARCARDS.INI. В этом параметре задается субсчет фаркардс, на который передастся сумма купона. Этот субсчет нужно указать в RK7 у валюты, которой будут оплачиваться суммовые купоны (выделить для оплаты купонов отдельную валюту можно, но не обязательно):

Рис.2

 

Для настроек, приведенных выше, в параметре Coupon_SubAccount в FARCARDS.INI указываем значение «5»:

Рис.3

При применении на кассе суммового купона будет отображена доступная сумма по валюте купона:

Рис.4

Названия валют, отображаемые в поле «Доступно», настраиваются в RK7 в интерфейсе, используемом для связи с CRM:

Рис.5

Далее, при переходе к оплате чека, нужно выбрать валюту купона и воспользоваться доступной суммой для полной или частичной оплаты чека:

Рис.6

Товарные купоны CRM + RK7

Товарные купоны CRM + RK7

1. Версии ПО и файлов

Тестировалось на RK – 7.5.3.153, CRM — 5.8, FarCards 6.04, CardSystem5_RK7.dll от 30/09/2014 12:33

2. Настройки в CRM

Создается новый тип купонов — товарный, с детализацией по блюдам, коды блюд берутся из RK7:

Рис.1

В свойствах группа блюд купона, и в свойствах блюд, обязательно заполнение полей «Приоритет» и «Квота». «Приоритет» задает порядок применения групп, а «Квота» — количество возможных добавлений блюд из группы в чек.

В детализации группы блюд купона указываем тип и номинал скидки. Можно задать скидку в денежных единицах («цена» или «сумма»)  или в процентах. Рассчитанное согласно заданному здесь правилу значение скидки на блюдо будет ограничиваться значением скидки, заданным в RK7 в качестве скидки для купонов (Параметры — Установочные — Связь с другими системами — Персональные карточки — Скидка купонов). Если задать в купоне скидку 100%, а в RK7 – 50%, то примененная к товару из купона скидка будет 50%. Если в купоне задавать скидку в денежных единицах, то конечный размер скидки, примененной к товару из купона, так же будет ограничиваться значением скидки, указанной в параметре «Скидка купонов». Например, если ценовая скидка купона — 20 руб, цена блюда — 15 руб, скидка купонов в RK7 – 50 %,  то итоговая цена блюда из купона с учетом скидки составит 7,5 руб.

Далее создается персонифицированный купон товарного типа:

Рис.2

3. Настройки в RK7

Создаем скидку, которая будет применяться к товару из купона, задаем область действия скидки «На блюдо»:

Рис.3

Создаем детализацию с необходимым значением:

Рис.4

Указываем эту скидку в параметрах RK7 (Параметры — Установочные — Связь с другими системами — Персональные карточки — Скидка купонов):

Рис.5

Остальные настройки RK7 для связи с CRM производятся как обычно ( см. http://support.ucs.ru/ru/node/5724). Так же нужно будет настроить MCR алгоритмы для преобразования кода купона к виду, принимаемому в CRM (см.  http://support.ucs.ru/ru/node/7749).

Если все настроено верно, то при наличии у владельца карты купонов касса RK7 будет предлагать использовать эти купоны при прокатывании карты владельца:

Рис.6

При выборе CARDS к чеку будет применяться персональная скидка владельца, настроенная стандартным способом, а при выборе купона касса предложит внести товары из купона в чек и применит скиду купона к выбранным товарам:

Рис.7

 

Настройка печати цветных купонов

Внимание! Как настроить акцию "Спасибо за визит" читайте в руководстве пользователя ftp://ftp.ucs.ru/books/r-keeper_crm_user_manual.pdf !!

Здесь только нюансы настройки!

Автоматическая печать купона

Введение

Данная акция позволяет автоматически создать купон для гостя при  потрате больше определенной суммы. Рассмотрим пример, в котором при сумме заказа от 1000 до 2000 рублей, система предоставит гостю разовую скидку на бесплатный кофе.

Тестировалось c CS_Auth_Server.exe 5.8.4.2, CardSystem5_RK7.dll от 24/03/15.

1. Порядок настройки в R-Keeper CRM

Обязательно должен быть настроен Монитор автоматических операций (CS_Monitor.exe). Подробнее в статье http://support.ucs.ru/ru/node/7113.

В папке BIN создаем папку Plugins и в нее копируем скрипт акции (csa_transaction_ПечатьКупона.csa). После необходимо перезапустить Редактор карт! Скрипт на ФТП пока не доступен! Для внутреннего пользования лежит здесь: http://tracker.ucs.ru:8080/redmine/attachments/download/349065/csa_transaction_PrintCoupon.csa

В словаре «Акции» необходимо добавить новую акцию. Для этого в окне «Акции» нужно нажать кнопку на панели инструментов Добавить  или воспользоваться соответствующей командой контекстного меню. В открывшемся окне (см. Рис. 1) на  закладке «При оплате» из контекстного меню необходимо выбрать акцию «ПечатьКупона». В контекстном меню отображается список всех акций из папки Plugins. Название акции выдергивается из имени файла (ПечатьКупона <-> csa_transaction_ПечатьКупона.csa).

Рис. 1

В открывшемся окне необходимо заполнить все поля согласно описанию акции (подробнее в руководстве пользователя)!

Код документа = 101 (код документа, а не макета!). См. рис.2.

Предупреждение! Акция живет самостоятельной жизнью и не привязывается к клиенту. Поэтому для генерирования купон под определенного клиента необходимо, чтобы клиент был привязан к заказу (самый простой вариант - использоваие нулевой скидки).

2. Настройки в Rkeeper 7

Печать цветных купонов поддерживается в версии Rkeeper 7.5.3.206+!

В Редакторе Rkeeper7 открыть справочник "Настройки – Печать – Документы и Макеты", выбрать группу "Документы CRM".

Для предустановленного документа "Купон" (документ можно также скопировать) необходимо создать новый макет (шаблон макета можно импортировать из прикрепленного файла. Далее обязательно добавить схему печати и настроить использование данной схемы печати в вашем ресторане!

Рис.2

Подробнее о купонах в трекере: http://tracker.ucs.ru:8080/redmine/issues/33372.

Рис. 3

Поля купона, доступные для редактирования:

- QRCODE: QR-code идентификатора купона (CARD_COUPONS.COUPON_ID)

- EAN13: Bar-code идентификатора купона (CARD_COUPONS.COUPON_ID).

- TEXT00: Код купона (CARD_COUPONS.COUPON_CODE)

- TEXT01: Начало действия купона (CARD_COUPONS.DATE_FROM)

- TEXT02: Окончание действия купона (CARD_COUPONS.DATE_TO)

- TEXT03: Фамилия Имя Отчество владельца купона (CARD_PEOPLES.FULL_NAME)

- TEXT04: Номер карты (CARD_CARDS.CARD_CODE)

- TEXT05: Название акции, генерирующей купон (CARD_OPERATION_PARAMS.NAME)

- TEXT06: Комментарий к акции (CARD_OPERATION_PARAMS.NOTES_SHORT)

- TEXT07: Название типа купона (CARD_COUPON_TYPES.NAME).

3. Работа акции

Прокатывая карту гостя в заказе и оплачивая заказ вместе с чеком гость получает купон (рис.4).

Рис.4

В операциях в Редакторе карт можно проверить, какой и когда был сгенерирован купон (рис.5).

Рис.5

ВложениеРазмер
mykupon.rar54.12 КБ

Настройка нулевой скидки

Введение

Чтобы "наследить" картой в заказе при оплате на рубли, необходимо настроить виртуальную "нулевую" скидку.  

1. Настройка применения виртуальной скидки (устаревшее)

Чтобы при наличии бонусного счета и при отсутствии дисконтного, добавлялась "виртуальная" нулевая скидка, в Редакторе карт CRM нужно завести нулевой дисконтный тип счета для клиента и включить параметр HasVirtualDiscont = 1 в Farcards.exe.

Тестировался данный функционал на следующих версиях:
R-Keeper CRM 5.7.18.4
Farcards 6.04
R-keeper 7.5.3.72

Для применения виртуальной скидки на кассе необходимо в редакторе карт R-Keeper CRM завести клиенту дисконтный тип счета с указанием уровня, схема которого имеет ставку 0% и связана по коду с соответствующей скидкой в R-Keeper v7.
В Farcards.ini следует дополнительно прописать параметр: 
HasVirtualDiscount=1   // использовать виртуальную скидку 
HasVirtualDiscount=0   // не использовать её

2. Настройка применения виртуальной скидки

В настоящее время для использования виртуальной скидки не обязательно добавлять дисконтный счет клиенту, достаточно наличие счета потрат.

Тестировался данный функционал на следующих версиях:
R-Keeper CRM 5.8.5
Farcards 6.04
R-keeper 7.5.3.217

Для заведения нулевой скидки необходимо:

1. в Редакторе карт добавить схему со ставкой 0%;
2. в Редакторе карт добавить дисконтный тип счета со схемой из п.1;
3. сам дисконтный счет клиентам добавлять не обязательно;
4. параметр HasVirtualDiscount в FARCARDS.INI больше не требуется.

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

Примечание: если в системе имеется несколько нулевых скидок (схем с ставкой "0"), то берется первая попавшая. Если необходимо выставить какую-то схему по приоритету первой, то название данной "нулевой" схемы должно быть следующее: "ZERO VIRTUAL DISCOUNT".

Работа с бонусами

1. Настройки в редакторе карт

1.1. Добавить счета следующих классов: бонусный, дебетовый и потраченные средства в справочник "Типы счетов" или проверить текущие. Привязать счета к классификатору ПО, например R-Keeper 7 (в качестве классификатора может выступать ресторан или приложение, работающее с CRM). Бонусному счету выставить приоритет, например 111.

1.2. Добавить в справочник схемы - скидку и бонус. Прописать у них внешний код, например у бонуса = 22, у скидки = 41. Задать базовую ставку. 

1.3. Привязать к соответствующему типу счета соответствующую схему. Для этого необходимо в справочнике "Типы счетов" для счетов класса бонусный и дискотный добавить хотя бы один уровень, который будет использовать соответсвующую схему. (рис.1, рис.2).

1.4. Добавить клиенту три счета: бонусный, дисконтный, потраченные средства (рис. 3).

2. Настройки в менеджерской РК7

2.1. В справочник Деньги - типы бонусов добавить бонус, с кодом равным коду схемы в редакторе карт CRM (рис.2), в нашем примере 22. Прописать код транзакции = 101, т.к. у бонусного счета в редакторе карт мы выставили приоритет 111 (входит в диапозон 100-199, следовательно код транзакции 101, субсчет 1).

Предупреждение: если справочник "Типы бонусов" неактивен, то включите параметр "Бонусы" в справочнике "Настройки -> Параметры". Обязательно перезапустите после этого сервер справочников.

2.2. В менеджерской станции РК7 добавить процентную скидку (Деньги -> Скидки и Наценки). Скидка может быть нулевой. Код данной скидки должен быть равен коду схемы в редакторе карт CRM (рис.1). В нашем случае это 41.

2.3. Привязать к детализации скидки тип бонуса, созданный в п.2.1 (рис.5).

2.4. В свойствах детализации скидки указать процент скидки и процент бонуса (рис.5). Именно этот процент бонуса будет считаться при расчете!

2.5. Добавить валюту в группу "Платежные карты" для оплаты бонусами и прописать у нее в свойствах код транзакции(101), номер субсчета(1), процент бонуса = 0, привязать интерфейс, посредством которого осуществляется связь с CRM (рис.6).

2.6. У блюд, по которым будет начисляться бонус, выставить процент бонуса 100% (рис.7).

Рис.1 Создание уровня у Дисконтного счета и приязка схемы со скидкой.

Рис.2 Создание уровня у Бонусного счета и приязка схемы с бонусом.

Рис.3 Добавление счетов клиенту.

Рис.4 Создание скидки в РК7 и привязка к интерфейсу, работающим через Фаркардс с R-Keeper CRM.

Рис.5 Добавление детализации к скидке и привязывания к ней типа бонуса.

Рис.6 Настройка валют(Наличные - для начисления бонусов, Оплата бонусами - для оплаты бонусами)

Рис.7 Редактирование свойства Бонус у блюда.

Работа с дебетовыми картами

Введение

Т.к. фаркадс одновременно может передавать информацию только  8 счетах(подсчетах), то есть особенность настройки счетов (подсчетов) в редакторе карт системы R-Keeper CRM. В версиях 5.Х было введено такое понятие как приоритет счета (подсчета).

Создаваемые счета в R-Keeper CRM могут быть одного из следующих классов:

  • бонусный;

  • дисконтный;

  • дебетовый;

  • кредитный;

  • потраченные средства;

  • абонемент;

  • пользовательский.

Важно: Для успешного выполнения операции начисления/списания на счет R-Keeper CRM необходимо жестко выполнять правила работы с кодами транзакций.

Таблица 1 Соответствие приоритетов и кодов транзакций
Субсчет Farcards Код транзакции валюты RK7 Диапозон значений приоритета счета в R-Keeper CRM Пример значения диапозона / счет
1 101 100-199 156  / бонусный
2 102 200-299 201 / дебетовый
... ... ... ...
8 108 800-899
 

888 / дисконтный

 

Логика работы:

В редакторе карт в типах счетов заведем два типа счета - Дебетовый1(приоритет = 100) и Дебетовый2(приоритет = 101). Привяжем счета какому-либо клиенту.

Баланс : Дебетовый1 = 100 у.е., Дебетовый2 = 50 у.е. (у.е. - условные еденицы)

В РК7 на кассе сделали заказ на 120 у.е. , произвели оплату валютой платежной картой (для примера используем валюту Карта ПДС).

Схематично изменение балансов показано в таблице ниже.

В РК7 передается остаток на карте как сумма двух счетов (150 у.е.), так как приоритеты счетов попадают в один диапозон (100-199) и фаркардс их балансы суммирует.

 

Таблица 2
Тип счета Приоритет Баланс счета до оплаты, у.е. Сумма заказа Остаток при проведении карты в РК7 Списание  Баланс счета после оплаты, у.е.
Дебетовый1  100 100 120 150 -100 0
Дебетовый2 101 50 -20 30
 

Настройки в R-Keeper CRM

  • В справочнике "Типы счетов" добавить два счета класса "дебетовый" и "потраченные средства"; 

  • Привязать данные счета к соответствующему Классификатору ПО и разрешить операции начисления (обоим счетам) и списания (только дебетовый). Как привязать счета к классификатору изображено на рис.1 и рис.2 ниже;

Примечание: если не разрешить операции начисления или списания для счетов в рамках определенного Классификатора ПО, то операции начисления/списания производиться не будут. Также для счетов, на которые будет осуществляться начисление и списание, необходимо прописать приоритет для начисления и для списания (рис.1).

  • Создать нового клиента или выбрать существующего и привязать к нему два счета владельцу (дебетовый и потраченные средства);

  • Если у клиента нет карты, создать ее и привязать клиенту.

Рис.1 Справочник "Классификаторы ПО"

Рис.2 Окно настройки связей классификаторов и типов счетов

Настройки в Менеджерской РК7

1. Настройка валюты "Дебетовая карта"

  • Настраиваем MCR-алгоритм для наших дебетовых карт, связываем его с интерфейсом "ПДС", с помощью которого осуществляется связь с R-Keeper CRM.

  • Проверяем свойство "Оплата платежной картой" в справочнике "Сервис-Параметры".

Рис.2

  • Создаем в справочнике "Деньги-Валюты" новую валюту, в нашем случае "Дебетовая Карта" (см.рис.3). В свойствах секции "Интерфейс" проверяем параметры:
  • Интерфейс

  • Код транзакции

  • Субсчет фаркардс

  • Для валюты необходимо прописать субсчет и код транзакции. Связь приоритетов счетов и кодов транзакции осуществляется согласно таблице 1. 

  • Код транзакции может принимать только одно из 8 значений от 101 до 108. В нашем примере для Дебетового счета с приоритетом 201, код транзакции будет 102, № субсчета = 2.

Рис.3

Пополнение баланса "Дебетовой карты"

1. В справочнике "Деньги->Cкидки и наценки" создаем новую наценку (нераспределяемая, суммовая). Обязательно надо выбрать Налоговую группу, иначе свойство "Код транзакции" не появиться в секции "Интерфейс" (см.рис.4).

Выставить код транзакции в соответствии с таблицей 1.

Рис.4

2. В справочнике "Деньги->Причины внесения/выдачи денег" создаем новую причину, выбираем в свойстве Пополнение баланса - Фискальное, после чего появиться свойство "Наценка", где мы выбираем нашу наценку из п.2.2.2.1 (см.рис.4).

Если пополнение не фискальное(значение = Да), то в свойствах "причины внесения/выдачи денег" в менеджерской станции РК7 прописать код транзакции в соответствии с таблицей 1 (параметр "Код транзакции").

Рис.5

Дополнительно

Настройка передачи суммы потрат из РК7 при пополнении карт

В версии R-Keeper 7.5.1.51 была добавлена настройка: передавать ли потраты в ПДС при пополнении баланса карты. Настройка задается в справочнике "причины внесения\выдач денег".

Работа с дисконтными и платежными картами

 

 

1. Настройки в R-Keeper CRM 5.07

В редакторе карт необходимо расставить приоритеты для счетов, чтобы Farcards знал порядок передачи ему суммы. Другими словами, чтобы оплата производилась с Бонусного счета, то в классификаторе ПО ставите ему наивысший приоритет (из диапазона от 100 до 199 это будет 100). Фаркардс одновременно может работать с 8 счетами (субсчетами)

Таблица 1
субсчет FarCards приоритет R-Keeper CRM
субсчет 1 [100..199]
субсчет 2 [200..299]
... ...
субсчет 8 [800..899]

 

Можно объединять субсчета разных классов, например Бонусный и Дебетовый. 

Пример: В редакторе карт в типах счетов заведем два типа счета - Бонусный1(приоритет = 100) и Бонусный2(приоритет = 101). Привяжем счета какому-либо клиенту.

Балансы : Бонусный1 = 100 у.е., Бонусный2 = 50 у.е. (у.е. - условные еденицы)

В РК7 на кассе сделали заказ на 120 у.е. -> оплата Бонусной картой (для примера используем валюту Карта ПДС). Схематично в таблице ниже. В РК7 передается остаток на карте как сумма двух счетов (150 у.е.).

Таблица 2
Тип счета Приоритет Баланс счета до оплаты, у.е. Сумма заказа Остаток при проведении карты в РК7 Списание  Баланс счета после оплаты, у.е.
Бонусный1  100 100 120 150 -100 0
Бонусный2 101 50 -20 30

 

Рис.1. Привязка счета к классификатору ПО в редакторе карт. 

Скидки и бонусы настраиваются по прежнему в схемах. Скидке присваивается внешний код, который равен коду скидки в РК7. Бонусу соответствует код бонуса из справочника Деньги->Типы бонуса.

|Рис.2 Сопоставление кодов скидок

В справочник "Типы счетов" необходимо добавить уровень(-и) для дисконтного/бонусного счета, выбрав соответствующую схему (смотри рисунок ниже).

Важно: наличие счета класса "Потраченые средства" обязательно.

Рис.3 Создание уровня для счета.

2. Настройки валюты в менеджерской станции R-Keeper 7

1. На кассовый сервер добавить "PDS Interface" и прописать имя сервера в параметре PDS Server Name (см. рис.2). Связать данный интерфейс с логическим интерфейсом и обязательно перезагрузить кассовый сервер.

2. Для того, чтобы отобажалось фото клиента при прокатывании кмагнитной карты необходимо включить следующий параметр: "ПДС Показывать картинку" (справочник Настройки - Параметры).

3. Для валюты необходимо прописать субсчет и код транзакции. Код транзакции может принимать только одно из 8 значений от 101 до 108. Если необходимо использовать "счет 1", то ставим 101. "Счету 1" соответствует счет с минимальным приоритетом в R-Keeper CRM!

Таблица 3 Соответствие приоритетов и кодов транзакций
Субсчет Код транзакции Приоритет в R-Keeper CRM
1 101 100-199
2 102 200-299
... ... ...
8 108 800-899

 

Рис.4 Настройки валюты

3. Дополнительно

Важно: наличие счета класса "Потраченые средства" у клиента обязательно.

3.1. Настройка передачи суммы потрат из РК7 при пополнении карт

В версии R-Keeper 7.5.1.51 была добавлена настройка: передавать ли потраты в ПДС при пополнении баланса карты. Настройка задается в справочнике "причины внесения\выдач денег".

Настройка связи с оборудованием

Настройка COM-считывателей в CRM

Введение

В системе R-Keeper CRM возможны следующие варианты добавления (или поиска) карты в Редакторе карт:

1. В ручном режиме (справочник "Выпуск карт");

2. В полуручном режиме (с ипользованием COM-считывателя карт).

Для реализации варианта №2 необходимо подключить считыватель к машине, на которой происходит работа в редакторе карт и настроить данный считыватель в конфигураторе(рис.1), а также настроить маску (рис.2). Для примера, использовался бесконтактный считыватель EM-Marine.

Рис.1

Рис.2

Формула необходима, чтобы корректно обработать данные, записанные на карте. Примеры формул описаны в пункте 2 данной статьи.

1. Функции и операции

1.1. Базовые операции

Операция Реализация
Арифметические  x + y , x - y , x * y, x / y, x ^ y
Сравнение  x > y, x < y, x >= y, x <= y, x = y, x <> y
Сравнение строк  s > t, s < t, s >= t, s <= t, s = t, s <> t
Логические  (1/0) a AND b, a OR b, NOT(a), x in [...] // Пример: 12 in [22, 12, 3]

1.2. Работа с переменными

Операция Формула
Установка  x:=formula (or value);
Уничтожение  FreeVar(s); //s = имя переменной
Проверка существования  ExistVar(s) // s = имя переменной

1.3. Преобразование из одного типа в другой

Функция Пояснение Пример
Logic(x)      Переводит значение x в логический тип (0 или 1)   Logic(0) = 0 или Logic(2) = 1
Numeric(s)  Переводит значение из строки в цифровой        Numeric("10.23") = 10.23
String(x)    Переводит значение из числа в строку      String(10.23) = "10.23"
Char(x)     Переводит число в символ    Char(65) = "A"
Ascii(s)   Переводит символ в число   Ascii("A") = 65
Eval(f)    Вычисляет формулу     Eval("2+1+4") = 7
NumBase(x, base)   Переводит число в строку в другой системе исчисления, где base - система исчисления от 2 до 16   NumBase(254, 16) = "FE"
BaseNum(s, base)   Функция обратная функции NumBase(x, base)  

1.4. Математические операции

x Div y             целочисленное деление числа x на число y
x Mod y           модуль от целочисленного деления числа x на число y

1.5. Математические функции

Abs(x)        возвращает абсолютное значение числа x
Frac(x)       возвращает дробную часть числа x
Trunc(x)    отбрасывает дробную часть числа x
Sign(x)      определяет знак числа Sign(0) = 0; Sign(2) = 1; Sign(-2) = -1
Sqrt(x)       возвращает квадратный корень числа x
Ln(x)          возвращает натуральный логарифм числа x
Exp(x)        возвращает экспоненту степени x
Cos(x)       возвращает косинус числа x
Ctg(x)        возвращает котангенс числа x
Ch(x)         возвращает гиперболический косинус числа x
Cth(x)        возвращает гиперболический котангенс числа x
Sin(x)        возвращает синус числа x
Sh(x)         возвращает гиперболический синус числа x
Tg(x)         возвращает тангенс числа x
Th(x)         возвращает гиперболический тангенс числа x
ArcSin(x)     возвращает арксинус числа x
ArcCos(x)   возвращает арккосинус числа x
ArcTg(x)      возвращает арктангенс числа x
ArcCtg(x)    возвращает аркотангенс числа x
MaxVal(x [,y, ...])        возвращает максимальное число из списка MaxVal(1,2,3,4,0,7+2,2) = 9
MinVal(x [,y, ...])         возвращает минимальное число из списка MinVal(1,2,3,4,0,-5,2) = -5
SumVal(x [,y, ...])       возвращает сумму списка SumVal(1,2,3,4,0,7,2) = 19
AvgVal(x [,y, ...])         возвращает среднее значение чисел из списка AvgVal(1,2,3,4,0,7,2) = 2.714

1.6. Операции со строками

s || t                    конкатенация строк
s Like t              определяет есть ли подстрока в строке (%,_)               "www.tsoft.szm.com" Like "%szm%" = "1"
s Wildcard t      определяет подходит ли маска (*,?)                                 "jan.tungli@seznam.cz" Wildcard "*@*.?z" = "1"

1.7. Функции работы со строками

Length(s)               возвращает длину строки
Pos(t, s)                 возвращает позицию вхождения подстроки t в строке s
Trim(s)                   удаляет пробельные символы в начала и в конце строки
TrimLeft(s)            удаляет пробельные символы в начале строки
TrimRight(s)         удаляет пробельные символы в конце строки
Upper(s)               переводит строку в верхний регистр
Lower(s)               переводит строку в нижний регистр
Copy(s, x, [y])        копирует из строки s символы с позиции x, если задано значение y, то копирует только y символов
CopyTo(s, x, [y])   копирует из строки s символы с позиции x, если задано значение y, то копирует только до символа в позиции y
Delete(s, x, [y])     удаляет из строки s символы с позиции x, если задано значение y, то удаляет только y символов
Insert(s, t, x)         вставляет в строку s подстроку t в позиции x
IFF(a, s, t)             ветвление, если a>=1 возвращается значение s иначе - t
Replace(s, t, v,              заменяет в строке s подстроку t на подстроку v, 
[1/0=ReplaceAll,           если указан параметр ReplaceAll=1, то заменяет все найденные подстроки t на подстроку v, 
[1/0=IgnoreCase]])       если задан параметр IgnoreCase=1, то при поиске подстроки t регистр учитываться не будет

1.8. Функции работы с датой и временем

Year(s)         возращает год               Year("2008/03/20") = 2008
Month(s)      возращает месяц         Month("2008/03/20") = 3
Day(s)           возращает день          Day("2008/03/20") = 20
WeekDay(s)        возращает день недели                 WeekDay("2008/03/20") = 4
Hour(s)            возращает час                                       Hour("23:55:34") = 23
Minute(s)        возращает минуты                                Minute("23:55:34") = 55
Sec(s)              возращает секунды                              Sec("23:55:34") = 34
StrToStamp(d)         преобразует строковое представление даты и времени в числовое
StampToStr(x)          преобразует числовое представление даты и времени в строковое
StampToDateStr(x) преобразует числовое представление даты встроковое
StampToTimeStr(x) преобразует числовое представление времени в строковое
Date          возвращает текущую дату
Time         возвращает текущее время
Now          возвращает текущую дату и время

2. Примеры формул

Пример 1. Нужно настроить использование карт, которые раньше определялись маской 778=99999998=####

В строке формула в конфигураторе (см. рис.1) надо написать такое выражение:     =Numeric(IFF(Copy(Value, 5, 8) = "99999998", Copy(Value, 14, 4), "0"))

Если с карты считается код, например 778=12345678=0102, то результатом вычисления будет 0, а если считается код 778=99999998=1234, то результатом вычисления будет 1234.
Если код карты после вычисления будет 0, то это значит, что карта не определена.
 
Ниже два примера для преобразования данных с карт бесконтактными считывателями.
Пример 2. Использование сложных формул. Вычисление идет слева направо.
=v1:=Pos("] ",Value);v2:=Copy(Value,v1+2,255);v1:=Pos(",",v2); v3:=Copy(v2,1,v1);v4:=Copy(v2,v1+1,255);Numeric(v3+v4)
Пример 3. Преобразование шестнадцатиричного вида в десятичный.
=V1:=String(BaseNum(Copy(Value, 1, 2), 16));V2:=String(BaseNum(Copy(Value,3,4), 16));V2:=IFF(Length(V2) < 5, "0"||V2, V2);V2:=IFF(Length(V2) < 5, "0"||V2, V2);V2:=IFF(Length(V2) < 5, "0"||V2, V2);V2:=IFF(Length(V2) < 5, "0"||V2, V2);result:=Numeric(V1 || V2)
Маска: 778=199999999=########

3. Работа со считывателем СРЧ-125 фирмы UCS

Пример считывателя и карты.

Рис.3

Настраиваем в конфигураторе считываетель (указываем № COM-порта, скорость и код организации (необязательно), см.рис.4) и маску (см. рис. 5).

Рис.4 Настройка считывателя

Прописываем маску в виде формулы, например: =V:=Value;V:=Delete(V,1,Pos("=",V));V:=Delete(V,1,Pos("=",V));result:=Numeric(V) или маски, например: 778=199990099=#######.

Данная формула выделяет подстроку (после 2-го знака "=") в строке (параметр Message** в лог-файле) после преобразования данных с карты, т.е. возвращает номер карты. При применении формулы код организации(см.рис.4) можно не указывать. 

Маска так же возвращает номер карты, но число знаков "#" должно соответствовать числу цифр в серии карт (см.рис.3, первая группа цифр).

Проанализировать работу драйвера можно по записям в лог-файле iod_MCR_Serial.01.log после прикладывания карты к считывателю при запущенном Редакторе карт.

14.05.2014 15:23:23.355>       Enable Reader
14.05.2014 15:23:24.261>          Buffer : 750=2364000162753731310                              //  прошито на карте (можно проверить с помощью утилиты HyperTerminal)
14.05.2014 15:23:24.261>          Message : 778=199990099=1702866                            //  ** 199990099 - код организации (прописывается в свойствах драйвера, см.рис.4);  1702866 - номер карты (результат преобразования 750=2364000162753731310)
 

Рис.5 Настройка маски

4. Работа со считывателем RFID RDM530

Для данного устройства написан специальный драйвер (прикреплен к статье). Для работы данного считывателя достаточно подкинуть данный драйвер и настроить в конфигураторе маску =Numeric(Value)

ВложениеРазмер
iod_mcr_serial_mifare_14443.7z420.82 КБ