Драйвер контрольно-кассовой техники v.10
Перечисления | Функции
Печать чека

Методы для формирования чека Подробнее...

Перечисления

enum  libfptr_tax_mode { LIBFPTR_TM_POSITION = 0, LIBFPTR_TM_UNIT }
 Способ начисления налога Подробнее...
 
enum  libfptr_receipt_type {
  LIBFPTR_RT_CLOSED = 0, LIBFPTR_RT_SELL = 1, LIBFPTR_RT_SELL_RETURN = 2, LIBFPTR_RT_SELL_CORRECTION = 7,
  LIBFPTR_RT_BUY = 4, LIBFPTR_RT_BUY_RETURN = 5, LIBFPTR_RT_BUY_CORRECTION = 9
}
 Тип чека Подробнее...
 
enum  libfptr_payment_type {
  LIBFPTR_PT_CASH = 0, LIBFPTR_PT_ELECTRONICALLY, LIBFPTR_PT_PREPAID, LIBFPTR_PT_CREDIT,
  LIBFPTR_PT_OTHER, LIBFPTR_PT_6, LIBFPTR_PT_7, LIBFPTR_PT_8,
  LIBFPTR_PT_9, LIBFPTR_PT_10
}
 Тип оплаты Подробнее...
 
enum  libfptr_tax_type {
  LIBFPTR_TAX_DEPARTMENT = 0, LIBFPTR_TAX_VAT18 = 1, LIBFPTR_TAX_VAT10, LIBFPTR_TAX_VAT118,
  LIBFPTR_TAX_VAT110, LIBFPTR_TAX_VAT0, LIBFPTR_TAX_NO
}
 Налоговая ставка Подробнее...
 

Функции

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_open_receipt (libfptr_handle handle)
 Открывает чек. Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_cancel_receipt (libfptr_handle handle)
 Отменяет открытый чек. Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_close_receipt (libfptr_handle handle)
 Закрывает открытый чек. Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_check_document_closed (libfptr_handle handle)
 Проверяет результат закрытия фискального документа. Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_receipt_total (libfptr_handle handle)
 Регистрирует итог чека Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_receipt_tax (libfptr_handle handle)
 Регистрирует налог на чек. Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_registration (libfptr_handle handle)
 Производит регистрацию товара. Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_payment (libfptr_handle handle)
 Производит регистрацию оплаты. Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_operator_login (libfptr_handle handle)
 Регистрирует кассира Подробнее...
 
DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_continue_print (libfptr_handle handle)
 Допечатывает недопечатанный документ. Подробнее...
 

Подробное описание

Методы для формирования чека

Перечисления

◆ libfptr_payment_type

Тип оплаты

Список возможных значений для параметра LIBFPTR_PARAM_PAYMENT_TYPE

Предупреждения
Для использования этих констант требуется, чтобы в ККТ был настроен аналогичный порядок типов оплат.
Элементы перечислений
LIBFPTR_PT_CASH 

Оплата наличными

LIBFPTR_PT_ELECTRONICALLY 

Электронными

LIBFPTR_PT_PREPAID 

Предварительная оплата (аванс)

LIBFPTR_PT_CREDIT 

Последующая оплата (кредит)

LIBFPTR_PT_OTHER 

Иная форма оплаты (встречное предоставление)

LIBFPTR_PT_6 

Тип оплаты 6.

LIBFPTR_PT_7 

Тип оплаты 7.

LIBFPTR_PT_8 

Тип оплаты 8.

LIBFPTR_PT_9 

Тип оплаты 9.

LIBFPTR_PT_10 

Тип оплаты 10.

См. определение в файле libfptr10.h строка 1352

◆ libfptr_receipt_type

Тип чека

Список возможных значений для параметра LIBFPTR_PARAM_RECEIPT_TYPE

Элементы перечислений
LIBFPTR_RT_CLOSED 

Чек закрыт

LIBFPTR_RT_SELL 

Чек прихода

LIBFPTR_RT_SELL_RETURN 

