# Интеграция Абонемент и RK7 через Farcards

Интеграция RK7 с Абонементом представляет собой следующую структурную схему (рис.1)

<div drawio-diagram="842"><img src="https://docs.shelter.ru/uploads/images/drawio/2021-11/drawing-12-1636645139.png" alt=""/></div>

Рисунок 1

**RKeeper** при оплате на специальную валюту, например, "Закрытие на фолио Абонемента" в категории "платежные карты" обращается к **FarCards**, который вызывает подключенную к нему **sdmHTTPFarCard.dll**. Последняя dll обращается к ключу защиты и <span style="text-decoration: underline;">**если лицензия найдена (проект 2 модуль 11)**</span>, отправляется XML запрос на TCP/IP сервер - программу **HTTPRKtoSH**. Этот сервер обращается к базе данных через библиотеку **ShelterConnect.dll**

Интеграция проверялась на версии Абонемента 145+ с версией RK7 **7.6.5.475.**

- Версия FarCards 6.04
- Версия HttpToSH 1.5.0.1
- ShelterConnect 1.9.0.3
- sdmHTTPFarCard.dll 1.17.0.5

<p class="callout info">**Новая схема работы связки с продажами в кредит. Rkeeper v7.25.04.001 + Абонемент v148 по ссылке:**</p>

**[https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/rkeeper-prodaza-v-kredit-oplata-kredita-v-abonemente](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/rkeeper-prodaza-v-kredit-oplata-kredita-v-abonemente)**

#### Подготовка утилит

##### 1. FarCards 

FarCards устанавливается на любом компьютере в одной сети с кассой и кассовым сервером. Если модуль лицензии прописан в одном ключе с Абонементом, то FarCards обязательно устанавливается на машину, где установлен этот ключ, как правило это сервер, в противном случае необходимо в настройках будет указать ip/port в секции \[LOCK.SERVER\] машины, где установлен сервер блокировок.

Настройка FARCARDS.INI

```
[FarServer]
Type = 1
 DLL = sdmHTTPFarCard.dll
Gate = 1
log = 30
XMLCP=1251

[LinkDLL]
1 = pds_netk
 
[pds_netk]
NetServerName=rk_first
ininame=netk.ini
DebugMessages=1

```

NetServerName - серверное имя. Оно понадобиться в настройках PDS интерфейса RK7.

##### 2. sdmHTTPFarCard.dll

<div id="bkmrk-farcards-%D0%BE%D0%B1%D1%80%D0%B0%D1%89%D0%B0%D0%B5%D1%82%D1%81%D1%8F-">**FarCards** обращается к **sdmHTTPFarCard.dll**, которая <span style="text-decoration: underline;">**должна находиться в папке с FarCards**</span>. **sdmHTTPFarCard.dll** **защищена ключом защиты Shelter/Абонемент**. </div><div id="bkmrk-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8-%D0%BE%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%BB%D1%8F">Настройки осуществляются в файле **HTTPFarCard.ini**. Ниже приведен его пример.</div><div id="bkmrk--0"></div>```
[PARAMS]
  ClientCode = HOTEL
  UserCode = UCS
  UserPwd = 12345
  LangCode = RU

[SERVER]
  Port =2277
  Host =127.0.0.1

[LOCK.SERVER]
  TCPHost = 81.94.140.196
  TCPPort = 1116
  Project = 2
  Module = 11   

[LOG]
  FileName=HTTPFarCards_AB.log
  Level = 100
  DebugLevel = 100

```

<div id="bkmrk-%D0%92-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%D1%85-">В данных настройках sdmHTTPFarCard.dll обращается к TCP/IP серверу, который запущен локально на машине и слушает 2277 порт.</div><div id="bkmrk-%D0%92-%D1%81%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-%5Bparams%5D-%D0%B7%D0%B0">В секции **\[PARAMS\]** задаются параметры, которыми обворачивается XML запрос. В Настройках TCP/IP сервера, могут использоваться аналогичные параметры, например для определения «свой/чужой».</div><div id="bkmrk-%D0%92-%D1%81%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-%5Block.serve">В секции **\[LOCK.SERVER**] указывается ip/port машины, где установлен сервер блокировок Shelter/Абонемент. </div><div id="bkmrk-%D0%92-%D1%84%D0%B0%D0%B9%D0%BB%D0%B5-httpfarcards">В файле HTTPFarCards_AB.log ведется логирование XML команд.</div><div id="bkmrk-sdmhttpfarcard.dll-%D0%BF">SdmHTTPFarCard.dll передает данные на TCP/IP сервер/ Для интеграции с Абонементом используется HTTPRKtoSH.exe</div><div id="bkmrk--1"></div>##### 3. HTTPRKtoSH.exe

