PDA

Просмотр полной версии : Поделитесь хедером с процедурами и функциями csclink.dll



ozyab
03.02.2014, 22:10
Говорят, что на закрытом форуме ucs есть такая инфа. Список экспорта из csclink.dll у меня есть, но какие параметры они принимают и что отдают - загадка. Хочется написать dll для farcards под систему лояльности и не отказываться при этом от нашей внутренней системы, логику работы с дисконтными картами написал, а вот с csclink.dll затык получился.

VampireKB
03.02.2014, 22:47
зачем городить огород (http://www.carbis.ru/forum/showthread.php?t=3857&goto=newpost) ?
Еще есть тут (http://www.ucs.ru/pricesall/prices-r-keeper/)

ozyab
03.02.2014, 22:59
зачем городить огород (http://www.carbis.ru/forum/showthread.php?t=3857&goto=newpost) ?
Еще есть тут (http://www.ucs.ru/pricesall/prices-r-keeper/)
Спасибо, я выиграл спор - сказал коллеге, что первый ответ будет от Вас с предложением приобрести ЦПДСС, он не поверил :)
Уверен, что у Вас то имеется то, что мне нужно, если не хотите делиться, то давайте меняться: я Вам деньги, Вы мне - инфу?

VampireKB
03.02.2014, 23:20
я Вам деньги, Вы мне - инфу?
не интересует.
Так вы будете пинать корыто год,а с инфой по фаркарду всего месяцев 8.(учитывая ваше незнание логики работы кипера)

Зато глюки интересные схватите :_) Клиентов довольными сделаете :-) (Любая ошибка программы - это плюс клиенту ,и минус Вам :) )

ozyab
03.02.2014, 23:30
не интересует.
Так вы будете пинать корыто год,а с инфой по фаркарду всего месяцев 8.(учитывая ваше незнание логики работы кипера)

Зато глюки интересные схватите :_) Клиентов довольными сделаете :-) (Любая ошибка программы - это плюс клиенту ,и минус Вам :) )


Сказал, как отрезал )))
да будет так, аминь

SH
03.02.2014, 23:48
Говорят, что на закрытом форуме ucs есть такая инфа.
Врут.
Лежит себе спокойно в дистрибутиве:

unit CscInt;

{
Модуль импорта из CscLink.DLL ver. 1.25

Если результат выполнения функций отрицательный,
то текст ошибки можно получить функцией GetErrorText: PChar;
}

interface

uses Windows;

{получить версию CscLink.dll}
Function Version: PChar; stdcall;

{получить версию протокола Cardserv-а (функция работает в любой версии)}
Function GetProtocol( var Protocol: Word ): BOOL; stdcall;

{текст произошедшей ошибки}
Function GetErrorText: PChar; stdcall;

{выполнить подключение к серверу}
Function Login( AUser, APsw: PChar ): BOOL; stdcall;

type
{информация о карте для применения на кассе}
TCardUseInfo = packed record
Size : Word; // Size of TCardUseInfo - заполнить перед вызовом
Account : Integer; // номер счёта
Holder : Array[0..40] of Char; // ФИО
Active : BOOL; // карта активна?
WithMngr : BOOL; // применять с подтверждением менеджера?
Expired : BOOL; // истёк срок действия?
Locked : BOOL; // карта заблокирована?
Seize : BOOL; // карту изъять?
WhyLocked : Array[0..255] of Char; // причина блокировки - asciiz
Unpay : Integer; // тип неплательщика
Discount : Word; // номер скидки
Bonus : Word; // номер бонуса
CanPay : Comp; // сколько можно снять сейчас денег с карты
DiscLimit : Comp; // предел суммы скидки
Sum1 : Comp; // остаток на счёте
Sum2 : Comp; // остаток на счёте 2 (для Farcards)
Sum3 : Comp; // остаток на счёте 3 (для Farcards)
Sum4 : Comp; // остаток на счёте 4 (для Farcards)
Sum5 : Comp; // остаток на счёте 5 (для Farcards)
end;

{получить информацию о карте для применения на кассе}
Function GetCardUseInfo( Card: Int64; RestCode, UnitNo: Integer; var Info: TCardUseInfo ): BOOL; stdcall;

{получить номер счёта по номеру карты}
Function GetAccountNumber( Card: Int64; var Account: Integer ): BOOL; stdcall;

{получить назначенное на счёт сообщение}
Function GetAccountMessage( Account: Integer; var Msg: PChar ): BOOL; stdcall;

{установить сообщение на счёт}
Function SetAccountMessage( Account: Integer; const Msg: PChar ): BOOL; stdcall;

type
{процедура обратного вызова для записи информации, полученной от сервера}
TFWrite = Procedure( Data: Pointer; Size: Integer ); stdcall;

{получить назначенное на счёт изображение}
Function GetAccountImage( Account: Integer; Proc: TFWrite ): BOOL; stdcall;