Чек возврата прихода

LIBFPTR_RT_SELL_CORRECTION 

Чек коррекции прихода

LIBFPTR_RT_BUY 

Чек расхода

LIBFPTR_RT_BUY_RETURN 

Чек возврата расхода

LIBFPTR_RT_BUY_CORRECTION 

Чек коррекции расхода

См. определение в файле libfptr10.h строка 1274

◆ libfptr_tax_mode

Способ начисления налога

Список возможных значений для параметра LIBFPTR_PARAM_TAX_MODE

Элементы перечислений
LIBFPTR_TM_POSITION 

На позицию

LIBFPTR_TM_UNIT 

На единицу

См. определение в файле libfptr10.h строка 1125

◆ libfptr_tax_type

Налоговая ставка

Список возможных значений для параметра LIBFPTR_PARAM_TAX_TYPE

Элементы перечислений
LIBFPTR_TAX_DEPARTMENT 

По секции

LIBFPTR_TAX_VAT18 

НДС 18%.

LIBFPTR_TAX_VAT10 

НДС 10%.

LIBFPTR_TAX_VAT118 

НДС расч. 18/118.

LIBFPTR_TAX_VAT110 

НДС расч. 10/110.

LIBFPTR_TAX_VAT0 

НДС 0%.

LIBFPTR_TAX_NO 

Не облагается

См. определение в файле libfptr10.h строка 1383

Функции

◆ libfptr_cancel_receipt()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_cancel_receipt ( libfptr_handle  handle)

Отменяет открытый чек.

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

if (libfptr_cancel_receipt(handle) < 0)
{
// Обработка ошибки
return;
}
Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_check_document_closed()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_check_document_closed ( libfptr_handle  handle)

Проверяет результат закрытия фискального документа.

В ряде ситуаций (окончание бумаги, потеря связи с ККТ в момент регистрации документа) состояние документа остается неизвестным. Данный метод сверяет счетчики ККТ с сохраненными до закрытия документа копиями и вычисляет, закрылся ли он. Дескриптор handler не должен разрушаться (libfptr_destroy()), создаваться заново (libfptr_create()) и перенастраиваться (libfptr_set_settings(), libfptr_apply_single_settings()) между вызовами методов закрытия / формирования документа и libfptr_check_document_closed() для корректной работы метода.

Метод применим для:

  • чеков
  • отчетов закрытия и открытия смены
  • отчета регистрации, перерегистрации ККТ, закрытия архива ФН
  • отчета о состоянии расчетов

Выходными свойствами метода являются LIBFPTR_PARAM_DOCUMENT_CLOSED (закрылся документ или нет) и LIBFPTR_PARAM_DOCUMENT_PRINTED (напечатался документ или нет).

Если не обработать флаг LIBFPTR_PARAM_DOCUMENT_PRINTED и не допечатать документа самостоятельно командой libfptr_continue_print(), то документ будет автоматически допечатан при следующей печатной операции.

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

do
{
{
switch (libfptr_error_code(handle))
{
// Не удалось установить связь с ККТ и проверить, закрылся ли документ
// (можно вывести сообщение пользователю, что нужно проверить соединение с ККТ)
break;
default:
// Другие ошибки - провести проверку еще раз
break;
}
continue;
}
}
while (true);
bool documentClosed = (libfptr_get_param_bool(handle, LIBFPTR_PARAM_DOCUMENT_CLOSED) != 0);
bool documentPrinted = (libfptr_get_param_bool(handle, LIBFPTR_PARAM_DOCUMENT_PRINTED) != 0);
if (!documentClosed)
{
// Чек не закрылся - вернуть пользователю ошибку
return;
}
if (!documentPrinted)
{
// Вывести пользователю сообщение, что документ недопечатан (можно также проверить, что
// закрыта крышка, есть бумага и т.п.) и вызвать метод \ref libfptr_continue_print(),
// когда пользователь решит, что проблема устранена
while (libfptr_continue_print(handle) < 0)
{
// Вывести ошибку продолжения печати и повтять \ref libfptr_continue_print(),
// пока документ не будет допечатан и метод не вернет 0.
}
break;
}
break;
Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_close_receipt()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_close_receipt ( libfptr_handle  handle)

