Package ru.bitel.bgbilling.plugins.cashcheck.common

# Interface CashcheckService

public interface CashcheckService

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `bindPrinter(int registratorId, String password)`
  Привязка принтера к пользователю.
  `void`
  `buzzer()`
  Гудок.
  `void`
  `cancelCheck()`
  Аннулирование чека.
  `void`
  `checkManualPrint(int checkMode, int paymentType)`
  Предварительная (перед printCheck, returnCheckCharge) проверка возможности напечатать чек указанного типа, плюс так же как те методы кидает BGPrinterNotloggedMessageException и можно сразу рисовать логин.
  `String`
  `closeCheckFix(BigDecimal summa)`
  Полуотладочная фишка - закрывает чек на зависшем принтере, да, увы бывает такое, надо признать.
  `void`
  `continuePrint()`
  Продолжение печати (например после отсутствия бумаги итд итп)
  `int`
  `deleteNewCheck(int checkMode, List<Integer> logIds)`
  Удаление new-чеков из лога.
  `void`
  `divReport()`
  Отчёт по сменам.
  `String`
  `getCurrentPrinter()`
  название текущего принтера в человеческом виде, либо надпись типа "не залогинен" итд
  `String`
  `getRegistratorStatus()`
  Статус устройства.
  `void`
  `helloPrinter(int registratorId, String password)`
  Привет.
  `Result<Payment>`
  `logTable(Set<Integer> cids, int printerId, int checkType, Boolean erroredType, String posMapping, Period period, Page page)`
  Получение лога уже напечатанных чеков (и платежей и возвратов).
  `List<Integer>`
  `logTableOnlyId(Set<Integer> cids, int printerId, int checkType, Boolean erroredType, String posMapping, Period period)`
  Аналог метода "получение лога уже напечатанных платажей" но возвращает все id (log-id, не payment-id!)
  `void`
  `openDay()`
  Открытие смены.
  `List<String>`
  `posMappingList()`
  Все маппинги когда-либо используемые в логах, для фильтра, например.
  `PrintCheckData`
  `printCheck(List<Integer> paymentIds, BigDecimal clientsumma)`
  Печать чека.
  `String`
  `printCheckBatchAuto(List<Integer> paymentIds)`
  Метод аналогичный printCheck но запускается только из очереди.
  `String`
  `printCheckErrorAsIs(List<Integer> logIds)`
  Будет ВЗЯТО СТАРОЕ СОДЕРЖИМОЕ и отправлено на перепечать несколько чеков, напечатанных с ошибками.
  `String`
  `printCheckErrorDyncode(List<Integer> logIds)`
  Будут ЗАНОВО ПРОГНАНЫ ЧЕРЕЗ ДИН.КОД и отправлены на перепечать несколько чеков, напечатанных с ошибками Возьмётся только id платежа и выполнится вся процедура печати сначала для каждого платежа/чека.
  `void`
  `printText(String text)`
  `Result<Payment>`
  `queueTable(Period period, Page page, int printerId, int checkType)`
  Список очереди нераспечатанных (и платежей и возвратов).
  `Result<IdTitle>`
  `registratorList()`
  Возвращает список регистраторов. доп.атрибут registratorId.
  `void`
  `repeatCheck()`
  Повтор последнего документа
  `PrintCheckData`
  `returnCheckCharge(int chargeId)`
  Возврат продажи, привязанный к создаваему расходу, по аналогии с обычным чеком на приход.
  `void`
  `runAdvancePayments(LocalDate month, List<Integer> contractsIds)`
  Запуск задачи зачётов авансов вручную
  `String`
  `sendPureCommand(String hexdump)`
  Выполнение любой бинарной команды.
  `void`
  `XReport()`
  `void`
  `ZReport()`

