ru.bitel.bgbilling.plugins.bonus.common.bean

## Class BonusProgramDynamicBase

- java.lang.Object
- - ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase<Event>
  - - ru.bitel.bgbilling.plugins.bonus.common.bean.BonusProgramDynamicBase

- All Implemented Interfaces:
    EventScript<Event>, BonusProgramSpecification

      public abstract class BonusProgramDynamicBase
      extends EventScriptBase<Event>
      implements BonusProgramSpecification

  Базовый класс для дин. классов реализующих бонусную программу.
  Содержит наиболее нужные методы для работы с бонусами и дин.программами.
  Для возможности использования методов в потомках(то есть вашей дин.программе/классе), необходимо вызвать в методе onEvent(если будете использовать) соответствующий метод потомка(то есть этого класса) - super.onEvent........
  Author:
    ildar

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `BonusDao` | `bonusDao`
    `java.sql.Connection` | `con`
    `int` | `contractId`
    `java.util.Map<java.lang.String,java.lang.String>` | `map`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BonusProgramDynamicBase()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `accrualOfBonus(java.sql.Connection con, BonusProgram program)` Начисление бонусов.
    `abstract void` | `accrualOfBonusImpl(java.sql.Connection con, BonusProgram program)` Тут реализуется начисление бонусов, ну или еще чего, что нужно будет сделать программе по планировщику для динамических программ.
    `java.util.List<BonusContractProgram>` | `getContractPrograms(java.lang.Class<? extends BonusProgramDynamicBase> clazz, java.util.Date date)` Получить все программы данной дин. программы для выбранного договора.
    `java.lang.String` | `getParam(java.lang.String param, int programId)` Получить параметр программы.
    `Period` | `getPeriodForBonusPayment(BonusProgram program)`
    `BonusContractProgram` | `getProgramContract(int programId, java.util.Date date)` Получить программу договора по ид программы.
    `abstract java.util.List<java.lang.String>` | `getWebBonusStrings(java.sql.Connection con, BonusContractProgram program)` Каждая дин. программа может вернут список строк которые будут отображаться в ЛК.
    `void` | `onEvent(Event event, Setup setup, ConnectionSet set)`
    `int` | `updatePaymnent(java.math.BigDecimal sum, BonusProgram program)` Совершение платежа, данный метод сам учтет период активности бонусного платежа.
    `void` | `updateProgramData(int programId)`
    `void` | `updateProgramData(int programId, int cid, java.util.Map<java.lang.String,java.lang.String> mapL)` Сохранение/обновлене данных для договора по выбранной программе.

    - ### Methods inherited from class ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase

      `error, print, setErrorStream, setOutputStream`

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

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

    - ### Methods inherited from interface ru.bitel.bgbilling.plugins.bonus.common.bean.BonusProgramSpecification

      `getTitle`

