Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Добрый день

Имеется софт UCS R-keeper.К нему подключаем CRM внешнюю систему лояльности. Соединение систем проходит через через ретранслятор Farcards, для которого пишется DLL.(Функции: начисление,списание, баланс). Dll-ку написали по инструкции.Баланс работает, а начисление, списание нет. Нужно отредактировать код до рабочего состояния.

DLL, эмулирующая работу сервера персональных карт для касс.DLL должна предоставить функции:

----------------------------------------------------------------------

function GetCardInfoL( Card: Int64; Restaurant, UnitNo: DWORD; Info: Pointer ): Integer; stdcall;

возвращает информацию о карте

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

Card - номер карты

Restaurant - код ресторана

UnitNo - номер кассы

Info - адрес структуры, которую функция должна заполнить

если карта существует

результат

0 - без ошибок, структура Info заполнена

1 - карта не существует

Структура, на которую указывает Info:

Word размер структуры = 644 байт (это поле заполнено при вызове)

Byte Карта существовала, но была удалена

0 - нет, и сейчас есть

1 - да, удалена

Byte Карту надо изъять

0 - нет

1 - да

Byte Истек срок действия

0 - нет

1 - да

Byte Сейчас карта не действует

0 - нет, действует

1 - да, не действует

Byte Нужно ли подтверждение менеджера

0 - не нужно

1 - нужно

Word номер скидки

Int64 сумма, доступная для оплаты счета, в копейках

40 байт Asciiz строка - имя владельца карты

Word номер бонуса

Byte Карта заблокирована

0 - нет

1 - да

256 байт Asciiz строка - причина блокировки карты - будет показана на кассе

Int64 предельная сумма скидки, в копейках

DWORD тип неплательщика

256 байт Asciiz строка - произвольная информация о карте

Int64 сумма на карточном счете N 2, в копейках

Int64 сумма на карточном счете N 3, в копейках

Int64 сумма на карточном счете N 4, в копейках

Int64 сумма на карточном счете N 5, в копейках

DWORD Номер счета - именно он будет передан в остальные функции

Int64 сумма на карточном счете N 6, в копейках

Int64 сумма на карточном счете N 7, в копейках

Int64 сумма на карточном счете N 8, в копейках

-----------------------------------------------------------------------

function TransactionL( Account: DWORD; Info: Pointer ): Integer; stdcall;

проводит транзакцию для карты

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

Account - номер счета

Info - адрес структуры, содержащей информацию о транзакции

результат

0 - без ошибок

1 - транзакция не проведена

Структура, на которую указывает Info:

Word размер структуры = 104 байт

Byte Тип транзакции

0 - платеж (снятие денег со счета)

1 - скидка

2 - бонус (начисление денег на счет)

3 - потраты гостя (сколько заплатил своих денег)

Int64 сумма, в копейках,

для типа 0 (платеж):

оплата снятием денег с карты - отрицательная сумма,

отмена оплаты - положительная сумма;

для типа 1 (скидка):

скидка клиенту - отрицательная сумма,

отмена скидки - положительная сумма;

для типа 2 (бонус):

клиенту начисляется бонус - положительная сумма,

отмена бонуса - отрицательная сумма;

для типа 3 (потраты):

клиент заплатил - положительная сумма,

отмена чека - отрицательная сумма;

Word код ресторана

DWORD кассовая дата ( 0 -> 30/12/1899 )

Byte номер кассы

Word резервное поле

далее информация о НДС по налогам A B C D

Int64 сумма с налогом A

Word размер налога A в процентах * 100 (1500 -> 15.00%)

Int64 сумма с налогом B

Word размер налога B в процентах * 100

Int64 сумма с налогом C

Word размер налога C в процентах * 100

Int64 сумма с налогом D

Word размер налога D в процентах * 100

Int64 сумма с налогом E

Word размер налога E в процентах * 100

Int64 сумма с налогом F

Word размер налога F в процентах * 100

Int64 сумма с налогом G

Word размер налога G в процентах * 100

Int64 сумма с налогом H

Word размер налога H в процентах * 100

DWORD номер чека

-----------------------------------------------------------------------

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

function GetCardImageL( Account: DWORD; Info: Pointer ): Integer; stdcall;

Возвращает файл с картинкой для карты, например фотографию владельца

или его подпись.

Тип изображения - BMP, JPEG, GIF.

Кол-во пикселов - до 64000, если больше - будет промасштабировано.

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

Account - номер счета

Info - адрес структуры, которую функция должна заполнить

результат

0 - без ошибок

1 - нет счета либо нет картинки

Структура, на которую указывает Info:

Word размер структуры = 258 байт

256 байт Asciiz строка - имя файла с картинкой

-----------------------------------------------------------------------

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

function GetCardMessageL( Account: DWORD; Info: Pointer ): Integer; stdcall;

Возвращает сообщение, которое будет показано на экране кассы.

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

Account - номер счета

Info - адрес структуры, которую функция должна заполнить

результат

0 - без ошибок

1 - счет не существует

Структура, на которую указывает Info:

Word размер структуры = 259 байт

256 байт Asciiz строка - сообщение

Byte ставить 0

-----------------------------------------------------------------------

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

function GetDiscLevelInfoL( Account: DWORD; Info: Pointer ): Integer; stdcall;

возвращает информацию о текущем дисконтном уровне карты

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

Account - номер счета

Info - адрес структуры, которую функция должна заполнить если карта существует

результат

0 - без ошибок, структура Info заполнена

1 - cчет не существует

