Интерфейс связи R-Keeper v6 и внешних гостиничных систем

Общая иформация

Текущая версия интерфейса - 5

Принцип работы

Кассовая часть программы R-Keeper обращается к авторизационному гостиничному серверу (программа HOTELSRV.EXE) с соответствующими запросами. Сервер обращается к интерфейсной библиотеке (DLL), вызывая оговоренные функции. Сервер является консольным приложением (WIN32), предназначен для работы по управлением NT и может запускаться как сервис Связь между кассами и сервером возможен как по протоколу NETBEUI, так и через TCP\IP (NetBIOS поверх TCP/IP - подробности в статье http://support.ucs.ru/ru/node/5220).

Описание функций интерфейсной библиотеки

Интерфейсная библиотека создается для каждой гостиничной системы и должна экпортировать следующие функции (по именам, примеры описаний приведены для Delphi)

GetInterfaceVersion

Function GetInterfaceVersion:Byte;stdcall;export;

Функция возвращает номер версии - на текущий момент должна вернуть значение 5.

GetRoomInfo

function GetRoomInfo(Room:LongInt;List:pchar;ErrTxt:Pchar):Byte;stdcall;export;

Данная функция вызывается только при ручном вводе номера комнаты

Входные параметры:

  • Room - номер комнаты
  • List - список проживающих (255 байт) в виде #1 ФИО гостя #2 номер ID ...

Например, в комнате проживают Ivanov,Petrov,Sidorov. Иногда комнату используют для доступа к большой группе безнальных клиентов. В этом случае можно разбить список по дереву и . 

Например
chr(1)+'Ivanov'+chr(2)+104567+chr(1)+'Petrov'+chr(2)+'345678'+chr(1)+'Sidorov'+chr(2)+'982123'+chr(0)

Уникальный ID Petrova - 345678;

  • ErrTxt -  текст ошибка (100 байт), будет показана кассиру

Примечание: Для перевода строки используется символ "\"

Результат функции:

  • 0 - OK
  • иначе - текст ошибки

GetMaxSum

Function GetMaxSum(Id,AtransactionID:Longint; var aPrice:Double; Name,Room,ErrTxt:Pchar):Byte;stdcall;export;

Данная функция предназначена для проверки остатка по ID 

Входные параметры:

  • ID - идентификатор

Как правило, ID - это номер счета. При этом следует иметь ввиду, что гости должны иметь автоматический идентификатор (например, магнитная карта для замковой системы) и касса должна умеет считывать данный идентификатор. В противном случае ID получается посредством вызова функции GetRoomInfo, при этом гость может сам назвать номер комнаты и кассир проверяет ФИО.

  • AtransactionID - код транзакции (например, услуги бара 14-го этажа), может быть настроен для группы касс

Входные параметры по ссылке (заполнямые):

  • aPrice - разрешенная сумма
  • Name - имя гостя (отведено 180 байт)
  • Room - номер комнаты (отведено 10 байт)
  • ErrTxt - текст ошибки (100 байт) - будет показана кассиру, использовать только латиницу!

Примечание: Для перевода строки используется символ "\"

Результат функции:

  • 0 - OK
  • иначе - текст ошибки

Transaction

Function Transaction(Id,aTransactionID,CheckNum, WaiterNum,KassirNum,Guests,UnitNum:LongInt; aPrice:Double; ErrTxt:Pchar):Byte; stdcall;export;

Данная функция выполняет начисление денег на счет (комнату)

Входные параметры:

  • ID - параметр уточняется (предположительно - код валюты R-Keeper). ID для наличной оплаты = -1
  • aTransactionID - параметр уточняется
  • СheckNum - номер чека
  • WaiterNum - код официната
  • KassirNum - код кассира
  • Guests - количество гостей
  • UnitNum- номер станции
  • aPrice - сумма чека
  • ErrTxt - текст ошибки (как выше)

Результат функции:

  • 0 - OK
  • иначе - текст ошибки

CheckDetailInfo

function CheckDetailInfo(CheckNum:Longint;Info:pchar;terr:Pchar):Byte;stdcall;

Фунция для передачи детализации содержимого чека

Входные параметры:

  • СheckТum - номер чека
  • Info содержит тект вида food=100.00,alcohol=20.00

Результат функции:

  • 0 - OK
  • иначе - текст ошибки

CheckSuperDetailInfo

 

function CheckSuperDetailInfo(Id,CheckNum:Longint;Info:pchar):byte;stdcall;

Необязательная функция - описание уточняется

DelTrans

Function DelTrans(Id,aTransactionID,UnitNum:LongInt; aPrice:Double;СheckNum:LongInt;Errtxt:Pchar):Byte; stdcall;export;

Вызывается для удаления ошибочного чека

Входные параметры:

Аналогично функции Transaction

Выходные параметры:

Аналогично функции Transaction

RestoreTrans

Function RestoreTrans (ID,aTransactionID,UnitNum:LongInt;aPrice:Double;СheckNum:LongInt;errtxt:Pchar):Byte; stdcall;export;

Вызывается для отмены удаления чека

Входные параметры:

Аналогично функции Transaction

Выходные параметры:

Аналогично функции Transaction

DirectPay 

function DirectPay (PayCount:LongInt;Payment:TPayArray, WaiterNum, KassirNum,Guests,UnitNum:Longint; Acheck:Longint;TransactionID:LongInt;ErrTxt:Pchar):Byte;Stdcall;export;

Необязательная функция. В некоторых гостиничных системах транзакции по наличным оплатам и кредитным картам собираются на псевдо-счетах. Эта функция вызывается для таких транзакций. Принцип работы функции схож с функцией Transaction

Входные параметры:

  • PayCount - параметр уточняется
  • Payment - параметр уточняется

Payment представляет массив из записей, структура которых приведена ниже:

PayRecord = packed record
 Curency: LongInt;
 aPriceBase,aPriceOrigin: Double;
 CredCard: Pchar;
end;

TPayArray = array [1..100] of TPayRecord;

где

  • Curency - параметр уточняется (предположительно  - код валюты R-Keeper)
  • aPriceBase - cумма в базовой валюте
  • aPriceOrigin - сумма в валюте платежа
  • CredCard - код кредитной карты (заполнено только для кредиток)
  • WaiterNum - код официната
  • KassirNum - код кассира
  • Guests - количество гостей
  • UnitNum- номер станции
  • Acheck - параметр уточняется
  • TransactionID - параметр уточняется
  • ErrTxt - текст ошибки (как выше)

Выходные параметры:

Аналогично функции Transaction

Отличия от других операций:

При возврате ошибки операция на кассе не блокируется, a завершается. Текст ошибки показывается кассиру лишь как предупреждение.