Закрывает открытый чек.

Закрывает чек без сдачи. Если чек уже частично оплачен, зафиксирует оплату остатка заданным типом. Если чек оплачен полностью, передача LIBFPTR_PARAM_PAYMENT_TYPE ни на что не влияет.

Параметры
Название Описание Тип параметра Обязательность или
значение по умолчанию
Входные параметры
LIBFPTR_PARAM_PAYMENT_TYPE Тип оплаты int (libfptr_payment_type) LIBFPTR_PT_CASH
Предупреждения
Требует проверки результата закрытия документа - libfptr_check_document_closed().

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

if (libfptr_close_receipt(handle) < 0)
{
// Обработка ошибки
return;
}
Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_continue_print()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_continue_print ( libfptr_handle  handle)

Допечатывает недопечатанный документ.

Предупреждения
Если недопечатанных документов нет, не выдает ошибку.
Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_open_receipt()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_open_receipt ( libfptr_handle  handle)

Открывает чек.

Параметры
Название Описание Тип параметра Обязательность или
значение по умолчанию
Входные параметры
LIBFPTR_PARAM_RECEIPT_TYPE Тип чека int (libfptr_receipt_type) +
LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY Электронный чек bool false
Допустимые реквизиты ФН для всех чеков (чеков коррекции после ФФД 1.1)
1005 Адрес оператора по переводу денежных средств string
1008 Номер телефона / email клиента string
1016 ИНН оператора по переводу денежных средств string
1021 Кассир string
1026 Наименование оператора по переводу денежных средств string
1044 Операция банковского агента string
1055 Применяемая система налогообложения int
1057 Признак платежного агента int
1073 Телефон платежного агента string
1074 Телефон оператора по приему платежей string
1075 Телефон оператора по переводу денежных средств string
1084 Дополнительный реквизит пользователя bytearray
1108 Признак расчетов в сети Интернет bool
1117 Адрес электронной почты отправителя чека string
1171 Телефон поставщика (возможна передача нескольких реквизитов)string
1192 Дополнительный реквизит чека string
1203 ИНН кассира string
1227 Наименование клиента string
1228 ИНН клиента string
Дополнительные реквизиты для чеков коррекции, помимо выше перечисленных (ФФД 1.1)
1174 Основание для коррекции bytearray
Допустимые реквизиты ФН для чеков коррекции (ФФД 1.0, ФФД 1.05)
1021 Кассир string
1055 Применяемая система налогообложения int
1173 Тип коррекции int
1174 Основание для коррекции bytearray
1203 ИНН кассира string


Описание реквизита 1084 (Дополнительный реквизит пользователя)
Название Описание Тип параметра
1085 Наименование дополнительного реквизита string
1086 Значение дополнительного реквизита string


Описание реквизита 1174 (Основание для коррекции) (ФФД 1.0, ФФД 1.05)
Название Описание Тип параметра
1177 Наименование основания для коррекции string
1178 Дата документа основания для коррекции datetime
1179 Номер документа основания для коррекции string


Описание реквизита 1174 (Основание для коррекции) (ФФД 1.1)
Название Описание Тип параметра
1173 Тип коррекции int
1177 Наименование основания для коррекции string
1178 Дата документа основания для коррекции datetime
1179 Номер документа основания для коррекции string
Предупреждения
Печать электронного чека требует установленного параметра LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY и реквизита 1008 (адрес получателя)

Если один из реквизитов ФН не удалось запрограммировать, ошибка возвращена не будет (чек откроется), но будет параметр LIBFPTR_PARAM_ERROR_TAG_NUMBER будет инициализирован номером реквизита, запись которого была завершена с ошибкой.

Предупреждения
Для регистрации кассира рекомендуется использовать libfptr_operator_login()

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

