Данное описание тестировалось на версиях 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 – перевод строки