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

## Class ReserveDao

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

- All Implemented Interfaces:
    java.lang.AutoCloseable

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

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class ru.bitel.common.dao.AbstractDao

      `ru.bitel.common.dao.AbstractDao.ResultSetIterator`

  - ### Field Summary

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

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

      `cacheFilter, cacheJoin, cacheOrderBy, cachePaged, cachePS, cacheWhat, con, getByIdPS, mid, moduleId, orderByPattern, tableName`

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

      `ERROR, SQL_CALC_FOUND_ROWS, SQL_DELETE, SQL_DISTINCT, SQL_EQ, SQL_EQCS, SQL_FROM, SQL_GROUP, SQL_IN, SQL_INSERT, SQL_LIMIT, SQL_ON_DUPLICATE_KEY_UPDATE, SQL_ORDER, SQL_SELECT, SQL_SET, SQL_UPDATE, SQL_VALUES, SQL_WHERE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ReserveDao(java.sql.Connection con)`

  - ### Method Summary

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

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

      `delete, get, getAndDelete, getAndUpdate`

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

      `close, delete, deleteImpl, eq, get, getById, getImpl, getListFromRS, getPeriod, getSQLOrder, getTableName, list, list, listImpl, listImpl, listImplPS, listImplPS, processException, recycle, setStatementParam, update`

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

      `getSQLOrder`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### flagReserve

          public static final boolean flagReserve

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

  - ### Constructor Detail

    - #### ReserveDao

          public ReserveDao(java.sql.Connection con)

  - ### Method Detail

    - #### isUseReserveType

          public boolean isUseReserveType(int reserveTypeId)
                                   throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `reserveTypeId` -
      Returns:
        - true если есть резервы с таким типом
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateImpl

          protected void updateImpl(Reserve reserve)
                             throws ru.bitel.bgbilling.common.BGException,
                                    java.sql.SQLException

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

    - #### getReserveList

          public java.util.List<Reserve> getReserveList(int cid,
                                                        Period period,
                                                        int reserveMembers)
                                                 throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - номер договора.
        `period` - - 1 - если период != null, то вернет все резервы которые были активны в данном промежутке. 2 - если период == null, все резервы договора. 3 - если период != null, но одна из дат периода == null, все резервы которые были активны в данном промежутке. где null это либо от начало времен или до конца времен. 4 - если период != null, но обе даты из периода == null, вернет то же что и под номером 2. Второй датой пероиода у резерва будет считаться дата закрытия(dateClose), если же ее нет, то дата планируемого закрытия(dateTo),если и ее нет, то проверка только по дате создания.
        `reserveMembers` - - если == 1, то вернет резервы только данного договора, если = 2 то вернет еще и резервы зависемых субдоговоров, если = 3 то только резервы зависемых субдоговоров.
      Returns:
        список резервов договора(-ов).
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### closeReserve

          public boolean closeReserve(int reserveId)
                               throws ru.bitel.bgbilling.common.BGException

      Закрытие резерва. Можно закрывать резерв без проверки, был ли он закрыт до этого или был ли уже удален. То есть дата закрытия у него не перетрется.(после закрытия,если результатом будет true, необходимо бросить событие,изменение баланса)
      Parameters:
        `reserveId` - ид закрываемого резерва.
      Returns:
        true, если резерв закрыли сейчас. Если вернул false то либо резерв был до этого закрыт или его удалили.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getReserveSum

          public java.math.BigDecimal getReserveSum(int contractId)
                                             throws ru.bitel.bgbilling.common.BGException

      Проверка на зависемый subContract не происоходит.
      Parameters:
        `contractId` - - номер договора.
      Returns:
        сумма резервов для договора. При этом происходит взятие только из таблицы, переобсчет не происходит.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getReserveSumByDate

          public java.math.BigDecimal getReserveSumByDate(int cid,
                                                          java.util.Date date)
                                                   throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - ид договора
        `date` - -
      Returns:
        сумму резервов на момент date.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### recalculationSumReserve

          public void recalculationSumReserve(int contractId)
                                       throws ru.bitel.bgbilling.common.BGException

      Переобсчет итогового поля резерва для договора. Вызывать при добавлении,закрытии резерва.
      Parameters:
        `contractId` - - номер договора.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getBalanceWithReserve

          @Deprecated
          public java.math.BigDecimal getBalanceWithReserve(Contract contract,
                                                                        java.math.BigDecimal balance,
                                                                        java.util.Calendar calendar)
                                                                 throws ru.bitel.bgbilling.common.BGException

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

    - #### getBalanceWithReserve

          public java.math.BigDecimal getBalanceWithReserve(Contract contract,
                                                            java.math.BigDecimal balance,
                                                            java.time.LocalDate localDate)
                                                     throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `contract` - - договор
        `balance` - - текущий баланс, который считается без резерва.
        `localDate` - - задает месяц и год
      Returns:
        - входной баланс ,если в конфиге отключенно влияние резерва на баланс или вернет входной баланс с вычетом резервов, если включен. Так же вернет просто баланс, если баланс запрашивается не на текущую дату, так как резерв должен влиять только на текущий баланс.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getFromRS

          protected Reserve getFromRS(java.sql.ResultSet rs)
                               throws java.sql.SQLException,
                                      ru.bitel.bgbilling.common.BGException

      Specified by:
        `getFromRS` in class `ru.bitel.common.dao.AbstractDao<Reserve>`
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`