Введение

  • Приложение для оформления заказов при помощи мобильных устройств (ОС Android) самими гостями со своих устройств или предоставленных в заведении..
  • Интегрируется в работающий на объекте программный комплекс RK7.

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

  1. ПК под управлением ОС Win7 и выше с поддержкой IIS7 и выше.
  2. Мобильные устройства (Android v4 и выше) с поддержкой Wi-Fi.
  3. Wi-Fi роутер.

Состав ПО

  1. MovieSRV - серверная часть (реализована с поддержкой IIS);
  2. SelfOrder.apk - клиентская часть (устанавливается на мобильное устройство под управлением ОС Android);
  • Дистрибутивы предоставляются по отдельному запросу.

Схема взаимодействия модулейLink to Схема взаимодействия модулей

[SelfOrder.apk] <---> [MovieSRV<--->(IIS)] <---> [Midserv RK7}

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

На объекте должно быть установлено, пролицензированно и нормально работать ПО RK7 (refserv, midserv, wincash)

Полученные дистрибутивы распаковать в отдельные каталоги. Например:

  • D:\RK7\SelfOrder\MovieSRV
  • D:\RK7\SelfOrder\Restart

Полученный SelfOrder*.apk скопировать на устройство и установить обычным для ОС "Android" способом.

Диспетчер веб-сервисов IISLink to Диспетчер веб-сервисов IIS

