ru.bitel.bgbilling.kernel.contract.balance.common

## Interface ReserveService

-     public interface ReserveService

  Все операции с типом резерва производить через справочник.
  Author:
    ildar

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `closeReserve(int reserveId)` Закрытие резерва текущей датой.
    `java.util.List<Reserve>` | `reserveList(int contractId, Period period, int reserveMembers)`
    `java.math.BigDecimal` | `reserveSum(int contractId)`
    `int` | `reserveTypeDelete(int reserveTypeId)` Удалене резервного типа.
    `ReserveType` | `reserveTypeGet(int id)` Вернет тип резерва, предназначен для справочника, соответственно и доставать его через справочники, а не отсюда напрямую.
    `java.util.List<ReserveType>` | `reserveTypeList(boolean used)` Вернет список типов резервов.
    `int` | `reserveTypeUpdate(ReserveType reserveType)` Создание или обновление резервного типа.( через справочник)
    `int` | `updateReserve(Reserve reserve)` Добавление резерва или редактирование(только тип и коммент).Дата создания - текущая, а не та что передается в параметре period.

- - ### Method Detail

    - #### reserveList

          java.util.List<Reserve> reserveList(int contractId,
                                              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`

    - #### updateReserve

          int updateReserve(Reserve reserve)
                     throws ru.bitel.bgbilling.common.BGException

      Добавление резерва или редактирование(только тип и коммент).Дата создания - текущая, а не та что передается в параметре period.
      Parameters:
        `reserve` - - добавляемый резерв.
      Returns:
        ид созданного/отредактированного резерва.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### closeReserve

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

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

    - #### reserveSum

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

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

    - #### reserveTypeGet

          ReserveType reserveTypeGet(int id)
                              throws ru.bitel.bgbilling.common.BGException

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

    - #### reserveTypeList

          java.util.List<ReserveType> reserveTypeList(boolean used)
                                               throws ru.bitel.bgbilling.common.BGException

      Вернет список типов резервов.(лучше через справочник)
      Parameters:
        `used` - - если = true, то вернет все используемые, иначе все типы резервов.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### reserveTypeUpdate

          int reserveTypeUpdate(ReserveType reserveType)
                         throws ru.bitel.bgbilling.common.BGException

      Создание или обновление резервного типа.( через справочник)
      Returns:
        id созданного типа.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### reserveTypeDelete

          int reserveTypeDelete(int reserveTypeId)
                         throws ru.bitel.bgbilling.common.BGException,
                                ru.bitel.bgbilling.common.BGMessageException

      Удалене резервного типа.(только через справочник)
      Parameters:
        `reserveTypeId` - - ид резервного типа.
      Returns:
        кол-во удаленных записей.
      Throws:
        `ru.bitel.bgbilling.common.BGException`
        `ru.bitel.bgbilling.common.BGMessageException`