Есть на субд Oracle 10XE таблица с товарами: артикулы, названия, цены, производители, текстовое описание, ещё целый ряд параметров. Необходимо написать скрипт или хранимую процедуру результатом работы которой будет формирование xml файла с данными о товарах. ...
Rkeeper DLL библиотека для Farcards
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
Добрый день
Имеется софт 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
=====================================================================
Заявки фрилансеров
Похожие заказы
- Прикладное ПО6 заявокЗакрыт5 лет назад
Работаем над инновационным стартапом в области обучения Есть достаточно большое существующее вэб-приложение. Написано предыдущей командой. Требуется доработка, дальнейшее развитие функционала, разработка API к мобильному приложению. Это постоянная работа в формате доработок ...
Прикладное ПОнет заявокЗакрыт5 лет назадЗадача заключается в создании чат-бота с использованием 2х сервисов. 1. Textback, он используется для рассылок в вотсапе и телеграмме ( это избавит от написание 2х ботов), у сервиса есть API и тех документация (все размещено ...
Прикладное ПО5 заявокЗакрыт5 лет назадДобрый день Интересует разработка программы для учета деятельности агента в сфере кинобизнеса + упрощенная программа по продаже кинобилетов в кинотеатре (плюс модули отправки отчетов в ЕАИС и Rentrak - требования к этим ...
Прикладное ПО3 заявкиЗакрыт5 лет назадЗдравствуйте. Нужна программа для улавливания заказов в приложении работодателя
Прикладное ПО5 заявокЗакрыт5 лет назад- $300
Доработка плагина Spine 2D для среды Construct 2 (плагин js) Необходимо доработать существующий плагин использую предоставленное API Исходные данные: 1) Modification of the plugin https://github.com/flyover/spine-c2-plugin 2) EsotericSoftware spine-runtimes library – ...
Прикладное ПО1 заявкаЗакрыт5 лет назад - $300
разработка сравнительного анализа электронных подписей, а именно Falcon, qTesla, Crystals-Dilithium
Прикладное ПО1 заявкаЗакрыт5 лет назад Необходимо для Китайских станций по аренде павербанков для телефонов прописать программное обеспечение для Украины. В данном ПО снимается плата автоматически с привязанной карточки каждого пользователя от данных что он ввёл и времени пользования и такое ...
Прикладное ПО2 заявкиЗакрыт5 лет назад- $60
Срочно требуется бот в Telegram. Нужен под розыгрыши. С возможностью заранее выбирать победителя/лей. С понятным алгоритмом настройки сопутствующих параметров: оформление,скрипты и т.д.
Прикладное ПО8 заявокЗакрыт5 лет назад нужна консультация по rtp пакетам на С++
Прикладное ПО1 заявкаЗакрыт5 лет назад