ru.bitel.bgbilling.plugins.bonus.server.dao

## Class BonusDao

- java.lang.Object
- - ru.bitel.bgbilling.plugins.bonus.server.dao.BonusDao

-     public class BonusDao
      extends java.lang.Object

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.sql.Connection` | `con`
    `static boolean` | `flagBalanceCanBeNegative` Флаг определяющий, можно ли уводить в минус.
    `protected org.apache.log4j.Logger` | `log`
    `static int` | `pluginTurnOn`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addCharge(int userId, int cid, BonusCharge charge)` Добавление расхода
    `void` | `addDetailsItem(int chargeId, int paymentId, java.math.BigDecimal sum)` Добавит детали расхода, какую сумму какой расход списал с конкретного платежа.
    `boolean` | `checkContractOnProgramType(int cid, int programType, java.util.Date date)`
    `boolean` | `checkProgramPeriodOnCrossing(BonusProgram program)` Проверка на пересечения нового периода бонусной программы с периодом программы у договоров.
    `void` | `deleteCharge(int chargeId)` Удаление расхода.
    `void` | `deleteChargeAccordingToContractChargeId(int contractChargeId)` Удаление расхода по ид расхода договора.
    `void` | `deleteDeatails(int id)` Удаление деталей расхода по его ид.
    `void` | `deletePayment(int paymentId)` Удаление прихода
    `void` | `deletePaymentType(int paymentId)`
    `void` | `deleteProgram(int programId)` Удаление бонусной программы.
    `java.math.BigDecimal` | `getBalance(int cid, java.util.Date date)`
    `java.math.BigDecimal` | `getBalance(int cid, java.util.Date date, java.lang.Integer chargeId, boolean withFutureCharge)`
    `BonusCharge` | `getCharge(int contractChargeId)` Вернет бонусный расход который был повешан на конкретный расход договора.
    `java.util.List<BonusCharge>` | `getChargeDetailsList(int paymentId)` Deprecated.
    `java.util.List<BonusCharge>` | `getChargeList(int cid, java.util.Date dateFrom, java.util.Date dateTo)`
    `java.util.List<BonusCharge>` | `getChargesAll(int cid)` Вернет все расходы
    `java.util.List<BonusCharge>` | `getChargesLinkedPayments(int cid, java.util.List<BonusPayment> paymentList, java.util.Date date)`
    `java.util.List<java.lang.Integer>` | `getContractsOfThisProgram(int idProgram, java.util.Date date)`
    `java.util.Map<java.lang.String,java.lang.String>` | `getDataProgramOfContract(int programId, int contractId)` Получение мапа с данными для договора по выбранной программе.
    `java.util.List<BonusDetailCharge>` | `getDetailsChargeList(int paymentId)`
    `java.math.BigDecimal` | `getNotActiveBalanceStill(int cid, java.util.Date date)`
    `java.util.List<BonusPayment>` | `getPaymentDetailsList(int chargeId)`
    `java.util.List<BonusPayment>` | `getPaymentList(int cid, java.util.Date dateFrom, java.util.Date dateTo)`
    `java.util.List<BonusPayment>` | `getPaymentsActiveAndPositive(int cid, java.util.Date date, java.util.HashMap<java.lang.Integer,java.math.BigDecimal> residueSumMap)`
    `java.util.List<BonusPayment>` | `getPaymentsActiveToDate(int cid, java.util.Date date, java.util.HashMap<java.lang.Integer,java.math.BigDecimal> residueSumMap)`
    `java.util.List<BonusPayment>` | `getPaymentsAll(int cid)` Вернет все платежи для данного договора
    `java.util.List<BonusPayment>` | `getPaymentsToActiveInFuture(int cid, java.util.Date date)`
    `java.util.List<BonusPaymentType>` | `getPaymentTypeList(boolean usedOnly)`
    `BonusProgram` | `getProgram(int id)`
    `BonusProgramSpecification` | `getProgramAction(BonusProgram bonusProgram)` Получение программы действий для бонусной программы.
    `java.util.List<BonusContractProgram>` | `getProgramCotractList(int cid)`
    `java.util.List<BonusContractProgram>` | `getProgramCotractList(int cid, int programTypeId, java.util.Date date)`
    `java.util.List<BonusProgram>` | `getProgramList(java.util.Date date, int programTypeId)` Возврощает заведенные бонусные программы.
    `BonusProgramSpecification` | `getProgramSpecificationForDynamicProgram(java.lang.String className)` Вернет спецификацию для динамической программы по ее полному имени.
    `boolean` | `isUseChargeType(int chargeId)`
    `boolean` | `isUsePaymentsInDetailsTable(int paymentId)`
    `boolean` | `isUsePaymentType(int paymentId)`
    `boolean` | `pluginInclude(int cid)`
    `java.util.List<java.lang.Integer>` | `programInContractList(int idProgram, java.util.Date date)` Deprecated.
    `void` | `updateDataProgramOfContract(int programId, int contractId, java.util.Map<java.lang.String,java.lang.String> map)` Сохранение/обновлене данных для договора по выбранной программе.
    `void` | `updateDetailsCharge(int id, int paymentId, java.math.BigDecimal sum)` Обновление записи bonus_details_charge.
    `void` | `updatePayment(int userId, int cid, BonusPayment payment)` Создание платежа.
    `void` | `updatePaymentType(BonusPaymentType paymentType)`
    `void` | `updatePluginInclude(int cid, boolean include)` Включение/выкл. плагина у договора.
    `void` | `updateProgram(BonusProgram program)` Обновление или создание бонусной программы.
    `void` | `updateProgramContract(BonusContractProgram contractProgram)` Обновление или добовление бонусной программы для договора.

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

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

