ru.bitel.bgbilling.modules.assist.server.bean

## Class AssistPaymentManager

- java.lang.Object
- - ru.bitel.bgbilling.modules.assist.server.bean.AssistPaymentManager

-     public class AssistPaymentManager
      extends java.lang.Object

  Менеджер платежей ассист, записи о платежах/транзакциях в БД биллинга.
  Author:
    dimon

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `DEFAULT_PAYMENT_COMMENT`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `addPayment(int cid, java.math.BigDecimal summ, int recurringParentId)` Добавляем первоначальную строку платежа, когда юзер только пытается провести платёж - заносим сюда цид, дату и сумму.
    `void` | `carryOutPayment(AssistPayment payment, Preferences moduleSetup)` Проведение платежа.
    `int` | `getFirstYear(int cid)` Возвращает год, с которого были платежи для этого договора
    `AssistPayment` | `getLastRecurringForCid(int cid, int recurringParentId)` Последний рекуррентный платёж.
    `AssistPayment` | `getPayment(int cid, long id)` Чтение одного платежа через его id и через cid (опционально).
    `static AssistPayment` | `getPaymentFromRS(java.sql.ResultSet rs, boolean contractTitle)`
    `java.util.List<AssistPayment>` | `getPaymentList(int cid, java.util.Date from, java.util.Date until, int status)` Платежи за период для договора с указанным статусом.
    `java.util.List<AssistPayment>` | `getPaymentList(Period period, int status, java.lang.String f_groups, java.lang.String f_orderid, java.lang.String f_contract, java.lang.String f_cardname, java.lang.String f_cardtext, java.lang.String f_billnumber)` Поиск платежей по нескольким условниям
    `void` | `updatePayment(AssistPayment payment)` Обновляет платеж

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

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

- - ### Field Detail

    - #### DEFAULT_PAYMENT_COMMENT

          public static java.lang.String DEFAULT_PAYMENT_COMMENT

  - ### Constructor Detail

    - #### AssistPaymentManager

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

  - ### Method Detail

    - #### addPayment

          public int addPayment(int cid,
                                java.math.BigDecimal summ,
                                int recurringParentId)
                         throws ru.bitel.bgbilling.common.BGException

      Добавляем первоначальную строку платежа, когда юзер только пытается провести платёж - заносим сюда цид, дату и сумму. Для того, чтобы ИД этой записи отдать в качестве уникального номера заказа процессинговому центру. Пока статус - "непроведённый".
      Parameters:
        `cid` - цид
        `summ` - сумма
        `recurringParentId` - если > 0 - добавляет рекуррентный (а не обычный платёж), должно быть номер orderId родительског платежа (это у нас сущность id нашей этой же таблицы assist_payment, хранится в настрйоках assist_payment_recurring)
      Returns:
        ид новой записи (ид_платежа/номер_заказа)
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`

    - #### getPaymentList

          public java.util.List<AssistPayment> getPaymentList(Period period,
                                                              int status,
                                                              java.lang.String f_groups,
                                                              java.lang.String f_orderid,
                                                              java.lang.String f_contract,
                                                              java.lang.String f_cardname,
                                                              java.lang.String f_cardtext,
                                                              java.lang.String f_billnumber)
                                                       throws java.sql.SQLException

      Поиск платежей по нескольким условниям
      Parameters:
        `period` - дата начала (может не быть) и конца (может не быть) периода. учитывается с точностью до дня (!) и включительно. то есть чтобы вывести например за один день концы промежутка должны быть равны: 01.01.1999-01.01.1999
        `status` - статусов маска (комбинация из OK/FAIL/NEW статусов), должна быть указана
        `f_groups` - список групп договоров (если ничего нет, то будет маска договоров стало быть ноль и при поиске будет игнорироваться, то есть если не указано ничего, то предполагаются что все)
        `f_orderid` - поиск по части номера ID (типа номер заказа) (может не быть)
        `f_contract` - поиск по части номера договора (может не быть)
        `f_cardname` - поиск по части имени держателя карты ИЛИ по части имени плательщика этой карты (может не быть)
        `f_cardtext` - поиск по части номера карты ИЛИ части типа карты ИЛИ по части субтипа карты (может не быть)
        `f_billnumber` - поиск по части номера платежа системы assist (может не быть)
      Returns:
        список платежей удовлетворяющих этим требованиям
      Throws:
        `java.sql.SQLException`

    - #### getPaymentList

          public java.util.List<AssistPayment> getPaymentList(int cid,
                                                              java.util.Date from,
                                                              java.util.Date until,
                                                              int status)
                                                       throws ru.bitel.bgbilling.common.BGException

      Платежи за период для договора с указанным статусом. Также для веба используется - все платежи за указанный месяц, используется для вывода в вебе списка платежей. Там тогда возвращаются все статусы - NEW, OK, FAIL.
      Parameters:
        `cid` - цид
        `from` - дата начала (включительно)
        `until` - дата конца (включительно)
        `status` - маска статусов которые надо выбрать
      Returns:
        список пайментов
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`

    - #### getPayment

          public AssistPayment getPayment(int cid,
                                          long id)
                                   throws ru.bitel.bgbilling.common.BGException

      Чтение одного платежа через его id и через cid (опционально). Также заполняется название договора.
      Parameters:
        `cid` - контрактИд, если надо специфицировать, или -1, если игнорировать этот параметр. Для пущей надёжности сделано, так что пренебрегать - чревато! Название договора заполняется независимо от этого параметра.
        `id` - идПлатежа (он же "номер заказа" в терминах всей платёжной цепочки)
      Returns:
        объект Payment (или null если нужного не найдено)
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`

    - #### updatePayment

          public void updatePayment(AssistPayment payment)
                             throws ru.bitel.bgbilling.common.BGException

      Обновляет платеж
      Parameters:
        `payment` -
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`

    - #### carryOutPayment

          public void carryOutPayment(AssistPayment payment,
                                      Preferences moduleSetup)
                               throws ru.bitel.bgbilling.common.BGException

      Проведение платежа. Проверяется, чтобы статус у переданного был OK. Используется в админке при редактировании платежа, при запросе статуса ручном и в экзекутере.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getPaymentFromRS

          public static AssistPayment getPaymentFromRS(java.sql.ResultSet rs,
                                                       boolean contractTitle)
                                                throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getFirstYear

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

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

    - #### getLastRecurringForCid

          public AssistPayment getLastRecurringForCid(int cid,
                                                      int recurringParentId)
                                               throws ru.bitel.bgbilling.common.BGException

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