ru.bitel.bgbilling.plugins.bonus.common.service

## Interface BonusService

-     public interface BonusService

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `activateTO(int contractId, int tariffOptionId, int modeId)` Активация ТО с списанием бонусов в качестве оплаты.
    `java.math.BigDecimal` | `balance(int cid, java.util.Date date)`
    `java.math.BigDecimal` | `balanceAdvanced(int cid, java.util.Date date, java.lang.Integer chargId, boolean withFutureCharge)`
    `java.util.List<BonusBalance>` | `balanceList(int cid, java.util.Date date)`
    `java.math.BigDecimal` | `balanceNotActive(int cid, java.util.Date date)`
    `java.math.BigDecimal` | `bonusSummaMax(int cid, int contractChargeId, java.math.BigDecimal chargeSum, boolean bonusSum)` Получение максиально возможной суммы для оплаты части расхода договора бонусами.
    `java.math.BigDecimal` | `bonusSummaMaxAdvanced(int cid, int contractChargeId, java.math.BigDecimal chargeSum, boolean bonusSum, java.math.BigDecimal MaxBonusSum)` Получение максиально возможной суммы для оплаты части расхода договора бонусами которая зависет от выставленного макс. процента для данного типа расхода, бонусного баланса и MaxBonusSum.
    `BonusCharge` | `chargeBonus(int contractChargeId)` Вернет бонусный расхода по ид расхода договора.
    `void` | `chargeDeleteByContractChargeId(int contractChargeId)` Удаление бонусного расхода в соответсвии ид расхода договора.
    `java.util.List<BonusCharge>` | `chargeDetailsList(int paymentId)`
    `java.util.List<BonusCharge>` | `chargeList(int cid, java.util.Date dateFrom, java.util.Date dateTo)`
    `boolean` | `chargeUpdate(int cid, BonusCharge charge)` Создание,редактирование бонусного расхода
    `boolean` | `checkProgramPeriodOnCrossing(BonusProgram bonusProgram)` Проверка на пересечения нового периода бонусной программы с периодом программы у договоров(экземпляров данной программы).
    `void` | `extendPaymentsGroupOperation(java.lang.String cids, Period paymentPeriod, java.util.Set<java.lang.Integer> paymentTypeSet, int typeExtend, java.lang.String valueExtend, boolean onlyActive)` Групповая операция расширения периода действия бонусных платежей.
    `boolean` | `paymentDelete(int paymentId)`
    `java.util.List<BonusPayment>` | `paymentDetailsList(int chargeId)`
    `java.util.List<BonusPayment>` | `paymentList(int cid, java.util.Date dateFrom, java.util.Date dateTo)` (Не путать dateFrom и dateTo с одноименными полями в BonusPayment)
    `java.util.List<BonusPayment>` | `paymentsNotActiveNow(int cid)`
    `boolean` | `paymentTypeDelete(int paymentId)` Удаление типа платежа
    `java.util.List<BonusPaymentType>` | `paymentTypeList(boolean usedOnly)`
    `void` | `paymentTypeUpdate(BonusPaymentType paymentType)` Обновление или создание типа прихода
    `void` | `paymentUpdate(int cid, BonusPayment payment)` Создание бонусного платежа
    `int` | `percentOfBonus(int contractChargeId)` Вернет кол-во процентов которыми можно оплатить бонусами для данного расхода.
    `boolean` | `pluginInclude(int cid)`
    `java.util.List<BonusContractProgram>` | `programContractList(int cid)`
    `void` | `programContractUpdate(BonusContractProgram contractProgram)` Обновление или создание бонусной программы у договора.
    `void` | `programDelete(int programId)` Удаление бонусной программы.
    `java.util.List<java.lang.Integer>` | `programInContractList(int idProgram, java.util.Date date)`
    `java.util.List<BonusProgram>` | `programList(java.util.Date date)`
    `java.lang.String[][]` | `programTypeMap()`
    `void` | `programUpdate(BonusProgram program)` Обновление или создание бонусной программы.
    `int` | `rate()` Вернет бонусный курс.
    `java.lang.String` | `treeNodeTitle(int cid)` Получение значение для элемента дерева("Бонус") в договоре.Содержит текущий остаток бонусов, как активных так и ожидающих( разделены чере "/" )
    `void` | `updatePluginInclude(int cid, boolean include)` Включение/выкл. плагина у договора.
    `void` | `updateProgramAndPluginIncludeGroupOperation(java.util.List<BonusProgram> programs, java.lang.String cids, Period period, boolean include)` Добавления бонусных программ, установка периода, вкл/выкл плагина у договоров для групповых операций.

