ru.bitel.bgbilling.modules.buyemoney.server.bean

## Class BuyemoneyManager

- java.lang.Object
- - ru.bitel.bgbilling.modules.buyemoney.server.bean.BuyemoneyManager

-     public class BuyemoneyManager
      extends java.lang.Object

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BuyemoneyManager(java.sql.Connection con, int mid)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addPayment(BuyemoneyPayment payment)` Добавление платежа в лог.
    `void` | `carryOutCharge(BuyemoneyPayment payment, int chargeType, java.lang.String chargeComment)` Проведение платежа.
    `void` | `deleteCurrencyRate(int id)` Удаляем валюту.
    `void` | `deletePayment(int id)` Удаление платежа из лога.
    `java.lang.String` | `formatComment(java.lang.String pattern, BuyemoneyPayment payment, java.lang.String userComment, ru.bitel.bgbilling.modules.buyemoney.server.protocols.ProtocolManager protocolManager)` Форматируем камент из шаблона. 1) Комментарий расхода для нашего биллинга. 2) Камент для отправки на сервер авторизации строки камента (кое-где называется "основание зачисления")
    `int` | `getCountUsedCurrencyRate(int id)` Количество использований конкретной записи о курсе валют в платежах.
    `CurrencyRate` | `getCurrencyRate(int id)` Получаем одну валюту.
    `java.util.List<CurrencyRate>` | `getCurrencyRateList(java.util.Date date, java.lang.Boolean enabled)` Список всех валют.
    `int` | `getFirstYear(int cid)` Возвращает год, с которого были платежи для этого договора
    `BuyemoneyPayment` | `getPaymentFromRS(java.sql.ResultSet rs, boolean fillExtend)`
    `java.util.List<BuyemoneyPayment>` | `getPaymentList(int fCid, Period fPeriod, int fCurrency, java.lang.String fGroups, java.lang.String fContract)` Запрос списка(лога) платежей, по фильтру. f_period (если !
    `java.util.Map<java.lang.Integer,java.util.List<BuyemoneyPayment>>` | `getProtocolPaymentMap(java.util.Date datetime1, java.util.Date datetime2, ru.bitel.bgbilling.modules.buyemoney.common.BuyemoneyStatus status)` Получаем все платежи указанного статуса (если null - всех) для каждого протокола.
    `java.util.Map<java.lang.Integer,java.util.List<BuyemoneyPayment>>` | `getUnstatusedPaymentMap()` Получаем все непроверенные платежи для каждого протокола.
    `void` | `updateCurrencyRate(CurrencyRate curr)` Обновление/добавление валюты.
    `void` | `updatePayment(BuyemoneyPayment payment)` Обновление всех параметров из лога платежа.

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

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

- - ### Constructor Detail

    - #### BuyemoneyManager

          public BuyemoneyManager(java.sql.Connection con,
                                  int mid)

  - ### Method Detail

    - #### getCurrencyRate

          public CurrencyRate getCurrencyRate(int id)
                                       throws java.sql.SQLException

      Получаем одну валюту.
      Parameters:
        `id` - ид валюты.
      Returns:
        объект валюты полностью заполненный.
      Throws:
        `java.sql.SQLException` - ошибка.

    - #### getCurrencyRateList

          public java.util.List<CurrencyRate> getCurrencyRateList(java.util.Date date,
                                                                  java.lang.Boolean enabled)
                                                           throws java.sql.SQLException

      Список всех валют. Если задана дата, то только актуальные на эту дату.
      Parameters:
        `date` - дата, на которую надо выдать актуальные тарифы (для использования в вебе конечным юзером, например). Либо null, если надо выдать вообще всё.
        `enabled` - учитывать активность. Если null - игнорируется (то есть берутся и активные и неактивные), если стоит значение то возвращаются либо активные либо неактивные.
      Returns:
        список объектов Currency.
      Throws:
        `java.sql.SQLException` - ошибка.

    - #### updateCurrencyRate

          public void updateCurrencyRate(CurrencyRate curr)
                                  throws java.sql.SQLException

      Обновление/добавление валюты. Если id не установлен (<1), то вставится.
      Parameters:
        `curr` - объект заполненный.
      Throws:
        `java.sql.SQLException` - ошибка.

    - #### deleteCurrencyRate

          public void deleteCurrencyRate(int id)
                                  throws java.sql.SQLException

      Удаляем валюту.
      Parameters:
        `id` - ид курса валюты.
      Throws:
        `java.sql.SQLException` - ошибка.

    - #### getCountUsedCurrencyRate

          public int getCountUsedCurrencyRate(int id)
                                       throws java.sql.SQLException

      Количество использований конкретной записи о курсе валют в платежах. Используется для определения используется ли эта запись уже. В таком случае мы должны бы запретить её правку, кроме деактивации.
      Parameters:
        `id` - ид курса валюты.
      Returns:
        количество использований (логично, что если 0 - курс валюты ещё не использовался)
      Throws:
        `java.sql.SQLException`

    - #### getPaymentList

          public java.util.List<BuyemoneyPayment> getPaymentList(int fCid,
                                                                 Period fPeriod,
                                                                 int fCurrency,
                                                                 java.lang.String fGroups,
                                                                 java.lang.String fContract)
                                                          throws java.sql.SQLException

      Запрос списка(лога) платежей, по фильтру. f_period (если != null), f_currency (если > 0) действуют всегда. f_groups, f_contract, fCid тоже действуют иногда, если установлены. Ещё запрашивается для юзера из веба, там только cid и период. Заполняются также заголовок договора и объект rate соотвествующий (если теряется связь, то будет не null, но пустой объект)
      Parameters:
        `fCid` - ид договора (действует если >0)
        `fPeriod` - период (действует если != null)
        `fCurrency` - валюта протокольная (!), не из таблицы rate, а из конфига (действует если>0)
        `fGroups` - список ид групп (действует если !=null и не пустой)
        `fContract` - кусок текстового наименования договора, ищется по LIKE (действует если !=null и не пустой)
      Returns:
        соответствующий список объектов "e-money платёж"
      Throws:
        `java.sql.SQLException` - ошибка.

    - #### getUnstatusedPaymentMap

          public java.util.Map<java.lang.Integer,java.util.List<BuyemoneyPayment>> getUnstatusedPaymentMap()
                                                                                                    throws java.sql.SQLException

      Получаем все непроверенные платежи для каждого протокола.
      Returns:
        мэп: протокол-id => список платежей этого протокола со статусом NEW
      Throws:
        `java.sql.SQLException`

    - #### getProtocolPaymentMap

          public java.util.Map<java.lang.Integer,java.util.List<BuyemoneyPayment>> getProtocolPaymentMap(java.util.Date datetime1,
                                                                                                         java.util.Date datetime2,
                                                                                                         ru.bitel.bgbilling.modules.buyemoney.common.BuyemoneyStatus status)
                                                                                                  throws java.sql.SQLException

      Получаем все платежи указанного статуса (если null - всех) для каждого протокола. В периоде с даты по дату (граница не указана - игнорируется).
      Parameters:
        `time1` - от (точность полная)
        `time2` - до (точность полная)
        `status` - статусы
      Returns:
        мэп: протокол-id => список платежей этого протокола со статусом NEW
      Throws:
        `java.sql.SQLException`

    - #### getFirstYear

          public int getFirstYear(int cid)
                           throws java.sql.SQLException

      Возвращает год, с которого были платежи для этого договора
      Parameters:
        `cid` - контракт_ид
      Returns:
        четырёхзначное число - год
      Throws:
        `java.sql.SQLException`

    - #### addPayment

          public void addPayment(BuyemoneyPayment payment)
                          throws java.sql.SQLException

      Добавление платежа в лог. Выполняется перед началом транзакции. Все поля берутся при этом из объекта, то есть и дату текущую и статус "новый" надо явно задать. Используются только поля таблицы, заголовок договора и объект rate заполнять, конечно, не нужно. charge_id тоже пока не нужен.
      Parameters:
        `payment` - объект-платёж.
      Throws:
        `java.sql.SQLException` - ошибка.

    - #### deletePayment

          public void deletePayment(int id)
                             throws java.sql.SQLException

      Удаление платежа из лога. Делается, например, когда платёж начался и не прошёл по фатальной ошибке.
      Parameters:
        `id` - ид платежа в таблице buyemoney_payment
      Throws:
        `java.sql.SQLException`

    - #### updatePayment

          public void updatePayment(BuyemoneyPayment payment)
                             throws java.sql.SQLException

      Обновление всех параметров из лога платежа. В объекте должен быть установлен id. Исползуется для модификации параметров (некоторых) после уточнения статуса платежа.
      Parameters:
        `payment` - объект для обновления.
      Throws:
        `java.sql.SQLException`

    - #### getPaymentFromRS

          public BuyemoneyPayment getPaymentFromRS(java.sql.ResultSet rs,
                                                   boolean fillExtend)
                                            throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### carryOutCharge

          public void carryOutCharge(BuyemoneyPayment payment,
                                     int chargeType,
                                     java.lang.String chargeComment)
                              throws ru.bitel.bgbilling.common.BGException

      Проведение платежа. Проверяется, чтобы статус у переданного был OK.
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`

    - #### formatComment

          public java.lang.String formatComment(java.lang.String pattern,
                                                BuyemoneyPayment payment,
                                                java.lang.String userComment,
                                                ru.bitel.bgbilling.modules.buyemoney.server.protocols.ProtocolManager protocolManager)
                                         throws java.sql.SQLException

      Форматируем камент из шаблона. 1) Комментарий расхода для нашего биллинга. 2) Камент для отправки на сервер авторизации строки камента (кое-где называется "основание зачисления")
      Parameters:
        `pattern` - шаблон
        `payment` - платёж-покупки (лучше с заполненным объектом rate)
        `userComment` - то что ввёл юзер в поле комментария
        `protocolManager` - менеджер валюты надо передать, чтобы можно было название валюты вытянуть
      Returns:
        строка-коммент
      Throws:
        `java.sql.SQLException`