Package ru.bitel.bgbilling.kernel.contract.balance.server.bean

# Class ReserveDao

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.common.dao.AbstarctDaoConstant
ru.bitel.bgbilling.common.dao.AbstractDao<Reserve>
ru.bitel.bgbilling.common.dao.AbstractIdDao<Reserve>
ru.bitel.bgbilling.kernel.contract.balance.server.bean.ReserveDao

public class ReserveDao extends ru.bitel.bgbilling.common.dao.AbstractIdDao<Reserve>

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final boolean`
  `flagReserve`
  Флаг определяющий, будет ли влиять резерв на баланс.

  ### 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
  `ReserveDao(Connection con)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `closeReserve(int reserveId)`
  Закрытие резерва.
  `BigDecimal`
  `getBalanceWithReserve(Contract contract, BigDecimal balance, LocalDate localDate)`
  `BigDecimal`
  `getBalanceWithReserve(Contract contract, BigDecimal balance, Calendar calendar)`
  Deprecated.
  `getBalanceWithReserve(Contract, BigDecimal, LocalDate)`
  `protected Reserve`
  `getFromRS(ResultSet rs)`
  `List<Reserve>`
  `getReserveList(int cid, Period period, int reserveMembers)`
  `BigDecimal`
  `getReserveSum(int contractId)`
  Проверка на зависемый subContract не происоходит.
  `BigDecimal`
  `getReserveSumByDate(int cid, Date date)`
  `boolean`
  `isUseReserveType(int reserveTypeId)`
  `void`
  `recalculationSumReserve(int contractId)`
  Переобсчет итогового поля резерва для договора.
  `protected void`
  `updateImpl(Reserve reserve)`
  Создание резерва и редактирование( тип, комментарий, сумма).

  ### 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, getImpl, getListFromRS, getPeriod, getQueryById, 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

  - ### flagReserve

    public static final boolean flagReserve
    Флаг определяющий, будет ли влиять резерв на баланс. Если равен true, то значит влияет.

- ## Constructor Details

  - ### ReserveDao

    public ReserveDao(Connection con)

- ## Method Details

  - ### isUseReserveType

    public boolean isUseReserveType(int reserveTypeId) throws SQLException
    Parameters:
      `reserveTypeId` -
    Returns:
      - true если есть резервы с таким типом
    Throws:
      `SQLException`

  - ### updateImpl

    protected void updateImpl(Reserve reserve) throws SQLException
    Создание резерва и редактирование( тип, комментарий, сумма). Дата создания будет выставленна текущая, а не та что передается в резерве. При создании резерва, если выставлен период так же повесится job на момент dateTo, который когда сработает снимет резерв.
    Specified by:
      `updateImpl` in class `ru.bitel.bgbilling.common.dao.AbstractDao<Reserve>`
    Parameters:
      `reserve` -
    Throws:
      `SQLException`

  - ### getReserveList

    public List<Reserve> getReserveList(int cid, Period period, int reserveMembers) throws SQLException
    Parameters:
      `cid` - - номер договора.
      `period` - - 1 - если период != null, то вернет все резервы которые были активны в данном промежутке. 2 - если период == null, все резервы договора. 3 - если период != null, но одна из дат периода == null, все резервы которые были активны в данном промежутке. где null это либо от начало времен или до конца времен. 4 - если период != null, но обе даты из периода == null, вернет то же что и под номером 2. Второй датой пероиода у резерва будет считаться дата закрытия(dateClose), если же ее нет, то дата планируемого закрытия(dateTo),если и ее нет, то проверка только по дате создания.
      `reserveMembers` - - если == 1, то вернет резервы только данного договора, если = 2 то вернет еще и резервы зависемых субдоговоров, если = 3 то только резервы зависемых субдоговоров.
    Returns:
      список резервов договора(-ов).
    Throws:
      `SQLException`

  - ### closeReserve

    public boolean closeReserve(int reserveId) throws SQLException
    Закрытие резерва. Можно закрывать резерв без проверки, был ли он закрыт до этого или был ли уже удален. То есть дата закрытия у него не перетрется.(после закрытия,если результатом будет true, необходимо бросить событие,изменение баланса)
    Parameters:
      `reserveId` - ид закрываемого резерва.
    Returns:
      true, если резерв закрыли сейчас. Если вернул false то либо резерв был до этого закрыт или его удалили.
    Throws:
      `SQLException`

  - ### getReserveSum

    public BigDecimal getReserveSum(int contractId) throws SQLException
    Проверка на зависемый subContract не происоходит.
    Parameters:
      `contractId` - - номер договора.
    Returns:
      сумма резервов для договора. При этом происходит взятие только из таблицы, переобсчет не происходит.
    Throws:
      `SQLException`

  - ### getReserveSumByDate

    public BigDecimal getReserveSumByDate(int cid, Date date) throws SQLException
    Parameters:
      `cid` - - ид договора
      `date` - -
    Returns:
      сумму резервов на момент date.
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `SQLException`

  - ### recalculationSumReserve

    public void recalculationSumReserve(int contractId) throws Exception
    Переобсчет итогового поля резерва для договора. Вызывать при добавлении,закрытии резерва.
    Parameters:
      `contractId` - - номер договора.
    Throws:
      `Exception`

  - ### getBalanceWithReserve

    @Deprecated public BigDecimal getBalanceWithReserve(Contract contract, BigDecimal balance, Calendar calendar) throws SQLException
    Deprecated.
    `getBalanceWithReserve(Contract, BigDecimal, LocalDate)`
    Parameters:
      `contract` -
      `balance` -
      `calendar` -
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`
      `SQLException`

  - ### getBalanceWithReserve

    public BigDecimal getBalanceWithReserve(Contract contract, BigDecimal balance, LocalDate localDate) throws SQLException
    Parameters:
      `contract` - - договор
      `balance` - - текущий баланс, который считается без резерва.
      `localDate` - - задает месяц и год
    Returns:
      - входной баланс ,если в конфиге отключенно влияние резерва на баланс или вернет входной баланс с вычетом резервов, если включен. Так же вернет просто баланс, если баланс запрашивается не на текущую дату, так как резерв должен влиять только на текущий баланс.
    Throws:
      `SQLException`

  - ### getFromRS

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