Разделение по отделам в ККМ, задание типа платежа, налога, признак электронного чека и т.д.
Этот раздел относится логически к предыдущему про настройку внешнего вида чеков, так как затрагивает использование тех же скриптов.
Имейте ввиду, что для каждого ККМ номера отделов, типов платежа и остального имеют какой-то диапазон или формат. Следует уточнить это в документации по устройству. Также устройство может не поддерживать то или иное.
При желании разделять некоторые платежи по разным отделам можно использовать такую возможность, предоставляемую большинством ККМ. Для этого при добавлении в скрипте "формирование позиции чека" очередной позиции с помощью команды addPayment надо третьим параметром передать номер отдела. Таким образом отдел привязывается к продажной позиции.
Вычислить номер отдела можно на основании любых данных, например, типа платежа, номера принтера и т.д. и т.п. Пример использования:
int
paymentDep =
0
;
switch
( payment.getPaymentTypeID() )
{
case
1
:
paymentDep =
1
;
break
;
case
2
:
paymentDep =
2
;
break
;
// .... итд
}
check.addPayment( payment.getSumma(), payment.getContractTitle(), paymentDep );
Можно просто отдавать в метод 0 (ноль), если вам не нужна эта возможность.
Тип платежа - это "наличные", "картой" итд. Поддерживается многими ККМ. Он задаётся для всего чека сразу. Вам нужен setPaymentType() у объекта Check. Туда передаётся целочисленный тип, назначение идентификаторов уточняйте в документации устройства или у поставщика. Так как тип платежа привязан ко всему чеку, подходящее место для установки - метод "завершение формирования чека" (но можно ставить и в момент формирования каждой позиции, нужно только учесть, что в следующей позиции он может перекрыться).
Номер налоговой группы - задаётся для всего чека, метод setTax() у объекта Check. Назначение номеров настраивается в самом ККТ, уточняйте в документации устройства.
Признак электронного чека - указание для ККТ что чек электронный, если он умеет такое, то печати бумажного чека не будет. Метод setOnlyElCheck(true) у объекта Check.
Указание customerAddress - для электронных чеков необходимо указание customerAddress (можно указывать и при бумажном). Метод setCustomerEmail("email/phone") у объекта Check. Формат передаваемого телефона/адреса уточняйте в документации ОФД.
Указание произвольного тега для ОФД - можно задать дополнительный любой тег. За это отвечают методы setTag(int tag, String value), setTag(int tag, byte value), setTag(int tag, byte[] value) у объекта Check.
Признак способа расчёта (Check.setPayMethod(int payMethod)) и Признак предмета расчёта (Check.setPayObject(int payObject)) - атрибуты ФФД 1.05, вообще это атрибут позиции чека, но здесь оно на весь чек задаётся.
Значение кассир (тег 1021) для чеков (Check.setCashierName(String cashierName)) и инн кассира (тег 1203) для чеков (Check.setCashierINN(String cashierINN)) - более удобные методы задания этих тегов, либо основной способ авторизации/указания кассиров в драйвере ru.bitel.frk.driver.atollibfptr.Driver (там нет авторизации по паролю кассира).