<div id="bkmrk-httprktosh.exe-%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5"><div>HTTPRKtoSH.exe является сервером, который слушает TCP/IP и обрабатывает XML запрос от sdmHTTPFarCard.dll. HTTPRKtoSH.exe по умолчанию всегда вызывает функции ShelterConnect.dll, которая должна находить в одной директории с ним. Основные настройки осуществляются в файле HTTPRKtoSH.ini</div></div><div id="bkmrk-%5Bserver%5D">[SERVER]</div><div id="bkmrk--2"></div>```
[SERVER]
  Port = 2277
  RKInterfaceID=7
  AllCheckToHotel = 1                                      
  IdentPhysType = 2
  Autostart = 1
  Autohide =1

[LOG]
  FileName =  C:\UCS\AbRK7_Example\HTTPtoAB\LOG\HTTPRKtoSH.log
  Level = 30
  DebugLevel =30
  ByMonthes = 1
  ByDays = 1
  ByHours = 1

[MAIN]
messages=errors.msg

```

Секция \[SERVER\]

Port - порт, на который будут прилетать данные из sdmHTTPFarCard

RKInterfaceID - Код интерфейса в RK7

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

##### 4. ShelterConnect.dll

ShelterConnect.ini настроечный файл ShelterConnect.dll, который управляет тем, в каком формате данные будут переданы во внешнюю систему.

```
[Database]
  DBname    = 81.94.140.196/3080:D:\Base\Garbage\n.kamyshnikova\Vpark2\FITNESS145.FDB
  DBUser     = ucs
  DBPassword = oQKH8n0BFUE=

[ExternalClient]
  ClientID      = 1
  IdentPhysType = 2
  ConvertOperationNeed = 1
  ToOEM = 0
  NeverRestrictTransaction = 1
  FolioMask = 1
  ShowBalance = 0
  ShowBalanceFirst = 0
  RoomInfoMode =4
  TransSection =0
  ConvertOperationType=0  

[log]
  FileName   = ShelterConnect.log
  Level      =  100
  DebugLevel =  100

[GarbageCollector]
  Enabled  = 0
  LifeTime = 120

[SCRK6]
  AlcoholicOperation =999
  Messages =sc.msg
  UseScreenHeader0 =1
  UseScreenHeader1 =1
  UseScreenSequelCode =1
  ShowBalance = 1
  ShowBalanceFirst = 1
  ShowBalanceEverywhere = 1
  UseDetails = 1
  UseSuperDetails = 1
 
[TranslateOperation]
     1 = 888
     3 = 888

[TranslatePayment]
  1 = 1005,910
  1000632 = 1005,901
  8 = 1005,901
  3 = 1005,901
    
;[Abonement]
;AbonementIdentCheckResource =ID_RESOURCE

[params]
 Balance_ExtraParamStr = &USE_ABON_FREEBALANCE=1
  
```

Секция \[DataBase\] - параметры подключения к БД Абонемент

