Настройка второго экрана через XML-интерфейс
Важно!
С 31.12.2020 второй экран больше не дорабатывается и не поддерживается. Используйте Guest Screen.
Введение
SecondScreen.exe - это приложение для Windows, контролируемое кассовой станцией.
Кассовая станция посылает данные о изменении статуса ("окно регистрации", "окно создания заказа" и т.д.) работы приложению, а оно реагирует на события и запускает сценарий для события.
Обычно настраивают сценарии (или несколько сценариев с различными условиями) для каждого режима работы кассы. Сценарии состоят из сцен.
Сцены имеют определенный алгоритм отображения данных (алгоритм использует один из поддерживаемых медиа-файлов для отображения, которые так же могут быть приложением .dll).
При редактировании параметров в xml файлах у объектов РК7 (блюдо, категория блюд, бизнес периоды) используют свойство "код" (а не идентификатор).
Необходимые файлы лежат на ФТП (ftp://ftp.ucs.ru/rk7/INSTALL/RK7_XMLSecondScreen). Система состоит из двух частей:
ядро - SSXMLAIR_core_version.rar;
папка с шаблонами дизайнов - SSXMLAIR_Designs - содержит предустановленные дизайны под различные ориентации экрана и концепции ресторана.
Порядок настройки и запуска
Примечание
Для корректной работы данного ПО на некоторых платформах может потребоваться обновление системы безопасности MFC для распространяемого пакета Microsoft Visual C++ 2008 с пакетом обновления 1 (SP1).Загрузите Adobe Flash active-x компонент и проинсталлируйте его (v.11 и выше). Дистрибутив можно взять на ФТП ftp://ftp.ucs.ru/Foreigns/TOOLS/Flash/. Для последних версий не требуется.
Содержимое архива SSXMLAIR_core_<версия>.rar распаковать в директорию кассовой станции (папка с wincash.bat), к которой физически подключен второй экран, сохраняя структуру папок.
Применить нужное оформление. Для этого в директории SSXMLAIR_Designs выбрать архив с нужным оформлением и распаковать его в директорию кассовой станции (папка с wincash.bat), сохраняя структуру папок.
Отредактировать SecondScreen.ini и SSConfig.xml (подробнее читайте ниже).
В менеджерской станции добавить на вкладку "Устройства" кассовой станции интерфейс "Second Screen with XML Interface"; Пропишите имя лог-файла (парметр Log Name), выберите уровень логирования (LogLevel).
Перезапустить кассовую станцию и проверить, что secscr7.dll загрузилась на кассу.
Если необходимо какому-либо блюду присвоить картинку, то необходимо создать произвольный каталог, наполнить его картинками блюд размерами 512х512 px в формате "png".
Далее пропишите путь к данному каталогу (параметр "Путь к каталогу с картинками" в справочнике "Настройки - Параметры").
Рис.2 Параметр "Путь к каталогу с картинками"
- Чтобы для блюда можно было выбрать картинку из каталога, созданного ранее, необходимо включить параметр "Самообслуживание/Интернет Заказы" в справочнике "Настройки - Параметры" и далее в свойствах блюда заполнить поле Файл с большой картинкой.
Рис.3 Привязка картинки к блюду
Создайте новую Классификацию блюд и категорию(-и) для второго экрана (справочник "Меню - Классификации блюд"). Категории блюд необходимы, если требуется настроить сцены, завязанные на несколько блюд.
Рис.4 Классификации блюд для второго экрана
Настройте Бизнес период, если это необходимо (Настройки - Центральный офис - Бизнес периоды).
Дальнейшая настройка связана с настройкой сценария отображения на втором экране и требует внесение изменений в соответствующие конфигурационные файлы: SecondScreen.ini и SSConfig.xml.
Обновление
Для обновления уже установленной версии до новой достаточно обновить только содержимое из архива SSXMLAIR_core_<новая_версия>.rar
Настройка конфигурационных файлов
При настройки отображения картинок и надписей на втором экране следует обратить внимание на три основных файла:
SecondScreen.ini - общие настройки для форм второго экрана, настройка размеров, координат, параметров отображения и параметров логирования;
SSConfig.xml - настройки сценариев, сцен и их оформления;
media\skin.xml - содержит детальные характеристики для оформления второго экрана (включение\выключение областей и полей, цветовое оформление, подложки, размеры и цвета шрифтов).
SecondScreen.ini
Общие настройки для форм второго экрана - настройка размеров области уведомлений, рекламной области и области расчета заказа.
[DISHPICS]
Dir=C:\image\ ;; Путь к картинкам блюд. В данной папке должны лежать файлы, которые используются для блюд в менеджерской станции (рис.3)
ImageForMissing=media\image_for_empty.png ;; Путь к файлу с изображением, которое выводится в случае, если нет картинки блюда
[OUTPUT]
DecimalDigits=0 ;; Кол-во знаков после запятой в ценах
Language=RUS ;; Язык локализации (RUS, ENG, GER) в SSStrings.xml
ItemName= ;; поле, содержащее названия блюд. Если пусто, то берется поле Name. Также можно прописать AltName. Если указывают расширенное свойство, то оно должно идти с префиксом "gen", например, ItemName=genName0419.
ShowZeroCheckLines=1 ;; Показывать строки с нулевой ценой в чеке (0=не показывать, 1=показывать)
ShowNewItem=1 ;; Показывать только что пробитое блюдо на втором экране (0=не показывать, 1=показывать, пусто = 0). При этом над картинкой блюда отображается специальный эффект - пар
PicByCode=0 ;; отображать картинку для блюда, находя ее в папке "Dir" по шаблону КодБлюда.png, в случае незаполненного параметра "Файл с большой картинкой" в менеджерской станции Rk7 (рис.3).
ShowVoting=0 ;; Показывать голосовалку (0=не показывать, 1=показывать, пусто = 0) Подробнее читайте в пункте "Индекс качества"
DriveMode=1 ;; Режим "Drive" (0=не показывать, 1=показывать, пусто = 0)
ShowCursor=0 ;; Показывать курсор (0=не показывать, 1=показывать, пусто = 1)
PopupStation=1 ;; Передавать фокус на кассу (0=не передавать, 1=передавать, пусто = 1)
ShowModifiers=1 ;; Показывать модификаторы и составляющие комбо (0=не показывать, 1=показывать, пусто = 1)
ReverseCheck=0 ;; Чек в обратном порядке (0=нет, 1=да, пусто = 0)
ShowLastOrder=1 ;; 0-работа как раньше, информацию о предыдущем заказе не показывать, 1-показывать информацию о предыдущем заказе до открытия нового (пробитые блюда и сумма заказа). Реализовано в SecondScreen.dll 1.0.0.160
ScenarioType=1 ;; тип сценария 0 - обычный, 1 - по последнему пробитому блюду
HidePrices=1 ;;не показывать цены
[SCREENPOSITION]
; Левая координата второго экрана
MainLeft=1024
; Верхняя координата второго экрана
MainTop=0
; Ширина второго экрана
MainWidth=1024
; Высота второго экрана
MainHeight=768
[LOGFILE]
; Уровень логирования (0=не логировать, 1=только ошибки, 2=ошибки и предупреждения, 3=полный лог
Log=3
; Директория для логов
LogDir=SSLogFiles
[REGSOCKET]
; Хост для внутренней связи экранов (по умолчанию лучше оставлять 127.0.0.1)
Host=127.0.0.1
; Порт для внутренней связи экранов (по умолчанию лучше оставлять 2489)
Port=2489
[CS_CONNECTION]
; Адрес Common Server, в случае если настройки (сценарий) осуществляются через плагин RK7 7.5.2 и FeatureServer. Если параметр пуст, то настройки берутся из локальных файлов
;; WSDL= https://IP_CommonServer:PORT_CommonServer/soap/UCSCommonWS
WSDL=
[STATION]
; Код станции. Используется при старте.
Code=1
SSConfig.xml
Файл с настройками сцен для второго экрана. Для каждого состояния/режима кассы прописываю сценарий с условиями и при выполнении условия происходит запуск сцен.
Основные параметры SSConfig.xml
- Сцены
Сцены помечены тегом <SceneList> и настраиваются в блоке <SceneList> ... </SceneList>.
Возможные типы сцен:
Type=“Gallery” – галерея (указываем код группы блюд или код блюда)
Type=“Image” – произвольная картинка, не привязанная к справочникам РК7
Type=“Video” – видео в формате flv
Примечание: сцена с id = {-1} работает для отображения только что пробитого блюда при условии, что включен параметр ShowNewItem=1. В режим 3_2 необходимо добавить любой сценарий без сцен.
Если при демонстрации определенной категории, нужна определенная надпись, например при демонстрации категории "Соки" необходимо выводить надпись "Не забудьте заказать напиток", то воспользуйтесь параметром Slogan.
Данный параметр имеет следующие характеристики:
Slogan="Попробуй десерт...пальчики оближешь" SloganAlign="center" SloganX="150" SloganY="680" SloganWidth="500" SloganHeight="20" SloganBackground="" SloganFontSize="25" SloganFontColor="0xFFFFFF" SloganPadding="0"
Данные характеристики как раз отвечают за отображение надписи - выравнивание, координаты верхней левой точки (X,Y,Z), ширина, высота, фон, размер шрифта, цвет шрифта и отступ.
Примечание: чтобы блюдо, которое только что было добавлено в заказ, появлялась на втором экране не на короткое время (буквально на пару секунд), необходимо в SSConfig.xml у сцены с аттрибутом Id="-1" добавить аттрибут Duration="10". Это требуемая длительность демонстрации в секундах.
Примечание: начиная с версии 1.0.0.146 у сцены можно задавать эффект для категорий добавлением дочернего элемента для сцены.
Пример:
<Scene Id="{-1}" Type="Gallery" Name="LastItem" DishCode="0" Description="Добавлено в заказ" Price="0" Currency="" Background="Advert/Background.png" PriceSubstrate="Advert/Price.png" Padding="40" NameFontSize="72" NameFontColor="0xfff9d4" DescriptionFontSize="25" DescriptionFontColor="0xf3d7b7" PricePadding="30" PriceFontSize="90" PriceFontColor="0xfff9d4" CurrencyFontSize="60" CurrencyFontColor="0xfff9d4" Effect="2" Animation="0" NameAlign="center" DescriptionAlign="center" PriceAlign="right" Slogan="" SloganAlign="center" SloganX="0" SloganY="0" SloganWidth="0" SloganHeight="0" SloganBackground="" SloganFontSize="0" SloganFontColor="0xFFFFFF" SloganPadding="0" Duration="10"> <EffectCase> <CaseItem Category="код_категории_без_эффекта" Value="0"/> <CaseItem Category="код_категории_с_паром" Value="1"/> <CaseItem Category="код_категории_с_инеем" Value="2"/> </EffectCase> </Scene>
Эффекты замерзания и дыма отключаются параметром Effect="0".
- Сценарии
Сценарии помечены тегом <ScenarioList>. В сценарии настраиваются сцены в зависимости от режима/состояния кассовой станции (режимы описаны ниже).
Параметр <Scenario Id="{Q}" - это порядковые значения сценариев (Q = 0...N).
Для режимов 4 (оплата) и 5 (печать чека) так же можно задавать сценарии, например рекламировать спецпредложения. Обязательно для этих режимов настроить рекламную область и сделать ее видимой (в файле media\skin.xml - у тэга <adverts> сделать visible=0).
В этих режимах у сценариев дополнительным ограничением может выступать атрибут Payment="true", означающий, что этот сценарий будет показан только в случае, если уже внесена оплата или Payment="false", означающий, что этот сценарий будет показан только в случае, если оплата еще не внесена (т.н. последнее предложение). Если этого атрибута у сценария нет, значит он подходит для обоих случаев.
В сценариях можно выставить иерархию по категориям, например:
<Scenario Id="{4}" Last="22" With="6,9,7" Without="8" Comment="добавили блюда из категории с кодом 6, 9, 7 и нет блюд из категории с кодом 8. Запускаем сцену 6"> <ShowScene Id="{6}"/>
в With и Without учитывается не порядок, а совокупность категорий в чеке (условие "И") через запятую без пробела. Для примера выше условие будет звучать так: если в заказе есть блюдо из категории с кодом 6 и блюдо из категории 9 и блюдо из категории 7 и нет блюда из категории 8, то выполнить сцену 6.
В параметре Last="22" проверяется то, что последнее добавленное блюдо принадлежит категории c кодом "22".
Примечание
Если необходимо проверять наличие конкретных блюд, а не категорий, то можно использовать параметры WithCodes, WithoutCodes и LastCode.
Параметр Last, LastCode работают только, если в SecondScreen.ini параметр ScenarioType=1
Skin.xml
Skin.xml содержит детальные характеристики для оформления второго экрана (включение\выключение областей и полей, цветовое оформление, подложки, размеры и цвета шрифтов).
В этом файле конфигурируется визуальное оформление второго экрана в разных режимах mode_X.
Расcмотрим параметры:
<Advert X="0" Y="187" Width="768" Height="837" Visible="1"/> - строка отвечающая за рекламный блок
<Check X="0" Y="0" Width="0" Height="0" Visible="1"/> - строка отвечающая за область чека
<QualityServise X="0" Y="0" Width="0" Height="0" Visible="0"/> - строка отвечающая за блок оценки качества обслуживания
- <QRCode X="0" Y="0" Width="0" Height="0" Visible="0"/> - строка выводящая блок QR-code
<Logo X="25" Y="187" Width="142" Height="74" Visible="0"/> - отображать логотип
<Ico X="0" Y="0" Width="0" Height="0" Visible="0"/> - отображать иконку ( например в mode_4 это иконка тележки)
<Display X="0" Y="0" Width="768" Height="193" Visible="1"> - отображать надпись из showtext
<Effect Visible="0"/> - включение и отключение эффектов
В этих строчках так же редактируются координаты расположения данных блоков, а именно X,Y - координаты блока, Width - ширина, Height - высота и параметр Visible - активация этого параметра.
Прозрачность области чека также регулируется в файле skin.xml в элементе SecondScreen->Screens->Check атрибутом AdvertAlpha="50" (0 - непрозрачный, 100 - полностью прозрачный).
Режимы
Рисунок 5. Прицип работы режима (mode_X)
1. Mode_1 - режим ожидания (до регистрации кассира)
2. Mode_2 - главное меню и другие сервисные формы (кассир зарегистрировался и активен)
3. Mode_3 - форма редактирования заказа, изменения статуса заказа
4. Mode_3_1 - режим набора заказа, но ни одного блюда не выбрано
5. Mode_3_2 - когда уже выбрано хотя бы одно блюдо, режим добавления блюд
6. Mode_4 - форма редактирования заказа, расчет заказа и статус оплаты
7.Mode_5 - форма редактирования заказа, состояние печати чека
8. Mode_11 - форма создания заказа
9. Mode_18 - форма логирования (после того как кассир зарегистрируется, но до активации).
Примеры настройки анимации на втором экране
Примечание
Для реализации сценариев необходимо использовать либо коды блюд либо коды категорий из справочника "Меню - Классификации блюд".Задача № 1 - При добавлении в заказ основного блюда, на втором экране начинать демонстрация блюд из другой категории.
Например, при пробитии блюда из категории "Горячее" начинать демонстрацию блюд из категории "Десерты".
Решение для задачи № 1
Первое, что нам нужно - это настроить файл SSConfig.xml, а именно в группе SceneList набор сцен для демонстрации. В вашем случае, необходимо демонстрировать категорию "Десерты", при побитии блюд из категории "Горячее".
Для этого создаем новую сцену (в одну строку), например:
<Scene Id="{4}" Type="Gallery" Name="ДЕСЕРТЫ" DishGroup="6" Description="" Price="" Currency="" Background="Advert/Background.png" PriceSubstrate="Advert/Price.png" Padding="40" NameFontSize="72" NameFontColor="0xfff9d4" DescriptionFontSize="20" DescriptionFontColor="0xf3d7b7" PricePadding="30" PriceFontSize="90" PriceFontColor="0xfff9d4" CurrencyFontSize="60" CurrencyFontColor="0xfff9d4" Effect="2" Animation="1" NameAlign="center" DescriptionAlign="center" PriceAlign="right" Slogan="" SloganAlign="center" SloganX="0" SloganY="0" SloganWidth="0" SloganHeight="0" SloganBackground="" SloganFontSize="0" SloganFontColor="0xFFFFFF" SloganPadding="0">
<SloganCase>
<CaseItem Category="6" Value="Попробуй новинку среди десертов!" />
<CaseItem Category="14" Value="Попробуй новинку среди пирогов!" />
</SloganCase>
</Scene>
Параметр DishGroup - это и есть наша группа, из которой необходимо демонстрировать блюда. Должен быть равен коду категории из справочника Классификации блюд.
Далее группа параметров Mode_3_2 ModeId="3_2" отвечает за алгоритм отображения сцен при добавлении блюд в заказ, т.е.:
<Mode_3_2 ModeId="3_2"> <Scenario Id="{2}" With="5" Name="Закажите десерт..."> <ShowScene Id="{4}"/> </Scenario> <Scenario Id="{1}" Name="Сценарий 1"> <ShowScene Id="{1}"/> <ShowScene Id="{2}"/> <ShowScene Id="{3}"/> </Scenario>
Алгоритм поведения сверху вниз, если выполняется условие With= коду категории (т. е. есть блюдо из категории), то выполняется сценарий Id=4, если не равен, то все, что ниже.
Задача № 2 - необходимо реализовать следующий сценарий:
1) пока не добавлено блюдо из категории 6 показывать блюда из категории 6
2) если добавлено блюдо из категории 6, показывать блюда из категории 9
3) если добавлены блюда из категорий 6 и 9, то показывать блюда из категории 7
4) если добавлены блюда из категорий 6,9 и 7, то показывать блюда из категории, например, 8 и т.д.
Решение для задачи № 2
В SSConfig.xml должен быть прописан следующий сценарий:
<SecondScreen>
<SceneList>
....вырезано...
<Scene Id="{6}" Type="Gallery" Name="Десерты" DishGroup="6" AltDishName="Наши Десерты"...вырезано... />
<Scene Id="{7}" Type="Gallery" Name="Бургеры" DishGroup="5" AltDishName="Наши бургеры" ...вырезано... />
<Scene Id="{8}" Type="Gallery" Name="Рыба" DishGroup="7" AltDishName="Наша Рыба" ...вырезано... />
<Scene Id="{9}" Type="Gallery" Name="Напитки" DishGroup="4" AltDishName="Наши Напитки" ...вырезано... />
</SceneList>
<ScenarioList>
<!--...вырезано...-->
<Mode_3_2 ModeId="3_2">
<Scenario Id="{1}" With="5,7,4" Without="6" Comment="есть Бургеры(5) и Рыба(7) и Напитки(4) и нет Десерта(6), то показываем кат. Десерт(6)">
<ShowScene Id="{6}"/>
</Scenario>
<Scenario Id="{2}" With="5,7" Comment="есть Бургеры(5) и Рыба(7) и нет Напитков(4), то показываем кат. НАПИТКИ(4)">
<ShowScene Id="{9}"/>
</Scenario>
<Scenario Id="{3}" With="5" Without="7" Comment="есть блюдо из категории Бургеры(5) и нет Рыбы(7), то показываем категорию Рыба(7)">
<ShowScene Id="{8}"/>
</Scenario>
<Scenario Id="{4}" Without="5" Comment="нет блюд из категории Бургеры(5), то показываем блюда из категории Бургеры(5)">
<ShowScene Id="{7}"/>
</Scenario>
</Mode_3_2>
<!--...вырезано...-->
</ScenarioList>
</SecondScreen>
Работа системы
Запуск
1. Запускаем кассу РК7 как обычно. Если файл secscr7.dll загрузился на кассу, то SecondScreen.dll будет вызван РК7 при старте. secscr7.dll это файл драйвера 'Second Screen with XML interface' на кассовой станции. Он будет загружен с помощью preload на станцию.
2. SecondScreen.dll запустит SecondScreen.exe.
Настройка второго экрана удаленно на другом ПК
Если подразумевается, что второй экран запущен на одной станции (ПК2), а касса находится на другой станции (ПК1), то необходимо выполнить шаги, описанные ниже.
1. Папки с картинками должны присутствовать на обоих компьютерах и пути их совпадать. (так же полностью должен совпадать путь к директории win\media)
2. На ПК2 удалить из устройств в менеджерской "Second Screen with XML Interface".
3. На ПК2 В файле [путьRK7]\bin\win\media\Settings.xml у элемента Settings в атрибуте Host указать ip-адрес ПК1.
4. Перезапустить ПК2.
5. После включения ПК2 вручную запустить файл [путьRK7]\bin\win\media\SecondScreen.exe (можно создать ярлык для запуска в автозагрузке, чтобы не приходилось каждый раз руками запускать).
6. Для ПК1 настроить Second Screen как обычно, затем удалить или переименовать файл [путьRK7]\bin\win\media\SecondScreen.exe.
7. Перезапустить ПК1.
Если необходимо запустить второй экран на компьютере без менеджерской станции(ПК2), то необходимо создать точный путь к директории win\media как на ПК1 и скопировать туда папку media с ПК1. Потом сделать точно такие же действия которые описаны выше.
Примечание
Геометрические характеристики (высота, ширина и координаты верхнего левого угла) SecondScreen.exe на ПК2 прописываются в SecondScreen.ini, расположенным на ПК1 в папке с кассовой станцией.Отчеты
1. Вы можете просмотреть Индекс качества обслуживания (Service Quality Index), если он используется в отчетах RK7 (доступно в наборе данных 'Чеки' , ID=14).
2. Индекс качества принимает два значения: хорошо=1, плохо=5.
3. Индекс качества можно найти в базе RK7 в таблице [PRINTCHECKS] поле [SQI].
Индекс качества
1. После оплаты заказа возможно оставить свой отзыв (есть соответствующие кнопки).
Настраиваются соответствующие кнопки в файле \media\skin.xml в блоке:
<QualityServise Enabled="1" Text="ОЦЕНИТЕ НАШУ РАБОТУ" FontSize="32" FontColor="0xfff9d4" Image="qs_image.png" BtnNegativeA="qs_negative_a.png" BtnNegativeB="qs_negative_b.png" BtnPositiveA="qs_positive_a.png" BtnPositiveB="qs_positive_b.png"/>
2. После оценивания данные запишутся в базу и пользователь увидит следующее сообщение.
3. Возможно напечатать SQI или ее текст в документ (практически любой, при этом обычно необходимо редактировать соответствующий макет).