# Интеграция iiko и Абонемент / Shelter

**Описание интеграции iiko и Абонемент / Shelter.**

Структурная схема связки выглядит следующим образом:

[![image-1628232502640.png](https://docs.shelter.ru/uploads/images/gallery/2021-08/scaled-1680-/image-1628232502640.png)](https://docs.shelter.ru/uploads/images/gallery/2021-08/image-1628232502640.png)

Для работы Connecter - установите сервер блокировок Абонемента (службу) и запустите.  
В connecter.ini указываете хост и порт сервера блокировок именно Абонемента (1111 - это дефолтный порт лок-сервера Шелтера), у Абонемента, как правило, он другой (1116 или 1119) - проверьте, чтобы порт был открыт (Брандмауэр).

Также в connecter.ini в секции \[lock.server\] укажите  
Project = 2  
Module = 12  
version=2.3

На ключе защиты **Shelter** ОБЯЗАТЕЛЬНО должен быть проект 2 модуль 12.

**Структура взаимодействия модулей и программ.**

iiko при оплате на специальным платежом обращается к Connecter, который обращается к ShelterConnect.dll, которая работает с базой данных Абонемент/Shelter.

Используемые версии ПО:

- Версия ПО Абонемент: 1.134
- Версия Connecter: 1.64
- Версия iiko: 5.5

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

Команды для закрытия из iiko защищены ключом, необходимо иметь **проект 2** **модуль 12** в используемом ключе защиты. До момента доработки плагина от iiko - нужен **проект 1 модуль 2.**

**Необходимые файлы в папке с Connecter.exe.**

- SCRK6530.dll
- ShelterConnect.dll
- ShelterConnect.ini

Используются те же файлы, что и при интеграции с RKeeper 7, приложены к статье ([ShelterRK7.rar](https://docs.shelter.ru/attachments/10)) и есть с сборке FullVersion Абонемент.

**Настройки iiko.**

Выполняются специалистами, устанавливающими iiko ([https://ru.iiko.help/articles/#!special-iiko/ucsshelter](https://ru.iiko.help/articles/#!special-iiko/ucsshelter))

Плагин от iiko: [http://rapid.iiko.ru/plugins/Smart%20UCSShelter/V5/](http://rapid.iiko.ru/plugins/Smart%20UCSShelter/V5/)

**Настройки Connecter.**

1. Выполнить стандартные настройки Connecter.
2. Connecter Должен быть настроен на БД, в которую будет осуществляться закрытие.
3. В секции **\[Charset\]** необходимо установить параметр **UseUrlEncode=0.**

Настроить секцию **\[HotelInterface\]**

`[HotelInter face]`

`HotelInterFaceDllname=D:\connecter\SCRK6530.dll`

`enabled=1`

`FolioMask=0`

**Настройки ShelterConnect.**

`[Database]`

`<strong>dbname=%Путь до БД Абонемент/Shelter%</strong>`

`DBuser = UCS`

`DBpassword = oQKH8n0BFUE=`

`[ExternalClient]`

`  ClientID  = 1       <span style="background-color: #ffffff;">  - код shelterconnect'a, если используются несколько ShelterConnect.DLL</span>`

`  IdentPhysType = 200  <span style="background-color: #ffffff;"> - Тип устройства: 2-магнитные карты, 200-замок,ключ</span>`

`  ConvertOperationNeed = 1 <span style="background-color: #ffffff;"> -  0- не использовать секцию [TranslateOperation], 1- использовать секцию</span>`

`  ToOEM = 1`

`  NeverRestrictTransaction = 1 <span style="background-color: #ffffff;">  -   0- проверять баланс фолио перед совершением транзакции, 1- не проверять баланс перед совершением транзакции</span>`

`  FolioMask = $04  <span style="background-color: #ffffff;"> - Фиксированное значение. Устанавливается UCS. Не трогать!</span>`

`  ShowBalance = 1`

`  ShowBalanceFirst = 1 <span style="background-color: #ffffff;">  -   1 — при запросе разрешенной суммы оплаты добавлять к имени клиента текущий баланс, 0</span> <span style="background-color: #ffffff;">- не добавлять</span>`

`ShowPermissibleSumAsBalance = 1`

``

`[log]`

`  FileName   = ShelterConnect.log`

`  Level      =  40   `

`  DebugLevel =  40`

`[GarbageCollector]`

`  Enabled  = 0`

`  LifeTime = 120`

`[SCRK6]`

`  <strong>UseDetails = 0</strong>`

`  AlcoholicOperation =999;`

`  Messages =SCRK6.eng.msg`

`  UseScreenHeader0 =0`

`  UseScreenHeader1 =0`

`  UseScreenSequelCode =0`

`  ShowBalance = 1`

`  ShowBalanceFirst = 1`

`  ShowBalanceEverywhere = 1`

`  <strong>UseSuperDetails = 1</strong>`

`  RoomInfoMode = 3`

`[PARAMS]`

`  NoAutoDiscount = 1`

`  Section =0`

`  UseSection =1`

`[TranslateOperation]`

`<strong>; </strong><strong>ЧТО</strong><strong>_</strong><strong>ПРИХОДИТ</strong><strong>_</strong><strong>ИЗ</strong><strong>_iiko=</strong><strong>КОД</strong><strong>_</strong><strong>УСЛУГИ</strong><strong>_</strong><strong>В</strong><strong>_</strong><strong>АБОНЕМЕНТЕ</strong>`

`<strong>     </strong><strong>1=301</strong>`

`[TranslatePayment]`

`<strong>  1111 = 70996,НАЛ</strong>`

**Реализованный функционал:**

<table id="bkmrk-%D0%9A%D0%B5%D0%B9%D1%81-%D0%A0%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82-%D0%97%D0%B0%D0%BA%D1%80%D1%8B" style="width: 814px;" width="1000"><thead><tr><td class="align-center" style="width: 334px;">**Кейс**

</td><td class="align-center" style="width: 480px;">**Результат**

</td></tr></thead><tbody><tr><td style="width: 334px;">Закрытие по номеру ФОЛИО

</td><td style="width: 480px;">После ввода номера фолио в iiko отображается гость, администратор визуально идентифицирует его по фотографии и подтверждает. Заказ закрывается, на фолио гостя начисляется услуга. При просмотре внешнего чека можно увидеть подробную информацию о заказе.

</td></tr><tr><td style="width: 334px;">Закрытие на номер по номеру карты гостя

</td><td style="width: 480px;">После ввода номера карты гсотя/считывания карты гостя в iiko отображается гость, администратор визуально идентифицирует его по фотографии и подтверждает. Заказ закрывается, на фолио гостя начисляется услуга. При просмотре внешнего чека можно увидеть подробную информацию о заказе.

</td></tr><tr><td style="width: 334px;">Закрытие по номеру карты поселения

</td><td style="width: 480px;">После ввода номера карты поселения/считывания карты поселения в iiko отображается гость, администратор визуально идентифицирует его по фотографии и подтверждает. Заказ закрывается, на фолио гостя начисляется услуга. При просмотре внешнего чека можно увидеть подробную информацию о заказе.

</td></tr><tr><td style="width: 334px;">Закрытие по номеру комнаты

</td><td style="width: 480px;">После ввода номера комнаты в iiko отборажается проживающий в ней гость, администратор визуально идентифицирует его по фотографии и подтверждает. Заказ закрывается, на фолио поселения начисляется услуга. При просмотре внешнего чека можно увидеть подробную информацию о заказе.

</td></tr><tr><td style="width: 334px;">Закрытие на незаселенный номер

</td><td style="width: 480px;">После ввода номера в iiko отбражается соответствующая ошибка.

</td></tr><tr><td style="width: 334px;">Закрытие на номер комнаты с несколькими проживающими

</td><td style="width: 480px;">После ввода номера комнаты в iiko отборажаетсясписок проживающих в ней гостей. Если проживающие заселены местами и у каждого собственное фолио, то заказ будет закрыт на фолио поселения выбранного гостя, иначе - на общее фолио поселения.

</td></tr><tr><td style="width: 334px;">Закрытие с разными TRANSACTION\_ID

</td><td style="width: 480px;">В iiko есть возможность настроить передачу различных TRANSACTION\_ID для начисления разных услуг на фолио, например "Бар" и "Кухня". Как настроить необходимо уточнять у специалистов iiko.

</td></tr><tr><td style="width: 334px;">Отмена чека

</td><td style="width: 480px;">При отмене чека создается соответствующая корректирующая транзакция на целевом фолио.

</td></tr><tr><td style="width: 334px;">Закрытие на фолио с недостатком баланса

</td><td style="width: 480px;">При попытке закрыть заказ iiko сообщает об ошибке

</td></tr><tr><td style="width: 334px;">Закрытие со скидкой

</td><td style="width: 480px;">При закрытии чека со скидкой можно увидеть соответствующую информацию (полную стоимость, сумму и название примененной скидки) при просмотре внешнего чека.

</td></tr></tbody></table>

Недочеты, которые будут устранены в ближайшее время: при нехватке средств на фолио, ошибка не отображается в читабельном виде, вместо нее отображается "SCRK6/6.0.1: Ok".

**Просмотр внешнего чека (Shelter).**

Для просмотра внешнего чека используется rk6check.fr3 (включена в базовую поставку Shelter актуальных версий).  
Для корректного отображения содержимого чека iiko необходимо:  
1\. В ..\\Firebird\\udf\\ скопировать shrk6udf.dll и shrk6udf.ini (эти файлы можно найти в базовой поставке FullVersion актуальных версий)  
2\. В shrk6udf.ini настроить так:

`[heap]`

`oemtochar=1`

`[CheckXML]`

`decodeType=0`

3\. Перезапустить службы FireBird, выполнить закрытие на номер, проверить результат.