// Обычный чек
if (libfptr_open_receipt(handle) < 0)
{
// Обработка ошибки
return;
}
// Печать чека + отправка пользователю на указанный контакт (с помощью ОФД)
libfptr_set_param_str(handle, 1008, L"user@test.ru");
if (libfptr_open_receipt(handle) < 0)
{
// Обработка ошибки
return;
}
// Отправка чека пользователю на указанный контакт (с помощью ОФД) без печати на чековой ленте
libfptr_set_param_str(handle, 1008, L"user@test.ru");
if (libfptr_open_receipt(handle) < 0)
{
// Обработка ошибки
return;
}
Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_operator_login()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_operator_login ( libfptr_handle  handle)

Регистрирует кассира

Общие параметры
Название Описание Тип параметра Обязательность или
значение по умолчанию
Входные параметры
1021 Должность и фамилия кассира string
1203 ИНН кассира string
Предупреждения
Рекомендуется вызывать данный метод перед каждой фискальной операцией (формирование чека, снятие отчета).
Аргументы
handle
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_payment()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_payment ( libfptr_handle  handle)

Производит регистрацию оплаты.

Параметры
Название Описание Тип параметра Обязательность или
значение по умолчанию
Входные параметры
LIBFPTR_PARAM_PAYMENT_TYPE Тип оплаты int (libfptr_payment_type) +
LIBFPTR_PARAM_PAYMENT_SUM Сумма оплаты, р. double +
Выходные параметры
LIBFPTR_PARAM_REMAINDER Неоплаченный остаток чека, р. double
LIBFPTR_PARAM_CHANGE Сдача, р. double

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

if (libfptr_payment(handle) < 0)
{
// Обработка ошибки
return;
}
Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_receipt_tax()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_receipt_tax ( libfptr_handle  handle)

Регистрирует налог на чек.

Параметры
Название Описание Тип параметра Обязательность или
значение по умолчанию
Входные параметры
LIBFPTR_PARAM_TAX_TYPE Ставка налога на чек int (libfptr_tax_type) +
LIBFPTR_PARAM_TAX_SUM Сумма налога на чек, р. double +

Указанная налоговая ставка должна присутствовать в чеке, чтобы регистрация ее суммы была возможна.

Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_receipt_total()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_receipt_total ( libfptr_handle  handle)

Регистрирует итог чека

Параметры
Название Описание Тип параметра Обязательность или
значение по умолчанию
Входные параметры
LIBFPTR_PARAM_SUM Итог чека double -

Команда не является обязательной. Если команда не передана, или LIBFPTR_PARAM_SUM не указан, сумма чека будет посчитана автоматически. С помощью данной команды можно скорректировать сумму чека в рамках копеек.

Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех

◆ libfptr_registration()

DTOX_SHARED_EXPORT int DTOX_SHARED_CCA libfptr_registration ( libfptr_handle  handle)

Производит регистрацию товара.

Параметры
Название Описание Тип параметра Обязательность или
значение по умолчанию
Входные параметры
LIBFPTR_PARAM_COMMODITY_NAME Наименование товара string +
LIBFPTR_PARAM_PRICE Цена за единицу товара, р double +
LIBFPTR_PARAM_QUANTITY Количество товара, ед. double +
LIBFPTR_PARAM_POSITION_SUM Общая сумма позиции, р. double - (автоматический рассчет)
LIBFPTR_PARAM_DEPARTMENT Номер отдела int 1 (по возможности без печати на чековой ленте)
LIBFPTR_PARAM_TAX_TYPE Ставка налога на позицию int (libfptr_tax_type) +
LIBFPTR_PARAM_TAX_SUM Сумма налога на позицию, р. double - (сумма рассчитывается на стороне ККТ)
LIBFPTR_PARAM_USE_ONLY_TAX_TYPE Передавать только ставку налога bool false
LIBFPTR_PARAM_TAX_MODE Способ начисления налога int (libfptr_tax_mode) LIBFPTR_TM_POSITION
LIBFPTR_PARAM_INFO_DISCOUNT_SUM Сумма информационной скидки/надбавки, р.double 0.00 (не печатается на чековой ленте)
LIBFPTR_PARAM_COMMODITY_PIECE Штучный товар bool false
LIBFPTR_PARAM_CHECK_SUM Проверять сумму bool