- - ### Field Detail

    - #### map

          public java.util.Map<java.lang.String,java.lang.String> map

    - #### bonusDao

          public BonusDao bonusDao

    - #### con

          public java.sql.Connection con

    - #### contractId

          public int contractId

  - ### Constructor Detail

    - #### BonusProgramDynamicBase

          public BonusProgramDynamicBase()

  - ### Method Detail

    - #### onEvent

          public void onEvent(Event event,
                              Setup setup,
                              ConnectionSet set)
                       throws java.lang.Exception

      Specified by:
        `onEvent` in interface `EventScript<Event>`
      Throws:
        `java.lang.Exception`

    - #### accrualOfBonus

          public void accrualOfBonus(java.sql.Connection con,
                                     BonusProgram program)
                              throws java.sql.SQLException,
                                     ru.bitel.bgbilling.common.BGException

      Description copied from interface: `BonusProgramSpecification`
      Начисление бонусов. Каждая программа берет на себя начисление бонусов для всех договоров и защищается от возможного двойного начисления( для этого есть таблица bonus_program_log ). Запуск производится планировщиком задач.
      Specified by:
        `accrualOfBonus` in interface `BonusProgramSpecification`
        `program` - бонус. программа в которой содержатся параметры программы и т.д.
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`

    - #### accrualOfBonusImpl

          public abstract void accrualOfBonusImpl(java.sql.Connection con,
                                                  BonusProgram program)
                                           throws java.sql.SQLException,
                                                  ru.bitel.bgbilling.common.BGException

      Тут реализуется начисление бонусов, ну или еще чего, что нужно будет сделать программе по планировщику для динамических программ.
      Parameters:
        `con` -
        `program` - - бонус. программа в которой содержатся параметры программы и т.д.
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`

    - #### getWebBonusStrings

          public abstract java.util.List<java.lang.String> getWebBonusStrings(java.sql.Connection con,
                                                                              BonusContractProgram program)

      Каждая дин. программа может вернут список строк которые будут отображаться в ЛК.
      Parameters:
        `con` -
        `program` - - бонус. программаж договора в которой содержатся сама программа, период для программы и contractId.
      Returns:
        список или null, если ни чего не собираетесь отображать.

    - #### getContractPrograms

          public java.util.List<BonusContractProgram> getContractPrograms(java.lang.Class<? extends BonusProgramDynamicBase> clazz,
                                                                          java.util.Date date)
                                                                   throws ru.bitel.bgbilling.common.BGException

      Получить все программы данной дин. программы для выбранного договора.
      Parameters:
        `clazz` - - класс дин. программы.
        `bonusDao` -
        `date` - - активную на дату, если передать null, то вернет за все время.
      Returns:
        список программ для данного договора.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getProgramContract

          public BonusContractProgram getProgramContract(int programId,
                                                         java.util.Date date)
                                                  throws ru.bitel.bgbilling.common.BGException

      Получить программу договора по ид программы. Отличие от обычной программы только в том что в программе договора содержаться период для договора. Внимание! Если метод используется при вызове планировщика( то есть методом accrualOfBonus), то не забудьте установить contracrId, перед вызовом.
      Parameters:
        `programId` - - код программы.
        `date` - - активную на дату, если передать null, то вернет за все время.
      Returns:
        - если contractId не установлен, то вернет null.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getPeriodForBonusPayment

          public Period getPeriodForBonusPayment(BonusProgram program)

      Parameters:
        `program` - - бонусная программа.
      Returns:
        активый период для бонусного платежа.

    - #### updatePaymnent

          public int updatePaymnent(java.math.BigDecimal sum,
                                    BonusProgram program)
                             throws ru.bitel.bgbilling.common.BGException

      Совершение платежа, данный метод сам учтет период активности бонусного платежа. Дата платежа будет выставлена текущей.
      Parameters:
        `bonusDao` -
        `sum` - - сумма платежа в бонусах.
        `program` - - бонусная программа.
      Returns:
        - код(id) платежа.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getParam

          public java.lang.String getParam(java.lang.String param,
                                           int programId)
                                    throws java.sql.SQLException

      Получить параметр программы. Внимаение, мап вытаскивается только один раз, при первом обращение, соответственно если вы обновили некоторый параметр , то это изменение не будет отражено в данном методе( только если вы не воспользовались тем же мапом, что и советую ).
      Parameters:
        `param` - - код запрашиваемого параметра.
        `programId` - - код программы.
      Returns:
        параметр или null если его нет.
      Throws:
        `java.sql.SQLException`

    - #### updateProgramData

          public void updateProgramData(int programId,
                                        int cid,
                                        java.util.Map<java.lang.String,java.lang.String> mapL)
                                 throws java.sql.SQLException

      Сохранение/обновлене данных для договора по выбранной программе.
      Parameters:
        `programId` - - код программы.
        `cid` - - код договора.
        `mapL` - - непосредственно сами данные которые нужно сохранить.
      Throws:
        `java.sql.SQLException`

    - #### updateProgramData

          public void updateProgramData(int programId)
                                 throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`