В одной из ближайших версий в связи со скорым внедрением межбанковских
валютных расчетов будет изменена структура текстового файла для приема
в комплекс 'Клиент-Банк'(PLAT.TXT). Новая структура тексового файла
будет такая.
[35 ] Счет клиента(с учетом доступа к счетам на рабочем месте) [ 3 ] Числовой идентификатор валюты счета клиента(например 980) [15 ] МФО(BIC) банка корреспондента(например 300012) [149] Наименование банка корреспондента(если есть МФО можно пробелы) [35 ] Счет корреспондента [ 3 ] Числовой идентификатор валюты счета корреспондента(например 980) [15 ] Код ОКПО корреспондента(из-за России) [149] Наименование корреспондента(например ДЕМО КЛИЕНТ) [ 3 ] Числовой идентификатор страны корреспондента(например 804) [ 1 ] Д/К(1-списание со счета клиента,0-зачисление на счет клиента) [ 3 ] Вид обработки (1-ПЛАТЕЖНОЕ ПОРУЧЕНИЕ,2-ТРЕБОВАНИЕ ПОРУЧЕНИЕ) [14 ] Сумма документа(больше 0) [10 ] Номер документа(не пустой) [ 4 ] процент НДС в сотых 2000=20.00 [ 1 ] проставлять НДС в документе(0-нет,1-Без ПДВ,2-в т.ч ПДВ) [ 1 ] Признак документа(0-обычный,1-в счет неотл.нужд,2-в карт2) [ 1 ] Вид платежа(0-обычный,2-экспорт-импорт) [ 4 ] Код раздела платежа [ 4 ] Код параграфа платежа [ 8 ] Дата документа(в формате ДДММГГГГ) [ 8 ] Дата валютирования документа(в формате ДДММГГГГ) [159] Назначение платежа(длина больше 3 символов) [15 ] МФО(BIC) банка посредника [149] Наименование банка посредника(если есть МФО можно пробелы) [ 1 ] За счет кого комисии(0-Ваши,1-Корр,2-Обеих) [18 ] Код платежа(можно заполнить пробелами) [35 ] Банк посредника в клиринговой системе(можно пробелы)значение [ 1 ] Счет или банк получателя в клиринговой системе(0/1) признак [35 ] Счет или банк получателя в клиринговой системе(можно пробелы)значение [ 1 ] Способ оповещения бенефициара любым/по наиболее эфект/по телефону(0/1/2) [191] Сообщение бенефициару(можно пробелы) [35 ] Счет клиента для списания комисий [ 3 ] Числовой идентификатор валюты счета клиента для списания комисий [119] Резерв(можно заполнить пробелами) [50 ] Сообщение об ошибке приема(заполняется программой приема) [ 2 ] \r\n перевод строки Длина текстовой строки 1280 байта.
Работа начинается с открытия сервера. В ответ на установку соединения
сервер отвечает строкой :
OK MARIA V1.0 где
"OK" - сигнатура
"MARIA" - название устройства
"V1.0" - версия ПО
После этого сервер готов к приему комманд.
Каждая комманда начинается ключевым словом FSTART:
затем через пробел следует название команды и перевод строки.
Все параметры для комманды передаются в символьном виде и завершаются
переводом строки.
Завершает ввод параметров ключевое слово FEND:
Сервер отвечает строкой с числовым кодом завершения операции в случае успеха
или строками:
ERROR - ошибочное число параметров в комманде
ERROR FUNC - ошибочная комманда после FSTART:
ERROR CMD - ошибочное ключевое слово
Завершение работы сервера происходит по комманде FQUIT:
Сервер выдает строку QUIT и закрывает соединение.
Реализованные комманды в версии 1.0
ADD_CHECK функция создания и печати чеков
MARIA_PRCHECK печать чека на фискальном принтере
МАРИЯ-301 MARIA_INDICATOR вывод сообщения на индикатор кассового
регистратора MARIA_LINEFEED прогнать чековую ленту MARIA_DAY_REPORT формирование и печать дневного отчетного
чека MARIA_DATE_REPORT формирование и печать отчетного чека за
указанный период времени MARIA_SETCHECK формирование внешнего вида чека MARIA_NALOG запрограмировать налог MARIA_REGINFO запрограмировать регистрационную
информацию о владельце MARIA_VALUTA запрогамировать валюту MARIA_TIME установить часы реального времени (не
более +- 1 час) MARIA_NULL напечатать нулевой чек (для проверки
введенных настроек кассового регистратора)
MARIA_SLUG служебное внесение/изъятие
FREE_CHECK
Для работы с сервером из программы-клиента существуют след.функции :
Назначение: Открытие соединения с сервером. Результат : Дескриптор соединения или ICEB_GET_ERROR в случае ошибки #define ICEB_GET_ERROR -1 icebcon iceb_open_server ( char *server_name //Имя хоста,доступное через DNS или /etc/host ); Назначение: Послать строку на сервер Результат : Число посланных байт или ICEB_GET_ERROR в случае ошибки int iceb_write_to_server ( icebcon conection_id, // Дескриптор соединения char *cmd // Строка данных ); Назначение: Прочитать строку ответа сервера Результат : Число принятых байт или ICEB_GET_ERROR в случае ошибки int iceb_read_from_server ( icebcon conection_id, // Дескриптор соединения char *server_answer, // Буфер для приема ответа int count // Размер буфера ); Назначение: Закрыть соединение с сервером Результат : всегда 0 int iceb_close_server(icebcon conection_id); Назначение: Получить код последней ошибки Результат : целое число int iceb_get_last_error() ICEB_ERROR_NONE 0 нет ошибок ICEB_ERROR_HOST_NOT_FOUND 1 хост не найден ICEB_ERROR_SERVICE_NOT_FOUND 2 нет такого номера порта ICEB_ERROR_CREATE_SOCKET 3 не может создать сокет ICEB_ERROR_CONNECT_HOST 4 не может соединиться с
сервером ICEB_ERROR_SEND_HOST 5 не смог послать данные ICEB_ERROR_SEND_DATA 6 во время посылки
сообщения разорвалось сетевое соединение ICEB_ERROR_READ_DATA 7 не смог прочитаь данные ICEB_ERROR_LARGE_BLOCK 8 размер буфера для приема
данных меньше чем необходимо ICEB_ERROR_INVALID_HANDLE 9 не отрыл сервер или
неправильный дескриптор ICEB_ERROR_NO_MORE_HANDLE 10 при открытии сервера
закончились дескрипторы