Структура, на которую указывает Info:

Word размер структуры = 90 байт (это поле заполнено при вызове)

40 байт Asciiz строка - название текущего дисконтного уровня.

40 байт Asciiz строка - название cледующего дисконтного уровня.

Int64 сумма, необходимая для перехода на следующий уровень

-----------------------------------------------------------------------

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

function CheckInfoL( Account: DWORD; Info: Pointer; Size: DWORD ): Integer; stdcall;

Касса сообщает информацию о закрытом чеке. Формат - XML.

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

Account - номер счета

Info - буфер, в котором лежит информация о чеке

Size - длина информации

результат

0 - без ошибок

1 - cчет не существует

-----------------------------------------------------------------------

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

procedure FindCardsL( FindText: PAnsiChar; CBFind: Pointer; Back: Pointer ); stdcall;

Поиск счетов по подстроке.

Для каждого найденного счета DLL должна вызывать call-back функцию CBFind().

Первым параметром в ней DLL должна передать Back.

Card и Holder - информация из найденного счета.

Тип функции CBFind:

procedure CBFind( Back: Pointer; Account: DWORD; Card: Int64; Holder: PAnsiChar ); stdcall;

-----------------------------------------------------------------------

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

function GetCardMessage2L( Account: DWORD; Info: Pointer ): Integer; stdcall;

Возвращает сообщение, которое будет распечатано на кассе.

Параметры такие же, как у функции GetCardMessageL.

-----------------------------------------------------------------------

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

function TransactionPacketL( Count: Integer; List: Pointer ): Integer; stdcall;

проводит несколько транзакций за один раз.

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

Count - количество транзакций в списке

List - адрес списка транзакций, каждый элемент этого списка такой:

Account DWORD номер счета

Info Pointer такая же, как в функции TransactionL

результат

0 - все транзакции проведены

1 - ни одна транзакция не проведена

частичного выполнения быть не должно - либо все проходят, либо ни одна!

----------------------------------------------------------------------

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

procedure AnyInfo( InpBuf: Pointer; InpLen: Integer; var OutBuf: Pointer; var OutLen: Integer ); stdcall;

Обмен произвольной информацией

InpBuf - информация от кассы

InpLen - длина информации от кассы

OutBuf - ответная информация

OutLen - длина ответной информации

----------------------------------------------------------------------

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

function FindEmail( Email: PAnsiChar; Info: Pointer ): Integer; stdcall;

Поиск счета по e-mail.

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

Email - искомый e-mail

Info - адрес структуры, которую функция должна заполнить, если счет найден

результат

0 - без ошибок, структура Info заполнена

1 - cчет не существует

Структура, на которую указывает Info:

Word размер структуры = 54 байт (это поле заполнено при вызове)

DWORD Номер счета

Int64 Номер карты

40 байт Asciiz строка - имя владельца карты

----------------------------------------------------------------------

Дополнительно можно предоставить процедуры:

procedure Init; - вызовется после загрузки DLL

procedure Done; - вызовется перед выгрузкой DLL

=====================================================================

4 года назад
chingiz-xan
43 годаАзербайджан
4 года в сервисе
Был
4 года назад
  • Похожие заказы
  • Есть на субд Oracle 10XE таблица с товарами: артикулы, названия, цены, производители, текстовое описание, ещё целый ряд параметров. Необходимо написать скрипт или хранимую процедуру результатом работы которой будет формирование xml файла с данными о товарах. Файл ...

    Закрыт
    4 года назад
  • Работаем над инновационным стартапом в области обучения Есть достаточно большое существующее вэб-приложение. Написано предыдущей командой. Требуется доработка, дальнейшее развитие функционала, разработка API к мобильному приложению. Это постоянная работа в формате доработок в районе 30-50 час в неделю. Работа по бэклогу.  Интересует ...

    Прикладное ПОнет заявок
    Закрыт
    4 года назад
  • Задача заключается в создании чат-бота с использованием 2х сервисов. 1. Textback, он используется для рассылок в вотсапе и телеграмме ( это избавит от написание 2х ботов), у сервиса есть API и тех документация (все размещено ...

    Закрыт
    4 года назад
  • Добрый день Интересует разработка программы для учета деятельности агента в сфере кинобизнеса + упрощенная программа по продаже кинобилетов в кинотеатре (плюс модули отправки отчетов в ЕАИС и Rentrak - требования к этим модулям и скрипты есть) Бюджет ...

    Закрыт
    4 года назад
  • $300

    Доработка плагина Spine 2D для среды Construct 2 (плагин js) Необходимо доработать существующий  плагин использую предоставленное API  Исходные данные: 1) Modification of the plugin  https://github.com/flyover/spine-c2-plugin 2) EsotericSoftware  spine-runtimes library  – API для подключения https://github.com/EsotericSoftware/spine-runtimes/tree/3.8/spine-ts 3) Construct 2 Javascript SDK documentation  https://www.scirra.com/manual/15/sdk Перед отправкой отклика ...

    Закрыт
    4 года назад
  • Необходимо для Китайских станций по аренде павербанков для телефонов прописать программное обеспечение для Украины. В данном ПО снимается плата автоматически с привязанной карточки каждого пользователя от данных что он ввёл и времени пользования и такое ...

    Закрыт
    4 года назад
  • $60

    Срочно требуется бот в Telegram. Нужен под розыгрыши. С возможностью заранее выбирать победителя/лей. С понятным алгоритмом настройки сопутствующих параметров: оформление,скрипты и т.д.

    Закрыт
    4 года назад