type
{информация о счёте}
TAccountInfo = packed record
Size : Word; // SizeOf( TAccountInfo )
Account : Integer; // номер счёта
Card : Int64; // номер карты
Holder : Array[0..40] of Char; //ФИО
Scheme : Byte; {тип счёта:
0 - ручное пополнение без ограничения оплат
1 - автоматическое пополнение без ограничения оплат
2 - автоматическое пополнение с лимитом оплат на один день
3 - автоматическое пополнение с лимитом оплат на неделю
4 - автоматическое пополнение с лимитом оплат на месяц
5 - ручное пополнение с лимитом оплат на один день
6 - ручное пополнение с лимитом оплат на неделю
7 - ручное пополнение с лимитом оплат на месяц
}
Offered : Integer; // дата выдачи (0 -> 30/12/1899)
{*} Expired : Integer; // срок действия
{*} Birthday : Integer; // день рождения
Deleted : BOOL; // счёт удален?
{*} Locked : BOOL; // карта заблокирована?
{*} Seize : BOOL; // карту изъять?
{*} WhyLocked : Array[0..255] of Char; // причина блокировки - asciiz
Discount : Word; // номер скидки
{*} Bonus : Word; // номер бонуса
PayLimit : Comp; // лимит оплат для счетов c лимитом
{*} Female : BOOL; // пол
Folder : Word; // идентификатор отдела
Unpay : Integer; // номер неплательщика
{*} Tel1 : Array[0..15] of Char; //телефон 1
{*} Tel2 : Array[0..15] of Char; //телефон 2
{*} Email : Array[0..255] of Char;
{*} Address : Array[0..255] of Char;
{*} DopInfo : Array[0..255] of Char; //произвольная информация - asciiz
Balance : Comp; // для карт с ручным пополнением - текущий остаток
end;

{получить информацию о счёте}
Function GetAccountInfo( Account: Integer; var Info: TAccountInfo ): BOOL; stdcall;

{Изменить параметры счёта. Изменяются параметры, помеченные знаком (*).
Перед вызовом сперва заполнить Info вызовом GetAccountInfo()}
Function SetAccountInfo( const Info: TAccountInfo ): BOOL; stdcall;

type
TTransactionInfo = packed record
Size : Word; // Size of TTransactionInfo - заполнить перед вызовом
Kind : Word; // 0-оплата 1-скидка 2-бонус 3-потраты гостя
Summa : Comp; // сумма в копейках
RestCode : Word; // код ресторана
LogDate : Integer; // дата чека (0 -> 30/12/1899)
UnitNum : Byte; // номер кассы
CheckNo : Integer; // номер чека
Comment : Array[0..255] of Char; //комментарий - для ручных транзакций
end;

{осуществить кассовую транзакцию. Summa > 0 - прямое действие, Summa < 0 - отмена}
Function CashTransaction( Account: Integer; const Info: TTransactionInfo ): BOOL; stdcall;

{взнос денег на счёт, если сумма отрицательная - изъятие денег}
Function HandTransaction( Account: Integer; Sum: Comp; Comment: PChar ): BOOL; stdcall;

type
{процедура обратного вызова для перечисления счетов}
TEnumAccounts = Procedure( const Info: TAccountInfo ); stdcall;

{возврат всех счетов}
Function GetAllAccounts( Proc: TEnumAccounts ): BOOL; stdcall;

type
{процедура обратного вызова для перечисления папок}
TEnumFolders = Procedure( Id, ParentId: Integer; Deleted: Boolean; Name: PChar ); stdcall;

{возврат всех папок}
Function GetAllFolders( Proc: TEnumFolders ): BOOL; stdcall;

type
{Процедура обратного вызова для перечисления найденных карт.
Cсылка Holder теряется после выхода из процедуры!}
TEnumFindAccounts = Procedure( Account: Integer; Card: Int64; Holder: PChar ); stdcall;

{поиск карт и владельцев по маске, результаты поиска возвращаются через процедуру Proc}
Function FindAccounts( Mask: PChar; Proc: TEnumFindAccounts ): BOOL; stdcall;

type
{процедура обратного вызова для перечисления транзакций}
TEnumTransactions = Procedure( Account: Integer; When: TDateTime; const Info: TTransactionInfo ); stdcall;

{перечислениe транзакций по счёту, результаты возвращаются через процедуру Proc}
Function GetAccountTransactions( Account: Integer; DateFirst, DateLast: TDateTime; Proc: TEnumTransactions ): BOOL; stdcall;

{перечисление всех транзакций, результаты возвращаются через процедуру Proc}
Function GetAllTransactions( DateFirst, DateLast: TDateTime; Proc: TEnumTransactions ): BOOL; stdcall;

type
{процедура обратного вызова для перечисления изменений скидки и бонуса карты
в соответствии с ее текущим раписанием}
TEnumDBVar = Procedure( Start: TDateTime; Disc, Bonus: Integer ); stdcall;

{перечисления изменений скидки и бонуса карты в соответствии с ее текущим раcписанием.
результаты поиска возвращаются через процедуру Proc}
Function GetHistL( Card: Int64; Start, Stop: TDateTime; Proc: TEnumDBVar ): BOOL; stdcall;

{отключение от сервера}
Procedure Done;

implementation

const
DllName = 'CscLink.DLL';

Function Version; external DllName;
Function GetProtocol; external DllName;
Function Login; external DllName;
Function GetErrorText; external DllName;
Function GetCardUseInfo; external DllName;
Function GetAccountNumber; external DllName;
Function GetAccountMessage; external DllName;
Function SetAccountMessage; external DllName;
Function GetAccountImage; external DllName;
Function GetAccountInfo; external DllName;
Function SetAccountInfo; external DllName;
Function CashTransaction; external DllName;
Function HandTransaction; external DllName;
Function GetAllFolders; external DllName;
Function FindAccounts; external DllName;
Function GetAllAccounts; external DllName;
Function GetHistL; external DllName;
Function GetAccountTransactions; external DllName;
Function GetAllTransactions; external DllName;
Procedure Done; external DllName;

end.

ozyab
04.02.2014, 00:04
Алексей, респектище!!!