false

Допустимые реквизиты ФН
1162 Код товарной номенклатуры bytearray
1191 Дополнительный реквизит товара string
1197 Единицы измерения предмета расчета string
1212 Признак предмета расчета int
1214 Признак способа расчета int
1222 Признак агента по предмету расчета int
1223 Данные агента bytearray
1224 Данные поставщика bytearray
1226 ИНН поставщика string
1229 Акциз double
1230 Код страны производителя string
1231 Номер таможенной декларации string
Описание реквизита 1223 (Данные агента)
Название Описание Тип параметра
1005 Адрес оператора перевода string
1016 ИНН оператора перевода string
1026 Наименование оператора перевода string
1044 Операция платежного агента string
1073 Телефон платежного агента string
1074 Телефон оператора по приему платежей string
1075 Телефон оператора перевода string
Описание реквизита 1224 (Данные поставщика)
Название Описание Тип параметра
1171 Телефон поставщика string
1225 Наименование поставщика string

Если LIBFPTR_PARAM_POSITION_SUM не передан, то общая сумма расчитывается как LIBFPTR_PARAM_PRICE * LIBFPTR_PARAM_QUANTITY с математическим округлением.
Если LIBFPTR_PARAM_POSITION_SUM передан и LIBFPTR_PARAM_POSITION_SUM != LIBFPTR_PARAM_PRICE * LIBFPTR_PARAM_QUANTITY с точностью до 1 копейки, производится распределение получившейся разницы (скидки/надбавки) на общее кол-во товаров в позиции. При этом возможно разбиение позиции на две, если невозможно распределить скидку/надбавку равномерно и ККТ реализует подобную логику. Сумма информационной скидки (LIBFPTR_PARAM_INFO_DISCOUNT_SUM) в этом случае не учитывается.

Пример:
цена за единицу = 100.00, количество = 7.000, общая сумма = 661.04. Скидка на позицию = 38.96, не распределяется равномерно на 7 единиц товара (38.96 = 5.56 * 3 + 5.57 * 4). Таким образом, на чековой ленте будет распечатано две позиции с одинаковым наименованием:

  1. 3.000 * 94.44 = 283.32
  2. 4.000 * 94.43 = 377.72

Если LIBFPTR_PARAM_TAX_SUM не передан, то ККТ рассчитает сумму налога самостоятельно.
Если LIBFPTR_PARAM_TAX_SUM передан, то сумма налога будет зарегистрирована исходя из значения данного параметра.
Если LIBFPTR_PARAM_USE_ONLY_TAX_TYPE передан и равен true, ККТ не будет рассчитывать сумму налога. В этом случае требуется зарегистрировать налог на чек с помощью libfptr_receipt_tax().

Для формирования составных реквизитов (1223, 1224) рекомендуется использовать libfptr_util_form_tlv(). Для упрощения формирования кода товарной номенклатуры (1162) можно использовать libfptr_util_form_nomenclature().

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

// Регистрация позиции без указания суммы налога (ККТ рассчитывает налоги самостоятельно)
if (libfptr_registration(handle) < 0)
{
// Обработка ошибки
return;
}
// Регистрация позиции с указанием суммы налога (ККТ проводит только логический контроль суммы)
if (libfptr_registration(handle) < 0)
{
// Обработка ошибки
return;
}
// Регистрация позиции без рассчета суммы налога (требуется регистрация суммы налогов в конце чека с помощью libfptr_tax())
if (libfptr_registration(handle) < 0)
{
// Обработка ошибки
return;
}
Аргументы
handleДескриптор
Возвращаемые значения
-1Ошибка
0Успех