Драйвер контрольно-кассовой техники v.10
Использование в Objective C

Для работы с компонетом из Objective C требуется модуль libfptr_objc.h.

Пример использования компонента:

#import <Foundation/Foundation.h>
#import "libfptr10_objc.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
IFptr *fptr = [[IFptr alloc] init];
NSLog(@"Version: %@", [fptr version]);
[fptr setSingleSetting:LIBFPTR_SETTING_PORT value:[NSString stringWithFormat:@"%d", LIBFPTR_PORT_TCPIP]];
[fptr setSingleSetting:LIBFPTR_SETTING_IPADDRESS value:@"192.168.2.30"];
[fptr applySingleSettings];
[fptr open];
// Регистрация кассира
[fptr setParam:1021 NSStringParam:@"Иванов И.И."];
[fptr setParam:1203 NSStringParam:@"500100732259"];
[fptr operatorLogin];
// Открытие электронного чека(с передачей телефона получателя)
[fptr setParam:1008 NSStringParam:@"+79161234567"];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr openReceipt];
// Регистрация позиции
[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@"Чипсы LAYS"];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:73.99];
[fptr setParam:LIBFPTR_PARAM_QUANTITY intParam:5];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT18];
[fptr setParam:1212 intParam:1];
[fptr setParam:1214 intParam:7];
[fptr registration];
// Регистрация итога (отрасываем копейки)
[fptr setParam:LIBFPTR_PARAM_SUM doubleParam:369.0];
[fptr receiptTotal];
// Оплата наличными
[fptr setParam:LIBFPTR_PARAM_PAYMENT_TYPE intParam:LIBFPTR_PT_CASH];
[fptr setParam:LIBFPTR_PARAM_PAYMENT_SUM doubleParam:1000];
[fptr payment];
// Закрытие чека
if ([fptr closeReceipt] < 0)
{
// Обработка исключительных ситуаций, если произошла ошибка при закрытии чека
// (чек мог закрыться на самом деле, даже если, например, закончилась чековая лента)
[fptr checkReceiptClosed];
if (![fptr getParamBool:LIBFPTR_PARAM_RECEIPT_CLOSED])
{
// Обработка ошибки закрытия чека
exit(255);
}
}
// Запрос информации о закрытом чеке
[fptr fnQueryData];
NSLog(@"Fiscal Sign = %@", [fptr getParamString:LIBFPTR_PARAM_FISCAL_SIGN]);
NSLog(@"Fiscal DocumentNumber = %d", [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER]);
// Формирование слипа ЕГАИС
[fptr beginNonfiscalDocument];
[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@"ИНН: 111111111111 КПП: 222222222"];
[fptr printText];
[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@"КАССА: 1 СМЕНА: 11"];
[fptr printText];
[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@"ЧЕК: 314 ДАТА: 20.11.2017 15:39"];
[fptr printText];
[fptr setParam:LIBFPTR_PARAM_BARCODE NSStringParam:@"https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7"];
[fptr setParam:LIBFPTR_PARAM_BARCODE_TYPE intParam:LIBFPTR_BT_QR];
[fptr setParam:LIBFPTR_PARAM_SCALE intParam:5];
[fptr printBarcode];
[fptr printText];
[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@"https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7"];
[fptr setParam:LIBFPTR_PARAM_TEXT_WRAP intParam:LIBFPTR_TW_CHARS];
[fptr printText];
[fptr printText];
[fptr setParam:LIBFPTR_PARAM_TEXT
NSStringParam:@"10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c "
@"78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 "
@"ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 "
@"81 74"];
[fptr setParam:LIBFPTR_PARAM_TEXT_WRAP intParam:LIBFPTR_TW_WORDS];
[fptr printText];
[fptr endNonfiscalDocument];
// Отчет о закрытии смены
[fptr report];
// Получение информации о неотправленных документах
[fptr fnQueryData];
int unsentCount = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
int unsentFirstNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
NSDate* unsentDateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSLog(@"First unsent document = %d (%@)", unsentFirstNumber, [formatter stringFromDate:unsentDateTime]);
NSLog(@"Unsent count = %d", unsentCount);
[fptr close];
}
return 0;
}