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

# Interface ReserveService

public interface ReserveService
Все операции с типом резерва производить через справочник.

- ## Method Summary

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

- ## Method Details

  - ### reserveList

    List<Reserve> reserveList(int contractId, Period period, int reserveMembers) throws Exception
    Parameters:
      `period` - - 1 - если период != null, то вернет все резервы которые были активны в данном промежутке.

      2 - если период == null, все резервы договора.

      3 - если период != null, но одна из дат периода == null, все резервы которые были активны в данном промежутке. где null это либо от начало времен или до конца времен.

      4 - если период != null, но обе даты из периода == null, вернет то же что и под номером 2.

      Второй датой пероиода у резерва будет считаться дата закрытия(dateClose), если же ее нет, то дата планируемого закрытия(dateTo).

      `reserveMembers` - - если == 1, то вернет резервы только данного договора, если = 2 то вернет еще и резервы зависемых субдоговоров, если = 3 то только резервы зависемых субдоговоров.
      `cid` - - номер договора.
    Returns:
      список резервов данного договора.
    Throws:
      `Exception`

  - ### updateReserve

    int updateReserve(Reserve reserve) throws Exception
    Добавление резерва или редактирование(только тип и коммент).Дата создания - текущая, а не та что передается в параметре period.
    Parameters:
      `reserve` - - добавляемый резерв.
    Returns:
      ид созданного/отредактированного резерва.
    Throws:
      `Exception`

  - ### closeReserve

    void closeReserve(int reserveId) throws Exception
    Закрытие резерва текущей датой. Если резерв был уже закрыт, то ничего ни произойдет(дата закрытия не перетрется,не бросятся события). Так же ничего страшного если резерв был удален.
    Parameters:
      `reserveId` -
    Throws:
      `Exception`

  - ### reserveSum

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

  - ### reserveTypeGet

    ReserveType reserveTypeGet(int id) throws Exception
    Вернет тип резерва, предназначен для справочника, соответственно и доставать его через справочники, а не отсюда напрямую.
    Parameters:
      `id` - - ид типа резерва.
    Throws:
      `Exception`

  - ### reserveTypeList

    List<ReserveType> reserveTypeList(boolean used) throws Exception
    Вернет список типов резервов.(лучше через справочник)
    Parameters:
      `used` - - если = true, то вернет все используемые, иначе все типы резервов.
    Throws:
      `Exception`

  - ### reserveTypeUpdate

    int reserveTypeUpdate(ReserveType reserveType) throws Exception
    Создание или обновление резервного типа.( через справочник)
    Returns:
      id созданного типа.
    Throws:
      `Exception`

  - ### reserveTypeDelete

    int reserveTypeDelete(int reserveTypeId) throws Exception
    Удалене резервного типа.(только через справочник)
    Parameters:
      `reserveTypeId` - - ид резервного типа.
    Returns:
      кол-во удаленных записей.
    Throws:
      `Exception`