Данное описание тестировалось на версиях r_keeper 7.0.7.212 и Премьера 5.0R1.46
В этой статье рассмотрим процесс настройки механизма обмена данных между кассовой станцией r_keeper_7 и Премьера
Загружаем на компьютер форму из прикрепленного файла SwitcherFromRk7ToCinema_new.xml
Далее открываем кассовую станцию r_keeper_7 и переходим во вкладку "Сервис > XML Импорт/экспорт". После открытия в панели быстрого доступа у нас появляется три новых элемента "Load XML file", "Add items", "Save XML file".
Теперь необходимо загрузить в r_keeper_7 ранее скаченную форму. Нажимаем "Load XML file" и выбираем файл формата *xml
После открытия окна с добавленной формой нажимаем кнопку "Add items"
Далее форма будет сохранена в справочнике "Настройки - Графический интерфейс > Формы > Заказ > Редактирование заказа(быстрый чек)
Переключение между двумя программами осуществляется через скрипт. Поэтому следующим шагом будет создание нового скрипта. Переходим в справочник "Сервис > Скрипты" и в разделе "Контроль кассовых операций" создаем новый скрипт со следующим содержимым
procedure CheckOperation1000459(Operation, Parameter: integer; var ValidResult, CallNextTime: boolean);
var
srv_request: string;
begin
if operation=127 then
begin
HttpGet('http://127.0.0.1:7788/orderguid='+RkCheck.CurrentOrder.GUIDString+'&mode=5', srv_request);
end;
end;
В строке HttpGet указывается адрес и порт конкретной кассы Премьеры (о настройках данных параметров в соответствующем разделе).
Данный порт задается в Премьере: Менеджерская→ Станции → Универсальная касса, в блоке “Порт ПО Премьера”
Переходим в справочник "Настройки > Графический интерфейс > Схемы форм" и создаем копию используемой схемы форм
Далее открываем вкладку "Ссылки на скрипты" и добавляем ссылку на ранее созданный скрипт
После выполнения предыдущих действий переходим в справочник "Настройки > Графический интерфейс > Использование схем форм" . Выбираем ранее созданную схему формы и переходим в ее свойства. Теперь нам необходимо заменить форму в назначении "Редактирование заказа (быстрый чек)
Далее необходимо добавить новую схему форм в использование
Для создания наценки переходим в справочник "Деньги - Скидки и наценки" и создаем новую НЕРАСПРЕДЕЛЯЕМУЮ наценку. Указываем ее уникальный код, который в дальнейшем будет присвоен параметру "Non-fiscal markup code" в интерфейсе "Cinema Switcher" на кассовой станции.
Выставляем флаги у наценки:
Для наценки обязательно необходимо создать нулевую детализацию во вкладке "Детализация"
Можно добавить вторую наценку, убрать у нее флаг "Нефискальная операция" и значение этой наценки внести в поле интерфейса "Cinema Switcher" параметр "Fiscal markup code". Тогда эта составляющая заказа Kinoplan Premiera будет пробиваться на фискальном регистраторе в виде фискальной наценки. Возможность используется для фискализации "Дополнительных услуг" на кассе Kinoplan Premiera, например 3D очки или какой либо сопутствующий билету товар
Для добавления интерфейса переходим в справочник "Сервис > Станции и устройства". Выбираем нужный кассовый сервер и во вкладке "Устройства" добавляем PDS interface.
Задаем уникальное имя параметру PDS Server Name (имя должно быть указано в Farcards.ini), а для параметра "Pass ALL Receipt XML data" выбираем значение "Yes, always (fail if impossible)
В справочнике "Сервис > Интерфейсы" создаем новый логический интерфейс, путем копирования существующего "Персональный дисконтные системы (ПДС). Это необходимо для того, чтобы новый интерфейс работал через pdsempty.dll.
И связываем его с физическим PDS interface. Далее сохраняем изменения и перезагружаем кассовый сервер.
Для добавления интерфейса необходимо зайти в справочник "Сервис > Станции и Устройства" и выбрать ту кассовую станцию с которой будет взаимодействовать кассой Премьеры.
Далее во вкладку устройства добавляем XML interface и прописываем ему уникальный свободный порт.
Примечание: после добавления интерфейса на кассовую станцию, кассовый сервер перезагружать не нужно. В случае каких либо важный изменений, касса сама сообщит о необходимости своей перезагрузки.
После, данный код указываем в Премьере: Менеджерская→ Станции → Универсальная касса, в блоке “Порт ПО РКипер”
Также на кассовую станцию необходимо добавить интерфейс "Cinema Switcher" и заполнить параметр "Non-fiscal markup code" (данный параметр должен соответствовать коду ранее созданной нераспеделяемой наценки) или "Fiscal markup code" (обычно применяется для кинотеатров вне территории Российской Федерации)
"Fiscal markup code" должен равняться 0
В настройки интерфейса Cinema Switcher добавлен параметр Purchase dish code (код блюда выкупа для оформления возврата билетов)
В справочнике "Настройки > Печать > Назначение принтеров" создаем новое назначение принтеров, с произвольным названием, например "Для Премьеры".
Для данного назначения в свойствах кассовой станции выбрать принтер "Не печатать"
В справочнике "Меню > Меню" создаем новую категорию блюд (допустим "для кинотеатра") и в ней создаем 2 блюда - Билет и Очки 3D. У блюд обязательно настроить следующие параметры
Проверьте, что в настройках блюда "Билет" в разделе "Классификация" для созданной классификации "Для билетов" выбрана категория "Не печатать". Это нужно для того, чтобы данное блюдо не проходило через фискальный регистратор в кассе r_keeper_7
Данным блюдам присваиваем уникальный код и ограничиваем доступ к этим блюдам тем кассирам, которые будут работать на "Универсальной кассе" для того, чтобы они вручную не смогли его пробивать.
Для этого переходим в справочник "Персонал > Права" и создаем новое право "Право на блюдо"
Далее это право необходимо применить к блюдам к которым мы хотим ограничить доступ. Открываем справочник меню, выбираем блюдо и назначаем ранее созданное право
Если вы хотите передавать в кассу РКипер товарную позицию с полным описанием, не просто Билет или доп.цена, а полное описание (Дата и время сеанса, наименование и пр.), то в RKeeper надо создать модификаторы, привязать их к соответствующим блюдам.
1. Переходим в модификаторы. Создаём новую группу модификаторов “Билет”. В группе создаём элемент “Доп.инфо”, запоминаем код элемента(его потребуется указать в Премьере) и ставим флаги:
2. Переходим в схемы модификаторов. Создаём новую схему “Билет”, нажимаем п.к.м и выбираем Добавить группу модификаторов, в открывшемся окне выбираем, ранее созданный, модификатор "Билет".
3. Переходим в меню. Находим блюдо “Билет” и в разделе модификаторы привязываем, ранее созданную, схему модификаторов “Билет”
В справочнике "Заказ > Причины удаления" необходимо посмотреть либо изменить код причины удаления, которая будет использоваться по умолчанию при удалении позиций на "Универсальной кассе" из кассового Премьеры
!!! Настоятельно рекомендуется использовать “Код причины удаления” 1. В РКипер имеется ошибка, что если код причины удаления не равен 1, то в запросе удаления блюда, из заказа, вы будете получать ошибку “<Error RK7ErrorN="406">Не найден элемент 10 в коллекции Dish Voids.</Error>” (10 - это код причины удаления)
У причины удаления должны быть выданы все права, кроме “Списывать”
Для конкретной причины должно быть выданы права:
Необходимо создать пользователя в группе со всеми возможными правами, запомнив либо изменив, тот код и пароль, который ему назначен
К списку интерфейсов кассы добавляем новый интерфейс Second Screen with XML Interface и указываем параметры:
Переходим на кассовый ПК и в каталог \bin\win, кассы РКипер, распаковываем содержимое архива XML_Screen.zip
Переходим в менеджерскую Премьеры → Объекты учёта → Средства оплаты
В открывшемся справочнике активируем “Показать ID записи”, для этого в контекстном меню Сервис активируем соответствующий параметр
Коды средств оплаты меняются исключительно в РКипер
Смотрим коды в Премьере и меняем в Менеджерской РКипер в справочнике Деньги → Валюты.
Обычно связывают:
Для работы данной связки необходимо установить отдельный экземпляр FarCards который использует библиотеку Extdll.dll. Скачайте farcards.zip.
После распаковки архива, открываем файл Extdll.ini и вставляем в него строку
[MAIN]
Url = http://127.0.0.1:7788/guid=%checkguid%&mode=%checkmode%&orderguid=%orderguid%
Сохраняем изменения и переходим к файлу farcards.ini. В блоке [pds_netk] редактируем параметр NetServerName. Он должен соответствовать имени PDS Interface который вы добавили на кассовый сервер r_keeper_7.
После сохранения запускаем FarCards.
Примечание!
1. Farcards должен быть запущен ДО MID_server, в противном случае, на вкладке Chanels не будет активного подключения и после закрытия заказа в РКипер Премьера не получит о этом информацию (пуш с guid заказа).
2. Farcards должен быть установлен в виде службы, тип запуска: Автоматический. Если запускается как приложение, то ярлыку необходимо дать права администратора при запуске.
Переходим в менеджерскую Премьеры → Объекты учёта → Средства оплаты
Для каждой кассы задаём:
Переходим в настройки менеджерской Премьеры, раздел “Универсальная касса”, и указываем настройки из r_keeper_7:
Для начала стоит определится с версией РКипер и параметром “Использовать новое API RKeeper”
Если версия 7.6.4 и выше, то необходимо активировать данный флаг
Если версия 7.6.2 и ниже, то необходимо де-активировать данный флаг
С версии 7.6.4 в РКипер запрещено использовать выкуп блюда при возврате
!!! Настоятельно рекомендуется использовать “Код причины удаления” 1. В РКипер имеется ошибка, что если код причины удаления не равен 1, то в запросе удаления блюда, из заказа, вы будете получать ошибку “<Error RK7ErrorN="406">Не найден элемент 10 в коллекции Dish Voids.</Error>” (10 - это код причины удаления)
У причины удаления должны быть выданы все права, кроме “Списывать”
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="&FilmName &FormatName"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="&Age+"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="&SessionDateTime"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="&HallName"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Ряд: &RowNum"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Место: &PlaceNum"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Тип билета: &TicketName"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="ПУ: &PU"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Цена: &Price"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Средство оплаты: &Payments"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Серия: &RibbonSeries, Номер: &TicketNumber"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Кассир: &CashierName"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Время продажи: &Date"/>
<TextLine FontNum="1" Bold="1" BigHeight="1" BigWidth="1" Inverted="1" Tapes="3" Text="QR-код для прохода"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text=" "/>
<BarCode Type="QRCode" Height="200" CorrectionLevel="15%" Value="&OrderCode"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="&FilmName &FormatName"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="&Age+"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="&SessionDateTime"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="&HallName"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Ряд: &RowNum"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Место: &PlaceNum"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Тип билета: &TicketName"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="ПУ: &PU"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Цена: &Price"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Средство оплаты: &Payments"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Серия: &RibbonSeries, Номер: &TicketNumber"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Кассир: &CashierName"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Время продажи: &Date"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text="Номер интернет заказа: &ExtCode"/>
<TextLine FontNum="1" Bold="1" BigHeight="1" BigWidth="1" Inverted="1" Tapes="3" Text="QR-код для прохода"/>
<TextLine FontNum="1" Bold="0" BigHeight="0" BigWidth="0" Inverted="0" Tapes="3" Text=" "/>
<BarCode Type="QRCode" Height="200" CorrectionLevel="15%" Value="&OrderCode"/>
&HallName&n&FilmName&FormatName&nДата события: &SessionDateTime&n&TicketName&nРяд: &RowNum&nМесто: &PlaceNum
&HallName&n&LevelName&n&FilmName&FormatName&nДата события: &SessionDateTime&n&TicketName
&TicketName &OpenHours &OpenDays срок действия БСОД: &ExpDays дней
Список переменных для билета и входного билета
&HallName - Название зала
&FragmentName - Название фрагмента
&LevelName - Название яруса
&FilmName - Название мероприятия (фильма)
&AltName - Др. наименование
&FormatName - Название формата
&Age - Возврастное ограничение
&SessionDateTime - Дата и время мероприятия
&SessionDate - Дата мероприятия
&SessionTime - Время мероприятия
&TicketName - Название типа билета
&RowNum - Номер ряда
&PlaceNum - Номер места
&PU - номер прокатного удостоверения
&Price - Цена
&Discount - Скидка
&Payments - Тип оплаты
&CashierName - ФИО касира
&ExtCode - Код интернет продажи
&RibbonSeries - Серия катушки билетов
&TicketNumber - Номер билета
&Date - Дата и время продажи
&SessionSymbol - Символьный код сеанса
&TitleOver - Надзаголовок
&TitleUnder - Подзаголовок
&n - Перевод строкиСписок переменных для билета с открытой датой
&Price - Цена
&Discount - Скидка
&Payments - Тип оплаты
&CashierName - ФИО касира
&RibbonSeries - Серия катушки билетов
&TicketNumber - Номер билета
&Date - Дата и время продажи
&TicketName - Название типа билета
&OpenDays - Разрешенные дни недели
&OpenHours - Разрешенные часы
&ExpDays - Использовать в течении n дней
&n - Перевод строки