Class CashcheckServiceImpl

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.kernel.container.service.server.AbstractService
ru.bitel.bgbilling.plugins.cashcheck.server.CashcheckServiceImpl
All Implemented Interfaces:
CashcheckService

public class CashcheckServiceImpl extends ru.bitel.bgbilling.kernel.container.service.server.AbstractService implements CashcheckService
  • Field Summary

    Fields inherited from class ru.bitel.bgbilling.kernel.container.service.server.AbstractService

    context, moduleId, NO_SELECT, userId
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

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

    Methods inherited from class ru.bitel.bgbilling.kernel.container.service.server.AbstractService

    getChargeTypeDirectory, getConnection, getConnectionSet, getContract, getModuleSetup, getPaymentTypeDirectory, getReserveTypeDirectory, getServiceDirectory, getSetup, getSlaveConnection, getTrashConnection, getUserConfig, getUserInfoDirectory, resetModuleSetup, tryCall, tryReturn

    Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger

    error, error, error, getLogger, logError, logError, warn

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CashcheckServiceImpl

      public CashcheckServiceImpl()
  • Method Details

    • init

      @PostConstruct public void init()
    • bindPrinter

      public void bindPrinter(int registratorId, String password) throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Привязка принтера к пользователю. Сохраняет для юзера номер регистратора и пароль. Пробует просто снять статус регистратора с этим паролем. Если всё прошло как нельзя лучше - данные сохраняются, иначе в любом случае все данные о залогинивании, увы, стираются. Принимает регистратор, который мы хотим привязать к себе и его пароль:
      Specified by:
      bindPrinter in interface CashcheckService
      Parameters:
      registratorId - ид регистратора, или 0 если надо сделать разлогин.
      password - пароль принтера.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • buzzer

      public void buzzer() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Гудок.
      Specified by:
      buzzer in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • cancelCheck

      public void cancelCheck() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Аннулирование чека.
      Specified by:
      cancelCheck in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • continuePrint

      public void continuePrint() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Продолжение печати (например после отсутствия бумаги итд итп)
      Specified by:
      continuePrint in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • divReport

      public void divReport() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Отчёт по сменам. Нефискальный.
      Specified by:
      divReport in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • openDay

      public void openDay() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Открытие смены.
      Specified by:
      openDay in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getCurrentPrinter

      public String getCurrentPrinter() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      название текущего принтера в человеческом виде, либо надпись типа "не залогинен" итд
      Specified by:
      getCurrentPrinter in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getRegistratorStatus

      public String getRegistratorStatus() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Статус устройства.
      Specified by:
      getRegistratorStatus in interface CashcheckService
      Returns:
      строка статуса разбитая по линиям итд.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • helloPrinter

      public void helloPrinter(int registratorId, String password) throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Привет. Проверяется наличие принтера и пробуется туда приветствие напечатать. Никаких действий по запоминанию логина после логина не производится. Регистратор, который мы хотим проверить и его пароль:
      Specified by:
      helloPrinter in interface CashcheckService
      Parameters:
      registratorId -
      password - пароль (если не задан, то пытаемся взять куда залогинены. это если в клиенте уже вошли на этот момент)
      Throws:
      ru.bitel.bgbilling.common.BGException
    • printCheck

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

      public void printText(String text) throws ru.bitel.bgbilling.common.BGException
      Specified by:
      printText in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • queueTable

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

      public Result<IdTitle> registratorList() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Возвращает список регистраторов. доп.атрибут registratorId. Возвращаются только не-hidden устройства.
      Specified by:
      registratorList in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • repeatCheck

      public void repeatCheck() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Повтор последнего документа
      Specified by:
      repeatCheck in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • returnCheckCharge

      public PrintCheckData returnCheckCharge(int chargeId) throws BGPrinterNotloggedMessageException, ru.bitel.bgbilling.common.BGMessageException, ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Возврат продажи, привязанный к создаваему расходу, по аналогии с обычным чеком на приход.
      Specified by:
      returnCheckCharge in interface CashcheckService
      Parameters:
      chargeId - ид расхода
      Returns:
      сдача(?)
      Throws:
      BGPrinterNotloggedMessageException
      ru.bitel.bgbilling.common.BGMessageException
      ru.bitel.bgbilling.common.BGException
    • sendPureCommand

      public String sendPureCommand(String hexdump) throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Выполнение любой бинарной команды.
      Specified by:
      sendPureCommand in interface CashcheckService
      Parameters:
      hexdump - дамп в виде hex.
      Returns:
      ответ от железки
      Throws:
      ru.bitel.bgbilling.common.BGException
    • XReport

      public void XReport() throws ru.bitel.bgbilling.common.BGException
      Specified by:
      XReport in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • ZReport

      public void ZReport() throws ru.bitel.bgbilling.common.BGException
      Specified by:
      ZReport in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • logTable

      public Result<Payment> logTable(Set<Integer> cids, int printerId, int checkType, Boolean erroredType, String posMapping, Period period, Page page) throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Получение лога уже напечатанных чеков (и платежей и возвратов). "Залогиненный" принтер не учитывается.
      Specified by:
      logTable in interface CashcheckService
      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
    • logTableOnlyId

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

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

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

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

      public List<String> posMappingList() throws ru.bitel.bgbilling.common.BGException
      Description copied from interface: CashcheckService
      Все маппинги когда-либо используемые в логах, для фильтра, например.
      Specified by:
      posMappingList in interface CashcheckService
      Throws:
      ru.bitel.bgbilling.common.BGException
    • runAdvancePayments

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

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

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