- - ### Method Detail

    - #### paymentTypeList

          java.util.List<BonusPaymentType> paymentTypeList(boolean usedOnly)
                                                    throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `usedOnly` - - если true то вернет только используемые
      Returns:
        - список типов бонусных платежей
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### paymentTypeUpdate

          void paymentTypeUpdate(BonusPaymentType paymentType)
                          throws ru.bitel.bgbilling.common.BGException

      Обновление или создание типа прихода
      Parameters:
        `paymentType` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### paymentTypeDelete

          boolean paymentTypeDelete(int paymentId)
                             throws ru.bitel.bgbilling.common.BGException

      Удаление типа платежа
      Parameters:
        `paymentId` -
      Returns:
        - true если тип был удален, иначе false
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### paymentList

          java.util.List<BonusPayment> paymentList(int cid,
                                                   java.util.Date dateFrom,
                                                   java.util.Date dateTo)
                                            throws ru.bitel.bgbilling.common.BGException

      (Не путать dateFrom и dateTo с одноименными полями в BonusPayment)
      Parameters:
        `cid` - - номер договора
        `dateFrom` -
        `dateTo` -
      Returns:
        - список бонусных платежей, где дата платежа находится в границах dateFrom и dateTo (dateFrom< date
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### paymentsNotActiveNow

          java.util.List<BonusPayment> paymentsNotActiveNow(int cid)
                                                     throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - номер договора
      Returns:
        - вернет список платежей которые будут доступны для оплаты в будущем
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### chargeList

          java.util.List<BonusCharge> chargeList(int cid,
                                                 java.util.Date dateFrom,
                                                 java.util.Date dateTo)
                                          throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - номер договора
        `dateFrom` -
        `dateTo` -
      Returns:
        - список бонусных расходов, где дата расхода находится в границах dateFrom и dateTo (dateFrom< date
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### chargeBonus

          BonusCharge chargeBonus(int contractChargeId)
                           throws ru.bitel.bgbilling.common.BGException

      Вернет бонусный расхода по ид расхода договора.
      Parameters:
        `contractChargeId` - - ид расхода
      Returns:
        - BonusCharge в случае успеха, иначе null.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### paymentUpdate

          void paymentUpdate(int cid,
                             BonusPayment payment)
                      throws ru.bitel.bgbilling.common.BGException

      Создание бонусного платежа
      Parameters:
        `payment` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### chargeUpdate

          boolean chargeUpdate(int cid,
                               BonusCharge charge)
                        throws ru.bitel.bgbilling.common.BGException

      Создание,редактирование бонусного расхода
      Parameters:
        `cid` - - номер договора
        `charge` -
      Returns:
        true - если средств хватило и расход был создан
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### activateTO

          int activateTO(int contractId,
                         int tariffOptionId,
                         int modeId)
                  throws ru.bitel.bgbilling.common.BGException

      Активация ТО с списанием бонусов в качестве оплаты. Списывается максимально возможная сумма(зависит от текущего бонусного баланса, а так же настроек плагина).
      Parameters:
        `contractId` - - код договора
        `tariffOptionId` - - код тарифной опции
        `modeId` - - код режима активации
      Returns:
        - код бонусного расхода
      Throws:
        `ru.bitel.bgbilling.common.BGException` - если: - указана ТО которую можно активировать только бонусами, но списать необходимую сумму не удалось.
        - баланс не положительный
        - неверно задан режим активации или опция
        - сумма у режима активации == 0
        - плагин выключен
        - недостаточно средств для снятия остатка на договоре

    - #### paymentDelete

          boolean paymentDelete(int paymentId)
                         throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `paymentId` - - ид удаляемого платежа
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### chargeDeleteByContractChargeId

          void chargeDeleteByContractChargeId(int contractChargeId)
                                       throws ru.bitel.bgbilling.common.BGException

      Удаление бонусного расхода в соответсвии ид расхода договора.
      Parameters:
        `contractChargeId` - - ид удаляемого расхода
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### paymentDetailsList

          java.util.List<BonusPayment> paymentDetailsList(int chargeId)
                                                   throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `chargeId` -
      Returns:
        - вернет платежи из которых были списаны средства для данного расхода
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### chargeDetailsList

          java.util.List<BonusCharge> chargeDetailsList(int paymentId)
                                                 throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `paymentId` -
      Returns:
        - вернет расходы которые списали средства из данного прихода
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### balanceList

          java.util.List<BonusBalance> balanceList(int cid,
                                                   java.util.Date date)
                                            throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - номер договора
        `date` - - дата
      Returns:
        вернет список для таблицы баланса на конкретную дату
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### balance

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

      Parameters:
        `cid` - - номер договора
        `date` - - дата
      Returns:
        - вернет бонусный баланс на конкретный момент.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### balanceAdvanced

          java.math.BigDecimal balanceAdvanced(int cid,
                                               java.util.Date date,
                                               java.lang.Integer chargId,
                                               boolean withFutureCharge)
                                        throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - номер договора
        `date` - - на какую дату
        `chargeId` - - если не null, ид бонусного расхода который не будет учитываться.
        `withFutureCharge` - - если = true, то вернет баланс с учетом будущих расходов у приходов которые были активны на тот момент. Если баланс берется на текущий момент, то разницы не должно быть.
      Returns:
        вернет баланс на конкретную дату
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### balanceNotActive

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

      Parameters:
        `cid` - - номер договора
        `date` - - дата
      Returns:
        - вернет ожидаемы быллы на конкретную дату
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### pluginInclude

          boolean pluginInclude(int cid)
                         throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - номер договора.
      Returns:
        вернет true- если плагин включен у данного договора
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updatePluginInclude

          void updatePluginInclude(int cid,
                                   boolean include)
                            throws ru.bitel.bgbilling.common.BGException

      Включение/выкл. плагина у договора.
      Parameters:
        `cid` - - номер договора.
        `include` - - если true то вкл. плагин у договора.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### percentOfBonus

          int percentOfBonus(int contractChargeId)
                      throws ru.bitel.bgbilling.common.BGException

      Вернет кол-во процентов которыми можно оплатить бонусами для данного расхода. Если возврощаемое значение равно 0 , то это равносильно запрету на оплату бонусами для данного расхода.
      Parameters:
        `contractChargeId` - - ид расхода договора
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### rate

          int rate()

      Вернет бонусный курс.
      Returns:
        кол-во бонусов к одному рублю(1руб.= rateBonus ).

    - #### bonusSummaMax

          java.math.BigDecimal bonusSummaMax(int cid,
                                             int contractChargeId,
                                             java.math.BigDecimal chargeSum,
                                             boolean bonusSum)
                                      throws ru.bitel.bgbilling.common.BGException

      Получение максиально возможной суммы для оплаты части расхода договора бонусами.
      Parameters:
        `cid` - номер договора.
        `contractChargeId` - - ид типа расхода договора, если он будет < 0, то макс. процент будет принят за 100%.
        `chargeSum` - планируемая(изначальная) сумма списания с договора.
        `bonusSum` - если true то вернет макс. возможную сумму бонусов иначе вернет макс. возможную сумму рублей(точнее в еденицах расхода) Влияет на maxSum.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### bonusSummaMaxAdvanced

          java.math.BigDecimal bonusSummaMaxAdvanced(int cid,
                                                     int contractChargeId,
                                                     java.math.BigDecimal chargeSum,
                                                     boolean bonusSum,
                                                     java.math.BigDecimal MaxBonusSum)
                                              throws ru.bitel.bgbilling.common.BGException

      Получение максиально возможной суммы для оплаты части расхода договора бонусами которая зависет от выставленного макс. процента для данного типа расхода, бонусного баланса и MaxBonusSum. Эта сумма не может быть меньше MaxBonusSum - иметь ввиду.
      Parameters:
        `cid` - номер договора.
        `contractChargeId` - - ид типа расхода договора, если он будет < 0, то макс. процент будет принят за 100%.
        `chargeSum` - планируемая(изначальная) сумма списания с договора.
        `bonusSum` - если true то вернет макс. возможную сумму бонусов иначе вернет макс. возможную сумму рублей(точнее в еденицах расхода) Влияет на maxSum.
        `MaxBonusSum` - - если не null, то возвращаемая сумма будет ограничена ею и процентом. То есть этим параметром можно задать минимум. ( maxSum - это либо рубли либо бонусы, соответсвует параметру bonusSum ).
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### treeNodeTitle

          java.lang.String treeNodeTitle(int cid)
                                  throws ru.bitel.bgbilling.common.BGException

      Получение значение для элемента дерева("Бонус") в договоре.Содержит текущий остаток бонусов, как активных так и ожидающих( разделены чере "/" )
      Parameters:
        `cid` - - номер договора.
      Returns:
        строка со значением.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### programTypeMap

          java.lang.String[][] programTypeMap()
                                       throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### programList

          java.util.List<BonusProgram> programList(java.util.Date date)
                                            throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `date` - - если date=null, то вернет все программы
      Returns:
        все бонусные программы активные на момент времени date.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### programUpdate

          void programUpdate(BonusProgram program)
                      throws ru.bitel.bgbilling.common.BGException

      Обновление или создание бонусной программы.
      Parameters:
        `program` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### programContractList

          java.util.List<BonusContractProgram> programContractList(int cid)
                                                            throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - номер договора.
      Returns:
        список бонусных програм установленных для данного договора.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### programContractUpdate

          void programContractUpdate(BonusContractProgram contractProgram)
                              throws ru.bitel.bgbilling.common.BGException,
                                     ru.bitel.bgbilling.common.BGMessageException

      Обновление или создание бонусной программы у договора.
      Parameters:
        `contractProgram` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`
        `ru.bitel.bgbilling.common.BGMessageException`

    - #### checkProgramPeriodOnCrossing

          boolean checkProgramPeriodOnCrossing(BonusProgram bonusProgram)
                                        throws ru.bitel.bgbilling.common.BGException

      Проверка на пересечения нового периода бонусной программы с периодом программы у договоров(экземпляров данной программы). Необходимо проверять при изменении периода бонусной программы.
      Parameters:
        `program` - - бонусная программа у который выставлен проверяемый период.
      Returns:
        - true если пересечение имеет место или program==null или период==null или dateFrom==null.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### programInContractList

          java.util.List<java.lang.Integer> programInContractList(int idProgram,
                                                                  java.util.Date date)
                                                           throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `idProgram` - - ид программы.
        `date` - - на какое время, если null то вернет за все время.
      Returns:
        список ид договоров у которых активна данная бонусная программа на момент date.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### programDelete

          void programDelete(int programId)
                      throws ru.bitel.bgbilling.common.BGException

      Удаление бонусной программы.
      Parameters:
        `programId` - - ид бонусной программы.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateProgramAndPluginIncludeGroupOperation

          void updateProgramAndPluginIncludeGroupOperation(java.util.List<BonusProgram> programs,
                                                           java.lang.String cids,
                                                           Period period,
                                                           boolean include)
                                                    throws ru.bitel.bgbilling.common.BGException

      Добавления бонусных программ, установка периода, вкл/выкл плагина у договоров для групповых операций. Если programs == null, то только вкл/выкл плагина.
      Parameters:
        `programs` - - список бонусных программ. Можно null или пустой список.
        `cids` - - договора через запятую.
        `period` - - период для программ. Можно null, если programs == null.
        `include` - - если true то плагин будет вкл. для данных договоров.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### extendPaymentsGroupOperation

          void extendPaymentsGroupOperation(java.lang.String cids,
                                            Period paymentPeriod,
                                            java.util.Set<java.lang.Integer> paymentTypeSet,
                                            int typeExtend,
                                            java.lang.String valueExtend,
                                            boolean onlyActive)
                                     throws ru.bitel.bgbilling.common.BGException

      Групповая операция расширения периода действия бонусных платежей. Расширяет период только еще не до конца списанных платежей.
      Parameters:
        `cids` - - договора через запятую.
        `paymentPeriod` - - все платежи дата которых входит в данный период, будут расширены. Не может быть null.
        `paymentTypeSet` - - сет кодов типов платежей
        `typeExtend` - - тип расширения. 1 - до даты, 2 - на кол-во дней от даты завершения платежа
        `valueExtend` - - значение расширения. Если typeExtend = 1, то тут должна быть дата(dd.MM.yyyy), если typeExtend = 2, то число дней.
        `onlyActive` - - если true, то операция будет производиться только с платежами период которых еще не завершился
      Throws:
        `ru.bitel.bgbilling.common.BGException`