Class Check
java.lang.Object
ru.bitel.bgbilling.plugins.cashcheck.common.Check
- Direct Known Subclasses:
Check
Используется для формирования последовательностей линий чека. Этот же объект
передаётся в скрипты формирования вида чека. После этого отсюда получается
список строк для непосредственной посылки в сервер печати.
Основной код чека, используется во всех фискализаторах.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Класс "линия чека", либо продажа(позиция), либо просто строка (когда сумма и отдел равны -1) В сервере печати используется так же: Строка чека.static class
Шорткат для установки сложных вложенных тегов в чек/позицию.static enum
-
Field Summary
Modifier and TypeFieldDescriptionprotected String
protected String
protected Check.Type
тип чека: приход, возврат прихода, итд сделан чтобы можно было теоретически поменять в скрипте тип с прихода на возврат (например печатать чек возврата прихода на отрицательные платежи) также используется чтобы печатать чек коррекции прихода вместо чека приходаprotected String
Установленный "адрес пользователя" мыло/телефон.Доп. теги.static final String
строка которая символизирует отрезку чека, например, в команде драйвера printtextprotected Date
protected String
protected List<Check.CheckLine>
список линий чека, заполняем сначала этот список теперь, а не сразу текстовые строки, чтобы иметь возможность гибкого манипулирования позициями, суммами итдstatic final int
Атрибуты агента (к позиции): [Тег: 1222] Признак агента по предмету расчета * 0 (bank_payment_agent) - оказание услуг покупателю (клиенту) пользователем, являющимся банковским платежным агентом * 1 (bank_payment_subagent) - оказание услуг покупателю (клиенту) пользователем, являющимся банковским платежным субагентом * 2 (payment_agent) - оказание услуг покупателю (клиенту) пользователем, являющимся платежным агентом * 3 (payment_subagent) - оказание услуг покупателю (клиенту) пользователем, являющимся платежным субагентом * 4 (solicitor) - осуществление расчета с покупателем (клиентом) пользователем, являющимся поверенным * 5 (commissionaire) - осуществление расчета с покупателем (клиентом) пользователем, являющимся комиссионером * 6 (agent) - осуществление расчета с покупателем (клиентом) пользователем, являющимся агентом и не являющимся банковским платежным агентом (субагентом), платежным агентом (субагентом), поверенным, комиссионеромstatic final int
Атрибуты поставщика (к позиции): [Тег: 1226] ИНН поставщикаstatic final int
Атрибуты поставщика (к позиции): [Тег: 1225] Наименование поставщикаstatic final int
Атрибуты поставщика (к позиции): [Тег: 1171] Телефоны поставщика.protected boolean
Только электронный чек, на бумаге не печататьstatic final int
Тип платежа (для setPaymentType) - карта/электронные/безналичные (1081 Сумма по чеку безналичными)static final int
Тип платежа (для setPaymentType) - наличные (1031 сумма по чеку (БСО) наличными)static final int
Тип платежа (для setPaymentType) - постоплата (кредит) (1216 Сумма по чеку постоплатой (кредит))static final int
Тип платежа (для setPaymentType) - иная форма оплаты (встречное предоставление) (1217 Сумма по чеку встречным представлением)static final int
Тип платежа (для setPaymentType) - предварительная оплата (зачет аванса и (или) предыдущих платежей) (1215 Сумма по чеку предоплатой (зачет аванса и (или) предыдущих платежей))protected BigDecimal
считаем сумму, по всем пунктам чека.protected Integer
тип оплаты (он один на весь чек, не на каждую позицию)protected Integer
static final int
3 Аванс "АВАНС"static final int
6 Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит "ПЕРЕДАЧА В КРЕДИТ"static final int
7 Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита) "ОПЛАТА КРЕДИТА"static final int
4 Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета "ПОЛНЫЙ РАСЧЕТ" или "4"static final int
1 Полная предварительная оплата до момента передачи предмета расчета "ПРЕДОПЛАТА 100%"static final int
5 Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит "ЧАСТИЧНЫЙ РАСЧЕТ И КРЕДИТ"static final int
2 Частичная предварительная оплата до момента передачи предмета расчета "ПРЕДОПЛАТА"protected Integer
static final int
11 о вознаграждении пользователя, являющегося платежным агентом (субагентом), банковским платежным агентом (субагентом), комиссионером, поверенным или иным агентом "АГЕНТСКОЕ ВОЗНАГРАЖДЕНИЕ" или "АВ"static final int
13 о предмете расчета, не относящемуся к предметам расчета, которым может быть присвоено значение от "1" до "11" и от "14" до "26" "ИНОЙ ПРЕДМЕТ РАСЧЕТА" или "ИПР" или может не печататьсяstatic final int
1 о реализуемом товаре, за исключением подакцизного товара (наименование и иные сведения, описывающие товар) "ТОВАР" или "Т" или может не печататьсяstatic final int
3 о выполняемой работе (наименование и иные сведения, описывающие работу) "РАБОТА" или "Р" или может не печататьсяstatic final int
10 об авансе, задатке, предоплате и кредите "ПЛАТЕЖ" или "П" или может не печататьсяstatic final int
4 об оказываемой услуге (наименование и иные сведения, описывающие услугу) "УСЛУГА" или "У" или может не печататьсяprotected Integer
налог, налоговая группа итд. задаётся на весь чек одним числом.static final int
Тип налога/ндс (для setTax) – НДС по ставке 0%static final int
Тип налога/ндс (для setTax) – НДС чека по ставке 10%static final int
Тип налога/ндс (для setTax) – НДС чека по расчетной ставке 10/110static final int
Тип налога/ндс (для setTax) – НДС чека по расчетной ставке 18/118 (историческое)static final int
Тип налога/ндс (для setTax) – НДС чека по расчетной ставке 20/120static final int
Тип налога/ндс (для setTax) – НДС чека по ставке 18% (историческое)static final int
Тип налога/ндс (для setTax) – НДС чека по ставке 20%static final int
Тип налога/ндс (для setTax) – без НДС -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected static void
_CUSTOMTAG_decode
(String t, Map<Integer, Object> customTags) protected static BigDecimal
_roundSum
(BigDecimal summa) округление входящих сюда сумм, ибо если например передаются суммы из наработки или каким-то делением полученные, то получатся суммы большой точности и некоторые фискализаторы сходят с ума. если точность была меньше точности чем два после запятой - всё равно для общности всё приводится к Х.ХХvoid
addPayment
(BigDecimal summa, String string, int dep) Добавление строки продажи.void
addPayment
(BigDecimal summa, String string, int dep, Integer payMethod, Integer payObject) void
addPayment
(BigDecimal summa, String string, int dep, Integer payMethod, Integer payObject, Integer tax) Добавление строки продажи с указанием специфичных признаков способа и объекта расчёта.void
Добавление строки текста.получение текстового представления сожержимого чека в том виде котором оно отдаётся на сервер печатидата документа, используется в некоторых системахgetLines()
Список линий чека, как платежей, так и каментов.Признак способа расчёта, вообще это атрибут позиции чека, но здесь оно на весь чек задаётсяПризнак предмета расчёта, вообще это атрибут позиции чека, но здесь оно на весь чек задаётсяМетод возвращающий список строк для передачи его к клиенту посылки на удалённый сервер печати.getTax()
boolean
Признак "только электронный чек, без печати на ленту".static Check
processCommandCheckParameters
(String[] parameters, org.apache.logging.log4j.Logger logger) Разбирает параметры команды "check".void
setCashierINN
(String cashierINN) void
setCashierName
(String cashierName) void
setCheckType
(Check.Type checkType) void
setCustomerEmail
(String customerEmail) установка "адреса пользователя" - мыло/телефонvoid
setDocumentDate
(Date documentDate) дата документа, используется в некоторых системахvoid
setDocumentId
(int documentId) void
setDocumentId
(String documentId) void
setLastPaymentTag
(int tag, byte[] value) Добавление к предыдущей позиции (addPayment) тега, "привязанного к позиции"void
setLastPaymentTag
(int tag, long value) Добавление к предыдущей позиции (addPayment) тега, "привязанного к позиции" целочисленногоvoid
setLastPaymentTag
(int tag, String value) Добавление к предыдущей позиции (addPayment) тега, "привязанного к позиции" строковогоvoid
setLastPaymentTag
(int tag, Check.STAG value) Добавление к предыдущей позиции (addPayment) тега, "привязанного к позиции" вложенного тега, внутри мэп с ключом [целое], значение [целое/строка]void
setOnlyElCheck
(boolean onlyElCheck) Установка признака "только электронный чек, без печати на ленту".void
setPaymentType
(int paymentType) Установка типа оплаты (если используется и протокол позволяет)void
setPayMethod
(int payMethod) Признак способа расчёта, вообще это атрибут позиции чека, но здесь оно на весь чек задаётсяvoid
setPayObject
(int payObject) Признак предмета расчёта, вообще это атрибут позиции чека, но здесь оно на весь чек задаётсяvoid
setTag
(int tag, byte[] value) установка произвольного тегаvoid
setTag
(int tag, long value) установка произвольного целочисленного тегаvoid
установка произвольного строкового тегаvoid
setTag
(int tag, Check.STAG value) установка вложенного тега, внутри мэп с ключом [целое], значение [целое/строка]void
setTax
(int tax) Установка налога/налоговой группы (если используется и протокол позволяет)static byte[]
STLV
(byte[]... tlvs) создаёт общую структуру из нескольких переданных TLV-структурstatic byte[]
TLV
(int tag, byte[] value) static byte[]
TLV
(int tag, long value, int len) static byte[]
-
Field Details
-
paymentsum
считаем сумму, по всем пунктам чека. В том числе, если clientsumma не передана, мы подставим её туда, будто клиент дал -
lines
список линий чека, заполняем сначала этот список теперь, а не сразу текстовые строки, чтобы иметь возможность гибкого манипулирования позициями, суммами итд -
paymentType
тип оплаты (он один на весь чек, не на каждую позицию) -
tax
налог, налоговая группа итд. задаётся на весь чек одним числом. хотя например в штрихе задаётся и на продажную позицию и на закрытие чека, также в штрихе можно задать tax1...tax4, но используем только первую -
customerEmail
Установленный "адрес пользователя" мыло/телефон. -
onlyElCheck
protected boolean onlyElCheckТолько электронный чек, на бумаге не печатать -
customTags
Доп. теги. Они могут быть строкой, целым(long), массивом байт, типом STAG (Map) для вложенных тегов. В новом виде передаётся каждый тип по-разному. -
payMethod
-
payObject
-
checkType
тип чека: приход, возврат прихода, итд сделан чтобы можно было теоретически поменять в скрипте тип с прихода на возврат (например печатать чек возврата прихода на отрицательные платежи) также используется чтобы печатать чек коррекции прихода вместо чека прихода -
cashierName
-
cashierINN
-
documentDate
-
documentId
-
CUT_TEXT_COMMAND
строка которая символизирует отрезку чека, например, в команде драйвера printtext- See Also:
-
OFD_TAG_SUPPLIER_INFO_PHONES
public static final int OFD_TAG_SUPPLIER_INFO_PHONESАтрибуты поставщика (к позиции): [Тег: 1171] Телефоны поставщика. Номер телефона необходимо передать вместе с кодом страны без пробелов и дополнительных символов.- See Also:
-
OFD_TAG_SUPPLIER_INFO_NAME
public static final int OFD_TAG_SUPPLIER_INFO_NAMEАтрибуты поставщика (к позиции): [Тег: 1225] Наименование поставщика- See Also:
-
OFD_TAG_SUPPLIER_INFO_INN
public static final int OFD_TAG_SUPPLIER_INFO_INNАтрибуты поставщика (к позиции): [Тег: 1226] ИНН поставщика- See Also:
-
OFD_TAG_AGENT_INFO_TYPE
public static final int OFD_TAG_AGENT_INFO_TYPEАтрибуты агента (к позиции): [Тег: 1222] Признак агента по предмету расчета * 0 (bank_payment_agent) - оказание услуг покупателю (клиенту) пользователем, являющимся банковским платежным агентом * 1 (bank_payment_subagent) - оказание услуг покупателю (клиенту) пользователем, являющимся банковским платежным субагентом * 2 (payment_agent) - оказание услуг покупателю (клиенту) пользователем, являющимся платежным агентом * 3 (payment_subagent) - оказание услуг покупателю (клиенту) пользователем, являющимся платежным субагентом * 4 (solicitor) - осуществление расчета с покупателем (клиентом) пользователем, являющимся поверенным * 5 (commissionaire) - осуществление расчета с покупателем (клиентом) пользователем, являющимся комиссионером * 6 (agent) - осуществление расчета с покупателем (клиентом) пользователем, являющимся агентом и не являющимся банковским платежным агентом (субагентом), платежным агентом (субагентом), поверенным, комиссионером- See Also:
-
PAY_CASH
public static final int PAY_CASHТип платежа (для setPaymentType) - наличные (1031 сумма по чеку (БСО) наличными)- See Also:
-
PAY_CARD
public static final int PAY_CARDТип платежа (для setPaymentType) - карта/электронные/безналичные (1081 Сумма по чеку безналичными)- See Also:
-
PAY_PREPAYMENT
public static final int PAY_PREPAYMENTТип платежа (для setPaymentType) - предварительная оплата (зачет аванса и (или) предыдущих платежей) (1215 Сумма по чеку предоплатой (зачет аванса и (или) предыдущих платежей))- See Also:
-
PAY_CREDIT
public static final int PAY_CREDITТип платежа (для setPaymentType) - постоплата (кредит) (1216 Сумма по чеку постоплатой (кредит))- See Also:
-
PAY_OTHER
public static final int PAY_OTHERТип платежа (для setPaymentType) - иная форма оплаты (встречное предоставление) (1217 Сумма по чеку встречным представлением)- See Also:
-
VAT_NO
public static final int VAT_NOТип налога/ндс (для setTax) – без НДС- See Also:
-
VAT_0
public static final int VAT_0Тип налога/ндс (для setTax) – НДС по ставке 0%- See Also:
-
VAT_10
public static final int VAT_10Тип налога/ндс (для setTax) – НДС чека по ставке 10%- See Also:
-
VAT_18
public static final int VAT_18Тип налога/ндс (для setTax) – НДС чека по ставке 18% (историческое)- See Also:
-
VAT_110
public static final int VAT_110Тип налога/ндс (для setTax) – НДС чека по расчетной ставке 10/110- See Also:
-
VAT_118
public static final int VAT_118Тип налога/ндс (для setTax) – НДС чека по расчетной ставке 18/118 (историческое)- See Also:
-
VAT_20
public static final int VAT_20Тип налога/ндс (для setTax) – НДС чека по ставке 20%- See Also:
-
VAT_120
public static final int VAT_120Тип налога/ндс (для setTax) – НДС чека по расчетной ставке 20/120- See Also:
-
PAYMETHOD_FULL_PREPAYMENT
public static final int PAYMETHOD_FULL_PREPAYMENT1 Полная предварительная оплата до момента передачи предмета расчета "ПРЕДОПЛАТА 100%"- See Also:
-
PAYMETHOD_PREPAYMENT
public static final int PAYMETHOD_PREPAYMENT2 Частичная предварительная оплата до момента передачи предмета расчета "ПРЕДОПЛАТА"- See Also:
-
PAYMETHOD_ADVANCE
public static final int PAYMETHOD_ADVANCE3 Аванс "АВАНС"- See Also:
-
PAYMETHOD_FULL_PAYMENT
public static final int PAYMETHOD_FULL_PAYMENT4 Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета "ПОЛНЫЙ РАСЧЕТ" или "4"- See Also:
-
PAYMETHOD_PARTIAL_PAYMENT
public static final int PAYMETHOD_PARTIAL_PAYMENT5 Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит "ЧАСТИЧНЫЙ РАСЧЕТ И КРЕДИТ"- See Also:
-
PAYMETHOD_CREDIT
public static final int PAYMETHOD_CREDIT6 Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит "ПЕРЕДАЧА В КРЕДИТ"- See Also:
-
PAYMETHOD_CREDIT_PAYMENT
public static final int PAYMETHOD_CREDIT_PAYMENT7 Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита) "ОПЛАТА КРЕДИТА"- See Also:
-
PAYOBJECT_COMMODITY
public static final int PAYOBJECT_COMMODITY1 о реализуемом товаре, за исключением подакцизного товара (наименование и иные сведения, описывающие товар) "ТОВАР" или "Т" или может не печататься- See Also:
-
PAYOBJECT_JOB
public static final int PAYOBJECT_JOB3 о выполняемой работе (наименование и иные сведения, описывающие работу) "РАБОТА" или "Р" или может не печататься- See Also:
-
PAYOBJECT_SERVICE
public static final int PAYOBJECT_SERVICE4 об оказываемой услуге (наименование и иные сведения, описывающие услугу) "УСЛУГА" или "У" или может не печататься- See Also:
-
PAYOBJECT_PAYMENT
public static final int PAYOBJECT_PAYMENT10 об авансе, задатке, предоплате и кредите "ПЛАТЕЖ" или "П" или может не печататься- See Also:
-
PAYOBJECT_AGENT_COMMISSION
public static final int PAYOBJECT_AGENT_COMMISSION11 о вознаграждении пользователя, являющегося платежным агентом (субагентом), банковским платежным агентом (субагентом), комиссионером, поверенным или иным агентом "АГЕНТСКОЕ ВОЗНАГРАЖДЕНИЕ" или "АВ"- See Also:
-
PAYOBJECT_ANOTHER
public static final int PAYOBJECT_ANOTHER13 о предмете расчета, не относящемуся к предметам расчета, которым может быть присвоено значение от "1" до "11" и от "14" до "26" "ИНОЙ ПРЕДМЕТ РАСЧЕТА" или "ИПР" или может не печататься- See Also:
-
-
Constructor Details
-
Check
-
Check
public Check()
-
-
Method Details
-
addString
Добавление строки текста.- Parameters:
string
- строка.
-
addPayment
Добавление строки продажи.- Parameters:
summa
- сумма.string
- название позиции (если используется и протокол позволяет).dep
- "отдел" в ККМ (если используется и протокол позволяет, иначе ставьте 0).- See Also:
-
addPayment
public void addPayment(BigDecimal summa, String string, int dep, Integer payMethod, Integer payObject) -
_roundSum
округление входящих сюда сумм, ибо если например передаются суммы из наработки или каким-то делением полученные, то получатся суммы большой точности и некоторые фискализаторы сходят с ума. если точность была меньше точности чем два после запятой - всё равно для общности всё приводится к Х.ХХ -
addPayment
public void addPayment(BigDecimal summa, String string, int dep, Integer payMethod, Integer payObject, Integer tax) Добавление строки продажи с указанием специфичных признаков способа и объекта расчёта.- Parameters:
summa
- сумма, должна быть не null, сумма сразу приводится к двум знакам точности.string
- название позиции (если используется и протокол позволяет).dep
- "отдел" в ККМ (если используется и протокол позволяет, иначе ставьте 0).payMethod
- признак способа расчёта позиции, не задано: nullpayObject
- признак предмета расчёта позиции, не задано: nulltax
- налог для позиции, не задано: null- See Also:
-
setLastPaymentTag
Добавление к предыдущей позиции (addPayment) тега, "привязанного к позиции" строкового -
setLastPaymentTag
public void setLastPaymentTag(int tag, long value) Добавление к предыдущей позиции (addPayment) тега, "привязанного к позиции" целочисленного -
setLastPaymentTag
public void setLastPaymentTag(int tag, byte[] value) Добавление к предыдущей позиции (addPayment) тега, "привязанного к позиции" -
setLastPaymentTag
Добавление к предыдущей позиции (addPayment) тега, "привязанного к позиции" вложенного тега, внутри мэп с ключом [целое], значение [целое/строка] -
setPaymentType
public void setPaymentType(int paymentType) Установка типа оплаты (если используется и протокол позволяет)- Parameters:
paymentType
- тип оплаты
-
setTax
public void setTax(int tax) Установка налога/налоговой группы (если используется и протокол позволяет)- Parameters:
tax
- налог/налоговая группа
-
setOnlyElCheck
public void setOnlyElCheck(boolean onlyElCheck) Установка признака "только электронный чек, без печати на ленту". -
isOnlyElCheck
public boolean isOnlyElCheck()Признак "только электронный чек, без печати на ленту". -
getPlines
Метод возвращающий список строк для передачи его к клиенту посылки на удалённый сервер печати.- Returns:
- список строк
-
getPaymentsum
-
getLines
Список линий чека, как платежей, так и каментов.- Returns:
- лист объектов
-
getPaymentType
-
getTax
-
setCustomerEmail
установка "адреса пользователя" - мыло/телефон -
getCustomerEmail
-
setTag
установка произвольного строкового тега -
setTag
public void setTag(int tag, long value) установка произвольного целочисленного тега -
setTag
public void setTag(int tag, byte[] value) установка произвольного тега -
setTag
установка вложенного тега, внутри мэп с ключом [целое], значение [целое/строка] -
setPayMethod
public void setPayMethod(int payMethod) Признак способа расчёта, вообще это атрибут позиции чека, но здесь оно на весь чек задаётся -
setPayObject
public void setPayObject(int payObject) Признак предмета расчёта, вообще это атрибут позиции чека, но здесь оно на весь чек задаётся -
getPayMethod
Признак способа расчёта, вообще это атрибут позиции чека, но здесь оно на весь чек задаётся -
getPayObject
Признак предмета расчёта, вообще это атрибут позиции чека, но здесь оно на весь чек задаётся -
getCheckType
- Returns:
- текущий тип чека (теоретически может быть незадан на данный момент).
-
setCheckType
- Parameters:
\u043d\u0430\u0441\u0438\u043b\u044c\u043d\u0430\u044f
- установка типа чека.
-
getCustomTags
-
TLV
-
TLV
public static byte[] TLV(int tag, long value, int len) -
TLV
public static byte[] TLV(int tag, byte[] value) -
STLV
public static byte[] STLV(byte[]... tlvs) создаёт общую структуру из нескольких переданных TLV-структур -
setCashierName
- Parameters:
cashierName
- значение кассир (1021) для чеков
-
setCashierINN
- Parameters:
cashierINN
- значение инн кассира (1203) для чеков
-
getCashierName
-
getCashierINN
-
getCheckData
получение текстового представления сожержимого чека в том виде котором оно отдаётся на сервер печати -
getDocumentDate
дата документа, используется в некоторых системах -
setDocumentDate
дата документа, используется в некоторых системах -
getDocumentId
-
setDocumentId
public void setDocumentId(int documentId) -
setDocumentId
-
_CUSTOMTAG_decode
-
processCommandCheckParameters
public static Check processCommandCheckParameters(String[] parameters, org.apache.logging.log4j.Logger logger) throws ru.bitel.bgbilling.common.BGException Разбирает параметры команды "check". Заполеняет переданный массив CheckLine. И вычисляет сумму общую по чеку. Первые два параметра не трогает. Заполняет последовательность вида чека строка+платёж, так и доп.параметры чека - налог, тип платежа, ОФД-инфу всякую итд. Вынесен общий код, вот так немного криво вынесен. По идее надо было наследовать итд, но архитектура к тому моменту другая была. Надо рефакторить на досуге.- Throws:
DriverException
ru.bitel.bgbilling.common.BGException
-