Package ru.bitel.bgbilling.modules.assist.server.bean

# Class TransactionManager

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.common.dao.AbstarctDaoConstant
ru.bitel.bgbilling.common.dao.AbstractDao<Transaction>
ru.bitel.bgbilling.common.dao.AbstractIdDao<Transaction>
ru.bitel.bgbilling.server.bean.AbstractTransactionManager<Transaction>
ru.bitel.bgbilling.modules.assist.server.bean.TransactionManager

public class TransactionManager extends AbstractTransactionManager<Transaction>
Менеджер платежей ассист, записи о платежах/транзакциях в БД биллинга.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static String`
  `DEFAULT_PAYMENT_COMMENT`

  ### Fields inherited from class ru.bitel.bgbilling.server.bean.AbstractTransactionManager

  `moduleSetup`

  ### Fields inherited from class ru.bitel.bgbilling.common.dao.AbstractDao

  `orderByPattern`

  ### Fields inherited from class ru.bitel.bgbilling.common.dao.AbstarctDaoConstant

  `con, ERROR, fields, moduleId, SQL_ALL, SQL_AND, SQL_CALC_FOUND_ROWS, SQL_DELETE, SQL_DISTINCT, SQL_EQ, SQL_EQCS, SQL_FROM, SQL_GROUP, SQL_IN, SQL_INSERT, SQL_JOIN, SQL_LEFT_JOIN, SQL_LIMIT, SQL_NOT_IN, SQL_ON, SQL_ON_DUPLICATE_KEY_UPDATE, SQL_ORDER, SQL_SELECT, SQL_SET, SQL_UPDATE, SQL_VALUES, SQL_WHERE, tableName`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TransactionManager(Connection con, int moduleId)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Transaction`
  `addPayment(int contractId, BigDecimal sum, int recurringParentId)`
  Добавляем первоначальную строку платежа, когда юзер только пытается провести платёж - заносим сюда цид, дату и сумму.
  `void`
  `carryOutPayment(Transaction transaction)`
  Проведение платежа.
  `List<TransactionCheckResultDTO>`
  `doCheckRequest(int contractId, boolean autopaymentTransaction)`
  `TransactionCheckResultDTO`
  `doCheckRequest(Transaction transaction, int contractId, int orderId)`
  `int`
  `getFirstYear(int contractId)`
  Возвращает год, с которого были платежи для этого договора
  `protected Transaction`
  `getFromRS(ResultSet rs)`
  `protected Transaction`
  `getImpl(int id)`
  Чтение одного платежа через его id и через cid (опционально).
  `Transaction`
  `getLastRecurringForCid(int contractId, int recurringParentId)`
  Последний рекуррентный платёж.
  `List<Transaction>`
  `getPaymentList(int contractId, Date from, Date until, List<String> statusList)`
  Платежи за период для договора с указанным статусом.
  `protected String`
  `getQueryById()`
  `protected void`
  `queryStatus(StringBuilder query, String status)`
  `Transaction`
  `registerOrder(int contractId, BigDecimal sum, Map<String,Object> dataMap, boolean autopaymentTransaction, boolean requestBindingId)`
  `void`
  `searchTransaction(SearchResult<Transaction> searchResult, int contractId, String contractTitle, String status)`
  Поиск платежей по нескольким условиям
  `protected void`
  `updateImpl(Transaction transaction)`

  ### Methods inherited from class ru.bitel.bgbilling.server.bean.AbstractTransactionManager

  `checkColumn, doConnection, doConnection, executeQuerySumPage, getParameter, getParamString, getParamString, getParamString, getPaymentData, getTransactionSumColumn, psSetId, psSetStatus, queryId, searchTransaction, setConnectionTimeout, setParameter`

  ### Methods inherited from class ru.bitel.bgbilling.common.dao.AbstractIdDao

  `delete, executeUpdate, get, getAndDelete, getAndUpdate, opt, prepareStatement, sqlCommand, sqlCommandAndTable, sqlQuery, sqlWhereId`

  ### Methods inherited from class ru.bitel.bgbilling.common.dao.AbstractDao

  `delete, deleteImpl, eq, get, getById, getListFromRS, getPeriod, getSQLOrder, list, list, listImpl, listImpl, listImplPS, listImplPS, ormFromResultSet, ormUpdateImpl, ormUpdateImpl, ormUpdateImpl, ormUpdateImpl, psSetPeriod, queryPeriod, setStatementParam, update`

  ### Methods inherited from class ru.bitel.bgbilling.common.dao.AbstarctDaoConstant

  `getSQLOrder, getTableName, sqlLimit`

  ### 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`

- ## Field Details

  - ### DEFAULT_PAYMENT_COMMENT

    public static String DEFAULT_PAYMENT_COMMENT

- ## Constructor Details

  - ### TransactionManager

    public TransactionManager(Connection con, int moduleId)