- - ### Field Detail

    - #### log

          protected org.apache.log4j.Logger log

    - #### con

          protected java.sql.Connection con

    - #### pluginTurnOn

          public static int pluginTurnOn

    - #### flagBalanceCanBeNegative

          public static final boolean flagBalanceCanBeNegative

      Флаг определяющий, можно ли уводить в минус.

  - ### Constructor Detail

    - #### BonusDao

          public BonusDao(java.sql.Connection con)

  - ### Method Detail

    - #### getPaymentTypeList

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

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

    - #### getChargesLinkedPayments

          public java.util.List<BonusCharge> getChargesLinkedPayments(int cid,
                                                                      java.util.List<BonusPayment> paymentList,
                                                                      java.util.Date date)
                                                               throws ru.bitel.bgbilling.common.BGException

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

    - #### updatePaymentType

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

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

    - #### deletePaymentType

          public void deletePaymentType(int paymentId)
                                 throws ru.bitel.bgbilling.common.BGException

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

    - #### isUsePaymentType

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

      Parameters:
        `paymentId` -
      Returns:
        - true если есть платежи с таким типом
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### isUseChargeType

          public boolean isUseChargeType(int chargeId)
                                  throws ru.bitel.bgbilling.common.BGException

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

    - #### getPaymentList

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

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

    - #### getPaymentsAll

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

      Вернет все платежи для данного договора
      Parameters:
        `cid` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getPaymentsActiveAndPositive

          public java.util.List<BonusPayment> getPaymentsActiveAndPositive(int cid,
                                                                           java.util.Date date,
                                                                           java.util.HashMap<java.lang.Integer,java.math.BigDecimal> residueSumMap)
                                                                    throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `date` - - на какой момент
        `cid` - - номер договора
        `residueSumMap` - - мап c остатками средств у платежей, можно передать null,если эти данные не нужны(ключ - id платежа, значение - остаток средсв у платежа).
      Returns:
        вернет активные(то есть dateFrom
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getPaymentsActiveToDate

          public java.util.List<BonusPayment> getPaymentsActiveToDate(int cid,
                                                                      java.util.Date date,
                                                                      java.util.HashMap<java.lang.Integer,java.math.BigDecimal> residueSumMap)
                                                               throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `cid` - - номер договора
        `date` -
        `residueSumMap` - - мап c остатками средств у платежей, можно передать null,если эти данные не нужны(ключ - id платежа, значение - остаток средсв у платежа).
      Returns:
        - список платежей активные на дату - date
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getPaymentsToActiveInFuture

          public java.util.List<BonusPayment> getPaymentsToActiveInFuture(int cid,
                                                                          java.util.Date date)
                                                                   throws ru.bitel.bgbilling.common.BGException

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

    - #### getCharge

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

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

    - #### getChargeList

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

      Parameters:
        `cid` - - номер договора
        `dateFrom` - - от даты
        `dateTo` - - до даты
      Returns:
        вернет список расходов в промежутке dateFrom и dateTo(с точностью до дня), если одна из дат == null, то вернет все
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getChargesAll

          public java.util.List<BonusCharge> getChargesAll(int cid)
                                                    throws ru.bitel.bgbilling.common.BGException

      Вернет все расходы
      Parameters:
        `cid` -
      Returns:
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updatePayment

          public void updatePayment(int userId,
                                    int cid,
                                    BonusPayment payment)
                             throws ru.bitel.bgbilling.common.BGException

      Создание платежа. После совершения платежа, в платеже будет реальный его id.
      Либо, если id > 0, обновление даты завершения платежа.
      Parameters:
        `userId` - - пользователь совершив
        `cid` - - код договора
        `payment` - - бонусный платеж
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### addCharge

          public void addCharge(int userId,
                                int cid,
                                BonusCharge charge)
                         throws ru.bitel.bgbilling.common.BGException

      Добавление расхода
      Parameters:
        `userId` -
        `cid` - - номер договора
        `charge` - - расход. После добаления, id будет присвоено значение.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### deletePayment

          public void deletePayment(int paymentId)
                             throws ru.bitel.bgbilling.common.BGException

      Удаление прихода
      Parameters:
        `paymentId` - - ид прихода
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### deleteCharge

          public void deleteCharge(int chargeId)
                            throws ru.bitel.bgbilling.common.BGException

      Удаление расхода.
      Parameters:
        `chargeId` - - ид расхода
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### deleteChargeAccordingToContractChargeId

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

      Удаление расхода по ид расхода договора.
      Parameters:
        `chargeId` - - ид расхода
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getPaymentDetailsList

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

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

    - #### getChargeDetailsList

          @Deprecated
          public java.util.List<BonusCharge> getChargeDetailsList(int paymentId)
                                                                       throws ru.bitel.bgbilling.common.BGException

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

    - #### getDetailsChargeList

          public java.util.List<BonusDetailCharge> getDetailsChargeList(int paymentId)
                                                                 throws ru.bitel.bgbilling.common.BGException

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

    - #### deleteDeatails

          public void deleteDeatails(int id)
                              throws ru.bitel.bgbilling.common.BGException

      Удаление деталей расхода по его ид.
      Parameters:
        `id` - - ид детали расхода.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### isUsePaymentsInDetailsTable

          public boolean isUsePaymentsInDetailsTable(int paymentId)

      Parameters:
        `paymentId` - - ид платежа

    - #### addDetailsItem

          public void addDetailsItem(int chargeId,
                                     int paymentId,
                                     java.math.BigDecimal sum)
                              throws ru.bitel.bgbilling.common.BGException

      Добавит детали расхода, какую сумму какой расход списал с конкретного платежа.
      Parameters:
        `chargeId` - - ид расхода.
        `paymentId` - - ид прихода.
        `sum` - - сумма списание с данного расхода.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateDetailsCharge

          public void updateDetailsCharge(int id,
                                          int paymentId,
                                          java.math.BigDecimal sum)
                                   throws ru.bitel.bgbilling.common.BGException

      Обновление записи bonus_details_charge.
      Parameters:
        `id` - - код bonus_details_charge. Не путать с bonus_contract_charge.
        `paymentId` - - код платежа с которого списывает данная часть расхода.
        `sum` - - сумма.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getBalance

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

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

    - #### getBalance

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

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

    - #### getNotActiveBalanceStill

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

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

    - #### pluginInclude

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

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

    - #### updatePluginInclude

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

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

    - #### updateProgram

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

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

    - #### checkProgramPeriodOnCrossing

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

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

    - #### getProgram

          public BonusProgram getProgram(int id)
                                  throws ru.bitel.bgbilling.common.BGException

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

    - #### getProgramList

          public java.util.List<BonusProgram> getProgramList(java.util.Date date,
                                                             int programTypeId)
                                                      throws ru.bitel.bgbilling.common.BGException

      Возврощает заведенные бонусные программы.
      Parameters:
        `date` - - вернет активные программы на эту дату, если = null, то вернет все програамы вне зависемости от активности.
        `programTypeId` - - вернет программы только данного типа, если = 0, то вернет все программы вне зависемости от типа.
      Returns:
        - список бонусных программ.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getProgramCotractList

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

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

    - #### getProgramCotractList

          public java.util.List<BonusContractProgram> getProgramCotractList(int cid,
                                                                            int programTypeId,
                                                                            java.util.Date date)
                                                                     throws ru.bitel.bgbilling.common.BGException

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

    - #### updateProgramContract

          public void updateProgramContract(BonusContractProgram contractProgram)
                                     throws ru.bitel.bgbilling.common.BGException

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

    - #### programInContractList

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

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

    - #### getContractsOfThisProgram

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

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

    - #### checkContractOnProgramType

          public boolean checkContractOnProgramType(int cid,
                                                    int programType,
                                                    java.util.Date date)
                                             throws ru.bitel.bgbilling.common.BGException

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

    - #### deleteProgram

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

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

    - #### getProgramAction

          public BonusProgramSpecification getProgramAction(BonusProgram bonusProgram)

      Получение программы действий для бонусной программы.
      Returns:
        соответствующий класс конкретной программы.

    - #### getProgramSpecificationForDynamicProgram

          public BonusProgramSpecification getProgramSpecificationForDynamicProgram(java.lang.String className)

      Вернет спецификацию для динамической программы по ее полному имени.
      Returns:
        в случае успеха BonusProgramSpecification, иначе null.

    - #### updateDataProgramOfContract

          public void updateDataProgramOfContract(int programId,
                                                  int contractId,
                                                  java.util.Map<java.lang.String,java.lang.String> map)
                                           throws java.sql.SQLException

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

    - #### getDataProgramOfContract

          public java.util.Map<java.lang.String,java.lang.String> getDataProgramOfContract(int programId,
                                                                                           int contractId)
                                                                                    throws java.sql.SQLException

      Получение мапа с данными для договора по выбранной программе.
      Parameters:
        `programid` - - код программы.
        `contractId` - - код договора.
      Returns:
        map с данными, всегда не null.
      Throws:
        `java.sql.SQLException`