- ## Method Details

  - ### bindPrinter

    void bindPrinter(int registratorId, String password) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Привязка принтера к пользователю. Сохраняет для юзера номер регистратора и пароль. Пробует просто снять статус регистратора с этим паролем. Если всё прошло как нельзя лучше - данные сохраняются, иначе в любом случае все данные о залогинивании, увы, стираются. Принимает регистратор, который мы хотим привязать к себе и его пароль:
    Parameters:
      `registratorId` - ид регистратора, или 0 если надо сделать разлогин.
      `password` - пароль принтера.
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`

  - ### buzzer

    void buzzer() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Гудок.
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`

  - ### cancelCheck

    void cancelCheck() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Аннулирование чека.
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### openDay

    void openDay() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Открытие смены.
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### closeCheckFix

    String closeCheckFix(BigDecimal summa) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Полуотладочная фишка - закрывает чек на зависшем принтере, да, увы бывает такое, надо признать.
    Parameters:
      `summa` - сумма.
    Returns:
      сдача.
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### continuePrint

    void continuePrint() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Продолжение печати (например после отсутствия бумаги итд итп)
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### divReport

    void divReport() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Отчёт по сменам. Нефискальный.
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### getCurrentPrinter

    String getCurrentPrinter() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    название текущего принтера в человеческом виде, либо надпись типа "не залогинен" итд
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### getRegistratorStatus

    String getRegistratorStatus() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Статус устройства.
    Returns:
      строка статуса разбитая по линиям итд.
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### helloPrinter

    void helloPrinter(int registratorId, String password) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Привет. Проверяется наличие принтера и пробуется туда приветствие напечатать. Никаких действий по запоминанию логина после логина не производится. Регистратор, который мы хотим проверить и его пароль:
    Parameters:
      `registratorId` -
      `password` - пароль (если не задан, то пытаемся взять куда залогинены. это если в клиенте уже вошли на этот момент)
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`

  - ### printCheck

    PrintCheckData printCheck(List<Integer> paymentIds, BigDecimal clientsumma) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Печать чека. Вызывается аж из трёх сейчас мест - из очереди, из списка платежей в контракте, и из диалога добавления прихода, при условии, что стоит галочка. Сейчас для всех этих трёх способов разницы тут нет - везде передаётся только ИД платежа, возможно, несколько (несколько можно напечатать из всех трёх мест: при печати из лога, из таблицы платежей и по галке, если стоит распределение платежей). Также сумма от клиента используется. Внутри уже проверяется возможность печати итд.
    Parameters:
      `paymentIds` - несколько ИД платежей.
      `clientsumma` - сумма от клиента.
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### printText

    void printText(String text) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### queueTable

    Result<Payment> queueTable(Period period, Page page, int printerId, int checkType) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Список очереди нераспечатанных (и платежей и возвратов).
    Parameters:
      `period` - период
      `page` - пагинация
      `printerId` - регистратор для которого получить (0, -1 -- возмётся "текущий" как раньше)
      `checkType` - 0 - чеки платежей, 1 - чеки возврата
    Returns:
      доп.атрибуты registratorBindedName, registratorId, fiscalStart.
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`

  - ### registratorList

    Result<IdTitle> registratorList() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Возвращает список регистраторов. доп.атрибут registratorId. Возвращаются только не-hidden устройства.
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### repeatCheck

    void repeatCheck() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Повтор последнего документа
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### returnCheckCharge

    PrintCheckData returnCheckCharge(int chargeId) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Возврат продажи, привязанный к создаваему расходу, по аналогии с обычным чеком на приход.
    Parameters:
      `chargeId` - ид расхода
    Returns:
      сдача(?)
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### sendPureCommand

    String sendPureCommand(String hexdump) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Выполнение любой бинарной команды.
    Parameters:
      `hexdump` - дамп в виде hex.
    Returns:
      ответ от железки
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`

  - ### XReport

    void XReport() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### ZReport

    void ZReport() throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### logTable

    Result<Payment> logTable(Set<Integer> cids, int printerId, int checkType, Boolean erroredType, String posMapping, Period period, Page page) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Получение лога уже напечатанных чеков (и платежей и возвратов). "Залогиненный" принтер не учитывается.
    Parameters:
      `cids` - фильтр по договорам, если null или пустой - то по всем
      `printerId` - фильтр по ККМ, или 0, если по всем
      `checkType` - 0 - чеки платежей, 1 - чеки возврата
      `erroredType` - null - все чеки, true - только с ошибками, false - только без ошибок
      `posMapping` - фильтр по маппингу, null - все, строка - только с указанным маппингом
      `period` - период
      `page` - пагинация
    Returns:
      список платежей в виде Result. Список не null всегда.
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`

  - ### logTableOnlyId

    List<Integer> logTableOnlyId(Set<Integer> cids, int printerId, int checkType, Boolean erroredType, String posMapping, Period period) throws ru.bitel.bgbilling.common.BGException
    Аналог метода "получение лога уже напечатанных платажей" но возвращает все id (log-id, не payment-id!) соответствующие (не учитывая пагинацию, конечно)
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### printCheckBatchAuto

    String printCheckBatchAuto(List<Integer> paymentIds) throws ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Метод аналогичный printCheck но запускается только из очереди. Проверяется что режим auto. По-нормальному auto там не должны оставаться (а попадать в лог с ошибкой), метод на всякий случай для допечати тех которые внесли для фискализации позже, например. В итоге запускается таск в планировщике. manual печатаются методом ручным. delay печатаются своей задачей, она эти платежи в очереди подцепит в штатном режиме.
    Parameters:
      `paymentIds` - список платежей.
    Returns:
      какое-то сообщение.
    Throws:
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### printCheckErrorDyncode

    String printCheckErrorDyncode(List<Integer> logIds) throws ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Будут ЗАНОВО ПРОГНАНЫ ЧЕРЕЗ ДИН.КОД и отправлены на перепечать несколько чеков, напечатанных с ошибками Возьмётся только id платежа и выполнится вся процедура печати сначала для каждого платежа/чека. Каждый будет напечатан на соответствующем по настройкам фискализаторе. После обработки записи останутся в логе с успехом или ошибкой (новой или той же). Чеки должны быть привязаны к платежу. Печатаются асинхронно в планировщике.
    Parameters:
      `logIds` - список log_id записей лога (не ид платежей!). и лог на платежи обязательно, не на возвраты (это разные таблицы).
    Returns:
      какое-то сообщение.
    Throws:
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### printCheckErrorAsIs

    String printCheckErrorAsIs(List<Integer> logIds) throws ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Будет ВЗЯТО СТАРОЕ СОДЕРЖИМОЕ и отправлено на перепечать несколько чеков, напечатанных с ошибками. ДИН.КОД ВЫПОЛНЯТЬСЯ НЕ БУДЕТ, возьмётся \"как есть\" содержимое чека сформированное ранее, и заново отправится в фискализатор. Каждый будет напечатан на том же самом фискализаторе, который сохранён в логе. После обработки записи останутся в логе с успехом или ошибкой (новой или той же). Чеки могут быть не привязаны к платежу (удалён или не было привязано). Печатаются асинхронно в планировщике.
    Parameters:
      `logIds` - список log_id записей лога (не ид платежей!). и лог на платежи обязательно, не на возвраты (это разные таблицы).
    Returns:
      какое-то сообщение.
    Throws:
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### posMappingList

    List<String> posMappingList() throws ru.bitel.bgbilling.common.BGException
    Все маппинги когда-либо используемые в логах, для фильтра, например.
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### runAdvancePayments

    void runAdvancePayments(LocalDate month, List<Integer> contractsIds) throws ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Запуск задачи зачётов авансов вручную
    Parameters:
      `month` - месяц
      `contractsIds` - (опционально) договоры для обработки (если null/пустое - все)
    Throws:
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### checkManualPrint

    void checkManualPrint(int checkMode, int paymentType) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Предварительная (перед printCheck, returnCheckCharge) проверка возможности напечатать чек указанного типа, плюс так же как те методы кидает BGPrinterNotloggedMessageException и можно сразу рисовать логин. Предварительная проверка спасает от большинства случаев когда хотели добавит платёж + чек, но чек потом не напечатался, а т.к. мы печатаем постфактум, то получается что добавлен платёж а чека нет, надо идти в очередь и вручную делать (чего оператор может не смочь) а если косяк с маппингом то вообще нигде не будет инфы про чек.
    Parameters:
      `checkMode` - аналогично как в редакторе платежей/расходов, например: 0 - чек платежа/покупок, 1 - чеки возвратов/продаж
      `paymentType` - тип платежа/расхода соответственно с которым собрались печатать.
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`

  - ### deleteNewCheck

    int deleteNewCheck(int checkMode, List<Integer> logIds) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
    Удаление new-чеков из лога. Уже напечатанные удалять нельзя.
    Parameters:
      `checkMode` - 0 - чек платежа/покупок, 1 - чеки возвратов/продаж
      `logIds` - список log_id записей лога (не ид платежей!). лог на платежи и на возвраты это разные таблицы, определяется как раз параметром checkMode.
    Returns:
      кол-во удалённых
    Throws:
      `BGPrinterNotloggedMessageException`
      `ru.bitel.bgbilling.common.BGMessageException`
      `ru.bitel.bgbilling.common.BGException`