- ## Method Details

  - ### addPayment

    public Transaction addPayment(int contractId, BigDecimal sum, int recurringParentId) throws Exception
    Добавляем первоначальную строку платежа, когда юзер только пытается провести платёж - заносим сюда цид, дату и сумму. Для того, чтобы ИД этой записи отдать в качестве уникального номера заказа процессинговому центру. Пока статус - "непроведённый".
    Parameters:
      `contractId` - цид
      `recurringParentId` - если > 0 - добавляет рекуррентный (а не обычный платёж), должно быть номер orderId родительског платежа (это у нас сущность id нашей этой же таблицы assist_payment, хранится в настрйоках assist_payment_recurring)
      `summ` - сумма
    Returns:
      ид новой записи (ид_платежа/номер_заказа)
    Throws:
      `SQLException`
      `Exception`

  - ### searchTransaction

    public void searchTransaction(SearchResult<Transaction> searchResult, int contractId, String contractTitle, String status) throws Exception
    Поиск платежей по нескольким условиям
    Parameters:
      `period` - дата начала (может не быть) и конца (может не быть) периода. учитывается с точностью до дня (!) и включительно. то есть чтобы вывести например за один день концы промежутка должны быть равны: 01.01.1999-01.01.1999
      `statusList` - статусов маска (комбинация из OK/FAIL/NEW статусов), должна быть указана
      `f_groups` - список групп договоров (если ничего нет, то будет маска договоров стало быть ноль и при поиске будет игнорироваться, то есть если не указано ничего, то предполагаются что все)
      `f_orderid` - поиск по части номера ID (типа номер заказа) (может не быть)
      `f_contract` - поиск по части номера договора (может не быть)
      `f_cardname` - поиск по части имени держателя карты ИЛИ по части имени плательщика этой карты (может не быть)
      `f_cardtext` - поиск по части номера карты ИЛИ части типа карты ИЛИ по части субтипа карты (может не быть)
      `f_billnumber` - поиск по части номера платежа системы assist (может не быть)
    Throws:
      `SQLException`
      `Exception`

  - ### queryStatus

    protected void queryStatus(StringBuilder query, String status)
    Overrides:
      `queryStatus` in class `AbstractTransactionManager<Transaction>`

  - ### getPaymentList

    public List<Transaction> getPaymentList(int contractId, Date from, Date until, List<String> statusList) throws Exception
    Платежи за период для договора с указанным статусом. Также для веба используется - все платежи за указанный месяц, используется для вывода в вебе списка платежей. Там тогда возвращаются все статусы - NEW, OK, FAIL.
    Parameters:
      `contractId` - цид
      `from` - дата начала (включительно)
      `until` - дата конца (включительно)
      `status` - маска статусов которые надо выбрать
    Returns:
      список пайментов
    Throws:
      `SQLException`
      `Exception`

  - ### registerOrder

    public Transaction registerOrder(int contractId, BigDecimal sum, Map<String,Object> dataMap, boolean autopaymentTransaction, boolean requestBindingId) throws Exception
    Throws:
      `Exception`

  - ### doCheckRequest

    public List<TransactionCheckResultDTO> doCheckRequest(int contractId, boolean autopaymentTransaction) throws Exception
    Throws:
      `Exception`

  - ### doCheckRequest

    public TransactionCheckResultDTO doCheckRequest(Transaction transaction, int contractId, int orderId) throws Exception
    Throws:
      `Exception`

  - ### getImpl

    protected Transaction getImpl(int id) throws SQLException
    Чтение одного платежа через его id и через cid (опционально). Также заполняется название договора.
    Overrides:
      `getImpl` in class `ru.bitel.bgbilling.common.dao.AbstractDao<Transaction>`
    Parameters:
      `id` - идПлатежа (он же "номер заказа" в терминах всей платёжной цепочки)
      `contractId` - контрактИд, если надо специфицировать, или -1, если игнорировать этот параметр. Для пущей надёжности сделано, так что пренебрегать - чревато! Название договора заполняется независимо от этого параметра.
    Returns:
      объект Payment (или null если нужного не найдено)
    Throws:
      `SQLException`

  - ### getQueryById

    protected String getQueryById()
    Overrides:
      `getQueryById` in class `ru.bitel.bgbilling.common.dao.AbstractDao<Transaction>`

  - ### carryOutPayment

    public void carryOutPayment(Transaction transaction) throws Exception
    Проведение платежа. Проверяется, чтобы статус у переданного был OK. Используется в админке при редактировании платежа, при запросе статуса ручном и в экзекутере.
    Throws:
      `Exception`

  - ### getFirstYear

    public int getFirstYear(int contractId) throws SQLException
    Возвращает год, с которого были платежи для этого договора
    Parameters:
      `contractId` - контракт_ид
    Returns:
      четырёхзначное число - год
    Throws:
      `SQLException`

  - ### getLastRecurringForCid

    public Transaction getLastRecurringForCid(int contractId, int recurringParentId) throws SQLException
    Последний рекуррентный платёж. Для указанного договора. Для заданного родителя этого платежа (чтобы различать пдатежи от разных подключенных автоплатежей). Учитываются только проведённые или пока висящие (со статусом FAIL не считаются, что наверно логично) Берётся только последний, если есть, если нету, то будет null.
    Parameters:
      `contractId` -
      `recurringParentId` -
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `SQLException`

  - ### getFromRS

    protected Transaction getFromRS(ResultSet rs) throws SQLException
    Specified by:
      `getFromRS` in class `ru.bitel.bgbilling.common.dao.AbstractDao<Transaction>`
    Throws:
      `SQLException`

  - ### updateImpl

    protected void updateImpl(Transaction transaction) throws SQLException
    Specified by:
      `updateImpl` in class `ru.bitel.bgbilling.common.dao.AbstractDao<Transaction>`
    Throws:
      `SQLException`