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

# Class BuyemoneyManager

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.common.dao.AbstarctDaoConstant
ru.bitel.bgbilling.modules.buyemoney.server.bean.BuyemoneyManager

public class BuyemoneyManager extends ru.bitel.bgbilling.common.dao.AbstarctDaoConstant

- ## Field Summary

  ### Fields inherited from class ru.bitel.bgbilling.common.dao.AbstarctDaoConstant

  `con, ERROR, fields, moduleId, SQL_ALL, SQL_AND, SQL_CALC_FOUND_ROWS, SQL_DELETE, SQL_DISTINCT, SQL_EQ, SQL_EQCS, SQL_FROM, SQL_GROUP, SQL_IN, SQL_INSERT, SQL_JOIN, SQL_LEFT_JOIN, SQL_LIMIT, SQL_NOT_IN, SQL_ON, SQL_ON_DUPLICATE_KEY_UPDATE, SQL_ORDER, SQL_SELECT, SQL_SET, SQL_UPDATE, SQL_VALUES, SQL_WHERE, tableName`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BuyemoneyManager(Connection con, int moduleId)`

- ## Method Summary

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

  ### Methods inherited from class ru.bitel.bgbilling.common.dao.AbstarctDaoConstant

  `getPeriod, getSQLOrder, getTableName`

  ### Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger

  `error, error, error, getLogger, logError, logError, warn`

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

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

- ## Constructor Details

  - ### BuyemoneyManager

    public BuyemoneyManager(Connection con, int moduleId)

- ## Method Details

  - ### getCurrencyRate

    public CurrencyRate getCurrencyRate(int id) throws SQLException
    Получаем одну валюту.
    Parameters:
      `id` - ид валюты.
    Returns:
      объект валюты полностью заполненный.
    Throws:
      `SQLException` - ошибка.

  - ### getCurrencyRateList

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

  - ### updateCurrencyRate

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

  - ### deleteCurrencyRate

    public void deleteCurrencyRate(int id) throws SQLException
    Удаляем валюту.
    Parameters:
      `id` - ид курса валюты.
    Throws:
      `SQLException` - ошибка.

  - ### getCountUsedCurrencyRate

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

  - ### getPaymentList

    public List<BuyemoneyPayment> getPaymentList(int fCid, Period fPeriod, int fCurrency, String fGroups, String fContract) throws 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:
      `SQLException` - ошибка.

  - ### getUnstatusedPaymentMap

    public Map<Integer,List<BuyemoneyPayment>> getUnstatusedPaymentMap() throws SQLException
    Получаем все непроверенные платежи для каждого протокола.
    Returns:
      мэп: протокол-id => список платежей этого протокола со статусом NEW
    Throws:
      `SQLException`

  - ### getProtocolPaymentMap

    public Map<Integer,List<BuyemoneyPayment>> getProtocolPaymentMap(Date datetime1, Date datetime2, ru.bitel.bgbilling.modules.buyemoney.common.BuyemoneyStatus status) throws SQLException
    Получаем все платежи указанного статуса (если null - всех) для каждого протокола. В периоде с даты по дату (граница не указана - игнорируется).
    Parameters:
      `status` - статусы
      `time1` - от (точность полная)
      `time2` - до (точность полная)
    Returns:
      мэп: протокол-id => список платежей этого протокола со статусом NEW
    Throws:
      `SQLException`

  - ### getFirstYear

    public int getFirstYear(int cid) throws SQLException
    Возвращает год, с которого были платежи для этого договора
    Parameters:
      `cid` - контракт_ид
    Returns:
      четырёхзначное число - год
    Throws:
      `SQLException`

  - ### addPayment

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

  - ### deletePayment

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

  - ### updatePayment

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

  - ### getPaymentFromRS

    public BuyemoneyPayment getPaymentFromRS(ResultSet rs, boolean fillExtend) throws SQLException
    Throws:
      `SQLException`

  - ### carryOutCharge

    public void carryOutCharge(BuyemoneyPayment payment, int chargeType, String chargeComment) throws Exception
    Проведение платежа. Проверяется, чтобы статус у переданного был OK.
    Throws:
      `SQLException`
      `Exception`

  - ### formatComment

    public String formatComment(String pattern, BuyemoneyPayment payment, String userComment, ru.bitel.bgbilling.modules.buyemoney.server.protocols.ProtocolManager protocolManager) throws SQLException
    Форматируем камент из шаблона. 1) Комментарий расхода для нашего биллинга. 2) Камент для отправки на сервер авторизации строки камента (кое-где называется "основание зачисления")
    Parameters:
      `pattern` - шаблон
      `payment` - платёж-покупки (лучше с заполненным объектом rate)
      `userComment` - то что ввёл юзер в поле комментария
      `protocolManager` - менеджер валюты надо передать, чтобы можно было название валюты вытянуть
    Returns:
      строка-коммент
    Throws:
      `SQLException`