Перед началом установки IIS необходимо выяснить какая версия NET.Framework в данной реализации ОС Windows. Должна быть не ниже 3.5. 

  • Поскольку модификации ОС могут быть разными, в случае возникновения проблем при работе сервера MovieSRV рекомендуется скачать полноценный дистрибутив с сайта производителя (например, отсюда - https://www.microsoft.com/ru-ru/download/details.aspx?id=17718) и проинсталлировать.

Для поддержки серверной части (MovieSRV) будет использоваться веб-сервер IIS.

Необходимо убедиться что в ОС Windows активированы его компоненты (все обязательные компоненты показаны на рисунке ниже):

Рис. - Компоненты веб-сервера.

  • Необходимо помнить, что в разных реализациях (редакциях) ОС Windows этот набор компонентов может различаться. 
  • Версии (сборки) NET.Framework установленные в ОС так же могут быть разными. 
  • При активации необходимо обратить внимание на компоненты ASP.NET и NET.Framwork 2 и 4. Они должны быть включены.
  • Само ПО написано и поддержано на уровне NET.Framework 2.0. Это необходимо помнить при дальнейшей настройке сервера MovieSRV в диспетчере IIS.

Все выше перечисленные моменты могут косвенным образом влиять на работоспособность (неработоспособность) устанавливаемого ПО.

После активации компонентов может понадобиться выполнить регистрацию компонентов NET.Framework той версии которая будет использована при дальнейшей работе.

  • Для этого необходимо открыть командную строку от имени администратора (Сочетание клавиш "Win" + "R" -> cmd.exe) и выполнить команды регистрации:

Для ОС Win 32-bit:

cd C:\Windows\Microsoft.NET\Framework\v2.0.50727\
aspnet_regiis.exe -i

 - для регистрации версии v2 32-bit;

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
aspnet_regiis.exe -i

- для регистрации v4 32-bit;

Если используется ОС Win 64-bit, тогда рекомендуется зарегистрировать и для работы в 64-битной среде:

cd C:\Windows\Microsoft.NET\Framework64\v2.0.50727\
aspnet_regiis.exe -i

 - для регистрации версии v2 64-bit;

cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
aspnet_regiis.exe -i

- для регистрации v4 64-bit;

Пример:

Рис. - Пример регистрации компонентов NET.Framework в командной строке.

Примечание

Подробнее об этой процедуре и различных вариантах установки на разных редакциях и битностях (x86 и x64) систем можно ознакомиться по ссылке - http://msdn.microsoft.com/ru-ru/library/k6h9cz8h(v=vs.100).aspx .

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

[Панель управления] - [Все элементы панели управления] - [Администрирование] - [Диспетчер служб IIS]:

Создать новый сайт:

Рис. - Создание нового сайта.

В диалоговом окне создания указать:

  • Имя сайта - может быть произвольным;
  • Путь до каталога \MovieSRV - содержимое серверной части;
  • Порт - должен быть уникальным (по нему будет происходить подключение клиентской части к серверной).

Примечание

Одноименный пул (pool) сайта будет создан автоматически.
  • При проверке соединения может выдаваться предупреждение "Авторизация". Оно не является критическим. Т.е. не является ошибкой.

Настроить пул созданного сайта.

  • Для этого, перейти в список пулов, выбрать пул сервера Self_Order_srv и открыть его "дополнительные параметры":

  • Версию среды рекомендуется изменить на - v2.0;
  • Разрешить 32-разрядные приложения - True;
  • Удостоверение (значение по умолчанию - "ApplicationPoolIdentity") - менять только в случае проблем с подключением клиентского приложения к серверу MovieSRV. (Например, можно указать - LocalSystem).

Примечание

После выполнения любых настроек в IIS а также изменения настроек в каталоге \MovieSRV необходимо перезапустить "пул приложения" или весь веб-сервис.



Важно!

В обязательном порядке добавить каталоги с содержимым ПО "SelfOrder" в исключения антивируса, брэндмауэров, файерволов и прочих приложений безопасности ОС Windows.




Настройка взаимодействия с RK7Link to Настройка взаимодействия с RK7

Настройка XML-интерфейса

В Менеджерской RK7 ([Сервис] - [Станции и устройства] ) cоздать и подвязать на кассовый сервер "xml-интерфейс", который будет задействован для связи с сервером MovieSRV.

  • Сначала создать физический интерфейс (см. рисунок ниже):

  • Задать уникальный порт (в примере это - 22331).
  • Затем создать отдельный логический (на рис. ниже это (SelfOrder) XML интерфейс (DIM)), связав его с физическим:


Примечание

Создание и подключение отдельного XML-интерфейса в RK7 используется не редко, для связи кассового сервера (или кассы) с другими системами (например с RkMobWaiter, RkOrder и многие другие). Т.о. можно считать что настройку xml-интерфейса необходимо выполнить стандартным образом

Создание типов расширенных свойств

Следующим шагом, в Менеджерской RK7 необходимо создать ряд "Типов расширенных свойств". Это необходимо для того, что бы в свойствах позиций из разных справочников (например в свойствах блюд, модификаторов, а так же у работников) появится дополнительный раздел настроек - "Extended", в котором будет добавляться различная информация, отображаемая в клиентской части ПО "SelfOrder".

  • Для создания "типов расширенных свойств" открыть справочник [Настройки] - [Настройка] - [Расширенные свойства].
  • Изначально справочник будет пуст. Необходимо создать новую группу свойств, задать ей любое название (В примере, это - SelfOrder).

Примечание

Те же типы расширенных свойств и их настройки используются и при настройке ПО "Rk-Order (IOS) + IpadServer". Фактически позаимствовано оттуда. Так что и большинство последующих настроек описанных в статье будет схоже с установкой ПО "Rk-Order (IOS)". 
  • В группе создать следующий перечень "Типов расширенных свойств" (см. рис. ниже):

Важно!

Название типов - регистрозависимо, а все их настройки принципиальны.
  • У каждого типа кроме при создании, кроме названия должен быть задан/заполнен ряд его свойств, а именно: "Системное имя", "Отображаемое имя", "Системный тип", "Список типов". Все эти свойства имеют конкретное значение и даны в здесь же, в описании.

Все указанные на скриншоте типы могут быть использованы в следующих веб-оринетированных и мобильных приложениях компании ЮСИЭС:

  • ПО "Виртуальная карта" (Virtual Card);
  • ПО "Электронное меню" (Rk-Order);
  • ПО "Самообслуживание" (SelfOrder);
  • и другие.

По этому, рекомендуется создать сразу весь перечень типов, хотя в описываемой реализации ПО "SelfOrder" задействовано на данный момент только три типа расширенных свойств, это:

  1. name0419 - название блюда
  2. shortComment0419 - комментарий (описание) блюда
  3. imagePath - путь к иконкам групп блюд

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

Пример создания "Типа расширенных свойств"

Ниже представлен пример создания одного из типов (name0419): 

  • Задать "Отображаемое имя";
  • Задать "Системное имя";
  • Тип свойства - "ANSI string"
  • Далее, "провалиться" по кнопке [...] в строке "Список типов". откроется новое окно, которое изначально будет пустым.
  • Правой кнопкой мыши "Добавить элемент":

  • Откроется новое окно - "Choose Class Infos" со справочником (деревом) элементов:

  • Из справочника добавить столько элементов, сколько указано в описании (см.ниже) к каждому типу расширенных свойств. 
  • В данном примере - для типа "name0419", в "список типов" должны быть добавлены элементы: "Работник", "Роль", "Страница селектора", "Элемент меню", "Модификатор", "Группа модификаторов", "Комбо группа", "Комбо схема", "Комбо элемент", "Комбо элемент меню", "Порядок подачи", "План зала". Все они ищутся в справочнике элементов и добавляются по одному за раз в "Список типов":

  • В результате, в справочник списка типов добавиться выбранный элемент:


Примечание

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

  • Остальные типы должны быть созданы по его подобию с использованием описания каждого типа (см.ниже).

Описание "Типов расширенных свойств" 

Таблица - Типы расширенных свойств и их элементы.

№ п.п.Тип расширенных элементовСистемное имяОтображаемое имяСистемный типКол-во элементов в типеЭлементНахождение в справочнике
1InfoWaiteInfoWaiteИнфо официантаtkUnknown1Работник[Все] - [Работники] - [Работник]
2name0419name0419НазваниеtkUnknown12Работниксм.выше
Роль[Все] - [Работники] - [Роль]
Страница селектора[Все] - [GUI] - [Страница селектора]
Элемент меню[Все] - [Меню, Модификаторы, Цены] - [Элемент меню]
Модификатор[Все] - [Меню, Модификаторы, Цены] - [Модификатор]
Группа модификаторов[Все] - [Меню, Модификаторы, Цены] - [Группа модификаторов]
Комбо группа[Все] - [Меню, Модификаторы, Цены] - [Комбо группа]
Комбо схема[Все] - [Меню, Модификаторы, Цены] - [Комбо схема]
Комбо элемент[Все] - [Меню, Модификаторы, Цены] - [Комбо элемент]
Комбо элемент меню[Все] - [Меню, Модификаторы, Цены] - [Комбо элемент меню]
Порядок подачи[Все] - [Меню, Модификаторы, Цены] - [Порядок подачи]
План зала[Все] - [Столы, Планы Залов] - [План зала]
3longComment0419longComment0419Полный комментарийtkUnknown3Модификатор - // -
Элемент меню - // -
Страница селектора - // -
4shortComment0419shortComment0419Краткий комментарийtkUnknown3Модификатор - // -
Элемент меню - // -
Страница селектора - // -
5 Weight0419 Weight0419ВесtkUnknown3Модификатор - // -
Элемент меню - // -
Страница селектора - // -
6TotalWeight0419TotalWeight0419Выходной весtkUnknown3Модификатор - // - 
Элемент меню - // - 
Страница селектора - // -
7prompt0419prompt0419 PrompttkUnknown1Группа модификаторов - // -
8imagePathimagePathimagePathtkUnknown1Страница селектора - // -
  • После создания расширенных свойств они появятся в свойствах самих блюд и их групп. Настройка самих блюд описана ниже в разделе "Блюда".

Локализация

По умолчанию , в клиентском приложении поддержано два интерфейса: русский и английский. Переключается в самом приложении.

Примечание

Дополнительно, о локализации -  https://www.autoitscript.com/autoit3/docs/appendix/OSLangCodes.htm.

Организация дерева меню

Следующим шагом, в Менеджерской RK7 необходимо для работы с SelfOrder создать и правильно организовать отдельное (от основного меню) - "Дерево меню".

  • Для SelfOrder (Android) используется отдельное от основного меню - дерево меню:
[Меню] - [Дерево меню]
  • Организуется оно так же как и при настройке ПО "Rk-Order" и ПО "Virtual Card", так что информация в статьях по установке этих продуктов может быть также полезной.
  • Основные правила создания дерева меню:
  • Дерево меню должно быть трех-уровневым:

  • Создать необходимое количество групп блюд (страниц селекторов) первого и второго уровней:

  • Перетащить мышкой группы второго уровня в каталоги первого уровня.
  • Каталог "Начальный выбор" (предустановка) является корнем дерева меню. Страницы селекторов (каталоги) первого уровня должны быть помещены в него.

Рис. - В каталоге "Начальный выбор" - страницы селекторов (группы блюд) первого уровня.

Рис. - В каталоги первого уровня перемещены каталоги второго уровня.

  • Добавить блюда из основного меню перетаскиванием из "Меню" в нужны каталог "Дерева меню".

Важно!

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

Настройка расширенных свойств и картинок/иконок групп блюд дерева меню

При создании дерева меню, каждой группе блюд (которые будут являться страницами селекторов) необходимо кроме прочих настроек задать описание в разделе "Extended" (расширенных свойств).

  • Задать, как минимум, название группы (именно оно будет отображаться в интерфейсе программы);
  • Задать название картинки/иконки группы блюд (не путать с картинками самих бдюд). В поле указывается только название и расширение файла картинки/иконки :

  • Сами картинки/иконки должны быть заранее подготовлены и помещены в каталог:
\MovieSRV\Ico - если каталог в составе сервера отсутствует, его необходимо создать
Важно! Не путать каталог \Ico с каталогом \Icons!
  • Рекомендуемый размер иконок - 230x170 (но при изменении размера интерфейса, например на разных мобильных устройствах, само приложение может рендерить картинку под разные размеры).
  • Поддержанный формат - *.jpg, *.png.
  • Имя файла картинки должно быть на латинице (так же можно использовать цифры), без пробелов и прочих спец-символов.
  • Если картинок не задано, будет использоваться иконка по умолчанию, из состава приложения.

Пример отображения иконок групп блюд:

Настройка расширенных свойств блюд

После организации дерева меню и добавления расширенных свойств, необходимо сделать несколько настроек в самих блюдах. 

Заполнить, в свойствах каждого добавленного в дерево меню блюда, раздел - "Extended". Этот раздел появляется после добавления расширенных свойств (описано выше):

  • Название и комментарий (описание) блюда в приложении будет отображаться именно из этого раздела:

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

Каждому блюду присвоить картинку.

  • Картинки должны быть заранее созданы.
  • Должны быть в формате png или jpg.
  • Рекомендуемый размер картинки блюда - 512x683 (но при изменении размера интерфейса, например на разных мобильных устройствах, само приложение может рендерить картинку под разные размеры).
  • Имя файла картинки должно быть на латинице (так же можно использовать цифры), без пробелов и прочих спец-символов.

Для того, чтобы блюдам из дерева меню назначить картинки, необходимо в параметрах Менеджерской RK7:

[Настройки] - [Параметры] - [Все] - [Использование опций] - [Самообслуживание/Интернет Заказы]

- Включить "логический" параметр:

[Настройки] - [Параметры] - [Все] - [Установочные] - [Путь к каталогу с картинками]

- указать путь к каталогу с картинками:

Важно!

Название каталога \imgs и нахождение его внутри \MovieSRV принципиально!
  • Название самой картинки указывается (прописывается) в свойствах блюда (раздел "Самообслуживание/интернет-заказы"):

Рис. - Картинки блюд.

Рис. - Крупная картинка.

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

План зала должен быть создан и настроен в RK7 стандартным образом. Можно использовать ранее заведенный и используемый в заведении, либо создать для SelfOrder свой (новый/отдельный) план зала:

  • Код плана зала в дальнейшем, необходимо будет указать в настройках SelfOrder-клиента, параметр - "HallCode".

При создании стола для работы SelfOrder необходимо учесть несколько моментов:

  • Код стола необходимо будет указать в настройках SelfOrder-клиента, параметр - "TableCode". Именно в этот стол и буду приходить заказы с клиента.
  • Название стола должно быть задано по маске:
N-N или NN-NN или N-NNN или NNN-N

- где, N - цифра. Причем, значение до разделителя - это "место" (или кресло), а значение после разделителя - это "ряд" в кино-зале. Пример:

Настройка сервера MovieSRVLink to Настройка сервера MovieSRV

Выполнить настройки конфигурационных файлов в составе сервера MovieSRV.

  • Отредактировать параметры конфигурационного файла \MovieSRV\ips.ini. Файл фактически из состава VCSRV (сервера для работы с ПО "Виртуальная карта"). Многие параметры в нем для работы SelfOrder не задействованы. В примере указаны только редактируемые параметры:

[RK7] 
;--- касса StationCode=1 
StationId=15002 

..... - пропуск... 

;--- код интерфейса 
InterfaceCode=5 

..... - пропуск... 

;--- кассовый сервер 
;--- для связи с кассовым сервером RK7 обязательно должны быть заданы MidIP и MidPwd 
MidIP=172.22.3.93:22331 
MidPwd= 
;--- код виртуального стола 
VirtualTable=212 
;--- код виртуального официанта 
VirtualWaiter=99

 ..... - пропуск... 

;--- черновой порядок подачи 
DraftCourseCode=1 
;--- добавлять в существующий заказ 
AddIfOrderExists=1 
;--- код типа заказа "Общий" 
OrderTypeCode=1 
;--- код типа заказа для самовывоза 
PickupOrderTypeCode=2 
;--- код типа заказа для доставки 
DelveryOrderTypeCode=3 
;--- идентификатор селектора, с которого начинается дерево меню 
DefaultSelectorIdent=11048 
;--- время устаревания закачанных с RK данных (в секундах) 
UpdateTime=60 

;----------------- Сообщения официантам ------------------ 
;--- отправлять сообщения с кассы всем официантам, обслуживающим стол (1-Да, 0-Нет) 
SendToAll=1 
;--- код официанта, который всегда получит сообщение, если не задан промокод;
DefaultWaiterCode=3565 
;--- время активности сообщений для официанта (в секундах) 
WaiterMessageTimeToLive=3600 

[VDU] 
VDUID=81 
LocalPort=1111 
RestCode=138440006 
Waiter=iPod 
ShowComboTitle=1 

[ORDERS] 
;------------------ Коды заказов -------------------------- 
;--- минимальное значение 
LastOrderCodeMinValue=50000 
;--- максимальное значение 
LastOrderCodeMaxValue=99999 
;--- последнее значение (НЕ РЕДАКТИРОВАТЬ) 
LastOrderCode=50001 

;------------------ Cлужебный раздел --------------------- 
[SERVICE] 
;--- язык интерфейса 
Lang=RUS 
;--- размер файла лога в байтах 
LogFileMaxSize=3000000 
;--- уровень логирования 
LogLevel=5

Остальные конфигурационные файлы - cs5.ini, smsconsult.ini, settings.ini, tms6.ini, mrsrv.ini - на данный момент, для работы с клиентским приложением SelfOrder (Android) не используются.

Настройка клиентаLink to Настройка клиента

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

При запуске клиента, можно войти в его настройки (конфигуратор), где прописываются следующие параметры:

Рис. - Вход в настройки по кнопке, до полной загрузки SelfOrder-клиент.

Рис. - Настройки клиентской части, стр.1

Рис. - Настройки клиентской части, стр.2 (после прокручивания вниз, до конца).

Перечень настроек:

[SERVER]
HOST - IP-адрес ПК на котором запущен сервер MovieSRV
PORT - порт сервера MoviSRV (указан в настройках IIS, см.раздел настройки IIS)

[EXTERNALCONTROLS]
HOST - IP-адрес ПК на котором может быть запущен Restart.exe (опционально), если используется
PORT - порт приложения Restart.exe (4488, по умолчанию)

[PARAMS]
TABLECODE - код стола из RK7 (см. выше)
HALLCODE - код плана зала (см. выше)
DEVICEID - уникальный идентификатор устройства (задействован при автообновлении), в данной конфигурации указать любое уникальное значение.
DISHTYPEMODIFIERID - код модификатора, который будет использоваться при пометке блюда "на вынос"

Примечание

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

Примечание

Любые доработки как внешнего вида, так и функционала обсуждаются по отдельным ТЗ.