\[ExternalClient\]  
ClientID = 1  
IdentPhysType = 2 - тип физической карты в Абонементе   
ConvertOperationNeed = 1 - использовать секцию \[TranslateOperation\]  
ToOEM = 0 - настройка кодировки   
NeverRestrictTransaction = 1 - ( разрешить закрывать на фолио выше кредитного лимита клиента) (баланс в RK будет отображаться, как 99999999999)   
FolioMask = 1 - разрешить поиск по фолио ( в рк при оплате на фолио вместо карты можем ввести F#### ( #### - номер фолио))   
ShowBalance = 0 - отобразить баланс гостя   
ShowBalanceFirst = 0 - отобразить баланс гостя в начале   
RoomInfoMode =4 -   
TransSection =0

ConvertOperationType = 0 -сопоставление кода группы станций с кодом услуги в Абонементе  
=1 -сопоставление кода категории заказа с кодом услуги в Абонементе. (закрывать разные категории заказа на разные услуги, для случаев разных юр.лиц)

Секция \[SCRK6\] не работает при данной схеме связки. Некоторые аналогичные параметры можно использовать в \[ExternalClient\]

\[TranslateOperation\]  
;Таблица соответствия Кода кассовой станции r\_k и создаваемой в Абонемент услуги.

Код можно посмотреть в RK7

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

Код услуги в Абонементе.

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

#### Настройки на стороне RK7 

Все настройки производятся в станции менеджера.

##### 1. Настройка кассовой станции и устройства (Сервис - Станции и устройства) 

Добавляем в устройства PDS интерфейс.

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

<div id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-pds-server-">Параметр **PDS Server Name = rk\_first** – имя сервера FarCard, через который будет обеспечиваться связь с системой Абонемент.</div><div id="bkmrk-%D0%92%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D0%B5%21%C2%A0-lookupcar">Внимание! **LookupCardByMailAddr = YES**</div><div id="bkmrk-mail-addr-type-kind-">**Mail Addr Type Kind = 2**</div><div id="bkmrk-pass-all-receipts-xm">**Pass All Receipts XML = By script**</div><div id="bkmrk-%D0%95%D1%81%D0%BB%D0%B8-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-pass-a">Если параметр **Pass All Receipts XML data** установить **Yes, if possible** то при закрытии на любую валюту этот заказ будет передаваться в Абонемент. Для этого должны быть сделаны соответствующие настройки в ShelterConnect.ini и в настройках программы. Не рекомендуемая схема работы.</div><div id="bkmrk-%D0%95%D1%81%D0%BB%D0%B8%C2%A0pds-interface%231">Если PDS interface#1 уже есть, то рекомендуется его удалить и добавить новый.</div><div id="bkmrk--7"></div>##### 2. Настройка интерфейса (Сервис - Интерфейсы) 

<div id="bkmrk--8"></div>Добавить новый интерфейс. Назовем его RKtoAbonement. См рис. 3 В данном интерфейсе указываем , ранее заведенный PDS interface#1. Код интерфейса нужно запомнить и прописать в файле HTTPRKtoSH.ini. См. настройки HTTPRKtoSH.exe.

Для передачи ППР позиций меню в Абонемент (**с версии 136**) и последующей печати их в чеке, необходимо в параметр интерфейса **xml dish attributes** установить как: **2560.ItemKind <span style="text-decoration: underline;">(Начиная с версии 7.6.5 необходимо поставить *2560.ItemKind.ItemIdent*, иначе при передаче вместо значения ППР будет передаваться его GUID)!!!!</span>**

`<strong>xml dish attributes = 2560.ItemKind.ItemIdent</strong>`

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

**Общая информация по полю XML dish attributes**

> Для того, чтобы определить из какого справочника запрашивается информация:  
> для этого:  
> 1\. Из строки вида 2560.ItemKind выделяем первое число - 2560  
> 2\. Нацело делим число на 256:  
> 3\. 2560 mod 256 = 10 - это идентификатор справочника, в данном случае - это **MenuItems**. **(Идентификатор справочников можно посмотреть в таблице REFTABLES)**  
> В полученном справочнике ищем поле **ItemKind**. Если поле не является ссылочным, то править ничего не нужно, должны выводиться данные из указанного поля.  
> Если поле ссылочное (можно определить по таблице REFLINKS по комбинации *код таблицы+ название поля* - если такая комбинация есть в таблице REFLINKS, то поле ссылочное, иначе - нет), то через точку можно получить значения полей из таблицы, на которую ссылается поле.  
> В рассмотренном примере поле ItemKind ссылается на таблицу с кодом 41 - это ENUMSTYPESDATAS.  
> Поля, которые можно получить из этой таблицы можно посмотреть xml запросом:
> 
> <div><div><div><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td>&lt;?**xml** version="1.0" encoding="UTF-8"?&gt;</td></tr><tr><td>&lt;**RK7Query**&gt;</td></tr><tr><td>&lt;**RK7CMD** CMD="GetRefData" RefName="ENUMSTYPESDATAS" /&gt;</td></tr><tr><td>&lt;/**RK7Query**&gt;</td></tr></tbody></table>
> 
> </div></div></div>Если не задано выводимое поле, то выводится guidString (начиная с версии 7.6.5). Если нужно выводить какое-то другое поле, то его нужно указать через точку.  
> Например:  
> 2560.ItemKind.ItemIdent

<div id="bkmrk-%D0%94%D0%BE%D0%BF.-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8%D0%B7-h">**Доп. информация из** [https://docs.rkeeper.ru/pds/ru/tehnicheskaya-dokumentatsiya/podgotovka-xml-dlya-peredachi-v-getcardinfo-ili-transaction](https://docs.rkeeper.ru/pds/ru/tehnicheskaya-dokumentatsiya/podgotovka-xml-dlya-peredachi-v-getcardinfo-ili-transaction)</div><div id="bkmrk--10"></div>```XML
Подготовка XML для передачи в GetCardInfo или Transaction
Xml состоит из нескольких частей, формирующихся в разных модулях. Итоговый xml собирается конкатенацией строк отдельных тэгов в модуле MIDSERV\intfcash.pas->GetXMLText

CHECKDATALink to CHECKDATA
Тэг CHECKDATA со всем содержимым формируется в модуле MIDSERV\ReceiptXML.pas. В CHECKDATA попадают не удаленные строки с блюдами, оплатами/предоплатами и скидками заказа.
Информация делится на данные о блюдах (тэг CHECKLINES), кастомных свойствах заказа (тэг ORDER - в текущий момент закоментирован) и данных по актуальному чеку (все остальные тэги).
Блок может быть пустым: например при проверке баланса карты.

EXTINFO - INTERFACESLink to EXTINFO - INTERFACES
Тэг INTERFACES формируется в модуле MIDSERV\intfcash.pas. В этом тэге указывается карта, добавление которой вызвало операцию, и все карты, добавленные с использованием текущего интерфейса в заказ. При добавлении карты в заказ она не выводится в блоке всех карт, т.к. выполняется только проверка на ее добавление.

Настройки, влияющие на формирование xmlLink to Настройки, влияющие на формирование xml
Xml dish attributes
Формат заполнения:
[Код справочника].[Имя поля]
[Код справочника].[Название поля - ссылки на справочник].[Имя поля]
Можно указать сразу несколько значений, разделенных переносом каретки
где Код справочника - код справочника в Class Infos
Код справочника = RefNo*256+Num. Если Num не указан, то он считается нулевым
Например:
<Rec RefNo="10" Group="3" GUIDString="{E4D77859-5120-486E-A10D-EAB2650584BD}" ciNameOfClass="TRK7MenuItem" ciUserName="Menu Item" ciUserPlName="Menu Items" ciOptions="3" ciNamesUnique="1" ciParentPowCode="1">
10 * 256 + 0 = 2560 - TRK7MenuItem

При заполнении этого параметра в тэге CHECKDATA добавляется дочерний тэг ATTRS. В нем выводится:

type_id - гуид справочника (из ClassInfos)
type_name - Название справочника (из ClassInfos)
key_id - guid промежуточного справочника (из ClassInfos)
key_name - Название промежуточного справочника (из ClassInfos)
value - значение поля

Output mode of non-fiscal payment in xml
Этот параметр отвечает за формат вывода оплат валютами, которые должны печататься как скидки.
Если выбрано значение Write as discount, то такие оплаты будут выводиться, как скидки
Если выбрано значение Write as payment, то такие оплаты будут выводиться, как оплаты не смотря на настройки самой валюты
```

##### 3. Настройка обработки сигналов. (Сервис - Обработка сигналов и устройств - MCR алгоритм 

<div id="bkmrk--11"></div>[![image-1637147020912.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637147020912.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637147020912.png)

Указываем тип «Интерфейс». Объект Интерфейс RKtoAbonement, заведенный в пункте 2.

Если указать тип «Валюта», то будет ошибка 232: "Не получается напечатать чек: Персональное ограничение для "" = 0.00."

Можно завести несколько интерфейсов для разных типов идентификаторов. Сделаем два интерфейса, один карт E-Marine и другой для Mifare. Они будут отличаться только названием и содержимым скрипта.

Пример скрипта под E-marine

```PASCAL
function MCR1000636(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
var RestCode: integer;
    i, j, t1, t2, S, res1: Integer;
    hex, resulttext: string;
begin
  Result := false;
  if pos('Em-Marine',Parameter)>0 then
  begin
    i := pos(']',Parameter);
    j := pos(',',Parameter);
    resulttext:=copy(Parameter,i+2,3);
    resulttext:=resulttext+copy(Parameter,j+1,5);
      Result := true;
      Parameter:=resulttext;
    end;
end;
```

Пример скрипта под Mifare

```PASCAL
function MCR1000637(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
var RestCode: integer;
    i, j, S: integer;
    res1, t1, t2: int64;
    hex, resulttext: string;
begin
  Result := false;
  if pos('Mifare[',Parameter)>0 then
  begin
    i := pos('[',Parameter);
    j := pos(']',Parameter);
    Parameter := copy(Parameter,i+1, j-i-1);
    if length(Parameter) > 0 then begin
      Result := true;
      res1:=strtoint64('$'+Parameter);
      Parameter:= Int64ToStr(Res1 and $FFFFFFFF );        
    end;
  end;    
end;
```

##### 4. Настройка валюты (Деньги - валюты)

<span style="text-decoration: underline;">Заводим валюту в платежных картах. В названии НЕ используем кавычки "".</span>

Так же можно установить наценку для чаевых и чаевые будут передаваться в Абонемент и отдельно там фиксироваться - **НЕ ТЕСТИРОВАЛОСЬ.**

<div id="bkmrk-%D0%92%D0%B0%D0%B6%D0%BD%D0%BE-%D0%BF%D1%80%D0%B8-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D0%B2">**Важно** при создании валюты **обратить внимание на заполнение полей:**</div><div id="bkmrk---%D0%91%D0%B5%D0%B7-%D1%81%D0%B4%D0%B0%D1%87%D0%B8-%E2%80%93-%D1%84%D0%BB%D0%B0%D0%B3-%D1%83">**- Без сдачи – флаг установлен**</div><div id="bkmrk---%D0%94%D0%BE%D0%BF-%D0%B8%D0%BD%D1%84%D0%BE-%D1%81-%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82">**- Доп инфо с клавиатуры – флаг установлен**</div><div id="bkmrk--%D0%90%D0%B2%D1%82%D0%BE%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%E2%80%93-%D0%92%D1%81">**-Автозаполнение – Вся сумма + подтверждение.**</div><div id="bkmrk-%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%B4%D0%BE%D0%BF-%D0%B8%D0%BD%D1%84%D0%BE---%D1%81%D0%B8">**Формат доп инфо - символ F и решетки.(F#########)**. (Указывается, если необходимо закрывать только на фолио) Символ F является ключевым, для определения типа идентификатора FOLIO.</div><div id="bkmrk---%D0%9D%D0%B5-%D1%83%D1%87%D0%B8%D1%82%D1%8B%D0%B2%D0%B0%D1%82%D1%8C-%D0%B2-%D0%BF%D0%BE%D1%82">**- Не учитывать в потратах ПДС – флаг должен быть снят**.</div><div id="bkmrk--13"></div>[![image-1637147394821.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637147394821.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637147394821.png)

##### 5. Отображение кнопки оплата картой

Также для отображение кнопки оплаты в интерфейсе кассы необходимо будет настроить параметр оплата платежной картой, который находится в настройках менеджера. (Настройки - параметры - параметры работы станции - редактирование заказа - расчет/оплата заказа - оплата платежной картой, в свойствах поле "значение" установить "спрашивать" )

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

Настройки параметра отображения выглядит так:

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

#### Проверка настройки оплаты

Открываем кассовую станцию, создаем заказ и начисляем блюдо.

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

Нажимаем на оплатить.

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

Выбираем платежные карты

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

Нажимаем на созданную валюту, в нашем случае Abonement

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

Вводим идентификатор или номер фолио (рис А. идентификатор, рис. Б фолио)

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

Рисунок А.

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

Рисунок Б.

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

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

В нашем случае клиент с фолио номер 1598 это IIKO Maylo Maskovich. В зависимости от настройки утилит можно увидеть его реальный баланс. В нашем случае стоит параметр в утилитах на безлимит. Нажимаем на "оплата картой".

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

Подтверждаем наше действие. После успешной оплаты мы возвращаемся на стартовый экран. Либо мы должны увидеть ошибку в области обозначенной желтым цветом.

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

Проверить начисление мы можем, зайдя на фолио клиента в Абонементе.

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

На фолио должна появится услуга с указанным кодом в ShelterConnect.ini, которая заранее заведена в Абонементе.